%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/iblock/admin/ |
Current File : /home/bitrix/www/bitrix/modules/iblock/admin/iblock_reindex_admin.php |
<? /** @global CMain $APPLICATION */ use Bitrix\Main, Bitrix\Main\Loader, Bitrix\Iblock; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); Loader::includeModule('iblock'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/prolog.php"); IncludeModuleLangFile(__FILE__); $sTableID = "tbl_iblock_reindex_admin"; $adminSort = new CAdminSorting($sTableID, 'ID', 'ASC'); $lAdmin = new CAdminList($sTableID, $adminSort); $arHeader = array( array( "id" => "ID", "content" => GetMessage("IBLOCK_RADM_ID"), "default" => true, "sort" => "ID", "align" => "right", ), array( "id" => "NAME", "content" => GetMessage("IBLOCK_RADM_NAME"), "sort" => "NAME", "default" => true, ), array( "id" => "ACTIVE", "content" => GetMessage("IBLOCK_RADM_ACTIVE"), "sort" => "ACTIVE", "default" => true, ), array( "id" => "PROPERTY_INDEX", "content" => GetMessage("IBLOCK_RADM_PROPERTY_INDEX"), "sort" => "PROPERTY_INDEX", "default" => true, ), ); $lAdmin->AddHeaders($arHeader); $iblockFilter = array('=PROPERTY_INDEX' => array('I', 'Y')); if (Loader::includeModule('catalog')) { $OfferIblocks = array(); $offersIterator = \Bitrix\Catalog\CatalogIblockTable::getList(array( 'select' => array('IBLOCK_ID'), 'filter' => array('!=PRODUCT_IBLOCK_ID' => 0) )); while ($offer = $offersIterator->fetch()) $OfferIblocks[] = (int)$offer['IBLOCK_ID']; unset($offer, $offersIterator); if (!empty($OfferIblocks)) { unset($offer); $iblockFilter['!=ID'] = $OfferIblocks; } unset($offersIterator, $OfferIblocks); } if (!isset($by)) $by = 'ID'; if (!isset($order)) $order = 'ASC'; $iblockOrder = array($by => $order); if ($arID = $lAdmin->GroupAction()) { if ($_REQUEST['action_target']=='selected') { $arID = array(); $iblockIterator = Iblock\IblockTable::getList(array( 'select' => array('ID'), 'filter' => $iblockFilter, 'order' => $iblockOrder )); while ($iblockInfo = $iblockIterator->fetch()) $arID[] = (int)$iblockInfo['ID']; unset($iblockInfo, $iblockIterator); } if (!empty($arID)) { $conn = Main\Application::getConnection(); foreach ($arID as &$ID) { $ID = (int)$ID; if ($ID <= 0) continue; switch ($_REQUEST['action']) { case "delete": if (!CIBlockRights::UserHasRightTo($ID, $ID, "iblock_edit")) break; $iblockInfo = Iblock\IblockTable::getList(array( 'select' => array('ID', 'PROPERTY_INDEX'), 'filter' => array('=ID' => $ID) ))->fetch(); if (empty($iblockInfo) || $iblockInfo['PROPERTY_INDEX'] != 'Y') continue; $conn->startTransaction(); $result = Iblock\IblockTable::update($ID, array('PROPERTY_INDEX' => 'I')); if (!$result->isSuccess()) { $lAdmin->AddGroupError(implode('. ', $result->getErrorMessages()), $ID); $conn->rollbackTransaction(); } else { $conn->commitTransaction(); CIBlock::clearIblockTagCache($ID); CIBlock::CleanCache($ID); } unset($result); break; } } unset($ID); unset($conn); } } $usePageNavigation = true; if (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'excel') { $usePageNavigation = false; } else { $navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize( $sTableID, array('nPageSize' => 20, 'sNavID' => $APPLICATION->GetCurPage()) )); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int)$navyParams['PAGEN']; $navyParams['SIZEN'] = (int)$navyParams['SIZEN']; } } $getListParams = array( 'select' => array('ID', 'NAME', 'PROPERTY_INDEX', 'ACTIVE'), 'filter' => $iblockFilter, 'order' => $iblockOrder ); unset($iblockFilter); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN']*($navyParams['PAGEN']-1); } if ($usePageNavigation) { $countQuery = new Main\Entity\Query(\Bitrix\Iblock\IblockTable::getEntity()); $countQuery->addSelect(new 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; } } $rsIBlocks = new CAdminResult(\Bitrix\Iblock\IblockTable::getList($getListParams), $sTableID); if ($usePageNavigation) { $rsIBlocks->NavStart($getListParams['limit'], $navyParams['SHOW_ALL'], $navyParams['PAGEN']); $rsIBlocks->NavRecordCount = $totalCount; $rsIBlocks->NavPageCount = $totalPages; $rsIBlocks->NavPageNomer = $navyParams['PAGEN']; } else { $rsIBlocks->NavStart(); } // build list $lAdmin->NavText($rsIBlocks->GetNavPrint(GetMessage("IBLOCK_RADM_IBLOCKS"))); $invalid = 0; while($iblockInfo = $rsIBlocks->Fetch()) { $row = $lAdmin->AddRow($iblockInfo["ID"], $iblockInfo); $row->AddViewField("ID", $iblockInfo["ID"]); $row->AddViewField("NAME", htmlspecialcharsEx($iblockInfo["NAME"])); $row->AddViewField('ACTIVE', ($iblockInfo['ACTIVE'] == 'Y' ? GetMessage('IBLOCK_RADM_ACTIVE_YES') : GetMessage('IBLOCK_RADM_ACTIVE_NO'))); if ($iblockInfo["PROPERTY_INDEX"] == "I") { $status = 'red'; $lamp = '<span class="adm-lamp adm-lamp-in-list adm-lamp-'.$status.'"></span>'; $row->AddViewField("PROPERTY_INDEX", $lamp.'<a href="iblock_reindex.php?IBLOCK_ID='.urlencode($iblockInfo["ID"]).'&lang='.LANGUAGE_ID.'">'.GetMessage("IBLOCK_RADM_REINDEX").'</a>'); } elseif ($iblockInfo["PROPERTY_INDEX"] == "Y") { $status = 'green'; $lamp = '<span class="adm-lamp adm-lamp-in-list adm-lamp-'.$status.'"></span>'; $row->AddViewField("PROPERTY_INDEX", $lamp.GetMessage("IBLOCK_RADM_INDEX_OK")); } if ($iblockInfo["PROPERTY_INDEX"] == "I") { $invalid++; $arActions = array( array( "ICON" => "edit", "TEXT" => GetMessage("IBLOCK_RADM_REINDEX"), "ACTION" => $lAdmin->ActionRedirect("iblock_reindex.php?IBLOCK_ID=".urlencode($iblockInfo["ID"])."&lang=".LANGUAGE_ID), ), ); $row->AddActions($arActions); unset($arActions); } elseif ($iblockInfo["PROPERTY_INDEX"] == "Y") { $arActions = array( array( "ICON" => "edit", "TEXT" => GetMessage("IBLOCK_RADM_REINDEX_DISABLE"), "ACTION"=>"if(confirm('".GetMessageJS("IBLOCK_RADM_REINDEX_DISABLE_CONFIRM")."')) ".$lAdmin->ActionDoGroup($iblockInfo["ID"], "delete", "&lang=".LANGUAGE_ID), ), ); $row->AddActions($arActions); unset($arActions); } } if ($invalid) { $aContext = array( array( "ICON" => "btn_new", "TEXT" => GetMessage("IBLOCK_RADM_REINDEX_ALL"), "LINK" => "iblock_reindex.php?lang=".LANGUAGE_ID, ), ); $lAdmin->AddAdminContextMenu($aContext); } $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("IBLOCK_RADM_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $lAdmin->DisplayList(); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");