• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblocksection.php
  • Класс: CAllIBlockSection
  • Вызов: CAllIBlockSection::recountTreeOnDelete
static function recountTreeOnDelete($arFields)
{
	global $DB;

	if (!isset($arFields['ID']))
	{
		return;
	}

	$ss = $DB->Query("
		SELECT
			IBLOCK_ID,
			LEFT_MARGIN,
			RIGHT_MARGIN
		FROM
			b_iblock_section
		WHERE
			ID = ".(int)$arFields["ID"]."
	")->Fetch();
	if (empty($ss))
	{
		return;
	}

	if (($ss["RIGHT_MARGIN"] > 0) && ($ss["LEFT_MARGIN"] > 0))
	{
		$DB->Query("
				UPDATE b_iblock_section SET
					TIMESTAMP_X=".($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X")."
					,RIGHT_MARGIN = RIGHT_MARGIN - 2
				WHERE
					IBLOCK_ID = ".$ss["IBLOCK_ID"]."
					AND RIGHT_MARGIN > ".$ss["RIGHT_MARGIN"]."
			");

		$DB->Query("
				UPDATE b_iblock_section SET
					TIMESTAMP_X=".($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X")."
					,LEFT_MARGIN = LEFT_MARGIN - 2
				WHERE
					IBLOCK_ID = ".$ss["IBLOCK_ID"]."
					AND LEFT_MARGIN > ".$ss["LEFT_MARGIN"]."
			");
	}
}