| @@ -1,7 +1,7 @@ discard block | ||
| 1 | 1 | <?php | 
| 2 | 2 | |
| 3 | -require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php'; | |
| 4 | -require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'; | |
| 3 | +require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php'; | |
| 4 | +require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php'; | |
| 5 | 5 |  $APPLICATION->SetTitle('Инструкция по созданию бота и настройке модуля'); | 
| 6 | 6 | ?> | 
| 7 | 7 | |
| @@ -50,4 +50,4 @@ discard block | ||
| 50 | 50 | </ol> | 
| 51 | 51 | |
| 52 | 52 | <?php | 
| 53 | -require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php'; | |
| 53 | +require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php'; | |
| @@ -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 | } // |