Skip to content

Instantly share code, notes, and snippets.

@victorlapshev
Created April 10, 2017 09:44
Show Gist options
  • Select an option

  • Save victorlapshev/7809e21d91f924d4aaa402992d156ebb to your computer and use it in GitHub Desktop.

Select an option

Save victorlapshev/7809e21d91f924d4aaa402992d156ebb to your computer and use it in GitHub Desktop.
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
CJSCore::Init(array("jquery"));
$APPLICATION->SetTitle('Массовая рассылка СМС');
$MESS["ERR_1"] = "недостаточно средств";
$MESS["ERR_2"] = "неправильный логин или пароль (ошибка при аутентификации)";
$MESS["ERR_3"] = "отсутствует текст сообщения";
$MESS["ERR_4"] = "некорректное значение номера получателя";
$MESS["ERR_5"] = "некорректное значение адреса отправителя";
$MESS["ERR_6"] = "отсутствует логин";
$MESS["ERR_7"] = "отсутствует пароль";
$MESS["ERR_8"] = "ошибка";
$MESS["ERR_9"] = "ошибка";
$MESS["ERR_10"] = "сервис временно недоступен";
$MESS["ERR_11"] = "некорректное значение ID сообщения";
// prepare data
$users = \Bitrix\Main\UserTable::getList(array(
'filter' => ['!PERSONAL_MOBILE' => false],
'select' => ['ID', 'NAME', 'SECOND_NAME', 'LOGIN', 'PHONE' => 'PERSONAL_MOBILE', 'LOCATION_ID' => 'UF_LOCATION'],
))->fetchAll();
$locations = \Bitrix\Sale\Location\LocationTable::getList([
'filter' => ['NAME.LANGUAGE_ID' => 'ru'],
'select' => ['ID', 'LOCATION_NAME' => 'NAME.NAME', 'PARENT_ID', 'DEPTH_LEVEL'],
'order' => ['LEFT_MARGIN' => 'asc']
])->fetchAll();
// process form submit
if( isset($_REQUEST['send']) && $arSend = $_REQUEST['send'] ) {
if(!empty($arSend['message']) && !empty($arSend['ids']) ) {
foreach($users as $user) {
if(in_array($user['ID'], $arSend['ids'])) {
$phones[] = str_replace(array(' ', '+', '-', ')', '('), '', $user['PHONE']);
}
}
if(isset($phones)) {
$result = CEchogroupSmsassist::MultySend($phones, $arSend['message']);
IncludeModuleLangFile(__FILE__);
if(intval($result) > 0) {
CAdminMessage::ShowNote('Рассылка передана в API, ID: ' . $result);
} else {
CAdminMessage::ShowMessage( $MESS['ERR_' . abs($result)] );
}
}
} else {
CAdminMessage::ShowMessage("Заполните сообщение и выберите получателей");
}
}
?>
<form method="post">
<table>
<tr>
<td>Регионы</td>
<td class="js-send-checkboxes">
<? foreach($locations as $location):
if( $location['DEPTH_LEVEL'] != 1 &&
!in_array($location['ID'], array_column($users, 'LOCATION_ID'))
) {
continue;
}
?>
<label>
<input
data-location='<?= json_encode($location) ?>'
type="checkbox"
style="margin-left: <?= $location['DEPTH_LEVEL'] * 30 ?>px;"
>
<?= $location['LOCATION_NAME'] ?>
</label>
<br>
<? endforeach ?>
</td>
</tr>
<tr>
<td>Список клиентов</td>
<td>
<select style="height: 250px" class="js-send-users" name="send[ids][]" multiple="multiple">
<? foreach($users as $user): ?>
<option data-location="<?= $user['LOCATION_ID'] ?>" value="<?=$user['ID']?>">
<?= "$user[NAME] $user[SECOND_NAME] - $user[PHONE]" ?>
</option>
<? endforeach ?>
</select>
</td>
</tr>
<tr>
<td>Сообщение</td>
<td>
<textarea style="width: 100%" name="send[message]" rows="6"></textarea>
</td>
</tr>
<tr>
<td> <button class="btn btn-primary" type="submit">Отправить</button> </td>
<td></td>
</tr>
</table>
</form>
<script>
var users = $('.js-send-users option');
var locations = $('.js-send-checkboxes input');
locations.on('change', function(){
var i, j, curLocation, curLocationData;
var location = $(this);
var locationData = location.data('location');
for(i=0; i<locations.length; i++) {
curLocation = locations[i];
curLocationData = $(curLocation).data('location');
if(locationData.ID === curLocationData.PARENT_ID) {
curLocation.checked = location.attr('checked');
}
}
for(i=0; i<locations.length; i++) {
curLocation = locations[i];
curLocationData = $(curLocation).data('location');
users.filter('option[data-location=' + curLocationData.ID + ']')
.attr('selected', curLocation.checked) ;
}
});
</script>
<? require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment