summaryrefslogtreecommitdiffstats
path: root/library/Pbs/Filter.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/Pbs/Filter.php')
-rw-r--r--library/Pbs/Filter.php886
1 files changed, 434 insertions, 452 deletions
diff --git a/library/Pbs/Filter.php b/library/Pbs/Filter.php
index ced0607..c8119ed 100644
--- a/library/Pbs/Filter.php
+++ b/library/Pbs/Filter.php
@@ -1,456 +1,438 @@
-<?php
-
-class Pbs_Filter{
-
- private $db = null;
- private $membership;
-
- public function evaluate()
- {
- $this->db = Zend_Db_Table::getDefaultAdapter();
- $db = $this->db;
- $debuglevel = 0;
-
- $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
-
- $membershipMapper = new Application_Model_MembershipMapper();
- $this->membership = new Application_Model_Membership();
- if(isset($userIDsNamespace['membershipID'])){
- $membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);
- }
- else{
- $this->membership->setID(null);
- }
-
- // For Testing Filters
- $testFilter = (isset($_POST['submit']))?true:false;
-
- if($testFilter){
- $ipAdress = $_POST['ip'];
- $macAdress = $_POST['mac'];
- $poolID = $_POST['poolID'];
- $bootisoID = $_POST['bootisoID'];
- $membershipID = $_POST['membershipID'];
- $groupID = $_POST['groupID'];
- $time = ($_POST['time']);
- $clientID = $_POST['clientID'];
- $weekday = $_POST['weekday'];
- $date = $_POST['date'];
- print_a('Input',
- array('ipAdress'=>$ipAdress,
- 'macAdress'=>$macAdress,
- 'poolID' => $poolID,
- 'bootisoID' => $bootisoID,
- 'membershipID'=>$membershipID,
- 'groupID'=>$groupID,
- 'time'=> $time." - ".date('d.m.Y H:i:s',$time),
- 'clientID' => $clientID,
- 'hardwarehash' => $hardwarehash,
- 'weekday' => $weekday,
- 'date' => $date));
- }
-
-
- try{
- $set = array();
-
- $session = new Application_Model_Session();
- $sessionmapper = new Application_Model_SessionMapper();
- $sessionarray = $sessionmapper->findBy(array('alphasessionID' => $_SESSION['alphasessionID']),true);
- $session->setOptions($sessionarray[0]);
- $session->setID($sessionarray['sessionID']);
-
- if(!isset($userIDsNamespace['membershipID'])){
- $bootisoMapper = new Application_Model_BootIsoMapper();
- $bootiso = new Application_Model_BootIso();
- $bootisoMapper->find($session->getBootisoID(),$bootiso);
- $groupID = $bootiso->getGroupID();
- }else{
- $groupID = $userIDsNamespace['groupID'];
- }
-
- #########################################################
- // IP Adress
- $filtertypID = 1;
- // get it from session_table with session_id from the session
- if(!$testFilter){
- $ipAdress = $session->getIp();
- }
- $ipAdress = str_replace(".","",$this->fillIP($ipAdress));
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- REPLACE(fe.filtervalue,'.','') <= '".$ipAdress."' AND
- '".$ipAdress."' <= REPLACE(fe.filtervalue2,'.','') AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
-
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
-
- if($debuglevel >= 3 )
- print_a('ipAdress',$result,$set[$filtertypID]);
-
- #########################################################
- // Mac range
- $filtertypID = 2;
- // get it from session_table with session_id from the session
- if(!$testFilter){
- $client = new Application_Model_Client();
- $clientmapper = new Application_Model_ClientMapper();
- $clientmapper->find($session->getClientID(),$client);
- $macAdress = $client->getMacadress();
- }
- try{
- $macAdress = $this->fillMac($macAdress);
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue <= '".$macAdress."' AND
- '".$macAdress."' <= fe.filtervalue2 AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
-
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
- if($debuglevel >= 3)
- print_a('macAdress',$result,$set[$filtertypID]);
-
- #########################################################
- // PoolID
- $filtertypID = 3;
- // get PoolID from client_ID from session_id from the session
- if(!$testFilter){
- $poolentry = new Application_Model_PoolEntries();
- $poolentrymapper = new Application_Model_PoolEntriesMapper();
- $poolentry = $poolentrymapper->findby(array('clientID' => $client->getID()),true);
- @$poolentry = $poolentry[0];
-
- $poolID = $poolentry['poolID'];
- }
-
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue = ".$poolID." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- if(count($result)>0){
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('poolID',$result,$set[$filtertypID]);
- #########################################################
- // ClientID
- $filtertypID = 8;
- // get client_ID from session_id from the session
-
- if(!$testFilter){
- $clientID = $session->getClientID();
- }
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue = ".$clientID." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
-
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('clientID',$result,$set[$filtertypID]);
- #########################################################
- // BootIsoID
- $filtertypID = 4;
- // get BootIsoID from client_ID from session_id from the session
- if(!$testFilter){
- $bootisoID = $session->getBootisoID();
- }
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue = ".$bootisoID." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('bootisoID',$result,$set[$filtertypID]);
- #########################################################
- // MembershipID
- $filtertypID = 5;
- if($this->membership->getID() != null){
- if(!$testFilter){
- // get membership from the session
- //TODO: GET MEMBERSHIP from SESSION
- $membershipID = $this->membership->getID();
- }
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue = ".$membershipID." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('membership',$result,$set[$filtertypID]);
- }
- #########################################################
- // GroupID
- $filtertypID = 6;
- if($this->membership->getID() != null){
- if(!$testFilter){
- // get membership from the session
- $membergroupID = $this->membership->getGroupID();
- }
- }
-
- if(isset($membergroupID)){
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue = ".$membergroupID." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('groupID',$result,$set[$filtertypID]);
- }
- #########################################################
- // Time
- $filtertypID = 7;
- if(!$testFilter){
- $nowShort = date("H:i");
- }
- else{
- $nowShort = date("H:i",$time);
- }
-
- $nowShort = str_replace(":","",$nowShort);
- try{
-
- $stmt = $db->query('SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = '.$filtertypID.' AND
- REPLACE(fe.filtervalue,":","") <= '.$nowShort.' AND
- REPLACE(fe.filtervalue2,":","") >= '.$nowShort." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('time',$result,$set[$filtertypID]);
- #########################################################
- // Hardwarehash
- $filtertypID = 9;
- if(!$testFilter){
- // get hardwarehash from session
- $client = new Application_Model_Client();
- $clientmapper = new Application_Model_ClientMapper();
- $clientmapper->find($session->getClientID(),$client);
- $hardwarehash = $client->getHardwarehash();
- }
-
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue = ".$hardwarehash." AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
-
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('hardwarehash',$result,$set[$filtertypID]);
- #########################################################
- // weekday
- $filtertypID = 10;
- if(!$testFilter){
- $weekday = date('N');
- }
-
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue <= ".$weekday." AND
- ".$weekday." <= fe.filtervalue2 AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('weekday',$result,$set[$filtertypID]);
- #########################################################
- // date
- $filtertypID = 11;
- if(!$testFilter){
- $date = strtotime(date('d.m.Y'));
- }
-
- try{
- $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
- fe.filtertypeID = ".$filtertypID." AND
- fe.filtervalue <= ".$date." AND
- ".$date." <= fe.filtervalue2 AND
- fe.filterID = f.filterID AND
- f.groupID = '".$groupID."'");
- $result = $stmt->fetchAll();
- foreach($result as $r){
- $set[$filtertypID][] = $r['filterID'];
- }
- }
- catch(Exception $e){}
-
- if($debuglevel >= 3)
- print_a('date',$result,$set[$filtertypID],$date);
- ########################################
- $result = array();
- // ErgebnisSet auswerten
- if($debuglevel >= 2)
- print_a('the result sets of the filtertypes',$set);
-
- // Merging of the resultsets of the filter
- $kk = array();
- foreach($set as $myset){
- $kk = array_merge($kk,$myset);
- }
- $set = $kk;
- // counting how often a filter is evaluated at database
- $a = array();
- foreach($set as $k => $s){
- @$a[$s] += 1;
- }
- if($debuglevel >= 2)
- print_a('Übereinstimmungen pro Filter',$a);
- // Get the number of filtertypes every filter has
- $stmt = $db->query(
- "SELECT f.filterID,SUM(num) as num FROM (
- SELECT *, '1' as num
- FROM pbs_filterentries
- GROUP BY filterID, filtertypeID
- ) d RIGHT OUTER JOIN pbs_filter f ON d.filterID = f.filterID
- WHERE groupID = '".$groupID."' GROUP BY d.filterID");
- $resultset = $stmt->fetchAll();
- foreach($resultset as $d){
- if($d['num'] == NULL){
- $d['num'] = 0;
- // write filter with empty filterrules in resultset
- $result[] = $d['filterID'];
- }
-
- $database[$d['filterID']] = $d['num'];
- }
- if($debuglevel >= 2)
- print_a('Anzahl Filterentries in Datenbank',$database);
-
- // remove all filters from resultset, which to few filtertypes satisfied
-
- foreach($a as $i=>$b){
- if($a[$i] < $database[$i]){
- unset($a[$i]);
- }
- else{
- $result[] = $i;
- }
- }
- if($debuglevel >= 1)
- print_a('Valid Filters',$result);
-
- // now selecting the filter with the highest priority
- $query = 'SELECT filterID, bootmenuID, priority
- FROM pbs_filter WHERE ';
- foreach($result as $e){
- $queryTmp[] = "filterID = '$e'";
- }
- $query .= implode(" OR ", $queryTmp);
- $query .= 'ORDER BY priority DESC LIMIT 0,1';
- $bootmenuID = 'null';
- try{
- $stmt = $db->query($query);
- $resultset = $stmt->fetchAll();
- $bootmenuID = $resultset[0]['bootmenuID'];
- }
- catch(Exception $e){
- }
- if($bootmenuID != 'null'){
- $bm = new Application_Model_BootMenu();
- $bmmapper = new Application_Model_BootMenuMapper();
- $bmmapper->find($bootmenuID,$bm);
- return $bootmenuID;
- }
- else{
- return null;
- }
-
- }catch (Zend_Exception $e) {
- echo "class: ".get_class($e)."<br>\n";
- echo "Error message 2: " . $e->getMessage() . "\n";
- }
- }
- private function fillIP($ip)
- {
- $ar = explode(".",$ip);
- $representation = array();
- foreach($ar as $part){
- $representation[] = sprintf("%03s",$part);
- }
- return implode(".",$representation);
+<? php
+
+class Pbs_Filter {
+
+ private $db = null;
+ private $membership;
+
+ public function evaluate() {
+ $this->db = Zend_Db_Table::getDefaultAdapter();
+ $db = $this->db;
+ $debuglevel = 0;
+
+ $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
+
+ $membershipMapper = new Application_Model_MembershipMapper();
+ $this->membership = new Application_Model_Membership();
+ if(isset($userIDsNamespace['membershipID'])) {
+ $membershipMapper->find($userIDsNamespace['membershipID'], $this->membership);
+ } else {
+ $this->membership->setID(null);
+ }
+
+ // For Testing Filters
+ $testFilter = (isset($_POST['submit'])) ? true : false;
+
+ if($testFilter) {
+ $ipAdress = $_POST['ip'];
+ $macAdress = $_POST['mac'];
+ $poolID = $_POST['poolID'];
+ $bootisoID = $_POST['bootisoID'];
+ $membershipID = $_POST['membershipID'];
+ $groupID = $_POST['groupID'];
+ $time = ($_POST['time']);
+ $clientID = $_POST['clientID'];
+ $weekday = $_POST['weekday'];
+ $date = $_POST['date'];
+ print_a('Input',
+ array('ipAdress' => $ipAdress,
+ 'macAdress' => $macAdress,
+ 'poolID' => $poolID,
+ 'bootisoID' => $bootisoID,
+ 'membershipID' => $membershipID,
+ 'groupID' => $groupID,
+ 'time' => $time." - ".date('d.m.Y H:i:s', $time),
+ 'clientID' => $clientID,
+ 'hardwarehash' => $hardwarehash,
+ 'weekday' => $weekday,
+ 'date' => $date));
+ }
+
+
+ try {
+ $set = array();
+
+ $session = new Application_Model_Session();
+ $sessionmapper = new Application_Model_SessionMapper();
+ $sessionarray = $sessionmapper->findBy(array('alphasessionID' => $_SESSION['alphasessionID']), true);
+ $session->setOptions($sessionarray[0]);
+ $session->setID($sessionarray['sessionID']);
+
+ if(!isset($userIDsNamespace['membershipID'])) {
+ $bootisoMapper = new Application_Model_BootIsoMapper();
+ $bootiso = new Application_Model_BootIso();
+ $bootisoMapper->find($session->getBootisoID(), $bootiso);
+ $groupID = $bootiso->getGroupID();
+ } else {
+ $groupID = $userIDsNamespace['groupID'];
+ }
+
+#########################################################
+ // IP Adress
+ $filtertypID = 1;
+ // get it from session_table with session_id from the session
+ if(!$testFilter) {
+ $ipAdress = $session->getIp();
+ }
+ $ipAdress = str_replace(".", "", $this->fillIP($ipAdress));
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ REPLACE(fe.filtervalue,'.','') <= '".$ipAdress."' AND
+ '".$ipAdress."' <= REPLACE(fe.filtervalue2,'.','') AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+
+ if($debuglevel >= 3 )
+ { print_a('ipAdress', $result, $set[$filtertypID]); }
+
+#########################################################
+ // Mac range
+ $filtertypID = 2;
+ // get it from session_table with session_id from the session
+ if(!$testFilter) {
+ $client = new Application_Model_Client();
+ $clientmapper = new Application_Model_ClientMapper();
+ $clientmapper->find($session->getClientID(), $client);
+ $macAdress = $client->getMacadress();
+ }
+ try {
+ $macAdress = $this->fillMac($macAdress);
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue <= '".$macAdress."' AND
+ '".$macAdress."' <= fe.filtervalue2 AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+ if($debuglevel >= 3)
+ { print_a('macAdress', $result, $set[$filtertypID]); }
+
+#########################################################
+ // PoolID
+ $filtertypID = 3;
+ // get PoolID from client_ID from session_id from the session
+ if(!$testFilter) {
+ $poolentry = new Application_Model_PoolEntries();
+ $poolentrymapper = new Application_Model_PoolEntriesMapper();
+ $poolentry = $poolentrymapper->findby(array('clientID' => $client->getID()), true);
+ @$poolentry = $poolentry[0];
+
+ $poolID = $poolentry['poolID'];
+ }
+
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue = ".$poolID." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ if(count($result) > 0) {
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('poolID', $result, $set[$filtertypID]); }
+#########################################################
+ // ClientID
+ $filtertypID = 8;
+ // get client_ID from session_id from the session
+
+ if(!$testFilter) {
+ $clientID = $session->getClientID();
+ }
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue = ".$clientID." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('clientID', $result, $set[$filtertypID]); }
+#########################################################
+ // BootIsoID
+ $filtertypID = 4;
+ // get BootIsoID from client_ID from session_id from the session
+ if(!$testFilter) {
+ $bootisoID = $session->getBootisoID();
+ }
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue = ".$bootisoID." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('bootisoID', $result, $set[$filtertypID]); }
+#########################################################
+ // MembershipID
+ $filtertypID = 5;
+ if($this->membership->getID() != null) {
+ if(!$testFilter) {
+ // get membership from the session
+ //TODO: GET MEMBERSHIP from SESSION
+ $membershipID = $this->membership->getID();
+ }
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue = ".$membershipID." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('membership', $result, $set[$filtertypID]); }
+ }
+#########################################################
+ // GroupID
+ $filtertypID = 6;
+ if($this->membership->getID() != null) {
+ if(!$testFilter) {
+ // get membership from the session
+ $membergroupID = $this->membership->getGroupID();
+ }
+ }
+
+ if(isset($membergroupID)) {
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue = ".$membergroupID." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('groupID', $result, $set[$filtertypID]); }
+ }
+#########################################################
+ // Time
+ $filtertypID = 7;
+ if(!$testFilter) {
+ $nowShort = date("H:i");
+ } else {
+ $nowShort = date("H:i", $time);
+ }
+
+ $nowShort = str_replace(":", "", $nowShort);
+ try {
+
+ $stmt = $db->query('SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = '.$filtertypID.' AND
+ REPLACE(fe.filtervalue,":","") <= '.$nowShort.' AND
+ REPLACE(fe.filtervalue2,":","") >= '.$nowShort." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('time', $result, $set[$filtertypID]); }
+#########################################################
+ // Hardwarehash
+ $filtertypID = 9;
+ if(!$testFilter) {
+ // get hardwarehash from session
+ $client = new Application_Model_Client();
+ $clientmapper = new Application_Model_ClientMapper();
+ $clientmapper->find($session->getClientID(), $client);
+ $hardwarehash = $client->getHardwarehash();
+ }
+
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue = ".$hardwarehash." AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('hardwarehash', $result, $set[$filtertypID]); }
+#########################################################
+ // weekday
+ $filtertypID = 10;
+ if(!$testFilter) {
+ $weekday = date('N');
+ }
+
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue <= ".$weekday." AND
+ ".$weekday." <= fe.filtervalue2 AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('weekday', $result, $set[$filtertypID]); }
+#########################################################
+ // date
+ $filtertypID = 11;
+ if(!$testFilter) {
+ $date = strtotime(date('d.m.Y'));
+ }
+
+ try {
+ $stmt = $db->query("SELECT * FROM pbs_filterentries fe, pbs_filter f WHERE
+ fe.filtertypeID = ".$filtertypID." AND
+ fe.filtervalue <= ".$date." AND
+ ".$date." <= fe.filtervalue2 AND
+ fe.filterID = f.filterID AND
+ f.groupID = '".$groupID."'");
+ $result = $stmt->fetchAll();
+ foreach($result as $r) {
+ $set[$filtertypID][] = $r['filterID'];
+ }
+ } catch(Exception $e) {}
+
+ if($debuglevel >= 3)
+ { print_a('date', $result, $set[$filtertypID], $date); }
+########################################
+ $result = array();
+ // ErgebnisSet auswerten
+ if($debuglevel >= 2)
+ { print_a('the result sets of the filtertypes', $set); }
+
+ // Merging of the resultsets of the filter
+ $kk = array();
+ foreach($set as $myset) {
+ $kk = array_merge($kk, $myset);
+ }
+ $set = $kk;
+ // counting how often a filter is evaluated at database
+ $a = array();
+ foreach($set as $k => $s) {
+ @$a[$s] += 1;
+ }
+ if($debuglevel >= 2)
+ { print_a('Übereinstimmungen pro Filter', $a); }
+ // Get the number of filtertypes every filter has
+ $stmt = $db->query(
+ "SELECT f.filterID,SUM(num) as num FROM (
+ SELECT *, '1' as num
+ FROM pbs_filterentries
+ GROUP BY filterID, filtertypeID
+ ) d RIGHT OUTER JOIN pbs_filter f ON d.filterID = f.filterID
+ WHERE groupID = '".$groupID."' GROUP BY d.filterID");
+ $resultset = $stmt->fetchAll();
+ foreach($resultset as $d) {
+ if($d['num'] == NULL) {
+ $d['num'] = 0;
+ // write filter with empty filterrules in resultset
+ $result[] = $d['filterID'];
+ }
+
+ $database[$d['filterID']] = $d['num'];
+ }
+ if($debuglevel >= 2)
+ { print_a('Anzahl Filterentries in Datenbank', $database); }
+
+ // remove all filters from resultset, which to few filtertypes satisfied
+
+ foreach($a as $i => $b) {
+ if($a[$i] < $database[$i]) {
+ unset($a[$i]);
+ } else {
+ $result[] = $i;
+ }
+ }
+ if($debuglevel >= 1)
+ { print_a('Valid Filters', $result); }
+
+ // now selecting the filter with the highest priority
+ $query = 'SELECT filterID, bootmenuID, priority
+ FROM pbs_filter WHERE ';
+ foreach($result as $e) {
+ $queryTmp[] = "filterID = '$e'";
+ }
+ $query . = implode(" OR ", $queryTmp);
+ $query . = 'ORDER BY priority DESC LIMIT 0,1';
+ $bootmenuID = 'null';
+ try {
+ $stmt = $db->query($query);
+ $resultset = $stmt->fetchAll();
+ $bootmenuID = $resultset[0]['bootmenuID'];
+ } catch(Exception $e) {
+ }
+ if($bootmenuID != 'null') {
+ $bm = new Application_Model_BootMenu();
+ $bmmapper = new Application_Model_BootMenuMapper();
+ $bmmapper->find($bootmenuID, $bm);
+ return $bootmenuID;
+ } else {
+ return null;
+ }
+
+ } catch (Zend_Exception $e) {
+ echo "class: ".get_class($e)."<br>\n";
+ echo "Error message 2: " . $e->getMessage() . "\n";
+ }
+ }
+ 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);
+ private function fillMac($ip) {
+ $ar = explode(":", $ip);
+ $representation = array();
+ foreach($ar as $part) {
+ $representation[] = sprintf("%02s", $part);
}
+ return implode(":", $representation);
+ }
}
-?>
+? >