本文整理汇总了PHP中CCatalogProduct::CheckFields方法的典型用法代码示例。如果您正苦于以下问题:PHP CCatalogProduct::CheckFields方法的具体用法?PHP CCatalogProduct::CheckFields怎么用?PHP CCatalogProduct::CheckFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCatalogProduct
的用法示例。
在下文中一共展示了CCatalogProduct::CheckFields方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Update
public function Update($ID, $arFields)
{
global $DB;
$ID = (int) $ID;
if ($ID <= 0) {
return false;
}
if (array_key_exists('ID', $arFields)) {
unset($arFields["ID"]);
}
foreach (GetModuleEvents("catalog", "OnBeforeProductUpdate", true) as $arEvent) {
if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
return false;
}
}
if (!CCatalogProduct::CheckFields("UPDATE", $arFields, $ID)) {
return false;
}
$strUpdate = $DB->PrepareUpdate("b_catalog_product", $arFields);
$boolSubscribe = false;
if (!empty($strUpdate)) {
if (isset($arFields["QUANTITY"]) && $arFields["QUANTITY"] > 0) {
if (!isset($arFields["OLD_QUANTITY"])) {
$strQuery = 'select ID, QUANTITY from b_catalog_product where ID = ' . $ID;
$rsProducts = $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
if ($arProduct = $rsProducts->Fetch()) {
$arFields["OLD_QUANTITY"] = doubleval($arProduct['QUANTITY']);
}
}
if (isset($arFields["OLD_QUANTITY"])) {
$boolSubscribe = $arFields["OLD_QUANTITY"] <= 0;
}
}
$strSql = "UPDATE b_catalog_product SET " . $strUpdate . " WHERE ID = " . $ID;
$DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
if (CBXFeatures::IsFeatureEnabled('CatCompleteSet') && (isset($arFields['QUANTITY']) || isset($arFields['QUANTITY_TRACE']) || isset($arFields['CAN_BUY_ZERO']) || isset($arFields['WEIGHT']))) {
CCatalogProductSet::recalculateSetsByProduct($ID);
}
if (isset(self::$arProductCache[$ID])) {
unset(self::$arProductCache[$ID]);
if (defined('CATALOG_GLOBAL_VARS') && 'Y' == CATALOG_GLOBAL_VARS) {
/** @var array $CATALOG_PRODUCT_CACHE */
global $CATALOG_PRODUCT_CACHE;
$CATALOG_PRODUCT_CACHE = self::$arProductCache;
}
}
}
foreach (GetModuleEvents("catalog", "OnProductUpdate", true) as $arEvent) {
ExecuteModuleEventEx($arEvent, array($ID, $arFields));
}
//call subscribe
if ($boolSubscribe && CModule::IncludeModule('sale')) {
CSaleBasket::ProductSubscribe($ID, "catalog");
}
return true;
}
示例2: Update
public function Update($ID, $arFields)
{
global $DB;
global $CATALOG_PRODUCT_CACHE;
$ID = intval($ID);
if (array_key_exists('ID', $arFields)) {
unset($arFields["ID"]);
}
if ($ID <= 0) {
return false;
}
$db_events = GetModuleEvents("catalog", "OnBeforeProductUpdate");
while ($arEvent = $db_events->Fetch()) {
if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
return false;
}
}
if (!CCatalogProduct::CheckFields("UPDATE", $arFields, $ID)) {
return false;
}
$strUpdate = $DB->PrepareUpdate("b_catalog_product", $arFields);
$strUpdate = trim($strUpdate);
$boolSubscribe = false;
if (!empty($strUpdate)) {
if (isset($arFields["QUANTITY"]) && $arFields["QUANTITY"] > 0) {
if (!isset($arFields["OLD_QUANTITY"])) {
$strQuery = 'select ID, QUANTITY from b_catalog_product where ID = ' . $ID;
$rsProducts = $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
//$rsProducts = CCatalogProduct::GetList(array(),array('ID' => $ID), false, false, array('ID', 'QUANTITY'));
if ($arProduct = $rsProducts->Fetch()) {
$arFields["OLD_QUANTITY"] = doubleval($arProduct['QUANTITY']);
}
}
if (isset($arFields["OLD_QUANTITY"])) {
$boolSubscribe = !(0 < $arFields["OLD_QUANTITY"]);
}
}
$strSql = "UPDATE b_catalog_product SET " . $strUpdate . " WHERE ID = " . $ID;
$DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
if (is_array($CATALOG_PRODUCT_CACHE) && array_key_exists($ID, $CATALOG_PRODUCT_CACHE)) {
unset($CATALOG_PRODUCT_CACHE[$ID]);
}
}
$events = GetModuleEvents("catalog", "OnProductUpdate");
while ($arEvent = $events->Fetch()) {
ExecuteModuleEventEx($arEvent, array($ID, $arFields));
}
//call subscribe
if ($boolSubscribe && CModule::IncludeModule('sale')) {
CSaleBasket::ProductSubscribe($ID, "catalog");
}
return true;
}
示例3: Update
/**
* <p>Функция обновляет параметры товара, относящиеся к товару как к таковому.</p>
*
*
*
*
* @param int $ID Код товара.
*
*
*
* @param array $arFields Ассоциативный массив, ключами которого являются названия
* параметров товара, а значениями - новые значения
* параметров.<br>Допустимые ключи: <ul> <li> <b>QUANTITY</b> - Количество товара
* на складе;</li> <li> <b>QUANTITY_TRACE</b> - Флаг (Y/N/D)<b>*</b> "уменьшать ли
* количество при заказе";</li> <li> <b>WEIGHT</b> - вес единицы товара;</li> <li>
* <b>PRICE_TYPE</b> - тип цены (S - одноразовый платеж, R - регулярные платежи, T
* - пробная подписка);</li> <li> <b>RECUR_SCHEME_TYPE</b> - тип периода подписки ("H" -
* час, "D" - сутки, "W" - неделя, "M" - месяц, "Q" - квартал, "S" - полугодие, "Y" -
* год);</li> <li> <b>RECUR_SCHEME_LENGTH</b> - длина периода подписки;</li> <li>
* <b>TRIAL_PRICE_ID</b> - код товара, для которого данный товар является
* пробным;</li> <li> <b>WITHOUT_ORDER</b> - флаг "Продление подписки без
* оформления заказа";</li> <li> <b>PURCHASING_PRICE</b> - закупочная цена;</li> <li>
* <b>PURCHASING_CURRENCY</b> - валюта закупочной цены;</li> <li> <b>CAN_BUY_ZERO</b> - флаг
* (Y/N/D)<b>*</b> "разрешить покупку при отсутствии товара";</li> <li>
* <b>NEGATIVE_AMOUNT_TRACE</b> - флаг (Y/N/D)<b>*</b> "разрешить отрицательное
* количество товара".</li> </ul>
*
*
*
* @return bool <p>Возвращает <i>true</i> в случае успешного обновления параметров и
* <i>false</i> в противном случае.</p>
*
*
* <h4>Example</h4>
* <pre>
* Обновление зарезервированного количества товара
* Cmodule::IncludeModule('catalog');
* $PRODUCT_ID = 51; // id товара
* $arFields = array('QUANTITY_RESERVED' => 11);// зарезервированное количество
* CCatalogProduct::Update($PRODUCT_ID, $arFields);
* </pre>
*
*
* @static
* @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproduct/ccatalogproduct__update.bc9a623b.php
* @author Bitrix
*/
static public function Update($ID, $arFields)
{
global $DB;
$ID = intval($ID);
if (0 >= $ID)
return false;
if (array_key_exists('ID', $arFields))
unset($arFields["ID"]);
foreach (GetModuleEvents("catalog", "OnBeforeProductUpdate", true) as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields))===false)
return false;
}
if (!CCatalogProduct::CheckFields("UPDATE", $arFields, $ID))
return false;
$strUpdate = $DB->PrepareUpdate("b_catalog_product", $arFields);
$strUpdate = trim($strUpdate);
$boolSubscribe = false;
if (!empty($strUpdate))
{
if (isset($arFields["QUANTITY"]) && $arFields["QUANTITY"] > 0)
{
if (!isset($arFields["OLD_QUANTITY"]))
{
$strQuery = 'select ID, QUANTITY from b_catalog_product where ID = '.$ID;
$rsProducts = $DB->Query($strQuery, false, "File: ".__FILE__."<br>Line: ".__LINE__);
if ($arProduct = $rsProducts->Fetch())
{
$arFields["OLD_QUANTITY"] = doubleval($arProduct['QUANTITY']);
}
}
if (isset($arFields["OLD_QUANTITY"]))
{
$boolSubscribe = !(0 < $arFields["OLD_QUANTITY"]);
}
}
$strSql = "UPDATE b_catalog_product SET ".$strUpdate." WHERE ID = ".$ID;
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
if (array_key_exists($ID, self::$arProductCache))
{
unset(self::$arProductCache[$ID]);
if (defined('CATALOG_GLOBAL_VARS') && 'Y' == CATALOG_GLOBAL_VARS)
{
global $CATALOG_PRODUCT_CACHE;
$CATALOG_PRODUCT_CACHE = self::$arProductCache;
//.........这里部分代码省略.........