При отправке выходит ошибка:
unserialize(): Error at offset 487 of 868 bytes
*/bff/modules/sendmail/base.php [127]
Строка 127:
$sContentUn = (!empty($sContent) ? @unserialize($sContent) : false);
Часть кода:
/**
* Получение шаблона письма из файла
* @param string $sTemplateKey ключ шаблона
* @return array (body=>string, subject=>string, is_html=>bool, wrapper_id=>int)
*/
public function getMailTemplateFromFile($sTemplateKey)
{
static $cache = array();
if (!empty($cache[$sTemplateKey])) {
return $cache[$sTemplateKey];
}
$sTemplatePath = $this->_tplPath . $sTemplateKey . $this->_tplExt;
# получаем шаблон письма
if (file_exists($sTemplatePath)) {
$sContent = Files::getFileContent($sTemplatePath);
} else {
$sContent = '';
}
if (!$sContent) {
# нигде не нашли, восстанавливаем
if ($this->restoreMailTemplateFile($sTemplateKey) !== false) {
$sContent = Files::getFileContent($sTemplatePath);
}
}
$sContentUn = (!empty($sContent) ? @unserialize($sContent) : false);
if (is_array($sContentUn)) # un-сериализация прошла успешно
{
$sContent = $sContentUn;
} else if (!empty($sContent) && mb_stripos($sContent, ':{')!==false) {
# пытаемся починить сериализованные данные
$sContent = strtr($sContent, array("\r\n"=>"\n","\n"=>"\r\n")); // LF (Unix) => CRLF (Windows)
$sContentUn = @unserialize($sContent);
if (!is_array($sContentUn)) {
$sContent = preg_replace_callback('!s:(\d+):"(.*?)";!', function($match) {
return ($match[1] == strlen($match[2])) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';
}, $sContent);
$sContentUn = @unserialize($sContent);
}
if (is_array($sContentUn)) {
$sContent = $sContentUn;
}
}
# сохраняем в кеш и возвращаем шаблон
if (!is_array($sContent)) {
$sContent = array('body' => array(), 'subject' => array(), 'is_html' => false, 'wrapper_id' => 0);
foreach ($this->locale->getLanguages() as $lng) {
$sContent['body'][$lng] = $sContent['subject'][$lng] = '';
}
} else {
foreach ($this->locale->getLanguages() as $lng) {
foreach ($sContent as $k => $v) {
if (is_array($v)) {
if (!isset($sContent[$k][$lng])) {
$sContent[$k][$lng] = '';
}
}
}
}
}
return ($cache[$sTemplateKey] = $sContent);
}