- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblocksection.php
- Класс: CAllIBlockSection
- Вызов: CAllIBlockSection::TreeReSort
static function TreeReSort($IBLOCK_ID, $ID=0, $cnt=0, $depth=0, $ACTIVE="Y")
{
global $DB;
$IBLOCK_ID = (int)$IBLOCK_ID;
if($ID==0)
{
CIBlock::_transaction_lock($IBLOCK_ID);
}
if($ID > 0)
{
$DB->Query("
UPDATE
b_iblock_section
SET
TIMESTAMP_X=".($DB->type=="ORACLE"?"NULL":"TIMESTAMP_X")."
,RIGHT_MARGIN=".(int)$cnt."
,LEFT_MARGIN=".(int)$cnt."
WHERE
ID=".(int)$ID
);
}
$strSql = "
SELECT BS.ID, BS.ACTIVE
FROM b_iblock_section BS
WHERE BS.IBLOCK_ID = ".$IBLOCK_ID."
AND ".($ID>0? "BS.IBLOCK_SECTION_ID=".(int)$ID: "BS.IBLOCK_SECTION_ID IS NULL")."
ORDER BY BS.SORT, BS.NAME
";
$cnt++;
$res = $DB->Query($strSql);
while($arr = $res->Fetch())
$cnt = CIBlockSection::TreeReSort($IBLOCK_ID, $arr["ID"], $cnt, $depth+1, ($ACTIVE=="Y" && $arr["ACTIVE"]=="Y" ? "Y" : "N"));
if($ID==0)
{
return true;
}
$DB->Query("
UPDATE
b_iblock_section
SET
TIMESTAMP_X=".($DB->type=="ORACLE"?"NULL":"TIMESTAMP_X")."
,RIGHT_MARGIN=".(int)$cnt."
,DEPTH_LEVEL=".(int)$depth."
,GLOBAL_ACTIVE='".$ACTIVE."'
WHERE
ID=".(int)$ID
);
return $cnt+1;
}