Comments 12
1. Отключите это немедленно! У вас же классическая SQL инъекция через POST.
2. Я много повидал говнокода вокруг битрикса, но чтобы дергали мускул через shell_exec это на черный пояс тянет. Покурите http://dev.1c-bitrix.ru/api_help/main/reference/cuser/getlist.php например.
3. Зачем вы два раза подключаете модуль im?
2. Я много повидал говнокода вокруг битрикса, но чтобы дергали мускул через shell_exec это на черный пояс тянет. Покурите http://dev.1c-bitrix.ru/api_help/main/reference/cuser/getlist.php например.
3. Зачем вы два раза подключаете модуль im?
+2
Затем что я админ и не знаю php. Совсем не знаю. Правда.
Поэтому я его слепил из того, что было и send_from_pbx.php закрыл nginx-ом для всех, кроме IP астериска.
Поэтому я его слепил из того, что было и send_from_pbx.php закрыл nginx-ом для всех, кроме IP астериска.
0
Что закрыли хорошо, но не спасет, если пропущен звонок по сип транку (в него могут напихать что угодно в поле «звонящий», в том числе '; drop table users
+1
В-общем, надо
Плюсы:
1. Нет инъекций
2. Найдет и оповестит всех юзеров с данным номером (если например телефон общий на кабинет, а не на сотрудника)
3. На одного сотрудника можно будет повесить несколько номеров (личный плюс общий, или личный плюс телефон коллеги, пока тот в отпуске)
как-то так
$dbr = CUser::GetList(($by="id"), "asc",["UF_PHONE_INNER" => $_POST["number"]);
while($user = $dbr->Fetch() {
$to_user_id = $user["ID"];
// дальше как у вас
}
Плюсы:
1. Нет инъекций
2. Найдет и оповестит всех юзеров с данным номером (если например телефон общий на кабинет, а не на сотрудника)
3. На одного сотрудника можно будет повесить несколько номеров (личный плюс общий, или личный плюс телефон коллеги, пока тот в отпуске)
+1
Ооо, спасибо! Сейчас опробую и, если у меня всё получится, поправлю статью.
0
2. Найдет и оповестит всех юзеров с данным номером (если например телефон общий на кабинет, а не на сотрудника)
3. На одного сотрудника можно будет повесить несколько номеров (личный плюс общий, или личный плюс телефон коллеги, пока тот в отпуске)
Битрикс так не умеет — нельзя несколько внутренних указать и нельзя один внутренний раздать нескольким сотрудникам.
0
поправил. Так лучше?
0
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
if (!(count($_POST) == 2) || !CModule::IncludeModule('iblock') || !CModule::IncludeModule('im')) {
die('error');
}
$dbr = CUser::GetList(($by = "ID"), ($order = "ACS"), ["ACTIVE" => "Y", "UF_PHONE_INNER" => intval($_POST["number"])]);
while ($user = $dbr->Fetch()) {
CIMMessenger::Add(array(
"MESSAGE_TYPE" => "P", # P - private chat, G - group chat, S - notification
"TO_USER_ID" => $user["ID"],
"FROM_USER_ID" => 111,
"MESSAGE" => $_POST['message'],
"AUTHOR_ID" => 111,
"EMAIL_TEMPLATE" => "some",
"NOTIFY_TYPE" => 2,
"NOTIFY_MODULE" => "main",
"NOTIFY_EVENT" => "IM_GROUP_INVITE",
"NOTIFY_TITLE" => "Пропущенный звонок",
));
}
+2
Тут ещё выводится success / error по итогам. Тогда надо
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
if (!(count($_POST) == 2) || !CModule::IncludeModule('iblock') || !CModule::IncludeModule('im')) {
die('error');
}
$dbr = CUser::GetList(($by = "ID"), ($order = "ASC"), ["ACTIVE" => "Y", "UF_PHONE_INNER" => intval($_POST["number"])]);
$count = 0; //счётчик отправленных сообщений
while ($user = $dbr->Fetch()) {
if (CIMMessenger::Add(array(
"MESSAGE_TYPE" => "P", # P - private chat, G - group chat, S - notification
"TO_USER_ID" => $user["ID"],
"FROM_USER_ID" => 111,
"MESSAGE" => $_POST['message'],
"AUTHOR_ID" => 111,
"EMAIL_TEMPLATE" => "some",
"NOTIFY_TYPE" => 2,
"NOTIFY_MODULE" => "main",
"NOTIFY_EVENT" => "IM_GROUP_INVITE",
"NOTIFY_TITLE" => "Пропущенный звонок",
))) $count++;
}
if(count)
echo "success";
else
echo "error";
0
Спасибо, так гораздо лучше.
0
Sign up to leave a comment.
Уведомления о пропущенных звонках с Asterisk на Битрикс24