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 != ""){ $bootstrap = $this->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(); $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()) { $bootstrap = $this->getInvokeArg('bootstrap'); $this->config = $bootstrap->getOptions(); $this->pbs2host = $this->config['pbs2']['host']; $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->eventMapper = new Application_Model_EventMapper(); $this->eventcategoryMapper = new Application_Model_EventcategoryMapper(); } else { $this->_helper->redirector('selectmembership', 'person'); return; } } else { $this->_helper->redirector('login', 'auth'); return; } } public function indexAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } if($this->acl->checkRight('eoo')) { $events = $this->eventMapper->fetchAll(); } else { $events = $this->eventMapper->findBy(array("pbs_membershipID", $this->userIDsNamespace['membershipID'])); } if(count($events) > 0) { $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; } } $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; } } foreach($events as $eventObj) { $event = $eventObj->toArray(); $bootos = new Application_Model_BootOs(); $event['pbs_bootos_title'] = $bootoslist[$event['pbs_bootosID']]->getTitle(); if($event['pbs_membershipID'] == $this->userIDsNamespace['membershipID']) { foreach(Zend_Session::namespaceGet('persons') as $person) { if($person->getID() == $this->userIDsNamespace['personID']) { break; } } } else { foreach(Zend_Session::namespaceGet('memberships') as $membership) { if($membership->getID() == $event['pbs_membershipID']) { break; } } $person = null; foreach(Zend_Session::namespaceGet('persons') as $sessionPerson) { if($sessionPerson->getID() == $membership->getPersonID()) { $person = $sessionPerson; break; } } if($person == null) { $personApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getperson'] . $membership->getApikey(), 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', ''); $personXMLString = $personApiResult['http-body']; if(strlen($personXMLString) > 0) { $personXML = new SimpleXMLElement($personXMLString); $person = new Application_Model_Person(); $person->setID(sprintf("%s", $personXML->person->id)); $person->setCity(sprintf("%s", $personXML->person->city)); $person->setEmail(sprintf("%s", $personXML->person->email)); $person->setFirstname(sprintf("%s", $personXML->person->firstname)); $person->setHousenumber(sprintf("%s", $personXML->person->housenumber)); $person->setLogin(sprintf("%s", $personXML->person->login)); $person->setLogindate(sprintf("%s", $personXML->person->logindate)); $person->setName(sprintf("%s", $personXML->person->name)); $person->setPostalcode(sprintf("%s", $personXML->person->postalcode)); $person->setRegisterdate(sprintf("%s", $personXML->person->registerdate)); $person->setStreet(sprintf("%s", $personXML->person->street)); $person->setSuspend(sprintf("%s", $personXML->person->suspend)); $person->setTitle(sprintf("%s", $personXML->person->title)); $personSession = new Zend_Session_Namespace('persons'); $personID = $person->getID(); $personSession->$personID = $person; } } } $event['pbs_person_name'] = $person->getFirstname() . " " . $person->getName(); $eventcategory = new Application_Model_Eventcategory(); $this->eventcategoryMapper->find($event['category'], $eventcategory); $event['category'] = $eventcategory->getTitle(); $eventlist[$event['pbs_poolID']][] = $event; } } $params = $this->getRequest()->getParams(); $this->view->params = $params; $this->view->eventlist = $eventlist; $this->view->poollist = $poollist; } public function addAction() { if(!$this->acl->checkRight('ec')) { $this->_redirect('/'); } $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; } } $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; } } $add = $this->getRequest()->getParam("add"); if($this->getRequest()->getParam('start')) { $start = date ('m/d/Y H:i', strtotime($this->getRequest()->getParam('start'))); } else if($this->getRequest()->getParam('evstart')) { $start = date ('m/d/Y H:i', 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', strtotime($this->getRequest()->getParam('end'))); } else if($this->getRequest()->getParam('evend')) { $end = date ('m/d/Y H:i', 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; } } $addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist, 'start' => $start, 'end' => $end, 'defaultEventCategoryID' => $defaultEventCategoryID)); } else { $addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist, 'start' => $start, 'end' => $end, $this->getRequest()->getParams())); if ($addForm->isValid($this->getRequest()->getParams())) { $params = $this->getRequest()->getParams(); 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($this->getRequest()->getParam('start'))); if($params['end']) { $params['end'] = date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('end'))); } else { unset($params['end']); } if($params['repeatEnd']) { $params['repeatEnd'] = date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('repeatEnd'))); } else { unset($params['repeatEnd']); $params['repeat'] = 0; } } $event = new Application_Model_Event($params); $event->setPbs_membershipID($this->userIDsNamespace['membershipID']); $bootmenuquery = "bootosID=" . $event->getPbs_bootosID() . "&startcounter=0&title=" . $event->getTitle() . "&defaultbootmenu=1&order=0&kcl=0"; $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=" . $event->getTitle() . "&description=Poolctrl Filter für " . $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()) { $weekday = date('N', strtotime($event->getStart())); $filterentriesquery3 = "filterID=" . $event->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); } else { $startDate = date('Y-m-d', strtotime($event->getStart())); if($event->getEnd()) { $endDate = date('Y-m-d', strtotime($event->getEnd())); } else { $endDate = date('Y-m-d', strtotime($event->getStart())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . $startDate . "&filtervalue2=" . $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($params['immediate']) { $this->runEvent($event); } else { $event->setRunning(false); } try { $eventID = $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect('/event/'); } } $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(); if($event->getPbs_bootmenuID()) { $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()) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_filterID()); } $this->eventMapper->find($eventID, $event); if($event->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if(!$this->acl->checkRight('edo')) { $this->_redirect('/'); } } 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 { $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; } } $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; } } $event = new Application_Model_Event(); $this->eventMapper->find($eventID, $event); if($event->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) { if(!$this->acl->checkRight('eeo')) { $this->_redirect('/'); } } $save = $this->getRequest()->getParam("save"); if (isset($save)){ $params = $this->getRequest()->getParams(); $editForm = new Application_Form_EventEdit(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist, 'params' => $params)); if ($editForm->isValid($params)) { $params['start'] = date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('start'))); if($params['end']) { $params['end'] = date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('end'))); } else { unset($params['end']); } if($params['repeatEnd']) { $params['repeatEnd'] = date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('repeatEnd'))); } else { unset($params['repeatEnd']); $params['repeat'] = 0; } if($event->getPbs_bootmenuID()) { $bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_bootmenuID()); unset($bootmenuApiResult); } if($event->getPbs_filterID()) { $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletefilter'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_filterID()); unset($filterApiResult); } $params['immediate'] = 0; $event->setOptions($params); $event->setID($eventID); $bootmenuquery = "bootosID=" . $event->getPbs_bootosID() . "&startcounter=0&title=" . $event->getTitle() . "&defaultbootmenu=1&order=0&kcl=0"; $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=" . $event->getTitle() . "&description=Poolctrl Filter für " . $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()) { $weekday = date('N', strtotime($event->getStart())); $filterentriesquery3 = "filterID=" . $event->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); } else { $startDate = date('Y-m-d', strtotime($event->getStart())); if($event->getEnd()) { $endDate = date('Y-m-d', strtotime($event->getEnd())); } else { $endDate = date('Y-m-d', strtotime($event->getStart())); } $filterentriesquery3 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . $startDate . "&filtervalue2=" . $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); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect('/event/'); } } 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->getRepeatEnd()) { $this->getRequest()->setParam('repeatEnd', $event->getRepeatEnd()); } $this->getRequest()->setParam('participants', $event->getParticipants()); $this->getRequest()->setParam('category', $event->getCategory()); $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_membershipID', $event->getPbs_membershipID()); $params = $this->getRequest()->getParams(); $editForm = new Application_Form_EventEdit(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist , 'params' => $params)); } $this->view->editForm = $editForm; $this->view->params = $params; } } /* * ------------------------ * 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; } } $this->view->poollist = $poollist; } public function eventmoveAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $event = new Application_Model_Event(); $evid = $this->getRequest()->getParam('evid'); $evstart = $this->getRequest()->getParam('evstart'); $evend = $this->getRequest()->getParam('evend'); //var_dump($evend); if ($evid!="null") { $this->eventMapper->find($evid,$event); //locate the event in the DB $event->setStart(date('Y-m-d H:i:s', strtotime(substr($evstart, 0, 24)))); if($evend!="null"){ $event->setEnd(date('Y-m-d H:i:s', strtotime(substr($evend, 0, 24)))); } $this->eventMapper->save($event); //save the event with the new data } } public function eventresizeAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $event = new Application_Model_Event(); $evid = $this->getRequest()->getParam('evid'); $evend = $this->getRequest()->getParam('evend'); var_dump(date('Y-m-d H:i:s', strtotime(substr($evend, 0, 24)))); if ($evid!=null) { $this->eventMapper->find($evid,$event); //locate the event in the DB $event->setEnd(date('Y-m-d H:i:s', strtotime(substr($evend, 0, 24)))); $this->eventMapper->save($event); //save the event with the new data } } public function eventlistAction() { if(!$this->acl->checkRight('eo')) { $this->_redirect('/'); } $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $poolID = $this->getRequest()->getParam('poolID'); $eventList = $this->eventMapper->fetchAll(); 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, ) ); } } echo json_encode($events); } /* * ---------------------- * 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(); $startTime = time() - 60; $updatePeriod = $this->config['event']['updatePeriod']; $endTime = $startTime + 60 + $updatePeriod * 60; $eventlist = $this->eventMapper->fetchAll(); $eventcategoryMapper = new Application_Model_EventcategoryMapper(); $result = $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'); } $eventtypeMapper = new Application_Model_EventtypeMapper(); $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) { $data = array( 'eventName' => $event->getTitle(), 'updateRate' => $this->gearmanWorkerUpdateRate, 'waitTime' => $this->gearmanWorkerWaitTime, 'gearmanServerHost' => $this->gearmanServerHost, 'gearmanServerPort' => $this->gearmanServerPort, 'blacklist' => $this->config['gearman']['worker']['ps']['blacklist'], 'whitelist' => $this->config['gearman']['worker']['ps']['whitelist'], ); $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; foreach($clientsXML->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)); $clientArray = array( 'id' => $client->getID(), 'ip' => $client->getIp(), 'mac' => $client->getMacadress()); $clients[] = $clientArray; } } } $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->getTitle(); } $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 = $eventtypeMapper->findBy(array("title" => "boot")); $eventtypeBoot = $result[0]; $event->setRunning(true); $event->setRunningtype($eventtypeBoot->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 = $eventtypeMapper->findBy(array("title" => "shutdown")); $eventtypeShutdown = $result[0]; $event->setRunning(true); $event->setRunningtype($eventtypeShutdown->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 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(); $eventtypeMapper = new Application_Model_EventtypeMapper(); $eventBootNames = array(); $eventShutdownNames = array(); $results = array(); $result1 = $eventtypeMapper->findBy(array("title" => "boot")); $result2 = $eventtypeMapper->findBy(array("title" => "shutdown")); $eventtypeBoot = $result1[0]; $eventtypeShutdown = $result2[0]; $resultShortcutName = 'result shortcut'; $errorsName = 'clients errors'; $events = $this->eventMapper->findBy(array('running' => 1)); foreach($events as $event) { if($event->getRunningtype() == $eventtypeBoot->getID()) { $eventBootNames[] = $event->getTitle(); } else if($event->getRunningtype() == $eventtypeShutdown->getID()) { $eventShutdownNames[] = $event->getTitle(); } } if(count($eventBootNames) > 0) { $data = array( 'type' => 'boot', '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; 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(false); $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); if($eventResult->$resultShortcutName == "failed") { $eventreport->setErrors(json_encode($eventResult->$errorsName)); } $eventreport->setType($eventtypeBoot->getID()); try { $eventreportMapper->save($eventreport); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $event->setRunning(false); $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' => 'shutdown', '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(false); $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); if($eventResult->$resultShortcutName == "failed") { $eventreport->setErrors(json_encode($eventResult->$errorsName)); } $eventreport->setType($eventtypeShutdown->getID()); try { $eventreportMapper->save($eventreport); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $event->setRunning(false); $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 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; } private function runEvent(Application_Model_Event $event) { $data = array( 'eventName' => $event->getTitle(), 'updateRate' => $this->gearmanWorkerUpdateRate, 'waitTime' => $this->gearmanWorkerWaitTime, 'gearmanServerHost' => $this->gearmanServerHost, 'gearmanServerPort' => $this->gearmanServerPort, 'blacklist' => $this->config['gearman']['worker']['ps']['blacklist'], 'whitelist' => $this->config['gearman']['worker']['ps']['whitelist'], ); $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; foreach($clientsXML->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)); $clientArray = array( 'id' => $client->getID(), 'ip' => $client->getIp(), 'mac' => $client->getMacadress()); $clients[] = $clientArray; } } } $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->getTitle(); } $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 = $eventtypeMapper->findBy(array("title" => "boot")); $eventtypeBoot = $result[0]; $event->setRunning(true); $event->setRunningtype($eventtypeBoot->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 = $eventtypeMapper->findBy(array("title" => "shutdown")); $eventtypeShutdown = $result[0]; $event->setRunning(true); $event->setRunningtype($eventtypeShutdown->getID()); try { $this->eventMapper->save($event); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } } }