summaryrefslogblamecommitdiffstats
path: root/application/modules/user/controllers/ConfigController.php
blob: 1af05cc1e56fe628dc192eb06ad0204e61ea8441 (plain) (tree)
1
2
3
4
5
6
7
8
9

     
                                                          

 



                                    
                          













                                                                                                           
 
                                                                       


                                                                    
                                                                         
 



















                                                                                           

                                                                        


                                                                        
        
                                                        
                                                                                                                           
                        
                                                                                                                           


                                                     
                                                                                                  

         




                                                              



                                                                                                                
                                                                  
        
                     





                                                                                                                               
                

                                                                                

                        



                                                                                 


                                        

                                        


                                                                                                
                                                                                                          
                        
                                                                                                                 




                                                                       





                                                                                                
















                                                                                                                                                                
                                        
                                                                     




















                                                                                                           
                                                                                                        


                                                           
                                                                                                               






                                                                                





                                                                                                


                                                                                  
                                                                        
                                                              






















                                                                                                                           

                                       


























                                                                                                                           



 





 
<?php

class user_ConfigController extends Zend_Controller_Action
{

	protected $configMapper;
	protected $membershipMapper;
	protected $membership;
	protected $page;
	protected $config;
	
    public function init()
    {
        if (Zend_Auth::getInstance()->hasIdentity()) {
			$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
			if($userIDsNamespace['membershipID'] ==''){
				$this->_redirect('/user/index');
			}
			
			$this->configMapper = new Application_Model_ConfigMapper();
			
			$this->membershipMapper = new Application_Model_MembershipMapper();
			$this->membership = new Application_Model_Membership();
			$this->membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);

			$this->db = Zend_Db_Table::getDefaultAdapter();
		} else {
			$this->_helper->redirector('login', 'auth');
		}
		$this->page = $this->_request->getParam('page');   	}

    public function indexAction()
    {
        $result = $this->_request->getParam('addresult');
		if($result != ""){
			$pbsNotifier = new Pbs_Notifier();
			$this->view->notification = $pbsNotifier->notify('create',$result);
		}
		$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);
		}
		
		$groupID = $this->membership->getGroupID();  
		
		//ACL Darf er Configs sehen?
    	if(!Pbs_Acl::checkRight('csai') && !Pbs_Acl::checkRight('csui'))
    		$this->_redirect('/user/index');
		
    	$this->configMapper = new Application_Model_ConfigMapper();	
    	
    	if(Pbs_Acl::checkRight('csai')){    		
	    	$this->view->configlist = $this->configMapper->findBy(array('groupID' => $this->membership->getGroupID()));
	    }else{	
	    	$this->view->configlist = $this->configMapper->findBy(array('membershipID' => $this->membership->getID()));
	    }	
	    
        foreach ($this->view->configlist as $config){
    		$config->setCreated(date(Zend_Registry::get('dateformat'),$config->getCreated()));
    	}
    	
    	// Search
		$search = $this->_request->getParam('search');
		$mySearch = new Pbs_Search();
		$mySearch->setSearchTerm($search);
		$mySearch->setModule('config');
		if($search != ''){
			$this->view->search = $mySearch->getSearchTerm();			
			$this->view->configlist = $mySearch->search($this->view->configlist);			
		}
		$this->view->searchform = $mySearch->searchForm();
    	
    	// Pagination
	    $pagination = new Pbs_Pagination();	
		$pagination->setPerPage(2);		
		$pagination->setElement($this->view->configlist);
		$pagination->setRequestPage($this->_request->getParam('page'));		
		$pagination->setPageUrl('/user/config/index'.((isset($this->view->search))?'/search/'.$this->view->search:''));
		$this->view->configlist = $pagination->getElements();		
		
		$this->view->pagination = $pagination->pagination($pageurl);
		$this->view->page 		= $pagination->getRequestPage();
    		     	
    }
    
    public function searchAction(){
		$this->_redirect('/user/config/index/search/'.($_GET['search']));
	}

    public function createconfigAction()
    {
    	//ACL Darf er Configs erstellen?
    	if(!Pbs_Acl::checkRight('cc'))
    		$this->_redirect('/user/config/index/page/'.$this->page.'/addresult/forbidden');
    		
        if (!isset($_POST["createconfig"])){
    	        $configForm = new user_Form_Config(array('action' => 'createconfig','page'=>$this->page));
    		} else {
    	        $configForm = new user_Form_Config(array('action' => 'createconfig','page'=>$this->page),$_POST);
    			    			
    		    if ($configForm->isValid($_POST)) {

    		    	$config = new Application_Model_Config($_POST);
    		    	$config->setCreated(time());
    		    	
    		    	if(Pbs_Acl::checkRight('csai'))
    		    		$config->setGroupID($this->membership->getGroupID());    	
    		    	else
    		    	   	$config->setMembershipID($this->membership->getID());
    		    	   	
    		    	try {  
    		            $this->configMapper->save($config);
     		        }catch(Zend_Exception $e)
    		        {
    		            echo "Caught exception: " . get_class($e) . "<br/>";
    					echo "Message: " . $e->getMessage() . "<br/>";
    					$this->_redirect('/user/config/index/page/'.$this->page.'/addresult/error');    					
    		        }    		        
					$this->_redirect('/user/config/index/page/'.$this->page.'/addresult/ok');
    		     }
    		}
    
            $this->view->configForm = $configForm;
    }

    public function editconfigAction()
    {
    	//ACL Darf er Configs editieren?
    	if(!Pbs_Acl::checkRight('ce') && !Pbs_Acl::checkRight('cem'))
    		$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/forbidden');
    	
    	$configID = $this->_request->getParam('configID'); 
    	if (!is_numeric($configID))
   			$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/error');
   			
    	$groupID = $this->membership->getGroupID();
    	
    	$config = new Application_Model_Config();
    	$this->configMapper->find($configID, $config);
    	
    	if($config->getMembershipID() != null){
    		if($this->membership->getID() != $config->getMembershipID())
    			$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/forbidden');
    	}else{
    		if($this->membership->getGroupID() != $config->getGroupID())
    			$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/forbidden');
    	}
    	        
    	if (!isset($_POST["editconfig"])){

    		$configForm = new user_Form_Config(array('action' => 'editconfig','page'=>$this->page));
    		$configForm->populate($config->toArray()); 
    	
    	}else{
    		$configForm = new user_Form_Config(array('action' => 'editconfig','page'=>$this->page),$_POST);
    			    			
    		if ($configForm->isValid($_POST)) {

    			$configold = $config;
    			
    			$config = new Application_Model_Config($_POST); 	
    		    $config->setCreated(time());
    		    
    		    if(Pbs_Acl::checkRight('csai'))
    		   		$config->setGroupID($this->membership->getGroupID());    	
    		   	else
    		    	$config->setMembershipID($this->membership->getID());

    		    $config->setID($configID);
    		    
    		    if($configold->getShellscript() != $config->getShellscript()){
    		    	//ACL Is he allowed to edit other than Metadata?
	    			if(!Pbs_Acl::checkRight('ce'))
	    				$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/forbidden');
    		    }
	    
    		    
    		   	try {  
    		       	$this->configMapper->save($config);
    		    }catch(Zend_Exception $e)
    		    {
    		    	echo "Caught exception: " . get_class($e) . "<br/>";
    				echo "Message: " . $e->getMessage() . "<br/>";	
    				$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/error');
    		    }
    		    
				$this->_redirect('/user/config/index/page/'.$this->page.'/modifyresult/ok');	
    		}
    			
    	}
    	
    	$this->view->configForm = $configForm;
    }

    public function deleteconfigAction()
    {
    	//ACL Darf er Configs löschen?
    	if(!Pbs_Acl::checkRight('cd'))
    		$this->_redirect('/user/config/index/page/'.$this->page.'/deleteresult/forbidden');
    		
    	try{
    		$configID = $this->_request->getParam('configID');
	     	if (!is_numeric($configID))
	   			$this->_redirect('/user/config/index/page/'.$this->page.'/deleteresult/error');
		   		
	    	$config = new Application_Model_Config();
	    	$this->configMapper->find($configID,$config);
	    	
	    	if($config->getMembershipID() != null){
	    		if($this->membership->getID() != $config->getMembershipID())
		   			$this->_redirect('/user/config/index/page/'.$this->page.'/deleteresult/forbidden');
	    	}else{
	   			if($this->membership->getGroupID() != $config->getGroupID())
		   			$this->_redirect('/user/config/index/page/'.$this->page.'/deleteresult/forbidden');
	    	}
	    	
	    	$this->configMapper->delete($config);
    	
    	}catch(Zend_Exception $e){
    		echo "Caught exception: " . get_class($e) . "<br/>";
    		echo "Message: " . $e->getMessage() . "<br/>";
    		$this->_redirect('/user/config/index/page/'.$this->page.'/deleteresult/error');	
    	}
	   		$this->_redirect('/user/config/index/page/'.$this->page.'/deleteresult/ok');
    }


}