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

CEventCalendar::GetNearestEventsList: метод Битрикс

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

<?php 
//    /bitrix/modules/intranet/classes/general/event_calendar.phpCEventCalendar::GetNearestEventsList()
//    5181:

    
function GetNearestEventsList($arParams)
    {
        if (!isset(
$arParams['userId']))
        {
            global 
$USER;
            
// Get current user id
            
$curUserId $USER->IsAuthorized() ? $USER->GetID() : 0;
        }
        else
        {
            
$curUserId intval($arParams['userId']);
        }

        if (
$arParams['bCurUserList'])
        {
            if (
$curUserId <= || (class_exists('CSocNetFeatures') && !CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER$curUserId"calendar")))
                return 
'inactive_feature';

            
// Get iblock id for users calendar from module-settings
            
$iblockId COption::GetOptionInt("intranet"'iblock_calendar');
            
// Get section id
            
$sectionId CEventCalendar::GetSectionIDByOwnerId($curUserId"USER"$iblockId);
            
// Expand filter
            
$arFilterEx = array("CREATED_BY" => $curUserId"SECTION_ID" => $sectionId"INCLUDE_SUBSECTIONS" => "Y");
        }
        else
        {
            if (
intVal($arParams['iblockSectionId']) > 0)
                
$arFilterEx = array("SECTION_ID" => $arParams['iblockSectionId'], "INCLUDE_SUBSECTIONS" => "Y");
            
$iblockId $arParams['iblockId'];
        }

        
// Check access
        
$maxPerm CIBlock::GetPermission($iblockId);
        
$bAccess $maxPerm >= 'R';
        if (
CIBlock::GetPermission($iblockId) < 'R')
            return 
'access_denied';

        
$arSelect = array(
            
"ID",
            
"IBLOCK_ID",
            
"IBLOCK_SECTION_ID",
            
"NAME",
            
"ACTIVE_FROM",
            
"ACTIVE_TO",
            
"DETAIL_TEXT",
            
"DETAIL_TEXT_TYPE",
            
"CREATED_BY",
            
"PROPERTY_*",
        );

        
$arFilter = array (
            
"IBLOCK_ID" => $iblockId,
            
"ACTIVE" => "Y",
            
"CHECK_PERMISSIONS" => 'N',
            
">=DATE_ACTIVE_TO" => $arParams['fromLimit'],
            
"<=DATE_ACTIVE_FROM" => $arParams['toLimit'],
        );

        if (
count($arFilterEx) > 0)
            
$arFilter array_merge($arFilter$arFilterEx);

        
$bCache true;
        
$arResult false;
        if (
$bCache)
        {
            
$cache = new CPHPCache;
            
$cachePath 'event_calendar/events/'.$iblockId.'/';
            
$cacheId 'ne_'.serialize($arFilter);
            if((
$tzOffset CTimeZone::GetOffset()) <> 0)
                
$cacheId .= "_".$tzOffset;
            
$cacheTime 36000000;

            if (
$cache->InitCache($cacheTime$cacheId$cachePath))
            {
                
$res $cache->GetVars();
                
$arResult $res['events'];
            }
        }

        if (!
$bCache || $arResult === false)
        {
            
$arSort = Array('ACTIVE_FROM' => 'ASC');
            
$rsElement = 0140059d5466b6fb345a6c3384f91f0aCIBlockElement::GetList($arSort$arFilterfalsefalse$arSelect);
            
$arResult = array();

            while(
$obElement $rsElement->GetNextElement())
            {
                
$arItem $obElement->GetFields();
                
$props $obElement->GetProperties();
                
$arItem["ACCESSIBILITY"] = (isset($props['ACCESSIBILITY']['VALUE'])) ? $props['ACCESSIBILITY']['VALUE'] : 'busy';
                
$arItem["IMPORTANCE"] = (isset($props['IMPORTANCE']['VALUE'])) ? $props['IMPORTANCE']['VALUE'] : '';
                
$arItem["PRIVATE"] = (isset($props['PRIVATE']['VALUE'])) ? $props['PRIVATE']['VALUE'] : '';

                if (isset(
$props['PARENT']) && $props['PARENT']['VALUE'] > 0)
                {
                    
$status strtoupper(isset($props['CONFIRMED']) ? $props['CONFIRMED']['VALUE_XML_ID'] : 'Q');
                    if (
$status != 'Y' && $status != 'N')
                        
$status 'Q';
                    
$arItem['STATUS'] = $status;
                }

                
$arItem["DISPLAY_ACTIVE_FROM"] = CIBlockFormatProperties::DateFormat(getDateFormat(true), MakeTimeStamp($arItem["ACTIVE_FROM"]));
                
$arItem["DISPLAY_ACTIVE_TO"] = CIBlockFormatProperties::DateFormat(getDateFormat(true), MakeTimeStamp($arItem["ACTIVE_TO"]));
                
$perType = (isset($props['PERIOD_TYPE']['VALUE']) && $props['PERIOD_TYPE']['VALUE'] != 'NONE') ? strtoupper($props['PERIOD_TYPE']['VALUE']) : false;

                if (
$perType)
                {
                    
$count = (isset($props['PERIOD_COUNT']['VALUE'])) ? intval($props['PERIOD_COUNT']['VALUE']) : '';
                    
$length = (isset($props['EVENT_LENGTH']['VALUE'])) ? intval($props['EVENT_LENGTH']['VALUE']) : '';
                    
$additional = (isset($props['PERIOD_ADDITIONAL']['VALUE'])) ? $props['PERIOD_ADDITIONAL']['VALUE'] : '';

                    
CEventCalendar::DisplayPeriodicEvent($arResult, array(
                        
'arItem' => $arItem,
                        
'perType' => $perType,
                        
'count' => $count,
                        
'length' => $length,
                        
'additional' => $additional,
                        
'fromLimit' => $arParams['fromLimit'],
                        
'toLimit' => $arParams['toLimit'],
                    ));
                }
                else
                {
                    
CEventCalendar::HandleElement($arResult$arItem);
                }
            }

            if (
$bCache)
            {
                
$cache->StartDataCache($cacheTime$cacheId$cachePath);
                
$cache->EndDataCache(array("events" => $arResult));
            }
        }

        return 
$arResult;
    }

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

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

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

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

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

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

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

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