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



                                                          

                                    

                          










                                                                                     


                                 







                                                                                           




                                                                                           




                                                                                           
















































                                                                                                                                        



















                                                                                                



                                      





















































                                                                                                                                                    



                                          














































                                                                                                                          



                                           







































































                                                                                                                                                 


                                             
     




















































                                                                                                           




     











 
<?php

class User_FilterController extends Zend_Controller_Action
{
	protected $filterMapper;
	protected $membershipMapper;
    public function init()
    {
		if($_SESSION['membershipID'] ==''){
			$pbsNotifier = new Pbs_Notifier();
			echo $pbsNotifier->notify('No membershipID set','forbidden');
		}
		$this->filterMapper = new Application_Model_FilterMapper(); 
		
		$membershipMapper = new Application_Model_MembershipMapper();
    	$this->membership = new Application_Model_Membership();
    	$membershipMapper->find($_SESSION['membershipID'],$this->membership);     
    	 
		$this->db = Zend_Db_Table::getDefaultAdapter();
    }

    public function indexAction()
    {    	
    	// TODO: ACL: is he authorized to see this?
    	
    	$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);
		}
    	
    	$filters = $this->filterMapper->findBy('groupID',$this->membership->getGroupID());    	
		foreach($filters as $filter){
			$ff = new Application_Model_Filter();
			$ff->setOptions($filter);
			$ff->setID($filter['filterID']);
			$allFilter[] = $ff;
		}
		$this->view->filters = $allFilter;
    }

    public function addfilterAction()
    {
    	// TODO: ACL: is he authorized to add a filter?		
        $bmmapper = new Application_Model_BootMenuMapper();
		$result = $bmmapper->findBy('groupID',$this->membership->getGroupID());
		foreach($result as $rr){
			$bm = new Application_Model_BootMenu();
			$bm->setOptions($rr);
			$bm->setID($rr['bootmenuID']);
			$bootmenus[] = $bm;
		}
		$this->view->bootmenus = $bootmenus;
		
        if (!isset($_POST["add"])){		
    		$addfilterform = new user_Form_Filter(array('buttontext' => 'Create Filter','bootmenus'=>$bootmenus));    		
			$this->view->addfilterform = $addfilterform;			
		}else {
			$addfilterform = new user_Form_Filter(array('buttontext' => 'Create Filter','bootmenus'=>$bootmenus),$_POST);
			if ($addfilterform->isValid($_POST)) {			
				try{
					$newfilter = new Application_Model_Filter($_POST);
					$newfilter->setCreated(time());					
					$newfilter->setGroupID($this->membership->getGroupID());
					$newfilter->setMembershipID($this->membership->getID());			
					$newfilter2 = new Application_Model_FilterMapper();
					$newfilter2->save($newfilter);
					$this->_redirect('/user/filter/index/addresult/ok');
				}catch (Zend_Exception $e) {  
        			echo "Error message 2: " . $e->getMessage() . "\n"; 
        			$this->_redirect('/user/filter/index/addresult/error'); 
        		}
			}
			$this->view->addfilterform = $addfilterform;
		}
    }

    public function removefilterAction()
    {
       $filterID = $this->_request->getParam('filterID');
       $filtermapper = new Application_Model_FilterMapper();
		// TODO: ACL implementieren ob er den filter löschen darf
		
		if(is_numeric($filterID)){
			$filter = new Application_Model_Filter();
			$filtermapper->find($filterID,$filter);
			if($filter->getGroupID() == $this->membership->getGroupID()){		
				$deletefilter = new Application_Model_Filter();
				$deletefilter->setID($filterID);			
				$filtermapper->delete($deletefilter);
				$this->_redirect('/user/filter/index/deleteresult/ok'); 
			}
			else{
				$this->_redirect('/user/filter/index/deleteresult/forbidden'); 
			}
		}
		else{
			$this->_redirect('/user/filter/index/deleteresult/error'); 
		}
    }

    public function editfilterAction()
    {
        $bmmapper = new Application_Model_BootMenuMapper();
		$result = $bmmapper->findBy('groupID',$this->membership->getGroupID());
		foreach($result as $rr){
			$bm = new Application_Model_BootMenu();
			$bm->setOptions($rr);
			$bm->setID($rr['bootmenuID']);
			$bootmenus[] = $bm;
		}
		
		if (!isset($_POST["add"])){
		    // TODO: ACL implementieren ob er editieren darf
			$filterID = $this->_request->getParam('filterID');
			$filter = new Application_Model_Filter();			

			$filtermapper = new Application_Model_FilterMapper();
			$filtermapper->find($filterID,$filter);	
			if($filter->getGroupID() == $this->membership->getGroupID()){
				$filter2 = $filter->toArray();
				$editfilterform = new user_Form_Filter(array('buttontext' => 'Edit Filter','bootmenus'=>$bootmenus));  
				$editfilterform->populate($filter2);
				$this->view->editfilterform = $editfilterform;
			}
			else{
				$this->_redirect('/user/filter/index/modifyresult/forbidden'); 
			}
		
		} else{
			try{
				$filterID = $this->_request->getParam('filterID');	
				$filter = new Application_Model_Filter();
				$filtermapper = new Application_Model_FilterMapper();
				$filtermapper->find($filterID,$filter);	
				if($filter->getGroupID() == $this->membership->getGroupID()){				
					$editfilterform = new user_Form_Filter(array('buttontext' => 'Edit Filter','bootmenus'=>$bootmenus),$_POST);
					if ($editfilterform->isValid($_POST)) {	
						$newfilterentry = new Application_Model_Filter($_POST);
						$newfilterentry->setID($this->_request->getParam('filterID'));
						$newfilterentry->setGroupID($this->membership->getGroupID());
						$newfilterentry->setMembershipID($this->membership->getID());
						$newfilterentry->setCreated($_POST['created']);
						$newfilter2 = new Application_Model_FilterMapper();				
						$newfilter2->save($newfilterentry);
						$this->_redirect('/user/filter/index/modifyresult/ok'); 				
					}	
					$this->view->editfilterform = $editfilterform;
				}
				else{
					$this->_redirect('/user/filter/index/modifyresult/forbidden'); 
				}
			}catch (Zend_Exception $e) {  
    			echo "Error message 2: " . $e->getMessage() . "\n";  
    			$this->_redirect('/user/filter/index/modifyresult/error'); 
    		}
		}
    }

    public function addfilterentryAction()
    {
    	// TODO: ACL: is he allowed to create a new filterentry?
    	$filterID = $this->_request->getParam('filterID');
    	$filterMapper = new Application_Model_FilterMapper();
    	$filter = new Application_Model_Filter();
    	$filterMapper->find($filterID,$filter);
    	
    	if($filter->getGroupID() == $this->membership->getGroupID()){
		    if (!isset($_POST["add"])){
				try{
					$addform = new user_Form_FilterEntry(
										array(	'buttontext' => 'Add Filterentry',
												'filterID' => $filterID,
												'data' => $_POST
											));
					$addform->populate($_POST);
					$this->view->addform = $addform;
				}catch (Zend_Exception $e) {  
					echo "Error message 2: " . $e->getMessage() . "\n";
					$this->_redirect('/user/filter/index/addresult/error'); 
				}
			} else{
				$addform = new user_Form_FilterEntry(array('buttontext' => 'Add Filterentry'),$_POST);
					
				if ($addform->isValid($_POST)) {							
					$newfilterenty = new Application_Model_FilterEntries();
					$newfilterenty->setFilterID($filterID);
					$newfilterenty->setFiltertypeID($_POST['filtertypeID']);

					if($_POST['filtertypeID'] == 1){
						$newfilterenty->setFiltervalue($this->fillIP($_POST['filtervalue']));
						$newfilterenty->setFiltervalue2($this->fillIP($_POST['filtervalue2']));
					}
					else{				
						$newfilterenty->setFiltervalue($_POST['filtervalue']);
						$newfilterenty->setFiltervalue2($_POST['filtervalue2']);	
					}
				
					$newfilter2 = new Application_Model_FilterEntriesMapper();
					$newfilter2->save($newfilterenty);		
					$this->_redirect('/user/filter/index/addresult/ok');
				}
				$this->view->addform = $addform;
			}
		}
		else{
			$this->_redirect('/user/filter/index/addresult/forbidden'); 
		}
    }

    public function editfilterentryAction()
    {
    	//TODO: ACL: is he allowed to edit filterentrys ?
        if (!isset($_POST["add"])){
			try{
				$filterentriesID = $this->_request->getParam('filterentriesID');
				$filterentry = new Application_Model_FilterEntries();
				$filterentriesmapper = new Application_Model_FilterEntriesMapper();
				$filterentriesmapper->find($filterentriesID,$filterentry);	
				
				$filterMapper = new Application_Model_FilterMapper();
				$filter = new Application_Model_Filter();
				$filterMapper->find($filterentry->getFilterID(),$filter);
				
				if($filter->getGroupID() == $this->membership->getGroupID()){
					if(isset($_POST['filtertypeID']) && $_POST['filtertypeID'] != $filterentry->getFiltertypeID()){
						$filterentry->setFiltertypeID($_POST['filtertypeID']) ;
					}
					$data = $filterentry->toArray();
					# print_a($data);
					$editfilterform = new user_Form_FilterEntry(
													array('buttontext' => 'Edit Filterentry',
															'data' => $data));
				
					$editfilterform->populate($filterentry->toArray());
					$this->view->editfilterform = $editfilterform;
				}
				else{
					$this->_redirect('/user/filter/index/moodifyresult/forbidden');
				}
			}catch (Zend_Exception $e) {  
				echo "Error message 2: " . $e->getMessage() . "\n";  
				$this->_redirect('/user/filter/index/moodifyresult/error');
			}
		} else{
			try{
				$filterentriesID = $this->_request->getParam('filterentriesID');	
				$editfilterform = new user_Form_FilterEntry(array('buttontext' => 'Edit Filterentry'),$_POST);	
				if ($editfilterform->isValid($_POST)) {	
					$filterentry = new Application_Model_FilterEntries();
					$filterentriesmapper = new Application_Model_FilterEntriesMapper();
					$filterentriesmapper->find($filterentriesID,$filterentry);	
				
					$filterMapper = new Application_Model_FilterMapper();
					$filter = new Application_Model_Filter();
					$filterMapper->find($filterentry->getFilterID(),$filter);
				
					if($filter->getGroupID() == $this->membership->getGroupID()){					
						if($_POST['filterID'] == '')
							unset($_POST['filterID']);
						$newfilterenty = new Application_Model_FilterEntries($_POST);					
						$newfilterenty->setID($filterentriesID);				
						if($_POST['filtertypeID'] == 1){
							$newfilterenty->setFiltervalue($this->fillIP($_POST['filtervalue']));
							$newfilterenty->setFiltervalue2($this->fillIP($_POST['filtervalue2']));
						}
						else{				
							$newfilterenty->setFiltervalue($_POST['filtervalue']);
							$newfilterenty->setFiltervalue2($_POST['filtervalue2']);	
						}
						$newfilter2 = new Application_Model_FilterEntriesMapper();				
						$newfilter2->save($newfilterenty);
						$this->_redirect('/user/filter/index/modifyresult/ok');
					}
					else{
						$this->_redirect('/user/filter/index/modifyresult/forbidden');
					}								
				}
				$this->view->editfilterform = $editfilterform;
			}catch (Zend_Exception $e) {  
				echo "Error message 2: " . $e->getMessage() . "\n";  
				$this->_redirect('/user/filter/index/modifyresult/error');
			}
		}
    }

    public function removefilterentryAction()
    {
    	//TODO: ACL: is he autohorized to delete a filterentry?
        $filterentriesID = $this->_request->getParam('filterentriesID');
        if(is_numeric($filterentriesID)){
		    $filterentriesmapper = new Application_Model_FilterEntriesMapper();
		    $filterentry = new Application_Model_FilterEntries();
		    $filterentriesmapper->find($filterentriesID, $filterentry);
		    $filterID = $filterentry->getFilterID();
		    
		    $filterMapper = new Application_Model_FilterMapper();
			$filter = new Application_Model_Filter();
			$filterMapper->find($filterID,$filter);
			
			if($filter->getGroupID() == $this->membership->getGroupID()){
				try{ 			
					$deletefilterentry = new Application_Model_FilterEntries();
					$deletefilterentry->setID($filterentriesID);	

					$filterentriesmapper = new Application_Model_FilterEntriesMapper();
					$filterentriesmapper->delete($deletefilterentry);
					$this->_redirect('/user/filter/index/deleteresult/ok'); 
				
				}catch (Zend_Exception $e) {  
					echo "Error message 2: " . $e->getMessage() . "\n";
					$this->_redirect('/user/filter/index/deleteresult/error'); 
				}
			}
			else{
				$this->_redirect('/user/filter/index/deleteresult/forbidden'); 
			}
		}
		else{
			$this->_redirect('/user/filter/index/deleteresult/error'); 
		}		
    }
    
	private function fillIP($ip)
    {
        $ar = explode(".",$ip);
        		$representation = array();
        		foreach($ar as $part){
        			$representation[] = sprintf("%03s",$part);
        		}
        		return implode(".",$representation);
    }

    private function fillMac($ip)
    {
        $ar = explode(":",$ip);
        		$representation = array();
        		foreach($ar as $part){
        			$representation[] = sprintf("%02s",$part);
        		}
        		return implode(":",$representation);
    }


}