static function GetHistoryList($by = 's_id', $order = 'desc', $arFilter = [])
{
$err_mess = (CWorkflow::err_mess())."
Function: GetHistoryList
Line: ";
global $DB;
$arSqlSearch = Array();
if (is_array($arFilter))
{
foreach ($arFilter as $key => $val)
{
if ((string)$val == '' || "$val"=="NOT_REF")
continue;
if (is_array($val) && count($val)<=0)
continue;
$match_value_set = (array_key_exists($key."_EXACT_MATCH", $arFilter)) ? true : false;
$key = strtoupper($key);
switch($key)
{
case "ID":
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("L.ID",$val,$match);
break;
case "DOCUMENT_ID":
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("L.DOCUMENT_ID",$val,$match);
break;
case "DATE_MODIFY_1":
if (CheckDateTime($val))
$arSqlSearch[] = "L.TIMESTAMP_X >= ".$DB->CharToDateFunction($val, "SHORT");
break;
case "DATE_MODIFY_2":
if (CheckDateTime($val))
$arSqlSearch[] = "L.TIMESTAMP_X < ".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
break;
case "MODIFIED_BY":
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("L.MODIFIED_BY", $val, $match);
break;
case "MODIFIED_USER":
$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
$arSqlSearch[] = GetFilterQuery("L.MODIFIED_BY, U.LOGIN, U.NAME, U.LAST_NAME", $val, $match);
break;
case "TITLE":
case "SITE_ID":
$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
$arSqlSearch[] = GetFilterQuery("L.".$key,$val,$match);
break;
case "FILENAME":
$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
$arSqlSearch[] = GetFilterQuery("L.FILENAME",$val,$match, array("/", "\", ".", "_"));
break;
case "BODY":
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("L.BODY",$val,$match,array(),"Y");
break;
case "STATUS":
$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
$arSqlSearch[] = GetFilterQuery("L.STATUS_ID, S.TITLE",$val,$match);
break;
case "STATUS_ID":
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("L.STATUS_ID",$val,$match);
break;
}
}
}
if ($by == "s_id") $strSqlOrder = "ORDER BY L.ID";
elseif ($by == "s_document_id") $strSqlOrder = "ORDER BY L.DOCUMENT_ID";
elseif ($by == "s_date_modify") $strSqlOrder = "ORDER BY L.TIMESTAMP_X";
elseif ($by == "s_modified_by") $strSqlOrder = "ORDER BY L.MODIFIED_BY";
elseif ($by == "s_filename") $strSqlOrder = "ORDER BY L.FILENAME";
elseif ($by == "s_site_id") $strSqlOrder = "ORDER BY L.SITE_ID";
elseif ($by == "s_title") $strSqlOrder = "ORDER BY L.TITLE";
elseif ($by == "s_status") $strSqlOrder = "ORDER BY L.STATUS_ID";
else
{
$strSqlOrder = "ORDER BY L.ID";
}
if ($order!="asc")
{
$strSqlOrder .= " desc ";
}
$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
$strSql = "
SELECT DISTINCT
L.*,
".$DB->DateToCharFunction("L.TIMESTAMP_X")." TIMESTAMP_X,
concat('(',U.LOGIN,') ',ifnull(U.NAME,''),' ',ifnull(U.LAST_NAME,'')) USER_NAME,
S.TITLE STATUS_TITLE
FROM
b_workflow_log L
LEFT JOIN b_workflow_status S ON (S.ID = L.STATUS_ID)
LEFT JOIN b_user U ON (U.ID = L.MODIFIED_BY)
WHERE
$strSqlSearch
$strSqlOrder
";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
return $res;
}