Created
April 10, 2017 09:44
-
-
Save victorlapshev/7809e21d91f924d4aaa402992d156ebb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?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