summaryrefslogtreecommitdiffstats
path: root/application/modules/user/controllers/PoolController.php
diff options
context:
space:
mode:
authorSebastian Schmelzer2012-01-11 14:36:35 +0100
committerSebastian Schmelzer2012-01-11 14:36:35 +0100
commitfca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e (patch)
tree6e6aaf749f34db8c7c7153c23ef85c57187430bb /application/modules/user/controllers/PoolController.php
parentAPI: mit addBootos kann man nun auch editieren (diff)
downloadpbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.gz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.xz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.zip
format source files
Diffstat (limited to 'application/modules/user/controllers/PoolController.php')
-rw-r--r--application/modules/user/controllers/PoolController.php685
1 files changed, 336 insertions, 349 deletions
diff --git a/application/modules/user/controllers/PoolController.php b/application/modules/user/controllers/PoolController.php
index d85bfdc..0f6636d 100644
--- a/application/modules/user/controllers/PoolController.php
+++ b/application/modules/user/controllers/PoolController.php
@@ -1,354 +1,341 @@
-<?php
+<? php
/*
* Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
- * This program is free software distributed under the GPL version 2.
- * See http://gpl.openslx.org/
- *
- * If you have any feedback please consult http://feedback.openslx.org/ and
- * send your suggestions, praise, or complaints to feedback@openslx.org
- *
- * General information about OpenSLX can be found at http://openslx.org/
- */
-
-class User_PoolController extends Zend_Controller_Action
-{
- private $membership;
- protected $page;
-
- public function init()
- {
- if (Zend_Auth::getInstance()->hasIdentity()) {
- $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
- if($userIDsNamespace['membershipID'] ==''){
- $pbsNotifier = new Pbs_Notifier();
- echo $pbsNotifier->notify('No membershipID set','forbidden');
- }
-
- $membershipMapper = new Application_Model_MembershipMapper();
- $this->membership = new Application_Model_Membership();
- $membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);
- } else {
- $this->_helper->redirector('login', 'auth');
- }
- $this->page = $this->_request->getParam('page');
- }
-
- public function indexAction()
- {
- // ACL: is he allowed to see the pools of a group
- if(!Pbs_Acl::checkRight('poo'))
- $this->_redirect('/user');
-
- $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(array('groupID' => $this->membership->getGroupID()),true);
- foreach($pools as $pool){
- $ff = new Application_Model_Pool();
- $ff->setOptions($pool);
- $ff->setID($pool['poolID']);
- $yourpools[] = $ff;
- }
-
- // Search
- $search = $this->_request->getParam('search');
- $mySearch = new Pbs_Search();
- $mySearch->setSearchTerm($search) ->setModule('pool');
- if($search != ''){
- $this->view->search = $mySearch->getSearchTerm();
- $yourpools = $mySearch->search($yourpools);
- }
- $this->view->searchform = $mySearch->searchForm();
-
- // Pagination
- $pagination = new Pbs_Pagination();
- $pagination->setPerPage(10)
- ->setElement($yourpools)
- ->setRequestPage($this->_request->getParam('page'))
- ->setPageUrl('/user/pool/index'.((isset($this->view->search))?'/search/'.$this->view->search:''));
- $yourpools = $pagination->getElements();
-
- $this->view->pagination = $pagination->pagination();
- $this->view->page = $pagination->getRequestPage();
- $this->view->pools = $yourpools;
-
-
- // Get all Clients from this group
- $clientmapper = new Application_Model_ClientMapper();
- $clientsArray = $clientmapper->findBy(array('groupID' => $this->membership->getGroupID()),true);
-
- // Get all assigned Clients
- $assignedclientmapper = new Application_Model_PoolEntriesMapper();
- $assignedclients = $assignedclientmapper->fetchAll();
- foreach($assignedclients as $c){
- $assignedclientsArray[] = $c->toArray();
- }
-
- $db = Zend_Db_Table::getDefaultAdapter();
- // extract the un-assigned clients from the clientlist of the group
- $stmt = $db->query("SELECT c.clientID, c.groupID, macadress,hardwarehash,created
- FROM pbs_poolentries pe RIGHT OUTER JOIN pbs_client c ON
- c.clientID = pe.clientID
- WHERE poolentriesID IS NULL
- AND c.groupID = '".$this->membership->getGroupID()."'");
-
- $freeclients = $stmt->fetchAll();
- // Format Time-String
- foreach($freeclients as $k=>$cig){-
- $freeclients[$k]['created'] = date(Zend_Registry::get('dateformat'),$cig['created']);
- }
-
- if(Pbs_Acl::checkRight('posuc'))
- $this->view->freeclients = $freeclients;
- }
-
- public function searchAction(){
- $this->_redirect('/user/pool/index/search/'.($_GET['search']));
- }
-
- public function createpoolAction()
- {
- // ACL: is he allowed to create a pool?
- if(!Pbs_Acl::checkRight('poc'))
- $this->_redirect('/user');
-
- if (!isset($_POST["add"])){
- $addfilterform = new user_Form_Pool(array(
- 'buttontext' => 'Create Pool',
- 'page' => $this->page));
- $this->view->addpool = $addfilterform;
- }else {
- $addpoolform = new user_Form_Pool(array(
- 'buttontext' => 'Create Pool',
- 'page' => $this->page),$_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('/user/pool/index/addresult/ok');
- }catch (Zend_Exception $e) {
- echo "Error message 2: " . $e->getMessage() . "\n";
- $this->_redirect('/user/pool/index/addresult/error');
- }
- }
- $this->view->addpool = $addpoolform;
- }
- }
-
- public function deletepoolAction()
- {
- $poolID = $this->_request->getParam('poolID');
-
- // ACL: is he allowed to delete a pool?
- if(!Pbs_Acl::checkRight('pod'))
- $this->_redirect('/user');
-
- 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/page/'.$this->page.'/deleteresult/ok');
- }
- else{
- $this->_redirect('/user/pool/index/page/'.$this->page.'/deleteresult/forbidden');
- }
- }
- $this->_redirect('/user/pool/index/page/'.$this->page.'/deleteresult/error');
- }
-
- public function editpoolAction()
- {
- // ACL: is he allowed to edit a pool?
- if(!Pbs_Acl::checkRight('poe'))
- $this->_redirect('/user');
-
- 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',
- 'page' => $this->page));
- $editpool->populate($poolArray);
- $this->view->editpool = $editpool;
- }
- else{
- $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/forbidden');
- }
- }else {
- $editpoolform = new user_Form_Pool(array(
- 'buttontext' => 'Edit Pool',
- 'page' => $this->page),$_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)
- ->setGroupID($this->membership->getGroupID());
- $poolmapper->save($pool);
- $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/ok');
- }
- else{
- $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/forbidden');
- }
- }catch (Zend_Exception $e) {
- echo "Error message 2: " . $e->getMessage() . "\n";
- $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/error');
- }
- }
- $this->view->editpool = $editpoolform;
- }
- }
-
- public function linkclientAction()
- {
- $clientID = $this->_request->getParam('clientID');
- $poolID = $this->_request->getParam('poolID');
-
- // ACL: Is he allowed to link clients to pools?
- if(!Pbs_Acl::checkRight('polc'))
- $this->_redirect('/user');
-
- if(!isset($_POST['clientID']) && ($clientID == '')){
- $clientmapper = new Application_Model_ClientMapper();
- $clients = $clientmapper->findBy(array('groupID',$this->membership->getGroupID()),true);
- $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,
- 'page' => $this->page));
- $this->view->poolclient = $poolclient;
- }else {
- $poolclient = new user_Form_PoolClient(array(
- 'buttontext' => 'Link Client',
- 'page' => $this->page),$_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/page/'.$this->page.'/linkresult/ok');
- }
- else{
- $this->_redirect('/user/pool/index/page/'.$this->page.'/linkresult/forbidden');
- }
- }catch (Zend_Exception $e) {
- echo "Error message 2: " . $e->getMessage() . "\n";
- $this->_redirect('/user/pool/index/page/'.$this->page.'/linkresult/error');
- }
- $this->view->poolclient = $poolclient;
- }
- }
-
- public function unlinkclientAction()
- {
- $poolentriesID = $this->_request->getParam('poolentriesID');
-
- // ACL: Is he allowed to unlink clients from pools?
- if(!Pbs_Acl::checkRight('pouc'))
- $this->_redirect('/user');
-
- 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/page/'.$this->page.'/unlinkresult/ok');
- }
- else{
- $this->_redirect('/user/pool/index/page/'.$this->page.'/unlinkresult/forbidden');
- }
- }
- else{
- $this->_redirect('/user/pool/index/page/'.$this->page.'/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;
- }
+* This program is free software distributed under the GPL version 2.
+* See http://gpl.openslx.org/
+*
+* If you have any feedback please consult http://feedback.openslx.org/ and
+* send your suggestions, praise, or complaints to feedback@openslx.org
+*
+* General information about OpenSLX can be found at http://openslx.org/
+*/
+
+class User_PoolController extends Zend_Controller_Action {
+ private $membership;
+ protected $page;
+
+ public function init() {
+ if (Zend_Auth::getInstance()->hasIdentity()) {
+ $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
+ if($userIDsNamespace['membershipID'] == '') {
+ $pbsNotifier = new Pbs_Notifier();
+ echo $pbsNotifier->notify('No membershipID set', 'forbidden');
+ }
+
+ $membershipMapper = new Application_Model_MembershipMapper();
+ $this->membership = new Application_Model_Membership();
+ $membershipMapper->find($userIDsNamespace['membershipID'], $this->membership);
+ } else {
+ $this->_helper->redirector('login', 'auth');
+ }
+ $this->page = $this->_request->getParam('page');
+ }
+
+ public function indexAction() {
+ // ACL: is he allowed to see the pools of a group
+ if(!Pbs_Acl::checkRight('poo'))
+ { $this->_redirect('/user'); }
+
+ $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(array('groupID' => $this->membership->getGroupID()), true);
+ foreach($pools as $pool) {
+ $ff = new Application_Model_Pool();
+ $ff->setOptions($pool);
+ $ff->setID($pool['poolID']);
+ $yourpools[] = $ff;
+ }
+
+ // Search
+ $search = $this->_request->getParam('search');
+ $mySearch = new Pbs_Search();
+ $mySearch->setSearchTerm($search) ->setModule('pool');
+ if($search != '') {
+ $this->view->search = $mySearch->getSearchTerm();
+ $yourpools = $mySearch->search($yourpools);
+ }
+ $this->view->searchform = $mySearch->searchForm();
+
+ // Pagination
+ $pagination = new Pbs_Pagination();
+ $pagination->setPerPage(10)
+ ->setElement($yourpools)
+ ->setRequestPage($this->_request->getParam('page'))
+ ->setPageUrl('/user/pool/index'.((isset($this->view->search)) ? '/search/'.$this->view->search : ''));
+ $yourpools = $pagination->getElements();
+
+ $this->view->pagination = $pagination->pagination();
+ $this->view->page = $pagination->getRequestPage();
+ $this->view->pools = $yourpools;
+
+
+ // Get all Clients from this group
+ $clientmapper = new Application_Model_ClientMapper();
+ $clientsArray = $clientmapper->findBy(array('groupID' => $this->membership->getGroupID()), true);
+
+ // Get all assigned Clients
+ $assignedclientmapper = new Application_Model_PoolEntriesMapper();
+ $assignedclients = $assignedclientmapper->fetchAll();
+ foreach($assignedclients as $c) {
+ $assignedclientsArray[] = $c->toArray();
+ }
+
+ $db = Zend_Db_Table::getDefaultAdapter();
+ // extract the un-assigned clients from the clientlist of the group
+ $stmt = $db->query("SELECT c.clientID, c.groupID, macadress,hardwarehash,created
+ FROM pbs_poolentries pe RIGHT OUTER JOIN pbs_client c ON
+ c.clientID = pe.clientID
+ WHERE poolentriesID IS NULL
+ AND c.groupID = '".$this->membership->getGroupID()."'");
+
+ $freeclients = $stmt->fetchAll();
+ // Format Time-String
+ foreach($freeclients as $k => $cig) {
+ -
+ $freeclients[$k]['created'] = date(Zend_Registry::get('dateformat'), $cig['created']);
+ }
+
+ if(Pbs_Acl::checkRight('posuc'))
+ { $this->view->freeclients = $freeclients; }
+ }
+
+ public function searchAction() {
+ $this->_redirect('/user/pool/index/search/'.($_GET['search']));
+ }
+
+ public function createpoolAction() {
+ // ACL: is he allowed to create a pool?
+ if(!Pbs_Acl::checkRight('poc'))
+ { $this->_redirect('/user'); }
+
+ if (!isset($_POST["add"])) {
+ $addfilterform = new user_Form_Pool(array(
+ 'buttontext' => 'Create Pool',
+ 'page' => $this->page));
+ $this->view->addpool = $addfilterform;
+ } else {
+ $addpoolform = new user_Form_Pool(array(
+ 'buttontext' => 'Create Pool',
+ 'page' => $this->page), $_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('/user/pool/index/addresult/ok');
+ } catch (Zend_Exception $e) {
+ echo "Error message 2: " . $e->getMessage() . "\n";
+ $this->_redirect('/user/pool/index/addresult/error');
+ }
+ }
+ $this->view->addpool = $addpoolform;
+ }
+ }
+
+ public function deletepoolAction() {
+ $poolID = $this->_request->getParam('poolID');
+
+ // ACL: is he allowed to delete a pool?
+ if(!Pbs_Acl::checkRight('pod'))
+ { $this->_redirect('/user'); }
+
+ 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/page/'.$this->page.'/deleteresult/ok');
+ } else {
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/deleteresult/forbidden');
+ }
+ }
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/deleteresult/error');
+ }
+
+ public function editpoolAction() {
+ // ACL: is he allowed to edit a pool?
+ if(!Pbs_Acl::checkRight('poe'))
+ { $this->_redirect('/user'); }
+
+ 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',
+ 'page' => $this->page));
+ $editpool->populate($poolArray);
+ $this->view->editpool = $editpool;
+ } else {
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/forbidden');
+ }
+ } else {
+ $editpoolform = new user_Form_Pool(array(
+ 'buttontext' => 'Edit Pool',
+ 'page' => $this->page), $_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)
+ ->setGroupID($this->membership->getGroupID());
+ $poolmapper->save($pool);
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/ok');
+ } else {
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/forbidden');
+ }
+ } catch (Zend_Exception $e) {
+ echo "Error message 2: " . $e->getMessage() . "\n";
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/modifyresult/error');
+ }
+ }
+ $this->view->editpool = $editpoolform;
+ }
+ }
+
+ public function linkclientAction() {
+ $clientID = $this->_request->getParam('clientID');
+ $poolID = $this->_request->getParam('poolID');
+
+ // ACL: Is he allowed to link clients to pools?
+ if(!Pbs_Acl::checkRight('polc'))
+ { $this->_redirect('/user'); }
+
+ if(!isset($_POST['clientID']) && ($clientID == '')) {
+ $clientmapper = new Application_Model_ClientMapper();
+ $clients = $clientmapper->findBy(array('groupID', $this->membership->getGroupID()), true);
+ $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,
+ 'page' => $this->page));
+ $this->view->poolclient = $poolclient;
+ } else {
+ $poolclient = new user_Form_PoolClient(array(
+ 'buttontext' => 'Link Client',
+ 'page' => $this->page), $_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/page/'.$this->page.'/linkresult/ok');
+ } else {
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/linkresult/forbidden');
+ }
+ } catch (Zend_Exception $e) {
+ echo "Error message 2: " . $e->getMessage() . "\n";
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/linkresult/error');
+ }
+ $this->view->poolclient = $poolclient;
+ }
+ }
+
+ public function unlinkclientAction() {
+ $poolentriesID = $this->_request->getParam('poolentriesID');
+
+ // ACL: Is he allowed to unlink clients from pools?
+ if(!Pbs_Acl::checkRight('pouc'))
+ { $this->_redirect('/user'); }
+
+ 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/page/'.$this->page.'/unlinkresult/ok');
+ } else {
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/unlinkresult/forbidden');
+ }
+ } else {
+ $this->_redirect('/user/pool/index/page/'.$this->page.'/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;
+ }
}