/** * @param int $number * @param int $errCode * @param string $errStr * @param string $errFile * @param int $errLine * @param string $errSection * @param string $errContext * @param null $backtrace * @throws SPException * @return bool */ public static function storeError($number, $errCode, $errStr, $errFile, $errLine, $errSection, $errContext, $backtrace = null) { if (!self::$_cs && (self::$_trigger && $number < self::$_trigger)) { self::$_cs = true; throw new SPException($errStr); return false; } SPLoader::loadClass('base.factory'); SPLoader::loadClass('base.database'); SPLoader::loadClass('cms.base.database'); $uid = 0; // unset( $backtrace[ 2 ] ); // unset( $backtrace[ 1 ] ); // unset( $backtrace[ 0 ] ); $errContext = serialize($errContext); $backtrace = serialize($backtrace); if (class_exists('SPUser')) { $uid = SPUser::getCurrent()->get('id'); } $db = SPDb::getInstance(); $date = $db->now(); $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknown'; $reff = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'unknown'; $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'unknown'; $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : 'unknown'; $errStr = $db->escape($errStr); $errSection = $db->escape($errSection); $errContext = $db->escape(base64_encode(gzcompress($errContext))); if (strlen($errContext) > 15000) { $errContext = 'Stack to large - skipping'; } $backtrace = $db->escape(base64_encode(gzcompress($backtrace))); $reff = $db->escape($reff); $agent = $db->escape($agent); $uri = $db->escape($uri); $number = (int) $number; $errCode = (int) $errCode; $errLine = (int) $errLine; // $is = ini_set( 'display_errors', 0 ); // @file_put_contents( SOBI_PATH.DS.'var'.DS.'log'.DS.'error.log', strip_tags( stripslashes( "\n=========\n[ {$date} ][ {$errsection}:{$errno} ][ {$errcode} ]\n{$errstr}\nIn: {$errfile}:{$errline}" ) ), SPC::FS_APP ); // ini_set( 'display_errors', $is ); try { $db->exec("INSERT INTO spdb_errors VALUES ( NULL, '{$date}', '{$number}', '{$errCode}', '{$errStr}', '{$errFile}', '{$errLine}', '{$errSection}', '{$uid}', '{$ip}', '{$reff}', '{$agent}', '{$uri}', '{$errContext}', '{$backtrace}' );"); } catch (SPException $x) { SPLoader::loadClass('base.mainframe'); SPLoader::loadClass('cms.base.mainframe'); SPFactory::mainframe()->runAway('Fatal error while inserting error message. ' . $x->getMessage(), 500); } self::$_cs = false; }