• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/update_client_partner.php
  • Класс: CUpdateClientPartner
  • Вызов: CUpdateClientPartner::GetCurrentModules
static function GetCurrentModules(&$strError)
{
	$arClientModules = array();

	if (file_exists($_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/main/classes/general/version.php")
		&& is_file($_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/main/classes/general/version.php"))
	{
		$p = file_get_contents($_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/main/classes/general/version.php");

		preg_match("/defines*(s*"SM_VERSION"s*,s*"(d+.d+.d+)"s*)s*/im", $p, $arVers);
		$arClientModules["main"] = array("VERSION" => $arVers[1], "IS_DEMO" => ((defined("DEMO") && DEMO == "Y") ? "Y" : "N"));
	}

	if (!array_key_exists("main", $arClientModules) || $arClientModules["main"]["VERSION"] == '')
	{
		CUpdateClientPartner::AddMessage2Log(GetMessage("SUPP_GM_ERR_DMAIN"), "Ux09");
		$strError .= "[Ux09] ".GetMessage("SUPP_GM_ERR_DMAIN").". ";
		return array();
	}

	if ($handle = @opendir($_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules"))
	{
		while (false !== ($dir = readdir($handle)))
		{
			if (is_dir($_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/".$dir)
				&& $dir != "." && $dir != ".." && $dir != "main")
			{
				$module_dir = $_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/".$dir;
				if (file_exists($module_dir."/install/index.php"))
				{
					$arInfo = CUpdateClientPartner::__GetModuleInfo($module_dir);
					if (!isset($arInfo["VERSION"]) || $arInfo["VERSION"] == '')
					{
						CUpdateClientPartner::AddMessage2Log(str_replace("#MODULE#", $dir, GetMessage("SUPP_GM_ERR_DMOD")), "Ux11");
						$strError .= "[Ux11] ".str_replace("#MODULE#", $dir, GetMessage("SUPP_GM_ERR_DMOD")).". ";

						return array();
					}
					else
					{
						if($arInfo["ACTIVE"] == "Y")
							$arClientModules[$dir] = array("VERSION" => $arInfo["VERSION"], "IS_DEMO" => $arInfo["IS_DEMO"]);
					}
				}
				else
				{
					CUpdateClientPartner::AddMessage2Log(str_replace("#MODULE#", $dir, GetMessage("SUPP_GM_ERR_DMOD")), "Ux12");
				}
			}
		}
		closedir($handle);
	}
	else
	{
		CUpdateClientPartner::AddMessage2Log(GetMessage("SUPP_GM_NO_KERNEL"), "Ux15");
		$strError .= "[Ux15] ".GetMessage("SUPP_GM_NO_KERNEL").". ";

		return array();
	}

	return $arClientModules;
}