summaryrefslogtreecommitdiffstats
path: root/application/modules/user/controllers/PoolController.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/modules/user/controllers/PoolController.php')
-rw-r--r--application/modules/user/controllers/PoolController.php135
1 files changed, 126 insertions, 9 deletions
diff --git a/application/modules/user/controllers/PoolController.php b/application/modules/user/controllers/PoolController.php
index cf4dfe7..01b5a2a 100644
--- a/application/modules/user/controllers/PoolController.php
+++ b/application/modules/user/controllers/PoolController.php
@@ -2,30 +2,133 @@
class User_PoolController extends Zend_Controller_Action
{
-
+ private $membership;
public function init()
{
- /* Initialize action controller here */
+ $membershipMapper = new Application_Model_MembershipMapper();
+ $this->membership = new Application_Model_Membership();
+ $membershipMapper->find($_SESSION['membershipID'],$this->membership);
}
public function indexAction()
- {
- // action body
+ {
+ // TODO: ACL: is he allowed to see the pools of a group
+
+ $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);
+ }
+
+
+ $poolMapper = new Application_Model_PoolMapper();
+ $this->view->pools = $poolMapper->fetchAll();
+
+ $clientmapper = new Application_Model_ClientMapper();
+ $clients = $clientmapper->fetchAll();
+ foreach($clients as $c){
+ #$client = new Application_Model_Client($c);
+ $clientsArray[] = $c->toArray();
+ }
+ $assignedclientmapper = new Application_Model_PoolEntriesMapper();
+ $assignedclients = $assignedclientmapper->fetchAll();
+ foreach($assignedclients as $c){
+ $assignedclientsArray[] = $c->toArray();
+ }
+ $freeclients = $this->arrayDiff($clientsArray,$assignedclientsArray);
+
+ $this->view->freeclients = $freeclients;
}
- public function createpoolAction()
+ public function createpoolAction()
{
- // action body
+ // TODO: ACL: is he allowed to create a pool?
+ if (!isset($_POST["add"])){
+ $addfilterform = new user_Form_Pool(array('buttontext' => 'Create Pool'));
+ $this->view->addpool = $addfilterform;
+ }else {
+ $addpoolform = new user_Form_Pool(array('buttontext' => 'Create Pool'),$_POST);
+ if ($addpoolform->isValid($_POST)) {
+ try{
+ $pool = new Application_Model_Pool($_POST);
+ $pool->setGroupID($this->membership->getGroupID());
+ $poolmapper = new Application_Model_PoolMapper();
+ $poolmapper->save($pool);
+ $this->_redirect('/dev/pool/index/addresult/ok');
+ }catch (Zend_Exception $e) {
+ echo "Error message 2: " . $e->getMessage() . "\n";
+ $this->_redirect('/dev/pool/index/addresult/error');
+ }
+ }
+ $this->view->addpool = $addfilterform;
+ }
}
public function deletepoolAction()
{
- // action body
+ $poolID = $this->_request->getParam('poolID');
+ // TODO: ACL: is he allowed to delete a pool?
+ #if( he is allowed){
+ if(is_numeric($poolID)){
+ $poolmapper = new Application_Model_PoolMapper();
+ $pool = new Application_Model_Pool();
+ $poolmapper->find($poolID,$pool);
+ if($this->membership->getGroupID() == $pool->getGroupID()){
+ $deletepool = new Application_Model_Pool();
+ $deletepool->setID($poolID);
+ $poolmapper->delete($deletepool);
+ $this->_redirect('/user/pool/index/deleteresult/ok');
+ }
+ else{
+ $this->_redirect('/user/pool/index/deleteresult/forbidden');
+ }
+ }
+ $this->_redirect('/user/pool/index/deleteresult/error');
+ #}else{
+ # $this->_redirect('/user/pool/index/deleteresult/forbidden');
+ #}
}
public function editpoolAction()
{
- // action body
+ // TODO: ACL: is he allowed to edit a pool?
+ // TODO: is he allowed to edit this pool?
+ if (!isset($_POST["add"])){
+ $poolID = $this->_request->getParam('poolID');
+ $pool = new Application_Model_Pool();
+ $poolmapper = new Application_Model_PoolMapper();
+ $poolmapper->find($poolID,$pool);
+ $poolArray = $pool->toArray();
+ $editpool = new user_Form_Pool(array('buttontext' => 'Edit Pool'));
+ $editpool->populate($poolArray);
+ $this->view->editpool = $editpool;
+
+ }else {
+ $editpoolform = new user_Form_Pool(array('buttontext' => 'Edit Pool'),$_POST);
+ if ($editpoolform->isValid($_POST)) {
+ try{
+ $pool = new Application_Model_Pool($_POST);
+ $pool->setID($this->_request->getParam('poolID'));
+ $poolmapper = new Application_Model_PoolMapper();
+ $poolmapper->save($pool);
+ $this->_redirect('/dev/pool/index/modifyresult/ok');
+ }catch (Zend_Exception $e) {
+ echo "Error message 2: " . $e->getMessage() . "\n";
+ $this->_redirect('/dev/pool/index/modifyresult/error');
+ }
+ }
+ $this->view->editpool = $editpoolform;
+ }
}
public function linkclientAction()
@@ -37,7 +140,21 @@ class User_PoolController extends Zend_Controller_Action
{
// action body
}
-
+
+ // creates an array of two arrays
+ // first parameter is the list of all clients
+ // second parameter is the list of clients which are already in a group
+ // return value is a list of all clients, which are in no group
+ private function arrayDiff($a, $b){
+ foreach($a as $k1 => $i1){
+ foreach($b as $k2 => $i2){
+ if($i1['clientID'] == $i2['clientID']){
+ unset($a[$k1]);
+ }
+ }
+ }
+ return $a;
+ }
}