protected function setNavStartParams() { if ($this->arParams['PAGER_SAVE_SESSION'] !== 'Y') { \CPageOption::SetOptionString('main', 'nav_page_in_session', 'N'); } $this->arParams['PAGER_DESC_NUMBERING'] = $this->arParams['PAGER_DESC_NUMBERING'] === 'Y'; if ($this->arParams['DISPLAY_BOTTOM_PAGER'] === 'Y' || $this->arParams['DISPLAY_TOP_PAGER'] === 'Y') { $this->navStartParams = ['nPageSize' => $this->arParams['ELEMENTS_COUNT'], 'bDescPageNumbering' => $this->arParams['PAGER_DESC_NUMBERING'], 'bShowAll' => $this->arParams['PAGER_SHOW_ALL']]; $this->addCacheAdditionalId(\CDBResult::GetNavParams($this->navStartParams)); } elseif ($this->arParams['ELEMENTS_COUNT'] > 0) { $this->navStartParams = ['nTopCount' => $this->arParams['ELEMENTS_COUNT'], 'bDescPageNumbering' => $this->arParams['PAGER_DESC_NUMBERING']]; } else { $this->navStartParams = false; } }
/** * Если не знаешь что за метод, дальше не смотри */ public function executeComponent() { if (false === $this->Initialize()) { return false; } $arNavigation = CDBResult::GetNavParams($arNavParams); global $USER; $cache = $this->navParams . $arNavigation . bitrix_sessid_get() . $USER->GetID(); if ($this->startResultCache(0, $cache)) { $this->arResult["items"] = $this->GetItems($arNavParams); $this->includeComponentTemplate(); } }
/** * Если не знаешь что за метод, дальше не смотри */ public function executeComponent() { if (false === $this->Initialize()) { return false; } $arNavigation = CDBResult::GetNavParams($arNavParams); global $USER; $cache = $this->navParams . $arNavigation . bitrix_sessid_get() . $USER->GetID(); if ($this->startResultCache(0, $cache)) { $this->arResult['filter']['makes'] = $this->makes(); $this->arResult['filter']['models'] = $this->models(); $this->arResult["items"] = array_chunk($this->GetItems($arNavParams), self::ITEM_IN_LINE); $this->includeComponentTemplate(); } }
$arParams["PICTURES_SIGHT"] = in_array($arParams["PICTURES_SIGHT"], array_keys($arParams["PICTURES"])) ? $arParams["PICTURES_SIGHT"] : "standart"; } if ($arParams["THUMBNAIL_SIZE"] > 0) { $arParams["PICTURES"]["standart"] = array("size" => $arParams["THUMBNAIL_SIZE"]); } //PROPERTIES if (!in_array(strToUpper($arParams["PICTURES_SIGHT"]), array("DETAIL", "PREVIEW", "STANDART"))) { $arParams["PROPERTY_CODE"][] = "PROPERTY_" . strToUpper($arParams["PICTURES_SIGHT"]) . "_PICTURE"; } //PAGENAVIGATION $arNavParams = false; $arNavigation = false; if ($arParams["PAGE_ELEMENTS"] > 0) { CPageOption::SetOptionString("main", "nav_page_in_session", "N"); $arNavParams = array("nPageSize" => $arParams["PAGE_ELEMENTS"], "bDescPageNumbering" => false, "bShowAll" => false); $arNavigation = CDBResult::GetNavParams($arNavParams); } // ACCESS $arResult["USER_HAVE_ACCESS"] = "Y"; if ($arParams["PERMISSION"] < "U" && $arParams["USE_PERMISSIONS"] == "Y") { $res = array_intersect($GLOBALS["USER"]->GetUserGroupArray(), $arParams["GROUP_PERMISSIONS"]); $arResult["USER_HAVE_ACCESS"] = empty($res) ? "N" : "Y"; } if ($arParams["DRAG_SORT"] !== "N") { $arParams["DRAG_SORT"] = !$arParams["ELEMENT_SORT_FIELD"] || $arParams["ELEMENT_SORT_FIELD"] == "SORT" || $arParams["ELEMENT_SORT_FIELD"] == "ID" ? "Y" : "N"; if ($arParams["DRAG_SORT"] == "Y" && empty($arParams["ELEMENT_SORT_FIELD1"])) { $arParams["ELEMENT_SORT_FIELD"] = "SORT"; $arParams["ELEMENT_SORT_ORDER"] = "ASC"; $arParams["ELEMENT_SORT_FIELD1"] = "ID"; $arParams["ELEMENT_SORT_ORDER1"] = "ASC"; }
} $propertyOrder = array(); if ($by == 'PROPERTY_TYPE') { $propertyOrder = array('PROPERTY_TYPE' => $order, 'USER_TYPE' => $order); } else { $propertyOrder = array(strtoupper($by) => strtoupper($order)); } if (!isset($propertyOrder['ID'])) { $propertyOrder['ID'] = 'ASC'; } $usePageNavigation = true; $navyParams = array(); if (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'excel') { $usePageNavigation = false; } else { $navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize($sTableID)); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } } if ($selectFields['PROPERTY_TYPE']) { $selectFields['USER_TYPE'] = true; } $selectFields = array_keys($selectFields); $getListParams = array('select' => $selectFields, 'filter' => $arFilter, 'order' => $propertyOrder); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1);
/** * <p>Возвращает уникальную строку идентифицирующую текущее состояние постраничной навигации (номер текущей страницы, нажата ли ссылка "Все"). Результат данного метода применяется как правило для составления идентификатора кэша, который в свою очередь используется в методах классов <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cpagecache/index.php">CPageCache</a> и <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cphpcache/index.php">CPHPCache</a>. Динамичный метод.</p> * * * @param int $page_size = 10 Размер страницы постраничной навигации (от 1 и более). * Необязательный. По умолчанию 10. * * @param bool $show_all = true Разрешить ли показывать все записи (и выводить ссылку "Все" в * навигации).<br>Необязательный. По умолчанию - "true". * * @param int $NumPage = false Принудительно ли открывать страницу с этим номером (в * независимости от параметров в URL).<br>Необязательный. По умолчанию - * "false" (открывать страницу в зависимости от параметров в URL). * * @return string * * <h4>Example</h4> * <pre> * <? * // создаем объект * $obCache = new CPageCache; * * // время кэширования - 30 минут * $life_time = 30*60; * * // получим строку идентифицирующую состояние постраничной навигации * $nav = <b>CDBResult::NavStringForCache</b>($PAGE_ELEMENT_COUNT); * * // формируем идентификатор кэша в зависимости от всех параметров * // которые могут повлиять на результирующий HTML * $cache_id = $nav.$ELEMENT_ID.$IBLOCK_TYPE.$USER->GetUserGroupString(); * * // инициализируем буферизирование вывода * if($obCache->StartDataCache($life_time, $cache_id, "/")): * * // получаем список элементов * if ($rsElements = GetIBlockElementList($IBLOCK_ID, $SECTION_ID)): * * // инициализируем постраничную навигацию * $rsElements->NavStart($PAGE_ELEMENT_COUNT); * * // выведем постраничную навигацию * echo $rsElements->NavPrint($ELEMENT_NAME); * * // пройдемся по элементам * while ($obElement = $rsElements->GetNextElement()): * * $arElement = $obElement->GetFields(); * $arProperty = $obElement->GetProperties(); * * echo "<pre>"; print_r($arElement); echo "</pre>"; * echo "<pre>"; print_r($arProperty); echo "</pre>"; * * endwhile; * endif; * * // записываем буферизированный результат на диск в файл кэша * $obCache->EndDataCache(); * endif; * ?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cpagecache/index.php">Класс CPageCache</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cphpcache/index.php">Класс CPHPCache</a> </li> * </ul><a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/navstringforcache.php * @author Bitrix */ public static function NavStringForCache($nPageSize = 0, $bShowAll = true, $iNumPage = false) { $NavParams = CDBResult::GetNavParams($nPageSize, $bShowAll, $iNumPage); return "|" . ($NavParams["SHOW_ALL"] ? "" : $NavParams["PAGEN"]) . "|" . $NavParams["SHOW_ALL"] . "|"; }
$selectFieldsMap = array_fill_keys(array_keys($headerList), false); $selectFieldsMap = array_merge($selectFieldsMap, $selectFields); $userList = array(); $userIDs = array(); $nameFormat = CSite::GetNameFormat(true); $rowList = array(); $couponTypeList = array(); if ($selectFieldsMap['TYPE']) { $couponTypeList = Internals\DiscountCouponTable::getCouponTypes(true); } $usePageNavigation = true; $navyParams = array(); if (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'excel') { $usePageNavigation = false; } else { $navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize($adminListTableID, array('nPageSize' => 20, 'sNavID' => $adminList->GetListUrl(true)))); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } } if ($selectFields['TYPE']) { $selectFields['USE_COUNT'] = true; } $selectFields = array_keys($selectFields); $getListParams = array('select' => $selectFields, 'filter' => $filter, 'order' => array($by => $order)); if ($usePageNavigation) { $countQuery = new Main\Entity\Query(Internals\DiscountCouponTable::getEntity()); $countQuery->addSelect(new Main\Entity\ExpressionField('CNT', 'COUNT(1)'));
case "delete": $entity_data_class::delete($ID); break; } } } $arr = array('delete' => true); $lAdmin->AddGroupActionTable($arr); // select data /** @var string $order */ $order = strtoupper($order); $usePageNavigation = true; if (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'excel') { $usePageNavigation = false; } else { $navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize($sTableID, array('nPageSize' => 20, 'sNavID' => $APPLICATION->GetCurPage() . '?ENTITY_ID=' . $ENTITY_ID))); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } } $getListParams = array('select' => $lAdmin->GetVisibleHeaderColumns(), 'filter' => $filterValues, 'order' => array($by => $order)); unset($filterValues); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } if ($usePageNavigation) { $countQuery = new Query($entity_data_class::getEntity());
// for grc filter $grcDataPrimaryValues['=' . $def][] = $row[$alias]; // for concat $grc_primary_string .= (string) $row[$alias] . '/'; } // save original data indexes for grc values if (!isset($grcDataPrimaryPointers[$grc_primary_string])) { $grcDataPrimaryPointers[$grc_primary_string] = array(); } $grcDataPrimaryPointers[$grc_primary_string][] = count($data) - 1; } $grcDataPrimaryValues = array_map('array_unique', $grcDataPrimaryValues); // </editor-fold> if (empty($settings['limit'])) { $arResult["NAV_STRING"] = $result->GetPageNavString('', is_set($arParams['NAV_TEMPLATE']) ? $arParams['NAV_TEMPLATE'] : 'arrows'); $arResult["NAV_PARAMS"] = $result->GetNavParams(); $arResult["NAV_NUM"] = $result->NavNum; } // <editor-fold defaultstate="collapsed" desc="retrieve total counts"> $totalSelect = $select; $totalColumns = array(); foreach ($viewColumns as $num => $view) { // total's fields are the same as percentable fields // they are also all numerics if (CReport::isColumnTotalCountable($view, $arParams['REPORT_HELPER_CLASS'])) { // exclude from select all except those $totalColumns[$view['resultName']] = true; } } // save only totalCountable visible fields foreach ($totalSelect as $k => $v) {
if ($result->isSuccess()) { Application::getConnection()->commitTransaction(); } else { $lAdmin->AddGroupError(implode('\\n', $result->getErrorMessages())); } } break; } } } $headers = array(array("id" => "DATE_PAID", "content" => GetMessage("SALE_ORDER_DATE_PAID"), "sort" => "DATE_PAID", "default" => true), array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "ORDER_ID", "content" => GetMessage("SALE_ORDER_ID"), "sort" => "ORDER_ID", "default" => true), array("id" => "ACCOUNT_NUMBER", "content" => GetMessage("SALE_ACCOUNT_NUMBER"), "sort" => "ORDER.ACCOUNT_NUMBER", "default" => false), array("id" => "ORDER_USER_NAME", "content" => GetMessage("SALE_ORDER_USER_NAME"), "sort" => "ORDER_USER_NAME", "default" => true), array("id" => "PAID", "content" => GetMessage("SALE_ORDER_PAID"), "sort" => "PAID", "default" => true), array("id" => "PAY_SYSTEM_NAME", "content" => GetMessage("SALE_ORDER_PAY_SYSTEM_NAME"), "sort" => "PAY_SYSTEM_NAME", "default" => true), array("id" => "SUM", "content" => GetMessage("SALE_ORDER_SUM"), "sort" => "SUM", "default" => true), array("id" => "COMPANY_BY", "content" => GetMessage("SALE_ORDER_COMPANY_BY"), "sort" => "COMPANY_BY.NAME", "default" => true), array("id" => "PAY_VOUCHER_NUM", "content" => GetMessage("SALE_ORDER_PAY_VOUCHER_NUM"), "sort" => "PAY_VOUCHER_NUM", "default" => true), array("id" => "RESPONSIBLE_BY", "content" => GetMessage("SALE_ORDER_RESPONSIBLE_BY"), "sort" => "", "default" => true), array("id" => "PS_STATUS", "content" => GetMessage("SALE_ORDER_PS_STATUS"), "sort" => "PS_STATUS", "default" => false), array("id" => "PS_STATUS_CODE", "content" => GetMessage("SALE_ORDER_PS_STATUS_CODE"), "sort" => "PS_STATUS_CODE", "default" => false), array("id" => "PS_STATUS_DESCRIPTION", "content" => GetMessage("SALE_ORDER_PS_STATUS_DESCRIPTION"), "sort" => "PS_STATUS_DESCRIPTION", "default" => false), array("id" => "PS_STATUS_MESSAGE", "content" => GetMessage("SALE_ORDER_PS_STATUS_MESSAGE"), "sort" => "PS_STATUS_MESSAGE", "default" => false), array("id" => "PS_SUM", "content" => GetMessage("SALE_ORDER_PS_SUM"), "sort" => "PS_SUM", "default" => false), array("id" => "PS_CURRENCY", "content" => GetMessage("SALE_ORDER_PS_CURRENCY"), "sort" => "PS_CURRENCY", "default" => false), array("id" => "PS_RESPONSE_DATE", "content" => GetMessage("SALE_ORDER_PS_RESPONSE_DATE"), "sort" => "PS_RESPONSE_DATE", "default" => false), array("id" => "PAY_VOUCHER_DATE", "content" => GetMessage("SALE_ORDER_PAY_VOUCHER_DATE"), "sort" => "PAY_VOUCHER_DATE", "default" => false), array("id" => "DATE_PAY_BEFORE", "content" => GetMessage("SALE_ORDER_DATE_PAY_BEFORE"), "sort" => "DATE_PAY_BEFORE", "default" => false), array("id" => "DATE_BILL", "content" => GetMessage("SALE_ORDER_DATE_BILL"), "sort" => "DATE_BILL", "default" => false), array("id" => "PAY_SYSTEM_NAME", "content" => GetMessage("SALE_ORDER_PAY_SYSTEM_NAME"), "sort" => "PAY_SYSTEM_NAME", "default" => false)); $select = array('*', 'COMPANY_BY_NAME' => 'COMPANY_BY.NAME', 'RESPONSIBLE_BY_NAME' => 'RESPONSIBLE_BY.NAME', 'RESPONSIBLE_BY_LAST_NAME' => 'RESPONSIBLE_BY.LAST_NAME', 'ORDER_ACCOUNT_NUMBER' => 'ORDER.ACCOUNT_NUMBER', 'ORDER_USER_NAME' => 'ORDER.USER.NAME', 'ORDER_USER_LAST_NAME' => 'ORDER.USER.LAST_NAME', 'ORDER_USER_ID' => 'ORDER.USER_ID'); $params = array('select' => $select, 'filter' => $arFilter, 'order' => array($by => $order)); $usePageNavigation = true; $navyParams = array(); $navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize($tableId)); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } if ($usePageNavigation) { $params['limit'] = $navyParams['SIZEN']; $params['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } $totalPages = 0; if ($usePageNavigation) { $countQuery = new \Bitrix\Main\Entity\Query(PaymentTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($params['filter']);
/** * Perform reading main data from database, no cache is used * @return void */ protected function obtainDataOrders() { $select = array('ID', 'LID', 'PERSON_TYPE_ID', 'PAYED', 'DATE_PAYED', 'EMP_PAYED_ID', 'CANCELED', 'DATE_CANCELED', 'EMP_CANCELED_ID', 'REASON_CANCELED', 'MARKED', 'DATE_MARKED', 'EMP_MARKED_ID', 'REASON_MARKED', 'STATUS_ID', 'DATE_STATUS', 'PAY_VOUCHER_NUM', 'PAY_VOUCHER_DATE', 'EMP_STATUS_ID', 'PRICE_DELIVERY', 'ALLOW_DELIVERY', 'DATE_ALLOW_DELIVERY', 'EMP_ALLOW_DELIVERY_ID', 'DEDUCTED', 'DATE_DEDUCTED', 'EMP_DEDUCTED_ID', 'REASON_UNDO_DEDUCTED', 'RESERVED', 'PRICE', 'CURRENCY', 'DISCOUNT_VALUE', 'SUM_PAID', 'USER_ID', 'PAY_SYSTEM_ID', 'DELIVERY_ID', 'DATE_INSERT', 'DATE_UPDATE', 'USER_DESCRIPTION', 'ADDITIONAL_INFO', 'COMMENTS', 'TAX_VALUE', 'STAT_GID', 'RECURRING_ID', 'RECOUNT_FLAG', 'DELIVERY_DOC_NUM', 'DELIVERY_DOC_DATE', 'STORE_ID', 'ORDER_TOPIC', 'RESPONSIBLE_ID', 'DATE_PAY_BEFORE', 'DATE_BILL', 'ACCOUNT_NUMBER', 'TRACKING_NUMBER', 'XML_ID'); $usePageNavigation = true; $navyParams = array(); $navyParams = \CDBResult::GetNavParams(); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } if (isset($this->arParams["ORDERS_PER_PAGE"]) && intval($this->arParams["ORDERS_PER_PAGE"]) > 0) { $navyParams['SIZEN'] = $this->arParams["ORDERS_PER_PAGE"]; } if (isset($_REQUEST['show_all']) && $_REQUEST['show_all'] == "Y") { $usePageNavigation = false; } $getListParams = array('order' => array($this->sortBy => $this->sortOrder), 'filter' => $this->filter, 'select' => $select); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } $totalPages = 0; if ($usePageNavigation) { $countQuery = new \Bitrix\Main\Entity\Query(\Bitrix\Sale\Internals\OrderTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($getListParams['filter']); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); unset($countQuery); $totalCount = (int) $totalCount['CNT']; if ($totalCount > 0) { $totalPages = ceil($totalCount / $navyParams['SIZEN']); if ($navyParams['PAGEN'] > $totalPages) { $navyParams['PAGEN'] = $totalPages; } $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } else { $navyParams['PAGEN'] = 1; $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = 0; } } $this->dbQueryResult['ORDERS'] = new \CDBResult(\Bitrix\Sale\Internals\OrderTable::getList($getListParams)); if ($usePageNavigation) { $this->dbQueryResult['ORDERS']->NavStart($getListParams['limit'], $navyParams['SHOW_ALL'], $navyParams['PAGEN']); $this->dbQueryResult['ORDERS']->NavRecordCount = $totalCount; $this->dbQueryResult['ORDERS']->NavPageCount = $totalPages; $this->dbQueryResult['ORDERS']->NavPageNomer = $navyParams['PAGEN']; } else { $this->dbQueryResult['ORDERS']->NavStart($this->arParams["ORDERS_PER_PAGE"], false); } if (empty($this->dbQueryResult['ORDERS'])) { return; } while ($arOrder = $this->dbQueryResult['ORDERS']->GetNext()) { $arOBasket = array(); $dbBasket = CSaleBasket::GetList(array('NAME' => 'asc'), array("ORDER_ID" => $arOrder["ID"]), false, false, array('*')); while ($arBasket = $dbBasket->Fetch()) { if (CSaleBasketHelper::isSetItem($arBasket)) { continue; } $arOBasket[$arBasket['ID']] = $arBasket; } $arOShipment = array(); $dbShipment = \Bitrix\Sale\Internals\ShipmentTable::getList(array('select' => array('DELIVERY_NAME', 'SYSTEM', 'DELIVERY_ID'), 'filter' => array('ORDER_ID' => $arOrder['ID']))); while ($arShipment = $dbShipment->fetch()) { if ($arShipment['SYSTEM'] == 'Y') { continue; } $arOShipment[] = $arShipment; } $dbPayment = \Bitrix\Sale\Internals\PaymentTable::getList(array('select' => array('PAY_SYSTEM_NAME', 'PAY_SYSTEM_ID'), 'filter' => array('ORDER_ID' => $arOrder['ID']))); $arOPayment = array(); while ($arPayment = $dbPayment->fetch()) { $arOPayment[] = $arPayment; } $this->dbResult['ORDERS'][] = array("ORDER" => $arOrder, "BASKET_ITEMS" => $arOBasket, "SHIPMENT" => $arOShipment, "PAYMENT" => $arOPayment); } }
if (isset($_GET['ID'])) { $actionData['ID'] = $_GET['ID']; unset($_GET['ID'], $_REQUEST['ID']); } $actionData['AJAX_CALL'] = false; if (isset($_GET['AJAX_CALL'])) { $actionData['AJAX_CALL'] = true; // Must be transfered to main.interface.grid //unset($_GET['AJAX_CALL'], $_REQUEST['AJAX_CALL']); } } } } // <-- Try to extract user action data $arNavParams = array('nPageSize' => $arParams['PRODUCT_COUNT']); $arNavigation = CDBResult::GetNavParams($arParams['PRODUCT_COUNT']); $CGridOptions = new CCrmGridOptions($arResult['GRID_ID']); $arNavParams = $CGridOptions->GetNavParams($arNavParams); $arNavParams['bShowAll'] = false; $arFilter = $gridFilter = $CGridOptions->GetFilter($arResult['FILTER']); $arFilter['CATALOG_ID'] = $catalogID; $sectionID = isset($arParams['~SECTION_ID']) ? intval($arParams['~SECTION_ID']) : 0; $bFilterSection = $bTree || !isset($arFilter['GRID_FILTER_APPLIED']) || !$arFilter['GRID_FILTER_APPLIED'] || isset($arFilter['LIST_SECTION_ID']) && $arFilter['LIST_SECTION_ID'] !== ''; if ($bFilterSection) { if (!$bTree && isset($arFilter['GRID_FILTER_APPLIED']) && $arFilter['GRID_FILTER_APPLIED'] && isset($arFilter['LIST_SECTION_ID'])) { $sectionID = intval($arFilter['LIST_SECTION_ID']); } $arFilter['SECTION_ID'] = $sectionID; } // reset section filter HACK if (!is_array($_SESSION['main.interface.grid'])) {
/** * @inheritdoc */ public function onPrepareComponentParams($arParams) { $arParams = parent::onPrepareComponentParams($arParams); $arParams['IBLOCK_CODE'] = htmlspecialchars(trim($arParams['IBLOCK_CODE'])); $arParams['SECTION_CODE'] = htmlspecialchars(trim($arParams['SECTION_CODE'])); $arParams['SECTION_ID'] = intval($arParams['SECTION_ID']); if (strlen($arParams['ELEMENT_SORT_BY1']) <= 0) { $arParams['ELEMENT_SORT_BY1'] = 'SORT'; } if ($arParams['ELEMENT_SORT_ORDER1'] != 'DESC') { $arParams['ELEMENT_SORT_ORDER1'] = 'ASC'; } if (strlen($arParams['ELEMENT_SORT_BY2']) <= 0) { $arParams['ELEMENT_SORT_BY2'] = 'ID'; } if ($arParams['ELEMENT_SORT_ORDER2'] != 'DESC') { $arParams['ELEMENT_SORT_ORDER2'] = 'ASC'; } if (strlen($arParams['ELEMENT_SORT_BY3']) <= 0) { $arParams['ELEMENT_SORT_BY3'] = 'ID'; } if ($arParams['ELEMENT_SORT_ORDER3'] != 'DESC') { $arParams['ELEMENT_SORT_ORDER3'] = 'ASC'; } if (strlen($arParams['SECTION_SORT_BY1']) <= 0) { $arParams['SECTION_SORT_BY1'] = 'SORT'; } if ($arParams['SECTION_SORT_ORDER1'] != 'DESC') { $arParams['SECTION_SORT_ORDER1'] = 'ASC'; } if (strlen($arParams['SECTION_SORT_BY2']) <= 0) { $arParams['SECTION_SORT_BY2'] = 'ID'; } if ($arParams['SECTION_SORT_ORDER2'] != 'DESC') { $arParams['SECTION_SORT_ORDER2'] = 'ASC'; } if ($arParams['PAGE']) { $arParams['PAGE'] = intval($_GET['page']); } if ($arParams['PAGING'] == 'Y') { \CPageOption::SetOptionString('main', 'nav_page_in_session', 'N'); //не сохраняем в сессии параметры пагинации потому что это сбивает с толку пользователей $nav = \CDBResult::GetNavParams(); if ($nav) { $arParams['PAGE'] = intval($nav['PAGEN']); } else { if ($arParams['PAGE']) { $arParams['PAGE'] = intval($_GET['page']); } } } $arParams['PREPROD_SERVER'] = defined('PREPROD_SERVER') && PREPROD_SERVER; if (strlen($arParams['FILTER_NAME']) > 0 && preg_match('/^[A-Za-z_][A-Za-z01-9_]*$/', $arParams['FILTER_NAME'])) { $this->elementsFilter = array_merge($this->elementsFilter, $GLOBALS[$arParams['FILTER_NAME']]); $this->addCacheAdditionalId($GLOBALS[$arParams['FILTER_NAME']]); } //удаляем пустые элементы массива if (!empty($arParams['ELEMENT_PROPERTIES'])) { $arParams['ELEMENT_PROPERTIES'] = array_filter($arParams['ELEMENT_PROPERTIES']); } if (!empty($arParams['ELEMENT_FIELDS'])) { $arParams['ELEMENT_FIELDS'] = array_filter($arParams['ELEMENT_FIELDS']); } return $arParams; }
/** * выполяет действия перед кешированием */ protected function executeProlog() { if ($this->arParams['COUNT'] > 0) { if ($this->arParams['SHOW_NAV'] == 'Y') { \CPageOption::SetOptionString('main', 'nav_page_in_session', 'N'); $this->navParams = array('nPageSize' => $this->arParams['COUNT']); $arNavigation = \CDBResult::GetNavParams($this->navParams); $this->cacheAddon = array($arNavigation); } else { $this->navParams = array('nTopCount' => $this->arParams['COUNT']); } } }
} /** @var array $arParams */ /** @var array $arResult */ /** @global CMain $APPLICATION */ /** @global CUser $USER */ /** @global CDatabase $DB */ /** @var CBitrixComponentTemplate $this */ /** @var string $templateName */ /** @var string $templateFile */ /** @var string $templateFolder */ /** @var string $componentPath */ /** @var CBitrixComponent $component */ $this->setFrameMode(true); if ($arParams['USE_FILTER'] == 'Y') { $this->SetViewTarget('pre_page-head__title'); $APPLICATION->IncludeComponent("bitrix:catalog.smart.filter", "tags", array("SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"], "IBLOCK_TYPE" => $arParams['IBLOCK_TYPE'], "IBLOCK_ID" => $arParams['IBLOCK_ID'], "FILTER_NAME" => $arParams['FILTER_NAME'], "SEF_MODE" => "N", "CACHE_TYPE" => $arParams['CACHE_TYPE'], "CACHE_TIME" => $arParams['CACHE_TIME'], "CACHE_GROUPS" => $arParams['CACHE_GROUPS'], "SAVE_IN_SESSION" => "N", "INSTANT_RELOAD" => "N", "SECTION_TITLE" => "", "SECTION_DESCRIPTION" => ""), $component); $this->EndViewTarget('pre_page-head__title'); } ?> <div class="row t-1 m_b10"> <div class="cell s-6"><?php $arNavigation = CDBResult::GetNavParams(array("nPageSize" => $arParams["NEWS_COUNT"], "bDescPageNumbering" => $arParams["PAGER_DESC_NUMBERING"], "bShowAll" => $arParams["PAGER_SHOW_ALL"])); if ($arNavigation['PAGEN'] < 2) { $GLOBALS['topFilter'] = $GLOBALS[$arParams['FILTER_NAME']]; $GLOBALS['topFilter']['!PROPERTY_TOP'] = false; $topID = $APPLICATION->IncludeComponent("bitrix:news.list", "top-news", array("IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "NEWS_COUNT" => 1, "SORT_BY1" => $arParams["SORT_BY1"], "SORT_ORDER1" => $arParams["SORT_ORDER1"], "SORT_BY2" => $arParams["SORT_BY2"], "SORT_ORDER2" => $arParams["SORT_ORDER2"], "FIELD_CODE" => $arParams["LIST_FIELD_CODE"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "DISPLAY_PANEL" => $arParams["DISPLAY_PANEL"], "SET_TITLE" => 'N', "SET_LAST_MODIFIED" => $arParams["SET_LAST_MODIFIED"], "MESSAGE_404" => 'N', "SET_STATUS_404" => 'N', "SHOW_404" => 'N', "FILE_404" => 'N', "INCLUDE_IBLOCK_INTO_CHAIN" => 'N', "ADD_SECTIONS_CHAIN" => 'N', "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "DISPLAY_TOP_PAGER" => 'N', "DISPLAY_BOTTOM_PAGER" => 'N', "DISPLAY_DATE" => $arParams["DISPLAY_DATE"], "DISPLAY_NAME" => "Y", "DISPLAY_PICTURE" => $arParams["DISPLAY_PICTURE"], "DISPLAY_PREVIEW_TEXT" => $arParams["DISPLAY_PREVIEW_TEXT"], "PREVIEW_TRUNCATE_LEN" => $arParams["PREVIEW_TRUNCATE_LEN"], "ACTIVE_DATE_FORMAT" => $arParams["LIST_ACTIVE_DATE_FORMAT"], "USE_PERMISSIONS" => $arParams["USE_PERMISSIONS"], "GROUP_PERMISSIONS" => $arParams["GROUP_PERMISSIONS"], "FILTER_NAME" => 'topFilter', "HIDE_LINK_WHEN_NO_DETAIL" => $arParams["HIDE_LINK_WHEN_NO_DETAIL"], "CHECK_DATES" => $arParams["CHECK_DATES"], "PARENT_SECTION" => $arResult["VARIABLES"]["SECTION_ID"], "PARENT_SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"], "DETAIL_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["detail"], "SECTION_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["section"], "IBLOCK_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["news"]), $component); if (!empty($topID)) { $GLOBALS[$arParams['FILTER_NAME']]['!ID'] = $topID; } } $APPLICATION->IncludeComponent("bitrix:news.list", "cell_s-6", array("TOP_NEWS" => $topID, "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "NEWS_COUNT" => $arParams["NEWS_COUNT"], "SORT_BY1" => $arParams["SORT_BY1"], "SORT_ORDER1" => $arParams["SORT_ORDER1"], "SORT_BY2" => $arParams["SORT_BY2"], "SORT_ORDER2" => $arParams["SORT_ORDER2"], "FIELD_CODE" => $arParams["LIST_FIELD_CODE"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "DISPLAY_PANEL" => $arParams["DISPLAY_PANEL"], "SET_TITLE" => $arParams["SET_TITLE"], "SET_LAST_MODIFIED" => $arParams["SET_LAST_MODIFIED"], "MESSAGE_404" => $arParams["MESSAGE_404"], "SET_STATUS_404" => $arParams["SET_STATUS_404"], "SHOW_404" => $arParams["SHOW_404"], "FILE_404" => $arParams["FILE_404"], "INCLUDE_IBLOCK_INTO_CHAIN" => $arParams["INCLUDE_IBLOCK_INTO_CHAIN"], "ADD_SECTIONS_CHAIN" => $arParams["ADD_SECTIONS_CHAIN"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"], "DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"], "PAGER_TITLE" => $arParams["PAGER_TITLE"], "PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"], "PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"], "PAGER_DESC_NUMBERING" => $arParams["PAGER_DESC_NUMBERING"], "PAGER_DESC_NUMBERING_CACHE_TIME" => $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"], "PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"], "PAGER_BASE_LINK_ENABLE" => $arParams["PAGER_BASE_LINK_ENABLE"], "PAGER_BASE_LINK" => $arParams["PAGER_BASE_LINK"], "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"], "DISPLAY_DATE" => $arParams["DISPLAY_DATE"], "DISPLAY_NAME" => "Y", "DISPLAY_PICTURE" => $arParams["DISPLAY_PICTURE"], "DISPLAY_PREVIEW_TEXT" => $arParams["DISPLAY_PREVIEW_TEXT"], "PREVIEW_TRUNCATE_LEN" => $arParams["PREVIEW_TRUNCATE_LEN"], "ACTIVE_DATE_FORMAT" => $arParams["LIST_ACTIVE_DATE_FORMAT"], "USE_PERMISSIONS" => $arParams["USE_PERMISSIONS"], "GROUP_PERMISSIONS" => $arParams["GROUP_PERMISSIONS"], "FILTER_NAME" => $arParams["FILTER_NAME"], "HIDE_LINK_WHEN_NO_DETAIL" => $arParams["HIDE_LINK_WHEN_NO_DETAIL"], "CHECK_DATES" => $arParams["CHECK_DATES"], "PARENT_SECTION" => $arResult["VARIABLES"]["SECTION_ID"], "PARENT_SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"], "DETAIL_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["detail"], "SECTION_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["section"], "IBLOCK_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["news"]), $component);