/** * @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]); } } } }