notify('No membershipID set','forbidden'); } $membershipMapper = new Application_Model_MembershipMapper(); $this->membership = new Application_Model_Membership(); $membershipMapper->find($_SESSION['membershipID'],$this->membership); } public function indexAction() { // 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); } $result = $this->_request->getParam('linkresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('link',$result); } $result = $this->_request->getParam('unlinkresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('unlink',$result); } // get all pools from this group $poolMapper = new Application_Model_PoolMapper(); $pools = $poolMapper->findBy('groupID',$this->membership->getGroupID()); foreach($pools as $pool){ $ff = new Application_Model_Pool(); $ff->setOptions($pool); $ff->setID($pool['poolID']); $yourpools[] = $ff; } $this->view->pools = $yourpools; // Get all Clients from this group $clientmapper = new Application_Model_ClientMapper(); $clientsArray = $clientmapper->findBy('groupID',$this->membership->getGroupID()); // Get all assigned Clients $assignedclientmapper = new Application_Model_PoolEntriesMapper(); $assignedclients = $assignedclientmapper->fetchAll(); foreach($assignedclients as $c){ $assignedclientsArray[] = $c->toArray(); } // extract the un-assigned clients from the clientlist of the group $freeclients = $this->arrayDiff($clientsArray,$assignedclientsArray); $this->view->freeclients = $freeclients; } public function createpoolAction() { // 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 = $addpoolform; } } public function deletepoolAction() { $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/'); #} } public function editpoolAction() { // TODO: ACL: is he allowed to edit a pool? if (!isset($_POST["add"])){ $poolID = $this->_request->getParam('poolID'); $pool = new Application_Model_Pool(); $poolmapper = new Application_Model_PoolMapper(); $poolmapper->find($poolID,$pool); if($pool->getGroupID() == $this->membership->getGroupID()){ $poolArray = $pool->toArray(); $editpool = new user_Form_Pool(array('buttontext' => 'Edit Pool')); $editpool->populate($poolArray); $this->view->editpool = $editpool; } else{ $this->_redirect('/user/pool/index/modifyresult/forbidden'); } }else { $editpoolform = new user_Form_Pool(array('buttontext' => 'Edit Pool'),$_POST); if ($editpoolform->isValid($_POST)) { try{ $poolmapper = new Application_Model_PoolMapper(); $poolID = $this->_request->getParam('poolID'); $pooldb = new Application_Model_Pool(); $poolmapper->find($poolID,$pooldb); print_a($pooldb->getGroupID(), $this->membership->getGroupID()); if($pooldb->getGroupID() == $this->membership->getGroupID()){ $pool = new Application_Model_Pool($_POST); $pool->setID($poolID); $pool->setGroupID($this->membership->getGroupID()); $poolmapper->save($pool); $this->_redirect('/user/pool/index/modifyresult/ok'); } else{ $this->_redirect('/user/pool/index/modifyresult/forbidden'); } }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; $this->_redirect('/user/pool/index/modifyresult/error'); } } $this->view->editpool = $editpoolform; } } public function linkclientAction() { $clientID = $this->_request->getParam('clientID'); $poolID = $this->_request->getParam('poolID'); // TODO: ACL: Is he allowed to link clients to pools? if(!isset($_POST['clientID']) && ($clientID == '')){ $clientmapper = new Application_Model_ClientMapper(); $clients = $clientmapper->findBy('groupID',$this->membership->getGroupID()); $assignedclientmapper = new Application_Model_PoolEntriesMapper(); $assignedclients = $assignedclientmapper->fetchAll(); foreach($assignedclients as $c){ $assignedclientsArray[] = $c->toArray(); } $freeclients = $this->arrayDiff($clients,$assignedclientsArray); $poolclient = new user_Form_PoolClient(array('buttontext' => 'Link Client','clients'=> $freeclients)); $this->view->poolclient = $poolclient; }else { $poolclient = new dev_Form_PoolClient(array('buttontext' => 'Link Client'),$_POST); try{ $poolID = $this->_request->getParam('poolID'); $poolmapper = new Application_Model_PoolMapper(); $pooldb = new Application_Model_Pool(); $poolmapper->find($poolID,$pooldb); $clientmapper = new Application_Model_ClientMapper(); $clientdb = new Application_Model_Client(); $clientmapper->find($clientID,$clientdb); if($pooldb->getGroupID() == $this->membership->getGroupID() && $clientdb->getGroupID() == $this->membership->getGroupID()){ $poolentriesmapper = new Application_Model_PoolEntriesMapper(); $poolentry = new Application_Model_PoolEntries($_POST); $poolentry->setPoolID($poolID); if($poolentry->getClientID() == ''){ $poolentry->setClientID($clientID); } $poolentriesmapper->save($poolentry); $this->_redirect('/user/pool/index/linkresult/ok'); } else{ $this->_redirect('/user/pool/index/linkresult/forbidden'); } }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; $this->_redirect('/user/pool/index/linkresult/error'); } $this->view->poolclient = $poolclient; } } public function unlinkclientAction() { $poolentriesID = $this->_request->getParam('poolentriesID'); // TODO: ACL: Is he allowed to unlink clients from pools? if(is_numeric($poolentriesID)){ $poolentriesMapper = new Application_Model_PoolEntriesMapper(); $poolentry = new Application_Model_PoolEntries(); $poolentriesMapper->find($poolentriesID,$poolentry); $clientMapper = new Application_Model_ClientMapper(); $client = new Application_Model_Client(); $poolMapper = new Application_Model_PoolMapper(); $pool = new Application_Model_Pool(); $clientMapper->find($poolentry->getClientID(),$client); $poolMapper->find($poolentry->getPoolID(),$pool); if($pool->getGroupID() == $this->membership->getGroupID() && $client->getGroupID() == $this->membership->getGroupID()){ $deletepoolentries = new Application_Model_PoolEntries(); $deletepoolentries->setID($poolentriesID); $deletepoolentriesmapper = new Application_Model_PoolEntriesMapper(); $deletepoolentriesmapper->delete($deletepoolentries); $this->_redirect('/user/pool/index/unlinkresult/ok'); } else{ $this->_redirect('/user/pool/index/unlinkresult/forbidden'); } } else{ $this->_redirect('/user/pool/index/unlinkresult/error'); } } // 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; } }