/** * <p>Метод служит для проверки (и корректировки, если это возможно) параметров, переданных в методы <a href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/add.php">CCatalogDiscountCoupon::Add</a> и <a href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/update.php">CCatalogDiscountCoupon::Update</a>. Метод динамичный.</p> * * * @param string $ACTION указывает, для какого метода идет проверка. Возможные значения: * <br><ul> <li> <b>ADD</b> - для метода <a * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/add.php">CCatalogDiscountCoupon::Add</a>;</li> * <li> <b>UPDATE</b> - для метода <a * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/update.php">CCatalogDiscountCoupon::Update</a>.</li> * </ul> * * @param array &$arFields Ассоциативный массив параметров купона. Массив передается по * ссылке и его значения могут быть изменены методом. <br> Допустимые * ключи: <ul> <li> <b>DISCOUNT_ID</b> - код (ID) скидки;</li> <li> <b>ACTIVE</b> - флаг * активности купона (Y/N);</li> <li> <b>ONE_TIME</b> - флаг однократного * использования купона (Y|N);</li> <li> <b>COUPON</b> - код купона;</li> <li> * <b>DATE_APPLY</b> - дата применения купона;</li> <li> <b>DESCRIPTION</b> - * комментарий.</li> </ul> * * @param int $ID = 0 код (ID) купона (только для CCatalogDiscountCoupon::Update). </htm * * @return boolean <p> В случае корректности переданных параметров возвращает true, * иначе - false. Если метод вернул false, с помощью $APPLICATION->GetException() можно * получить текст ошибок.</p> <p><b>Обязательные проверки</b></p> </htm<ul> * <li>для <b>CCatalogDiscountCoupon::Add</b> <ul> <li>поле DISCOUNT_ID присутствует и содержит * код (ID) существующей скидки;</li> <li>если поле ACTIVE не существует или * не равно N, ему присваивается значение Y;</li> <li>если поле ONE_TIME не * существует или не равно N, ему присваивается значение Y;</li> <li>поле * COUPON существует и содержит уникальный код, отсутствующий в списке * купонов;</li> <li>если поле DATE_APPLY не существует или не содержит * корректную дату, ему присваивается значение false.</li> </ul> <br> </li> * <li>для <b>CCatalogDiscountCoupon::Update</b> <ul> <li>если поле DISCOUNT_ID присутствует, оно * должно содержать код (ID) существующей скидки;</li> <li>если поле ACTIVE * существует и не равно N, ему присваивается значение Y;</li> <li>если * поле ONE_TIME существует и не равно N, ему присваивается значение Y;</li> * <li>если поле COUPON существует, оно содержит уникальный код, заданный * только для этого купона (с таким ID);</li> <li>если поле DATE_APPLY * существует и содержит некорректную дату, ему присваивается * значение false.</li> </ul> </li> </ul> * * <h4>See Also</h4> * <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/catalog/fields.php">Структура таблицы</a></li> <li><a * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/add.php">CCatalogDiscountCoupon::Add</a></li> * <li><a * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/update.php">CCatalogDiscountCoupon::Update</a></li> * </ul> </ht<br><br> * * * @static * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/checkfields.php * @author Bitrix */ public static function CheckFields($ACTION, &$arFields, $ID = 0) { global $DB, $APPLICATION, $USER; $ACTION = strtoupper($ACTION); if ('UPDATE' != $ACTION && 'ADD' != $ACTION) { return false; } if (self::$existCouponsManager === null) { self::initCouponManager(); } $clearFields = array('ID', '~ID', '~COUPON', 'TIMESTAMP_X', 'DATE_CREATE', '~DATE_CREATE', '~MODIFIED_BY', '~CREATED_BY'); if ($ACTION == 'UPDATE') { $clearFields[] = 'CREATED_BY'; } foreach ($clearFields as &$fieldName) { if (array_key_exists($fieldName, $arFields)) { unset($arFields[$fieldName]); } } unset($fieldName, $clearFields); if ((is_set($arFields, "DISCOUNT_ID") || $ACTION == "ADD") && intval($arFields["DISCOUNT_ID"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("KGDC_EMPTY_DISCOUNT"), "EMPTY_DISCOUNT_ID"); return false; } if ((is_set($arFields, "COUPON") || $ACTION == "ADD") && strlen($arFields["COUPON"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("KGDC_EMPTY_COUPON"), "EMPTY_COUPON"); return false; } elseif (is_set($arFields, "COUPON")) { $currentId = $ACTION == 'UPDATE' ? $ID : 0; $arFields['COUPON'] = substr($arFields['COUPON'], 0, 32); if (self::$existCouponsManager) { $existCoupon = DiscountCouponsManager::isExist($arFields['COUPON']); if (!empty($existCoupon)) { if ($existCoupon['MODULE'] != 'catalog' || $currentId != $existCoupon['ID']) { $APPLICATION->ThrowException(Loc::getMessage("KGDC_DUPLICATE_COUPON"), "DUPLICATE_COUPON"); return false; } } } else { $couponIterator = Catalog\DiscountCouponTable::getList(array('select' => array('ID', 'COUPON'), 'filter' => array('=COUPON' => $arFields['COUPON']))); if ($existCoupon = $couponIterator->fetch()) { if ($currentId != (int) $existCoupon['ID']) { $APPLICATION->ThrowException(Loc::getMessage("KGDC_DUPLICATE_COUPON"), "DUPLICATE_COUPON"); return false; } } } } if ((is_set($arFields, "ACTIVE") || $ACTION == "ADD") && $arFields["ACTIVE"] != "N") { $arFields["ACTIVE"] = "Y"; } if ((is_set($arFields, "ONE_TIME") || $ACTION == "ADD") && !in_array($arFields["ONE_TIME"], Catalog\DiscountCouponTable::getCouponTypes())) { $arFields["ONE_TIME"] = self::TYPE_ONE_TIME; } if ((is_set($arFields, "DATE_APPLY") || $ACTION == "ADD") && !$DB->IsDate($arFields["DATE_APPLY"], false, SITE_ID, "FULL")) { $arFields["DATE_APPLY"] = false; } $intUserID = 0; $boolUserExist = CCatalog::IsUserExists(); if ($boolUserExist) { $intUserID = (int) $USER->GetID(); } $strDateFunction = $DB->GetNowFunction(); $arFields['~TIMESTAMP_X'] = $strDateFunction; if ($boolUserExist) { if (!array_key_exists('MODIFIED_BY', $arFields) || intval($arFields["MODIFIED_BY"]) <= 0) { $arFields["MODIFIED_BY"] = $intUserID; } } if ('ADD' == $ACTION) { $arFields['~DATE_CREATE'] = $strDateFunction; if ($boolUserExist) { if (!array_key_exists('CREATED_BY', $arFields) || intval($arFields["CREATED_BY"]) <= 0) { $arFields["CREATED_BY"] = $intUserID; } } } return true; }
$boolMulti = isset($_REQUEST['MULTI']) && 'Y' == $_REQUEST['MULTI']; if (!$boolMulti) { $aTabs = array(array("DIV" => "sub_edit1", "TAB" => GetMessage("CDEN_TAB_DISCOUNT"), "ICON" => "catalog", "TITLE" => GetMessage("CDEN_TAB_DISCOUNT_DESCR"))); } else { $aTabs = array(array("DIV" => "sub_edit1", "TAB" => GetMessage("CDEN_TAB_DISCOUNT_MULTI"), "ICON" => "catalog", "TITLE" => "")); } $arPostParams = array('bxpublic' => 'Y'); if (0 < $intDiscountID) { $arPostParams['DISCOUNT_ID'] = $intDiscountID; $arPostParams['sessid'] = bitrix_sessid(); } $arListUrl = array('LINK' => $APPLICATION->GetCurPageParam(), 'POST_PARAMS' => $arPostParams); $errorMessage = ""; $bVarsFromForm = false; $ID = intval($ID); $arTypeList = Catalog\DiscountCouponTable::getCouponTypes(true); if (!$bReadOnly && $_SERVER['REQUEST_METHOD'] == "POST" && !empty($_POST['Update']) && check_bitrix_sessid()) { if (!$boolMulti) { $DB->StartTransaction(); $arFields = array("ACTIVE" => isset($_POST['ACTIVE']) && 'Y' == $_POST['ACTIVE'] ? 'Y' : 'N', "COUPON" => isset($_POST["COUPON"]) ? $_POST["COUPON"] : '', "DATE_APPLY" => isset($_POST['DATE_APPLY']) ? $_POST['DATE_APPLY'] : '', "ONE_TIME" => isset($_POST['ONE_TIME']) ? $_POST['ONE_TIME'] : '', "DESCRIPTION" => isset($_POST['DESCRIPTION']) ? $_POST['DESCRIPTION'] : ''); if ($ID > 0) { $res = CCatalogDiscountCoupon::Update($ID, $arFields); } else { $arFields["DISCOUNT_ID"] = isset($_POST['DISCOUNT_ID']) ? $_POST['DISCOUNT_ID'] : 0; $ID = CCatalogDiscountCoupon::Add($arFields); $res = $ID > 0; } if (!$res) { if ($ex = $APPLICATION->GetException()) { $errorMessage .= $ex->GetString() . "<br>"; } else {
} } } $CAdminCalendar_ShowScript = ''; if (true == B_ADMIN_SUBCOUPONS_LIST) { $CAdminCalendar_ShowScript = CAdminCalendar::ShowScript(); } $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "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, "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); $arUserList = array(); $arUserID = array(); $strNameFormat = CSite::GetNameFormat(true); if (!(false == B_ADMIN_SUBCOUPONS_LIST && $bCopy)) { $arNavParams = isset($_REQUEST['mode']) && 'excel' == $_REQUEST["mode"] ? false : array("nPageSize" => CAdminSubResult::GetNavSize($sTableID, 20, $lAdmin->GetListUrl(true))); $dbResultList = CCatalogDiscountCoupon::GetList(array($by => $order), $arFilter, false, $arNavParams, $arSelectFields); $dbResultList = new CAdminSubResult($dbResultList, $sTableID, $lAdmin->GetListUrl(true)); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(htmlspecialcharsbx(GetMessage("DSC_NAV")))); $arRows = array(); while ($arCouponDiscount = $dbResultList->Fetch()) { $edit_url = '/bitrix/admin/cat_subcoupon_edit.php?ID=' . $arCouponDiscount['ID'] . '&DISCOUNT_ID=' . $intDiscountID . '&lang=' . LANGUAGE_ID . '&TMP_ID=' . $strSubTMP_ID; $arCouponDiscount['ID'] = (int) $arCouponDiscount['ID']; if ($arSelectFieldsMap['CREATED_BY']) { $arCouponDiscount['CREATED_BY'] = (int) $arCouponDiscount['CREATED_BY'];