Добрый день! Всех с пятницей
Столкнулся с такой проблемой:
Есть обработчик OnGetOptimalPrice в нем определенные условия для вывода своего типа цены, необходимо проверить если пользователь принадлежит группе id = 8 то выполнять условие.
Пробовал как по мануалу
в итоге словил
Call to a member function GetID() on null
Мне в принципе не нужно получать все группы пользователя, а проверить только, есть ли он в группе с id = 8.
Сам обработчик
Естественно ПроверкаНаГруппу надо как-то получить, вопрос, как?
Столкнулся с такой проблемой:
Есть обработчик OnGetOptimalPrice в нем определенные условия для вывода своего типа цены, необходимо проверить если пользователь принадлежит группе id = 8 то выполнять условие.
Пробовал как по мануалу
Код |
---|
$arGroupAvalaible = array(8); // массив групп, которые в которых нужно проверить доступность пользователя $arGroups = CUser::GetUserGroup($USER->GetID()); // массив групп, в которых состоит пользователь |
в итоге словил
Call to a member function GetID() on null
Мне в принципе не нужно получать все группы пользователя, а проверить только, есть ли он в группе с id = 8.
Сам обработчик
Код |
---|
if (!CModule::IncludeModule("sale")) return; AddEventHandler("catalog", "OnGetOptimalPrice", "MyGetOptimalPrice"); global $LocalPrice; $LocalPrice = 0; global $USER; function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(), $renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = false) { global $LocalPrice; if($LocalPrice <= 0) { $dbBasketItems = CSaleBasket::GetList(false, array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, array("ID", "MODULE", "PRODUCT_ID", "CALLBACK_FUNC", "QUANTITY", "DELAY", "CAN_BUY", "PRICE") ); while ($arItem = $dbBasketItems->Fetch()) { if($arItem['DELAY'] == 'N' && $arItem['CAN_BUY'] == 'Y') { $LocalPrice += $arItem['PRICE']*$arItem['QUANTITY']; } } } $arAllprices = CCatalogProduct::GetByIDEx($productID); /* echo "<pre>"; print_r($arAllPrices); echo "</pre>"; */ if (isset($arAllPrices['PRICES'][2]['PRICE']) && $ПроверкаНаГруппу == 8 && ($GLOBALS['MY_PARAM'] != 203339)) { $price = $arAllPrices['PRICES'][2]['PRICE']; } elseif (isset($arAllPrices['PRICES'][3]['PRICE']) && $ПроверкаНаГруппу != 8 && ($GLOBALS['MY_PARAM'] == 203339)) { $price = $arAllPrices['PRICES'][3]['PRICE']; } elseif (isset($arAllPrices['PRICES'][2]['PRICE']) && $ПроверкаНаГруппу == 8 && ($GLOBALS['MY_PARAM'] == 203339)) { $price = $arAllPrices['PRICES'][2]['PRICE']; } else (isset($arAllPrices['PRICES'][8]['PRICE'])) { $price = $arAllPrices['PRICES'][8]['PRICE'] }; return array( 'PRICE' => array( "ID" => $productID, 'PRICE' => $price, 'CURRENCY' => "RUB", 'ELEMENT_IBLOCK_ID' => $productID, 'VAT_INCLUDED' => "Y", ), 'DISCOUNT' => array( 'VALUE' => $discount, 'CURRENCY' => "RUB", ), ); } |
Естественно ПроверкаНаГруппу надо как-то получить, вопрос, как?