Добрый день! Всех с пятницей :)
Столкнулся с такой проблемой:
Есть обработчик OnGetOptimalPrice в нем определенные условия для вывода своего типа цены, необходимо проверить если пользователь принадлежит группе id = 8 то выполнять условие.
Пробовал как по мануалу
[CODE]$arGroupAvalaible = array(8); // массив групп, которые в которых нужно проверить доступность пользователя
$arGroups = CUser::GetUserGroup($USER->GetID()); // массив групп, в которых состоит пользователь [/CODE]
в итоге словил
Call to a member function GetID() on null
Мне в принципе не нужно получать все группы пользователя, а проверить только, есть ли он в группе с id = 8.
Сам обработчик
[CODE]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",
),
);
}[/CODE]
Естественно ПроверкаНаГруппу надо как-то получить, вопрос, как?