/** * Конструктор класса, выполняет подмену стандартного конструктора, в зависимости от настроек * модуля и системы 1С-Битрикс выполняет вывод ошибки или в лог (задаётся на настройках модуля) или на экран пользователя * @param string - Сообщение об ошибке * @param int - Код ошибки * @param string - Текст запроса к БД */ function __construct($sMessage = '', $nCode = 0, $sQuery = '') { parent::__construct($sMessage, intval($nCode)); $this->sQuery = $sQuery; if ($this->sQuery) { $sQuery = preg_replace("/([0-9a-f]){32}/", "********************************", $sQuery); // Hides all hashes $sQueryStr = "{$sQuery}"; } $sErrorText = "Ошибка вызова MySQL: " . $this->getMessage() . "\n" . "Код ошибки: " . $this->sError . "\n" . "Текст запроса: " . $sQueryStr . "\n" . "Стэк вызова функций: \n"; $arTrace = $this->getTrace(); foreach ($arTrace as $item => $arFunction) { $sErrorText .= 'В файле: ' . $arFunction['file'] . "\n"; if (array_key_exists('class', $arFunction) && $arFunction['class'] != '') { $sErrorText .= $arFunction['class'] . $arFunction['type'] . $arFunction['function'] . '() - строка ' . $arFunction['line']; } else { $sErrorText .= $arFunction['function'] . '() - строка ' . $arFunction['line']; } $sErrorText .= "\n" . '----------------------------------------------------' . "\n"; } if (COption::GetOptionString('koloslib', 'db_log') == 'Y') { error_log(date('d.m.Y H:i') . ' ' . $sErrorText . "\n===========================\n", 3, ROOT_DIR . COption::GetOptionString('koloslib', 'db_log_path')); } $this->sMessage = "DB_MYSQL_ERROR"; $this->sErrorText = ''; }