function checkQuantity($arFields)
{
$log = date('Y-m-d H:i:s') . ' ' . print_r($arFields, true);
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);
global $DB;
$arMail = array();
// Если кол-во товара больше 0
if ($arFields["QUANTITY"] > 0) {
// Есть ли подписчики
$tableName = \Bitrix\Catalog\SubscribeTable::getTableName();
$results = $DB->Query("SELECT `USER_CONTACT` FROM `" . $tableName . "` WHERE `ITEM_ID`='" . $arFields["ID"] . "'");
while ($row = $results->Fetch()) {
$arMail[] = $row["USER_CONTACT"];
}
// Если нет подписчиков, не продолжаем
if (empty($arMail))
return true;
// Смотрим, сколько товара в наличии было до обновления
CModule::IncludeModule('iblock');
$objElement = CIblockElement::GetList(
array(), array("ID" => $arFields["ID"]), false, false,
array("CATALOG_GROUP_1", "DETAIL_PAGE_URL", "NAME")
);
$arElement = $objElement->GetNext();
$arElement["PAGE_URL"] = "https://" . $_SERVER["SERVER_NAME"] . $arElement["DETAIL_PAGE_URL"];
// Если ранее было больше 0, не продолжаем
if ((integer)$arElement["CATALOG_QUANTITY"] > 0)
return true;
// Отправим уведомления всем подписавшимся пользователям
foreach ($arMail as $mail) {
Bitrix\Main\Mail\Event::send(array(
"EVENT_NAME" => "SALE_SUBSCRIBE_PRODUCT",
"LID" => "s2",
"C_FIELDS" => array(
"EMAIL" => $mail,
"NAME" => $arElement["NAME"],
"PAGE_URL" => $arElement["PAGE_URL"]
),
));
}
}
return true;
}
// AddEventHandler("catalog", "OnBeforeProductUpdate", "OnBeforeProductUpdateHandler");
// AddEventHandler("catalog", "OnBeforeProductAdd", "OnBeforeProductAddHandler");
function OnBeforeProductUpdateHandler($id, $arFields) {
checkQuantity($arFields);
}
function OnBeforeProductAddHandler($arFields) {
checkQuantity($arFields);
}