summaryrefslogblamecommitdiffstats
path: root/application/modules/user/controllers/ClientController.php
blob: 76419a87620ee259cc4b2c6c99b02c6fdb68596f (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
     









                                                                           


                                                          
                            
                        
 













                                                                                                     
                 
                                                                



                                     

                                                      
                                          

                                                                            



                                                                                           
                 









                                                                                           
 
                                                                     
                                                                                                                  
 
                         
                                                              

                                                  
                                               
                                  

                                                                             
                 
                                                                  





                                                                                                                
                             
                                                   



                                                                                                                                    

                                                             
                                                                    

                                                                                

         
                                       
                                                                                 
         



                                                        
                                                      
 

                                                               
                                          
                        
                                           


                                                                                                                

                                                            
                     


                                                                                                                                



                                                                                        



                                                                                              


                                                                                     
                         

                                                            
         
 


                                                                  
 

                                                           

                                          






                                                                                     
                                                                                                            
                         
                             
                                                                                                                   

                         
                                                                                               


                                           

                                                          
                                          
                        




                                                                          
 
                                                                                     


                                                                                                                      

                                                                          

                             
                                                                                                               


                         


                                                                                                                       

                                                                                         
                                                                                      



                                                                                                     

                                                                             




                                                                                               
                                                                                                                    

                                     
                                                                                                                       
                                 
                         

                                                              
         
 
<?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;
		}
	}
}