- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/mysql/iblockelement.php
- Класс: CIBlockElement
- Вызов: CIBlockElement::WF_GetHistoryList
static function WF_GetHistoryList($ELEMENT_ID, $by = 's_id', $order = 'desc', $arFilter = [])
{
$err_mess = "FILE: ".__FILE__."
LINE: ";
global $DB;
$ELEMENT_ID = intval($ELEMENT_ID);
$strSqlSearch = "";
if(is_array($arFilter))
{
foreach ($arFilter as $key => $val)
{
if ((string)$val == '' || $val == "NOT_REF")
continue;
$val = $DB->ForSql($val);
$key = strtoupper($key);
switch($key)
{
case "ID":
$arr = explode(",", $val);
if (!empty($arr))
{
$arr = array_map("intval", $arr);
$str = implode(", ", $arr);
$strSqlSearch .= " and E.ID in (".$str.")";
}
break;
case "TIMESTAMP_FROM":
$strSqlSearch .= " and E.TIMESTAMP_X>=FROM_UNIXTIME('".MkDateTime(FmtDate($val,"D.M.Y"),"d.m.Y")."')";
break;
case "TIMESTAMP_TO":
$strSqlSearch .= " and E.TIMESTAMP_X<=FROM_UNIXTIME('".MkDateTime(FmtDate($val,"D.M.Y")." 23:59:59","d.m.Y H:i:s")."')";
break;
case "MODIFIED_BY":
case "MODIFIED_USER_ID":
$strSqlSearch .= " and E.MODIFIED_BY='".intval($val)."'";
break;
case "IBLOCK_ID":
$strSqlSearch .= " and E.IBLOCK_ID='".intval($val)."'";
break;
case "NAME":
if($val!="%%")
$strSqlSearch .= " and upper(E.NAME) like upper('".$DB->ForSQL($val,255)."')";
break;
case "STATUS":
case "STATUS_ID":
$strSqlSearch .= " and E.WF_STATUS_ID='".intval($val)."'";
break;
}
}
}
if($by == "s_id")
$strSqlOrder = "ORDER BY E.ID";
elseif($by == "s_timestamp")
$strSqlOrder = "ORDER BY E.TIMESTAMP_X";
elseif($by == "s_modified_by")
$strSqlOrder = "ORDER BY E.MODIFIED_BY";
elseif($by == "s_name")
$strSqlOrder = "ORDER BY E.NAME";
elseif($by == "s_status")
$strSqlOrder = "ORDER BY E.WF_STATUS_ID";
else
{
$strSqlOrder = "ORDER BY E.ID";
}
if($order != "asc")
{
$strSqlOrder .= " desc ";
}
$strSql = "
SELECT
E.*,
".$DB->DateToCharFunction("E.TIMESTAMP_X")." TIMESTAMP_X,
concat('(', U.LOGIN, ') ', coalesce(U.NAME,''), ' ', coalesce(U.LAST_NAME,'')) USER_NAME,
S.TITLE STATUS_TITLE
FROM
b_iblock_element E
INNER JOIN b_workflow_status S on S.ID = E.WF_STATUS_ID
LEFT JOIN b_user U ON U.ID = E.MODIFIED_BY
WHERE
E.WF_PARENT_ELEMENT_ID = ".$ELEMENT_ID."
".$strSqlSearch."
".$strSqlOrder."
";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
return $res;
}