• Модуль: workflow
  • Путь к файлу: ~/bitrix/modules/workflow/classes/mysql/workflow.php
  • Класс: CWorkflow
  • Вызов: CWorkflow::GetHistoryList
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; }