summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Wagner2011-10-25 19:09:07 +0200
committerSebastian Wagner2011-10-25 19:09:07 +0200
commit12ab5238f1f9fbcbffc5ed6e71574b466541911c (patch)
tree52be032f91056e3dff2901ba6112a11b2a6820d7
parentwas weiß ich (diff)
downloadpoolctrl-12ab5238f1f9fbcbffc5ed6e71574b466541911c.tar.gz
poolctrl-12ab5238f1f9fbcbffc5ed6e71574b466541911c.tar.xz
poolctrl-12ab5238f1f9fbcbffc5ed6e71574b466541911c.zip
verschiedenes
-rwxr-xr-xapplication/controllers/EventController.php263
-rwxr-xr-xlibrary/Poolctrl/Validate/EventOverlapping.php17
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() . "<br/>";
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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ return;
}
}
- } catch (Zend_Exception $e) {
- echo "Caught exception: " . get_class($e) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- return;
}
}
} else {
@@ -2702,8 +2706,9 @@ class EventController extends Zend_Controller_Action
} catch (Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "<br/>";
echo "Message: " . $e->getMessage() . "<br/>";
- 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;