summaryrefslogblamecommitdiffstats
path: root/application/controllers/EventController.php
blob: 410fd7633ae86e6c94772effe47539cf4e40ea05 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
     









                                                                           


                                                    
                               
                                       

                            
                                    
                       




                                           


                              
                                                                   
                                                                     
                                                                                        




                                                                              

                                                                                                                                                                                           








                                                                                                                  

                                                                                                         


                                                                        
                         














                                                                                                                                                                                                                     



                                                                    



                                     







                                                                                                                                 
                                        
                                                                                                                                                                                                                             
                                                                         
                                                          


















                                                                                                            
                         
                                                                                                                                                                                                                         
                                                                     
                                                        









                                                                                                    
                         

                                                              
                                                                         
                                                                                                             




                                                                                                             
                                         



































                                                                                                                                                                                                                                           
                                         
                                 
                                                                                                               


                                                                                                     
                                                                            

                         

                                                           
                                                    
                                                  



                                   


                                                   
                                                                            
                                                                                                                                                                                                                     
                                                                 
                                                  


















                                                                                                    
                 
                                                                                                                                                                                                                 
                                                             
                                                









                                                                                            
                 
                                                            

                                                                                                                  
                                  
                                                                                                                                                                                                               
                        
                                                                                                                                                                                                           
                                                                                  
                                                                                                                                              


                                                                                                                                                  
                                                                                                       
                                                                                                     
                                                                                                                                                                              
                                                                                                                                                                                                                                                    

                                                                                        
                                                                                        
                                                                       



                                                                                                                                                                                                                                              
                                                                                  
                                                                   
                                                                                        




                                                                                                    
                                                                                                                                                                           
                                                                                                                                                                                                                                                                   

                                                                                                    
                                                                                                       
                                                                                                                                                          
                                                                                                                                                                                                                                                                   

                                                                                                    
                                                                                                       


                                                                                                                                                                                  
                                                                                                                                                                                                                                                                           

                                                                                                            
                                                                                                               







                                                                                                                                                                                    
                                                                                                                                                                                                                                                                           

                                                                                                            
                                                                                                               
                                 
                                                          







                                                                                            
                                                            

                         

                                                           




                                                


                                                   



                                                                
                                                         
                                                                                                                                                                                                                                                                                    

                                                       
                                                                                                                                                                                                                                                                              
                         
                                                                   




                                                                                                      







                                                                                    
                                                    


                                                    




                                    

                                                   
                 
                                                                



                                                                   












































                                                                                                                                                                                                                             

                                                                      
                                                                                                                                                                                                                     
                                                                                           
                                                                                                                                                      


                                                                                                                                                          
                                                                         
                                                                                                                                                                                                                                                                                                    
                                                                          

                                                                       
                                                                                                                                                                                                                                                                                              
                                                                        
                                         
                                                                                             
                                                                
                                                                                                                                                                                      
                                                                                                                                                                                                                                                            

                                                                                                
                                                                                                
                                                                               



                                                                                                                                                                                                                                                      
                                                                                          
                                                                           
                                                                                                




                                                                                                            
                                                                                                                                                                                   
                                                                                                                                                                                                                                                                           

                                                                                                            
                                                                                                               
                                                                                                                                                                  
                                                                                                                                                                                                                                                                           

                                                                                                            
                                                                                                               


                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                   

                                                                                                                    
                                                                                                                       







                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                   

                                                                                                                    
                                                                                                                       
                                         
                                                                  







                                                                                                    
                                                                    

                                 











                                                                                                                 
                                                                                                                                                                                                         

                                                          
                                                      

                 

          



                                   
 
                                           


                                                   

                                                            
 
 
                                                       
 
 















                                                                                                      


                                                   















                                                                                              
 
                                           


                                                   

                                                            
                                                                  
                                                            
                                    
 
                                               

                                              



                                                                                                                                       
                                              
 
                                              



                                                              
                                                        




                                                                            
                                                  
                                                    
                         
                          
       

                                          
         
 




                                 

 
                                     



                                                                      

                                                            
                                    

                                                                       































                                                                                                  
                                                                 

























                                                                                                     

                                                                                        

                                                                                                             































































































                                                                                                                                                                                                                               
                                          
                                                                        
                 
                                                      




                                                                              


                                        



                                                                      


                                                            
                                                                               
                                                                           

                                              







                                                                                  

                                            
                                                                                 
                                                                       
                                                                                            
















                                                                                                    
                                                                     
                                                                     
                                                                          

                                                                                                                      












                                                                                                    





                                                                                           


                                                                                                        




















                                                                                            














                                                                                                            
                                                                             
                                                                             
                                                                              
                                                                                                                      












                                                                                                    





                                                                                           


                                                                                                        




















                                                                                            
                 
                                          







                                                                              
         
 
<?php
/*
 * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
 * This program is free software distributed under the GPL version 2.
 * See http://gpl.openslx.org/
 *
 * If you have any feedback please consult http://feedback.openslx.org/ and
 * send your suggestions, praise, or complaints to feedback@openslx.org
 *
 * General information about OpenSLX can be found at http://openslx.org/
 */

class EventController extends Zend_Controller_Action
{
	protected $eventMapper;
	protected $eventcategoryMapper;
	protected $config;
	protected $pbs2host;
	protected $userIDsNamespace;
	protected $acl;
	protected $gearmanClient;
	protected $gearmanServerHost;
	protected $gearmanServerPort;
	protected $gearmanWorkerUpdateRate;
	protected $gearmanWorkerWaitTime;

	public function init()
	{
		$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']);
				$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();
			} 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");
		$evstart = date ('m/d/Y H:i', strtotime(substr($this->getRequest()->getParam('evstart'), 0, 24)));
    $evend = date ('m/d/Y H:i', strtotime(substr($this->getRequest()->getParam('evend'), 0, 24)));
		if (!isset($add)){
			$addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist, 'start' => $evstart, 'end' => $evend));
		} else {
			$addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist, $this->getRequest()->getParams()));
			if ($addForm->isValid($this->getRequest()->getParams())) {
				$this->getRequest()->setParam('start', date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('start'))));
				if($this->getRequest()->getParam('end')) {
					$this->getRequest()->setParam('end', date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('end'))));
				}
				$event = new Application_Model_Event($this->getRequest()->getParams());
				$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);
				}
				$event->setRunning(false);
				try {
					$eventID = $this->eventMapper->save($event);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					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) . "<br/>";
				echo "Message: " . $e->getMessage() . "<br/>";
				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)){
				$editForm = new Application_Form_EventEdit(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist, $this->getRequest()->getParams()));
				if ($editForm->isValid($this->getRequest()->getParams())) {
					$this->getRequest()->setParam('start', date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('start'))));
					if($this->getRequest()->getParam('end')) {
						$this->getRequest()->setParam('end', date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('end'))));
					}
					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);
					}
					$event->setOptions($this->getRequest()->getParams());
					$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);
					}
					$event->setRunning(false);
					try {
						$this->eventMapper->save($event);
					} catch(Zend_Exception $e)
					{
						echo "Caught exception: " . get_class($e) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						return;
					}
					$this->_redirect('/event/');
				}
			} else {
				$this->getRequest()->setParam('title', $event->getTitle());
				$this->getRequest()->setParam('immediate', $event->getImmediate());
				$this->getRequest()->setParam('start', $event->getStart());
				$this->getRequest()->setParam('end', $event->getEnd());
				$this->getRequest()->setParam('repeat', $event->getRepeat());
				$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 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();
		//var_dump($poolID);

		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,
			)
			);
      }
		}
		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();
		$updatePeriod = $this->config['event']['updatePeriod'];
		$endTime = $startTime + $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) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						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) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						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) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						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) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				$event->setRunning(false);
				$event->setRunningtype(null);
				try {
					$this->eventMapper->save($event);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					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) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						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) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				$event->setRunning(false);
				$event->setRunningtype(null);
				try {
					$this->eventMapper->save($event);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					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;
	}
}