hasIdentity()) { $this->userIDsNamespace = Zend_Session::namespaceGet('userIDs'); $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(); $userIDsNamespace = Zend_Session::namespaceGet('userIDs'); $this->membership = new Application_Model_Membership(); $this->membershipMapper->find($userIDsNamespace['membershipID'],$this->membership); $this->page = $this->_request->getParam('page'); } else { $this->_helper->redirector('login', 'auth'); return; } } public function indexAction() { // ACL show overview if(!Pbs_Acl::checkRight('gso')) $this->_redirect('/user'); $result = $this->_request->getParam('deleteresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('delete',$result); } $result = $this->_request->getParam('modifyresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('modify',$result); } $result = $this->_request->getParam('addresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('create',$result); } $this->view->groupList = $this->groupList; // Search $search = $this->_request->getParam('search'); $mySearch = new Pbs_Search(); $mySearch->setSearchTerm($search); $mySearch->setModule('group'); if($search != ''){ $this->view->search = $mySearch->getSearchTerm(); $this->view->groupList = $mySearch->search($this->view->groupList); } $this->view->searchform = $mySearch->searchForm(); // Pagination $pagination = new Pbs_Pagination(); $pagination->setPerPage(10); $pagination->setElement($this->view->groupList); $pagination->setRequestPage($this->_request->getParam('page')); $pagination->setPageUrl('/user/group/index'.((isset($this->view->search))?'/search/'.$this->view->search:'')); $this->view->groupList = $pagination->getElements(); $this->view->pagination = $pagination->pagination(); $this->view->page = $pagination->getRequestPage(); $this->view->userIDsNamespace = $this->userIDsNamespace; } public function searchAction(){ $this->_redirect('/user/group/index/search/'.($_GET['search'])); } public function addAction() { // ACL create new group if(!Pbs_Acl::checkRight('gc')) $this->_redirect('/user'); if (!isset($_POST["add"])){ $addForm = new user_Form_GroupAdd(array('grouplist' => $this->groupList)); } else { $addForm = new user_Form_GroupAdd(array('grouplist' => $this->groupList),$_POST); if ($addForm->isValid($_POST)) { $group = new Application_Model_Group($_POST); $db = $this->groupMapper->findBy(array('title'=>$group->getTitle())); if(count($db)>=1){ $this->_redirect('/user/group/index/page/'.$this->page.'/addresult/error'); } try { $this->groupMapper->save($group); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $groupID = $this->groupMapper->getDbTable()->getDefaultAdapter()->lastInsertId(); $membership = $this->membershipMapper->find($this->userIDsNamespace['membershipID']); // setting the actually used role in the new group $roleID = $this->membership->getRoleID(); $membership->setID(); $membership->setGroupID($groupID); $membership->setRoleID($roleID); try { $this->membershipMapper->save($membership); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } foreach($rightroleslist as $rightroles) { $rightroles->setRoleID($roleID); try { $rightrolesMapper->save($rightroles); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } if($_POST['superordinatedGroupID'] != -1) { $groupgroups = new Application_Model_GroupGroups(); #print_a($this->membership->getGroupID(),$this->membership); $groupgroups->setParentID($this->membership->getGroupID()); $groupgroups->setGroupID($groupID); try { $this->groupGroupsMapper->save($groupgroups); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } } $this->_redirect('/user/group/index/page/'.$this->page.'/addresult/ok'); return; } } $this->view->addForm = $addForm; } public function editAction() { // ACL edit a group if(!Pbs_Acl::checkRight('geo') && !Pbs_Acl::checkRight('ge')) $this->_redirect('/user'); $groupID = $this->_request->getParam('groupID'); if(!isset($groupID)) { if(count($this->userIDsNamespace) > 0) { $groupID = $this->userIDsNamespace['groupID']; } } if(!isset($groupID)) { $this->_helper->redirector('add', 'group'); return; } if((!Pbs_Acl::checkRight('geo') && $groupID == $this->membership->getGroupID()) || ( !Pbs_Acl::checkRight('ge') && $groupID != $this->membership->getGroupID() )) $this->_redirect('/user/group/index/page/'.$this->page.'/modifyresult/forbidden'); if (!isset($_POST["save"])){ $group = $this->groupMapper->find($groupID); $_POST['title'] = $group->getTitle(); $_POST['description'] = $group->getDescription(); $editForm = new user_Form_GroupEdit(array('groupID' => $groupID)); } else { $editForm = new user_Form_GroupEdit(array('groupID' => $groupID), $_POST); if ($editForm->isValid($_POST)) { $group = new Application_Model_Group($_POST); $group->setID($groupID); try { $this->groupMapper->save($group); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect('/user/group/index/page/'.$this->page.'/modifyresult/ok'); return; } } $this->view->editForm = $editForm; } public function showAction() { // ACL create new group if(!Pbs_Acl::checkRight('gsdo') && !Pbs_Acl::checkRight('gsdog')) $this->_redirect('/user'); $groupID = $this->_request->getParam('groupID'); if($groupID == '' || !Pbs_Acl::checkRight('gsdog')) { if(count($this->userIDsNamespace) > 0) { $groupID = $this->userIDsNamespace['groupID']; } } if($groupID == $this->membership->getGroupID() && !Pbs_Acl::checkRight('gsdo')) $this->_redirect('/user'); $this->view->usergroup = $this->membership->getGroupID(); $this->view->requestgroup = $groupID; $groupRequests = $this->groupRequestMapper->findBy(array('groupID' => $groupID),true); if(isset($groupRequests)) { $groupRequestList = array(); foreach($groupRequests as $groupRequest) { $person = $this->personmapper->find($groupRequest['personID']); $groupRequestList[] = array( 'grouprequestID' => $groupRequest['grouprequestID'], 'person' => $person ); } if(count($groupRequestList) > 0) { $this->view->groupRequestList = $groupRequestList; } // Search all inherit Roles $roles = array(); $groupGroupsMapper = new Application_Model_GroupGroupsMapper(); $parents = $groupGroupsMapper->getParentGroups($groupID); $groupMapper = new Application_Model_GroupMapper(); $crawled = array(); foreach($parents as $p){ foreach($p as $a){ if(!in_array($a,$crawled)){ $crawled[] = $a; $group = $groupMapper->find($a); if($groupID != $a) $r = $this->rolemapper->findBy(array('groupID' => $a,'inheritance'=>"1")); else $r = $this->rolemapper->findBy(array('groupID' => $a)); foreach($r as $d){ $roles[$group->getTitle()][] = $d; } } } } $this->view->roleList = $roles; } if(Pbs_Acl::checkRight('gsmg') || Pbs_Acl::checkRight('gsmgo')){ $members = $this->membershipMapper->findBy(array('groupID' => $groupID),true); if(isset($members)) { foreach($members as $member) { $person = $this->personmapper->find($member['personID']); $membership_tmp = $this->membershipMapper->find($member['membershipID']); $role = $this->rolemapper->find($membership_tmp->getRoleID()); $membersList[] = array( 'membershipID' => $member['membershipID'], 'suspend' => $member['suspend'], 'person' => $person, 'role' => $role ); } if(is_array($membersList)) { // Member Pagination $memberPagination = new Pbs_Pagination(); $memberPagination->setPerPage(10) ->setElement($membersList) ->setRequestPage($this->_request->getParam('page')); if($this->_request->getParam('groupID')) { $memberPagination->setPageUrl('/user/group/show/groupID/' . $groupID . ((isset($this->view->search))?'/search/'.$this->view->search:'')); } else { $memberPagination->setPageUrl('/user/group/show'.((isset($this->view->search))?'/search/'.$this->view->search:'')); } $this->view->membersList = $memberPagination->getElements(); $this->view->memberPagination = $memberPagination->pagination(); $this->view->page = $memberPagination->getRequestPage(); } } } $groupgroups = $this->groupGroupsMapper->findBy(array('groupID' => $groupID),true); if(is_object($groupgroups)) { $parentGroup = $this->groupMapper->find($groupgroups->getParentID()); $this->view->$parentGroup = $parentGroup; } $group = $this->groupMapper->find($groupID); $this->view->userIDsNamespace = $this->userIDsNamespace; $this->view->group = $group; $this->view->groupID = $groupID; } public function linkAction() { if(!Pbs_Acl::checkRight('glk')) $this->_redirect('/user'); $linkableGroups = $this->groupList; $groupGroupsMapper = new Application_Model_GroupGroupsMapper(); $childs = array(); $parents = array(); $childs = $groupGroupsMapper->getChildGroups($this->membership->getGroupID()); $parents = $groupGroupsMapper->getParentGroups($this->membership->getGroupID()); #print_a($childs,$parents); foreach($linkableGroups as $i => $group){ #print_a($group->getID()); if(isset($childs[1]) && in_array($group->getID(),$childs[1])){ unset($linkableGroups[$i]); } if(count($parents) > 0){ foreach($parents as $d){ if(in_array($group->getID(),$d)){ unset($linkableGroups[$i]); } } } } #print_a($linkableGroups); if (!isset($_POST["link"])){ $linkForm = new user_Form_GroupLink(array('grouplist' => $linkableGroups)); } else { $linkForm = new user_Form_GroupLink(array('grouplist' => $linkableGroups),$_POST); if ($linkForm->isValid($_POST)) { $groupgroups = new Application_Model_GroupGroups(); if($_POST['superordinatedGroupID'] == $_POST['groupID'] || $_POST['groupID'] == 1) { $this->_redirect('/user/group/index/page/'.$this->page.'/addresult/forbidden'); } $groupgroups->setParentID($this->membership->getGroupID()); $groupgroups->setGroupID($_POST['groupID']); try { $this->groupGroupsMapper->save($groupgroups); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_helper->redirector('', 'group'); return; } } $this->view->linkForm = $linkForm; } public function deleteAction() { // ACL delete a group if(!Pbs_Acl::checkRight('gd')) $this->_redirect('/user'); $this->_helper->viewRenderer->setNoRender(); $groupID = $this->_request->getParam('groupID'); if(!isset($groupID)) { if(count($this->userIDsNamespace) > 0) { $groupID = $this->userIDsNamespace['groupID']; } } if (isset($groupID)){ $group = $this->groupMapper->find($groupID); try { $this->groupMapper->delete($group); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } if($_SERVER['HTTP_REFERER']) { if(strpos($_SERVER['HTTP_REFERER'], '/user/group/show') !== false && strpos($_SERVER['HTTP_REFERER'], '/groupID/') === false) { $this->_helper->redirector('changemembership', 'person'); } else { $this->_redirect('/user/group/index/page/'.$this->page.'/deleteresult/ok'); } } else { $this->_helper->redirector('', 'group'); } return; } else { $this->_redirect('/user/'); return; } } public function grantpersonAction() { // ACL grant a membership to request if(!Pbs_Acl::checkRight('gam')) $this->_redirect('/user'); $this->_helper->viewRenderer->setNoRender(); 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) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $membership = new Application_Model_Membership(); $membership->setGroupID($groupRequest->getGroupID()) ->setPersonID($groupRequest->getPersonID()) ->setRoleID($_POST['roleID']) ->setSuspend(0); $apikey = randomString(32); $membership->setApikey($apikey); try { $id = $this->membershipMapper->save($membership); $membership->setID($id); $newMember = new Pbs_NewMember(); $newMember->createDefaults($membership); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect("/user/group/show/groupID/" . $groupRequest->getGroupID()); } } public function revokepersonAction() { $this->_helper->viewRenderer->setNoRender(); $membershipID = $this->_request->getParam('membershipID'); $rr = $this->membershipMapper->find($membershipID); if(($rr->getGroupID() == $this->membership->getGroupID() && Pbs_Acl::checkRight('gdmo') ) || ( $rr->getGroupID() != $this->membership->getGroupID() && Pbs_Acl::checkRight('gdmog'))){ if(isset($membershipID)) { $membership = $this->membershipMapper->find($membershipID); if(isset($membership)) { try { $this->membershipMapper->delete($membership); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect("/user/group/show/groupID/" . $membership->getGroupID()); } } } } public function declineAction() { if(!Pbs_Acl::checkRight('gdm')) { $this->_redirect('/user'); } $this->_helper->viewRenderer->setNoRender(); $grouprequestID = $this->_request->getParam('grouprequestID'); if(isset($grouprequestID)) { $groupRequest = $this->groupRequestMapper->find($grouprequestID); if($groupRequest->getGroupID() != $this->userIDsNamespace['groupID']) { $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('Not allowed to decline this grouprequest', 'forbidden'); return; } try { $this->groupRequestMapper->delete($groupRequest); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect("/user/group/show/groupID"); } } public function suspendmembershipAction() { if(!Pbs_Acl::checkRight('gsm')) { $this->_redirect('/user'); } $this->_helper->viewRenderer->setNoRender(); $membershipID = $this->_request->getParam('membershipID'); if(isset($membershipID)) { $membership = $this->membershipMapper->find($membershipID); $membership->setSuspend(1); if(isset($membership)) { if($membership->getGroupID() != $this->userIDsNamespace['groupID']) { $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('Not allowed to suspend this membership', 'forbidden'); return; } try { $this->membershipMapper->save($membership); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect("/user/group/show/"); } } } public function resumemembershipAction() { if(!Pbs_Acl::checkRight('gsm')) { $this->_redirect('/user'); } $this->_helper->viewRenderer->setNoRender(); $membershipID = $this->_request->getParam('membershipID'); if(isset($membershipID)) { $membership = $this->membershipMapper->find($membershipID); $membership->setSuspend(0); if(isset($membership)) { if($membership->getGroupID() != $this->userIDsNamespace['groupID']) { $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('Not allowed to resume this membership', 'forbidden'); return; } try { $this->membershipMapper->save($membership); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; return; } $this->_redirect("/user/group/show/"); } } } }