static::END_TIME_OPTION)); } public static function getEndTime() { return intval(Option::get("main", static::END_TIME_OPTION, 0)); } public static function log(array $params = array()) { if (!static::isOn()) { return null; } $pageTitle = $params["TITLE"] ?? $GLOBALS["APPLICATION"]->getTitle(); $pageTitle = mb_substr($pageTitle, 0, 250); $pageHost = isset($params["HOST"]) && mb_strlen($params["HOST"]) ? $params["HOST"] : Helper::getHttpHost(); $pageHost = mb_substr($pageHost, 0, 100); $pageUri = isset($params["URI"]) && mb_strlen($params["URI"]) ? $params["URI"] : Helper::getRequestUri(); $pageUri = mb_substr($pageUri, 0, 2000); $userId = 0; if (isset($params["USER_ID"])) { $userId = intval($params["USER_ID"]); } else if (isset($GLOBALS["USER"]) && $GLOBALS["USER"]->isAuthorized()) { $userId = intval($GLOBALS["USER"]->getId()); } $data = array( "TITLE" => $pageTitle, "MESSAGE" => isset($params["MESSAGE"]) && is_string($params["MESSAGE"]) ? $params["MESSAGE"] : null, "TYPE" => isset($params["TYPE"]) && in_array($params["TYPE"], self::getTypes()) ? $params["TYPE"] : self::TYPE_MESSAGE, "URI" => $pageUri, "HOST" => $pageHost, "USER_ID" => $userId, "AJAX" => Engine::isAjaxRequest() ? "Y" : "N", "PAGE_ID" => isset($params["PAGE_ID"]) ? intval($params["PAGE_ID"]) : 0 ); $GLOBALS["DB"]->StartUsingMasterOnly(); $result = LogTable::add($data); $GLOBALS["DB"]->StopUsingMasterOnly(); return $result; } /** * Returns logger types * @return array */ public static function getTypes() { static $types = null; if ($types !== null) { return $types; } $types = array(); $refClass = new \ReflectionClass(__CLASS__); foreach ($refClass->getConstants() as $name => $value) { if (mb_substr($name, 0, 4) === "TYPE") { $types[] = $value; } } return $types; } /** * Returns name for specific type. Returns null if type is invalid . * @param string $type Log Message Type. * @return null|string */ public static function getTypeName($type) { static $messagesLoaded = false; if (!$messagesLoaded) { Loc::loadMessages(__FILE__); $messagesLoaded = true; } $types = static::getTypes(); if (!in_array($type, $types)) { return null; } return Loc::getMessage("MAIN_COMPOSITE_LOG_{$type}") ?: $type; } }