Ejemplo n.º 1
0
 public static function TreeReSort($IBLOCK_ID, $ID = 0, $cnt = 0, $depth = 0, $ACTIVE = "Y")
 {
     global $DB;
     $IBLOCK_ID = IntVal($IBLOCK_ID);
     if ($ID == 0) {
         CIBlock::_transaction_lock($IBLOCK_ID);
     }
     if ($ID > 0) {
         $DB->Query("\n\t\t\t\tUPDATE\n\t\t\t\t\tb_iblock_section\n\t\t\t\tSET\n\t\t\t\t\tTIMESTAMP_X=" . ($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X") . "\n\t\t\t\t\t,RIGHT_MARGIN=" . IntVal($cnt) . "\n\t\t\t\t\t,LEFT_MARGIN=" . IntVal($cnt) . "\n\t\t\t\tWHERE\n\t\t\t\t\tID=" . IntVal($ID));
     }
     $strSql = "\n\t\t\tSELECT BS.ID, BS.ACTIVE\n\t\t\tFROM b_iblock_section BS\n\t\t\tWHERE BS.IBLOCK_ID = " . $IBLOCK_ID . "\n\t\t\tAND " . ($ID > 0 ? "BS.IBLOCK_SECTION_ID=" . IntVal($ID) : "BS.IBLOCK_SECTION_ID IS NULL") . "\n\t\t\tORDER BY BS.SORT, BS.NAME\n\t\t";
     $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("\n\t\t\tUPDATE\n\t\t\t\tb_iblock_section\n\t\t\tSET\n\t\t\t\tTIMESTAMP_X=" . ($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X") . "\n\t\t\t\t,RIGHT_MARGIN=" . IntVal($cnt) . "\n\t\t\t\t,DEPTH_LEVEL=" . IntVal($depth) . "\n\t\t\t\t,GLOBAL_ACTIVE='" . $ACTIVE . "'\n\t\t\tWHERE\n\t\t\t\tID=" . IntVal($ID));
     return $cnt + 1;
 }