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

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

Bitrix подключить класс компонента

В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств

Bitrix выполнить произвольный sql запрос

В статье приведен пример как выполнить произвольный sql запрос используя стандартные средства Bitrix

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

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

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

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

CSS простой горизонтальный слайдер

В статье приводится пример кода для создания простого горизонтального слайдера с использованием CSS и небольшим количеством JS кода. Для реализации потребуется всего около 60 строк стилей и js кода.

Bitrix 24 получить ссылку на контакт, сделку, компанию, лид и т.д.

В статье приводится пример кода для получения ссылки на контакт, сделку, компанию, лид и т.д. с помощью метода \CCrmOwnerType::GetEntityShowPath()

Комментарии

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