• Модуль: fileman
  • Путь к файлу: ~/bitrix/modules/fileman/classes/general/sticker.php
  • Класс: CSticker
  • Вызов: CSticker::GetList
static function GetList($Params = array())
{
	if (!CSticker::CanDoOperation('sticker_view'))
		return false;

	global $DB, $USER;
	$bDBResult = isset($Params['bDBResult'])? $Params['bDBResult']: false;
	$Params['arFilter']['PAGE_URL'] = str_replace(' ', '%20', $Params['arFilter']['PAGE_URL'] ?? '');
	$arFilter = $Params['arFilter'];
	$arOrder = isset($Params['arOrder']) ? $Params['arOrder'] : Array('ID' => 'asc');

	// Cache
	$cachePath = "stickers/";
	$cacheTime = 36000000;
	$bCache = true;

	static $arFields = array(
		"ID" => Array("FIELD_NAME" => "ST.ID", "FIELD_TYPE" => "int"),
		"SITE_ID" => Array("FIELD_NAME" => "ST.SITE_ID", "FIELD_TYPE" => "string"),
		"PAGE_URL" => Array("FIELD_NAME" => "ST.PAGE_URL", "FIELD_TYPE" => "string"),
		"PAGE_TITLE" => Array("FIELD_NAME" => "ST.PAGE_TITLE", "FIELD_TYPE" => "string"),
		"DATE_CREATE" => Array("FIELD_NAME" => "ST.DATE_CREATE", "FIELD_TYPE" => "date"),
		"DATE_UPDATE" => Array("FIELD_NAME" => "ST.DATE_UPDATE", "FIELD_TYPE" => "date"),
		"MODIFIED_BY" => Array("FIELD_NAME" => "ST.MODIFIED_BY", "FIELD_TYPE" => "int"),
		"CREATED_BY" => Array("FIELD_NAME" => "ST.CREATED_BY", "FIELD_TYPE" => "int"),
		"PERSONAL" => Array("FIELD_NAME" => "ST.PERSONAL", "FIELD_TYPE" => "string"),
		"CONTENT" => Array("FIELD_NAME" => "ST.CONTENT ", "FIELD_TYPE" => "string"),
		"POS_TOP" => Array("FIELD_NAME" => "ST.POS_TOP", "FIELD_TYPE" => "int"),
		"POS_LEFT" => Array("FIELD_NAME" => "ST.POS_LEFT", "FIELD_TYPE" => "int"),
		"WIDTH" => Array("FIELD_NAME" => "ST.WIDTH", "FIELD_TYPE" => "int"),
		"HEIGHT" => Array("FIELD_NAME" => "ST.HEIGHT", "FIELD_TYPE" => "int"),
		"COLOR" => Array("FIELD_NAME" => "ST.COLOR", "FIELD_TYPE" => "int"),

		"COLLAPSED" => Array("FIELD_NAME" => "ST.COLLAPSED ", "FIELD_TYPE" => "string"),
		"CLOSED" => Array("FIELD_NAME" => "ST.CLOSED ", "FIELD_TYPE" => "string"),
		"DELETED" => Array("FIELD_NAME" => "ST.DELETED ", "FIELD_TYPE" => "string"),

		"MARKER_TOP" => Array("FIELD_NAME" => "ST.MARKER_TOP", "FIELD_TYPE" => "int"),
		"MARKER_LEFT" => Array("FIELD_NAME" => "ST.MARKER_LEFT", "FIELD_TYPE" => "int"),
		"MARKER_WIDTH" => Array("FIELD_NAME" => "ST.MARKER_WIDTH", "FIELD_TYPE" => "int"),
		"MARKER_HEIGHT" => Array("FIELD_NAME" => "ST.MARKER_HEIGHT", "FIELD_TYPE" => "int"),
		"MARKER_ADJUST" => Array("FIELD_NAME" => "ST.MARKER_ADJUST", "FIELD_TYPE" => "string")
	);

	$err_mess = (CSticker::GetErrorMess())."
Function: GetList
Line: "; $arSqlSearch = array(); $strSqlSearch = ""; if ($bCache) { $cache = new CPHPCache; $cacheId = serialize(array($arFilter, $bDBResult)); if(($tzOffset = CTimeZone::GetOffset()) <> 0) $cacheId .= "_".$tzOffset; if ($cache->InitCache($cacheTime, $cacheId, $cachePath)) { $cachedRes = $cache->GetVars(); if (!empty($cachedRes['stickers'])) return $cachedRes['stickers']; } } if(is_array($arFilter)) { $filter_keys = array_keys($arFilter); for($i=0, $l = count($filter_keys); $i<$l; $i++) { $n = mb_strtoupper($filter_keys[$i]); $val = $arFilter[$filter_keys[$i]]; if(is_string($val) && $val == '') continue; if ($n == 'ID') $arSqlSearch[] = GetFilterQuery("ST.ID", $val, 'N'); if ($n == 'PAGE_URL') $arSqlSearch[] = GetFilterQuery("ST.PAGE_URL", $val, 'N'); if ($n == 'SITE_ID') $arSqlSearch[] = GetFilterQuery("ST.SITE_ID", $val, 'N'); elseif(isset($arFields[$n])) $arSqlSearch[] = GetFilterQuery($arFields[$n]["FIELD_NAME"], $val); } } $strOrderBy = ''; foreach($arOrder as $by=>$order) if(isset($arFields[mb_strtoupper($by)])) $strOrderBy .= $arFields[mb_strtoupper($by)]["FIELD_NAME"].' '.(mb_strtolower($order) == 'desc'?'desc'.($DB->type == "ORACLE"?" NULLS LAST":""):'asc'.($DB->type == "ORACLE"?" NULLS FIRST":"")).','; if($strOrderBy <> '') $strOrderBy = "ORDER BY ".rtrim($strOrderBy, ","); $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if (is_array($arFilter['COLORS'] ?? null)) { $strColors = ""; for($i=0; $i < count($arFilter['COLORS']); $i++) $strColors .= ",".intval($arFilter['COLORS'][$i]); $strSqlSearch .= "n AND COLOR in (".trim($strColors, ", ").")"; } $strSql = " SELECT ST.*, ".$DB->DateToCharFunction("ST.DATE_UPDATE")." as DATE_UPDATE2, ".$DB->DateToCharFunction("ST.DATE_CREATE")." as DATE_CREATE2 FROM b_sticker ST WHERE $strSqlSearch $strOrderBy"; $res = $DB->Query($strSql, false, $err_mess.__LINE__); if ($arFilter['USER_ID'] > 0 || !$bDBResult) { $arResult = Array(); while($arRes = $res->Fetch()) { if ($arFilter['USER_ID'] > 0 && $arRes['CREATED_BY'] != $arFilter['USER_ID'] && ($arRes['PERSONAL'] == 'Y'/* It's another user's personal sticker*/ || ($arFilter['ONLY_OWNER'] ?? null) == 'Y'/* display only owner's stickers*/)) continue; if (!$bDBResult) { $arRes['AUTHOR'] = CSticker::GetUserName($arRes['CREATED_BY']); $arRes['INFO'] = CSticker::GetStickerInfo($arRes['CREATED_BY'], $arRes['DATE_CREATE2'], $arRes['MODIFIED_BY'], $arRes['DATE_UPDATE2']); $arRes['HTML_CONTENT'] = CSticker::BBParseToHTML($arRes['CONTENT']); $arRes['MARKER_ADJUST'] = unserialize($arRes['MARKER_ADJUST'], ['allowed_classes' => false]); } $arResult[] = $arRes; } if ($bDBResult) $res->InitFromArray($arResult); } if ($bDBResult) $arResult = $res; if ($bCache) { $cache->StartDataCache($cacheTime, $cacheId, $cachePath); $cache->EndDataCache(array("stickers" => $arResult)); } return $arResult; }