From 12ab5238f1f9fbcbffc5ed6e71574b466541911c Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Tue, 25 Oct 2011 19:09:07 +0200 Subject: verschiedenes --- application/controllers/EventController.php | 263 +++++++++++++------------ library/Poolctrl/Validate/EventOverlapping.php | 17 -- 2 files changed, 134 insertions(+), 146 deletions(-) diff --git a/application/controllers/EventController.php b/application/controllers/EventController.php index e0f72f0..f7b9277 100755 --- a/application/controllers/EventController.php +++ b/application/controllers/EventController.php @@ -284,8 +284,9 @@ class EventController extends Zend_Controller_Action $event->setRunning(false); } $event->setCreated(time()); + $overlapping = false; if($event->repeat) { - $eventID = $this->repeatEvent($event); + $overlapping = $this->repeatEvent($event); } else { try { $eventID = $this->eventMapper->save($event); @@ -295,12 +296,12 @@ class EventController extends Zend_Controller_Action echo "Message: " . $e->getMessage() . "
"; return; } + $event->setID($eventID); } - $event->setID($eventID); if($event->getImmediate()) { $this->runEvent($event, $this->userIDsNamespace['apikey']); } - $this->_redirect('/event/'); + $this->_redirect('/event/index/overlapping/' . $overlapping); } } $params = $this->getRequest()->getParams(); @@ -541,8 +542,9 @@ class EventController extends Zend_Controller_Action } } } + $overlapping = false; if($event->getRepeat()) { - $this->editRepeatEvent($oldEvent, $event); + $overlapping = $this->editRepeatEvent($oldEvent, $event); } else { try { $this->eventMapper->save($event); @@ -552,7 +554,7 @@ class EventController extends Zend_Controller_Action return; } } - $this->_redirect('/event/'); + $this->_redirect('/event/index/overlapping/' . $overlapping); } } else { $this->getRequest()->setParam('title', $event->getTitle()); @@ -2055,14 +2057,7 @@ class EventController extends Zend_Controller_Action } private function repeatEvent(Application_Model_Event $event) { - try { - $eventID = $this->eventMapper->save($event); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[0] = $event; $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattype = new Application_Model_Repeattype(); $repeattypeMapper->find($event->getRepeattype(), $repeattype); @@ -2073,8 +2068,7 @@ class EventController extends Zend_Controller_Action if($event->getEnd()) { $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); } - $newEvent = $event; - $newEvent->setID(null); + $newEvent = clone $event; $startDate = date('d.m.Y', strtotime($event->getStart())); if($event->getEnd()) { $endDate = date('d.m.Y', strtotime($event->getEnd())); @@ -2128,14 +2122,7 @@ class EventController extends Zend_Controller_Action $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $onedaytime; } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i + 1] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { @@ -2149,9 +2136,11 @@ class EventController extends Zend_Controller_Action $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } + $newEvent = clone $newEvent; } } else if($repeatend->getTitle() == 'Date') { $repeatendtime = strtotime($newEvent->getRepeatdate()); + $i = 1; while($newStartTime <= $repeatendtime) { if($summertimeStart) { if(!date('I', $newStartTime)) { @@ -2181,14 +2170,7 @@ class EventController extends Zend_Controller_Action $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $onedaytime; } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { @@ -2202,6 +2184,8 @@ class EventController extends Zend_Controller_Action $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } + $newEvent = clone $newEvent; + $i++; } } @@ -2252,17 +2236,12 @@ class EventController extends Zend_Controller_Action $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $oneweektime; } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i + 1] = $newEvent; + $newEvent = clone $newEvent; } } else if($repeatend->getTitle() == 'Date') { $repeatendtime = strtotime($newEvent->getRepeatdate()); + $i = 1; while($newStartTime <= $repeatendtime) { if($summertimeStart) { if(!date('I', $newStartTime)) { @@ -2292,14 +2271,9 @@ class EventController extends Zend_Controller_Action $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $oneweektime; } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i] = $newEvent; + $newEvent = clone $newEvent; + $i++; } } @@ -2349,14 +2323,7 @@ class EventController extends Zend_Controller_Action $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $twoweekstime; } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i + 1] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { @@ -2370,9 +2337,11 @@ class EventController extends Zend_Controller_Action $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } + $newEvent = clone $newEvent; } } else if($repeatend->getTitle() == 'Date') { $repeatendtime = strtotime($newEvent->getRepeatdate()); + $i = 1; while($newStartTime <= $repeatendtime) { if($summertimeStart) { if(!date('I', $newStartTime)) { @@ -2402,14 +2371,7 @@ class EventController extends Zend_Controller_Action $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $twoweekstime; } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { @@ -2423,6 +2385,8 @@ class EventController extends Zend_Controller_Action $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } + $newEvent = clone $newEvent; + $i++; } } @@ -2513,14 +2477,7 @@ class EventController extends Zend_Controller_Action $newEndDate = $endYear . "-" . $endMonth . "-" . $endDay . " " . date('H:i', $newEndTime); $newEndTime = strtotime($newEndDate); } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i + 1] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { @@ -2534,8 +2491,10 @@ class EventController extends Zend_Controller_Action $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } + $newEvent = clone $newEvent; } } else if($repeatend->getTitle() == 'Date') { + $i = 1; $repeatendtime = strtotime($newEvent->getRepeatdate()); while($newStartTime <= $repeatendtime) { $newEvent->setStart($newStartDate); @@ -2574,14 +2533,7 @@ class EventController extends Zend_Controller_Action $newEndDate = $endYear . "-" . $endMonth . "-" . $endDay . " " . date('H:i', $newEndTime); $newEndTime = strtotime($newEndDate); } - try { - $eventID = $this->eventMapper->save($newEvent); - } catch(Zend_Exception $e) - { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; - } + $events[$i] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { @@ -2595,15 +2547,53 @@ class EventController extends Zend_Controller_Action $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } + $newEvent = clone $newEvent; + $i++; } } break; } - return $eventID; + + $overlapping = false; + $overlappingEvents = array(); + foreach($events as $evt) { + $overlappingEvents = $this->eventMapper->getOverlappingEvents(date('Y-m-d H:i:s', strtotime($evt->getStart())), date('Y-m-d H:i:s', strtotime($evt->getEnd())), $evt->getPbs_PoolID(), $event, true); + if(count($overlappingEvents) > 0 ) { + $overlapping = true; + break; + } + } + + + + if(!$overlapping) { + $evt = null; + foreach($events as $evt) { + try { + $eventID = $this->eventMapper->save($evt); + $evt->setID($eventID); + } catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "
"; + echo "Message: " . $e->getMessage() . "
"; + return; + } + } + } else { + if($events[0]->getPbs_bootmenuID()) { + $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $events[0]->getPbs_bootmenuID()); + } + if($events[0]->getPbs_filterID()) { + $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $events[0]->getPbs_filterID()); + } + } + + return $overlapping; } private function editRepeatEvent(Application_Model_Event $oldEvent, Application_Model_Event $newEvent) { + $overlapping = false; $diff = $this->eventMapper->compare($newEvent, $oldEvent); if(isset($diff['start']) || isset($diff['end'])) { if(isset($diff['start'])) { @@ -2631,65 +2621,79 @@ class EventController extends Zend_Controller_Action } $events = $this->eventMapper->findBy(array('poolctrl_event.repeat' => 1, 'title' => $oldEvent->getTitle())); if(count($events) > 0) { - try { - foreach($events as $event) { - if($event->getRunning() == 0 && $event->getRepeat() == 1) { - $event->setOptions($diff); - if(isset($diffStart)) { - $summertimeStart = intval(date('I', strtotime($event->getStart()))); - $newSummertimeStart = intval(date('I', strtotime($event->getStart()) + $diffStart)); - if($summertimeStart) { - if(!$newSummertimeStart) { - $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart + 3600); - } else { - $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart); - } + foreach($events as $event) { + if($event->getRunning() == 0 && $event->getRepeat() == 1) { + $event->setOptions($diff); + if(isset($diffStart)) { + $summertimeStart = intval(date('I', strtotime($event->getStart()))); + $newSummertimeStart = intval(date('I', strtotime($event->getStart()) + $diffStart)); + if($summertimeStart) { + if(!$newSummertimeStart) { + $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart + 3600); } else { - if($newSummertimeStart) { - $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart - 3600); - } else { - $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart); - } + $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart); + } + } else { + if($newSummertimeStart) { + $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart - 3600); + } else { + $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart); } - $event->setStart($newStart); } - if(isset($diffEnd)) { - $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); - $newSummertimeEnd = intval(date('I', strtotime($event->getEnd()) + $diffEnd)); - if($summertimeEnd) { - if(!$newSummertimeEnd) { - $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd + 3600); - } else { - $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd); - } + $event->setStart($newStart); + } + if(isset($diffEnd)) { + $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); + $newSummertimeEnd = intval(date('I', strtotime($event->getEnd()) + $diffEnd)); + if($summertimeEnd) { + if(!$newSummertimeEnd) { + $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd + 3600); } else { - if($newSummertimeEnd) { - $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd - 3600); - } else { - $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd); - } + $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd); + } + } else { + if($newSummertimeEnd) { + $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd - 3600); + } else { + $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd); } - $event->setEnd($newEnd); } - if($newEvent->getCategory() != $shutdownCategory->getID()) { - if($repeattype != "Once a week") { - $startDate = date('d.m.Y', strtotime($event->getStart())); - if($event->getEnd()) { - $endDate = date('d.m.Y', strtotime($event->getEnd())); - } else { - $endDate = date('d.m.Y', strtotime($event->getStart()) + 900); - } - $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); - $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); + $event->setEnd($newEnd); + } + if($newEvent->getCategory() != $shutdownCategory->getID()) { + if($repeattype != "Once a week") { + $startDate = date('d.m.Y', strtotime($event->getStart())); + if($event->getEnd()) { + $endDate = date('d.m.Y', strtotime($event->getEnd())); + } else { + $endDate = date('d.m.Y', strtotime($event->getStart()) + 900); } + $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); + $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); } + } + } + } + + foreach($events as $event) { + $overlappingEvents = $this->eventMapper->getOverlappingEvents(date('Y-m-d H:i:s', strtotime($event->getStart())), date('Y-m-d H:i:s', strtotime($event->getEnd())), $event->getPbs_PoolID()); + if(count($overlappingEvents) > 0 ) { + $overlapping = true; + break; + } + } + + if(!$overlapping) { + foreach($events as $event) { + try { $this->eventMapper->save($event); + } catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "
"; + echo "Message: " . $e->getMessage() . "
"; + return; } } - } catch (Zend_Exception $e) { - echo "Caught exception: " . get_class($e) . "
"; - echo "Message: " . $e->getMessage() . "
"; - return; } } } else { @@ -2702,8 +2706,9 @@ class EventController extends Zend_Controller_Action } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; - return; + } } + return $overlapping; } } diff --git a/library/Poolctrl/Validate/EventOverlapping.php b/library/Poolctrl/Validate/EventOverlapping.php index f3f1d71..fb632af 100755 --- a/library/Poolctrl/Validate/EventOverlapping.php +++ b/library/Poolctrl/Validate/EventOverlapping.php @@ -32,16 +32,9 @@ class Poolctrl_Validate_EventOverlapping extends Zend_Validate_Abstract require_once 'Zend/Validate/Exception.php'; throw new Zend_Validate_Exception("Missing option 'poolID'"); } - if (array_key_exists('repeat', $option)) { - $_repeat = strtotime($option['repeat']); - } else { - require_once 'Zend/Validate/Exception.php'; - throw new Zend_Validate_Exception("Missing option 'repeat'"); - } } $this->_setStart($_start); - $this->_setRepeat($r_repeat); $this->_setPoolID($_poolID); } @@ -55,16 +48,6 @@ class Poolctrl_Validate_EventOverlapping extends Zend_Validate_Abstract $this->_start = $_start; } - public function _getRepeat() - { - return $this->_repeat; - } - - public function _setRepeat($_repeat) - { - $this->_repeat = $_repeat; - } - public function _getPoolID() { return $this->_poolID; -- cgit v1.2.3-55-g7522