diff options
Diffstat (limited to 'application/modules/user')
| -rw-r--r-- | application/modules/user/controllers/GroupController.php | 141 | ||||
| -rw-r--r-- | application/modules/user/views/scripts/group/show.phtml | 233 |
2 files changed, 242 insertions, 132 deletions
diff --git a/application/modules/user/controllers/GroupController.php b/application/modules/user/controllers/GroupController.php index 9a5380a..e76286b 100644 --- a/application/modules/user/controllers/GroupController.php +++ b/application/modules/user/controllers/GroupController.php @@ -23,11 +23,11 @@ class User_GroupController extends Zend_Controller_Action $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); - + } else { $this->_helper->redirector('login', 'auth'); return; @@ -38,8 +38,8 @@ class User_GroupController extends Zend_Controller_Action { // ACL show overview if(!Pbs_Acl::checkRight('gso')) - $this->_redirect('/user'); - + $this->_redirect('/user'); + $this->view->groupList = $this->groupList; // Search @@ -74,7 +74,7 @@ class User_GroupController extends Zend_Controller_Action { // ACL create new group if(!Pbs_Acl::checkRight('gc')) - $this->_redirect('/user'); + $this->_redirect('/user'); if (!isset($_POST["add"])){ $addForm = new user_Form_GroupAdd(array('grouplist' => $this->groupList)); @@ -197,7 +197,7 @@ class User_GroupController extends Zend_Controller_Action { // ACL create new group if(!Pbs_Acl::checkRight('gsdo') && !Pbs_Acl::checkRight('gsdog')) - $this->_redirect('/user'); + $this->_redirect('/user'); $groupID = $this->_request->getParam('groupID'); if($groupID == '' || !Pbs_Acl::checkRight('gsdog')) { @@ -206,30 +206,30 @@ class User_GroupController extends Zend_Controller_Action } } if($groupID == $this->membership->getGroupID() && !Pbs_Acl::checkRight('gsdo')) - $this->_redirect('/user'); - + $this->_redirect('/user'); + $this->view->usergroup = $this->membership->getGroupID(); $this->view->requestgroup = $groupID; // ACL is he allowed to see the requests of a group ? // TODO: THERE IS NO RIGHT TO EDIT A GROUP - # if(Pbs_Acl::checkRight('')){ - $groupRequests = $this->groupRequestMapper->findBy(array('groupID' => $groupID),true); - if(isset($groupRequests)) { - foreach($groupRequests as $groupRequest) { - $person = $this->personmapper->find($groupRequest['personID']); - $groupRequestList[] = array( + # if(Pbs_Acl::checkRight('')){ + $groupRequests = $this->groupRequestMapper->findBy(array('groupID' => $groupID),true); + if(isset($groupRequests)) { + foreach($groupRequests as $groupRequest) { + $person = $this->personmapper->find($groupRequest['personID']); + $groupRequestList[] = array( 'grouprequestID' => $groupRequest['grouprequestID'], 'person' => $person - ); - } - if(is_array($groupRequestList)) { - $this->view->groupRequestList = $groupRequestList; - } - // TODO: expand with al inherit roles - $this->view->roleList = $this->rolemapper->findBy(array('groupID' => $groupID),true); + ); } + if(is_array($groupRequestList)) { + $this->view->groupRequestList = $groupRequestList; + } + // TODO: expand with al inherit roles + $this->view->roleList = $this->rolemapper->findBy(array('groupID' => $groupID),true); + } # } - + if(Pbs_Acl::checkRight('gsmg')){ $members = $this->membershipMapper->findBy(array('groupID' => $groupID),true); if(isset($members)) { @@ -239,6 +239,7 @@ class User_GroupController extends Zend_Controller_Action $role = $this->rolemapper->find($membership_tmp->getRoleID()); $membersList[] = array( 'membershipID' => $member['membershipID'], + 'suspended' => $member['suspended'], 'person' => $person, 'role' => $role ); @@ -302,8 +303,8 @@ class User_GroupController extends Zend_Controller_Action { // ACL delete a group if(!Pbs_Acl::checkRight('gd')) - $this->_redirect('/user'); - + $this->_redirect('/user'); + $this->_helper->viewRenderer->setNoRender(); $groupID = $this->_request->getParam('groupID'); if(!isset($groupID)) { @@ -341,7 +342,7 @@ class User_GroupController extends Zend_Controller_Action { // ACL grant a membership to request if(!Pbs_Acl::checkRight('gam')) - $this->_redirect('/user'); + $this->_redirect('/user'); $this->_helper->viewRenderer->setNoRender(); if(isset($_POST['grouprequestID']) && isset($_POST['roleID'])) { @@ -377,11 +378,11 @@ class User_GroupController extends Zend_Controller_Action 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); @@ -396,7 +397,91 @@ class User_GroupController extends Zend_Controller_Action } $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->setSuspended(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->setSuspended(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/"); + } } } } diff --git a/application/modules/user/views/scripts/group/show.phtml b/application/modules/user/views/scripts/group/show.phtml index b2a85ac..b01ade4 100644 --- a/application/modules/user/views/scripts/group/show.phtml +++ b/application/modules/user/views/scripts/group/show.phtml @@ -1,6 +1,6 @@ <h1>Groupdetails - <?php echo $this->group->getTitle();?></h1> -<?php -if($this->usergroup == $this->requestgroup){ +<?php +if($this->usergroup == $this->requestgroup){ echo $this->formButton('deletegroup', 'Delete', array( 'onclick' => 'self.location="/user/group/delete/"', 'class' => 'rightbutton')); @@ -18,111 +18,105 @@ else{ } ?> <div class='listelement'> - <div class='element'> - <div class='number'> - <?php - if($this->usergroup == $this->requestgroup){ ?> - <div class='smallnumber'>Your Group</div> - <?php }else{ ?> - <div class='smallnumber'>Group</div> - <?php echo $this->group->getID(); ?> - <?php } ?> - </div> - <div class='content'> - <div class='title'><?php echo $this->group->getTitle(); ?></div> - <div class='subtitle'><?php echo $this->group->getDescription(); ?></div> - <?php if(isset($parentGroup) && is_object($parentGroup)): ?> - <div class='details'> - <label>Superordinated Group:</label><div class='item'><?php echo $this->parentGroup->getTitle(); ?></div> - </div> - <?php endif ;?> - </div> - <div class='clear'></div> - </div> +<div class='element'> +<div class='number'><?php +if($this->usergroup == $this->requestgroup){ ?> +<div class='smallnumber'>Your Group</div> +<?php }else{ ?> +<div class='smallnumber'>Group</div> +<?php echo $this->group->getID(); ?> <?php } ?></div> +<div class='content'> +<div class='title'><?php echo $this->group->getTitle(); ?></div> +<div class='subtitle'><?php echo $this->group->getDescription(); ?></div> +<?php if(isset($parentGroup) && is_object($parentGroup)): ?> +<div class='details'><label>Superordinated Group:</label> +<div class='item'><?php echo $this->parentGroup->getTitle(); ?></div> +</div> +<?php endif ;?></div> +<div class='clear'></div> +</div> </div> <?php // Show Request List if(isset($this->groupRequestList)){ -?> + ?> <br /> <h2>Requests:</h2> -<div class='listelement'> - <?php - foreach($this->groupRequestList as $grouprequest) { +<div class='listelement'><?php +foreach($this->groupRequestList as $grouprequest) { $grouprequestID = $grouprequest['grouprequestID']; $person = $grouprequest['person']; ?> - <div class='element'> - <div class='content'> - <?php - if($this->usergroup == $this->requestgroup && (Pbs_Acl::checkRight('gam') || Pbs_Acl::checkRight('gdm'))){ - ?> - <div class='actions'> - <?php if(Pbs_Acl::checkRight('gam')): ?> - <form action="/user/group/grantperson" method="post"> - <input type="hidden" name="grouprequestID" value="<?php echo $grouprequestID; ?>" /> <?php printRoleSelect($this->roleList); ?> - <input type="image" src='/media/img/save.png' alt='Grant Person' name="confirm" value="confirm" /> - </form> - <?php endif; ?> - <?php if(Pbs_Acl::checkRight('gdm')): ?> - TODO - <?php endif; ?> - </div> - <?php - } - ?> - <div class='title'><?php echo $person->getTitle(); ?> <?php echo $person->getFirstname(); ?> <?php echo $person->getName(); ?></div> - <div class='subtitle'><?php echo $person->getCity(); ?></div> - <div class='details dispnone'> - <label>Email</label> - <div class='item'><?php echo $person->getEmail(); ?></div> - </div> - </div> - </div> - <?php - } +<div class='element'> +<div class='content'><?php +if($this->usergroup == $this->requestgroup && (Pbs_Acl::checkRight('gam') || Pbs_Acl::checkRight('gdm'))){ ?> +<div class='actions'><?php if(Pbs_Acl::checkRight('gam')): ?> +<form action="/user/group/grantperson" method="post"><input + type="hidden" name="grouprequestID" + value="<?php echo $grouprequestID; ?>" /> <?php printRoleSelect($this->roleList); ?> +<input type="image" src='/media/img/save.png' alt='Grant Person' + name="confirm" value="confirm" /> <?php endif; ?> <?php if(Pbs_Acl::checkRight('gdm')): ?> <a + href="<?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'group', + 'action' => 'decline', + 'grouprequestID' => $grouprequestID, + ), + 'default', + true) ?>"> <img src='/media/img/delete.png' + alt='Decline Membership' /></a> <?php endif; ?></form> +</div> + <?php +} +?> + +<div class='title'><?php echo $person->getTitle(); ?> <?php echo $person->getFirstname(); ?> <?php echo $person->getName(); ?></div> +<div class='subtitle'><?php echo $person->getCity(); ?></div> +<div class='details dispnone'><label>Email</label> +<div class='item'><?php echo $person->getEmail(); ?></div> +</div> </div> +</div> +<?php +} +?></div> <?php } // Show Memberlist if(isset($this->membersList) && Pbs_Acl::checkRight('gsmg')){ -?> + ?> <br /> <h2>Members:</h2> -<div class='listelement'> -<?php +<div class='listelement'><?php if(count($this->membersList)==0) - echo "This hroup has no members." +echo "This hroup has no members." +?> <?php foreach ($this->membersList as $k => $member): ?> <?php +$membershipID = $member['membershipID']; +$suspended = $member['suspended']; +$person = $member['person']; +$role = $member['role']; +$class=''; +if($person->getID() == $this->userIDsNamespace['personID']) +$class= 'highlight checked'; ?> -<?php foreach ($this->membersList as $k => $member): ?> - <?php - $membershipID = $member['membershipID']; - $person = $member['person']; - $role = $member['role']; - $class=''; - if($person->getID() == $this->userIDsNamespace['personID']) - $class= 'highlight checked'; +<div class='element<?php echo " $class";?>'><?php +if($person->getID() != $this->userIDsNamespace['personID']) { ?> - <div class='element<?php echo " $class";?>'> - <?php - if($person->getID() != $this->userIDsNamespace['personID']) { - ?> - <div class='number'> - <div class='smallnumber'>Person</div> - <?php echo $k+1; ?> - </div> - <?php - } - ?> - <div class='content'> - <div class='actions'> - <?php - if((Pbs_Acl::checkRight('gdmo') && $this->usergroup == $this->requestgroup) || (Pbs_Acl::checkRight('gdmog') && $this->usergroup != $this->requestgroup)): - ?> - <a href="<?php echo $this->url( +<div class='number'> +<div class='smallnumber'>Person</div> + <?php echo $k+1; ?></div> + <?php +} +?> +<div class='content'> +<div class='actions'><?php +if((Pbs_Acl::checkRight('gdmo') && $this->usergroup == $this->requestgroup) || (Pbs_Acl::checkRight('gdmog') && $this->usergroup != $this->requestgroup)): +?> <a + href="<?php echo $this->url( array( 'module' => 'user', 'controller' => 'group', @@ -130,26 +124,57 @@ if(count($this->membersList)==0) 'membershipID' => $membershipID, ), 'default', - true) ?>"> <img src='/media/img/delete.png' alt='Revoke Membership' /></a> - <?php - endif; - ?> - </div> - <div class='title'><?php echo $person->getFirstname(); ?> <?php echo $person->getName(); ?></div> - <div class='subtitle'>Role: <?php echo $role->getTitle(); ?></div> - <div class='details dispnone'> - <label>Email</label> - <div class='item'><?php echo $person->getEmail(); ?></div> - <label>City</label> - <div class='item'><?php echo $person->getCity(); ?></div> - </div> - </div> - <div class='clear'></div> - </div> -<?php endforeach ?> + true) ?>"> <img src='/media/img/delete.png' + alt='Revoke Membership' /></a> <?php + endif; + if(Pbs_Acl::checkRight('gsm')) { + if($suspended == 1) + { + ?> <a + href=" <?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'group', + 'action' => 'resumemembership', + 'membershipID' => $membershipID + ), + 'default', + true); ?>"> <img src='/media/img/resume.png' + alt='Resume Membership' /></a> <?php + } else { + ?> <a + href=" <?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'group', + 'action' => 'suspendmembership', + 'membershipID' => $membershipID + ), + 'default', + true); ?>"> <img src='/media/img/suspend.png' + alt='Suspend Membership' /></a> <?php + } + } + ?></div> +<div class='title'><?php echo $person->getFirstname(); ?> <?php echo $person->getName(); ?></div> +<div class='subtitle'>Role: <?php echo $role->getTitle(); ?></div> +<div class='details dispnone'><label>Email</label> +<div class='item'><?php echo $person->getEmail(); ?></div> +<label>City</label> +<div class='item'><?php echo $person->getCity(); ?></div> + <?php + if(Pbs_Acl::checkRight('gsm')) { + ?> <label>Membership suspended</label> +<div class='item'><?php if($suspended == 1) echo "yes"; else echo "no"; ?></div> + <?php + } + ?></div> </div> -<?php echo $this->memberPagination; ?> -<?php +<div class='clear'></div> +</div> + <?php endforeach ?></div> + <?php echo $this->memberPagination; ?> + <?php } |
