public static function Error($ErrNo, $ErrStr, $ErrFile, $ErrLine) { if ($ErrNo == E_STRICT) { return; } // catch smarty TODO if (strstr($ErrFile, 'core.get_include_path.php')) { return; } // catch double session_start() if (strstr($ErrStr, 'session_start()')) { return; } // catch stupid PHP 5.1 error if (strstr($ErrStr, 'Indirect modification of overloaded property')) { return; } // catch smarty_compile TODO if (strstr($ErrFile, 'smarty_compile')) { return; } // catch mysql_escape_string() if (strstr($ErrStr, 'mysql_real_escape_string()')) { return; } // catch the noob programmers notices from vB if (self::$PreventErrorsByPath && strstr($ErrFile, '/' . self::$PreventErrorsByPath . '/')) { RDD::Log('[[' . self::$ErrorMap[$ErrNo] . ':' . $ErrFile . ':' . $ErrLine . ']] ' . $ErrStr, ERROR); return; } // catch akismet warnings if (!defined('AKISMET_WARNINGS') && stristr($ErrStr, 'akismet')) { RDD::Log($ErrStr, WARN); return; } $params = array(); $params['text'] = '[[' . self::$ErrorMap[$ErrNo] . ':' . $ErrFile . ':' . $ErrLine . ']] ' . $ErrStr; if (!self::$DisableTime) { if (!isset(self::$FirstTime)) { self::$FirstTime = microtime(true); $params['time'] = 0; } else { $params['time'] = microtime(true) - self::$FirstTime; } } if (self::$MemUsage && function_exists('memory_get_usage')) { $params['mem'] = memory_get_usage(); } $params['level'] = ERROR; $params['from'] = self::CallFrom(2); $params['fulltrace'] = debug_backtrace(); self::AddLog($params); if (self::$ShowError) { echo "<b style='color: red'>ERROR: " . $params['text'] . "</b>\n"; // $trace = debug_backtrace(); // echo "<pre>Backtrace:\n".self::EchoDebugDump($trace)."</pre>"; } return; }