/** * @global CMain $APPLICATION * @global CDatabase $DB * @global CUser $USER */ use Bitrix\Main; use Bitrix\Catalog; use Bitrix\Catalog\Access\ActionDictionary; use Bitrix\Catalog\Access\AccessController; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/prolog.php"); Main\Loader::includeModule('catalog'); $accessController = AccessController::getCurrent(); if (!($accessController->check(ActionDictionary::ACTION_CATALOG_READ) || $accessController->check(ActionDictionary::ACTION_PRODUCT_DISCOUNT_SET))) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $bReadOnly = !$accessController->check(ActionDictionary::ACTION_PRODUCT_DISCOUNT_SET); 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_discount_coupon"; $oSort = new CAdminSorting($sTableID, "ID", "ASC"); $lAdmin = new CAdminList($sTableID, $oSort); $by = mb_strtoupper($oSort->getField()); $order = mb_strtoupper($oSort->getOrder()); $arFilterFields = array( "filter_id_start", "filter_id_end", "filter_discount_id", "filter_active", "filter_coupon", "filter_one_time", "filter_apply_time_start", "filter_apply_time_end", "filter_description" ); $lAdmin->InitFilter($arFilterFields); $arFilter = array(); if (!empty($filter_id_start)) $arFilter[">=ID"] = $filter_id_start; if (!empty($filter_id_end)) $arFilter["<=ID"] = $filter_id_end; if (!empty($filter_discount_id)) $arFilter["DISCOUNT_ID"] = $filter_discount_id; if (!empty($filter_active)) $arFilter["ACTIVE"] = $filter_active; if (!empty($filter_coupon)) $arFilter["COUPON"] = $filter_coupon; if (!empty($filter_one_time)) $arFilter["ONE_TIME"] = $filter_one_time; if (!empty($filter_apply_time_start)) $arFilter[">=DATE_APPLY"] = $filter_apply_time_start; if (!empty($filter_apply_time_end)) $arFilter["<=DATE_APPLY"] = $filter_apply_time_end; if (!empty($filter_description)) $arFilter["%DESCRIPTION"] = $filter_description; if ($lAdmin->EditAction() && !$bReadOnly) { foreach ($_POST['FIELDS'] as $ID => $arFields) { $ID = (int)$ID; if ($ID <= 0 || !$lAdmin->IsUpdated($ID)) continue; $DB->StartTransaction(); if (!CCatalogDiscountCoupon::Update($ID, $arFields)) { if ($ex = $APPLICATION->GetException()) $lAdmin->AddUpdateError($ex->GetString(), $ID); else $lAdmin->AddUpdateError(str_replace("#ID#", $ID, GetMessage("ERROR_UPDATE_DISCOUNT_CPN")), $ID); $DB->Rollback(); } else { $DB->Commit(); } } } if (($arID = $lAdmin->GroupAction()) && !$bReadOnly) { if ($_REQUEST['action_target']=='selected') { $arID = array(); $dbResultList = CCatalogDiscountCoupon::GetList( 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 (!CCatalogDiscountCoupon::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) $lAdmin->AddGroupError($ex->GetString(), $ID); else $lAdmin->AddGroupError(str_replace("#ID#", $ID, GetMessage("ERROR_DELETE_DISCOUNT_CPN")), $ID); } else { $DB->Commit(); } break; case "activate": case "deactivate": $arFields = array( "ACTIVE" => (($_REQUEST['action']=="activate") ? "Y" : "N") ); if (!CCatalogDiscountCoupon::Update($ID, $arFields)) { if ($ex = $APPLICATION->GetException()) $lAdmin->AddGroupError($ex->GetString(), $ID); else $lAdmin->AddGroupError(str_replace("#ID#", $ID, GetMessage("ERROR_UPDATE_DISCOUNT_CPN")), $ID); } break; } } } $lAdmin->AddHeaders(array( array( "id" => "ID", "content" => "ID", "sort" => "ID", "default"=>true ), array( "id" => "DISCOUNT_NAME", "content" => GetMessage("DSC_CPN_NAME"), "sort" => "DISCOUNT_NAME", "default" => true ), array( "id" => "ACTIVE", "content" => GetMessage("DSC_CPN_ACTIVE"), "sort" => "ACTIVE", "default" => true ), array( "id" => "COUPON", "content" => GetMessage("DSC_CPN_CPN"), "sort" => "COUPON", "default" => true ), array( "id" => "DATE_APPLY", "content" => GetMessage("DSC_CPN_DATE"), "sort" => "DATE_APPLY", "default" => true ), array( "id" => "ONE_TIME", "content" => GetMessage("DSC_CPN_TIME2"), "sort" => "ONE_TIME", "default" => true ), array( "id" => "DESCRIPTION", "content" => GetMessage("DSC_CPN_DESCRIPTION"), "sort" => "", "default" => false ), array( "id" => "MODIFIED_BY", "content" => GetMessage('DSC_MODIFIED_BY'), "sort" => "MODIFIED_BY", "default" => true ), array( "id" => "TIMESTAMP_X", "content" => GetMessage('DSC_TIMESTAMP_X'), "sort" => "TIMESTAMP_X", "default" => true ), array( "id" => "CREATED_BY", "content" => GetMessage('DSC_CREATED_BY'), "sort" => "CREATED_BY", "default" => false ), array( "id" => "DATE_CREATE", "content" => GetMessage('DSC_DATE_CREATE'), "sort" => "DATE_CREATE", "default" => false ), )); $arSelectFieldsMap = array( "ID" => false, "DISCOUNT_NAME" => false, "ACTIVE" => false, "COUPON" => false, "DATE_APPLY" => false, "ONE_TIME" => false, "DESCRIPTION" => false, "MODIFIED_BY" => false, "TIMESTAMP_X" => false, "CREATED_BY" => false, "DATE_CREATE" => false, ); $arSelectFields = $lAdmin->GetVisibleHeaderColumns(); if (!in_array('ID', $arSelectFields)) $arSelectFields[] = 'ID'; $arSelectFields = array_values($arSelectFields); $arSelectFieldsMap = array_merge($arSelectFieldsMap, array_fill_keys($arSelectFields, true)); $arCouponType = Catalog\DiscountCouponTable::getCouponTypes(true); $arNavParams = (isset($_REQUEST["mode"]) && 'excel' == $_REQUEST["mode"] ? false : array("nPageSize" => CAdminResult::GetNavSize($sTableID)) ); $dbResultList = CCatalogDiscountCoupon::GetList( array($by => $order), $arFilter, false, $arNavParams, $arSelectFields ); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("DSC_NAV"))); $arUserList = array(); $arUserID = array(); $strNameFormat = CSite::GetNameFormat(true); $arRows = array(); while ($arDiscount = $dbResultList->Fetch()) { $arDiscount['ID'] = (int)$arDiscount['ID']; if ($arSelectFieldsMap['CREATED_BY']) { $arDiscount['CREATED_BY'] = (int)$arDiscount['CREATED_BY']; if (0 < $arDiscount['CREATED_BY']) $arUserID[$arDiscount['CREATED_BY']] = true; } if ($arSelectFieldsMap['MODIFIED_BY']) { $arDiscount['MODIFIED_BY'] = (int)$arDiscount['MODIFIED_BY']; if (0 < $arDiscount['MODIFIED_BY']) $arUserID[$arDiscount['MODIFIED_BY']] = true; } $arRows[$arDiscount['ID']] = $row = &$lAdmin->AddRow($arDiscount['ID'], $arDiscount); if ($arSelectFieldsMap['DATE_CREATE']) $row->AddCalendarField("DATE_CREATE", false); if ($arSelectFieldsMap['TIMESTAMP_X']) $row->AddCalendarField("TIMESTAMP_X", false); $row->AddViewField("ID", ''.$arDiscount["ID"].''); if ($arSelectFieldsMap['DISCOUNT_NAME']) $row->AddInputField("DISCOUNT_NAME", false); if ($arSelectFieldsMap['ONE_TIME']) $row->AddViewField("ONE_TIME", htmlspecialcharsex($arCouponType[$arDiscount['ONE_TIME']])); if ($bReadOnly) { if ($arSelectFieldsMap['ACTIVE']) $row->AddCheckField("ACTIVE", false); if ($arSelectFieldsMap['COUPON']) $row->AddInputField("COUPON", false); if ($arSelectFieldsMap['DATE_APPLY']) $row->AddCalendarField("DATE_APPLY", false); if ($arSelectFieldsMap['DESCRIPTION']) $row->AddInputField("DESCRIPTION", false); } else { if ($arSelectFieldsMap['ACTIVE']) $row->AddCheckField("ACTIVE"); if ($arSelectFieldsMap['COUPON']) $row->AddInputField("COUPON", array("size" => 30)); if ($arSelectFieldsMap['DATE_APPLY']) $row->AddCalendarField("DATE_APPLY"); if ($arSelectFieldsMap['DESCRIPTION']) $row->AddInputField("DESCRIPTION"); } $arActions = array(); $arActions[] = array( "ICON" => "edit", "TEXT" => GetMessage("DSC_UPDATE_ALT"), "ACTION" => $lAdmin->ActionRedirect("/bitrix/admin/cat_discount_coupon_edit.php?ID=".$arDiscount['ID']."&lang=".LANGUAGE_ID.GetFilterParams("filter_", false).""), "DEFAULT" => true ); if (!$bReadOnly) { $arActions[] = array( "SEPARATOR" => true ); $arActions[] = array( "ICON" => "delete", "TEXT" => GetMessage("DSC_DELETE_ALT"), "ACTION" => "if(confirm('".GetMessageJS('DSC_DELETE_CONF')."')) ".$lAdmin->ActionDoGroup($arDiscount['ID'], "delete") ); } $row->AddActions($arActions); } if (isset($row)) unset($row); 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']; $arUserList[$arOneUser['ID']] = ''.CUser::FormatName($strNameFormat, $arOneUser).''; } } /** @var CAdminListRow $row */ 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) { $lAdmin->AddGroupActionTable( array( "delete" => GetMessage("MAIN_ADMIN_LIST_DELETE"), "activate" => GetMessage("MAIN_ADMIN_LIST_ACTIVATE"), "deactivate" => GetMessage("MAIN_ADMIN_LIST_DEACTIVATE"), ) ); } if (!$bReadOnly) { $aContext = array( array( "TEXT" => GetMessage("DSC_CPN_ADD"), "ICON" => "btn_new", "LINK" => "cat_discount_coupon_edit.php?lang=".LANGUAGE_ID, "TITLE" => GetMessage("DSC_CPN_ADD_ALT") ), ); $lAdmin->AddAdminContextMenu($aContext); } $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("DSC_CPN_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");