• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/update_b24.php
  • Класс: CB24Updater
  • Вызов: CB24Updater::UpdateFromVersion
public function UpdateFromVersion($moduleId, $dbVersion)
{
	if ($moduleId == '')
	{
		return;
	}

	$errorMessage = "";

	if (file_exists($this->updatersDir.$moduleId) && is_dir($this->updatersDir.$moduleId))
	{
		$arUpdaters = array();

		if ($handle = @opendir($this->updatersDir.$moduleId))
		{
			while (false !== ($dir = readdir($handle)))
			{
				if ($dir == "." || $dir == "..")
				{
					continue;
				}

				if (substr($dir, 0, 7) == "updater")
				{
					if (is_file($this->updatersDir.$moduleId."/".$dir))
					{
						$num = substr($dir, 7, strlen($dir) - 11);
						if (substr($dir, strlen($dir) - 9) == "_post.php")
						{
							$num = substr($dir, 7, strlen($dir) - 16);
						}

						$arUpdaters[] = array("/".$dir, trim($num));
					}
					elseif (file_exists($this->updatersDir.$moduleId."/".$dir."/index.php"))
					{
						$num = substr($dir, 7);
						if (substr($dir, strlen($dir) - 5) == "_post")
						{
							$num = substr($dir, 7, strlen($dir) - 12);
						}

						$arUpdaters[] = array("/".$dir."/index.php", trim($num));
					}
				}
			}
			closedir($handle);
		}

		$ni1 = count($arUpdaters);
		for ($i1 = 0; $i1 < $ni1 - 1; $i1++)
		{
			for ($j1 = $i1 + 1; $j1 < $ni1; $j1++)
			{
				if (CUpdateClient::CompareVersions($arUpdaters[$i1][1], $arUpdaters[$j1][1]) > 0)
				{
					$tmp1 = $arUpdaters[$i1];
					$arUpdaters[$i1] = $arUpdaters[$j1];
					$arUpdaters[$j1] = $tmp1;
				}
			}
		}

		for ($i1 = 0; $i1 < $ni1; $i1++)
		{
			if (CUpdateClient::CompareVersions($arUpdaters[$i1][1], $dbVersion) <= 0)
			{
				continue;
			}

			$errorMessageTmp = "";

			syslog(LOG_INFO, $_SERVER["HTTP_HOST"]."tstartt".$moduleId.$arUpdaters[$i1][0]);

			CUpdateClient::RunUpdaterScript($this->updatersDir.$moduleId.$arUpdaters[$i1][0], $errorMessageTmp, "", $moduleId);

			syslog(LOG_INFO, $_SERVER["HTTP_HOST"]."tendt".$moduleId.$arUpdaters[$i1][0]."t".$errorMessageTmp);

			if ($errorMessageTmp <> '')
			{
				$errorMessage .= str_replace("#MODULE#", $moduleId, str_replace("#VER#", $arUpdaters[$i1][1], GetMessage("SUPP_UK_UPDN_ERR"))).": ".$errorMessageTmp.".";
			}

			$this->CollectDatabaseVersions("MODULE", $moduleId, $arUpdaters[$i1][1]);
		}
	}

	if ($errorMessage <> '')
	{
		$message = "Database update error (".$moduleId."-".$dbVersion."): ".$errorMessage;
		CUpdateClient::AddMessage2Log($message, "DUE");
		syslog(LOG_INFO, $_SERVER["HTTP_HOST"] . "terrort" . $message);
	}
	else
	{
		$message = "Database updated successfully (".$moduleId."-".$dbVersion.")";
		CUpdateClient::AddMessage2Log($message, "DUS");
		syslog(LOG_INFO, $_SERVER["HTTP_HOST"] . "tokt" . $message);
	}
}