publicMode; $selfFolderUrl = $adminPage->getSelfFolderUrl(); Loader::includeModule('catalog'); $accessController = AccessController::getCurrent(); if (!($accessController->check(ActionDictionary::ACTION_CATALOG_READ) || $accessController->check(ActionDictionary::ACTION_PRICE_GROUP_EDIT))) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $bReadOnly = !$accessController->check(ActionDictionary::ACTION_PRICE_GROUP_EDIT); if ($ex = $APPLICATION->GetException()) { require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $strError = $ex->GetString(); ShowError($strError); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } IncludeModuleLangFile(__FILE__); $sTableID = "tbl_catalog_group"; $oSort = new CAdminUiSorting($sTableID, "ID", "ASC"); $lAdmin = new CAdminUiList($sTableID, $oSort); $by = mb_strtoupper($oSort->getField()); $order = mb_strtoupper($oSort->getOrder()); $arFilterFields = array(); $lAdmin->InitFilter($arFilterFields); $arFilter = array(); if ($lAdmin->EditAction() && !$bReadOnly) { foreach ($_POST['FIELDS'] as $ID => $arFields) { $ID = (int)$ID; if ($ID <= 0 || !$lAdmin->IsUpdated($ID)) continue; $DB->StartTransaction(); if (!CCatalogGroup::Update($ID, $arFields)) { if ($ex = $APPLICATION->GetException()) $lAdmin->AddUpdateError($ex->GetString(), $ID); else $lAdmin->AddUpdateError(GetMessage("ERROR_UPDATING_REC")." (".$arFields["ID"].", ".$arFields["NAME"].", ".$arFields["SORT"].")", $ID); $DB->Rollback(); } else { $DB->Commit(); } } } if (($arID = $lAdmin->GroupAction()) && !$bReadOnly) { if ($_REQUEST['action_target']=='selected') { $arID = Array(); $dbResultList = CCatalogGroup::GetListEx(array(), $arFilter, false, false, array('ID')); while ($arResult = $dbResultList->Fetch()) $arID[] = $arResult['ID']; } foreach ($arID as $ID) { if ($ID == '') continue; switch ($_REQUEST['action']) { case "delete": @set_time_limit(0); $DB->StartTransaction(); if (!CCatalogGroup::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) $lAdmin->AddGroupError($ex->GetString(), $ID); else $lAdmin->AddGroupError(GetMessage("ERROR_DELETING_TYPE"), $ID); } else { $DB->Commit(); } break; case 'setbase': $DB->StartTransaction(); if (!CCatalogGroup::Update($ID, ['BASE' => 'Y'])) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) $lAdmin->AddGroupError($ex->GetString(), $ID); else $lAdmin->AddGroupError(GetMessage("ERROR_UPDATING_REC"), $ID); } else { $DB->Commit(); } break; } } if ($lAdmin->hasGroupErrors()) { $adminSidePanelHelper->sendJsonErrorResponse($lAdmin->getGroupErrors()); } else { $adminSidePanelHelper->sendSuccessResponse(); } } $lAdmin->AddHeaders(array( array( "id" => "ID", "content" => "ID", "sort" => "ID", "default" => true ), array( "id" => "NAME", "content" => GetMessage("CODE"), "sort" => "NAME", "default" => true ), array( "id" => "NAME_LID", "content" => GetMessage('NAME'), "sort" => "", "default" => true ), array( "id" => "SORT", "content" => GetMessage("SORT"), "sort" => "SORT", "default" => true ), array( "id" => "BASE", "content" => GetMessage("BASE"), "sort" => "BASE", "default" => true ), array( "id" => "XML_ID", "content" => GetMessage("BT_CAT_GROUP_ADM_TITLE_XML_ID"), "sort" => "XML_ID", "default" => false ), array( "id" => "MODIFIED_BY", "content" => GetMessage('BT_CAT_GROUP_ADM_TITLE_MODIFIED_BY'), "sort" => "MODIFIED_BY", "default" => true ), array( "id" => "TIMESTAMP_X", "content" => GetMessage('BT_CAT_GROUP_ADM_TITLE_TIMESTAMP_X'), "sort" => "TIMESTAMP_X", "default" => true ), array( "id" => "CREATED_BY", "content" => GetMessage('BT_CAT_GROUP_ADM_TITLE_CREATED_BY'), "sort" => "CREATED_BY", "default" => false ), array( "id" => "DATE_CREATE", "content" => GetMessage('BT_CAT_GROUP_ADM_TITLE_DATE_CREATE'), "sort" => "DATE_CREATE", "default" => false ), )); $arSelectFieldsMap = array( "ID" => false, "NAME" => false, "NAME_LID" => false, "SORT" => false, "BASE" => false, "XML_ID" => false, "MODIFIED_BY" => false, "TIMESTAMP_X" => false, "CREATED_BY" => false, "DATE_CREATE" => false, ); $arSelectFields = $lAdmin->GetVisibleHeaderColumns(); $arSelectFields = array_values($arSelectFields); $arSelectFieldsMap = array_merge($arSelectFieldsMap, array_fill_keys($arSelectFields, true)); $mxKey = array_search('NAME_LID', $arSelectFields); if (false !== $mxKey) { unset($arSelectFields[$mxKey]); $arSelectFields = array_values($arSelectFields); } $arLangList = array(); $arLangDefList = array(); if ($arSelectFieldsMap['NAME_LID']) { $rsPriceLangs = CLangAdmin::GetList(); while ($arPriceLang = $rsPriceLangs->Fetch()) { $arLangList[$arPriceLang['LID']] = true; $arLangDefList[$arPriceLang['LID']] = str_replace('#LANG#', htmlspecialcharsbx($arPriceLang['NAME']), GetMessage('BT_CAT_GROUP_ADM_LANG_MESS')); } unset($arPriceLang, $rsPriceLangs); } if (!in_array('ID', $arSelectFields)) { $arSelectFields[] = 'ID'; } if (!in_array('BASE', $arSelectFields)) { $arSelectFields[] = 'BASE'; } $dbResultList = CCatalogGroup::GetList( array($by => $order), array(), false, false, $arSelectFields ); $dbResultList = new CAdminUiResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->SetNavigationParams($dbResultList, array("BASE_LINK" => $selfFolderUrl."cat_group_admin.php")); $arUserList = array(); $arUserID = array(); $strNameFormat = CSite::GetNameFormat(true); $arRows = array(); while ($arRes = $dbResultList->Fetch()) { $arRes['ID'] = (int)$arRes['ID']; if ($arSelectFieldsMap['CREATED_BY']) { $arRes['CREATED_BY'] = (int)$arRes['CREATED_BY']; if (0 < $arRes['CREATED_BY']) $arUserID[$arRes['CREATED_BY']] = true; } if ($arSelectFieldsMap['MODIFIED_BY']) { $arRes['MODIFIED_BY'] = (int)$arRes['MODIFIED_BY']; if (0 < $arRes['MODIFIED_BY']) $arUserID[$arRes['MODIFIED_BY']] = true; } $editUrl = $selfFolderUrl."cat_group_edit.php?ID=".$arRes["ID"]."&lang=".LANGUAGE_ID; $editUrl = $adminSidePanelHelper->editUrlToPublicPage($editUrl); $arRows[$arRes['ID']] = $row = &$lAdmin->AddRow($arRes['ID'], $arRes, $editUrl); $row->AddViewField("ID", ''.$arRes["ID"].''); if (!$bReadOnly) { if ($arSelectFieldsMap['NAME']) $row->AddInputField("NAME", array("size" => 30)); if ($arSelectFieldsMap['SORT']) $row->AddInputField("SORT", array("size" => 4)); if ($arSelectFieldsMap['XML_ID']) $row->AddInputField("XML_ID", array("size" => 30)); } else { if ($arSelectFieldsMap['NAME']) $row->AddViewField("NAME", ''.htmlspecialcharsbx($arRes['NAME']).''); if ($arSelectFieldsMap['SORT']) $row->AddInputField('SORT', false); if ($arSelectFieldsMap['XML_ID']) $row->AddInputField("XML_ID", false); } if ($arSelectFieldsMap['BASE']) { $row->AddViewField("BASE", ("Y" == $arRes['BASE'] ? GetMessage("BASE_YES") : GetMessage("BASE_NO"))); } $arActions = array(); $arActions[] = array( "ICON" => "edit", "TEXT" => $bReadOnly ? GetMessage('VIEW') : GetMessage('EDIT_STATUS_ALT'), "LINK" => $editUrl, "DEFAULT" => true ); if (!$bReadOnly) { if ('Y' != $arRes['BASE']) { $arActions[] = array( "ICON" => "delete", "TEXT" => GetMessage("DELETE_STATUS_ALT"), "ACTION" => "if(confirm('".GetMessageJS('DELETE_STATUS_CONFIRM')."')) ".$lAdmin->ActionDoGroup($arRes['ID'], "delete") ); $arActions[] = [ 'ICON' => 'edit', 'TEXT' => GetMessage('BT_CAT_GROUP_ADM_ACTION_SET_BASE_PRICE'), 'ACTION' => $lAdmin->ActionDoGroup($arRes['ID'], 'setbase'), 'ONCLICK' => '', ]; } } $row->AddActions($arActions); } if ($arSelectFieldsMap['NAME_LID']) { $arGroupIDS = array_keys($arRows); if (!empty($arGroupIDS)) { $arLangResult = array(); $arLangResult = array_fill_keys($arGroupIDS, $arLangDefList); $rsLangs = CCatalogGroup::GetLangList(array("CATALOG_GROUP_ID" => $arGroupIDS)); while ($arLang = $rsLangs->Fetch()) { $arLang['CATALOG_GROUP_ID'] = (int)$arLang['CATALOG_GROUP_ID']; if (isset($arLangList[$arLang['LID']])) { $arLangResult[$arLang['CATALOG_GROUP_ID']][$arLang['LID']] = str_replace('#VALUE#', htmlspecialcharsbx($arLang["NAME"]), $arLangResult[$arLang['CATALOG_GROUP_ID']][$arLang['LID']]); } } foreach ($arGroupIDS as &$intGroupID) { $strLang = str_replace('#VALUE#', '', implode('
', $arLangResult[$intGroupID])); $arRows[$intGroupID]->AddViewField("NAME_LID", $strLang); } if (isset($intGroupID)) unset($intGroupID); } } if ($arSelectFieldsMap['CREATED_BY'] || $arSelectFieldsMap['MODIFIED_BY']) { if (!empty($arUserID)) { $rsUsers = CUser::GetList( 'ID', 'ASC', array('ID' => implode(' | ', array_keys($arUserID))), array('FIELDS' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL')) ); while ($arOneUser = $rsUsers->Fetch()) { $arOneUser['ID'] = (int)$arOneUser['ID']; $userEdit = $selfFolderUrl."user_edit.php?lang=".LANGUAGE_ID."&ID=".$arOneUser["ID"]; if ($publicMode) $arUserList[$arOneUser['ID']] = CUser::FormatName($strNameFormat, $arOneUser); else $arUserList[$arOneUser['ID']] = ''.CUser::FormatName($strNameFormat, $arOneUser).''; } } foreach ($arRows as &$row) { if ($arSelectFieldsMap['CREATED_BY']) { $strCreatedBy = ''; if (0 < $row->arRes['CREATED_BY'] && isset($arUserList[$row->arRes['CREATED_BY']])) { $strCreatedBy = $arUserList[$row->arRes['CREATED_BY']]; } $row->AddViewField("CREATED_BY", $strCreatedBy); } if ($arSelectFieldsMap['MODIFIED_BY']) { $strModifiedBy = ''; if (0 < $row->arRes['MODIFIED_BY'] && isset($arUserList[$row->arRes['MODIFIED_BY']])) { $strModifiedBy = $arUserList[$row->arRes['MODIFIED_BY']]; } $row->AddViewField("MODIFIED_BY", $strModifiedBy); } } if (isset($row)) unset($row); } $lAdmin->AddFooter( array( array( "title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $dbResultList->SelectedRowsCount() ), array( "counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0" ), ) ); if (!$bReadOnly) { $actions = []; if (!Catalog\Config\State::isExceededPriceTypeLimit()) { $actions['edit'] = true; } $actions['delete'] = true; $lAdmin->AddGroupActionTable($actions); unset($actions); } $aContext = array(); if (!$bReadOnly) { if (Catalog\Config\State::isAllowedNewPriceType()) { $addUrl = $selfFolderUrl."cat_group_edit.php?lang=".LANGUAGE_ID; $addUrl = $adminSidePanelHelper->editUrlToPublicPage($addUrl); $aContext[] = [ "TEXT" => GetMessage("CGAN_ADD_NEW"), "ICON" => "btn_new", "LINK" => $addUrl, "TITLE" => GetMessage("CGAN_ADD_NEW_ALT") ]; } else { $helpLink = Catalog\Config\Feature::getMultiPriceTypesHelpLink(); if (!empty($helpLink)) { $aContext[] = [ 'TEXT' => GetMessage('CGAN_ADD_NEW'), 'ICON' => 'btn_lock', $helpLink['TYPE'] => $helpLink['LINK'], 'TITLE' => GetMessage('CGAN_ADD_NEW_ALT') ]; } unset($helpLink); } } $lAdmin->setContextSettings(array("pagePath" => $selfFolderUrl."cat_group_admin.php")); $lAdmin->AddAdminContextMenu($aContext); unset($aContext); $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("GROUP_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");