summaryrefslogblamecommitdiffstats
path: root/application/modules/dev/controllers/RoleController.php
blob: 65989b689c7e979cdb8cb897ba35ee2b54412fed (plain) (tree)
1
2
3
4
5
6
7
8

     
                                                       
 


                                    
 


                                                              


                                                                                           
                        
                                                                    




                                     








                                                                                                    



                                   





















                                                                                                         
 




                                                                          



                                    










                                                                        
                                                                        


















                                                                                            



                                    

















                                                                                                 



                                      

















                                                                                    



                                         



















































                                                                                                                                  



                                           































































                                                                                                                  
         















 



 
<?php

class dev_RoleController extends Zend_Controller_Action
{
	protected $roleMapper;
	protected $rightMapper;
	protected $rightRolesMapper;

	public function init()
	{
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$this->roleMapper = new Application_Model_RoleMapper();
			$this->rightMapper = new Application_Model_RightMapper();
			$this->rightRolesMapper = new Application_Model_RightRolesMapper();
		} else {
			$this->_helper->redirector('login', 'auth');
		}
	}

	public function indexAction()
	{
		$roleNamespace = Zend_Session::namespaceGet('role');
		if(isset($roleNamespace['groupID'])) {
			$roleList = $this->roleMapper->findBy('groupID', $roleNamespace['groupID']);
			$this->view->groupID = $roleNamespace['groupID'];
			$this->view->roleList = $roleList;
		} else {
			$this->_helper->redirector('groupselect', 'role');
			return;
		}
	}

	public function addAction()
	{
		$roleNamespace = Zend_Session::namespaceGet('role');
		if(isset($roleNamespace['groupID'])) {
			if (!isset($_POST["add"])){
				$addForm = new dev_Form_RoleAdd(array('rightlist' => $rightList));
			} else {
				$addForm = new dev_Form_RoleAdd(array('rightlist' => $rightList),$_POST);
				if ($addForm->isValid($_POST)) {

					$_POST['groupID'] = $roleNamespace['groupID'];
					$role = new Application_Model_Role($_POST);
					try {
						$this->roleMapper->save($role);
					} catch(Zend_Exception $e)
					{
						echo "Caught exception: " . get_class($e) . "<br/>";
						echo "Message: " . $e->getMessage() . "<br/>";
						return;
					}
					$this->_helper->redirector('', 'role');
					return;
				}
			}

			$this->view->addForm = $addForm;
		} else {
			$this->_helper->redirector('groupselect', 'role');
			return;
		}
	}

	public function editAction()
	{
		$roleID = $this->_request->getParam('roleID');
		if(!isset($roleID)) {
			$addForm = new dev_Form_RoleAdd();
			$this->view->addForm = $addForm;
			return;
		}
		if (!isset($_POST["save"])){
			$role = $this->roleMapper->find($roleID);
			$_POST['title'] = $role->getTitle();
			$_POST['description'] = $role->getDescription();
			$_POST['groupID'] = $role->getGroupID();
			$_POST['inheritance'] = $role->getInheritance();
			$editForm = new dev_Form_RoleEdit();
		} else {
			$editForm = new dev_Form_RoleEdit($_POST);
			if ($editForm->isValid($_POST)) {
				$role = new Application_Model_Role($_POST);
				$role->setID($this->_request->getParam('roleID'));
				try {
					$this->roleMapper->save($role);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				$this->_helper->redirector('', 'role');
				return;
			}
		}
		$this->view->editForm = $editForm;
	}

	public function showAction()
	{
		$roleID = $this->_request->getParam('roleID');
		if($roleID) {
			$rightroles = $this->rightRolesMapper->findBy('roleID', $roleID);
			if(count($rightroles) > 0) {
				foreach($rightroles as $rightrole) {
					$right = $this->rightMapper->find($rightrole['rightID']);
					$rightsList[] = $right;
				}
				if(is_array($rightsList)) {
					$this->view->rightsList = $rightsList;
				}
			}
			$this->view->role = $this->roleMapper->find($roleID);
			$this->view->roleID = $roleID;
		} else {
			$this->_helper->redirector('', 'role');
			return;
		}
	}

	public function deleteAction()
	{
		$this->_helper->viewRenderer->setNoRender();
		$roleID = $this->_request->getParam('roleID');
		if (isset($roleID)){
			$role = $this->roleMapper->find($roleID);
			try {
				$this->roleMapper->delete($role);
			} catch(Zend_Exception $e)
			{
				echo "Caught exception: " . get_class($e) . "<br/>";
				echo "Message: " . $e->getMessage() . "<br/>";
				return;
			}
			$this->_helper->redirector('', 'role');
			return;
		} else {
			$this->_helper->redirector('', 'role');
			return;
		}
	}

	public function linkrightAction()
	{
		$roleID = $this->_request->getParam('roleID');
		if(isset($roleID)) {
			$rightroles = $this->rightRolesMapper->findBy('roleID', $roleID);
			$rights = $this->rightMapper->fetchAll();
			if(count($rightroles) > 0) {
				if(count($rights) > 0) {
					foreach($rights as $right) {
						foreach($rightroles as $rightrole) {
							if($right->getID() == $rightrole['rightID']) {
								$found = true;
								break;
							}
						}
						if(!$found) {
							$rightlist[] = $right;
						}
						$found = false;
					}
				}
			} else {
				$rightlist = $rights;
			}
			if(count($rightlist) > 0) {
				if (!isset($_POST["link"])){
					$linkForm = new dev_Form_LinkRight(array('rightlist' => $rightlist, 'roleID' => $roleID));
				} else {
					$linkForm = new dev_Form_LinkRight(array('rightlist' => $rightlist),$_POST);
					if ($linkForm->isValid($_POST)) {
						$rightroles = new Application_Model_RightRoles();
						$rightroles->setRightID($_POST['rightID']);
						$rightroles->setRoleID($roleID);
						try {
							$this->rightRolesMapper->save($rightroles);
						} catch(Zend_Exception $e)
						{
							echo "Caught exception: " . get_class($e) . "<br/>";
							echo "Message: " . $e->getMessage() . "<br/>";
							return;
						}
						$this->_redirect('/dev/role/show/roleID/' . $roleID);
						return;
					}
				}
				$this->view->linkForm = $linkForm;
			} else {
				$this->_redirect('/dev/role/show/roleID/' . $roleID);
				return;
			}
		} else {
			$this->_helper->redirector('', 'role');
			return;
		}
	}

	public function unlinkrightAction()
	{
		$this->_helper-> viewRenderer-> setNoRender();
		$rightRolesID = $this->_request->getParam('rightrolesID');
		if(isset($rightRolesID)) {
			$rightRolesID = explode('-',$rightRolesID);
			$roleID = $rightRolesID[0];
			$rightID = $rightRolesID[1];
			if (isset($roleID) && isset($rightID)){
				$rightroles = new Application_Model_RightRoles();
				$rightroles->setRoleID($roleID);
				$rightroles->setRightID($rightID);
				try {
					$this->rightRolesMapper->delete($rightroles);
				} catch(Zend_Exception $e)
				{
					echo "Caught exception: " . get_class($e) . "<br/>";
					echo "Message: " . $e->getMessage() . "<br/>";
					return;
				}
				$this->_redirect('/dev/role/show/roleID/' . $roleID);
				return;
			}
		} else {
			$this->_helper->redirector('', 'role');
			return;
		}
	}

	public function groupselectAction()
	{
		$roleNamespace = Zend_Session::namespaceGet('role');
		if(isset($roleNamespace['groupID'])) {
			$this->_helper->redirector('', 'role');
		} else {
			if(isset($_POST['selectgroup'])) {
				$roleSession = new Zend_Session_Namespace('role');
				$roleSession->groupID = $_POST['groupID'];
				$this->_helper->redirector('', 'role');
				return;
			} else {
				$personMapper = new Application_Model_PersonMapper();
				$result = $personMapper->findBy('email', Zend_Auth::getInstance()->getIdentity());
				$person = new Application_Model_Person($result[0]);
				$person->setID($result[0]['personID']);
				$membershipMapper = new Application_Model_MembershipMapper();
				$memberships = $membershipMapper->findBy("personID",$person->getID());
				$groupMapper = new Application_Model_GroupMapper();
				if(isset($memberships)) {
					foreach($memberships as $membership) {
						$group = $groupMapper->find($membership['groupID']);
						$groupList[] = $group;
					}
				}
				$groupSelectForm = new dev_Form_GroupSelect(array('grouplist' => $groupList));
				$this->view->groupSelectForm = $groupSelectForm;
			}
		}
	}

	public function changegroupAction()
	{
		$this->_helper-> viewRenderer-> setNoRender();
		Zend_Session::namespaceUnset('role');
		$this->_helper->redirector('groupselect', 'role');
		return;
	}


}