From 76f0a6bcc17ac70ac6d26dcb137ec28027ce7b9d Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Tue, 11 Oct 2011 14:52:42 +0200 Subject: filterfix3 --- library/Pbs/Filter.php | 848 +++++++++++++++++++++++++------------------------ 1 file changed, 426 insertions(+), 422 deletions(-) (limited to 'library') diff --git a/library/Pbs/Filter.php b/library/Pbs/Filter.php index fefc331..c800b37 100755 --- a/library/Pbs/Filter.php +++ b/library/Pbs/Filter.php @@ -2,451 +2,455 @@ class Pbs_Filter{ - private $db = null; - private $membership; - - public function evaluate() + private $db = null; + private $membership; + + public function evaluate() { - $this->db = Zend_Db_Table::getDefaultAdapter(); - $db = $this->db; - $debuglevel = 1; - - $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']); - - $bootisoMapper = new Application_Model_BootisoMapper(); - $bootiso = new Application_Model_BootIso(); - $bootisoMapper->find($session->getBootisoID(),$bootiso); - $groupID = $bootiso->getGroupID(); - - ######################################################### - // 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']; - } + $this->db = Zend_Db_Table::getDefaultAdapter(); + $db = $this->db; + $debuglevel = 3; + + $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]); + 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]); + ######################################################### + // 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){} + ######################################################### + // 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('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('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('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('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('membership',$result,$set[$filtertypID]); - } - ######################################################### - // Time - $filtertypID = 7; - if(!$testFilter){ - $nowShort = date("H:i"); - } - else{ - $nowShort = date("H:i",$time); - } + 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){} + $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(); - } + 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){} + 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'); - } + 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){} + 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 = date('d.m.Y'); - } + 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 - REPLACE(fe.filtervalue,'.','') <= ".$date." AND - ".$date." <= REPLACE(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){} + 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]); - ######################################## - $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)."
\n"; - echo "Error message 2: " . $e->getMessage() . "\n"; - } - } - private function fillIP($ip) + 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)."
\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); + $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); + $representation = array(); + foreach($ar as $part){ + $representation[] = sprintf("%02s",$part); + } + return implode(":",$representation); } } -?> +?> \ No newline at end of file -- cgit v1.2.3-55-g7522