- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockelement.php
- Класс: CAllIBlockElement
- Вызов: CAllIBlockElement::WF_CleanUpHistoryCopies
static function WF_CleanUpHistoryCopies($ELEMENT_ID=false, $HISTORY_COPIES=false)
{
if(CModule::IncludeModule("workflow"))
{
$err_mess = "FILE: ".__FILE__."
LINE: ";
global $DB;
if($HISTORY_COPIES===false)
$HISTORY_COPIES = intval(COption::GetOptionString("workflow","HISTORY_COPIES","10"));
$strSqlSearch = '';
$ELEMENT_ID = (int)$ELEMENT_ID;
if($ELEMENT_ID>0)
$strSqlSearch = " AND ID = $ELEMENT_ID ";
$strSql = "SELECT ID FROM b_iblock_element ".
"WHERE (ID=WF_PARENT_ELEMENT_ID or (WF_PARENT_ELEMENT_ID IS NULL AND WF_STATUS_ID=1)) ".
$strSqlSearch;
$z = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($zr=$z->Fetch())
{
$DID = $zr["ID"];
$strSql =
"SELECT ID, WF_NEW, WF_PARENT_ELEMENT_ID ".
"FROM b_iblock_element ".
"WHERE WF_PARENT_ELEMENT_ID = ".$DID." ".
" AND WF_PARENT_ELEMENT_ID<>ID ".
" AND (WF_NEW<>'Y' or WF_NEW is null) ".
"ORDER BY ID desc";
$t = $DB->Query($strSql, false, $err_mess.__LINE__);
$i = 0;
while ($tr = $t->Fetch())
{
$i++;
if($i>$HISTORY_COPIES)
{
$LAST_ID = CIBlockElement::WF_GetLast($DID);
if($LAST_ID!=$tr["ID"])
{
CIBlockElement::Delete($tr["ID"]);
}
}
}
}
}
}