/**
  * @see EventListener::execute()
  */
 public function execute($eventObj, $className, $eventName)
 {
     // create needed variables
     $knownHostIDs = $knownPageIDs = array();
     // read known page and host IDs
     $sql = "SELECT\n\t\t\t\t\t*\n\t\t\t\tFROM\n\t\t\t\t\tcms" . CMS_N . "_statistic_known\n\t\t\t\tWHERE\n\t\t\t\t\tsessionID = '" . escapeString(WCF::getSession()->sessionID) . "'";
     $result = WCF::getDB()->sendQuery($sql);
     while ($row = WCF::getDB()->fetchArray($result)) {
         if (intval($row['pageID'])) {
             $knownPageIDs[] = intval($row['pageID']);
         }
         if (intval($row['hostID'])) {
             $knownHostIDs[] = intval($row['hostID']);
         }
     }
     // handle hosts
     if (!in_array(CMSCore::getActiveHost()->getHostID(), $knownHostIDs)) {
         // update count for host if this user isn't known
         $sql = "UPDATE\n\t\t\t\t\t\tcms" . CMS_N . "_statistic_host\n\t\t\t\t\tSET\n\t\t\t\t\t\trequestCount = requestCount + 1\n\t\t\t\t\tWHERE\n\t\t\t\t\t\thostID = " . CMSCore::getActiveHost()->getHostID();
         WCF::getDB()->sendQuery($sql);
         // add to known hosts
         $sql = "INSERT INTO\n\t\t\t\t\t\tcms" . CMS_N . "_statistic_known (sessionID, hostID, timestamp)\n\t\t\t\t\tVALUES\n\t\t\t\t\t\t('" . escapeString(WCF::getSession()->sessionID) . "', " . CMSCore::getActiveHost()->getHostID() . ", " . TIME_NOW . ")";
         WCF::getDB()->sendQuery($sql);
     }
     // handle pages
     if (!in_array($eventObj->pageID, $knownPageIDs)) {
         // update count for page if this user isn't known
         $sql = "UPDATE\n\t\t\t\t\t\tcms" . CMS_N . "_statistic_page\n\t\t\t\t\tSET\n\t\t\t\t\t\trequestCount = requestCount + 1\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tpageID = " . $eventObj->pageID;
         WCF::getDB()->sendQuery($sql);
         // add to known pages
         $sql = "INSERT INTO\n\t\t\t\t\t\tcms" . CMS_N . "_statistic_known (sessionID, pageID, timestamp)\n\t\t\t\t\tVALUES\n\t\t\t\t\t\t('" . escapeString(WCF::getSession()->sessionID) . "', " . $eventObj->pageID . ", " . TIME_NOW . ")";
         WCF::getDB()->sendQuery($sql);
     }
     if (isset($_SERVER['HTTP_REFERER']) and !strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'], 0) and !empty($_SERVER['HTTP_REFERER'])) {
         $url = parse_url($_SERVER['HTTP_REFERER']);
         $sql = "SELECT\n\t\t\t\t\t\t*\n\t\t\t\t\tFROM\n\t\t\t\t\t\tcms" . CMS_N . "_statistic_referer_host\n\t\t\t\t\tWHERE\n\t\t\t\t\t\thostname = '" . escapeString($url['host']) . "'";
         $row = WCF::getDB()->getFirstRow($sql);
         if (WCF::getDB()->countRows()) {
             $hostID = $row['hostID'];
             $sql = "UPDATE\n\t\t\t\t\t\t\tcms" . CMS_N . "_statistic_referer_host\n\t\t\t\t\t\tSET\n\t\t\t\t\t\t\tcount = count + 1\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\thostname = '" . escapeString($url['host']) . "'";
             WCF::getDB()->sendQuery($sql);
         } else {
             $sql = "INSERT INTO\n\t\t\t\t\t\t\tcms" . CMS_N . "_statistic_referer_host (hostname, count)\n\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t\t('" . escapeString($url['host']) . "', 1)";
             WCF::getDB()->sendQuery($sql);
             $hostID = WCF::getDB()->getInsertID();
         }
         $sql = "SELECT\n\t\t\t\t\t\t*\n\t\t\t\t\tFROM\n\t\t\t\t\t\tcms" . CMS_N . "_statistic_referer\n\t\t\t\t\tWHERE\n\t\t\t\t\t\turl = '" . escapeString($_SERVER['HTTP_REFERER']) . "'";
         $row = WCF::getDB()->getFirstRow($sql);
         if (WCF::getDB()->countRows()) {
             $sql = "UPDATE\n\t\t\t\t\t\t\tcms" . CMS_N . "_statistic_referer\n\t\t\t\t\t\tSET\n\t\t\t\t\t\t\tcount = count + 1\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\turl = '" . escapeString($_SERVER['HTTP_REFERER']) . "'";
             WCF::getDB()->sendQuery($sql);
         } else {
             $sql = "INSERT INTO\n\t\t\t\t\t\t\tcms" . CMS_N . "_statistic_referer (url, count, hostID)\n\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t\t('" . escapeString($_SERVER['HTTP_REFERER']) . "', 1, " . $hostID . ")";
             WCF::getDB()->sendQuery($sql);
         }
     }
 }
 /**
  * @see EventListener::execute()
  */
 public function execute($eventObj, $className, $eventName)
 {
     if (CMSCore::getActiveHost() !== null) {
         foreach ($eventObj->menuItems as $key => $item) {
             // remove menu items from other hosts
             if (!in_array($item['menuItemID'], CMSCore::getActiveHost()->getMenuItemIDs())) {
                 unset($eventObj->menuItems[$key]);
             }
         }
     }
 }