24.05.2018 22:12:54
Не помогает.Тест делал (при настройки почты). Тестовое сообщение отправляеться.
Весь код:[CODE]addEventHandler("main","OnAfterUserUpdate", Array("MyClass", "OnAfterUserUpdateHandler")); class MyClass { public static $disableHandler = false; function OnAfterUserUpdateHandler(&$arFields){ $res=$arFields["GROUP_ID"]; // в реске id груп $key=array_search(5, $res); echo "поиск "; $exists = (array_search(5, array_column($res, 'GROUP_ID'))!== false); // ищим среди групп пользователя пятую var_dump($exists); echo "<br>"; if ($exists==true){ $filter = Array ( "GROUPS_ID"=> Array(5) // ID gruppi ); $rsUsers = CUser::GetList(($by="id"), ($order="desc"), $filter); echo "<br>"; while($arItem = $rsUsers->GetNext()) { send_mail($arItem['EMAIL']); } } } } function send_mail($mail){ $mailfrom = 'bitrix2j@yandex.ru'; $arEventFields = Array( "USER_EMAIL" =>$mail, "EMAIL_FROM" =>$mailfrom, ); CEvent::Send("ADD_NEW_USER_TO_GROUP", "s1", $arEventFields, "N", "29"); }[/CODE] |
|
|
24.05.2018 20:25:07
[QUOTE]Андрей Николаев написал:
Дмитрий Тихоненко , для начала поправьте верстку вашего сообщения (а то даже читать неудобно), а затем проверьте логи почтового сервера (msmtp, postfix или что у Вас там)[/QUOTE] Я немного изменил способ отправки, но это не помогает. [CODE] function send_mail($mail){echo "mail in function:".$mail; $arEventFields = array( "#user_email" => $mail, 'EMAIL_FROM' => 'test@email.ru', ); CEvent::SendImmediate("ADD_NEW_USER_TO_GROUP","s1", $arEventFields,"N","29"); echo "message ".$mail, " sended"; CEvent::Send("ADD_NEW_USER_TO_GROUP","s1", $arEventFields,"N","29");}[/CODE] Сам шаблон: И база: [IMG WIDTH=360 HEIGHT=28]https://c.radikal.ru/c03/1805/32/2fee6dd9a655t.jpg[/IMG] |
|
|
24.05.2018 01:12:14
Пытаюсь отправить сообщение по email в событие.
$arEventFields = array( Где почтовое событие ADD_NEW_USER_TO_GROUP, которому назначен шаблон. Почта работает, тестовые сообщения уходят. В таблице на против события стоит Y [IMG WIDTH=360 HEIGHT=28]https://d.radikal.ru/d24/1805/3e/880c8287183dt.jpg[/IMG] [URL=https://b.radikal.ru/b25/1805/13/a8ef95f87152.png]https://b.radikal.ru/b25/1805/13/a8ef95f87152.png[/URL] |
|
|
20.05.2018 18:04:48
[QUOTE]Андрей Николаев написал:
[QUOTE] Дмитрий Тихоненко написал: SHOW_COUNTER, а то он вечно NULL[/QUOTE] А почемы Вы решили что он должен быть не NULL? В документации об этом нигде не сказано, а для увеличение количества есть специальный метод: [URL=http://bxapi.ru/src/?id=176366]CIBlockElement::CounterInc($ID)[/URL] , который изменяет значения напрямую в БД в обход событий[/QUOTE] Решил так:[CODE] function OnAfterIBlockElementUpdateHandler(&$arFields) { /*global $APPLICATION; $APPLICATION->ThrowException('Имя входа должно быть заполнено.'); return false;*/ $res = CIBlockElement::GetByID($arFields["ID"]); $ar_res = $res->GetNext(); $ACTIVE=$ar_res["ACTIVE"]; $SHOW_COUNTER=$ar_res['SHOW_COUNTER']; var_dump($SHOW_COUNTER); echo "<br>"; if($SHOW_COUNTER>2 ){ var_dump($SHOW_COUNTER); var_dump($ACTIVE); if ($ACTIVE=="Y"){ global $APPLICATION; $APPLICATION->ThrowException("Товар невозможно деактивировать, у него " .$ar_res['SHOW_COUNTER'],"\n просмотров"); return false; // die(); } } [/CODE] |
|
|
20.05.2018 13:17:18
Не возвращается исключение. return false;[/CODE] При этом если перед исключением поставить die(), то выполнение прекратиться, т.е программа до этого места доходит. { $res = CIBlockElement::GetByID($arFields["ID"]); if($ar_res = $res->GetNext()) $temp=$ar_res["ACTIVE"]; if($ar_res['SHOW_COUNTER']>2 ){ var_dump($temp); echo "больше 2 просмотр"; if (strCaseCmp($temp,"N")==0){ global $APPLICATION; $APPLICATION->ThrowException('Имя входа должно быть заполнено.'); return false; } } }[/CODE] При этом в таком виде, все прекрасно работает: [CODE]if($ar_res['SHOW_COUNTER']>2){global $APPLICATION; $APPLICATION->ThrowException("Товар невозможно деактивировать, у него " .$ar_res['SHOW_COUNTER'],"\n просмотров"); return false; } [/CODE] |
|
|
19.05.2018 23:37:30
[QUOTE]Андрей Николаев написал:
[QUOTE] Дмитрий Тихоненко написал: $eventManager->addEventHandler[/QUOTE] Нужно использовать addEventHandlerCompatible P.S. Не используйте echo (на событиях ничего не должно выводиться) - пишите вывод в файл[/QUOTE] Спасибо. Получилось так ,только надо включить SHOW_COUNTER, а то он вечно NULL: [CODE]addEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("MyClass", "OnAfterIBlockElementUpdateHandler")); class MyClass { public static $disableHandler = false; function OnAfterIBlockElementUpdateHandler(&$arFields) { var_dump($arFields); $temp=$arFields["SHOW_COUNTER"]; var_dump($arFields["SHOW_COUNTER"]); var_dump() die; } } [/CODE] |
|
|