• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/checklist.php
  • Класс: CAutoCheck
  • Вызов: CAutoCheck::CheckQueryString
static function CheckQueryString($arParams = array())
{
	$time = time();
	$arPath = array(
		$_SERVER["DOCUMENT_ROOT"],
		$_SERVER["DOCUMENT_ROOT"]."/bitrix/templates/",
		$_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/",
		$_SERVER["DOCUMENT_ROOT"]."/bitrix/components/"
	);
	$arExept = array(
		"FOLDERS" => array("images", "bitrix", "upload", ".svn"),
		"EXT" => array("php"),
		"FILES" => array(
			$_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/dbconn.php",
			"after_connect.php"
		)
	);

	$arParams["STEP"] = (intval($arParams["STEP"])>=0)?intval($arParams["STEP"]):0;
	if (!BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"] || $arParams["STEP"] == 0)
	{
		BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"] = array(
			"LAST_FILE" => "",
			"FOUND" => "",
			"PERCENT" => 0,
		);
		$files = array();
		$arPathTmp = $arPath;
		foreach($arPathTmp as $path)
		{
			CCheckListTools::__scandir($path, $files, $arExept);
		}
		BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["COUNT"] = count($files);
	}

	$arFileNum = 0;
	foreach ($arPath as $namespace)
	{
		$files = array();
		CCheckListTools::__scandir($namespace, $files, $arExept);
		foreach($files as $file)
		{
			$arFileNum++;
			//this is not first step?
			if (BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["LAST_FILE"] <> '')
			{
				if (BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["LAST_FILE"] == $file)
					BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["LAST_FILE"] = "";
				continue;
			}

			if ($content = file_get_contents($file))
			{
				$queries = [];
				preg_match('/((?:mysql_query|mysqli_query|odbc_exec|oci_execute|odbc_execute)(.*))/ism', $content, $queries);

				if ($queries && !empty($queries[0]))
				{
					BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["FOUND"] .= str_replace(array("//", "\\"), array("/", "\"), $file)."n";
				}
			}

			if (time()-$time>=20)
			{
				BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["LAST_FILE"] = $file;
				return array(
					"IN_PROGRESS" => "Y",
					"PERCENT" => round($arFileNum/(BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["COUNT"]*0.01), 2)
				);
			}
		}
	}
	$arResult = array("STATUS" => true);
	if (BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["FOUND"] <> '')
	{
		$arResult["STATUS"] = false;
		$arResult["MESSAGE"]=array(
			"PREVIEW" => GetMessage("CL_KERNEL_CHECK_FILES").$arFileNum.".n".GetMessage("CL_ERROR_FOUND_SHORT")."n",
			"DETAIL" => GetMessage("CL_DIRECT_QUERY_TO_DB")."n".BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]["FOUND"],
		);
	}
	else
	{
		$arResult["MESSAGE"]=array(
			"PREVIEW" => GetMessage("CL_KERNEL_CHECK_FILES").$arFileNum."n"
		);
	}
	unset(BitrixMainApplication::getInstance()->getSession()["BX_CHECKLIST"]);
	return $arResult;
}