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