diff options
Diffstat (limited to 'application/modules/user/controllers/PoolController.php')
| -rw-r--r-- | application/modules/user/controllers/PoolController.php | 135 |
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; + } } |
