• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/lib/sql/updater.php
  • Класс: BitrixPerfmonSqlUpdater
  • Вызов: Updater::handle
protected function handle(array $diff)
{
	$this->columns = array();
	foreach ($diff as $pair)
	{
		if (!isset($pair[0]))
		{
			$this->handleCreate($pair[1]);
		}
		elseif (!isset($pair[1]))
		{
			$this->handleDrop($pair[0]);
		}
		else
		{
			$this->handleChange($pair[0], $pair[1]);
		}
	}

	foreach ($this->columns as $condition => $columns)
	{
		$ddl = ''; $predicate2 = [];
		foreach ($columns as $column)
		{
			$predicate2[] = $column[0];
			if ($ddl)
			{
				$ddl .= ', '.preg_replace('/^ALTER TABLE [^ ]+ /', '', $column[1]);
			}
			else
			{
				$ddl = $column[1];
			}
		}

		$stmt = $this->createStatement("$DB->Query("", $ddl, "");");
		$stmt->dependOn = $columns[0][2];
		$stmt->addCondition("$updater->CanUpdateDatabase()");
		$stmt->addCondition($columns[0][3]);
		$stmt->addCondition($columns[0][0]);

		$this->statements[] = $stmt;
	}

	$updaterSteps = $this->getStatements();
	$codeTree = new BitrixPerfmonPhpCodeTree($updaterSteps);
	$result = $codeTree->getCode(0);

	return $result;
}