getInvokeArg('bootstrap'); $this->config = $bootstrap->getOptions(); $this->pbs2host = $this->config['pbs2']['host']; $this->gearmanServerHost = $this->config['gearman']['server']['host']; $this->gearmanServerPort = $this->config['gearman']['server']['port']; $this->gearmanWorkerWaitTime = $this->config['gearman']['worker']['waitTime']; $this->gearmanWorkerUpdateRate = $this->config['gearman']['worker']['updateRate']; $this->gearmanClient = new GearmanClient(); $this->gearmanClient->addServer($this->gearmanServerHost); $this->eventMapper = new Application_Model_EventMapper(); $this->eventcategoryMapper = new Application_Model_EventcategoryMapper(); $actionName = $this->getRequest()->getActionName(); if($actionName == "report" || $actionName == "run") { $this->userIDsNamespace = Zend_Session::namespaceGet('userIDs'); if(isset($this->userIDsNamespace['apikey'])) { $apikey = $this->userIDsNamespace['apikey']; } else { $apikey = $this->_request->getParam('apikey'); } if($apikey != ""){ $this->acl = new Poolctrl_Acl($this->pbs2host, $this->config['pbs2']['checkright'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); } else { header('HTTP/1.0 401 No apikey is set'); die(); } } else if (Zend_Auth::getInstance()->hasIdentity()) { $this->userIDsNamespace = Zend_Session::namespaceGet('userIDs'); if(isset($this->userIDsNamespace['apikey'])) { $this->acl = new Poolctrl_Acl($this->pbs2host, $this->config['pbs2']['checkright'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); } if(!$this->userIDsNamespace['membershipID'] !='') { $this->_helper->redirector('selectmembership', 'person'); return; } } else { $this->_helper->redirector('login', 'auth'); return; } } public function indexAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } if(isset($this->userIDsNamespace['poolID'])) { $this->view->poolID = $this->userIDsNamespace['poolID']; } } public function addAction() { if(!$this->acl->checkRight('ec')) { $this->_redirect('/'); } $eventcategorylist = $this->eventcategoryMapper->fetchAll(); $this->poolVal = $this->getRequest()->getParam('poolSelectBoxVal'); $bootOsApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getbootoss'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', ''); $bootOsXMLString = $bootOsApiResult['http-body']; if(strlen($bootOsXMLString) > 0) { $bootOsXML = new SimpleXMLElement($bootOsXMLString); foreach($bootOsXML->bootoslist->bootos as $bootos) { $bootosobj = new Application_Model_BootOs(); $bootosobj->setID(sprintf("%s", $bootos->id)); $bootosobj->setCreated(sprintf("%s", $bootos->created)); $bootosobj->setDefaultkcl(sprintf("%s", $bootos->defaultkcl)); $bootosobj->setDescription(sprintf("%s", $bootos->description)); $bootosobj->setDistro(sprintf("%s", $bootos->distro)); $bootosobj->setDistroversion(sprintf("%s", $bootos->distroversion)); $bootosobj->setExpires(sprintf("%s", $bootos->expires)); $bootosobj->setGroupID(sprintf("%s", $bootos->groupid)); $bootosobj->setMembershipID(sprintf("%s", $bootos->membershipid)); $bootosobj->setPublic(sprintf("%s", $bootos->public)); $bootosobj->setShare(sprintf("%s", $bootos->share)); $bootosobj->setShortname(sprintf("%s", $bootos->shortname)); $bootosobj->setSource(sprintf("%s", $bootos->source)); $bootosobj->setTitle(sprintf("%s", $bootos->title)); $bootoslist[$bootosobj->getID()] = $bootosobj; foreach($bootos->configs->config as $config) { $configobj = new Application_Model_Config(); $configobj->setID(sprintf("%s", $config->configid)); $configobj->setBootosID(sprintf("%s", $bootosobj->getID())); $configobj->setCreated(sprintf("%s", $config->created)); $configobj->setMembershipID(sprintf("%s", $config->membershipid)); $configobj->setDescription(sprintf("%s", $config->description)); $configobj->setGroupID(sprintf("%s", $config->groupid)); $configobj->setTitle(sprintf("%s", $config->title)); $configobj->setVisible(sprintf("%s", $config->visible)); if($configobj->getVisible()) { if($configobj->getTitle() == 'Default') { $configlist[$bootosobj->getID()][0] = $configobj; } else { $configlist[$bootosobj->getID()][$configobj->getID()] = $configobj; } } } } } if(!isset($this->userIDsNamespace['poolID'])) { $poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', ''); $poolXMLString = $poolApiResult['http-body']; if(strlen($poolXMLString) > 0) { $poolXML = new SimpleXMLElement($poolXMLString); foreach($poolXML->poollist->pool as $pool) { $poolobj = new Application_Model_Pool(); $poolobj->setID(sprintf("%s", $pool->id)); $poolobj->setDescription(sprintf("%s", $pool->description)); $poolobj->setGroupID(sprintf("%s", $pool->groupid)); $poolobj->setLocation(sprintf("%s", $pool->location)); $poolobj->setTitle(sprintf("%s", $pool->title)); $poollist[$poolobj->getID()] = $poolobj; } } } $repeatendMapper = new Application_Model_RepeatendMapper(); $repeatendlist = $repeatendMapper->fetchAll(); $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattypelist = $repeattypeMapper->fetchAll(); $add = $this->getRequest()->getParam("add"); if($this->getRequest()->getParam('start')) { $start = date ('m/d/Y h:i a', strtotime($this->getRequest()->getParam('start'))); } else if($this->getRequest()->getParam('evstart')) { $start = date ('m/d/Y h:i a', strtotime(substr($this->getRequest()->getParam('evstart'), 0, 24))); } else {$start = 'mm/dd/yyyy h:min';} if($this->getRequest()->getParam('end')) { $end = date ('m/d/Y h:i a', strtotime($this->getRequest()->getParam('end'))); } else if($this->getRequest()->getParam('evend')) { $end = date ('m/d/Y h:i a', strtotime(substr($this->getRequest()->getParam('evend'), 0, 24))); } else {$end = 'mm/dd/yyyy h:min';} if (!isset($add)){ $defaultEventCategory = $this->config['event']['category']['default']; foreach($eventcategorylist as $eventcategory) { if($eventcategory->getTitle() == $defaultEventCategory) { $defaultEventCategoryID = $eventcategory->getID(); break; } } if(isset($this->userIDsNamespace['poolID'])) { $addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'repeatendlist' => $repeatendlist, 'repeattypelist' => $repeattypelist, 'start' => $start, 'end' => $end, 'defaultEventCategoryID' => $defaultEventCategoryID, 'poolID' => $this->userIDsNamespace['poolID'])); } else { $addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'repeatendlist' => $repeatendlist, 'repeattypelist' => $repeattypelist, 'poollist' => $poollist, 'start' => $start, 'end' => $end, 'defaultEventCategoryID' => $defaultEventCategoryID)); } } else { if(isset($this->userIDsNamespace['poolID'])) { $addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'repeatendlist' => $repeatendlist, 'repeattypelist' => $repeattypelist, 'start' => $start, 'end' => $end, 'poolID' => $this->userIDsNamespace['poolID'], $this->getRequest()->getParams())); } else { $addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'repeatendlist' => $repeatendlist, 'repeattypelist' => $repeattypelist, 'poollist' => $poollist, 'start' => $start, 'end' => $end, $this->getRequest()->getParams())); } $params = $this->getRequest()->getParams(); if(!isset($params['pbs_poolID'])) { $params['pbs_poolID'] = $this->userIDsNamespace['poolID']; } if ($addForm->isValid($params)) { $configName = 'pbs_configID_' . $params['pbs_bootosID']; if(isset($params[$configName]) && $params[$configName] != 'default') { $params['pbs_configID'] = $params[$configName]; unset($params[$configName]); } else { unset($params[$configName]); unset($params['pbs_configID']); } if($params['immediate']) { $params['start'] = date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('start'))); unset($params['end']); unset($params['repeatEnd']); $params['repeat'] = 0; } else { $params['start'] = date ('Y-m-d H:i', strtotime($params['start'])); if(isset($params['end'])) { $params['end'] = date ('Y-m-d H:i', strtotime($params['end'])); } else { unset($params['end']); } if(!isset($params['repeattype'])) { unset($params['repeattype']); } if(!isset($params['repeatend'])) { unset($params['repeatend']); } if(isset($params['repeatdate'])) { $params['repeatdate'] = date ('Y-m-d H:i', strtotime($params['repeatdate'])); } else { unset($params['repeatdate']); } if(!isset($params['repeatings'])) { unset($params['repeatings']); } if($params['participants'] <= 0) { unset($params['participants']); } } $event = new Application_Model_Event($params); $event->setPbs_membershipID($this->userIDsNamespace['membershipID']); $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { $bootmenuquery = "bootosID=" . $event->getPbs_bootosID() . "&startcounter=0&title=Poolctrl-Bootmenu for " . $event->getTitle() . "&defaultbootmenu=0&order=0&kcl=0"; if($event->getPbs_configID()) { $bootmenuquery .= "&configID=" . $event->getPbs_configID(); } $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addbootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootmenuquery); $bootmenuXMLString = $bootmenuApiResult['http-body']; $bootmenuXML = new SimpleXMLElement($bootmenuXMLString); $bootmenuID = sprintf("%s", $bootmenuXML->bootmenu->id); $event->setPbs_bootmenuID($bootmenuID); $filterquery = "bootmenuID=" . $event->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $event->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $event->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $event->setPbs_filterID($filterID); $startTime = date('H:i', strtotime($event->getStart())); if($event->getEnd()) { $endTime = date('H:i', strtotime($event->getEnd())); } else { $endTime = date('H:i', strtotime($event->getStart()) + 900); } $filterentriesquery1 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $event->getPbs_poolID(); $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); if(!$event->getRepeat()) { $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())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } } if($event->getImmediate()) { $result = $this->eventcategoryMapper->fetchAll(); $eventcategories = array(); foreach($result as $category) { $eventcategories[$category->getID()] = $category->getTitle(); } $eventCategory = $eventcategories[$event->getCategory()]; $runningtypeMapper = new Application_Model_RunningtypeMapper(); $runningtype = $runningtypeMapper->findBy(array("title" => $eventCategory)); $event->setRunning(1); $event->setRunningtype($runningtype[0]->getID()); } else { $event->setRunning(0); } $event->setCreated(time()); $overlapping = 0; if($event->repeat) { $overlapping = $this->repeatEvent($event); } else { try { $eventID = $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $event->setID($eventID); } if($event->getImmediate()) { $this->runEvent($event, $this->userIDsNamespace['apikey']); } $this->_redirect('/event/index/overlapping/' . $overlapping); } } $params = $this->getRequest()->getParams(); $this->view->params = $params; $this->view->addForm = $addForm; } public function deleteAction() { if(!$this->acl->checkRight('ed')) { $this->_redirect('/'); } $this->_helper->viewRenderer->setNoRender(); $eventID = $this->_request->getParam('eventID'); if(isset($eventID)) { $event = new Application_Model_Event(); $this->eventMapper->find($eventID, $event); if($event->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if(!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } if($event->getPbs_bootmenuID() && $event->getRepeat() == 0) { $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_bootmenuID()); } if($event->getPbs_filterID() && $event->getRepeat() != 1) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $event->getPbs_filterID()); } try { $this->eventMapper->delete($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect('/event/'); } else { $this->_redirect('/event/'); return; } } public function editAction() { if(!$this->acl->checkRight('ee')) { $this->_redirect('/'); } $eventID = $this->_request->getParam('eventID'); if(!isset($eventID)) { $this->_helper->redirector('add', 'event'); return; } else { $event = new Application_Model_Event(); $this->eventMapper->find($eventID, $event); $oldEvent = new Application_Model_Event(); $this->eventMapper->find($eventID, $oldEvent); if($event->getImmediate()) { $this->_redirect('/event/'); exit; } $eventcategorylist = $this->eventcategoryMapper->fetchAll(); $bootOsApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getbootoss'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', ''); $bootOsXMLString = $bootOsApiResult['http-body']; if(strlen($bootOsXMLString) > 0) { $bootOsXML = new SimpleXMLElement($bootOsXMLString); foreach($bootOsXML->bootoslist->bootos as $bootos) { $bootosobj = new Application_Model_BootOs(); $bootosobj->setID(sprintf("%s", $bootos->id)); $bootosobj->setCreated(sprintf("%s", $bootos->created)); $bootosobj->setDefaultkcl(sprintf("%s", $bootos->defaultkcl)); $bootosobj->setDescription(sprintf("%s", $bootos->description)); $bootosobj->setDistro(sprintf("%s", $bootos->distro)); $bootosobj->setDistroversion(sprintf("%s", $bootos->distroversion)); $bootosobj->setExpires(sprintf("%s", $bootos->expires)); $bootosobj->setGroupID(sprintf("%s", $bootos->groupid)); $bootosobj->setMembershipID(sprintf("%s", $bootos->membershipid)); $bootosobj->setPublic(sprintf("%s", $bootos->public)); $bootosobj->setShare(sprintf("%s", $bootos->share)); $bootosobj->setShortname(sprintf("%s", $bootos->shortname)); $bootosobj->setSource(sprintf("%s", $bootos->source)); $bootosobj->setTitle(sprintf("%s", $bootos->title)); $bootoslist[$bootosobj->getID()] = $bootosobj; foreach($bootos->configs->config as $config) { $configobj = new Application_Model_Config(); $configobj->setID(sprintf("%s", $config->configid)); $configobj->setBootosID(sprintf("%s", $bootosobj->getID())); $configobj->setCreated(sprintf("%s", $config->created)); $configobj->setDescription(sprintf("%s", $config->description)); $configobj->setGroupID(sprintf("%s", $config->groupid)); $configobj->setTitle(sprintf("%s", $config->title)); $configobj->setVisible(sprintf("%s", $config->visible)); if($configobj->getVisible()) { if($configobj->getTitle() == 'Default') { $configlist[$bootosobj->getID()][0] = $configobj; } else { $configlist[$bootosobj->getID()][$configobj->getID()] = $configobj; } } } } } $poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', ''); $poolXMLString = $poolApiResult['http-body']; if(strlen($poolXMLString) > 0) { $poolXML = new SimpleXMLElement($poolXMLString); foreach($poolXML->poollist->pool as $pool) { $poolobj = new Application_Model_Pool(); $poolobj->setID(sprintf("%s", $pool->id)); $poolobj->setDescription(sprintf("%s", $pool->description)); $poolobj->setGroupID(sprintf("%s", $pool->groupid)); $poolobj->setLocation(sprintf("%s", $pool->location)); $poolobj->setTitle(sprintf("%s", $pool->title)); $poollist[$poolobj->getID()] = $poolobj; } } if($event->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if(!$this->acl->checkRight('eeo')) { $this->_redirect('/'); } } $repeatendMapper = new Application_Model_RepeatendMapper(); $repeatendlist = $repeatendMapper->fetchAll(); $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattypelist = $repeattypeMapper->fetchAll(); $save = $this->getRequest()->getParam("save"); if (isset($save)){ $params = $this->getRequest()->getParams(); $editForm = new Application_Form_EventEdit(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'poollist' => $poollist, 'repeattypelist' => $repeattypelist, 'repeatendlist' => $repeatendlist, 'oldtitle' => $event->getTitle(), 'params' => $params)); if ($editForm->isValid($params)) { $configName = 'pbs_configID_' . $params['pbs_bootosID']; if(isset($params[$configName]) && $params[$configName] != 'default') { $params['pbs_configID'] = $params[$configName]; unset($params[$configName]); } else { unset($params[$configName]); $event->setPbs_configID(null); } $params['start'] = date ('Y-m-d H:i:s', strtotime($params['start'])); if(isset($params['end'])) { $params['end'] = date ('Y-m-d H:i:s', strtotime($params['end'])); } else { unset($params['end']); } if(!isset($params['repeattype'])) { unset($params['repeattype']); } if(!isset($params['repeatend'])) { unset($params['repeatend']); } if(isset($params['repeatdate'])) { $params['repeatdate'] = date ('Y-m-d H:i:s', strtotime($params['repeatdate'])); } else { unset($params['repeatdate']); } if(!isset($params['repeatings'])) { unset($params['repeatings']); } $params['immediate'] = 0; $event->setOptions($params); $event->setID($eventID); $overlapping = 0; if($event->getRepeat() == 1 && !isset($params['wdh'])) { $event->setRepeat(2); } else { $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(), $event); if(count($overlappingEvents) > 0 ) { $overlapping = 1; } if(!$overlapping) { $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { $diff = $this->eventMapper->compare($oldEvent, $event); if(isset($diff['pbs_bootosID']) || isset($diff['title']) || isset($diff['pbs_configID'])) { $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $oldEvent->getPbs_bootmenuID()); unset($bootmenuApiResult); $bootmenuquery = "bootosID=" . $event->getPbs_bootosID() . "&startcounter=0&title=Poolctrl-Bootmenu for " . $event->getTitle() . "&defaultbootmenu=0&order=0&kcl=0"; if($event->getPbs_configID()) { $bootmenuquery .= "&configID=" . $event->getPbs_configID(); } $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addbootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootmenuquery); $bootmenuXMLString = $bootmenuApiResult['http-body']; $bootmenuXML = new SimpleXMLElement($bootmenuXMLString); $bootmenuID = sprintf("%s", $bootmenuXML->bootmenu->id); $event->setPbs_bootmenuID($bootmenuID); $filterQuerie = "filterid=" . $event->getPbs_filterID() . "&bootmenuID = " . $bootmenuID; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterQuerie); unset($filterApiResult); } if(isset($diff['start']) || isset($diff['end']) || isset($diff['pbs_poolID'])) { if(isset($params['wdh']) || !$oldEvent->getRepeat()) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $oldEvent->getPbs_filterID()); unset($filterApiResult); } $filterquery = "bootmenuID=" . $event->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $event->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $event->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $event->setPbs_filterID($filterID); $filterentriesquery1 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $event->getPbs_poolID(); $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $startTime = date('H:i', strtotime($event->getStart())); if($event->getEnd()) { $endTime = date('H:i', strtotime($event->getEnd())); } else { $endTime = date('H:i', strtotime($event->getStart()) + 900); } $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); if(!$event->getRepeat()) { $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())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } } } } } if(!$overlapping) { if($event->getRepeat() == 1) { $overlapping = $this->editRepeatEvent($oldEvent, $event); } else { try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } $this->_redirect('/event/index/overlapping/' . $overlapping); } } else { $this->getRequest()->setParam('title', $event->getTitle()); $this->getRequest()->setParam('immediate', $event->getImmediate()); $this->getRequest()->setParam('start', $event->getStart()); if($event->getEnd()) { $this->getRequest()->setParam('end', $event->getEnd()); } $this->getRequest()->setParam('repeat', $event->getRepeat()); if($event->getRepeattype()) { $this->getRequest()->setParam('repeattype', $event->getRepeattype()); } if($event->getRepeatend()) { $this->getRequest()->setParam('repeatend', $event->getRepeatend()); } if($event->getRepeatdate()) { $this->getRequest()->setParam('repeatdate', $event->getRepeatdate()); } if($event->getRepeatings()) { $this->getRequest()->setParam('repeatings', $event->getRepeatings()); } $this->getRequest()->setParam('participants', $event->getParticipants()); $this->getRequest()->setParam('category', $event->getCategory()); $eventCategory = new Application_Model_Eventcategory(); $this->eventcategoryMapper->find($event->getCategory(), $eventCategory); $this->getRequest()->setParam('categoryLabel', $eventCategory->getTitle()); $this->getRequest()->setParam('note', $event->getNote()); $this->getRequest()->setParam('pbs_poolID', $event->getPbs_poolID()); $this->getRequest()->setParam('pbs_bootosID', $event->getPbs_bootosID()); $this->getRequest()->setParam('pbs_configID_' . $event->getPbs_bootosID(), $event->getPbs_configID()); $this->getRequest()->setParam('pbs_membershipID', $event->getPbs_membershipID()); $this->getRequest()->setParam('force', $event->getForce()); $params = $this->getRequest()->getParams(); $editForm = new Application_Form_EventEdit(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'poollist' => $poollist, 'repeattypelist' => $repeattypelist, 'repeatendlist' => $repeatendlist, 'oldtitle' => $event->getTitle(), 'params' => $params)); } $this->view->editForm = $editForm; $this->view->params = $params; } } public function deleteallAction() { if (!$this->acl->checkRight('ed')) { $this->_redirect('/'); } $this->_helper->viewRenderer->setNoRender(); $eventTitle = $this->_request->getParam('eventTitle'); if (isset ($eventTitle)) { $event = new Application_Model_Event(); $events = $this->eventMapper->findBy(array("title" => $eventTitle)); if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if (!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } try { foreach($events as $event) { if ($event->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 ($event->getPbs_filterID()) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $events[0]->getPbs_filterID()); } if($event->getRunning() == 0) { $this->eventMapper->delete($event); } } } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect('/event/'); } else { $this->_redirect('/event/'); return; } } /* * ------------------------ * START CALENDAR FUNCTIONS * ------------------------ */ public function getpoollistAction() { $this->_helper->layout->disableLayout(); $poollist = array(); $poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', ''); $poolXMLString = $poolApiResult['http-body']; if(strlen($poolXMLString) > 0) { $poolXML = new SimpleXMLElement($poolXMLString); foreach($poolXML->poollist->pool as $pool) { $poolobj = new Application_Model_Pool(); $poolobj->setID(sprintf("%s", $pool->id)); $poolobj->setDescription(sprintf("%s", $pool->description)); $poolobj->setGroupID(sprintf("%s", $pool->groupid)); $poolobj->setLocation(sprintf("%s", $pool->location)); $poolobj->setTitle(sprintf("%s", $pool->title)); $poollist[$poolobj->getID()] = $poolobj; } } if(isset($this->userIDsNamespace['poolID'])) { $this->view->poolID = $this->userIDsNamespace['poolID']; } $this->view->poollist = $poollist; } public function checkoverlapdropAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $eventID = $this->getRequest()->getParam('eventID'); $date = intval(strtotime(substr($this->getRequest()->getParam('date'), 0, 24))); $poolID = $this->getRequest()->getParam('poolID'); $events['withrepeat'] = $this->eventMapper->getDraggingEvents($eventID); $events['withoutrepeat'] = $this->eventMapper->getDraggingEvent($eventID); // Calculate time shift $diff=0; foreach($events['withrepeat'] as $e) { if($e['eventID'] == $eventID) { $diff = $date - strtotime($e['start']); break; } } // Check for overlap with repeat $overlapswithrepeat = array(); $cfeventswithrepeat = array(); foreach($events['withrepeat'] as $e) { $evstartTime = intval(strtotime($e['start'])) + $diff; if($e['running'] == 0 && $e['repeat'] == 1 && $evstartTime < time()) { $this->view->past = true; return; } $enewstart = date('Y-m-d H:i:s', strtotime($e['start']) + $diff); $summertimeStart = intval(date('I', strtotime($e['start']))); if($summertimeStart) { if(!date('I', strtotime($enewstart))) { $enewstart = date('Y-m-d H:i:s', strtotime($enewstart) + 60 * 60); $summertimeStart = 0; } } else { if(date('I', strtotime($enewstart))) { $enewstart = date('Y-m-d H:i:s', strtotime($enewstart) - 60 * 60); $summertimeStart = 1; } } if(!isset($e['end'])) { $e['end'] = date('Y-m-d H:i:s', strtotime($e['start']) + 300); $e['endSet'] = true; } else { $e['endSet'] = false; } $enewend = date('Y-m-d H:i:s', strtotime($e['end']) + $diff); $summertimeEnd = intval(date('I', strtotime($e['start']))); if($summertimeEnd) { if(!date('I', strtotime($enewend))) { $enewend = date('Y-m-d H:i:s', strtotime($enewend) + 60 * 60); $summertimeEnd = 0; } } else { if(date('I', strtotime($enewend))) { $enewend = date('Y-m-d H:i:s', strtotime($enewend) - 60 * 60); $summertimeEnd = 1; } } $cfv = true; $event = new Application_Model_Event($e); $event->setID($e['eventID']); // overlap events if($e['running'] == 0 ) { $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event, true); if(count($results) > 0) { foreach($results as $result) { if($result->getID() != $eventID) { $overlapswithrepeat[] = $result->toArray(); $cfv = false; } } } } // conflict free events with repeat if($cfv) { if($e['endSet']) { unset($e['end']); unset($e['endSet']); } else { unset($e['endSet']); } $evt['eventID'] = $e['eventID']; $evt['title'] = $e['title']; $cfeventswithrepeat[] = $e; } //} $this->_redirect('/event/'); } // Check for overlap without repeat $overlapswithoutrepeat = array(); $cfeventswithoutrepeat = array(); $cfv = true; if(isset($events['withoutrepeat'])) { $e = $events['withoutrepeat']; $event = new Application_Model_Event($e); $event->setID($e['eventID']); // Calculate time shift $diff=0; $diff = $date - strtotime($e['start']); $enewstart = date('Y-m-d H:i:s', strtotime($e['start']) + $diff); if(!isset($e['end'])) { $e['end'] = date('Y-m-d H:i:s', strtotime($e['start']) + 300); $e['endSet'] = true; } else { $e['endSet'] = false; } $enewend = date('Y-m-d H:i:s', strtotime($e['end']) + $diff); // overlap events $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event); if(count($results) > 0) { foreach($results as $result) { if($result->getID() != $eventID) { $overlapswithoutrepeat[] = $result->toArray(); $cfv = false; } } } // conflict free events without repeat if($cfv) { if($e['endSet']) { unset($e['end']); unset($e['endSet']); } else { unset($e['endSet']); } $cfeventswithoutrepeat[] = $e; } } $this->view->overlapswithrepeat = $overlapswithrepeat; $this->view->cfeventswithrepeat = $cfeventswithrepeat; $this->view->overlapswithoutrepeat = $overlapswithoutrepeat; $this->view->cfeventswithoutrepeat = $cfeventswithoutrepeat; } public function checkoverlapselectAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $poolID = $this->getRequest()->getParam('poolID'); $startDate = date("Y-m-d H:i:s", intval(strtotime(substr($this->getRequest()->getParam('startDate'), 0, 24)))); $endDate = date("Y-m-d H:i:s", intval(strtotime(substr($this->getRequest()->getParam('endDate'), 0, 24)))); $overlaps = array(); $results = $this->eventMapper->getOverlappingEvents($startDate, $endDate, $poolID); if(count($results) > 0) { foreach($results as $result) { $overlaps[] = $result->toArray(); } } $this->view->overlaps = $overlaps; } public function checkoverlapresizeAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $poolID = $this->getRequest()->getParam('poolID'); $eventID = $this->getRequest()->getParam('eventID'); $minuteDelta = intval($this->getRequest()->getParam('minuteDelta')*60); $dayDelta = intval($this->getRequest()->getParam('dayDelta')*24*60*60); $diffDelta = intval($minuteDelta + $dayDelta); $events['withrepeat'] = $this->eventMapper->getDraggingEvents($eventID); $events['withoutrepeat'] = $this->eventMapper->getDraggingEvent($eventID); // Check for overlap with repeat $overlapswithrepeat = array(); $cfeventswithrepeat = array(); foreach($events['withrepeat'] as $e) { $enewstart = date("Y-m-d H:i:s", strtotime($e['start'])); $enewend = date("Y-m-d H:i:s", strtotime($e['end']) + $diffDelta); $cfv = true; // overlap events if($e['running'] == 0 ) { $event = new Application_Model_Event($e); $event->setID($e['eventID']); $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event); if(count($results) > 0) { foreach($results as $result) { if($result->getID() != $eventID) { $overlapswithrepeat[] = $result->toArray(); $cfv = false; } } } } // conflict free events with repeat if($cfv) { $cfeventswithrepeat[] = $e; } } // Check for overlap without repeat $overlapswithoutrepeat = array(); $cfeventswithoutrepeat = array(); $e = $events['withoutrepeat']; $event = new Application_Model_Event($e); $event->setID($e['eventID']); $enewstart = date('Y-m-d H:i:s', strtotime($e['start'])); $enewend = date('Y-m-d H:i:s', strtotime($e['end']) + $diffDelta); $summertimeEnd = intval(date('I', strtotime($e['start']))); if($summertimeEnd) { if(!date('I', strtotime($enewend))) { $enewend = date('Y-m-d H:i:s', strtotime($enewend) + 60 * 60); $summertimeEnd = 0; } } else { if(date('I', strtotime($enewend))) { $enewend = date('Y-m-d H:i:s', strotitime($enewend) - 60 * 60); $summertimeEnd = 1; } } $cfv = true; // overlap events $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event); if(count($results) > 0) { foreach($results as $result) { if($result->getID() != $eventID) { $overlapswithoutrepeat[] = $result->toArray(); $cfv = false; } } } // conflict free events without repeat if($cfv) { $cfeventswithoutrepeat[] = $e; } //$this->view->events = $events; //$this->view->others = $others; $this->view->overlapswithrepeat = $overlapswithrepeat; $this->view->cfeventswithrepeat = $cfeventswithrepeat; $this->view->overlapswithoutrepeat = $overlapswithoutrepeat; $this->view->cfeventswithoutrepeat = $cfeventswithoutrepeat; } public function eventmoveAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $event = new Application_Model_Event(); $oldEvent = new Application_Model_Event(); $evid = $this->getRequest()->getParam('evid'); $evstart = $this->getRequest()->getParam('evstart'); $evend = $this->getRequest()->getParam('evend'); if ($evid!="null") { $this->eventMapper->find($evid,$event); //locate the event in the DB $this->eventMapper->find($evid,$oldEvent); if($event->getRepeat() == 1) { $event->setRepeat(2); } $oldStartTime = date('H:i', strtotime($event->getStart())); $oldStartDate = date('d.m.Y', strtotime($event->getStart())); $evstartTime = intval(strtotime(substr($evstart, 0, 24))); $newStartTime = date('H:i', $evstartTime); $newStartDate = date('d.m.Y', $evstartTime); $event->setStart(date('Y-m-d H:i:s', $evstartTime)); if($event->getEnd()){ $oldEndTime = date('H:i', strtotime($event->getEnd())); $oldEndDate = date('d.m.Y', strtotime($event->getEnd())); $evendTime = intval(strtotime(substr($evend, 0, 24))); $newEndTime = date('H:i', $evendTime); $newEndDate = date('d.m.Y', $evendTime); $event->setEnd(date('Y-m-d H:i:s', $evendTime)); } $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { if($event->getPbs_filterID()) { if($oldEvent->getRepeat() == 0 || $oldEvent->getRepeat() == 2) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $oldEvent->getPbs_filterID()); unset($filterApiResult); } $filterquery = "bootmenuID=" . $event->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $event->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $event->getTitle() . "&created=" . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $event->setPbs_filterID($filterID); $filterentriesquery1 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $event->getPbs_poolID(); $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $startTime = date('H:i', strtotime($event->getStart())); if($event->getEnd()) { $endTime = date('H:i', strtotime($event->getEnd())); } else { $endTime = date('H:i', strtotime($event->getStart()) + 900); } $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); $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())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } } try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } public function eventmoveallAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $event = new Application_Model_Event(); $eventTitle = $this->getRequest()->getParam('eventTitle'); $evmindelta = $this->getRequest()->getParam('evmindelta'); $evdaydelta = $this->getRequest()->getParam('evdaydelta'); $poolID = $this->getRequest()->getParam('poolID'); if ($eventTitle!=null) { $events = $this->eventMapper->findBy(array("title" => $eventTitle)); if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if (!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } $count = 1; foreach($events as $event) { if($event->getRunning() == 0 && $event->getRepeat() == 1) { $summertimeStart = intval(date('I', strtotime($event->getStart()))); //1min = 60sec, 1d = 86400sec $oldStartTime = date('H:i', strtotime($event->getStart())); $oldStartDate = date('d.m.Y', strtotime($event->getStart())); $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400); $newStartTime = date('H:i', $evstartTime); $newStartDate = date('d.m.Y', $evstartTime); if($summertimeStart) { if(!date('I', $evstartTime)) { $evstartTime = $evstartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $evstartTime)) { $evstartTime = $evstartTime - 60 * 60; $summertimeStart = 1; } } $eventStart = date('Y-m-d H:i:s', $evstartTime); $event->setStart($eventStart); if($event->getEnd()) { $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); $oldEndTime = date('H:i', strtotime($event->getEnd())); $oldEndDate = date('d.m.Y', strtotime($event->getEnd())); $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400); $newEndTime = date('H:i', $evendTime); $newEndDate = date('d.m.Y', $evendTime); if($summertimeEnd) { if(!date('I', $evendTime)) { $evendTime = $evendTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $evendTime)) { $evendTime = $evendTime - 60 * 60; $summertimeEnd = 1; } } $eventEnd = date('Y-m-d H:i:s', $evendTime); $event->setEnd($eventEnd); } $event->setPbs_poolID($poolID); $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { if($event->getPbs_filterID()) { $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattype = new Application_Model_Repeattype(); $repeattypeMapper->find($event->getRepeattype(), $repeattype); if($repeattype == "Once a week") { if($count == 1) { $oldStartDate = date("N", strototime($oldStartDate)); $oldEndDate = ''; $newStartDate = date("N", strototime($newStartDate)); $newEndDate = ''; $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate); $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } } else { $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate); $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } if($count == 1) { $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } } } try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } $count++; } $this->_redirect('/event/'); } else { $this->_redirect('/event/'); return; } } public function eventmovecfAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $cfevents = $this->getRequest()->getParam('cfevents'); $cfeventsJSON = Zend_Json::decode($cfevents); $evmindelta = $this->getRequest()->getParam('evmindelta'); $evdaydelta = $this->getRequest()->getParam('evdaydelta'); $poolID = $this->getRequest()->getParam('poolID'); $events = null; if($cfeventsJSON!=null) { foreach($cfeventsJSON as $e) { $event = new Application_Model_Event(); $this->eventMapper->find($e['eventID'], $event); $events[] = $event; $eventIDs[] = $event->getID(); } } $otherEvents = $this->eventMapper->getOtherRepeatEvents($events[0]->getTitle(), $eventIDs); foreach($otherEvents as $event) { $event->setRepeat(2); $filterquery = "bootmenuID=" . $event->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $event->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $event->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $event->setPbs_filterID($filterID); $startTime = date('H:i', strtotime($event->getStart())); if($event->getEnd()) { $endTime = date('H:i', strtotime($event->getEnd())); } else { $endTime = date('H:i', strtotime($event->getStart()) + 900); } $filterentriesquery1 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $event->getPbs_poolID(); $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); $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())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } if ($events!=null) { if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if (!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } $count = 1; foreach($events as $event) { if($event->getRunning() == 0 && $event->getRepeat() == 1) { $summertimeStart = intval(date('I', strtotime($event->getStart()))); //1min = 60sec, 1d = 86400sec $oldStartTime = date('H:i', strtotime($event->getStart())); $oldStartDate = date('d.m.Y', strtotime($event->getStart())); $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400); $newStartTime = date('H:i', $evstartTime); $newStartDate = date('d.m.Y', $evstartTime); if($summertimeStart) { if(!date('I', $evstartTime)) { $evstartTime = $evstartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $evstartTime)) { $evstartTime = $evstartTime - 60 * 60; $summertimeStart = 1; } } $eventStart = date('Y-m-d H:i:s', $evstartTime); $event->setStart($eventStart); if($event->getEnd()) { $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); $oldEndTime = date('H:i', strtotime($event->getEnd())); $oldEndDate = date('d.m.Y', strtotime($event->getEnd())); $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400); $newEndTime = date('H:i', $evendTime); $newEndDate = date('d.m.Y', $evendTime); if($summertimeEnd) { if(!date('I', $evendTime)) { $evendTime = $evendTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $evendTime)) { $evendTime = $evendTime - 60 * 60; $summertimeEnd = 1; } } $eventEnd = date('Y-m-d H:i:s', $evendTime); $event->setEnd($eventEnd); } $event->setPbs_poolID($poolID); $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { if($event->getPbs_filterID()) { $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattype = new Application_Model_Repeattype(); $repeattypeMapper->find($event->getRepeattype(), $repeattype); if($repeattype == "Once a week") { if($count == 1) { $oldStartDate = date("N", strototime($oldStartDate)); $oldEndDate = ''; $newStartDate = date("N", strototime($newStartDate)); $newEndDate = ''; $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate); $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } } else { $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate); $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } if($count == 1) { $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } } } try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } $count++; } $this->_redirect('/event/'); } else { $this->_redirect('/event/'); return; } } public function eventresizeAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $event = new Application_Model_Event(); $oldEvent = new Application_Model_Event(); $evid = $this->getRequest()->getParam('evid'); $evend = $this->getRequest()->getParam('evend'); $poolID = $this->getRequest()->getParam('poolID'); if ($evid!=null) { $this->eventMapper->find($evid,$event); //locate the event in the DB $this->eventMapper->find($evid,$oldEvent); if($event->getRepeat() == 1) { $event->setRepeat(2); } $oldStartTime = date('H:i', strtotime($event->getStart())); $newStartTime = $oldStartTime; $oldEndTime = date('H:i', strtotime($event->getEnd())); $newEndTime = date('H:i', strtotime(substr($evend, 0, 24))); $event->setEnd(date('Y-m-d H:i:s', strtotime(substr($evend, 0, 24)))); $event->setPbs_poolID($poolID); $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { if($event->getPbs_filterID()) { if($oldEvent->getRepeat() == 0 || $oldEvent->getRepeat() == 2) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $oldEvent->getPbs_filterID()); unset($filterApiResult); } $filterquery = "bootmenuID=" . $event->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $event->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $event->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $event->setPbs_filterID($filterID); $filterentriesquery1 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $event->getPbs_poolID(); $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $startTime = date('H:i', strtotime($event->getStart())); if($event->getEnd()) { $endTime = date('H:i', strtotime($event->getEnd())); } else { $endTime = date('H:i', strtotime($event->getStart()) + 900); } $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); $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())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } } $this->eventMapper->save($event); //save the event with the new data } } public function eventresizeallAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $event = new Application_Model_Event(); $eventTitle = $this->getRequest()->getParam('eventTitle'); $evmindelta = $this->getRequest()->getParam('evmindelta'); $poolID = $this->getRequest()->getParam('poolID'); if ($eventTitle!=null) { $events = $this->eventMapper->findBy(array("title" => $eventTitle)); if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if (!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } $count = 1; foreach($events as $event) { if($event->getRunning() == 0 && $event->getRepeat() == 1) { $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60); if($summertimeEnd) { if(!date('I', $evendTime)) { $evendTime = $evendTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $evendTime)) { $evendTime = $evendTime - 60 * 60; $summertimeEnd = 1; } } $eventEnd = date('Y-m-d H:i:s', $evendTime); $event->setPbs_poolID($poolID); if($count == 1) { $oldStartTime = date('H:i', strtotime($event->getStart())); $newStartTime = $oldStartTime; $oldEndTime = date('H:i', strtotime($event->getEnd())); $newEndTime = date('H:i', $evendTime); $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { if($event->getPbs_filterID()) { $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } } } $event->setEnd($eventEnd); try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } $count++; } $this->_redirect('/event/'); } else { $this->_redirect('/event/'); return; } } public function eventresizecfAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $cfevents = $this->getRequest()->getParam('cfevents'); $cfeventsJSON = Zend_Json::decode($cfevents); $evmindelta = $this->getRequest()->getParam('evmindelta'); $poolID = $this->getRequest()->getParam('poolID'); $events = null; if($cfeventsJSON!=null) { foreach($cfeventsJSON as $e) { $event = new Application_Model_Event($e); $event->setID($e['eventID']); $events[] = $event; } } $otherEvents = $this->eventMapper->getOtherRepeatEvents($events[0]->getTitle(), $eventIDs); foreach($otherEvents as $event) { $event->setRepeat(2); $filterquery = "bootmenuID=" . $event->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $event->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $event->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $event->setPbs_filterID($filterID); $startTime = date('H:i', strtotime($event->getStart())); if($event->getEnd()) { $endTime = date('H:i', strtotime($event->getEnd())); } else { $endTime = date('H:i', strtotime($event->getStart()) + 900); } $filterentriesquery1 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $event->getPbs_poolID(); $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); $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())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } if ($events!=null) { if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if (!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } // event resize to the past - check $count = 1; foreach($events as $event) { if($event->getRunning() == 0) { $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60); if($summertimeEnd) { if(!date('I', $evendTime)) { $evendTime = $evendTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $evendTime)) { $evendTime = $evendTime - 60 * 60; $summertimeEnd = 1; } } $eventEnd = date('Y-m-d H:i:s', $evendTime); $event->setPbs_poolID($poolID); if($count == 1) { $oldStartTime = date('H:i', strtotime($event->getStart())); $newStartTime = $oldStartTime; $oldEndTime = date('H:i', strtotime($event->getEnd())); $newEndTime = date('H:i', strtotime($event->getEnd())) + intval($evmindelta*60); $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; if($event->getCategory() != $shutdownCategory->getID()) { if($event->getPbs_filterID()) { $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie); unset($filterApiResult); } } } $event->setEnd($eventEnd); try { $this->eventMapper->save($event); //save the event with the new data } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } $count++; } $this->_redirect('/event/'); } else { $this->_redirect('/event/'); return; } } public function eventlistAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $poolID = $this->getRequest()->getParam('poolID'); $userIDsSession = new Zend_Session_Namespace('userIDs'); $userIDsSession->poolID = $poolID; if($this->acl->checkRight('eoo')) { $eventList = $this->eventMapper->fetchAll(); } else { $eventList = $this->eventMapper->findBy(array("pbs_membershipID", $this->userIDsNamespace['membershipID'])); } foreach ($eventList as $event){ if($event->getPbs_poolID() == $poolID) { if($event->getCategory() == 1){$color = 'green' AND $textColor = 'white' AND $category= 'Lecture';} else if ($event->getCategory() == 2){$color = 'yellow' AND $textColor = 'black' AND $category = 'Maintenance';} else if ($event->getCategory() == 3){$color = 'blue' AND $textColor = 'white' AND $category = 'Boot';} else if ($event->getCategory() == 4){$color = 'red' AND $textColor = 'white' AND $category = 'Shutdown';} $events[] = array( $events[] = array( 'id' => $event->getID(), 'title' => $event->getTitle(), 'start' => $event->getStart(), 'end' => $event->getEnd(), 'category' => $category, 'participants' => $event->getParticipants(), 'note' => $event->getNote(), 'poolID' => $event->getPbs_poolID(), 'bootosID' => $event->getPbs_bootosID(), 'allDay' => false, 'color' => $color, 'textColor' => $textColor, 'borderColor' => $color, 'selected' => false, 'repeat' => $event->getRepeat(), 'opacity' => 1, 'immediate' => $event->getImmediate(), 'running' => $event->getRunning(), ) ); } } echo json_encode($events); } public function checkrightAction() { $this->_helper->layout->disableLayout(); $rightShortcut = $this->_request->getParam("rightShortcut"); $this->view->right = $this->acl->checkRight($rightShortcut); } /* * ---------------------- * END CALENDAR FUNCTIONS * ---------------------- */ public function runAction() { if(!$this->acl->checkRight('er')) { header('HTTP/1.0 403 No Right to run events'); die(); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $lookbacktime = $this->config['event']['lookbacktime']; $startTime = time() - $lookbacktime * 60; $updatePeriod = $this->config['event']['updatePeriod']; $endTime = $startTime + $lookbacktime * 60 + $updatePeriod * 60; $eventlist = $this->eventMapper->fetchAll(); $result = $this->eventcategoryMapper->fetchAll(); foreach($result as $category) { $eventcategories[$category->getTitle()] = $category->getID(); } if(isset($this->userIDsNamespace['apikey'])) { $apikey = $this->userIDsNamespace['apikey']; } else { $apikey = $this->_request->getParam('apikey'); } $runningtypeMapper = new Application_Model_RunningtypeMapper(); $results = array(); foreach($eventlist as $event) { $run = false; $boot = false; $shutdown = false; $eventStart = strtotime($event->getStart()); $eventEnd = strtotime($event->getEnd()); if($event->getRunning()) { continue; } switch($event->getCategory()) { case $eventcategories['Boot']: if($eventStart >= $startTime && $eventStart <= $endTime) { $run = true; $boot = true; } break; case $eventcategories['Shutdown']: if($eventStart >= $startTime && $eventStart <= $endTime) { $run = true; $shutdown = true; } break; case $eventcategories['Lecture']: if($eventStart >= $startTime && $eventStart <= $endTime) { $run = true; $boot = true; } else if($eventEnd >= $startTime && $eventEnd <= $endTime) { $run = true; $shutdown = true; } break; case $eventcategories['Maintenance']: if($eventStart >= $startTime && $eventStart <= $endTime) { $run = true; $boot = true; } else if($eventEnd >= $startTime && $eventEnd <= $endTime) { $run = true; $shutdown = true; } break; } if($run) { $runningEvents = $this->eventMapper->findBy(array('pbs_poolID' => $event->getPbs_PoolID(), 'running' => 1)); if(count($runningEvents) > 0) { if($boot) { $newStart = date('Y-m-d H:i:s', $eventStart + $updatePeriod * 60); $event->setStart($newStart); } if($shutdown) { $newEnd = date('Y-m-d H:i:s', $eventEnd + $updatePeriod * 60); $event->setEnd($newEnd); } try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } continue; } $data = array( 'eventName' => $event->getTitle(), ); $poolRequest = "poolid=" . $event->getPbs_poolID(); $this->config['pbs2']['getpools']; $poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $poolRequest); $poolXMLString = $poolApiResult['http-body']; $clients = array(); if(strlen($poolXMLString) > 0) { $poolXML = new SimpleXMLElement($poolXMLString); foreach($poolXML->poollist->pool as $pool) { $clientsXML = $pool->clients; $count = 1; foreach($clientsXML->client as $clientNew) { $participants = $event->getParticipants(); if(!isset($participants) || ($participants > 0 && $event->getParticipants() >= $count)) { $client = new Application_Model_Client(); $client->setID(sprintf("%s", $clientNew->clientID)); $client->setCreated(sprintf("%s", $clientNew->created)); $client->setGroupID(sprintf("%s", $clientNew->groupid)); $client->setHardwarehash(sprintf("%s", $clientNew->location)); $client->setIp(sprintf("%s", $clientNew->ip)); $client->setIp6(sprintf("%s", $clientNew->ip6)); $client->setMacadress(sprintf("%s", $clientNew->macadress)); $clientArray = array( 'id' => $client->getID(), 'ip' => $client->getIp(), 'mac' => $client->getMacadress()); $clients[] = $clientArray; $count++; } else { break; } } } } $data['clients'] = $clients; if($boot) { $bootOsRequest = "bootosid=" . $event->getPbs_bootosID(); $bootOsApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getbootoss'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootOsRequest); $bootOsXMLString = $bootOsApiResult['http-body']; if(strlen($bootOsXMLString) > 0) { $bootOsXML = new SimpleXMLElement($bootOsXMLString); foreach($bootOsXML->bootoslist->bootos as $bootosNew) { $bootos = new Application_Model_BootOs(); $bootos->setID(sprintf("%s", $bootosNew->id)); $bootos->setCreated(sprintf("%s", $bootosNew->created)); $bootos->setDefaultkcl(sprintf("%s", $bootosNew->defaultkcl)); $bootos->setDescription(sprintf("%s", $bootosNew->description)); $bootos->setDistro(sprintf("%s", $bootosNew->distro)); $bootos->setDistroversion(sprintf("%s", $bootosNew->distroversion)); $bootos->setExpires(sprintf("%s", $bootosNew->expires)); $bootos->setGroupID(sprintf("%s", $bootosNew->groupid)); $bootos->setMembershipID(sprintf("%s", $bootosNew->membershipid)); $bootos->setPublic(sprintf("%s", $bootosNew->public)); $bootos->setShare(sprintf("%s", $bootosNew->share)); $bootos->setShortname(sprintf("%s", $bootosNew->shortname)); $bootos->setSource(sprintf("%s", $bootosNew->source)); $bootos->setTitle(sprintf("%s", $bootosNew->title)); } $data['eventOS'] = $bootos->getDistro() . " " . $bootos->getDistroversion(); } $dataString = json_encode($data); $result = $this->gearmanClient->do("boot", $dataString, 'boot' . $event->getTitle()); if (! $this->gearmanClient->runTasks()) { echo "ERROR " . $gmc->error() . "\n"; exit; } $results[$event->getTitle()] = $result; $result = $runningtypeMapper->findBy(array("title" => "boot")); $runningtypeBoot = $result[0]; $event->setRunning(1); $event->setRunningtype($runningtypeBoot->getID()); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } else if($shutdown) { $dataString = json_encode($data); $result = $this->gearmanClient->do("shutdown", $dataString, 'shutdown' . $event->getTitle()); if (! $this->gearmanClient->runTasks()) { echo "ERROR " . $gmc->error() . "\n"; exit; } $results[$event->getTitle()] = $result; $result = $runningtypeMapper->findBy(array("title" => "shutdown")); $runningtypeShutdown = $result[0]; $event->setRunning(1); $event->setRunningtype($runningtypeShutdown->getID()); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } } if(count($results) <= 0) { $results = array("No current events to run available"); } $resultString = json_encode($results); header('Content-Type: application/json'); header('Content-Disposition: inline; filename="result.json"'); header('Pragma: no-cache'); header('Expires: 0'); echo $resultString; } public function reportAction() { if(!$this->acl->checkRight('er')) { header('HTTP/1.0 403 No Right to run events'); die(); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $eventreportMapper = new Application_Model_EventreportMapper(); $runningtypeMapper = new Application_Model_RunningtypeMapper(); $eventBootNames = array(); $eventShutdownNames = array(); $results = array(); $result1 = $runningtypeMapper->findBy(array("title" => "boot")); $result2 = $runningtypeMapper->findBy(array("title" => "shutdown")); $runningtypeBoot = $result1[0]; $runningtypeShutdown = $result2[0]; $resultShortcutName = 'result shortcut'; $errorsName = 'clients errors'; $events = $this->eventMapper->findBy(array('running' => 1)); foreach($events as $event) { if($event->getRunningtype() == $runningtypeBoot->getID()) { $eventBootNames[] = $event->getTitle(); } else if($event->getRunningtype() == $runningtypeShutdown->getID()) { $eventShutdownNames[] = $event->getTitle(); } } if(count($eventBootNames) > 0) { $data = array( 'type' => 'getBootState', 'events' => $eventBootNames, ); $dataString = json_encode($data); $bootResult = $this->gearmanClient->do("status", $dataString, 'bootStatus'); if (! $this->gearmanClient->runTasks()) { echo "ERROR " . $gmc->error() . "\n"; exit; } $bootResultDecode = json_decode($bootResult); $results['boot results'] = $bootResultDecode; if(count($bootResultDecode) > 0) { foreach($bootResultDecode as $k => $eventResult) { $eventResult->$resultShortcutName = sprintf('%s', $eventResult->$resultShortcutName); if($eventResult->$resultShortcutName == "not finished") { continue; } else if($eventResult->$resultShortcutName == 'not founded') { $event->setRunning(0); $event->setRunningtype(null); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } continue; } $result = $this->eventMapper->findBy(array("title" => $k)); $event = $result[0]; $eventreport = new Application_Model_Eventreport(); $eventreport->setEventID($event->getID()); $eventreport->setResult($eventResult->$resultShortcutName); $eventreport->setCreated(time()); if($eventResult->$resultShortcutName == "failed") { $eventreport->setErrors(json_encode($eventResult->$errorsName)); $event->setRunning(3); } else { $event->setRunning(2); } $eventreport->setType($runningtypeBoot->getID()); try { $eventreportMapper->save($eventreport); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } if($event->getEnd()) { $event->setRunning(0); } $event->setRunningtype(null); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } } if(count($eventShutdownNames) > 0) { $data = array( 'type' => 'getShutdownState', 'events' => $eventShutdownNames, ); $dataString = json_encode($data); $shutdownResult = $this->gearmanClient->do("status", $dataString, 'shutdownStatus'); if (! $this->gearmanClient->runTasks()) { echo "ERROR " . $gmc->error() . "\n"; exit; } $shutdownResultDecode = json_decode($shutdownResult); $results['shutdown results'] = $shutdownResultDecode; foreach($shutdownResultDecode as $k => $eventResult) { $eventResult->$resultShortcutName = sprintf('%s', $eventResult->$resultShortcutName); if($eventResult->$resultShortcutName == "not finished") { continue; } else if($eventResult->$resultShortcutName == 'not founded') { $event->setRunning(0); $event->setRunningtype(null); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } continue; } $result = $this->eventMapper->findBy(array("title" => $k)); $event = $result[0]; $eventreport = new Application_Model_Eventreport(); $eventreport->setEventID($event->getID()); $eventreport->setResult($eventResult->$resultShortcutName); $eventreport->setCreated(time()); if($eventResult->$resultShortcutName == "failed") { $eventreport->setErrors(json_encode($eventResult->$errorsName)); $event->setRunning(3); } else { $event->setRunning(2); } $eventreport->setType($runningtypeShutdown->getID()); try { $eventreportMapper->save($eventreport); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $event->setRunningtype(null); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } if(count($results) <= 0) { $results = array("No current events to report available"); } $resultString = json_encode($results); header('Content-Type: application/json'); header('Content-Disposition: inline; filename="result.json"'); header('Pragma: no-cache'); header('Expires: 0'); echo $resultString; } public function showreportsAction() { if(!$this->acl->checkRight('er')) { header('HTTP/1.0 403 No Right to run events'); die(); } $eventID = $this->_request->getParam("eventID"); if($eventID) { $event = new Application_Model_Event(); $this->eventMapper->find($eventID, $event); $eventreportMapper = new Application_Model_EventreportMapper(); $reportlist = $eventreportMapper->findBy(array("eventID" => $eventID), false, array('created' => 'DESC')); $runningtypeMapper = new Application_Model_RunningtypeMapper(); $runningtypes = array(); $result = $runningtypeMapper->fetchAll(); if(count($result) > 0) { foreach($result as $type) { $runningtypes[$type->getID()] = $type->getTitle(); } } for($i = 0; $i < count($reportlist); $i++) { $reportType = $runningtypes[$reportlist[$i]->getType()]; $reportlist[$i]->setType($reportType); } $clientRequest = "poolid=" . $event->getPbs_poolID(); $clientApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getclient'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $clientRequest); $clientXMLString = $clientApiResult['http-body']; if(strlen($clientXMLString) > 0) { $clientXML = new SimpleXMLElement($clientXMLString); foreach($clientXML->clientlist->client as $clientNew) { $client = new Application_Model_Client(); $client->setID(sprintf("%s", $clientNew->clientID)); $client->setCreated(sprintf("%s", $clientNew->created)); $client->setGroupID(sprintf("%s", $clientNew->groupid)); $client->setHardwarehash(sprintf("%s", $clientNew->location)); $client->setIp(sprintf("%s", $clientNew->ip)); $client->setIp6(sprintf("%s", $clientNew->ip6)); $client->setMacadress(sprintf("%s", $clientNew->macadress)); $clients[$client->getID()] = $client; } } $this->view->eventTitle = $event->getTitle(); $this->view->clients = $clients; $this->view->reportlist = $reportlist; // Pagination $pagination = new Poolctrl_Pagination(); $pagination->setPerPage(5); $pagination->setElement($this->view->reportlist); $pagination->setRequestPage($this->_request->getParam('page')); $pagination->setPageUrl('/event/showreports/eventID/' . $eventID); $this->view->reportlist = $pagination->getElements(); $this->view->pagination = $pagination->pagination(); } else { $this->_redirect('/event/'); exit; } } public function deletereportAction() { if(!$this->acl->checkRight('er')) { $this->_redirect('/'); } $this->_helper->viewRenderer->setNoRender(); $reportID = $this->_request->getParam('reportID'); if(isset($reportID)) { $eventreportMapper = new Application_Model_EventreportMapper(); $report = new Application_Model_Eventreport(); $eventreportMapper->find($reportID, $report); $eventID = $report->getEventID(); try { $eventreportMapper->delete($report); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect('/event/showreports/eventID/' . $eventID); } else { $this->_redirect('/event/'); exit; } } private function runEvent(Application_Model_Event $event, $apikey) { $data = array( 'eventName' => $event->getTitle(), ); if($event->getForce()) { $data['force'] = true; } else { $data['force'] = false; } $poolRequest = "poolid=" . $event->getPbs_poolID(); $this->config['pbs2']['getpools']; $poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $poolRequest); $poolXMLString = $poolApiResult['http-body']; if(strlen($poolXMLString) > 0) { $poolXML = new SimpleXMLElement($poolXMLString); foreach($poolXML->poollist->pool as $pool) { $clientsXML = $pool->clients; $count = 1; foreach($clientsXML->client as $clientNew) { if($event->getImmediate() || ($event->getParticipants() > 0 && $event->getParticipants() > $count)) { $client = new Application_Model_Client(); $client->setID(sprintf("%s", $clientNew->clientID)); $client->setCreated(sprintf("%s", $clientNew->created)); $client->setGroupID(sprintf("%s", $clientNew->groupid)); $client->setHardwarehash(sprintf("%s", $clientNew->location)); $client->setIp(sprintf("%s", $clientNew->ip)); $client->setIp6(sprintf("%s", $clientNew->ip6)); $client->setMacadress(sprintf("%s", $clientNew->macadress)); $clientArray = array( 'id' => $client->getID(), 'ip' => $client->getIp(), 'mac' => $client->getMacadress()); $clients[] = $clientArray; $count++; } else { break; } } } } $data['clients'] = $clients; $result = $this->eventcategoryMapper->fetchAll(); foreach($result as $category) { $eventcategories[$category->getTitle()] = $category->getID(); } $boot = false; $shutdown = false; switch($event->getCategory()) { case $eventcategories['Boot']: $boot = true; break; case $eventcategories['Shutdown']: $shutdown = true; break; } $runningEvents = $this->eventMapper->findBy(array('pbs_poolID' => $event->getPbs_PoolID(), 'running' => 1)); if(count($runningEvents) > 1) { $updatePeriod = $this->config['event']['updatePeriod']; if($boot) { $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $updatePeriod * 60); $event->setStart($newStart); } if($shutdown) { $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $updatePeriod * 60); $event->setEnd($newEnd); } try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } return; } $runningtypeMapper = new Application_Model_RunningtypeMapper(); if($boot) { $bootOsRequest = "bootosid=" . $event->getPbs_bootosID(); $bootOsApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getbootoss'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootOsRequest); $bootOsXMLString = $bootOsApiResult['http-body']; if(strlen($bootOsXMLString) > 0) { $bootOsXML = new SimpleXMLElement($bootOsXMLString); foreach($bootOsXML->bootoslist->bootos as $bootosNew) { $bootos = new Application_Model_BootOs(); $bootos->setID(sprintf("%s", $bootosNew->id)); $bootos->setCreated(sprintf("%s", $bootosNew->created)); $bootos->setDefaultkcl(sprintf("%s", $bootosNew->defaultkcl)); $bootos->setDescription(sprintf("%s", $bootosNew->description)); $bootos->setDistro(sprintf("%s", $bootosNew->distro)); $bootos->setDistroversion(sprintf("%s", $bootosNew->distroversion)); $bootos->setExpires(sprintf("%s", $bootosNew->expires)); $bootos->setGroupID(sprintf("%s", $bootosNew->groupid)); $bootos->setMembershipID(sprintf("%s", $bootosNew->membershipid)); $bootos->setPublic(sprintf("%s", $bootosNew->public)); $bootos->setShare(sprintf("%s", $bootosNew->share)); $bootos->setShortname(sprintf("%s", $bootosNew->shortname)); $bootos->setSource(sprintf("%s", $bootosNew->source)); $bootos->setTitle(sprintf("%s", $bootosNew->title)); } $data['eventOS'] = $bootos->getDistro() . " " . $bootos->getDistroversion(); } $dataString = json_encode($data); $result = $this->gearmanClient->do("boot", $dataString, 'boot' . $event->getTitle()); if (! $this->gearmanClient->runTasks()) { echo "ERROR " . $gmc->error() . "\n"; exit; } $results[$event->getTitle()] = $result; $result = $runningtypeMapper->findBy(array("title" => "boot")); $runningtypeBoot = $result[0]; $event->setRunning(1); $event->setRunningtype($runningtypeBoot->getID()); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } else if($shutdown) { $dataString = json_encode($data); $result = $this->gearmanClient->do("shutdown", $dataString, 'shutdown' . $event->getTitle()); if (! $this->gearmanClient->runTasks()) { echo "ERROR " . $gmc->error() . "\n"; exit; } $results[$event->getTitle()] = $result; $result = $runningtypeMapper->findBy(array("title" => "shutdown")); $runningtypeShutdown = $result[0]; $event->setRunning(1); $event->setRunningtype($runningtypeShutdown->getID()); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } private function repeatEvent(Application_Model_Event $event) { $events[0] = $event; $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattype = new Application_Model_Repeattype(); $repeattypeMapper->find($event->getRepeattype(), $repeattype); $repeatendMapper = new Application_Model_RepeatendMapper(); $repeatend = new Application_Model_Repeatend(); $repeatendMapper->find($event->getRepeatend(), $repeatend); $summertimeStart = intval(date('I', strtotime($event->getStart()))); if($event->getEnd()) { $summertimeEnd = intval(date('I', strtotime($event->getEnd()))); } $newEvent = clone $event; $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())); } $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; switch($repeattype->getTitle()) { case 'Daily': if($newEvent->getCategory() != $shutdownCategory->getID()) { $filterentriesquery3 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } $onedaytime = 24 * 60 * 60; $newStartTime = strtotime($newEvent->getStart()) + $onedaytime; if($newEvent->getEnd()) { $newEndTime = strtotime($newEvent->getEnd()) + $onedaytime; } if($repeatend->getTitle() == 'After') { $repeatings = intval($newEvent->getRepeatings()); for($i = 0; $i < $repeatings; $i++) { if($summertimeStart) { if(!date('I', $newStartTime)) { $newStartTime = $newStartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $newStartTime)) { $newStartTime = $newStartTime - 60 * 60; $summertimeStart = 1; } } $newEvent->setStart(date('Y-m-d H:i', $newStartTime)); $newStartTime = $newStartTime + $onedaytime; if(isset($newEndTime)) { if($summertimeEnd) { if(!date('I', $newEndTime)) { $newEndTime = $newEndTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $newEndTime)) { $newEndTime = $newEndTime - 60 * 60; $summertimeEnd = 1; } } $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $onedaytime; } $events[$i + 1] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($newEvent->getEnd())); } else { $endDate = date('d.m.Y', strtotime($newEvent->getStart())); } $filterentriesquery = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery); $filterentriesXMLString = $filterentriesApiResult['http-body']; $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)) { $newStartTime = $newStartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $newStartTime)) { $newStartTime = $newStartTime - 60 * 60; $summertimeStart = 1; } } $newEvent->setStart(date('Y-m-d H:i', $newStartTime)); $newStartTime = $newStartTime + $onedaytime; if(isset($newEndTime)) { if($summertimeEnd) { if(!date('I', $newEndTime)) { $newEndTime = $newEndTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $newEndTime)) { $newEndTime = $newEndTime - 60 * 60; $summertimeEnd = 1; } } $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $onedaytime; } $events[$i] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($newEvent->getEnd())); } else { $endDate = date('d.m.Y', strtotime($newEvent->getStart())); } $filterentriesquery = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery); $filterentriesXMLString = $filterentriesApiResult['http-body']; $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } $newEvent = clone $newEvent; $i++; } } break; case 'Once a week': if($newEvent->getCategory() != $shutdownCategory->getID()) { $weekday = date('N', strtotime($newEvent->getStart())); $filterentriesquery3 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=10&filtervalue=" . $weekday . "&filtervalue2=" . $weekday; $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } $oneweektime = 7 * 24 * 60 * 60; $newStartTime = strtotime($newEvent->getStart()) + $oneweektime; if($newEvent->getEnd()) { $newEndTime = strtotime($newEvent->getEnd()) + $oneweektime; } if($repeatend->getTitle() == 'After') { $repeatings = intval($newEvent->getRepeatings()); for($i = 0; $i < $repeatings; $i++) { if($summertimeStart) { if(!date('I', $newStartTime)) { $newStartTime = $newStartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $newStartTime)) { $newStartTime = $newStartTime - 60 * 60; $summertimeStart = 1; } } $newEvent->setStart(date('Y-m-d H:i', $newStartTime)); $newStartTime = $newStartTime + $oneweektime; if(isset($newEndTime)) { if($summertimeEnd) { if(!date('I', $newEndTime)) { $newEndTime = $newEndTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $newEndTime)) { $newEndTime = $newEndTime - 60 * 60; $summertimeEnd = 1; } } $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $oneweektime; } $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)) { $newStartTime = $newStartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $newStartTime)) { $newStartTime = $newStartTime - 60 * 60; $summertimeStart = 1; } } $newEvent->setStart(date('Y-m-d H:i', $newStartTime)); $newStartTime = $newStartTime + $oneweektime; if(isset($newEndTime)) { if($summertimeEnd) { if(!date('I', $newEndTime)) { $newEndTime = $newEndTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $newEndTime)) { $newEndTime = $newEndTime - 60 * 60; $summertimeEnd = 1; } } $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $oneweektime; } $events[$i] = $newEvent; $newEvent = clone $newEvent; $i++; } } break; case 'Every couple of weeks': if($newEvent->getCategory() != $shutdownCategory->getID()) { $filterentriesquery3 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } $twoweekstime = 14 * 24 * 60 * 60; $newStartTime = strtotime($newEvent->getStart()) + $twoweekstime; if($newEvent->getEnd()) { $newEndTime = strtotime($newEvent->getEnd()) + $twoweekstime; } if($repeatend->getTitle() == 'After') { $repeatings = intval($newEvent->getRepeatings()); for($i = 0; $i < $repeatings; $i++) { if($summertimeStart) { if(!date('I', $newStartTime)) { $newStartTime = $newStartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $newStartTime)) { $newStartTime = $newStartTime - 60 * 60; $summertimeStart = 1; } } $newEvent->setStart(date('Y-m-d H:i', $newStartTime)); $newStartTime = $newStartTime + $twoweekstime; if(isset($newEndTime)) { if($summertimeEnd) { if(!date('I', $newEndTime)) { $newEndTime = $newEndTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $newEndTime)) { $newEndTime = $newEndTime - 60 * 60; $summertimeEnd = 1; } } $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $twoweekstime; } $events[$i + 1] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($newEvent->getEnd())); } else { $endDate = date('d.m.Y', strtotime($newEvent->getStart())); } $filterentriesquery = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery); $filterentriesXMLString = $filterentriesApiResult['http-body']; $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)) { $newStartTime = $newStartTime + 60 * 60; $summertimeStart = 0; } } else { if(date('I', $newStartTime)) { $newStartTime = $newStartTime - 60 * 60; $summertimeStart = 1; } } $newEvent->setStart(date('Y-m-d H:i', $newStartTime)); $newStartTime = $newStartTime + $twoweekstime; if(isset($newEndTime)) { if($summertimeEnd) { if(!date('I', $newEndTime)) { $newEndTime = $newEndTime + 60 * 60; $summertimeEnd = 0; } } else { if(date('I', $newEndTime)) { $newEndTime = $newEndTime - 60 * 60; $summertimeEnd = 1; } } $newEvent->setEnd(date('Y-m-d H:i', $newEndTime)); $newEndTime = $newEndTime + $twoweekstime; } $events[$i] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($newEvent->getEnd())); } else { $endDate = date('d.m.Y', strtotime($newEvent->getStart())); } $filterentriesquery = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery); $filterentriesXMLString = $filterentriesApiResult['http-body']; $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } $newEvent = clone $newEvent; $i++; } } break; case 'Every month': if($newEvent->getCategory() != $shutdownCategory->getID()) { $filterentriesquery3 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } $startMonth = date('m', strtotime($newEvent->getStart())) + 1; $startDay = date('d', strtotime($newEvent->getStart())); $startYear = date('Y', strtotime($newEvent->getStart())); if($startMonth == 13) { $startMonth = 1; $startYear++; } while(!checkdate($startMonth, $startDay, $startYear)) { $startMonth++; if($repeatend->getTitle() == 'After') { $newEvent->setRepeatings($newEvent->getRepeatings() - 1); } if($startMonth == 13) { $startMonth = 1; $startYear++; } } $newStartDate = $startYear . "-" . $startMonth . "-" . $startDay . " " . date('H:i', strtotime($newEvent->getStart())); $newStartTime = strtotime($newStartDate); if($newEvent->getEnd()) { $endMonth = date('m', strtotime($newEvent->getEnd())) + 1; $endDay = date('d', strtotime($newEvent->getEnd())); $endYear = date('Y', strtotime($newEvent->getEnd())); if($endMonth == 13) { $endMonth = 1; $endYear++; } while(!checkdate($endMonth, $endDay, $endYear)) { $endMonth++; if($endMonth == 13) { $endMonth = 1; $endYear++; } } $newEndDate = $endYear . "-" . $endMonth . "-" . $endDay . " " . date('H:i', strtotime($newEvent->getEnd())); $newEndTime = strtotime($newEndDate); } if($repeatend->getTitle() == 'After') { $repeatings = intval($newEvent->getRepeatings()); for($i = 0; $i < $repeatings; $i++) { $newEvent->setStart($newStartDate); $startMonth = date('m', $newStartTime) + 1; $startDay = date('d', $newStartTime); $startYear = date('Y', $newStartTime); if($startMonth == 13) { $startMonth = 1; $startYear++; } while(!checkdate($startMonth, $startDay, $startYear)) { $startMonth++; $i++; if($startMonth == 13) { $startMonth = 1; $startYear++; } } $newStartDate = $startYear . "-" . $startMonth . "-" . $startDay . " " . date('H:i', $newStartTime); $newStartTime = strtotime($newStartDate); if($newEvent->getEnd()) { $newEvent->setEnd($newEndDate); $endMonth = date('m', $newEndTime) + 1; $endDay = date('d', $newEndTime); $endYear = date('Y', $newEndTime); if($endMonth == 13) { $endMonth = 1; $endYear++; } while(!checkdate($endMonth, $endDay, $endYear)) { $endMonth++; if($endMonth == 13) { $endMonth = 1; $endYear++; } } $newEndDate = $endYear . "-" . $endMonth . "-" . $endDay . " " . date('H:i', $newEndTime); $newEndTime = strtotime($newEndDate); } $events[$i + 1] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($newEvent->getEnd())); } else { $endDate = date('d.m.Y', strtotime($newEvent->getStart())); } $filterentriesquery = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery); $filterentriesXMLString = $filterentriesApiResult['http-body']; $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); $startMonth = date('m', $newStartTime) + 1; $startDay = date('d', $newStartTime); $startYear = date('Y', $newStartTime); if($startMonth == 13) { $startMonth = 1; $startYear++; } while(!checkdate($startMonth, $startDay, $startYear)) { $startMonth++; if($startMonth == 13) { $startMonth = 1; $startYear++; } } $newStartDate = $startYear . "-" . $startMonth . "-" . $startDay . " " . date('H:i', $newStartTime); $newStartTime = strtotime($newStartDate); if($newEvent->getEnd()) { $newEvent->setEnd($newEndDate); $endMonth = date('m', $newEndTime) + 1; $endDay = date('d', $newEndTime); $endYear = date('Y', $newEndTime); if($endMonth == 13) { $endMonth = 1; $endYear++; } while(!checkdate($endMonth, $endDay, $endYear)) { $endMonth++; if($endMonth == 13) { $endMonth = 1; $endYear++; } } $newEndDate = $endYear . "-" . $endMonth . "-" . $endDay . " " . date('H:i', $newEndTime); $newEndTime = strtotime($newEndDate); } $events[$i] = $newEvent; if($newEvent->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($newEvent->getEnd())); } else { $endDate = date('d.m.Y', strtotime($newEvent->getStart())); } $filterentriesquery = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery); $filterentriesXMLString = $filterentriesApiResult['http-body']; $filterentriesXML = new SimpleXMLElement($filterentriesXMLString); $filterentriesID = sprintf("%s", $filterentriesXML->filterentry->id); } $newEvent = clone $newEvent; $i++; } } break; } $overlapping = 0; $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 = 1; 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; $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown')); $shutdownCategory = $result[0]; $repeattypeMapper = new Application_Model_RepeattypeMapper(); $repeattype = new Application_Model_Repeattype(); $repeattypeMapper->find($newEvent->getRepeattype(), $repeattype); $diff = $this->eventMapper->compare($newEvent, $oldEvent); if(isset($diff['start']) || isset($diff['end'])) { if(isset($diff['start'])) { $diffStart = intval(strtotime($newEvent->getStart())) - intval(strtotime($oldEvent->getStart())); unset($diff['start']); } if(isset($diff['end'])) { $diffEnd = intval(strtotime($newEvent->getEnd())) - intval(strtotime($oldEvent->getEnd())); unset($diff['end']); } $events = $this->eventMapper->findBy(array('poolctrl_event.repeat' => 1, 'title' => $oldEvent->getTitle())); if(count($events) > 0) { 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); } } 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); } } 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); } } } } 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) { if($newEvent->getCategory() != $shutdownCategory->getID()) { if(isset($diff['pbs_bootosID']) || isset($diff['title']) || isset($diff['pbs_configID'])) { $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $oldEvent->getPbs_bootmenuID()); unset($bootmenuApiResult); $bootmenuquery = "bootosID=" . $newEvent->getPbs_bootosID() . "&startcounter=0&title=Poolctrl-Bootmenu for " . $newEvent->getTitle() . "&defaultbootmenu=0&order=0&kcl=0"; if($newEvent->getPbs_configID()) { $bootmenuquery .= "&configID=" . $newEvent->getPbs_configID(); } $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addbootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootmenuquery); $bootmenuXMLString = $bootmenuApiResult['http-body']; $bootmenuXML = new SimpleXMLElement($bootmenuXMLString); $bootmenuID = sprintf("%s", $bootmenuXML->bootmenu->id); $newEvent->setPbs_bootmenuID($bootmenuID); $filterQuerie = "filterid=" . $newEvent->getPbs_filterID() . "&bootmenuID = " . $bootmenuID; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterQuerie); unset($filterApiResult); } $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $oldEvent->getPbs_filterID()); unset($filterApiResult); $filterquery = "bootmenuID=" . $newEvent->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $newEvent->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $newEvent->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $newEvent->setPbs_filterID($filterID); $filterentriesquery1 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $newEvent->getPbs_poolID(); $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $startTime = date('H:i', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endTime = date('H:i', strtotime($newEvent->getEnd())); } else { $endTime = date('H:i', strtotime($newEvent->getStart()) + 900); } $filterentriesquery2 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); if($repeattype == "Once a week") { $weekday = date('N', strtotime($diff['start'])); $filterentriesquery3 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=10&filtervalue=" . $weekday . "&filtervalue2=" . $weekday; $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID = sprintf("%s", $filterentriesXML1->filterentry->id); } } foreach($events as $event) { try { if($repeattype != "Once a week" && $event->getCategory() != $shutdownCategory->getID()) { $startDate = date('d.m.Y', strtotime($event->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($event->getEnd())); } else { $endDate = date('d.m.Y', strtotime($event->getStart())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } } } else { if($newEvent->getCategory() != $shutdownCategory->getID()) { if(isset($diff['pbs_bootosID']) || isset($diff['title']) || isset($diff['pbs_configID'])) { $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $oldEvent->getPbs_bootmenuID()); unset($bootmenuApiResult); $bootmenuquery = "bootosID=" . $newEvent->getPbs_bootosID() . "&startcounter=0&title=Poolctrl-Bootmenu for " . $newEvent->getTitle() . "&defaultbootmenu=0&order=0&kcl=0"; if($newEvent->getPbs_configID()) { $bootmenuquery .= "&configID=" . $newEvent->getPbs_configID(); } $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addbootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootmenuquery); $bootmenuXMLString = $bootmenuApiResult['http-body']; $bootmenuXML = new SimpleXMLElement($bootmenuXMLString); $bootmenuID = sprintf("%s", $bootmenuXML->bootmenu->id); $newEvent->setPbs_bootmenuID($bootmenuID); $filterQuerie = "filterid=" . $newEvent->getPbs_filterID() . "&bootmenuID = " . $bootmenuID; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterQuerie); unset($filterApiResult); } if(isset($diff['pbs_poolID'])) { if(isset($params['wdh']) || !$oldEvent->getRepeat()) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "filterid=" . $oldEvent->getPbs_filterID()); unset($filterApiResult); } $filterquery = "bootmenuID=" . $newEvent->getPbs_bootmenuID() . "&title=Poolctrl-Filter for " . $newEvent->getTitle() . "&description=This Filter was automatically created by the Poolctrl for Event " . $newEvent->getTitle() . "&created= " . time() . "&priority=100"; $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['addfilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterquery); $filterXMLString = $filterApiResult['http-body']; $filterXML = new SimpleXMLElement($filterXMLString); $filterID = sprintf("%s", $filterXML->filter->id); $newEvent->setPbs_filterID($filterID); $filterentriesquery1 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=3&filtervalue=" . $newEvent->getPbs_poolID(); $filterentriesApiResult1 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery1); $filterentriesXMLString1 = $filterentriesApiResult1['http-body']; $filterentriesXML1 = new SimpleXMLElement($filterentriesXMLString1); $filterentriesID1 = sprintf("%s", $filterentriesXML1->filterentry->id); $startTime = date('H:i', strtotime($newEvent->getStart())); if($newEvent->getEnd()) { $endTime = date('H:i', strtotime($newEvent->getEnd())); } else { $endTime = date('H:i', strtotime($newEvent->getStart()) + 900); } $filterentriesquery2 = "filterID=" . $newEvent->getPbs_filterID() . "&filtertypeID=7&filtervalue=" . $startTime . "&filtervalue2=" . $endTime; $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2); $filterentriesXMLString2 = $filterentriesApiResult2['http-body']; $filterentriesXML2 = new SimpleXMLElement($filterentriesXMLString2); $filterentriesID2 = sprintf("%s", $filterentriesXML2->filterentry->id); } } $events = $this->eventMapper->findBy(array('poolctrl_event.repeat' => $oldEvent->getRepeat(), 'title' => $oldEvent->getTitle())); try { foreach($events as $event) { $event->setOptions($diff); if($event->getCategory() != $shutdownCategory->getID() && isset($diff['pbs_poolID'])) { $startDate = date('d.m.Y', strtotime($event->getStart())); if($newEvent->getEnd()) { $endDate = date('d.m.Y', strtotime($event->getEnd())); } else { $endDate = date('d.m.Y', strtotime($event->getStart())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate); $filterentriesApiResult3 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery3); $filterentriesXMLString3 = $filterentriesApiResult3['http-body']; $filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3); $filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id); } $this->eventMapper->save($event); } } catch (Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; } } return $overlapping; } }