@@ -1,25 +1,25 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | $menu = [ |
| 3 | - [ |
|
| 4 | - 'parent_menu' => 'global_menu_services', |
|
| 5 | - 'sort' => 1000, |
|
| 6 | - 'text' => 'Телеграм', |
|
| 7 | - 'title' => 'Телеграм', |
|
| 8 | - 'items_id' => 'menu_references', |
|
| 9 | - 'icon' => '', |
|
| 10 | - 'items' => [ |
|
| 11 | - [ |
|
| 12 | - 'text' => 'Настройки', |
|
| 13 | - 'url' => 'telegram_main.php?lang=' . LANGUAGE_ID, |
|
| 14 | - 'title' => 'Настройки', |
|
| 15 | - ], |
|
| 16 | - [ |
|
| 17 | - 'text' => 'Инструкция', |
|
| 18 | - 'url' => 'telegram_instruction.php?lang=' . LANGUAGE_ID, |
|
| 19 | - 'title' => 'Регистрация бота', |
|
| 20 | - ], |
|
| 21 | - ], |
|
| 22 | - ], |
|
| 3 | + [ |
|
| 4 | + 'parent_menu' => 'global_menu_services', |
|
| 5 | + 'sort' => 1000, |
|
| 6 | + 'text' => 'Телеграм', |
|
| 7 | + 'title' => 'Телеграм', |
|
| 8 | + 'items_id' => 'menu_references', |
|
| 9 | + 'icon' => '', |
|
| 10 | + 'items' => [ |
|
| 11 | + [ |
|
| 12 | + 'text' => 'Настройки', |
|
| 13 | + 'url' => 'telegram_main.php?lang=' . LANGUAGE_ID, |
|
| 14 | + 'title' => 'Настройки', |
|
| 15 | + ], |
|
| 16 | + [ |
|
| 17 | + 'text' => 'Инструкция', |
|
| 18 | + 'url' => 'telegram_instruction.php?lang=' . LANGUAGE_ID, |
|
| 19 | + 'title' => 'Регистрация бота', |
|
| 20 | + ], |
|
| 21 | + ], |
|
| 22 | + ], |
|
| 23 | 23 | ]; |
| 24 | 24 | |
| 25 | 25 | return $menu; |
@@ -39,8 +39,8 @@ discard block |
||
| 39 | 39 | </td> |
| 40 | 40 | <td class="adm-detail-content-cell-r"> |
| 41 | 41 | <input name="module_on" |
| 42 | - value="<?=Config::statusModule();?>" |
|
| 43 | - <?=Config::statusModule() ? 'checked="checked"' : '';?> |
|
| 42 | + value="<?=Config::statusModule(); ?>" |
|
| 43 | + <?=Config::statusModule() ? 'checked="checked"' : ''; ?> |
|
| 44 | 44 | type="checkbox" |
| 45 | 45 | class="module_on" |
| 46 | 46 | title=""> |
@@ -53,7 +53,7 @@ discard block |
||
| 53 | 53 | <td class="adm-detail-content-cell-r"> |
| 54 | 54 | <input name="token" |
| 55 | 55 | size="50" |
| 56 | - value="<?=Config::getToken();?>" |
|
| 56 | + value="<?=Config::getToken(); ?>" |
|
| 57 | 57 | type="text" |
| 58 | 58 | class="token" |
| 59 | 59 | title=""> |
@@ -66,9 +66,9 @@ discard block |
||
| 66 | 66 | <td class="adm-detail-content-cell-r"> |
| 67 | 67 | <select name="mail[]" class="mail" title="" size="<?=count($mailTemplates)?>" multiple> |
| 68 | 68 | <?php foreach ($mailTemplates as $item) : ?> |
| 69 | - <option value="<?=$item['EVENT_NAME'];?>" |
|
| 70 | - <?=in_array($item['EVENT_NAME'], Config::getMail(), true) ? 'selected' : '';?>> |
|
| 71 | - <?=$item['NAME'];?> |
|
| 69 | + <option value="<?=$item['EVENT_NAME']; ?>" |
|
| 70 | + <?=in_array($item['EVENT_NAME'], Config::getMail(), true) ? 'selected' : ''; ?>> |
|
| 71 | + <?=$item['NAME']; ?> |
|
| 72 | 72 | </option> |
| 73 | 73 | <?php endforeach; ?> |
| 74 | 74 | </select> |
@@ -142,8 +142,8 @@ discard block |
||
| 142 | 142 | </td> |
| 143 | 143 | <td class="adm-detail-content-cell-r"> |
| 144 | 144 | <input name="proxy_on" |
| 145 | - value="<?=Config::statusProxy();?>" |
|
| 146 | - <?=Config::statusProxy() ? 'checked="checked"' : '';?> |
|
| 145 | + value="<?=Config::statusProxy(); ?>" |
|
| 146 | + <?=Config::statusProxy() ? 'checked="checked"' : ''; ?> |
|
| 147 | 147 | type="checkbox" |
| 148 | 148 | class="proxy_on" |
| 149 | 149 | title=""> |
@@ -156,7 +156,7 @@ discard block |
||
| 156 | 156 | <td class="adm-detail-content-cell-r"> |
| 157 | 157 | <input name="proxy_url" |
| 158 | 158 | size="50" |
| 159 | - value="<?=Config::proxyData()['url'];?>" |
|
| 159 | + value="<?=Config::proxyData()['url']; ?>" |
|
| 160 | 160 | type="text" |
| 161 | 161 | class="proxy_url" |
| 162 | 162 | title=""> |
@@ -169,7 +169,7 @@ discard block |
||
| 169 | 169 | <td class="adm-detail-content-cell-r"> |
| 170 | 170 | <input name="proxy_port" |
| 171 | 171 | size="50" |
| 172 | - value="<?=Config::proxyData()['port'];?>" |
|
| 172 | + value="<?=Config::proxyData()['port']; ?>" |
|
| 173 | 173 | type="text" |
| 174 | 174 | class="proxy_port" |
| 175 | 175 | title=""> |
@@ -182,7 +182,7 @@ discard block |
||
| 182 | 182 | <td class="adm-detail-content-cell-r"> |
| 183 | 183 | <input name="proxy_user" |
| 184 | 184 | size="50" |
| 185 | - value="<?=Config::proxyData()['user'];?>" |
|
| 185 | + value="<?=Config::proxyData()['user']; ?>" |
|
| 186 | 186 | type="text" |
| 187 | 187 | class="proxy_user" |
| 188 | 188 | title=""> |
@@ -195,7 +195,7 @@ discard block |
||
| 195 | 195 | <td class="adm-detail-content-cell-r"> |
| 196 | 196 | <input name="proxy_pass" |
| 197 | 197 | size="50" |
| 198 | - value="<?=Config::proxyData()['pass'];?>" |
|
| 198 | + value="<?=Config::proxyData()['pass']; ?>" |
|
| 199 | 199 | type="text" |
| 200 | 200 | class="proxy_pass" |
| 201 | 201 | title=""> |
@@ -1,5 +1,5 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | $arModuleVersion = [ |
| 3 | - 'VERSION' => '1.0.4', |
|
| 4 | - 'VERSION_DATE' => '2018-10-14' |
|
| 3 | + 'VERSION' => '1.0.4', |
|
| 4 | + 'VERSION_DATE' => '2018-10-14' |
|
| 5 | 5 | ]; |
@@ -10,137 +10,137 @@ |
||
| 10 | 10 | */ |
| 11 | 11 | Class telegram_send extends CModule |
| 12 | 12 | { |
| 13 | - const MODULE_ID = 'telegram.send'; |
|
| 14 | - public $MODULE_ID; |
|
| 15 | - public $MODULE_VERSION; |
|
| 16 | - public $MODULE_VERSION_DATE; |
|
| 17 | - public $MODULE_NAME; |
|
| 18 | - public $MODULE_DESCRIPTION; |
|
| 19 | - public $MODULE_GROUP_RIGHTS; |
|
| 20 | - public $PARTNER_NAME; |
|
| 21 | - public $PARTNER_URI; |
|
| 22 | - private $errors; |
|
| 13 | + const MODULE_ID = 'telegram.send'; |
|
| 14 | + public $MODULE_ID; |
|
| 15 | + public $MODULE_VERSION; |
|
| 16 | + public $MODULE_VERSION_DATE; |
|
| 17 | + public $MODULE_NAME; |
|
| 18 | + public $MODULE_DESCRIPTION; |
|
| 19 | + public $MODULE_GROUP_RIGHTS; |
|
| 20 | + public $PARTNER_NAME; |
|
| 21 | + public $PARTNER_URI; |
|
| 22 | + private $errors; |
|
| 23 | 23 | |
| 24 | - /** |
|
| 25 | - * telegram_send constructor. |
|
| 26 | - */ |
|
| 27 | - public function __construct() |
|
| 28 | - { |
|
| 29 | - $arModuleVersion = []; |
|
| 30 | - include __DIR__ . '/version.php'; |
|
| 31 | - $this->MODULE_NAME = 'Телеграм'; |
|
| 32 | - $this->MODULE_DESCRIPTION = 'Отправка почтовых сообщений в телеграм'; |
|
| 33 | - $this->MODULE_ID = 'telegram.send'; |
|
| 34 | - $this->MODULE_VERSION = $arModuleVersion['VERSION']; |
|
| 35 | - $this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE']; |
|
| 36 | - $this->MODULE_GROUP_RIGHTS = 'N'; |
|
| 37 | - $this->PARTNER_NAME = 'Varrcan'; |
|
| 38 | - $this->PARTNER_URI = 'https://varrcan.me'; |
|
| 39 | - } |
|
| 24 | + /** |
|
| 25 | + * telegram_send constructor. |
|
| 26 | + */ |
|
| 27 | + public function __construct() |
|
| 28 | + { |
|
| 29 | + $arModuleVersion = []; |
|
| 30 | + include __DIR__ . '/version.php'; |
|
| 31 | + $this->MODULE_NAME = 'Телеграм'; |
|
| 32 | + $this->MODULE_DESCRIPTION = 'Отправка почтовых сообщений в телеграм'; |
|
| 33 | + $this->MODULE_ID = 'telegram.send'; |
|
| 34 | + $this->MODULE_VERSION = $arModuleVersion['VERSION']; |
|
| 35 | + $this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE']; |
|
| 36 | + $this->MODULE_GROUP_RIGHTS = 'N'; |
|
| 37 | + $this->PARTNER_NAME = 'Varrcan'; |
|
| 38 | + $this->PARTNER_URI = 'https://varrcan.me'; |
|
| 39 | + } |
|
| 40 | 40 | |
| 41 | - /** |
|
| 42 | - * Действия при установке модуля |
|
| 43 | - * @return bool|void |
|
| 44 | - */ |
|
| 45 | - public function doInstall() |
|
| 46 | - { |
|
| 47 | - global $USER; |
|
| 48 | - if ($USER->IsAdmin()) { |
|
| 49 | - ModuleManager::registerModule($this->MODULE_ID); |
|
| 50 | - $this->InstallEvents(); |
|
| 51 | - $this->InstallFiles(); |
|
| 52 | - } |
|
| 53 | - } |
|
| 41 | + /** |
|
| 42 | + * Действия при установке модуля |
|
| 43 | + * @return bool|void |
|
| 44 | + */ |
|
| 45 | + public function doInstall() |
|
| 46 | + { |
|
| 47 | + global $USER; |
|
| 48 | + if ($USER->IsAdmin()) { |
|
| 49 | + ModuleManager::registerModule($this->MODULE_ID); |
|
| 50 | + $this->InstallEvents(); |
|
| 51 | + $this->InstallFiles(); |
|
| 52 | + } |
|
| 53 | + } |
|
| 54 | 54 | |
| 55 | - /** |
|
| 56 | - * Регистрация событий |
|
| 57 | - * @return bool|void |
|
| 58 | - */ |
|
| 59 | - public function InstallEvents() |
|
| 60 | - { |
|
| 61 | - $eventManager = EventManager::getInstance(); |
|
| 62 | - $eventManager->registerEventHandler( |
|
| 63 | - 'main', |
|
| 64 | - 'OnBeforeEventSend', |
|
| 65 | - $this->MODULE_ID, |
|
| 66 | - 'Telegram\\Send\\Main', |
|
| 67 | - 'getEventSend' |
|
| 68 | - ); |
|
| 69 | - } |
|
| 55 | + /** |
|
| 56 | + * Регистрация событий |
|
| 57 | + * @return bool|void |
|
| 58 | + */ |
|
| 59 | + public function InstallEvents() |
|
| 60 | + { |
|
| 61 | + $eventManager = EventManager::getInstance(); |
|
| 62 | + $eventManager->registerEventHandler( |
|
| 63 | + 'main', |
|
| 64 | + 'OnBeforeEventSend', |
|
| 65 | + $this->MODULE_ID, |
|
| 66 | + 'Telegram\\Send\\Main', |
|
| 67 | + 'getEventSend' |
|
| 68 | + ); |
|
| 69 | + } |
|
| 70 | 70 | |
| 71 | - /** |
|
| 72 | - * Копирование файлов |
|
| 73 | - * |
|
| 74 | - * @param array $arParams |
|
| 75 | - */ |
|
| 76 | - public function InstallFiles($arParams = []) |
|
| 77 | - { |
|
| 78 | - if (!is_dir($_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/' . self::MODULE_ID) && !mkdir($concurrentDirectory = |
|
| 79 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/' . self::MODULE_ID) && !is_dir($concurrentDirectory)) { |
|
| 80 | - throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory)); |
|
| 81 | - } |
|
| 82 | - CopyDirFiles( |
|
| 83 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . self::MODULE_ID . '/install/admin', |
|
| 84 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin', |
|
| 85 | - true, |
|
| 86 | - true |
|
| 87 | - ); |
|
| 88 | - CopyDirFiles( |
|
| 89 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . self::MODULE_ID . '/install/js/', |
|
| 90 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/', |
|
| 91 | - true, |
|
| 92 | - true |
|
| 93 | - ); |
|
| 94 | - } |
|
| 71 | + /** |
|
| 72 | + * Копирование файлов |
|
| 73 | + * |
|
| 74 | + * @param array $arParams |
|
| 75 | + */ |
|
| 76 | + public function InstallFiles($arParams = []) |
|
| 77 | + { |
|
| 78 | + if (!is_dir($_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/' . self::MODULE_ID) && !mkdir($concurrentDirectory = |
|
| 79 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/' . self::MODULE_ID) && !is_dir($concurrentDirectory)) { |
|
| 80 | + throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory)); |
|
| 81 | + } |
|
| 82 | + CopyDirFiles( |
|
| 83 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . self::MODULE_ID . '/install/admin', |
|
| 84 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin', |
|
| 85 | + true, |
|
| 86 | + true |
|
| 87 | + ); |
|
| 88 | + CopyDirFiles( |
|
| 89 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . self::MODULE_ID . '/install/js/', |
|
| 90 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/', |
|
| 91 | + true, |
|
| 92 | + true |
|
| 93 | + ); |
|
| 94 | + } |
|
| 95 | 95 | |
| 96 | - /** |
|
| 97 | - * Действия при удалении модуля |
|
| 98 | - */ |
|
| 99 | - public function doUninstall() |
|
| 100 | - { |
|
| 101 | - $this->UnInstallEvents(); |
|
| 102 | - $this->UnInstallFiles(); |
|
| 103 | - $this->UnInstallDB(); |
|
| 104 | - ModuleManager::unregisterModule($this->MODULE_ID); |
|
| 105 | - } |
|
| 96 | + /** |
|
| 97 | + * Действия при удалении модуля |
|
| 98 | + */ |
|
| 99 | + public function doUninstall() |
|
| 100 | + { |
|
| 101 | + $this->UnInstallEvents(); |
|
| 102 | + $this->UnInstallFiles(); |
|
| 103 | + $this->UnInstallDB(); |
|
| 104 | + ModuleManager::unregisterModule($this->MODULE_ID); |
|
| 105 | + } |
|
| 106 | 106 | |
| 107 | - /** |
|
| 108 | - * Удаление событий |
|
| 109 | - * @return bool|void |
|
| 110 | - */ |
|
| 111 | - public function UnInstallEvents() |
|
| 112 | - { |
|
| 107 | + /** |
|
| 108 | + * Удаление событий |
|
| 109 | + * @return bool|void |
|
| 110 | + */ |
|
| 111 | + public function UnInstallEvents() |
|
| 112 | + { |
|
| 113 | 113 | |
| 114 | - $eventManager = EventManager::getInstance(); |
|
| 115 | - $eventManager->unRegisterEventHandler( |
|
| 116 | - 'main', |
|
| 117 | - 'OnBeforeEventSend', |
|
| 118 | - $this->MODULE_ID, |
|
| 119 | - 'Telegram\\Send\\Main', |
|
| 120 | - 'getEventSend' |
|
| 121 | - ); |
|
| 122 | - } |
|
| 114 | + $eventManager = EventManager::getInstance(); |
|
| 115 | + $eventManager->unRegisterEventHandler( |
|
| 116 | + 'main', |
|
| 117 | + 'OnBeforeEventSend', |
|
| 118 | + $this->MODULE_ID, |
|
| 119 | + 'Telegram\\Send\\Main', |
|
| 120 | + 'getEventSend' |
|
| 121 | + ); |
|
| 122 | + } |
|
| 123 | 123 | |
| 124 | - /** |
|
| 125 | - * Удаление файлов |
|
| 126 | - * @return bool|void |
|
| 127 | - */ |
|
| 128 | - public function UnInstallFiles() |
|
| 129 | - { |
|
| 130 | - DeleteDirFilesEx("/bitrix/admin/telegram_main.php"); |
|
| 131 | - DeleteDirFilesEx("/bitrix/js/telegram.send/"); |
|
| 132 | - } |
|
| 124 | + /** |
|
| 125 | + * Удаление файлов |
|
| 126 | + * @return bool|void |
|
| 127 | + */ |
|
| 128 | + public function UnInstallFiles() |
|
| 129 | + { |
|
| 130 | + DeleteDirFilesEx("/bitrix/admin/telegram_main.php"); |
|
| 131 | + DeleteDirFilesEx("/bitrix/js/telegram.send/"); |
|
| 132 | + } |
|
| 133 | 133 | |
| 134 | - /** |
|
| 135 | - * Удаление таблицы настроек |
|
| 136 | - * |
|
| 137 | - * @param array $arParams |
|
| 138 | - * |
|
| 139 | - * @return bool|void |
|
| 140 | - * @throws \Bitrix\Main\Db\SqlQueryException |
|
| 141 | - */ |
|
| 142 | - public function UnInstallDB($arParams = []) |
|
| 143 | - { |
|
| 144 | - Application::getConnection()->query("DELETE FROM b_option WHERE `MODULE_ID`='{$this->MODULE_ID}'"); |
|
| 145 | - } |
|
| 134 | + /** |
|
| 135 | + * Удаление таблицы настроек |
|
| 136 | + * |
|
| 137 | + * @param array $arParams |
|
| 138 | + * |
|
| 139 | + * @return bool|void |
|
| 140 | + * @throws \Bitrix\Main\Db\SqlQueryException |
|
| 141 | + */ |
|
| 142 | + public function UnInstallDB($arParams = []) |
|
| 143 | + { |
|
| 144 | + Application::getConnection()->query("DELETE FROM b_option WHERE `MODULE_ID`='{$this->MODULE_ID}'"); |
|
| 145 | + } |
|
| 146 | 146 | } |
@@ -2,12 +2,12 @@ |
||
| 2 | 2 | defined('B_PROLOG_INCLUDED') and (B_PROLOG_INCLUDED === true) or die(); |
| 3 | 3 | |
| 4 | 4 | if (file_exists(__DIR__ . '/reinstalljs')) { |
| 5 | - CopyDirFiles( |
|
| 6 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/telegram.send/install/js/', |
|
| 7 | - $_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/', |
|
| 8 | - true, |
|
| 9 | - true |
|
| 10 | - ); |
|
| 5 | + CopyDirFiles( |
|
| 6 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/telegram.send/install/js/', |
|
| 7 | + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/', |
|
| 8 | + true, |
|
| 9 | + true |
|
| 10 | + ); |
|
| 11 | 11 | |
| 12 | - unlink(__DIR__ . '/reinstalljs'); |
|
| 12 | + unlink(__DIR__ . '/reinstalljs'); |
|
| 13 | 13 | } |
@@ -11,61 +11,61 @@ |
||
| 11 | 11 | */ |
| 12 | 12 | class Main |
| 13 | 13 | { |
| 14 | - /** |
|
| 15 | - * Действие после отправки письма |
|
| 16 | - * |
|
| 17 | - * @param $arFields |
|
| 18 | - * @param $arTemplate |
|
| 19 | - */ |
|
| 20 | - public static function getEventSend(&$arFields, &$arTemplate) |
|
| 21 | - { |
|
| 22 | - if ($arFields && $arTemplate && Config::statusModule() == 1) { |
|
| 23 | - if (\in_array($arTemplate['EVENT_NAME'], Config::getMail(), true)) { |
|
| 24 | - try { |
|
| 25 | - $message = self::delTags($arTemplate['MESSAGE']); |
|
| 26 | - foreach ($arFields + self::getSiteParam() as $key => $field) { |
|
| 27 | - $message = preg_replace('/#' . $key . '#/', $field, $message); |
|
| 28 | - } |
|
| 29 | - (new Sending)->processMessage($message); |
|
| 30 | - } catch (\Exception $e) { |
|
| 31 | - Debug::writeToFile($e->getMessage(), 'getEventSend', 'telegram-log'); |
|
| 32 | - } |
|
| 33 | - } |
|
| 34 | - } |
|
| 35 | - } |
|
| 14 | + /** |
|
| 15 | + * Действие после отправки письма |
|
| 16 | + * |
|
| 17 | + * @param $arFields |
|
| 18 | + * @param $arTemplate |
|
| 19 | + */ |
|
| 20 | + public static function getEventSend(&$arFields, &$arTemplate) |
|
| 21 | + { |
|
| 22 | + if ($arFields && $arTemplate && Config::statusModule() == 1) { |
|
| 23 | + if (\in_array($arTemplate['EVENT_NAME'], Config::getMail(), true)) { |
|
| 24 | + try { |
|
| 25 | + $message = self::delTags($arTemplate['MESSAGE']); |
|
| 26 | + foreach ($arFields + self::getSiteParam() as $key => $field) { |
|
| 27 | + $message = preg_replace('/#' . $key . '#/', $field, $message); |
|
| 28 | + } |
|
| 29 | + (new Sending)->processMessage($message); |
|
| 30 | + } catch (\Exception $e) { |
|
| 31 | + Debug::writeToFile($e->getMessage(), 'getEventSend', 'telegram-log'); |
|
| 32 | + } |
|
| 33 | + } |
|
| 34 | + } |
|
| 35 | + } |
|
| 36 | 36 | |
| 37 | - /** |
|
| 38 | - * Удаление html тегов из письма |
|
| 39 | - * |
|
| 40 | - * @param $text |
|
| 41 | - * |
|
| 42 | - * @return mixed |
|
| 43 | - */ |
|
| 44 | - public static function delTags($text) |
|
| 45 | - { |
|
| 46 | - return str_replace(' ', ' ', preg_replace('/\s{2,}/', "\n", strip_tags($text))); |
|
| 47 | - } |
|
| 37 | + /** |
|
| 38 | + * Удаление html тегов из письма |
|
| 39 | + * |
|
| 40 | + * @param $text |
|
| 41 | + * |
|
| 42 | + * @return mixed |
|
| 43 | + */ |
|
| 44 | + public static function delTags($text) |
|
| 45 | + { |
|
| 46 | + return str_replace(' ', ' ', preg_replace('/\s{2,}/', "\n", strip_tags($text))); |
|
| 47 | + } |
|
| 48 | 48 | |
| 49 | - /** |
|
| 50 | - * Получение стандартных полей письма |
|
| 51 | - * @return array |
|
| 52 | - */ |
|
| 53 | - public static function getSiteParam():array |
|
| 54 | - { |
|
| 55 | - $defaultParam = []; |
|
| 56 | - $getParam = SiteTable::getList([ |
|
| 57 | - 'select' => ['EMAIL', 'NAME', 'SERVER_NAME'], |
|
| 58 | - 'filter' => ['ACTIVE' => 'Y'] |
|
| 59 | - ]); |
|
| 60 | - $siteParam = $getParam->fetch(); |
|
| 61 | - if ($siteParam) { |
|
| 62 | - $defaultParam = [ |
|
| 63 | - 'DEFAULT_EMAIL_FROM' => $siteParam['EMAIL'], |
|
| 64 | - 'SITE_NAME' => $siteParam['NAME'], |
|
| 65 | - 'SERVER_NAME' => $siteParam['SERVER_NAME'] |
|
| 66 | - ]; |
|
| 67 | - } |
|
| 49 | + /** |
|
| 50 | + * Получение стандартных полей письма |
|
| 51 | + * @return array |
|
| 52 | + */ |
|
| 53 | + public static function getSiteParam():array |
|
| 54 | + { |
|
| 55 | + $defaultParam = []; |
|
| 56 | + $getParam = SiteTable::getList([ |
|
| 57 | + 'select' => ['EMAIL', 'NAME', 'SERVER_NAME'], |
|
| 58 | + 'filter' => ['ACTIVE' => 'Y'] |
|
| 59 | + ]); |
|
| 60 | + $siteParam = $getParam->fetch(); |
|
| 61 | + if ($siteParam) { |
|
| 62 | + $defaultParam = [ |
|
| 63 | + 'DEFAULT_EMAIL_FROM' => $siteParam['EMAIL'], |
|
| 64 | + 'SITE_NAME' => $siteParam['NAME'], |
|
| 65 | + 'SERVER_NAME' => $siteParam['SERVER_NAME'] |
|
| 66 | + ]; |
|
| 67 | + } |
|
| 68 | 68 | |
| 69 | - return $defaultParam; |
|
| 70 | - } |
|
| 69 | + return $defaultParam; |
|
| 70 | + } |
|
| 71 | 71 | } // |
@@ -10,116 +10,116 @@ |
||
| 10 | 10 | */ |
| 11 | 11 | class Sending |
| 12 | 12 | { |
| 13 | - private $apiKey; |
|
| 14 | - private $chatId; |
|
| 15 | - private $arUpdates; |
|
| 16 | - private $apiBaseUri = 'https://api.telegram.org/bot'; |
|
| 13 | + private $apiKey; |
|
| 14 | + private $chatId; |
|
| 15 | + private $arUpdates; |
|
| 16 | + private $apiBaseUri = 'https://api.telegram.org/bot'; |
|
| 17 | 17 | |
| 18 | - /** |
|
| 19 | - * Sending constructor. |
|
| 20 | - */ |
|
| 21 | - public function __construct() |
|
| 22 | - { |
|
| 23 | - $this->apiKey = Config::getToken(); |
|
| 24 | - $this->chatId = Config::getUser(); |
|
| 25 | - } |
|
| 18 | + /** |
|
| 19 | + * Sending constructor. |
|
| 20 | + */ |
|
| 21 | + public function __construct() |
|
| 22 | + { |
|
| 23 | + $this->apiKey = Config::getToken(); |
|
| 24 | + $this->chatId = Config::getUser(); |
|
| 25 | + } |
|
| 26 | 26 | |
| 27 | - /** |
|
| 28 | - * Отправка сообщения |
|
| 29 | - * |
|
| 30 | - * @param $message |
|
| 31 | - */ |
|
| 32 | - public function processMessage($message) |
|
| 33 | - { |
|
| 34 | - foreach ($this->chatId as $key => $value) { |
|
| 35 | - $this->apiRequest('sendMessage', ['chat_id' => $key, 'text' => $message]); |
|
| 36 | - } |
|
| 37 | - } |
|
| 27 | + /** |
|
| 28 | + * Отправка сообщения |
|
| 29 | + * |
|
| 30 | + * @param $message |
|
| 31 | + */ |
|
| 32 | + public function processMessage($message) |
|
| 33 | + { |
|
| 34 | + foreach ($this->chatId as $key => $value) { |
|
| 35 | + $this->apiRequest('sendMessage', ['chat_id' => $key, 'text' => $message]); |
|
| 36 | + } |
|
| 37 | + } |
|
| 38 | 38 | |
| 39 | - /** |
|
| 40 | - * Подготовка curl запроса |
|
| 41 | - * |
|
| 42 | - * @param $method |
|
| 43 | - * @param bool $parameters |
|
| 44 | - * |
|
| 45 | - * @return mixed |
|
| 46 | - */ |
|
| 47 | - public function apiRequest($method, $parameters = false) |
|
| 48 | - { |
|
| 49 | - $handle = curl_init(); |
|
| 50 | - $options = [ |
|
| 51 | - CURLOPT_URL => $this->apiBaseUri . $this->apiKey . '/' . $method . '?' . http_build_query($parameters), |
|
| 52 | - CURLOPT_RETURNTRANSFER => true, |
|
| 53 | - CURLOPT_FOLLOWLOCATION => 1, |
|
| 54 | - CURLOPT_CONNECTTIMEOUT => 5, |
|
| 55 | - CURLOPT_TIMEOUT => 30, |
|
| 56 | - CURLOPT_POST => true, |
|
| 57 | - CURLOPT_FRESH_CONNECT => true, |
|
| 58 | - CURLOPT_UNRESTRICTED_AUTH => true, |
|
| 59 | - ]; |
|
| 39 | + /** |
|
| 40 | + * Подготовка curl запроса |
|
| 41 | + * |
|
| 42 | + * @param $method |
|
| 43 | + * @param bool $parameters |
|
| 44 | + * |
|
| 45 | + * @return mixed |
|
| 46 | + */ |
|
| 47 | + public function apiRequest($method, $parameters = false) |
|
| 48 | + { |
|
| 49 | + $handle = curl_init(); |
|
| 50 | + $options = [ |
|
| 51 | + CURLOPT_URL => $this->apiBaseUri . $this->apiKey . '/' . $method . '?' . http_build_query($parameters), |
|
| 52 | + CURLOPT_RETURNTRANSFER => true, |
|
| 53 | + CURLOPT_FOLLOWLOCATION => 1, |
|
| 54 | + CURLOPT_CONNECTTIMEOUT => 5, |
|
| 55 | + CURLOPT_TIMEOUT => 30, |
|
| 56 | + CURLOPT_POST => true, |
|
| 57 | + CURLOPT_FRESH_CONNECT => true, |
|
| 58 | + CURLOPT_UNRESTRICTED_AUTH => true, |
|
| 59 | + ]; |
|
| 60 | 60 | |
| 61 | - if (Config::statusProxy()) { |
|
| 62 | - $proxy = Config::proxyData(); |
|
| 61 | + if (Config::statusProxy()) { |
|
| 62 | + $proxy = Config::proxyData(); |
|
| 63 | 63 | |
| 64 | - //TODO: why not work? |
|
| 65 | - //if (filter_var($proxy['url'], FILTER_VALIDATE_IP)) { |
|
| 66 | - // $options[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5; |
|
| 67 | - //} else { |
|
| 68 | - // $options[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5_HOSTNAME; |
|
| 69 | - //} |
|
| 64 | + //TODO: why not work? |
|
| 65 | + //if (filter_var($proxy['url'], FILTER_VALIDATE_IP)) { |
|
| 66 | + // $options[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5; |
|
| 67 | + //} else { |
|
| 68 | + // $options[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5_HOSTNAME; |
|
| 69 | + //} |
|
| 70 | 70 | |
| 71 | - $options += [ |
|
| 72 | - CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5_HOSTNAME, |
|
| 73 | - CURLOPT_PROXY => $proxy['url'], |
|
| 74 | - CURLOPT_PROXYPORT => $proxy['port'], |
|
| 75 | - CURLOPT_PROXYUSERNAME => $proxy['user'], |
|
| 76 | - CURLOPT_PROXYPASSWORD => $proxy['pass'], |
|
| 77 | - ]; |
|
| 78 | - } |
|
| 71 | + $options += [ |
|
| 72 | + CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5_HOSTNAME, |
|
| 73 | + CURLOPT_PROXY => $proxy['url'], |
|
| 74 | + CURLOPT_PROXYPORT => $proxy['port'], |
|
| 75 | + CURLOPT_PROXYUSERNAME => $proxy['user'], |
|
| 76 | + CURLOPT_PROXYPASSWORD => $proxy['pass'], |
|
| 77 | + ]; |
|
| 78 | + } |
|
| 79 | 79 | |
| 80 | - curl_setopt_array($handle, $options); |
|
| 80 | + curl_setopt_array($handle, $options); |
|
| 81 | 81 | |
| 82 | - return $this->execCurlRequest($handle); |
|
| 83 | - } |
|
| 82 | + return $this->execCurlRequest($handle); |
|
| 83 | + } |
|
| 84 | 84 | |
| 85 | - /** |
|
| 86 | - * Отправка curl запроса |
|
| 87 | - * |
|
| 88 | - * @param $handle |
|
| 89 | - * |
|
| 90 | - * @return mixed |
|
| 91 | - */ |
|
| 92 | - public function execCurlRequest($handle) |
|
| 93 | - { |
|
| 94 | - $response = curl_exec($handle); |
|
| 95 | - if ((int)curl_getinfo($handle, CURLINFO_HTTP_CODE) === 200) { |
|
| 96 | - $response = json_decode($response, true)['result']; |
|
| 97 | - } else { |
|
| 98 | - Debug::writeToFile(curl_getinfo($handle), 'execCurlRequest', 'telegram-log'); |
|
| 99 | - curl_close($handle); |
|
| 100 | - } |
|
| 85 | + /** |
|
| 86 | + * Отправка curl запроса |
|
| 87 | + * |
|
| 88 | + * @param $handle |
|
| 89 | + * |
|
| 90 | + * @return mixed |
|
| 91 | + */ |
|
| 92 | + public function execCurlRequest($handle) |
|
| 93 | + { |
|
| 94 | + $response = curl_exec($handle); |
|
| 95 | + if ((int)curl_getinfo($handle, CURLINFO_HTTP_CODE) === 200) { |
|
| 96 | + $response = json_decode($response, true)['result']; |
|
| 97 | + } else { |
|
| 98 | + Debug::writeToFile(curl_getinfo($handle), 'execCurlRequest', 'telegram-log'); |
|
| 99 | + curl_close($handle); |
|
| 100 | + } |
|
| 101 | 101 | |
| 102 | - return $response; |
|
| 103 | - } |
|
| 102 | + return $response; |
|
| 103 | + } |
|
| 104 | 104 | |
| 105 | - /** |
|
| 106 | - * Обновление входящих запросов |
|
| 107 | - * |
|
| 108 | - * @param int $offset |
|
| 109 | - * @param int $limit |
|
| 110 | - * |
|
| 111 | - * @return mixed |
|
| 112 | - */ |
|
| 113 | - public function updatesUser($offset = 0, $limit = 100) |
|
| 114 | - { |
|
| 115 | - $paramRequest = ['offset' => $offset, 'limit' => $limit]; |
|
| 116 | - $this->arUpdates = $this->apiRequest('getUpdates', $paramRequest); |
|
| 117 | - if (\count($this->arUpdates) >= 1) { |
|
| 118 | - $lastElementId = $this->arUpdates[\count($this->arUpdates) - 1]['update_id'] + 1; |
|
| 119 | - $paramRequest = ['offset' => $lastElementId, 'limit' => '1']; |
|
| 120 | - $this->apiRequest('getUpdates', $paramRequest); |
|
| 121 | - } |
|
| 105 | + /** |
|
| 106 | + * Обновление входящих запросов |
|
| 107 | + * |
|
| 108 | + * @param int $offset |
|
| 109 | + * @param int $limit |
|
| 110 | + * |
|
| 111 | + * @return mixed |
|
| 112 | + */ |
|
| 113 | + public function updatesUser($offset = 0, $limit = 100) |
|
| 114 | + { |
|
| 115 | + $paramRequest = ['offset' => $offset, 'limit' => $limit]; |
|
| 116 | + $this->arUpdates = $this->apiRequest('getUpdates', $paramRequest); |
|
| 117 | + if (\count($this->arUpdates) >= 1) { |
|
| 118 | + $lastElementId = $this->arUpdates[\count($this->arUpdates) - 1]['update_id'] + 1; |
|
| 119 | + $paramRequest = ['offset' => $lastElementId, 'limit' => '1']; |
|
| 120 | + $this->apiRequest('getUpdates', $paramRequest); |
|
| 121 | + } |
|
| 122 | 122 | |
| 123 | - return $this->arUpdates; |
|
| 124 | - } |
|
| 123 | + return $this->arUpdates; |
|
| 124 | + } |
|
| 125 | 125 | } // |
@@ -92,7 +92,7 @@ |
||
| 92 | 92 | public function execCurlRequest($handle) |
| 93 | 93 | { |
| 94 | 94 | $response = curl_exec($handle); |
| 95 | - if ((int)curl_getinfo($handle, CURLINFO_HTTP_CODE) === 200) { |
|
| 95 | + if ((int) curl_getinfo($handle, CURLINFO_HTTP_CODE) === 200) { |
|
| 96 | 96 | $response = json_decode($response, true)['result']; |
| 97 | 97 | } else { |
| 98 | 98 | Debug::writeToFile(curl_getinfo($handle), 'execCurlRequest', 'telegram-log'); |
@@ -12,214 +12,214 @@ |
||
| 12 | 12 | */ |
| 13 | 13 | class Config |
| 14 | 14 | { |
| 15 | - public static $module_id = 'telegram.send'; |
|
| 16 | - public static $request; |
|
| 17 | - public static $response = [ |
|
| 18 | - 'updates' => false, |
|
| 19 | - 'message' => false |
|
| 20 | - ]; |
|
| 21 | - |
|
| 22 | - /** |
|
| 23 | - * Request |
|
| 24 | - */ |
|
| 25 | - public static function processRequest() |
|
| 26 | - { |
|
| 27 | - self::$request = Context::getCurrent()->getRequest(); |
|
| 28 | - $funcName = self::$request->getPost('funcName'); |
|
| 29 | - if ($funcName) { |
|
| 30 | - self::$funcName(); |
|
| 31 | - } |
|
| 32 | - } |
|
| 33 | - |
|
| 34 | - /** |
|
| 35 | - * Получение всех почтовых шаблонов |
|
| 36 | - * @return array |
|
| 37 | - */ |
|
| 38 | - public static function getMailTemplates():array |
|
| 39 | - { |
|
| 40 | - $getRow = EventTypeTable::getList([ |
|
| 41 | - 'select' => ['ID', 'EVENT_NAME', 'NAME'], |
|
| 42 | - 'filter' => ['=LID' => LANGUAGE_ID], |
|
| 43 | - 'order' => ['EVENT_NAME' => 'ASC'] |
|
| 44 | - ]); |
|
| 45 | - |
|
| 46 | - return $getRow->fetchAll(); |
|
| 47 | - } |
|
| 48 | - |
|
| 49 | - /** |
|
| 50 | - * Получение входящих запросов |
|
| 51 | - */ |
|
| 52 | - public static function getUpdates() |
|
| 53 | - { |
|
| 54 | - $arReturn = []; |
|
| 55 | - $arUpdates = (new Sending)->updatesUser()[0]; |
|
| 56 | - if ($arUpdates['message']['text'] === '/start' && $arUpdates['message']['chat']['id']) { |
|
| 57 | - $arUsers = self::getUser(); |
|
| 58 | - if (!array_key_exists($arUpdates['message']['chat']['id'], $arUsers)) { |
|
| 59 | - $arReturn = $arUpdates['message']['chat']; |
|
| 60 | - } |
|
| 61 | - } |
|
| 62 | - if (!$arReturn) { |
|
| 63 | - self::$response['message'] = self::setNote('Входящих запросов нет', 'ERROR'); |
|
| 64 | - } |
|
| 65 | - self::$response['updates'] = $arReturn; |
|
| 66 | - self::sendResponse(); |
|
| 67 | - } |
|
| 68 | - |
|
| 69 | - /** |
|
| 70 | - * Добавленные пользователи |
|
| 71 | - * @return mixed |
|
| 72 | - */ |
|
| 73 | - public static function getUser() |
|
| 74 | - { |
|
| 75 | - return unserialize(Option::get(self::$module_id, 'user')); |
|
| 76 | - } |
|
| 77 | - |
|
| 78 | - /** |
|
| 79 | - * Генерация уведомления |
|
| 80 | - * |
|
| 81 | - * @param $message |
|
| 82 | - * @param $type "ERROR"|"OK"|"PROGRESS" |
|
| 83 | - * |
|
| 84 | - * @return string |
|
| 85 | - */ |
|
| 86 | - public static function setNote($message, $type):string |
|
| 87 | - { |
|
| 88 | - return (new \CAdminMessage(['MESSAGE' => $message, 'TYPE' => $type]))->Show(); |
|
| 89 | - } |
|
| 90 | - |
|
| 91 | - /** |
|
| 92 | - * Отправка json ответа |
|
| 93 | - */ |
|
| 94 | - public static function sendResponse() |
|
| 95 | - { |
|
| 96 | - header('Content-Type: application/json'); |
|
| 97 | - die(json_encode(self::$response)); |
|
| 98 | - } |
|
| 99 | - |
|
| 100 | - /** |
|
| 101 | - * Добавление пользователя |
|
| 102 | - */ |
|
| 103 | - public static function setUser() |
|
| 104 | - { |
|
| 105 | - $fields = self::$request->getPost('fields'); |
|
| 106 | - if ($fields) { |
|
| 107 | - $savedUser = self::getUser(); |
|
| 108 | - if (!array_key_exists($fields['id'], $savedUser)) { |
|
| 109 | - $newUser = [ |
|
| 110 | - $fields['id'] => [ |
|
| 111 | - 'nickname' => $fields['nickname'], |
|
| 112 | - 'username' => $fields['username'] |
|
| 113 | - ] |
|
| 114 | - ]; |
|
| 115 | - if ($savedUser) { |
|
| 116 | - $newUser += $savedUser; |
|
| 117 | - } |
|
| 118 | - self::setOption('user', $newUser); |
|
| 119 | - self::$response['message'] = self::setNote('Пользователь добавлен', 'OK'); |
|
| 120 | - } else { |
|
| 121 | - self::$response['message'] = self::setNote('Пользователь уже существует', 'ERROR'); |
|
| 122 | - } |
|
| 123 | - } |
|
| 124 | - self::sendResponse(); |
|
| 125 | - } |
|
| 126 | - |
|
| 127 | - /** |
|
| 128 | - * Запись данных в базу |
|
| 129 | - * |
|
| 130 | - * @param $name |
|
| 131 | - * @param $option |
|
| 132 | - * @param bool $serialize |
|
| 133 | - */ |
|
| 134 | - public static function setOption($name, $option, $serialize = true) |
|
| 135 | - { |
|
| 136 | - Option::set(self::$module_id, $name, $serialize ? serialize($option) : $option); |
|
| 137 | - } |
|
| 138 | - |
|
| 139 | - /** |
|
| 140 | - * Удаление пользователя |
|
| 141 | - */ |
|
| 142 | - public static function deleteUser() |
|
| 143 | - { |
|
| 144 | - $fields = self::$request->getPost('fields'); |
|
| 145 | - if ($fields) { |
|
| 146 | - $savedUser = self::getUser(); |
|
| 147 | - if (array_key_exists($fields['id'], $savedUser)) { |
|
| 148 | - unset($savedUser[$fields['id']]); |
|
| 149 | - self::setOption('user', $savedUser); |
|
| 150 | - self::$response['message'] = self::setNote('Пользователь удален', 'OK'); |
|
| 151 | - } else { |
|
| 152 | - self::$response['message'] = self::setNote('Этот пользователь уже удален', 'ERROR'); |
|
| 153 | - } |
|
| 154 | - } |
|
| 155 | - self::sendResponse(); |
|
| 156 | - } |
|
| 157 | - |
|
| 158 | - /** |
|
| 159 | - * Сохранение настроек |
|
| 160 | - */ |
|
| 161 | - public static function saveConfig() |
|
| 162 | - { |
|
| 163 | - $fields = self::$request->getPost('fields'); |
|
| 164 | - if ($fields) { |
|
| 165 | - foreach ($fields as $field => $value) { |
|
| 166 | - if (\is_array($value)) { |
|
| 167 | - self::setOption($field, $value); |
|
| 168 | - } else { |
|
| 169 | - self::setOption($field, $value, false); |
|
| 170 | - } |
|
| 171 | - } |
|
| 172 | - } |
|
| 173 | - if ($fields['module_on'] === '1') { |
|
| 174 | - self::$response['message'] = self::setNote('Настройки сохранены', 'OK'); |
|
| 175 | - } else { |
|
| 176 | - self::$response['message'] = self::setNote('Модуль отключен', 'ERROR'); |
|
| 177 | - } |
|
| 178 | - self::sendResponse(); |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - /** |
|
| 182 | - * Активность модуля |
|
| 183 | - * @return string |
|
| 184 | - */ |
|
| 185 | - public static function statusModule():string |
|
| 186 | - { |
|
| 187 | - return Option::get(self::$module_id, 'module_on'); |
|
| 188 | - } |
|
| 189 | - |
|
| 190 | - /** |
|
| 191 | - * Токен бота |
|
| 192 | - * @return string |
|
| 193 | - */ |
|
| 194 | - public static function getToken():string |
|
| 195 | - { |
|
| 196 | - return Option::get(self::$module_id, 'token'); |
|
| 197 | - } |
|
| 198 | - |
|
| 199 | - /** |
|
| 200 | - * Почтовые шаблоны |
|
| 201 | - * @return mixed |
|
| 202 | - */ |
|
| 203 | - public static function getMail() |
|
| 204 | - { |
|
| 205 | - return unserialize(Option::get(self::$module_id, 'mail')); |
|
| 206 | - } |
|
| 207 | - |
|
| 208 | - /** |
|
| 209 | - * Активность прокси |
|
| 210 | - * @return mixed |
|
| 211 | - */ |
|
| 212 | - public static function statusProxy() |
|
| 213 | - { |
|
| 214 | - return Option::get(self::$module_id, 'proxy_on'); |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - /** |
|
| 218 | - * Данные прокси |
|
| 219 | - * @return mixed |
|
| 220 | - */ |
|
| 221 | - public static function proxyData() |
|
| 222 | - { |
|
| 223 | - return unserialize(Option::get(self::$module_id, 'proxy')); |
|
| 224 | - } |
|
| 15 | + public static $module_id = 'telegram.send'; |
|
| 16 | + public static $request; |
|
| 17 | + public static $response = [ |
|
| 18 | + 'updates' => false, |
|
| 19 | + 'message' => false |
|
| 20 | + ]; |
|
| 21 | + |
|
| 22 | + /** |
|
| 23 | + * Request |
|
| 24 | + */ |
|
| 25 | + public static function processRequest() |
|
| 26 | + { |
|
| 27 | + self::$request = Context::getCurrent()->getRequest(); |
|
| 28 | + $funcName = self::$request->getPost('funcName'); |
|
| 29 | + if ($funcName) { |
|
| 30 | + self::$funcName(); |
|
| 31 | + } |
|
| 32 | + } |
|
| 33 | + |
|
| 34 | + /** |
|
| 35 | + * Получение всех почтовых шаблонов |
|
| 36 | + * @return array |
|
| 37 | + */ |
|
| 38 | + public static function getMailTemplates():array |
|
| 39 | + { |
|
| 40 | + $getRow = EventTypeTable::getList([ |
|
| 41 | + 'select' => ['ID', 'EVENT_NAME', 'NAME'], |
|
| 42 | + 'filter' => ['=LID' => LANGUAGE_ID], |
|
| 43 | + 'order' => ['EVENT_NAME' => 'ASC'] |
|
| 44 | + ]); |
|
| 45 | + |
|
| 46 | + return $getRow->fetchAll(); |
|
| 47 | + } |
|
| 48 | + |
|
| 49 | + /** |
|
| 50 | + * Получение входящих запросов |
|
| 51 | + */ |
|
| 52 | + public static function getUpdates() |
|
| 53 | + { |
|
| 54 | + $arReturn = []; |
|
| 55 | + $arUpdates = (new Sending)->updatesUser()[0]; |
|
| 56 | + if ($arUpdates['message']['text'] === '/start' && $arUpdates['message']['chat']['id']) { |
|
| 57 | + $arUsers = self::getUser(); |
|
| 58 | + if (!array_key_exists($arUpdates['message']['chat']['id'], $arUsers)) { |
|
| 59 | + $arReturn = $arUpdates['message']['chat']; |
|
| 60 | + } |
|
| 61 | + } |
|
| 62 | + if (!$arReturn) { |
|
| 63 | + self::$response['message'] = self::setNote('Входящих запросов нет', 'ERROR'); |
|
| 64 | + } |
|
| 65 | + self::$response['updates'] = $arReturn; |
|
| 66 | + self::sendResponse(); |
|
| 67 | + } |
|
| 68 | + |
|
| 69 | + /** |
|
| 70 | + * Добавленные пользователи |
|
| 71 | + * @return mixed |
|
| 72 | + */ |
|
| 73 | + public static function getUser() |
|
| 74 | + { |
|
| 75 | + return unserialize(Option::get(self::$module_id, 'user')); |
|
| 76 | + } |
|
| 77 | + |
|
| 78 | + /** |
|
| 79 | + * Генерация уведомления |
|
| 80 | + * |
|
| 81 | + * @param $message |
|
| 82 | + * @param $type "ERROR"|"OK"|"PROGRESS" |
|
| 83 | + * |
|
| 84 | + * @return string |
|
| 85 | + */ |
|
| 86 | + public static function setNote($message, $type):string |
|
| 87 | + { |
|
| 88 | + return (new \CAdminMessage(['MESSAGE' => $message, 'TYPE' => $type]))->Show(); |
|
| 89 | + } |
|
| 90 | + |
|
| 91 | + /** |
|
| 92 | + * Отправка json ответа |
|
| 93 | + */ |
|
| 94 | + public static function sendResponse() |
|
| 95 | + { |
|
| 96 | + header('Content-Type: application/json'); |
|
| 97 | + die(json_encode(self::$response)); |
|
| 98 | + } |
|
| 99 | + |
|
| 100 | + /** |
|
| 101 | + * Добавление пользователя |
|
| 102 | + */ |
|
| 103 | + public static function setUser() |
|
| 104 | + { |
|
| 105 | + $fields = self::$request->getPost('fields'); |
|
| 106 | + if ($fields) { |
|
| 107 | + $savedUser = self::getUser(); |
|
| 108 | + if (!array_key_exists($fields['id'], $savedUser)) { |
|
| 109 | + $newUser = [ |
|
| 110 | + $fields['id'] => [ |
|
| 111 | + 'nickname' => $fields['nickname'], |
|
| 112 | + 'username' => $fields['username'] |
|
| 113 | + ] |
|
| 114 | + ]; |
|
| 115 | + if ($savedUser) { |
|
| 116 | + $newUser += $savedUser; |
|
| 117 | + } |
|
| 118 | + self::setOption('user', $newUser); |
|
| 119 | + self::$response['message'] = self::setNote('Пользователь добавлен', 'OK'); |
|
| 120 | + } else { |
|
| 121 | + self::$response['message'] = self::setNote('Пользователь уже существует', 'ERROR'); |
|
| 122 | + } |
|
| 123 | + } |
|
| 124 | + self::sendResponse(); |
|
| 125 | + } |
|
| 126 | + |
|
| 127 | + /** |
|
| 128 | + * Запись данных в базу |
|
| 129 | + * |
|
| 130 | + * @param $name |
|
| 131 | + * @param $option |
|
| 132 | + * @param bool $serialize |
|
| 133 | + */ |
|
| 134 | + public static function setOption($name, $option, $serialize = true) |
|
| 135 | + { |
|
| 136 | + Option::set(self::$module_id, $name, $serialize ? serialize($option) : $option); |
|
| 137 | + } |
|
| 138 | + |
|
| 139 | + /** |
|
| 140 | + * Удаление пользователя |
|
| 141 | + */ |
|
| 142 | + public static function deleteUser() |
|
| 143 | + { |
|
| 144 | + $fields = self::$request->getPost('fields'); |
|
| 145 | + if ($fields) { |
|
| 146 | + $savedUser = self::getUser(); |
|
| 147 | + if (array_key_exists($fields['id'], $savedUser)) { |
|
| 148 | + unset($savedUser[$fields['id']]); |
|
| 149 | + self::setOption('user', $savedUser); |
|
| 150 | + self::$response['message'] = self::setNote('Пользователь удален', 'OK'); |
|
| 151 | + } else { |
|
| 152 | + self::$response['message'] = self::setNote('Этот пользователь уже удален', 'ERROR'); |
|
| 153 | + } |
|
| 154 | + } |
|
| 155 | + self::sendResponse(); |
|
| 156 | + } |
|
| 157 | + |
|
| 158 | + /** |
|
| 159 | + * Сохранение настроек |
|
| 160 | + */ |
|
| 161 | + public static function saveConfig() |
|
| 162 | + { |
|
| 163 | + $fields = self::$request->getPost('fields'); |
|
| 164 | + if ($fields) { |
|
| 165 | + foreach ($fields as $field => $value) { |
|
| 166 | + if (\is_array($value)) { |
|
| 167 | + self::setOption($field, $value); |
|
| 168 | + } else { |
|
| 169 | + self::setOption($field, $value, false); |
|
| 170 | + } |
|
| 171 | + } |
|
| 172 | + } |
|
| 173 | + if ($fields['module_on'] === '1') { |
|
| 174 | + self::$response['message'] = self::setNote('Настройки сохранены', 'OK'); |
|
| 175 | + } else { |
|
| 176 | + self::$response['message'] = self::setNote('Модуль отключен', 'ERROR'); |
|
| 177 | + } |
|
| 178 | + self::sendResponse(); |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + /** |
|
| 182 | + * Активность модуля |
|
| 183 | + * @return string |
|
| 184 | + */ |
|
| 185 | + public static function statusModule():string |
|
| 186 | + { |
|
| 187 | + return Option::get(self::$module_id, 'module_on'); |
|
| 188 | + } |
|
| 189 | + |
|
| 190 | + /** |
|
| 191 | + * Токен бота |
|
| 192 | + * @return string |
|
| 193 | + */ |
|
| 194 | + public static function getToken():string |
|
| 195 | + { |
|
| 196 | + return Option::get(self::$module_id, 'token'); |
|
| 197 | + } |
|
| 198 | + |
|
| 199 | + /** |
|
| 200 | + * Почтовые шаблоны |
|
| 201 | + * @return mixed |
|
| 202 | + */ |
|
| 203 | + public static function getMail() |
|
| 204 | + { |
|
| 205 | + return unserialize(Option::get(self::$module_id, 'mail')); |
|
| 206 | + } |
|
| 207 | + |
|
| 208 | + /** |
|
| 209 | + * Активность прокси |
|
| 210 | + * @return mixed |
|
| 211 | + */ |
|
| 212 | + public static function statusProxy() |
|
| 213 | + { |
|
| 214 | + return Option::get(self::$module_id, 'proxy_on'); |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + /** |
|
| 218 | + * Данные прокси |
|
| 219 | + * @return mixed |
|
| 220 | + */ |
|
| 221 | + public static function proxyData() |
|
| 222 | + { |
|
| 223 | + return unserialize(Option::get(self::$module_id, 'proxy')); |
|
| 224 | + } |
|
| 225 | 225 | } // |