summaryrefslogblamecommitdiffstats
path: root/application/controllers/PersonController.php
blob: 0b6db2e6291d8b2e0b22833f28e6dd6f855c0a72 (plain) (tree)
1
2
3


                                                     





























                                                                                                                
                 





                                                             
 
































                                                                                                                                         
 

                                                  
 








































                                                                                                                   
 





















                                                                                                                               

 

 







 
<?php

class PersonController extends Zend_Controller_Action
{
	protected $person;
	protected $personmapper;
	protected $membershipMapper;
	protected $memberships;
	protected $groupMapper;
	protected $groups;
	protected $groupRequestMapper;

	public function init() {
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$this->personmapper = new Application_Model_PersonMapper();
			$result = $this->personmapper->findBy('email', Zend_Auth::getInstance()->getIdentity());
			$this->person = new Application_Model_Person($result[0]);
			$this->person->setID($result[0]['personID']);
			$this->groupMapper = new Application_Model_GroupMapper();
			$this->groupRequestMapper = new Application_Model_GroupRequestMapper();
			$this->membershipMapper = new Application_Model_MembershipMapper();
			$this->memberships = $this->membershipMapper->findBy("personID",$this->person->getID());
			if(isset($this->memberships)) {
				foreach($this->memberships as $membership) {
					$group = $this->groupMapper->find($membership['groupID']);
					$this->groups[] = array (
					'id'  => $group->getID(),	
					'title' => $group->getTitle()
					);
				}
			}
		} else {
			$this->_helper->redirector('login', 'auth');
		}
	}

	public function indexAction()
	{
		$this->_helper->redirector('show', 'person');
	}

	public function showAction()
	{
		$this->view->person = $this->person;
		$this->view->groups = $this->groups;
	}

	public function editAction()
	{
		$this->view->person = $this->person;
		if (!isset($_POST["save"])){
			$editForm = new Application_Form_PersonEdit();
		} else {
			$editForm = new Application_Form_PersonEdit($_POST);
			if ($editForm->isValid($_POST)) {
				if(isset($_POST['newpassword'])) {
					$date = new DateTime();
					$this->person->setPassword($_POST['newpassword']);
					$this->person->setPasswordSalt(MD5($date->getTimestamp()));
					$this->person->setPassword(MD5($this->person->getPassword() . $this->person->getPasswordSalt()));
				}
				$this->person->setOptions($_POST);
				try {
					$this->personmapper->save($this->person);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					echo "Email Address already existing.";
					return;
				}
				echo "Successfully saved. <br/>";
			}
		}

		$this->view->editForm = $editForm;
	}

	public function requestAction()
	{
		$this->view->person = $this->person;
		$allgroups = $this->groupMapper->fetchAll();
		$groupRequests = $this->groupRequestMapper->findBy('personID', $this->person->getID());
		$count = 0;
		foreach($allgroups as $group) {
			foreach($groupRequests as $groupRequest) {
				if($groupRequest['groupID'] == $group->getID()) {
					unset($allgroups[$count]);
				}
			}
			$count++;
		}
		if (!isset($_POST["request"])){
			if(count($allgroups) <= 0) {
				echo "No Groups to choose.";
			}
			$requestForm = new Application_Form_GroupRequest(array('grouplist' => $allgroups));
		} else {
			$requestForm = new Application_Form_GroupRequest(array('grouplist' => $allgroups), $_POST);
			if ($requestForm->isValid($_POST)) {
				$groupRequestMapper = new Application_Model_GroupRequestMapper();
				$groupRequest = new Application_Model_GroupRequest();
				$groupRequest->setGroupID($_POST['groupID']);
				$date = new DateTime();
				$groupRequest->setTime($date->getTimestamp());
				$groupRequest->setPersonID($this->person->getID());
				try {
					$groupRequestMapper->save($groupRequest);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				echo "Successfully requested. <br />";
			}
		}
		$this->view->requestForm = $requestForm;
	}

	public function leaveAction()
	{
		$this->view->person = $this->person;
		if(isset($_POST['groupID'])) {
			if(isset($this->memberships)) {
				foreach($this->memberships as $membership) {
					if($membership['groupID'] == $_POST['groupID']) {
						$membershipObject = $this->membershipMapper->find($membership['membershipID']);
						try {
							$this->membershipMapper->delete($membershipObject);
						} catch(Zend_Exception $e)
						{
							echo "Caught exception: " . get_class($e) . "<br/>";
							echo "Message: " . $e->getMessage() . "<br/>";
							return;
						}
						echo "You have been successfully removed from the chosen group. <br />";
					}
				}
			}
		}
	}
}