summaryrefslogtreecommitdiffstats
path: root/application/modules/user/controllers/GroupController.php
diff options
context:
space:
mode:
authorSebastian Schmelzer2012-01-11 14:36:35 +0100
committerSebastian Schmelzer2012-01-11 14:36:35 +0100
commitfca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e (patch)
tree6e6aaf749f34db8c7c7153c23ef85c57187430bb /application/modules/user/controllers/GroupController.php
parentAPI: mit addBootos kann man nun auch editieren (diff)
downloadpbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.gz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.xz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.zip
format source files
Diffstat (limited to 'application/modules/user/controllers/GroupController.php')
-rw-r--r--application/modules/user/controllers/GroupController.php1086
1 files changed, 530 insertions, 556 deletions
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 @@
-<?php
+<? php
/*
* Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
- * 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- return;
- }
- foreach($rightroleslist as $rightroles) {
- $rightroles->setRoleID($roleID);
- try {
- $rightrolesMapper->save($rightroles);
- } catch(Zend_Exception $e)
- {
- echo "Caught exception: " . get_class($e) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ return;
+ }
+ foreach($rightroleslist as $rightroles) {
+ $rightroles->setRoleID($roleID);
+ try {
+ $rightrolesMapper->save($rightroles);
+ } catch(Zend_Exception $e) {
+ echo "Caught exception: " . get_class($e) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ 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) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ return;
+ }
+ $this->_redirect("/user/group/show/");
+ }
+ }
+ }
}