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;
}
}
Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи
Часто в процессе разработки требуется получить путь до корневой директории проекта. В статье описывается как этом можно сделать легко и удобно.
Вкладки в карточках элементов CRM очень удобное решение. В этой статье разберем как добавить свою вкладку в карточку элемента CRM с помощью создания обработчика на событие.
В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.
Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.
Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции, рассмотрим пример кода.
Из этой статьи вы узнаете, какие классы и методы в bitrix помогут получить данные запроса без использования глобальных переменных. Это важный навык, который обязательно пригодится в вашей работе.
Комментарии
Гость [05.07.2023]
Круто, пригодилось