• Модуль: 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); }