$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 $errorMessage .= (0 < $ID ? str_replace('#ID#', $ID, GetMessage('DSC_CPN_ERR_UPDATE')) : GetMessage('DSC_CPN_ERR_ADD'))."<br>"; $bVarsFromForm = true; $DB->Rollback(); } else { $DB->Commit();
die; } } else { $DB->StartTransaction(); $arFields = array("ONE_TIME" => isset($_POST['ONE_TIME']) ? $_POST['ONE_TIME'] : '', "COUNT" => intval(isset($_POST['COUNT']) ? $_POST['COUNT'] : 0)); if (!array_key_exists($arFields['ONE_TIME'], $arTypeList)) { $errorMessage .= GetMessage('BT_CAT_DISC_SUBCOUPON_ERR_COUPON_TYPE_BAD') . "<br>"; $bVarsFromForm = true; } if (0 >= $arFields['COUNT']) { $errorMessage .= GetMessage('BT_CAT_DISC_SUBCOUPON_ERR_COUNT_BAD') . "<br>"; $bVarsFromForm = true; } if (!$bVarsFromForm) { for ($i = 0; $i < $arFields['COUNT']; $i++) { $CID = CCatalogDiscountCoupon::Add(array("DISCOUNT_ID" => $intDiscountID, "ACTIVE" => "Y", "ONE_TIME" => $arFields['ONE_TIME'], "COUPON" => CatalogGenerateCoupon(), "DATE_APPLY" => false)); $cRes = $CID > 0; if (!$cRes) { if ($ex = $APPLICATION->GetException()) { $errorMessage .= $ex->GetString() . "<br>"; } else { $errorMessage .= GetMessage('BT_CAT_DISCOUNT_EDIT_ERR_COUPON_ADD') . "<br>"; } $bVarsFromForm = true; break; } } } if (!$bVarsFromForm) { $DB->Commit(); ?>
public function Update($ID, $arFields) { global $DB; $ID = intval($ID); $boolUpdateRestrictions = false; if (isset($arFields['GROUP_IDS']) && is_array($arFields['GROUP_IDS']) || isset($arFields['CATALOG_GROUP_IDS']) && is_array($arFields['CATALOG_GROUP_IDS'])) { $boolUpdateRestrictions = true; } if ($boolUpdateRestrictions) { $mxRows = self::__ParseArrays($arFields); if (!is_array($mxRows) || empty($mxRows)) { return false; } } $boolNewVersion = true; if (!is_set($arFields, 'CONDITIONS')) { self::__ConvertOldConditions('UPDATE', $arFields); $boolNewVersion = false; } if (!CCatalogDiscount::_Update($ID, $arFields)) { return false; } if ($boolNewVersion) { $arValuesList = self::__GetConditionValues($arFields); if (is_array($arValuesList) && !empty($arValuesList)) { self::__GetOldOneEntity($arFields, $arValuesList, 'IBLOCK_IDS', 'CondIBIBlock'); self::__GetOldOneEntity($arFields, $arValuesList, 'SECTION_IDS', 'CondIBSection'); self::__GetOldOneEntity($arFields, $arValuesList, 'PRODUCT_IDS', 'CondIBElement'); } } if ($boolUpdateRestrictions) { if (!CCatalogDiscount::__UpdateSubdiscount($ID, $mxRows)) { return false; } } CCatalogDiscount::__UpdateOldEntities($ID, $arFields, true); if (is_set($arFields, "CATALOG_COUPONS")) { if (!is_array($arFields["CATALOG_COUPONS"])) { $arFields["CATALOG_COUPONS"] = array("DISCOUNT_ID" => $ID, "ACTIVE" => "Y", "ONE_TIME" => "Y", "COUPON" => $arFields["CATALOG_COUPONS"], "DATE_APPLY" => false); } $arKeys = array_keys($arFields["CATALOG_COUPONS"]); if (!is_array($arFields["CATALOG_COUPONS"][$arKeys[0]])) { $arFields["CATALOG_COUPONS"] = array($arFields["CATALOG_COUPONS"]); } foreach ($arFields["CATALOG_COUPONS"] as &$arOneCoupon) { if (!empty($arOneCoupon['COUPON'])) { $arOneCoupon['DISCOUNT_ID'] = $ID; CCatalogDiscountCoupon::Add($arOneCoupon, false); } if (isset($arOneCoupon)) { unset($arOneCoupon); } } } CCatalogDiscount::SaveFilterOptions(); foreach (GetModuleEvents("catalog", "OnDiscountUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
public function Update($ID, $arFields) { $ID = (int) $ID; if ($ID <= 0) { return false; } foreach (GetModuleEvents("catalog", "OnBeforeDiscountUpdate", true) as $arEvent) { if (false === ExecuteModuleEventEx($arEvent, array($ID, &$arFields))) { return false; } } $boolExistUserGroups = isset($arFields['GROUP_IDS']) && is_array($arFields['GROUP_IDS']); $boolExistPriceTypes = isset($arFields['CATALOG_GROUP_IDS']) && is_array($arFields['CATALOG_GROUP_IDS']); $boolUpdateRestrictions = $boolExistUserGroups || $boolExistPriceTypes || isset($arFields['ACTIVE']); $mxRows = false; if ($boolUpdateRestrictions) { if (!$boolExistUserGroups) { if (!CCatalogDiscount::__FillArrays($ID, $arFields, 'GROUP_IDS')) { return false; } } if (!$boolExistPriceTypes) { if (!CCatalogDiscount::__FillArrays($ID, $arFields, 'CATALOG_GROUP_IDS')) { return false; } } $mxRows = self::__ParseArrays($arFields); if (empty($mxRows) || !is_array($mxRows)) { return false; } } $boolNewVersion = true; if (!array_key_exists('CONDITIONS', $arFields)) { self::__ConvertOldConditions('UPDATE', $arFields); $boolNewVersion = false; } if (!CCatalogDiscount::_Update($ID, $arFields)) { return false; } if ($boolNewVersion) { $arValuesList = self::__GetConditionValues($arFields); if (is_array($arValuesList) && !empty($arValuesList)) { self::__GetOldOneEntity($arFields, $arValuesList, 'IBLOCK_IDS', 'CondIBIBlock'); self::__GetOldOneEntity($arFields, $arValuesList, 'SECTION_IDS', 'CondIBSection'); self::__GetOldOneEntity($arFields, $arValuesList, 'PRODUCT_IDS', 'CondIBElement'); } } if ($boolUpdateRestrictions) { if (!CCatalogDiscount::__UpdateSubdiscount($ID, $mxRows, isset($arFields['ACTIVE']) ? $arFields['ACTIVE'] : '')) { return false; } } CCatalogDiscount::__UpdateOldEntities($ID, $arFields, true); if (array_key_exists('CATALOG_COUPONS', $arFields)) { if (!is_array($arFields["CATALOG_COUPONS"])) { $arFields["CATALOG_COUPONS"] = array("DISCOUNT_ID" => $ID, "ACTIVE" => "Y", "ONE_TIME" => "Y", "COUPON" => $arFields["CATALOG_COUPONS"], "DATE_APPLY" => false); } $arKeys = array_keys($arFields["CATALOG_COUPONS"]); if (!is_array($arFields["CATALOG_COUPONS"][$arKeys[0]])) { $arFields["CATALOG_COUPONS"] = array($arFields["CATALOG_COUPONS"]); } foreach ($arFields["CATALOG_COUPONS"] as &$arOneCoupon) { if (!empty($arOneCoupon['COUPON'])) { $arOneCoupon['DISCOUNT_ID'] = $ID; CCatalogDiscountCoupon::Add($arOneCoupon, false); } if (isset($arOneCoupon)) { unset($arOneCoupon); } } } foreach (GetModuleEvents("catalog", "OnDiscountUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }