if (!$bReadonly) { ?> <td style="width: 4%;"><div class="bxstl-h-div"><input type="checkbox" onclick="window.oBXSticker.List.CheckAll(this.checked);"/></div></td> <?php } ?> </tr> <?php if ($count > 0) { ?> <?php while ($arRes = $dbStickers->Fetch()) { ?> <?php $arRes['PAGE_URL'] = str_replace('%20', ' ', $arRes['PAGE_URL']); $html = CSticker::BBParseToHTML($arRes['CONTENT'], true); $colorClass = isset($colorSchemes[$arRes['COLOR']]) ? $colorSchemes[$arRes['COLOR']] : $colorSchemes[0]; $date = CSticker::GetUsableDate($arRes['DATE_UPDATE2']); $url = $arRes['PAGE_URL'] . "?show_sticker=" . intVal($arRes['ID']); $bCompleted = $arRes['COMPLETED'] == 'Y'; if ($arRes['PAGE_URL'] == $curPage) { $curPageIds[] = $arRes['ID']; } ?> <tr class="bxst-list-item<?php if ($arRes['CLOSED'] == "Y") { echo " bxst-list-item-closed"; } ?> "> <td class="bxst-id-cell"><a href="<?php
function GetList($Params = array()) { if (!CSticker::CanDoOperation('sticker_view')) { return false; } global $DB, $USER; $bDBResult = isset($Params['bDBResult']) ? $Params['bDBResult'] : false; $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() . "<br>Function: GetList<br>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 = strtoupper($filter_keys[$i]); $val = $arFilter[$filter_keys[$i]]; if (is_string($val) && strlen($val) <= 0) { 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[strtoupper($by)])) { $strOrderBy .= $arFields[strtoupper($by)]["FIELD_NAME"] . ' ' . (strtolower($order) == 'desc' ? 'desc' . (strtoupper($DB->type) == "ORACLE" ? " NULLS LAST" : "") : 'asc' . (strtoupper($DB->type) == "ORACLE" ? " NULLS FIRST" : "")) . ','; } } if (strlen($strOrderBy) > 0) { $strOrderBy = "ORDER BY " . rtrim($strOrderBy, ","); } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if (is_array($arFilter['COLORS'])) { $strColors = ""; for ($i = 0; $i < count($arFilter['COLORS']); $i++) { $strColors .= "," . IntVal($arFilter['COLORS'][$i]); } $strSqlSearch .= "\n AND COLOR in (" . trim($strColors, ", ") . ")"; } $strSql = "\n\t\t\tSELECT\n\t\t\t\tST.*, " . $DB->DateToCharFunction("ST.DATE_UPDATE") . " as DATE_UPDATE2,\n\t\t\t\t" . $DB->DateToCharFunction("ST.DATE_CREATE") . " as DATE_CREATE2\n\t\t\tFROM\n\t\t\t\tb_sticker ST\n\t\t\tWHERE\n\t\t\t\t{$strSqlSearch}\n\t\t\t{$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' || $arFilter['ONLY_OWNER'] == 'Y')) { 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']); } $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; }