summaryrefslogblamecommitdiffstats
path: root/application/modules/dev/controllers/GroupController.php
blob: 1a063a70a91b05044b1ea378e517712024873fd4 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

     
                                                        










                                      







                                                                                               

                                                            
                 









                                                          
                                                                                                 
                        
                                                                                                        



































                                                                                                                        
                                                                                                 






                                                                             
                                                             
                        
                                                                   
























































                                                                                                                
                                                                                                   
                        
                                                                                                          
































































































                                                                                                                 
<?php

class dev_GroupController extends Zend_Controller_Action
{
	protected $groupMapper;
	protected $groupGroupsMapper;
	protected $membershipMapper;
	protected $groupRequestMapper;
	protected $personmapper;
	protected $rolemapper;
	protected $groupList;

	public function init()
	{
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$this->groupMapper = new Application_Model_GroupMapper();
			$this->groupGroupsMapper = new Application_Model_GroupGroupsMapper();
			$this->membershipMapper = new Application_Model_MembershipMapper();
			$this->groupRequestMapper = new Application_Model_GroupRequestMapper();
			$this->personmapper = new Application_Model_PersonMapper();
			$this->rolemapper = new Application_Model_RoleMapper();
			$this->groupList = $this->groupMapper->fetchAll();
		} else {		
			$this->_redirect('/dev/login/auth');
		}
	}

	public function indexAction()
	{
		$this->view->groupList = $this->groupList;
	}

	public function addAction()
	{
		if (!isset($_POST["add"])){
			$addForm = new dev_Form_GroupAdd(array('grouplist' => $this->groupList));
		} else {
			$addForm = new dev_Form_GroupAdd(array('grouplist' => $this->groupList),$_POST);

			if ($addForm->isValid($_POST)) {
				$group = new Application_Model_Group($_POST);
				try {
					$this->groupMapper->save($group);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				if($_POST['superordinatedGroupID'] != -1) {
					$lastID = $this->groupMapper->getDbTable()->getDefaultAdapter()->lastInsertId();
					$groupgroups = new Application_Model_GroupGroups();
					$groupgroups->setParentID($_POST['superordinatedGroupID']);
					$groupgroups->setGroupID($lastID);
					try {
						$this->groupGroupsMapper->save($groupgroups);
					} catch(Zend_Exception $e)
					{
						echo "Caught exception: " . get_class($e) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						return;
					}

				}
				echo "Group successfully added. <br/>";
			}
		}

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

	public function editAction()
	{
		if(!isset($_POST['groupID'])) {
			$addForm = new dev_Form_GroupAdd(array('grouplist' => $this->groupList));
			$this->view->addForm = $addForm;
			return;
		}
		if (!isset($_POST["save"])){
			$group = $this->groupMapper->find($_POST['groupID']);
			$_POST['title'] = $group->getTitle();
			$_POST['description'] = $group->getDescription();
			$editForm = new dev_Form_GroupEdit();
		} else {
			$editForm = new dev_Form_GroupEdit($_POST);
			if ($editForm->isValid($_POST)) {
				$group = new Application_Model_Group($_POST);
				try {
					$this->groupMapper->save($group);
				} catch(Zend_Exception $e)
				{
					echo "Email Address already existing.";
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				echo "Successfully saved. <br/>";
			}
		}

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

	public function showAction()
	{
		if($_POST['groupID']) {
			$groupRequests = $this->groupRequestMapper->findBy('groupID', $_POST['groupID']);
			if(isset($groupRequests)) {
				foreach($groupRequests as $groupRequest) {
					$person = $this->personmapper->find($groupRequest['personID']);
					$groupRequestList[] = array(
					'grouprequestID' => $groupRequest['grouprequestID'],
					'person' => $person
					);
				}
				$this->view->groupRequestList = $groupRequestList;
				$this->view->roleList = $this->rolemapper->findBy('groupID', $_POST['groupID']);
			}
			$members = $this->membershipMapper->findBy('groupID', $_POST['groupID']);
			if(isset($members)) {
				foreach($members as $member) {
					$person = $this->personmapper->find($member['personID']);
					$membersList[] = array(
					'membershipID' => $member['membershipID'],
					'person' => $person
					);
				}
				$this->view->memberslist = $membersList;
			}
			$groupgroups = $this->groupGroupsMapper->findBy('groupID', $_POST['groupID']);
			if(is_object($groupgroups)) {
				$parentGroup = $this->groupMapper->find($groupgroups->getParentID());
				$this->view->$parentGroup = $parentGroup;
			}
			$group = $this->groupMapper->find($_POST['groupID']);
			$this->view->group = $group;
		}
	}

	public function linkAction()
	{
		if (!isset($_POST["link"])){
			$linkForm = new dev_Form_GroupLink(array('grouplist' => $this->groupList));
		} else {
			$linkForm = new dev_Form_GroupLink(array('grouplist' => $this->groupList),$_POST);

			if ($linkForm->isValid($_POST)) {
				$groupgroups = new Application_Model_GroupGroups();
				$groupgroups->setParentID($_POST['superordinatedGroupID']);
				$groupgroups->setGroupID($_POST['groupID']);
				try {
					$this->groupGroupsMapper->save($groupgroups);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				echo "Groups successfully linked. <br/>";
			}
		}

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

	public function deleteAction()
	{
		if (isset($_POST["groupID"])){
			$group = $this->groupMapper->find($_POST["groupID"]);
			try {
				$this->groupMapper->delete($group);
			} catch(Zend_Exception $e)
			{
				echo "Caught exception: " . get_class($e) . "<br/>";
				echo "Message: " . $e->getMessage() . "<br/>";
				return;
			}
			echo "Group successfully deleted. <br/>";
		}
	}

	public function grantpersonAction()
	{
		if(isset($_POST['grouprequestID']) && isset($_POST['roleID'])) {
			$groupRequest = $this->groupRequestMapper->find($_POST['grouprequestID']);
			try {
				$this->groupRequestMapper->delete($groupRequest);
			} catch(Zend_Exception $e)
			{
				echo "Caught exception: " . get_class($e) . "<br/>";
				echo "Message: " . $e->getMessage() . "<br/>";
				return;
			}
			$membership = new Application_Model_Membership();
			$membership->setGroupID($groupRequest->getGroupID());
			$membership->setPersonID($groupRequest->getPersonID());
			$membership->setRoleID($_POST['roleID']);
			try {
				$this->membershipMapper->save($membership);
			} catch(Zend_Exception $e)
			{
				echo "Caught exception: " . get_class($e) . "<br/>";
				echo "Message: " . $e->getMessage() . "<br/>";
				return;
			}
			echo "Chosen Person has been successfully added to the chosen group. <br />";
		}
	}

	public function revokepersonAction()
	{
		if(isset($_POST['membershipID'])) {
			$membership = $this->membershipMapper->find($_POST['membershipID']);
			if(isset($membership)) {
				try {
					$this->membershipMapper->delete($membership);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				echo "Chosen Person has been successfully removed from the chosen group. <br />";
			}

		}
	}
}