summaryrefslogtreecommitdiffstats
path: root/application/modules/user
diff options
context:
space:
mode:
Diffstat (limited to 'application/modules/user')
-rw-r--r--application/modules/user/controllers/GroupController.php141
-rw-r--r--application/modules/user/views/scripts/group/show.phtml233
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(); ?>&nbsp;<?php echo $person->getFirstname(); ?>&nbsp;<?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')): ?>&nbsp;<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(); ?>&nbsp;<?php echo $person->getFirstname(); ?>&nbsp;<?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
}