diff options
-rw-r--r-- | .zfproject.xml | 1 | ||||
-rw-r--r-- | application/modules/dev/controllers/FilterController.php | 1 | ||||
-rw-r--r-- | application/modules/user/controllers/FilterController.php | 175 | ||||
-rw-r--r-- | application/modules/user/forms/FilterEntry.php | 146 | ||||
-rw-r--r-- | application/modules/user/views/scripts/filter/addfilterentry.phtml | 3 | ||||
-rw-r--r-- | application/modules/user/views/scripts/filter/editfilterentry.phtml | 3 | ||||
-rw-r--r-- | application/modules/user/views/scripts/filter/index.phtml | 3 | ||||
-rw-r--r-- | application/modules/user/views/scripts/pool/index.phtml | 2 | ||||
-rw-r--r-- | pbs-newdata.sql | 2 |
9 files changed, 325 insertions, 11 deletions
diff --git a/.zfproject.xml b/.zfproject.xml index 90d4d20..539aaa9 100644 --- a/.zfproject.xml +++ b/.zfproject.xml @@ -274,6 +274,7 @@ <formFile formName="Pool"/> <formFile formName="PoolClient"/> <formFile formName="Filter"/> + <formFile formName="FilterEntry"/> </formsDirectory> <layoutsDirectory enabled="false"/> <modelsDirectory> diff --git a/application/modules/dev/controllers/FilterController.php b/application/modules/dev/controllers/FilterController.php index 53900b3..4644d0e 100644 --- a/application/modules/dev/controllers/FilterController.php +++ b/application/modules/dev/controllers/FilterController.php @@ -163,7 +163,6 @@ class dev_FilterController extends Zend_Controller_Action $filterentriesID = $this->_request->getParam('filterentriesID'); $filterentry = new Application_Model_FilterEntries(); - $filterentriesmapper = new Application_Model_FilterEntriesMapper(); $filterentriesmapper->find($filterentriesID,$filterentry); diff --git a/application/modules/user/controllers/FilterController.php b/application/modules/user/controllers/FilterController.php index 6e510bb..3a14865 100644 --- a/application/modules/user/controllers/FilterController.php +++ b/application/modules/user/controllers/FilterController.php @@ -169,17 +169,186 @@ class User_FilterController extends Zend_Controller_Action public function addfilterentryAction() { - // action body + // 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() { - // action body + //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() { - // action body + //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); } diff --git a/application/modules/user/forms/FilterEntry.php b/application/modules/user/forms/FilterEntry.php new file mode 100644 index 0000000..21ceb93 --- /dev/null +++ b/application/modules/user/forms/FilterEntry.php @@ -0,0 +1,146 @@ +<?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); + + 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:'; + break; + case "1": + $desc = "You can set one IP or an IP-Range"; + $label1 = 'Start:'; + $label2 = 'End:'; + break; + case "2": + $desc = "You can set one Mac-Adress or an Mac-Range"; + $label1 = 'Start:'; + $label2 = 'End:'; + break; + case "3": + $desc = "Select your Pool"; + $label1 = 'PoolID:'; + break; + case "4": + $desc = "Select your BootIso"; + $label1 = 'BootIsoID:'; + break; + case "5": + $desc = "Select a Membership"; + $label1 = 'Membership:'; + break; + case "6": + $desc = "Select a Group"; + $label1 = 'Group:'; + break; + case "7": + $desc = "Specify a time-range"; + $label1 = 'Start:'; + $label2 = 'End:'; + break; + case "8": + $desc = "Select a Client"; + $label1 = 'Client:'; + break; + case "9": + $desc = "Define a Hardwarehash"; + $label1 = 'Hardwarehash:'; + break; + case "10": + $desc = "Specify the Weekday (Monday:1, Tuesday:2 ... Sunday:7) or a range"; + $label1 = 'Start Day:'; + $label2 = 'End Day:'; + break; + case "11": + $desc = "Specify the date or a day range of the filter"; + $label1 = 'Start Date:'; + $label2 = 'End Date:'; + break; + } + $filtertypes->setDescription($desc); + $this->addElement($filtertypes); + + $this->addElement('text', 'filtervalue', array( + 'label' => $label1, + 'id' => 'val1' + )); + + if(!in_array($filterentryID,array(3,4,5,6,8,9))){ + $this->addElement('text', 'filtervalue2', array( + 'label' => $label2, + 'id' => 'val2' + )); + } + + $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; + } +} + +?> +<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> diff --git a/application/modules/user/views/scripts/filter/addfilterentry.phtml b/application/modules/user/views/scripts/filter/addfilterentry.phtml index f7240c8..d46c7f5 100644 --- a/application/modules/user/views/scripts/filter/addfilterentry.phtml +++ b/application/modules/user/views/scripts/filter/addfilterentry.phtml @@ -1 +1,2 @@ -<br /><br /><center>View script for controller <b>Filter</b> and script/action name <b>addfilterentry</b></center>
\ No newline at end of file +<?php +echo $this->addform; diff --git a/application/modules/user/views/scripts/filter/editfilterentry.phtml b/application/modules/user/views/scripts/filter/editfilterentry.phtml index 60a1f6f..038f16a 100644 --- a/application/modules/user/views/scripts/filter/editfilterentry.phtml +++ b/application/modules/user/views/scripts/filter/editfilterentry.phtml @@ -1 +1,2 @@ -<br /><br /><center>View script for controller <b>Filter</b> and script/action name <b>editfilterentry</b></center>
\ No newline at end of file +<?php +echo $this->editfilterform; diff --git a/application/modules/user/views/scripts/filter/index.phtml b/application/modules/user/views/scripts/filter/index.phtml index 94d77d7..8ca6174 100644 --- a/application/modules/user/views/scripts/filter/index.phtml +++ b/application/modules/user/views/scripts/filter/index.phtml @@ -118,6 +118,3 @@ <p>There are no filters to display.</p> <?php endif;?> -<?php echo $this->formButton('createconfig', 'Test Filters', array( - 'onclick' => 'self.location="/user/filter/testevaluate"', - 'class' => 'addbutton'))?> diff --git a/application/modules/user/views/scripts/pool/index.phtml b/application/modules/user/views/scripts/pool/index.phtml index e1c0d7c..b6e50c3 100644 --- a/application/modules/user/views/scripts/pool/index.phtml +++ b/application/modules/user/views/scripts/pool/index.phtml @@ -7,7 +7,7 @@ <?php if ($this->pools): ?> <table > <tr> - <th>ID</th> + <!--<th>ID</th>--> <th>Title</th> <th>Description</th> <th>Location</th> diff --git a/pbs-newdata.sql b/pbs-newdata.sql index e2e20f8..c94e759 100644 --- a/pbs-newdata.sql +++ b/pbs-newdata.sql @@ -114,7 +114,7 @@ INSERT INTO `pbs_filter` (`filterID`, `membershipID`, `groupID`, `bootmenuID`, ` -- Adding Filterentries INSERT INTO `pbs_filterentries` (`filterentriesID`, `filterID`, `filtertypeID`, `filtervalue`, `filtervalue2`) VALUES -(1, 1, 7, '08-00', '18-00'), +(1, 1, 7, '08:00', '18:00'), (2, 2, 1, '001.001.001.001', '132.229.255.255'), (3, 2, 1, '132.231.001.001', '255.255.255.255'), (4, 1, 1, '132.230.001.001', '132.230.255.255'), |