- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
- Класс: CSiteCheckerTest
- Вызов: CSiteCheckerTest::check_mbstring
function check_mbstring()
{
$file = $_SERVER['DOCUMENT_ROOT'].'/bitrix/.settings.php';
if ($this->fix_mode)
{
if (!file_exists($file))
{
BitrixMainConfigConfiguration::wnc();
bx_accelerator_reset();
}
return $this->Result(file_exists($file));
}
if (!file_exists($file))
{
$this->arTestVars['check_mbstring_fail'] = true;
$mode = 4;
$link = ' ' . GetMessage('SC_FIX') . '';
return $this->Result(false, GetMessage('SC_ERR_NO_SETTINGS').$link);
}
if (BitrixMainConfigConfiguration::getValue("utf_mode") !== (defined('BX_UTF') && BX_UTF === true))
{
return $this->Result(false, GetMessage('MAIN_SC_MBSTRING_SETTIGNS_DIFFER'));
}
$encoding = strtolower(ini_get('mbstring.internal_encoding'));
$default = strtolower(ini_get('default_charset'));
if($default == "")
{
return $this->Result(false, GetMessage("MAIN_SC_DEFAULT_CHARSET"));
}
if($encoding <> '' && $encoding <> $default)
{
return $this->Result(false, GetMessage("MAIN_SC_ENC_EQUAL"));
}
if(ini_get('mbstring.func_overload') > 0)
{
//should be non-existent
return $this->Result(false, GetMessage("MAIN_SC_FUNC_OVERLOAD"));
}
$retVal = true;
$bUtf = false;
$rs = CSite::GetList('', '', array('ACTIVE'=>'Y'));
while($f = $rs->Fetch())
{
if (strpos(strtolower($f['CHARSET']), 'utf') !== false)
{
$bUtf = true;
break;
}
}
if ($bUtf)
{
$text = GetMessage('SC_MB_UTF');
if($default <> "utf-8")
{
$retVal = false;
$text .= '
'.GetMessage("MAIN_SC_ENC_UTF");
$this->arTestVars['check_mbstring_fail'] = true;
}
if (!defined('BX_UTF') || BX_UTF !== true)
{
$retVal = false;
$text .= '
'.GetMessage('SC_BX_UTF');
$this->arTestVars['check_mbstring_fail'] = true;
}
}
else
{
$text = GetMessage('SC_MB_NOT_UTF');
if($default == "utf-8")
{
$retVal = false;
$text .= '
'.GetMessage("MAIN_SC_ENC_NON_UTF");
$this->arTestVars['check_mbstring_fail'] = true;
}
if (defined('BX_UTF'))
{
$retVal = false;
$text .= '
'.GetMessage('SC_BX_UTF_DISABLE');
$this->arTestVars['check_mbstring_fail'] = true;
}
}
if ($retVal)
{
$retVal = (strlen("xd0xa2") == 2);
if (!$retVal)
$text = GetMessage('SC_STRLEN_FAIL_PHP56');
if (!$bUtf && LANG_CHARSET == 'windows-1251' && !($retVal = strtoupper("xe0") == "xc0"))
$text = GetMessage('SC_STRTOUPPER_FAIL');
}
return $this->Result($retVal, ($retVal ? GetMessage("MAIN_SC_CORRECT").'. ':'').$text);
}