From fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Wed, 11 Jan 2012 14:36:35 +0100 Subject: format source files --- .../modules/user/controllers/GroupController.php | 1086 ++++++++++---------- 1 file changed, 530 insertions(+), 556 deletions(-) (limited to 'application/modules/user/controllers/GroupController.php') diff --git a/application/modules/user/controllers/GroupController.php b/application/modules/user/controllers/GroupController.php index 66fe02b..60b4c4d 100644 --- a/application/modules/user/controllers/GroupController.php +++ b/application/modules/user/controllers/GroupController.php @@ -1,559 +1,533 @@ -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/"); - } - } - } +* This program is free software distributed under the GPL version 2. +* See http://gpl.openslx.org/ +* +* If you have any feedback please consult http://feedback.openslx.org/ and +* send your suggestions, praise, or complaints to feedback@openslx.org +* +* General information about OpenSLX can be found at http://openslx.org/ +*/ + +class User_GroupController extends Zend_Controller_Action { + protected $groupMapper = null; + protected $groupGroupsMapper = null; + protected $membershipMapper = null; + protected $groupRequestMapper = null; + protected $personmapper = null; + protected $rolemapper = null; + protected $groupList = null; + protected $userIDsNamespace = null; + protected $membership; + protected $page; + + public function init() { + if (Zend_Auth::getInstance()->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/"); + } + } + } } -- cgit v1.2.3-55-g7522