summaryrefslogblamecommitdiffstats
path: root/application/modules/user/controllers/RoleController.php
blob: 0b0cb7d69b8ec5e4ceb88d387196c00adf5b4f25 (plain) (tree)
1
2
3
4
5
6
7
8
9
10



                                                        
                                    
 



                                                                                        
                                                                   
                                                                  
                                                                                       







                                                                                           
 














































                                                                                                             


                                                                            

                                     








                                                                        
                                                                        



                                                                                               
                                        









                                                                                            
                                                                           








                                                              
                                     


                                                                            
                 












                                                                                                 
                                                                                








                                                               
                                                              
                                     


                                                                            
                 




















                                                                                    
                                     


                                                                            
                 
















































































                                                                                                                                           



 











 
<?php

class User_RoleController extends Zend_Controller_Action
{
	protected $userIDsNamespace;

	public function init()
	{
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$this->userIDsNamespace = Zend_Session::namespaceGet('userIDs');
			if($this->userIDsNamespace['roleID'] ==''){
				$pbsNotifier = new Pbs_Notifier();
				echo $pbsNotifier->notify('No roleID set','forbidden');
			}
			$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()
	{
		if(isset($this->userIDsNamespace['groupID'])) {
			$roleList = $this->roleMapper->findBy('groupID', $this->userIDsNamespace['groupID']);
			$this->view->groupID = $this->userIDsNamespace['groupID'];
			$this->view->roleList = $roleList;
		} else {
			$this->_helper->redirector('groupselect', 'role');
			return;
		}
	}

	public function addAction()
	{
		if(isset($this->userIDsNamespace['groupID'])) {
			if (!isset($_POST["add"])){
				$addForm = new user_Form_RoleAdd(array('rightlist' => $rightList));
			} else {
				$addForm = new user_Form_RoleAdd(array('rightlist' => $rightList),$_POST);
				if ($addForm->isValid($_POST)) {

					$_POST['groupID'] = $this->userIDsNamespace['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)) {
			if(count($this->userIDsNamespace) > 0) {
				$roleID = $this->userIDsNamespace['roleID'];
			}
		}
		if(!isset($roleID)) {
			$addForm = new user_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 user_Form_RoleEdit(array('roleID' => $roleID));
		} else {
			$editForm = new user_Form_RoleEdit(array('roleID' => $roleID), $_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->_redirect($_SERVER['HTTP_REFERER']);
				return;
			}
		}
		$this->view->editForm = $editForm;
	}

	public function showAction()
	{
		$roleID = $this->_request->getParam('roleID');
		if(!isset($roleID)) {
			if(count($this->userIDsNamespace) > 0) {
				$roleID = $this->userIDsNamespace['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;
			$this->view->userIDsNamespace = $this->userIDsNamespace;
		} else {
			$this->_helper->redirector('', 'role');
			return;
		}
	}

	public function deleteAction()
	{
		$this->_helper->viewRenderer->setNoRender();
		$roleID = $this->_request->getParam('roleID');
		if(!isset($roleID)) {
			if(count($this->userIDsNamespace) > 0) {
				$roleID = $this->userIDsNamespace['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)) {
			if(count($this->userIDsNamespace) > 0) {
				$roleID = $this->userIDsNamespace['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 user_Form_LinkRight(array('rightlist' => $rightlist, 'roleID' => $roleID));
				} else {
					$linkForm = new user_Form_LinkRight(array('rightlist' => $rightlist, 'roleID' => $roleID), $_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('/user/role/show/roleID/' . $roleID);
						return;
					}
				}
				$this->view->linkForm = $linkForm;
			} else {
				$this->_redirect('/user/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('/user/role/show/roleID/' . $roleID);
				return;
			}
		} else {
			$this->_helper->redirector('', 'role');
			return;
		}
	}


}