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