diff options
author | Simon | 2011-03-18 11:26:43 +0100 |
---|---|---|
committer | Simon | 2011-03-18 11:26:43 +0100 |
commit | 75965675618c0d59ff97ed6cc8a1286d69ba1b8d (patch) | |
tree | 94f473ce23b776993926dbd99af692de651d7963 | |
parent | Datenbank update, PoolController (diff) | |
download | pbs2-75965675618c0d59ff97ed6cc8a1286d69ba1b8d.tar.gz pbs2-75965675618c0d59ff97ed6cc8a1286d69ba1b8d.tar.xz pbs2-75965675618c0d59ff97ed6cc8a1286d69ba1b8d.zip |
PoolController fertig
-rw-r--r-- | .zfproject.xml | 1 | ||||
-rw-r--r-- | application/modules/user/controllers/ClientController.php | 147 | ||||
-rw-r--r-- | application/modules/user/controllers/PoolController.php | 135 | ||||
-rw-r--r-- | application/modules/user/forms/PoolClient.php | 30 | ||||
-rw-r--r-- | application/modules/user/views/scripts/pool/index.phtml | 7 | ||||
-rw-r--r-- | application/modules/user/views/scripts/pool/linkclient.phtml | 3 | ||||
-rw-r--r-- | library/Pbs/Notifier.php | 26 |
7 files changed, 258 insertions, 91 deletions
diff --git a/.zfproject.xml b/.zfproject.xml index 4a6e73f..22ccca6 100644 --- a/.zfproject.xml +++ b/.zfproject.xml @@ -266,6 +266,7 @@ <formFile formName="Login"/> <formFile formName="Client"/> <formFile formName="Pool"/> + <formFile formName="PoolClient"/> </formsDirectory> <layoutsDirectory enabled="false"/> <modelsDirectory> diff --git a/application/modules/user/controllers/ClientController.php b/application/modules/user/controllers/ClientController.php index bf64102..d40e1b1 100644 --- a/application/modules/user/controllers/ClientController.php +++ b/application/modules/user/controllers/ClientController.php @@ -46,88 +46,99 @@ class User_ClientController extends Zend_Controller_Action $hh = $this->_request->getParam('hh'); // TODO: ACL: is he authorized to create new clients? - if (!isset($_POST["add"])){ - $addclient = new user_Form_Client(array('buttontext' => 'Create Client')); - $this->view->addclient = $addclient; - } - else{ - $addclient = new user_Form_Client(array('buttontext' => 'Create Client'),$_POST); - print_a($_POST); - if ($addclient->isValid($_POST) || ($mac != '' && $hh != '') ) { - $client = new Application_Model_Client($_POST); - $mac = ($mac!='')?$mac:$_POST['macadress']; - $hh = ($hh!='')?$hh:$_POST['hardwarehash']; - $client->setMacadress($mac); - $client->setHardwarehash($hh); - $client->setGroupID($this->membership->getGroupID()); - $clientmapper = new Application_Model_ClientMapper(); - $clientmapper->save($client); - $this->_redirect('/user/client/addresult/ok'); - } - $this->view->addclient = $addclient; - } + #if( he is allowed){ + if (!isset($_POST["add"])){ + $addclient = new user_Form_Client(array('buttontext' => 'Create Client')); + $this->view->addclient = $addclient; + } + else{ + $addclient = new user_Form_Client(array('buttontext' => 'Create Client'),$_POST); + print_a($_POST); + if ($addclient->isValid($_POST) || ($mac != '' && $hh != '') ) { + $client = new Application_Model_Client($_POST); + $mac = ($mac!='')?$mac:$_POST['macadress']; + $hh = ($hh!='')?$hh:$_POST['hardwarehash']; + $client->setMacadress($mac); + $client->setHardwarehash($hh); + $client->setGroupID($this->membership->getGroupID()); + $clientmapper = new Application_Model_ClientMapper(); + $clientmapper->save($client); + $this->_redirect('/user/client/addresult/ok'); + } + $this->view->addclient = $addclient; + } + #}else{ + # $this->_redirect('/user/'); + #} } public function removeclientAction() { $clientID = $this->_request->getParam('clientID'); // TODO: ACL: is he authorized to delete clients? - $clientMapper = new Application_Model_ClientMapper(); - if(is_numeric($clientID)){ - $client = new Application_Model_Client(); - $clientMapper->find($clientID,$client); - // TODO: ACL: Is He authorized to delete - if($client->getGroupID() == $this->membership->getGroupID()){ - $clientMapper = new Application_Model_ClientMapper(); - $clientMapper->delete($client); - $this->_redirect('/user/client/index/deleteresult/ok'); - } - else{ - $this->_redirect('/user/client/index/deleteresult/forbidden'); + #if( he is allowed){ + $clientMapper = new Application_Model_ClientMapper(); + if(is_numeric($clientID)){ + $client = new Application_Model_Client(); + $clientMapper->find($clientID,$client); + if($client->getGroupID() == $this->membership->getGroupID()){ + $clientMapper = new Application_Model_ClientMapper(); + $clientMapper->delete($client); + $this->_redirect('/user/client/index/deleteresult/ok'); + } + else{ + $this->_redirect('/user/client/index/deleteresult/forbidden'); + } } - } - $this->_redirect('/user/client/index/deleteresult/error'); + $this->_redirect('/user/client/index/deleteresult/error'); + #}else{ + # $this->_redirect('/user/'); + #} } public function editclientAction(){ - // TODO: ACL: Is he authorized to edit clients ? - if (!isset($_POST["add"])){ - $clientID = $this->_request->getParam('clientID'); - $client = new Application_Model_Client(); - $mapper = new Application_Model_ClientMapper(); - $mapper->find($clientID,$client); + // TODO: ACL: Is he authorized to edit clients ? + #if( he is allowed){ + if (!isset($_POST["add"])){ + $clientID = $this->_request->getParam('clientID'); + $client = new Application_Model_Client(); + $mapper = new Application_Model_ClientMapper(); + $mapper->find($clientID,$client); - if($client->getGroupID() == $this->membership->getGroupID()){ - $editclient = new user_Form_Client(array('buttontext' => 'Edit Client')); - $editclient->populate($client->toArray()); - $this->view->editclient = $editclient; - } - else{ - $this->_redirect('/user/client/index/modifyresult/error'); - } - } - else{ - $editclient = new user_Form_Client(array('buttontext' => 'Edit Client'),$_POST); - if ($editclient->isValid($_POST) || ($mac != '' && $hh != '') ) { - $client = new Application_Model_Client($_POST); - $client->setID($this->_request->getParam('clientID')); + if($client->getGroupID() == $this->membership->getGroupID()){ + $editclient = new user_Form_Client(array('buttontext' => 'Edit Client')); + $editclient->populate($client->toArray()); + $this->view->editclient = $editclient; + } + else{ + $this->_redirect('/user/client/index/modifyresult/error'); + } + } + else{ + $editclient = new user_Form_Client(array('buttontext' => 'Edit Client'),$_POST); + if ($editclient->isValid($_POST) || ($mac != '' && $hh != '') ) { + $client = new Application_Model_Client($_POST); + $client->setID($this->_request->getParam('clientID')); - $dbclient = new Application_Model_Client(); - $clientMapper = new Application_Model_ClientMapper(); - $clientMapper->find($this->_request->getParam('clientID'),$dbclient); + $dbclient = new Application_Model_Client(); + $clientMapper = new Application_Model_ClientMapper(); + $clientMapper->find($this->_request->getParam('clientID'),$dbclient); - if($dbclient->getGroupID() == $this->membership->getGroupID()){ - $client->setGroupID($this->membership->getGroupID()); - $clientmapper = new Application_Model_ClientMapper(); - $clientmapper->save($client); - $this->_redirect('/user/client/index/modifyresult/ok'); - } - else{ - $this->_redirect('/user/client/index/modifyresult/error'); + if($dbclient->getGroupID() == $this->membership->getGroupID()){ + $client->setGroupID($this->membership->getGroupID()); + $clientmapper = new Application_Model_ClientMapper(); + $clientmapper->save($client); + $this->_redirect('/user/client/index/modifyresult/ok'); + } + else{ + $this->_redirect('/user/client/index/modifyresult/error'); + } } - } - $this->view->editclient = $editclient; - } + $this->view->editclient = $editclient; + } + #}else{ + # $this->_redirect('/user/'); + #} } diff --git a/application/modules/user/controllers/PoolController.php b/application/modules/user/controllers/PoolController.php index 01b5a2a..7ff4da1 100644 --- a/application/modules/user/controllers/PoolController.php +++ b/application/modules/user/controllers/PoolController.php @@ -29,7 +29,16 @@ class User_PoolController extends Zend_Controller_Action $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); + } $poolMapper = new Application_Model_PoolMapper(); $this->view->pools = $poolMapper->fetchAll(); @@ -70,7 +79,7 @@ class User_PoolController extends Zend_Controller_Action $this->_redirect('/dev/pool/index/addresult/error'); } } - $this->view->addpool = $addfilterform; + $this->view->addpool = $addpoolform; } } @@ -95,36 +104,49 @@ class User_PoolController extends Zend_Controller_Action } $this->_redirect('/user/pool/index/deleteresult/error'); #}else{ - # $this->_redirect('/user/pool/index/deleteresult/forbidden'); + # $this->_redirect('/user/'); #} } public function editpoolAction() { // 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'); + $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; - + $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{ - $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'); + $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('/dev/pool/index/modifyresult/error'); + $this->_redirect('/user/pool/index/modifyresult/error'); } } $this->view->editpool = $editpoolform; @@ -132,13 +154,88 @@ class User_PoolController extends Zend_Controller_Action } public function linkclientAction() - { - // action body + { + $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() { - // action body + $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 diff --git a/application/modules/user/forms/PoolClient.php b/application/modules/user/forms/PoolClient.php new file mode 100644 index 0000000..52ba7d8 --- /dev/null +++ b/application/modules/user/forms/PoolClient.php @@ -0,0 +1,30 @@ +<?php + +class user_Form_PoolClient extends Zend_Form +{ + private $clients; + + public function init() + { + $this->setName("addClientToPool"); + $this->setMethod('post'); + + $clientfield = $this->createElement('select','clientID'); + $clientfield ->setLabel('Client:'); + foreach($this->clients as $c){ + $clientfield->addMultiOption($c['clientID'],$c['macadress']." - ".$c['hardwarehash']); + } + $this->addElement($clientfield); + + $this->addElement('submit', 'add', array( + 'required' => false, + 'ignore' => true, + 'label' => 'Save', + )); + } + public function setClients($clients){ + $this->clients = $clients; + return $this; + } +} + diff --git a/application/modules/user/views/scripts/pool/index.phtml b/application/modules/user/views/scripts/pool/index.phtml index 05b880a..8ebabe8 100644 --- a/application/modules/user/views/scripts/pool/index.phtml +++ b/application/modules/user/views/scripts/pool/index.phtml @@ -1,4 +1,5 @@ <h1>Pools</h1> +<?php if($this->notification != ''){echo $this->notification;} ?> <?php echo $this->formButton('createconfig', 'Create Pool', array( 'onclick' => 'self.location="/user/pool/createpool"', 'class' => 'addbutton'))?> @@ -14,7 +15,7 @@ </tr> <?php foreach ($this->pools as $pool): ?> <tr class=entry> - <td><?php echo $this->escape($pool->getID()) ?></td> + <!--<td><?php echo $this->escape($pool->getID()) ?></td>--> <td><?php echo $this->escape($pool->getTitle()) ?></td> <td><?php echo $this->escape($pool->getDescription()) ?></td> <td><?php echo $this->escape($pool->getLocation()) ?></td> @@ -56,7 +57,7 @@ <td colspan=6> <table> <tr> - <th>ClientID</th> + <!-- <th>ClientID</th> --> <th>Mac</th> <th>Hardwarehash</th> <th>Actions</th> @@ -64,7 +65,7 @@ <?php foreach ($clients as $client): ?> <tr> - <td><?php echo $client['clientID'];?></td> + <!-- <td><?php echo $client['clientID'];?></td> --> <?php $cli = new Application_Model_Client(); $clientMapper = new Application_Model_ClientMapper(); diff --git a/application/modules/user/views/scripts/pool/linkclient.phtml b/application/modules/user/views/scripts/pool/linkclient.phtml index a2f9a6c..eebe111 100644 --- a/application/modules/user/views/scripts/pool/linkclient.phtml +++ b/application/modules/user/views/scripts/pool/linkclient.phtml @@ -1 +1,2 @@ -<br /><br /><center>View script for controller <b>Pool</b> and script/action name <b>linkpool</b></center>
\ No newline at end of file +<?php +echo $this->poolclient; diff --git a/library/Pbs/Notifier.php b/library/Pbs/Notifier.php index 256aea4..23fec57 100644 --- a/library/Pbs/Notifier.php +++ b/library/Pbs/Notifier.php @@ -45,6 +45,32 @@ class Pbs_Notifier{ break; } break; + case "link": + switch($result){ + case "forbidden": + $result = "<div class='errorbox'>Not allowed to link this</div>"; + break; + case "ok": + $result = "<div class='okbox'>Link sucessful</div>"; + break; + case "error": + $result = "<div class='warningbox'>Link failed</div>"; + break; + } + break; + case "unlink": + switch($result){ + case "forbidden": + $result = "<div class='errorbox'>Not allowed to unlink this</div>"; + break; + case "ok": + $result = "<div class='okbox'>Unlink sucessful</div>"; + break; + case "error": + $result = "<div class='warningbox'>Unlink failed</div>"; + break; + } + break; } return $result; |