• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/undo.php
  • Класс: CUndo
  • Вызов: CUndo::GetList
static function GetList($Params = array())
{
	global $DB;

	$arFilter = $Params['arFilter'];
	$arOrder = $Params['arOrder'] ?? array('ID' => 'asc');

	$arFields = array(
		"ID" => array("FIELD_NAME" => "U.ID", "FIELD_TYPE" => "string"),
		"MODULE_ID" => array("FIELD_NAME" => "U.MODULE_ID", "FIELD_TYPE" => "string"),
		"UNDO_TYPE" => array("FIELD_NAME" => "U.UNDO_TYPE", "FIELD_TYPE" => "string"),
		"UNDO_HANDLER" => array("FIELD_NAME" => "U.UNDO_HANDLER", "FIELD_TYPE" => "string"),
		"CONTENT" => array("FIELD_NAME" => "U.CONTENT", "FIELD_TYPE" => "string"),
		"USER_ID" => array("FIELD_NAME" => "U.USER_ID", "FIELD_TYPE" => "int"),
		"TIMESTAMP_X" => array("FIELD_NAME" => "U.TIMESTAMP_X", "FIELD_TYPE" => "int"),
	);

	$arSqlSearch = array();

	if (is_array($arFilter))
	{
		foreach ($arFilter as $key => $val)
		{
			$n = mb_strtoupper($key);
			if ($n == '%ID')
				$arSqlSearch[] = "(U.ID like '".$DB->ForSql($val)."')";
			elseif ($n == 'ID' || $n == 'USER_ID')
				$arSqlSearch[] = GetFilterQuery("U.".$n, $val, 'N');
			elseif (isset($arFields[$n]))
				$arSqlSearch[] = GetFilterQuery($arFields[$n]["FIELD_NAME"], $val);
		}
	}

	$strOrderBy = '';
	foreach ($arOrder as $by => $order)
	{
		$by = mb_strtoupper($by);
		if (isset($arFields[$by]))
		{
			$strOrderBy .= $arFields[$by]["FIELD_NAME"].' '.(mb_strtolower($order) == 'desc'? 'desc': 'asc').',';
		}
	}

	if ($strOrderBy)
	{
		$strOrderBy = "ORDER BY ".rtrim($strOrderBy, ",");
	}

	$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
	$strSql = "
		SELECT
			U.*
		FROM
			b_undo U
		WHERE
			$strSqlSearch
		$strOrderBy";

	$res = $DB->Query($strSql);
	$arResult = array();
	while ($arRes = $res->Fetch())
		$arResult[] = $arRes;

	return $arResult;
}