summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorBjörn Geiger2011-09-26 15:08:46 +0200
committerBjörn Geiger2011-09-26 15:08:46 +0200
commit29debc3ef8bb938a52135cba015a1559967d7138 (patch)
treefc822634e8c8c85c4cb4f98db4b9860208b45e13 /application
parentminor (diff)
downloadpoolctrl-29debc3ef8bb938a52135cba015a1559967d7138.tar.gz
poolctrl-29debc3ef8bb938a52135cba015a1559967d7138.tar.xz
poolctrl-29debc3ef8bb938a52135cba015a1559967d7138.zip
Repeat Events werden nun erzeugt, noch nicht getestet
Diffstat (limited to 'application')
-rwxr-xr-xapplication/controllers/EventController.php225
1 files changed, 211 insertions, 14 deletions
diff --git a/application/controllers/EventController.php b/application/controllers/EventController.php
index d69df46..482d19e 100755
--- a/application/controllers/EventController.php
+++ b/application/controllers/EventController.php
@@ -1375,32 +1375,229 @@ class EventController extends Zend_Controller_Action
}
private function repeatEvent(Application_Model_Event $event) {
- $eventRepeattype = $event->getRepeattype();
$repeattypeMapper = new Application_Model_RepeattypeMapper();
- $repeattypes = $repeattypeMapper->fetchAll();
- foreach($repeattypes as $repeattype) {
- if($repeattype->getID() == $eventRepeattype) {
- break;
- }
- }
+ $repeattype = new Application_Model_Repeattype();
+ $repeattypes = $repeattypeMapper->find($event->getRepeattype(), $repeattype);
+ $repeatendMapper = new Application_Model_RepeatendMapper();
+ $repeatend = new Application_Model_Repeatend();
+ $repeatendMapper->find($event->getRepeatend(), $repeatend);
switch($repeattype->getTitle()) {
case 'Daily':
-
+ $onedaytime = 24 * 60 * 60;
+ $newStartTime = strtotime($event->getStart() + $onedaytime);
+ if(isset($event->getEnd())) {
+ $newEndTime = strtotime($event->getEnd() + $onedaytime);
+ }
+ $newEvent = $event;
+ if($repeatend->getTitle() == 'After') {
+ for($i = 0; $i < $event->getRepeatings(); $i++) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $newStartTime = strtotime($newStartTime + $onedaytime);
+ if(isset($newEndTime)) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $newEndTime = strtotime($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;
+ }
+ }
+ } else if($repeatend->getTitle() == 'Date') {
+ $repeatendtime = strtotime($event->getRepeatdate());
+ while($newStartTime <= $repeatendtime) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $newStartTime = strtotime($newStartTime + $onedaytime);
+ if(isset($newEndTime)) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $newEndTime = strtotime($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;
+ }
+ }
+ }
break;
- case 'Every couple of weeks':
-
+ case 'Once a week':
+ $oneweektime = 7 * 24 * 60 * 60;
+ $newStartTime = strtotime($event->getStart() + $oneweektime);
+ if(isset($event->getEnd())) {
+ $newEndTime = strtotime($event->getEnd() + $oneweektime);
+ }
+ $newEvent = $event;
+ if($repeatend->getTitle() == 'After') {
+ for($i = 0; $i < $event->getRepeatings(); $i++) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $newStartTime = strtotime($newStartTime + $oneweektime);
+ if(isset($newEndTime)) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $newEndTime = strtotime($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;
+ }
+ }
+ } else if($repeatend->getTitle() == 'Date') {
+ $repeatendtime = strtotime($event->getRepeatdate());
+ while($newStartTime <= $repeatendtime) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $newStartTime = strtotime($newStartTime + $oneweektime);
+ if(isset($newEndTime)) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $newEndTime = strtotime($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;
+ }
+ }
+ }
break;
-
- case 'Every month':
+ case 'Every couple of weeks':
+ $twoweekstime = 14 * 24 * 60 * 60;
+ $newStartTime = strtotime($event->getStart() + $twoweekstime);
+ if(isset($event->getEnd())) {
+ $newEndTime = strtotime($event->getEnd() + $twoweekstime);
+ }
+ $newEvent = $event;
+ if($repeatend->getTitle() == 'After') {
+ for($i = 0; $i < $event->getRepeatings(); $i++) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $newStartTime = strtotime($newStartTime + $twoweekstime);
+ if(isset($newEndTime)) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $newEndTime = strtotime($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;
+ }
+ }
+ } else if($repeatend->getTitle() == 'Date') {
+ $repeatendtime = strtotime($event->getRepeatdate());
+ while($newStartTime <= $repeatendtime) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $newStartTime = strtotime($newStartTime + $twoweekstime);
+ if(isset($newEndTime)) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $newEndTime = strtotime($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;
+ }
+ }
+ }
break;
- case 'Once a week':
-
+ case 'Every month':
+ $startMonth = date('m', $event->getStart());
+ $newStartMonth = $startMonth + 1;
+ while(!checkdate(newStartMonth, date('d', $event->getEnd()), date('Y', $event->getEnd()))) {
+ $newStartDate = date('Y', $event->getStart()) . $newStartMonth . date('d H:i', $event->getStart());
+ $newStartMonth++;
+ }
+ $newStartTime = strtotime($newStartDate);
+ if(isset($event->getEnd())) {
+ $endMonth = date('m', $event->getEnd());
+ $newEndMonth = $endMonth + 1;
+ while(!checkdate(newEndMonth, date('d', $event->getEnd()), date('Y', $event->getEnd()))) {
+ $newEndDate = date('Y', $event->getEnd()) .$newEndMonth . date('d H:i', $event->getEnd());
+ $newEndMonth++;
+ }
+ $newStartTime = strtotime($newEndDate);
+ }
+ $newEvent = $event;
+ if($repeatend->getTitle() == 'After') {
+ for($i = 0; $i < $event->getRepeatings(); $i++) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $startMonth = date('m', $newStartTime);
+ $newStartMonth = $startMonth + 1;
+ while(!checkdate(newStartMonth, date('d', $event->getEnd()), date('Y', $event->getEnd()))) {
+ $newStartDate = date('Y', $newStartTime) . $newStartMonth . date('d H:i', $newStartTime);
+ $newStartMonth++;
+ }
+ $newStartTime = strtotime($newStartDate);
+ if(isset($event->getEnd())) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $endMonth = date('m', $newEndTime);
+ $newEndMonth = $endMonth + 1;
+ while(!checkdate(newEndMonth, date('d', $event->getEnd()), date('Y', $event->getEnd()))) {
+ $newEndDate = date('Y', $newEndTime) .$newEndMonth . date('d H:i', $newEndTime);
+ $newEndMonth++;
+ }
+ $newStartTime = 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;
+ }
+ }
+ } else if($repeatend->getTitle() == 'Date') {
+ $repeatendtime = strtotime($event->getRepeatdate());
+ while($newStartTime <= $repeatendtime) {
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
+ $startMonth = date('m', $newStartTime);
+ $newStartMonth = $startMonth + 1;
+ while(!checkdate(newStartMonth, date('d', $event->getEnd()), date('Y', $event->getEnd()))) {
+ $newStartDate = date('Y', $newStartTime) . $newStartMonth . date('d H:i', $newStartTime);
+ $newStartMonth++;
+ }
+ $newStartTime = strtotime($newStartDate);
+ if(isset($event->getEnd())) {
+ $newEvent->setEnd(date('Y-m-d H:i', $newEndTime));
+ $endMonth = date('m', $newEndTime);
+ $newEndMonth = $endMonth + 1;
+ while(!checkdate(newEndMonth, date('d', $event->getEnd()), date('Y', $event->getEnd()))) {
+ $newEndDate = date('Y', $newEndTime) .$newEndMonth . date('d H:i', $newEndTime);
+ $newEndMonth++;
+ }
+ $newStartTime = 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;
+ }
+ }
+ }
break;
}