summaryrefslogblamecommitdiffstats
path: root/application/forms/EventEdit.php
blob: 5fc9586db1c63446e129ac1da533d3e611c6d50f (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 $membershipMapper;
	protected $personMapper;

	public function init()
	{
		$this->eventMapper = new Application_Model_EventMapper();
		$this->eventcategoryMapper = new Application_Model_EventcategoryMapper();
		$this->membershipMapper = new Application_Model_MembershipMapper();
		$this->personMapper = new Application_Model_PersonMapper();
	}

	public function indexAction()
	{
		$events = $this->eventMapper->fetchAll();
		if(is_array($events)) {
			$bootOsApiResult = PostToHost('pbs2poolctrl.mp.openslx.org', '/resource/getbootos/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
			$bootOsXMLString = $bootOsApiResult['http-body'];
			$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('pbs2poolctrl.mp.openslx.org', '/resource/getpool/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
			$poolXMLString = $poolApiResult['http-body'];
			$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();
				$membership = new Application_Model_Membership();
				$this->membershipMapper->find($event['pbs_membershipID'], $membership);
				$person = new Application_Model_Person();
				$this->personMapper->find($membership->getPersonID(), $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[$poollist[$event['pbs_poolID']]->getTitle()][] = $event;
			}
		}
		$params = $this->getRequest()->getParams();
		$this->view->params = $params;
		$this->view->eventlist = $eventlist;
	}

	public function addAction()
	{
		$eventcategorylist = $this->eventcategoryMapper->fetchAll();
		$bootOsApiResult = PostToHost('pbs2poolctrl.mp.openslx.org', '/resource/getbootos/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
		$bootOsXMLString = $bootOsApiResult['http-body'];
		$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('pbs2poolctrl.mp.openslx.org', '/resource/getpool/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
		$poolXMLString = $poolApiResult['http-body'];
		$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 (!isset($add)){
			$addForm = new Application_Form_EventAdd(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'poollist' => $poollist));
		} 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- H:i', strtotime($this->getRequest()->getParam('start'))));
				$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(1);
				$bootmenuquery = "bootosID=" . $event->getPbs_bootosID() . "&startcounter=0&title=" . $event->getTitle() . "&defaultbootmenu=1&order=0&kcl=0";
				$bootmenuApiResult = PostToHost('pbs2poolctrl.mp.openslx.org', '/resource/addbootmenu/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootmenuquery);
				$bootmenuXMLString = $bootmenuApiResult['http-body'];
				$bootmenuXML = new SimpleXMLElement($bootmenuXMLString);
				$bootmenuID = sprintf("%s", $bootmenuXML->bootmenuid);
				$event->setPbs_bootmenuID($bootmenuID);
				//$event->setPbs_filterID($filterID);
				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()
	{
		$this->_helper->viewRenderer->setNoRender();
		$eventID = $this->_request->getParam('eventID');
		if(isset($eventID)) {
			$event = new Application_Model_Event();
			if($event->getPbs_bootmenuID()) {
				$bootmenuApiResult = PostToHost('pbs2poolctrl.mp.openslx.org', '/resource/deletebootmenu/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_bootmenuID());
			}
			if($event->getPbs_filterID()) {
				$filterApiResult = PostToHost('pbs2poolctrl.mp.openslx.org', '/resource/deletefilter/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_filterID());
			}
			$this->eventMapper->find($eventID, $event);
			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()
	{
		$eventcategorylist = $this->eventcategoryMapper->fetchAll();
		$bootOsApiResult = PostToHost('pbs2poolctrl.mp.openslx.org', '/resource/getbootos/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
		$bootOsXMLString = $bootOsApiResult['http-body'];
		$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('pbs2poolctrl.mp.openslx.org', '/resource/getpool/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
		$poolXMLString = $poolApiResult['http-body'];
		$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;
		}
		$eventID = $this->_request->getParam('eventID');
		if(!isset($eventID)) {
			$this->_helper->redirector('add', 'event');
			return;
		} else {
			$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- H:i', strtotime($this->getRequest()->getParam('start'))));
					$this->getRequest()->setParam('end', date ('Y-m-d H:i', strtotime($this->getRequest()->getParam('end'))));
					$event = new Application_Model_Event();
					$this->eventMapper->find($eventID, $event);
					if($event->getPbs_bootmenuID()) {
						$bootmenuApiResult = PostToHost('pbs2.local', '/resource/deletebootmenu/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $event->getPbs_bootmenuID());
						unset($bootmenuApiResult);
					}
					if($event->getPbs_filterID()) {
						$filterApiResult = PostToHost('pbs2.local', '/resource/deletefilter/apikey/apikey1', '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('pbs2.local', '/resource/addbootmenu/apikey/apikey1', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootmenuquery);
					$bootmenuXMLString = $bootmenuApiResult['http-body'];
					$bootmenuXML = new SimpleXMLElement($bootmenuXMLString);
					$bootmenuID = sprintf("%s", $bootmenuXML->bootmenuid);
					$event->setPbs_bootmenuID($bootmenuID);
					//$event->setPbs_filterID($filterID);
					print_r($event);
					$params = $this->getRequest()->getParams();
					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 {
				$event = new Application_Model_Event();
				$this->eventMapper->find($eventID, $event);
				$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;
		}
	}
}