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

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

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

//    CEventCalendar::DisplayPeriodicEvent()
//    /bitrix/modules/intranet/classes/general/event_calendar.php:1524

    function DisplayPeriodicEvent(&$res, $arParams)
    {
        $length = intVal($arParams['length']);// length in seconds
        $count = $arParams['count'];
        $f_limit_ts = MakeTimeStamp($arParams['fromLimit'], getTSFormat());
        $t_limit_ts = MakeTimeStamp($arParams['toLimit'], getTSFormat());
        $f_real_ts = MakeTimeStamp($arParams['arItem']['DISPLAY_ACTIVE_FROM'], getTSFormat());
        $t_real_ts = MakeTimeStamp($arParams['arItem']['DISPLAY_ACTIVE_TO'], getTSFormat());
        if ($count <= 0)
            $count = 1;

        if ($f_limit_ts < $f_real_ts)
            $f_limit_ts = $f_real_ts;
        if ($t_limit_ts > $t_real_ts)
            $t_limit_ts = $t_real_ts;

        $from_ts = $f_real_ts;
        $to_ts = $f_real_ts;

        $arDays = array();
        if ($arParams['perType'] == 'WEEKLY')
        {
            $arDays_ = explode(',', $arParams['additional']);
            $arDaysCount = count($arDays_);
            for ($i = 0; $i < count($arDays_); $i++)
                if ($arDays_[$i] != "")
                    $arDays[$arDays_[$i]] = true;
            $arParams['arDays'] = $arDays;
        }

        while($to_ts < $t_limit_ts)
        {
            $f_time_h = date("H", $from_ts);
            $f_time_m = date("i", $from_ts);
            $f_time_s = date("s", $from_ts);
            $f_d = date("d", $from_ts);
            $f_m = date("m", $from_ts);
            $f_y = date("Y", $from_ts);

            if ($arParams['perType'] == 'WEEKLY')
            {
                $f_day = convertDayInd(date("w", $from_ts));
                if ($arDays[$f_day] || count($arDays) == 0)
                {
                    $to_ts = mktime($f_time_h, $f_time_m, $f_time_s + $length, $f_m, $f_d, $f_y);
                    if ($from_ts <= $t_limit_ts && $to_ts >= $f_limit_ts)
                        CEventCalendar::HandlePeriodicElement($res, array_merge($arParams, array('dateFrom' => date(getDateFormat(), $from_ts), 'dateTo' => date(getDateFormat(), $to_ts))));
                    elseif($from_ts > $f_limit_ts)
                        break;
                }

                if ($f_day == 6)
                    $delta = ($count - 1) * 7 + 1;
                else
                    $delta = 1;
                $from_ts = mktime($f_time_h, $f_time_m, $f_time_s, $f_m, $f_d + $delta, $f_y);
            }
            else // DAILY, MONTHLY, YEARLY
            {
                $to_ts = mktime($f_time_h, $f_time_m, $f_time_s + $length, $f_m, $f_d, $f_y);
                if ($from_ts <= $t_limit_ts && $to_ts >= $f_limit_ts)
                    CEventCalendar::HandlePeriodicElement($res, array_merge($arParams, array('dateFrom' => date(getDateFormat(), $from_ts), 'dateTo' => date(getDateFormat(), $to_ts))));
                elseif($from_ts > $f_limit_ts)
                    break;

                switch ($arParams['perType'])
                {
                    case 'DAILY':
                        $from_ts = mktime($f_time_h, $f_time_m, $f_time_s, $f_m, $f_d + $count, $f_y);
                        break;
                    case 'MONTHLY':
                        $from_ts = mktime($f_time_h, $f_time_m, $f_time_s, $f_m + $count, $f_d, $f_y);
                        break;
                    case 'YEARLY':
                        $from_ts = mktime($f_time_h, $f_time_m, $f_time_s, $f_m, $f_d, $f_y + $count);
                        break;
                }
            }
        }
    }

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

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

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

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

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

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

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

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