<?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);
}
}