Highloadblock Helper

<?php

/*
 * Load highload-block
 * */
CModule::IncludeModule('highloadblock');

use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
use Bitrix\Sale\Helpers\Admin;

class HighloadblockHelper
{
    /*
     * Search in highload-block need row
     * */
    public static function searchHighloadBlockItem($id, $arFilter = array(), $limit = false, $arOrder = array())
    {
        $hlblock = HL\HighloadBlockTable::getById($id)->fetch();
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        $entity_data_class = $entity->getDataClass();
        $entity_table_name = $hlblock['TABLE_NAME'];
        $sTableID = 'tbl_' . $entity_table_name;
        $rsData = $entity_data_class::getList(array(
                    "select" => array('*'),
                    "filter" => $arFilter,
                    "order" => $arOrder,
                    "limit" => $limit,
        ));
        $rsData = new CDBResult($rsData, $sTableID);
        if (!empty($rsData)) {
            while ($row = $rsData->Fetch()) {
                $arRes[] = $row;
            }
            if (!empty($arRes)) {
                return $arRes;
            }
        }
        return false;
    }

    public function getCountHighloadBlockItem($id, $arFilter = array())
    {
        $hlblock = HL\HighloadBlockTable::getById($id)->fetch();
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        $entity_data_class = $entity->getDataClass();
        $entity_table_name = $hlblock['TABLE_NAME'];
        $sTableID = 'tbl_' . $entity_table_name;
        $rsData = $entity_data_class::getList(array(
                    "select" => array("CNT"),
                    "filter" => $arFilter,
                    "runtime" => array(
                        new Entity\ExpressionField('CNT', 'COUNT(*)')
                    )
        ));
        $rsData = new CDBResult($rsData, $sTableID);
        if (!empty($rsData)) {
            while ($row = $rsData->Fetch()) {
                $arRes[] = $row;
            }
            if (!empty($arRes)) {
                return $arRes;
            }
        }
        return false;
    }

    /**
     * @param $id
     * @param array $arFilter
     * @return array|bool
     */
    public static function getHighloadBlockItemRandom($id, $arFilter = array())
    {
        /**
         * @var $entity_data_class ReadyCodesTable
         */
        $hlblock = HL\HighloadBlockTable::getById($id)->fetch();
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        $entity_data_class = $entity->getDataClass();


        $entity_table_name = $hlblock['TABLE_NAME'];
        $sTableID = 'tbl_' . $entity_table_name;
        $q = new Entity\Query($entity);
        $q->setSelect(array('*'));
        $q->setFilter($arFilter);
        $q->setLimit(1);
        $q->registerRuntimeField(
                'RAND', array('data_type' => 'float', 'expression' => array('RAND()'))
        );
        $q->addOrder("RAND", "ASC");
        $result = $q->exec();
        if (!empty($result)) {
            while ($row = $result->Fetch()) {
                $arRes[] = $row;
            }
            if (!empty($arRes)) {
                return $arRes;
            }
        }
        return false;
    }

    /*
     * Update need highload block element
     * */

    public static function updateHighloadBlockItem($idBlock, $idElement, $data)
    {
        $hlblock = HL\HighloadBlockTable::getById($idBlock)->fetch();
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        $entity_data_class = $entity->getDataClass();
        $result = $entity_data_class::update($idElement, $data);
        return $result;
    }

    /*
     * Create new highloa block element
     * */

    public static function createHighloadBlockItem($idBlock, $data)
    {
        $hlblock = HL\HighloadBlockTable::getById($idBlock)->fetch();
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        $entity_data_class = $entity->getDataClass();
        $result = $entity_data_class::add($data);
        return $result;
    }

    /*
     * Delete highload block element
     * */

    public static function deleteHighloadBlockItem($idBlock, $idElement)
    {
        $hlblock = HL\HighloadBlockTable::getById($idBlock)->fetch();
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        $entity_data_class = $entity->getDataClass();
        $result = $entity_data_class::Delete($idElement);
        return $result;
    }

}

Рубрики: Bitrix

Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи

Как добавить свою вкладку в карточку элемента СРМ?

Вкладки в карточках элементов CRM очень удобное решение. В этой статье разберем как добавить свою вкладку в карточку элемента CRM с помощью создания обработчика на событие.

Bitrix получить путь к корню сайта

Часто в процессе разработки требуется получить путь до корневой директории проекта. В статье описывается как этом можно сделать легко и удобно.

Подключить bitrix без подключения шаблона сайта

В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.

Bitrix сбросить буфер вывода

Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции, рассмотрим пример кода.

Bitrix: как подключить js или css файл?

Чтобы подключить JavaScript и CSS файлы в bitrix сущствуют специальные методы addJs и addCss у класса \Bitrix\Main\Page\Asset. Давайте рассмотрим примеры их использования более подробно.

Bitrix подключить модуль

Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.

Комментарии

Гость [05.07.2023]
Круто, пригодилось
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК