Exemple #1
0
 /**
  * @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;
 }