summaryrefslogblamecommitdiffstats
path: root/application/modules/user/forms/FilterEntry.php
blob: c2581c23ff6a001e233172504d4f487579576de8 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                                         
                                            




















                                                                                          







                                                                                                   




                                                                            




































                                                                                                                                                                               




                                                                                     




































                                                                                                                                                  


                                                           
                                                                                
                                







                                                                                                         



                                                              
                                







                                                                                                            



                                                              
                                











                                                                                                                                                   



                                                         








                                                                                                          




                                                               


                                                                                                  












                                                                                                                                                                   




                                                                                                   












                                                                                                                                                                   


                                                           



                                                          








                                                                                                                                        



                                                                








                                                                                                  




                                                                                                            


                                                                                                  












                                                                                                                                                                             




                                                                                                   












                                                                                                                                                                             


                                                           




                                                                                        

                                                                                                  
                                                                                                

                                                           


                                                                                                         
                                                                                                   

                                                                                                
                                                      


                                                                                                         




                                                    
                



                                                             





























                                                       



                                       
















                                                                                          
<?php

class user_Form_FilterEntry extends Zend_Form
{

   private $filterID = 0;

    public function init()
    {
		$this->setName("Add Filterentry");
		$this->setMethod('post');
		$this->setAttrib('id','filterentryform');
		#print_a($this->data);
		#print_a($this->selectData);
		try{		
			$filtertypemapper = new Application_Model_FilterTypeMapper();
	       	$filtertype = $filtertypemapper->fetchAll();
		
		$filtertypes = $this->createElement('select','filtertypeID');
        $filtertypes ->setLabel('Type:');
        $filtertypes ->setAttrib('id','filtertype');
        $filtertypes->addMultiOption('','');
		foreach($filtertype as $f){
			$filtertypes->addMultiOption($f->getID(),$f->getFiltertypename());
		}
		$filterentry = $filtertypes->getMultiOption($this->data['filtertypeID']);
		$filterentryID = $this->data['filtertypeID'];
		}catch (Zend_Exception $e) {  
			echo "Error message 1: " . $e->getMessage() . "\n";
		}
		switch($filterentryID){
			default:
				$desc = "Select the filtertype";
				$label1 = 'Value 1:';
				$label2 = 'Value 2:';
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,
					'id' => 'val1'
				));
				$filtervalue2 = $this->createElement('text', 'filtervalue2', array(
					'label' => $label2,
					'id' => 'val2'
				));
				break;
			case "1":
				$desc = "You can set one IP or an IP-Range";
				$label1 = 'Start:';
				$label2 = 'End:';
				
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid IP-Adress",
									Zend_Validate_Regex::INVALID  => 'IP-Adress contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val1'
				));
				$filtervalue2 = $this->createElement('text', 'filtervalue2', array(
					'label' => $label2,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid IP-Adress",
									Zend_Validate_Regex::INVALID  => 'IP-Adress contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val2'
				));
				break;
			case "2":
				$desc = "You can set one Mac-Adress or an Mac-Range";
				$label1 = 'Start:';
				$label2 = 'End:';
				
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid Mac-Adress",
									Zend_Validate_Regex::INVALID  => 'Mac-Adress contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val1'
				));
				$filtervalue2 = $this->createElement('text', 'filtervalue2', array(
					'label' => $label2,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid Mac-Adress",
									Zend_Validate_Regex::INVALID  => 'Mac-Adress contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val2'
				));
				break;
			case "3":
				$desc = "Select your Pool";
				$label1 = 'PoolID:';				
				
				$filtervalue1 = $this->createElement('select','filtervalue');
				$filtervalue1 ->setLabel($label1);
				if(count($this->selectData['pools'])>0){
					foreach($this->selectData['pools'] as $id => $g){
						$filtervalue1->addMultiOption($g['poolID'], $g['title']);
					}       
				}
				$filtervalue1->setRegisterInArrayValidator(false);
				break;
			case "4":
				$desc = "Select your BootIso";
				$label1 = 'BootIsoID:';
				
				$filtervalue1 = $this->createElement('select','filtervalue');
				$filtervalue1 ->setLabel($label1);
				if(count($this->selectData['bootisos'])>0){
					foreach($this->selectData['bootisos'] as $id => $g){
						$filtervalue1->addMultiOption($g['bootisoID'], $g['title']);
					}       
				}
				$filtervalue1->setRegisterInArrayValidator(false);
				break;
			case "5":
				$desc = "Select a Membership";
				$label1 = 'Membership:';
				
				$filtervalue1 = $this->createElement('select','filtervalue');
				$filtervalue1 ->setLabel($label1);
				if(count($this->selectData['memberships'])>0){
					$personMapper = new Application_Model_PersonMapper();
					foreach($this->selectData['memberships'] as $id => $g){
						// Display full name of Person
						$person = new Application_Model_Person();
						$personMapper->find($g['personID'],$person);
						$filtervalue1->addMultiOption($g['membershipID'], $person->getName().", ".$person->getFirstname());
					}       
				}
				$filtervalue1->setRegisterInArrayValidator(false);
				break;
			case "6":
				$desc = "Select a Group";
				$label1 = 'Group:';
				// TODO: insert the child Groups
				$filtervalue1 = $this->createElement('select','filtervalue');
				$filtervalue1 ->setLabel($label1);
				if(count($this->selectData['groups'])>0){
					foreach($this->selectData['groups'] as $id => $g){
						$filtervalue1->addMultiOption($g['groupID'], $g['title']);
					}       
				}
				$filtervalue1->setRegisterInArrayValidator(false);
				break;
			case "7":
				$desc = "Specify a time-range";
				$label1 = 'Start:';
				$label2 = 'End:';
				
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid Time-Format, It must be HH:MM",
									Zend_Validate_Regex::INVALID  => 'Time contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val1'
				));
				$filtervalue2 = $this->createElement('text', 'filtervalue2', array(
					'label' => $label2,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid Time-Format, It must be HH:MM",
									Zend_Validate_Regex::INVALID  => 'Time contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val2'
				));
				break;
			case "8":
				$desc = "Select a Client";
				$label1 = 'Client:';
				
				$filtervalue1 = $this->createElement('select','filtervalue');
				$filtervalue1 ->setLabel($label1);
				if(count($this->selectData['clients'])>0){
					foreach($this->selectData['clients'] as $id => $g){
						$filtervalue1->addMultiOption($g['clientID'], $g['macadress']." - ".$g['hardwarehash']);
					}       
				}
				$filtervalue1->setRegisterInArrayValidator(false);
				break;
			case "9":
				$desc = "Define a Hardwarehash";
				$label1 = 'Hardwarehash:';
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,
					'filters' => array('StringTrim'),
					'validators' => array(
						array('StringLength', false, array(32, 32)),
					),
					'required' => true,
					'id' => 'val1'
				));
				break;
			case "10":
				$desc = "Specify the Weekday (Monday:1, Tuesday:2 ... Sunday:7) or a range";
				$label1 = 'Start Day:';
				$label2 = 'End Day:';
				
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^([1-7])$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid Day-Format, It must be betweeen 1 and 7",
									Zend_Validate_Regex::INVALID  => 'Day contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val1'
				));
				$filtervalue2 = $this->createElement('text', 'filtervalue2', array(
					'label' => $label2,
					'validators' => array(
						array(
							'regex', 
							false, 
							array(
								'/^([1-7])$/i',
								'messages' => array(
									Zend_Validate_Regex::NOT_MATCH => "'%value%' is not a valid Day-Format, It must be betweeen 1 and 7",
									Zend_Validate_Regex::INVALID  => 'Day contains invalid characters.'
								)
							)
						)
					),
					'required' => true,
					'id' => 'val2'
				));
				break;
			case "11":
				$desc = "Specify the date or a day range of the filter";
				$label1 = 'Start Date:';
				$label2 = 'End Date:';
				
				$filtervalue1 = $this->createElement('text', 'filtervalue', array(
					'label' => $label1,					
					'required' => true,
					'id' => 'val1'
				));				
				$filtervalue1->addValidator('Date',false, array('format'=>'dd.MM.yyyy'));
				
				$filtervalue2 = $this->createElement('text', 'filtervalue2', array(
					'label' => $label2,					
					'required' => true,					
					'id' => 'val2'
				));				
				$filtervalue2->addValidator('Date',false, array('format'=>'dd.MM.yyyy'));
				
				break;
		}
		$filtertypes->setDescription($desc);
		$this->addElement($filtertypes);    
		
		
		
		$this->addElement($filtervalue1);  
		if(isset($filtervalue2 )){
			$this->addElement($filtervalue2);    
		}

        $this->addElement('submit', 'add', array(
            'required' => false,
            'ignore'   => true,
            'label'    => $this->buttontext,
        ));  	 
        
        $this->addElement('button', 'Cancel', array(
            'onclick' => 'self.location="/user/filter"'
        ));  
        
         $this->addElement('hidden', 'filterID', array(
            'value' => $this->filterID
        ));  
		
	
    }

	private $buttontext = 'Save';
	function setButtontext($v){
		$this->buttontext = $v;
	}
	private $data ;
	function setData($v){
		$this->data = $v;
	}
	function setFilterID($v){
		$this->filterID = $v;
	}
	private $selectData;
	function setSelectData($v){
		$this->selectData = $v;
	}
}

?>
<script>
	$('#filtertype').change(function(){
		//alert($("#filtertype option:selected").val());
		$('#filterentryform').submit();
	});
	$('#val1').focusout(function(){
		if($("#filtertype option:selected").val() == 1 && $('#val2').val() == ""){
			$('#val2').val($('#val1').val());
		}
		if($("#filtertype option:selected").val() == 2 && $('#val2').val() == ""){
			$('#val2').val($('#val1').val());
		}
	});
</script>