public function CheckFields($strAction, &$arFields, $intID = 0) { global $APPLICATION; global $DB; global $USER; $strAction = strtoupper($strAction); if ('UPDATE' != $strAction && 'ADD' != $strAction) { return false; } $intID = (int) $intID; $arCurrencyList = Currency\CurrencyManager::getCurrencyList(); $boolResult = true; $arMsg = array(); $clearFields = array('ID', '~ID', 'UNPACK', '~UNPACK', '~CONDITIONS', 'CONDITIONS', 'USE_COUPONS', '~USE_COUPONS', 'HANDLERS', '~HANDLERS', '~TYPE', '~RENEWAL', '~PRIORITY', '~LAST_DISCOUNT', '~VERSION', 'TIMESTAMP_X', 'DATE_CREATE', '~DATE_CREATE', '~MODIFIED_BY', '~CREATED_BY'); if ($strAction == 'UPDATE') { $clearFields[] = 'CREATED_BY'; } $arFields = array_filter($arFields, 'CCatalogDiscountSave::clearFields'); foreach ($clearFields as &$fieldName) { if (isset($arFields[$fieldName])) { unset($arFields[$fieldName]); } } unset($fieldName, $clearFields); $arFields['TYPE'] = self::ENTITY_ID; $arFields["RENEWAL"] = 'N'; $arFields['PRIORITY'] = 1; $arFields['LAST_DISCOUNT'] = 'Y'; $arFields['VERSION'] = Catalog\DiscountTable::ACTUAL_VERSION; if ((is_set($arFields, "SITE_ID") || $strAction == "ADD") && empty($arFields["SITE_ID"])) { $arMsg[] = array('id' => 'SITE_ID', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_SITE')); $boolResult = false; } else { $rsSites = CSite::GetByID($arFields['SITE_ID']); if (!($arSite = $rsSites->Fetch())) { $arMsg[] = array('id' => 'SITE_ID', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_SITE')); $boolResult = false; } } if ((is_set($arFields, "NAME") || $strAction == "ADD") && strlen(trim($arFields["NAME"])) <= 0) { $arMsg[] = array('id' => 'NAME', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_NAME')); $boolResult = false; } if ((is_set($arFields, "ACTIVE") || $strAction == "ADD") && $arFields["ACTIVE"] != "N") { $arFields["ACTIVE"] = "Y"; } if ((is_set($arFields, 'SORT') || $strAction == 'ADD') && intval($arFields['SORT']) <= 0) { $arFields['SORT'] = 500; } if ((is_set($arFields, "CURRENCY") || $strAction == "ADD") && empty($arFields["CURRENCY"])) { $arMsg[] = array('id' => 'CURRENCY', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_CURRENCY')); $boolResult = false; } if ((is_set($arFields, "ACTIVE_FROM") || $strAction == "ADD") && !$DB->IsDate($arFields["ACTIVE_FROM"], false, LANGUAGE_ID, "FULL")) { $arFields["ACTIVE_FROM"] = false; } if ((is_set($arFields, "ACTIVE_TO") || $strAction == "ADD") && !$DB->IsDate($arFields["ACTIVE_TO"], false, LANGUAGE_ID, "FULL")) { $arFields["ACTIVE_TO"] = false; } if ((is_set($arFields, 'COUNT_SIZE') || $strAction == 'ADD') && intval($arFields['COUNT_SIZE']) < 0) { $arFields['COUNT_SIZE'] = 0; } if ((is_set($arFields, 'COUNT_TYPE') || $strAction == 'ADD') && !in_array($arFields['COUNT_TYPE'], array('D', 'M', 'Y'))) { $arFields['COUNT_TYPE'] = 'Y'; } if ((is_set($arFields, "COUNT_FROM") || $strAction == "ADD") && !$DB->IsDate($arFields["COUNT_FROM"], false, LANGUAGE_ID, "FULL")) { $arFields["COUNT_FROM"] = false; } if ((is_set($arFields, "COUNT_TO") || $strAction == "ADD") && !$DB->IsDate($arFields["COUNT_TO"], false, LANGUAGE_ID, "FULL")) { $arFields["COUNT_TO"] = false; } if (is_set($arFields, 'COUNT_PERIOD')) { unset($arFields['COUNT_PERIOD']); } $strCountPeriod = self::COUNT_TIME_ALL; if (is_set($arFields, 'COUNT_SIZE') && intval($arFields['COUNT_SIZE']) > 0) { $strCountPeriod = self::COUNT_TIME_PERIOD; } if (!empty($arFields["COUNT_FROM"]) || !empty($arFields["COUNT_TO"])) { $strCountPeriod = self::COUNT_TIME_INTERVAL; } $arFields['COUNT_PERIOD'] = $strCountPeriod; if ((is_set($arFields, 'ACTION_SIZE') || $strAction == 'ADD') && intval($arFields['ACTION_SIZE']) < 0) { $arFields['ACTION_SIZE'] = 0; } if ((is_set($arFields, 'ACTION_TYPE') || $strAction == 'ADD') && !in_array($arFields['ACTION_TYPE'], array('D', 'M', 'Y'))) { $arFields['ACTION_TYPE'] = 'Y'; } $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) || (int) $arFields["MODIFIED_BY"] <= 0) { $arFields["MODIFIED_BY"] = $intUserID; } } if ('ADD' == $strAction) { $arFields['~DATE_CREATE'] = $strDateFunction; if ($boolUserExist) { if (!array_key_exists('CREATED_BY', $arFields) || (int) $arFields["CREATED_BY"] <= 0) { $arFields["CREATED_BY"] = $intUserID; } } } if (is_set($arFields, 'RANGES') || $strAction == 'ADD') { if (!is_array($arFields['RANGES']) || empty($arFields['RANGES'])) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_RANGES')); $boolResult = false; } else { $boolRepeat = false; $arRangeList = array(); foreach ($arFields['RANGES'] as &$arRange) { if (!is_array($arRange) || empty($arRange)) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE')); $boolResult = false; } else { if (empty($arRange['TYPE']) || $arRange['TYPE'] != self::TYPE_FIX) { $arRange['TYPE'] = self::TYPE_PERCENT; } if (isset($arRange['VALUE'])) { $arRange["VALUE"] = str_replace(",", ".", $arRange["VALUE"]); $arRange["VALUE"] = doubleval($arRange["VALUE"]); if (!(0 < $arRange["VALUE"])) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_VALUE')); $boolResult = false; } elseif (self::TYPE_PERCENT == $arRange['TYPE'] && 100 < $arRange["VALUE"]) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_VALUE')); $boolResult = false; } } else { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_VALUE')); $boolResult = false; } if (isset($arRange['RANGE_FROM'])) { $arRange["RANGE_FROM"] = str_replace(",", ".", $arRange["RANGE_FROM"]); $arRange["RANGE_FROM"] = doubleval($arRange["RANGE_FROM"]); if (0 > $arRange["RANGE_FROM"]) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_FROM')); $boolResult = false; } else { if (in_array($arRange["RANGE_FROM"], $arRangeList)) { $boolRepeat = true; } else { $arRangeList[] = $arRange["RANGE_FROM"]; } } } else { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_FROM')); $boolResult = false; } } } if (isset($arRange)) { unset($arRange); } if ($boolRepeat) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_DUP_RANGE_FROM')); $boolResult = false; } } } if (isset($arFields['GROUP_IDS']) || $strAction == 'ADD') { if (!empty($arFields['GROUP_IDS'])) { if (!is_array($arFields['GROUP_IDS'])) { $arFields['GROUP_IDS'] = array($arFields['GROUP_IDS']); } $arValid = array(); foreach ($arFields['GROUP_IDS'] as &$intGroupID) { $intGroupID = (int) $intGroupID; if (0 < $intGroupID && 2 != $intGroupID) { $arValid[] = $intGroupID; } } if (isset($intGroupID)) { unset($intGroupID); } $arFields['GROUP_IDS'] = array_unique($arValid); } if (empty($arFields['GROUP_IDS'])) { $arMsg[] = array('id' => 'GROUP_IDS', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_GROUP_IDS')); $boolResult = false; } } if ($boolResult) { $cond = new CCatalogCondTree(); $boolCond = $cond->Init(BT_COND_MODE_GENERATE, BT_COND_BUILD_CATALOG, array()); if (!$boolCond) { $boolResult = false; } else { $arFields['CONDITIONS'] = $cond->GetDefaultConditions(); $arFields['UNPACK'] = $cond->Generate($arFields['CONDITIONS'], array()); $arFields['CONDITIONS'] = serialize($arFields['CONDITIONS']); } } if (!$boolResult) { $obError = new CAdminException($arMsg); $APPLICATION->ResetException(); $APPLICATION->ThrowException($obError); } return $boolResult; }
$tabControl->BeginCustomField("CONDITIONS", GetMessage('BT_CAT_DISCOUNT_EDIT_FIELDS_COND').":",false); ?><tr id="tr_CONDITIONS"> <td valign="top" colspan="2"><div id="tree" style="position: relative; z-index: 1;"></div><? if (!is_array($arDiscount['CONDITIONS'])) { if (CheckSerializedData($arDiscount['CONDITIONS'])) { $arDiscount['CONDITIONS'] = unserialize($arDiscount['CONDITIONS']); } else { $arDiscount['CONDITIONS'] = ''; } } $obCond = new CCatalogCondTree(); $boolCond = $obCond->Init(BT_COND_MODE_DEFAULT, BT_COND_BUILD_CATALOG, array('FORM_NAME' => 'fdiscount_edit_form', 'CONT_ID' => 'tree', 'JS_NAME' => 'JSCatCond')); if (!$boolCond) { if ($ex = $APPLICATION->GetException()) echo $ex->GetString()."<br>"; } else { $obCond->Show($arDiscount['CONDITIONS']); } ?></td> </tr><? $strHidden = ''; $strCond = base64_encode(serialize($arDiscount['CONDITIONS'])); $tabControl->EndCustomField("CONDITIONS",
protected function __GetConditionValues(&$arFields) { $arResult = false; if (isset($arFields['CONDITIONS']) && !empty($arFields['CONDITIONS'])) { $arConditions = false; if (!is_array($arFields['CONDITIONS'])) { if (CheckSerializedData($arFields['CONDITIONS'])) { $arConditions = unserialize($arFields['CONDITIONS']); } } else { $arConditions = $arFields['CONDITIONS']; } if (is_array($arConditions) && !empty($arConditions)) { $obCond = new CCatalogCondTree(); $boolCond = $obCond->Init(BT_COND_MODE_SEARCH, BT_COND_BUILD_CATALOG, array()); if ($boolCond) { $arResult = $obCond->GetConditionValues($arConditions); } } } return $arResult; }
} foreach ($PROFILE['XMLDATA'] as $id => $field) { if ($field['REQUIRED'] == 'Y') { if ($field['TYPE'] == 'field' && !$field['VALUE'] || $field['TYPE'] == 'const' && !$field['CONTVALUE_TRUE'] || $field['TYPE'] == 'none') { $APPLICATION->ThrowException(GetMessage('ACRIT_EXPORTPRO_REQUIRED_FIELD_FAIL', array('#CODE#' => $field['CODE'], '#NAME#' => $field['NAME']))); return false; } } } return true; } $fieldsCheck = true; if ($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($save) || !empty($apply)) && check_bitrix_sessid()) { if ($fieldsCheck = CheckFields()) { if (CModule::IncludeModule("catalog")) { $obCond = new CCatalogCondTree(); $boolCond = $obCond->Init(BT_COND_MODE_PARSE, 0, array()); if (!$boolCond) { if ($ex = $APPLICATION->GetException()) { echo $ex->GetString() . "<br>"; } } } foreach ($PROFILE['XMLDATA'] as $id => $field) { if (intval($id) > 0) { $PROFILE['XMLDATA'][$field['CODE']] = $field; unset($PROFILE['XMLDATA'][$id]); } } foreach ($PROFILE['XMLDATA'] as $id => $field) { if (!empty($field['CONDITION']) && CModule::IncludeModule("catalog")) {