Поддержка серверов

CSmile::getList: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=165975

<?php 
//    /bitrix/modules/main/classes/general/smile.phpCSmile::getList()
//    364:

    
public static function getList($arParams = Array(), $lang LANGUAGE_ID)
    {
        global 
$DB;

        
$arResult $arSelect $arOrder $arFilter $arJoin = Array();
        if (!isset(
$arParams['SELECT']) || !is_array($arParams['SELECT']))
            
$arParams['SELECT'] = Array('ID''SET_ID',  'TYPE''NAME''SORT''TYPING''CLICKABLE''HIDDEN''IMAGE''IMAGE_DEFINITION''IMAGE_WIDTH''IMAGE_HEIGHT');

        
// select block
        
foreach ($arParams['SELECT'] as $fieldName)
        {
            if (
$fieldName == 'NAME')
            {
                
$arSelect['NAME'] = 'sl.'.$fieldName;
                
$arJoin['LANG'] = "LEFT JOIN b_smile_lang sl ON sl.TYPE = '".self::TYPE_SMILE."' AND sl.SID = s.ID AND sl.LID = '".$DB->ForSql(htmlspecialcharsbx($lang))."'";
            }
            elseif (
$fieldName == 'SET_NAME')
            {
                
$arSelect['SET_ID'] = 's.SET_ID';
                
$arSelect['SET_NAME'] = 'sl2.NAME as SET_NAME';
                
$arJoin['LANG2'] = "LEFT JOIN b_smile_lang sl2 ON sl2.TYPE = '".CSmileSet::TYPE_SET."' AND sl2.SID = s.SET_ID AND sl2.LID = '".$DB->ForSql(htmlspecialcharsbx($lang))."'";
            }
            else
            {
                
$arSelect[$fieldName] = 's.'.$fieldName;
            }
        }
        
$arSelect['ID'] = 's.ID';

        
// filter block
        
if (isset($arParams['FILTER']['ID']))
        {
            if (
is_array($arParams['FILTER']['ID']))
            {
                
$ID = Array();
                foreach (
$arParams['FILTER']['ID'] as $key => $value)
                    
$ID[$key] = intval($value);

                if (!empty(
$ID))
                    
$arFilter[] = "s.ID IN (".implode(','$ID).')';
            }
            else
            {
                
$arFilter[] = "s.ID = ".intval($arParams['FILTER']['ID']);
            }
        }
        if (isset(
$arParams['FILTER']['SET_ID']))
        {
            if (
is_array($arParams['FILTER']['SET_ID']))
            {
                
$ID = Array();
                foreach (
$arParams['FILTER']['SET_ID'] as $key => $value)
                    
$ID[$key] = intval($value);

                if (!empty(
$ID))
                    
$arFilter[] = "s.SET_ID IN ('".implode("','"$ID)."')";
            }
            else
            {
                
$arFilter[] = "s.SET_ID = ".intval($arParams['FILTER']['SET_ID']);
            }
        }
        if (isset(
$arParams['FILTER']['TYPE']) && in_array($arParams['FILTER']['TYPE'], Array(self::TYPE_SMILEself::TYPE_ICON)))
        {
            
$arFilter[] = "s.TYPE = '".$arParams['FILTER']['TYPE']."'";
        }
        if (isset(
$arParams['FILTER']['PARENT_ID']))
        {
            
$arFilter[] = "ss2.PARENT_ID = ".intval($arParams['FILTER']['PARENT_ID']);
            
$arJoin['PARENT'] = "LEFT JOIN b_smile_set ss2 ON ss2.ID = s.SET_ID";
        }

        
// order block
        
if (isset($arParams['ORDER']) && is_array($arParams['ORDER']))
        {
            foreach (
$arParams['ORDER'] as $by => $order)
            {
                
$order strtoupper($order) == 'ASC''ASC''DESC';
                
$by strtoupper($by);
                if (
in_array($by, Array('ID''SET_ID''SORT''IMAGE_DEFINITION''HIDDEN')))
                {
                    
$arOrder[$by] = 's.'.$by.' '.$order;
                }
            }
        }
        else
        {
            
$arOrder['ID'] = 's.ID DESC';
        }

        
$strSelect "SELECT ".implode(', '$arSelect);
        
$strSql "
            FROM b_smile s
            "
.(!empty($arJoin)? implode(' '$arJoin): "")."
            "
.(!empty($arFilter)? "WHERE ".implode(' AND '$arFilter): "")."
            "
.(!empty($arOrder)? "ORDER BY ".implode(', '$arOrder): "")."
        "
;

        if (isset(
$arParams['RETURN_SQL']) && $arParams['RETURN_SQL'] == 'Y')
        {
            return 
$strSelect.$strSql;
        }

        if(
array_key_exists("NAV_PARAMS"$arParams) && is_array($arParams["NAV_PARAMS"]))
        {
            
$nTopCount intval($arParams['NAV_PARAMS']['nTopCount']);
            if(
$nTopCount 0)
            {
                
$strSql $DB->TopSql($strSelect.$strSql$nTopCount);
                
$res $DB->Query($strSqlfalse"File: ".__FILE__."<br>Line: ".__LINE__);
            }
            else
            {
                
$res_cnt $DB->Query("
                    SELECT COUNT(s.ID) as CNT
                    FROM b_smile s
                    "
.(!empty($arFilter)? "WHERE ".implode(' AND '$arFilter): "")
                );
                
$arCount $res_cnt->Fetch();
                
$res = new CDBResult();
                
$res->NavQuery($strSelect.$strSql$arCount["CNT"], $arParams["NAV_PARAMS"]);
            }
        }
        else
        {
            
$res $DB->Query($strSelect.$strSqlfalse"File: ".__FILE__."<br>Line: ".__LINE__);
        }

        if (isset(
$arParams['RETURN_RES']) && $arParams['RETURN_RES'] == 'Y')
        {
            return 
$res;
        }
        else
        {
            while (
$row $res->GetNext(truefalse))
                
$arResult[$row['ID']] = $row;

            return 
$arResult;
        }
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение