<?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();
// Pagination
$pagination = new Pbs_Pagination();
$pagination->setPerPage(10);
$pagination->setElement($clientsInGroup);
$pagination->setRequestPage($this->_request->getParam('page'));
$pagination->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);
$client->setHardwarehash($hh);
$client->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);
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;
}
}
}