Требуется разработчик! Поддержка серверов

CPullChannel::Get: метод Битрикс

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

<?php 
//    CPullChannel::Get()
//    /bitrix/modules/pull/classes/general/pull_channel.php:31

    
public static function Get($userId$cache true$reOpen false$channelType self::TYPE_PRIVATE)
    {
        global 
$DB$CACHE_MANAGER;

        
$nginxStatus CPullOptions::GetQueueServerStatus();

        
$arResult false;
        
$userId intval($userId);
        
$cache_id="b_pchc_".$userId.'_'.$channelType;

        if (
$nginxStatus && $cache)
        {
            
$res $CACHE_MANAGER->Read(43200$cache_id"b_pull_channel");
            if (
$res)
                
$arResult $CACHE_MANAGER->Get($cache_id);
        }
        if(!
is_array($arResult) || !isset($arResult['CHANNEL_ID']))
        {
            
$arResult = Array();
            
CTimeZone::Disable();
            
$strSql "
                    SELECT C.CHANNEL_ID, C.CHANNEL_TYPE, "
.$DB->DatetimeToTimestampFunction('C.DATE_CREATE')." DATE_CREATE, C.LAST_ID
                    FROM b_pull_channel C
                    WHERE C.USER_ID = "
.$userId." AND C.CHANNEL_TYPE = '".$DB->ForSQL($channelType)."'
            "
;
            
CTimeZone::Enable();
            
$res $DB->Query($strSql);
            if (
$arResult $res->Fetch())
            {
                if (
$nginxStatus)
                {
                    
self::SaveToCache($cache_id$arResult);
                }
            }
        }
        if (empty(
$arResult) || intval($arResult['DATE_CREATE'])+43200 time())
        {
            
$arChannel = Array(
                
'CHANNEL_ID' => self::GetNewChannelId(),
                
'CHANNEL_TYPE' => $channelType,
                
'DATE_CREATE' => time(),
                
'LAST_ID' => 0,
            );
            
self::SaveToCache($cache_id$arChannel);

            if (isset(
$arResult['CHANNEL_ID']))
            {
                
$strSql "DELETE FROM b_pull_channel WHERE CHANNEL_ID = '".$DB->ForSQL($arResult['CHANNEL_ID'])."'";
                
$DB->Query($strSqlfalse"File: ".__FILE__."<br>Line: ".__LINE__);
            }

            
$channelId self::Add($userId$arChannel['CHANNEL_ID'], $arChannel['CHANNEL_TYPE']);

            if (isset(
$arResult['CHANNEL_ID']) && $channelId != $arResult['CHANNEL_ID'])
            {
                
$params = Array(
                    
'action' => $channelType != self::TYPE_PRIVATE'reconnect''get_config',
                    
'channel' => Array(
                        
'id' => self::SignChannel($arResult['CHANNEL_ID']),
                        
'type' => $channelType,
                    ),
                );
                if (
$channelType != self::TYPE_PRIVATE)
                {
                    
$params['new_channel'] = Array(
                        
'id' => self::SignChannel($channelId),
                        
'start' => date('c'time()),
                        
'end' => date('c'time()+43205),
                        
'type' => $channelType,
                    );
                }
                
$arMessage = Array(
                    
'module_id' => 'pull',
                    
'command' => 'channel_expire',
                    
'params' => $params
                
);
                
CPullStack::AddByChannel($arResult['CHANNEL_ID'], $arMessage);
            }

            return 
$channelId? Array(
                
'CHANNEL_ID' => $channelId,
                
'CHANNEL_TYPE' => $channelType,
                
'CHANNEL_DT' => time(),
                
'LAST_ID' => 0,
            ): 
false;
        }
        else
        {
            if (
$nginxStatus && $reOpen && CPullOptions::GetQueueServerVersion() < 3)
            {
                
self::Send($arResult['CHANNEL_ID'], \Bitrix\Pull\Common::jsonEncode(Array(
                    
'module_id' => 'pull',
                    
'command' => 'reopen',
                    
'expiry' => 1,
                    
'params' => Array(),
                    
'extra' => Array(
                        
'server_time' => date('c'),
                        
'server_name' => COption::GetOptionString('main''server_name'$_SERVER['SERVER_NAME']),
                        
'revision_web' => PULL_REVISION_WEB,
                        
'revision_mobile' => PULL_REVISION_MOBILE,
                    ),
                )));
            }
            return Array(
                
'CHANNEL_ID' => $arResult['CHANNEL_ID'],
                
'CHANNEL_TYPE' => $arResult['CHANNEL_TYPE'],
                
'CHANNEL_DT' => $arResult['DATE_CREATE'],
                
'LAST_ID' => $arResult['LAST_ID'],
            );
        }
    }

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

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

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

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

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

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

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

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