diff options
Diffstat (limited to 'application/modules/user/controllers/ClientController.php')
| -rw-r--r-- | application/modules/user/controllers/ClientController.php | 390 |
1 files changed, 190 insertions, 200 deletions
diff --git a/application/modules/user/controllers/ClientController.php b/application/modules/user/controllers/ClientController.php index 76419a8..40c8c73 100644 --- a/application/modules/user/controllers/ClientController.php +++ b/application/modules/user/controllers/ClientController.php @@ -1,203 +1,193 @@ -<?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_ClientController 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'); - } - /* Initialize action controller here */ - $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 authorized to see this ? - if(!Pbs_Acl::checkRight('clo')) - $this->_redirect('/user'); - - // Get the Clients which booted with a bootiso of this 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); - } - - $clientMapper = new Application_Model_ClientMapper(); - $clientsInGroup = $clientMapper->findBy(array('groupID' => $this->membership->getGroupID()),true); - - // Search - $search = $this->_request->getParam('search'); - $mySearch = new Pbs_Search(); - $mySearch->setSearchTerm($search); - $mySearch->setModule('client'); - if($search != ''){ - $this->view->search = $mySearch->getSearchTerm(); - $clientsInGroup = $mySearch->search($clientsInGroup); - } - $this->view->searchform = $mySearch->searchForm(); - - // Format Time-String - foreach($clientsInGroup as $k=>$cig){ - $clientsInGroup[$k]['created'] = date(Zend_Registry::get('dateformat'),$cig['created']); - } - - // Pagination - $pagination = new Pbs_Pagination(); - $pagination->setPerPage(10) - ->setElement($clientsInGroup) - ->setRequestPage($this->_request->getParam('page')) - ->setPageUrl('/user/client/index'.((isset($this->view->search))?'/search/'.$this->view->search:'')); - $clientsInGroup = $pagination->getElements(); - - $this->view->pagination = $pagination->pagination(); - $this->view->page = $pagination->getRequestPage(); - $this->view->clients = $clientsInGroup; - - } - public function searchAction(){ - $this->_redirect('/user/client/index/search/'.($_GET['search'])); - } - - public function addclientAction() - { - $mac = $this->_request->getParam('mac'); - $hh = $this->_request->getParam('hh'); - - // ACL: is he authorized to create new clients? - if(!Pbs_Acl::checkRight('cla')) - $this->_redirect('/user'); - - if (!isset($_POST["add"])){ - $addclient = new user_Form_Client(array( - 'buttontext' => 'Create Client', - 'page' => $this->page)); - $this->view->addclient = $addclient; - } - else{ - $addclient = new user_Form_Client(array( - 'buttontext' => 'Create Client', - 'page' => $this->page),$_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) - ->setHardwarehash($hh) - ->setCreated(time()) - ->setGroupID($this->membership->getGroupID()); - $clientmapper = new Application_Model_ClientMapper(); - $clientmapper->save($client); - $this->_redirect('/user/client/index/addresult/ok'); - } - $this->view->addclient = $addclient; - } - } - - public function removeclientAction() - { - $clientID = $this->_request->getParam('clientID'); - - // ACL: is he authorized to delete clients? - if(!Pbs_Acl::checkRight('cld')) - $this->_redirect('/user'); - - $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/page/'.$this->page.'/deleteresult/ok'); - } - else{ - $this->_redirect('/user/client/index/page/'.$this->page.'/deleteresult/forbidden'); - } - } - $this->_redirect('/user/client/index/page/'.$this->page.'/deleteresult/error'); - } - - public function editclientAction(){ - // ACL: Is he authorized to edit clients ? - if(!Pbs_Acl::checkRight('cle')) - $this->_redirect('/user'); - - 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', - 'page' => $this->page)); - $editclient->populate($client->toArray()); - $this->view->editclient = $editclient; - } - else{ - $this->_redirect('/user/client/index/page/'.$this->page.'/modifyresult/error'); - } - } - else{ - $editclient = new user_Form_Client(array( - 'buttontext' => 'Edit Client', - 'page' => $this->page),$_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); - - $client->setCreated($dbclient->getCreated()); - - if($dbclient->getGroupID() == $this->membership->getGroupID()){ - $client->setGroupID($this->membership->getGroupID()); - $clientmapper = new Application_Model_ClientMapper(); - $clientmapper->save($client); - $this->_redirect('/user/client/index/page/'.$this->page.'/modifyresult/ok'); - } - else{ - $this->_redirect('/user/client/index/page/'.$this->page.'/modifyresult/error'); - } - } - $this->view->editclient = $editclient; - } - } +* 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_ClientController 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'); + } + /* Initialize action controller here */ + $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 authorized to see this ? + if(!Pbs_Acl::checkRight('clo')) + { $this->_redirect('/user'); } + + // Get the Clients which booted with a bootiso of this 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); + } + + $clientMapper = new Application_Model_ClientMapper(); + $clientsInGroup = $clientMapper->findBy(array('groupID' => $this->membership->getGroupID()), true); + + // Search + $search = $this->_request->getParam('search'); + $mySearch = new Pbs_Search(); + $mySearch->setSearchTerm($search); + $mySearch->setModule('client'); + if($search != '') { + $this->view->search = $mySearch->getSearchTerm(); + $clientsInGroup = $mySearch->search($clientsInGroup); + } + $this->view->searchform = $mySearch->searchForm(); + + // Format Time-String + foreach($clientsInGroup as $k => $cig) { + $clientsInGroup[$k]['created'] = date(Zend_Registry::get('dateformat'), $cig['created']); + } + + // Pagination + $pagination = new Pbs_Pagination(); + $pagination->setPerPage(10) + ->setElement($clientsInGroup) + ->setRequestPage($this->_request->getParam('page')) + ->setPageUrl('/user/client/index'.((isset($this->view->search)) ? '/search/'.$this->view->search : '')); + $clientsInGroup = $pagination->getElements(); + + $this->view->pagination = $pagination->pagination(); + $this->view->page = $pagination->getRequestPage(); + $this->view->clients = $clientsInGroup; + + } + public function searchAction() { + $this->_redirect('/user/client/index/search/'.($_GET['search'])); + } + + public function addclientAction() { + $mac = $this->_request->getParam('mac'); + $hh = $this->_request->getParam('hh'); + + // ACL: is he authorized to create new clients? + if(!Pbs_Acl::checkRight('cla')) + { $this->_redirect('/user'); } + + if (!isset($_POST["add"])) { + $addclient = new user_Form_Client(array( + 'buttontext' => 'Create Client', + 'page' => $this->page)); + $this->view->addclient = $addclient; + } else { + $addclient = new user_Form_Client(array( + 'buttontext' => 'Create Client', + 'page' => $this->page), $_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) + ->setHardwarehash($hh) + ->setCreated(time()) + ->setGroupID($this->membership->getGroupID()); + $clientmapper = new Application_Model_ClientMapper(); + $clientmapper->save($client); + $this->_redirect('/user/client/index/addresult/ok'); + } + $this->view->addclient = $addclient; + } + } + + public function removeclientAction() { + $clientID = $this->_request->getParam('clientID'); + + // ACL: is he authorized to delete clients? + if(!Pbs_Acl::checkRight('cld')) + { $this->_redirect('/user'); } + + $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/page/'.$this->page.'/deleteresult/ok'); + } else { + $this->_redirect('/user/client/index/page/'.$this->page.'/deleteresult/forbidden'); + } + } + $this->_redirect('/user/client/index/page/'.$this->page.'/deleteresult/error'); + } + + public function editclientAction() { + // ACL: Is he authorized to edit clients ? + if(!Pbs_Acl::checkRight('cle')) + { $this->_redirect('/user'); } + + 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', + 'page' => $this->page)); + $editclient->populate($client->toArray()); + $this->view->editclient = $editclient; + } else { + $this->_redirect('/user/client/index/page/'.$this->page.'/modifyresult/error'); + } + } else { + $editclient = new user_Form_Client(array( + 'buttontext' => 'Edit Client', + 'page' => $this->page), $_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); + + $client->setCreated($dbclient->getCreated()); + + if($dbclient->getGroupID() == $this->membership->getGroupID()) { + $client->setGroupID($this->membership->getGroupID()); + $clientmapper = new Application_Model_ClientMapper(); + $clientmapper->save($client); + $this->_redirect('/user/client/index/page/'.$this->page.'/modifyresult/ok'); + } else { + $this->_redirect('/user/client/index/page/'.$this->page.'/modifyresult/error'); + } + } + $this->view->editclient = $editclient; + } + } } |
