private static function addLogRecord($user, $level, $operation, $message) { if (self::$minLevelCode === null) { self::initVars(); } if (self::levelCode($level) < self::$minLevelCode) { return; } $conn = self::getConnection(); $user = self::tryGuessUser($user); $uid = $user == null || !is_numeric($user) ? 'null' : $user; $level = CSql::quote($level); $qOperation = $operation == null ? 'null' : CSql::quote($operation); $qMessage = $message == null ? 'null' : CSql::quote($message); $query = "insert into Logs (logs_level, user_id, logs_operation, logs_message, logs_dt)\n values ({$level}, {$uid}, {$qOperation}, {$qMessage}, UTC_TIMESTAMP)"; $rs = mysql_query($query, $conn); // потому что надо работать со своим соединением :( if (!$rs) { $err = mysql_error($conn); // self::fatal($user, $operation, $message); // sql не работает -- кого волнует исходное сообщение! CSql::closeConnection($conn); self::$sqlConn = null; CSql::dieOnSqlError($user, 'addLogRecord', "adding record: '{$query}'", $err); } }
foreach (array(100, 500, 1000, 5000) as $lim) { $sel = $lim == $limit ? ' selected="selected"' : ''; print "<option value=\"{$lim}\"{$sel}>{$lim}</option>\n"; } print "</select>\n"; $searchVal = ReverseEscapeString(mmb_validate($_REQUEST, 'search', '')); print "<input type=\"text\" placeholder=\"Искать\" name=\"search\" onchange=\"document.LogsForm.submit()\" style=\"margin-left: 2em;\" value='" . CMmbUI::toHtml($searchVal) . "'/>"; print "</div>\n"; $cond = count($levels) == 0 ? 'true' : "logs_level in ('" . implode("', '", $levels) . "')"; if ($searchVal == '') { $searchCond = 'true'; } else { $search = array("%", "_", "[", "]"); $replace = array("\\%", "\\_", "\\[", "\\]"); $searchVal = str_replace($search, $replace, $searchVal); $searchCond = "logs_message like(" . CSql::quote("%{$searchVal}%") . ")"; } $sql = "select logs_id, logs_level, user_id, logs_operation, logs_message, logs_dt, logs_duration from Logs \n where {$cond} and {$searchCond} \n order by logs_id desc \n limit {$limit}"; $Result = MySqlQuery($sql); print "<table class='std'>\n"; print "<tr class='gray head'><th>#</th><th width='50'>id</th><th>Время</th><th>Уровень</th><th>Пользователь</th><th>Операция</th><th>Сообщение</th><th>Длительность</th></tr>\n"; $cnt = 0; while ($Row = mysql_fetch_assoc($Result)) { print "<tr><td>{$cnt}</td><td>{$Row['logs_id']}</td><td>" . $Row['logs_dt'] . "</td><td>{$Row['logs_level']}</td><td>{$Row['user_id']}</td><td>{$Row['logs_operation']}</td><td>" . nl2br($Row['logs_message']) . "</td><td>{$Row['logs_duration']}</td></tr>\n"; $cnt++; } mysql_free_result($Result); if ($cnt == 0) { print "<tr><td colspan='8'>Записей, подпадающих под условия, не найдено</td></tr>\n"; } print "</table>";