summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.zfproject.xml1
-rw-r--r--application/modules/dev/controllers/FilterController.php1
-rw-r--r--application/modules/user/controllers/FilterController.php175
-rw-r--r--application/modules/user/forms/FilterEntry.php146
-rw-r--r--application/modules/user/views/scripts/filter/addfilterentry.phtml3
-rw-r--r--application/modules/user/views/scripts/filter/editfilterentry.phtml3
-rw-r--r--application/modules/user/views/scripts/filter/index.phtml3
-rw-r--r--application/modules/user/views/scripts/pool/index.phtml2
-rw-r--r--pbs-newdata.sql2
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'),