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

GeneratorContext::generateInitialData: метод Битрикс

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

//    Bitrix\Conversion\GeneratorContext::generateInitialData()
//    /bitrix/modules/conversion/lib/generatorcontext.php:51

    static public function generateInitialData(Date $from)
    {
        if ( ($to = Option::get('conversion', 'START_DATE_TIME', 'undefined')) != 'undefined'
            && DateTime::isCorrect($to, 'Y-m-d H:i:s')
            && ($to = new DateTime($to, 'Y-m-d H:i:s'))
            && $to->format('Y-m-d H:i:s') > $from->format('Y-m-d H:i:s')
            && Option::get('conversion', 'GENERATE_INITIAL_DATA', 'undefined') == 'undefined')
        {
            Option::set('conversion', 'GENERATE_INITIAL_DATA', 'generated');

            $context = new self;

            // generate data

            $data = array();

            foreach (EventManager::getInstance()->findEventHandlers('conversion', 'OnGenerateInitialData') as $handler)
            {
                $result = ExecuteModuleEventEx($handler, array($from, $to)); // TODO validate

                foreach ($result as $row)
                {
                    $context->id = null;
                    $context->attributes = array();
                    $context->setAttributes($row['ATTRIBUTES']);
                    $context->save();

                    if ($dayCounters =& $data[$context->id])
                    {
                        self::appendDayCounters($dayCounters, $row['DAY_COUNTERS']);
                    }
                    else
                    {
                        $dayCounters = $row['DAY_COUNTERS'];
                    }
                }
            }

            unset($dayCounters);

            // save data to database

            $numerators = CounterManager::getTypes(array('GROUP' => 'day'));
            unset($numerators['conversion_visit_day']);

            foreach ($data as $id => $dayCounters)
            {
                $context->id = $id;

                foreach ($dayCounters as $day => $counters)
                {
                    $day = new Date($day, 'Y-m-d');

                    $visitSum = 0;
                    $visitQuantity = 0;

                    unset($counters['conversion_visit_day']);

                    foreach ($counters as $name => $value)
                    {
                        $context->addCounter($day, $name, $value);

                        if ($numerators[$name])
                        {
                            $visitSum += $value;
                            $visitQuantity += 1;
                        }
                    }

                    $context->addCounter($day, 'conversion_visit_day', $visitQuantity ? round($visitSum / $visitQuantity * 100) + 1 : 1);
                }
            }
        }
    }

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

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

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

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

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

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

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

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