04. Пример рабочего кода.md
Пример
Данный код:
- фильтрует данные формы от тегов и спецсимволов
- проверяет поля, у которых должны быть строго определённые значения (в данном случае - “secret” и “name”)
- компонует данные формы в отчёт
- отправляет текствовое сообщение
- если текстовое сообщение отправилось удачно - подгружает файлы на сервер, переименовывает их и отправляет в чат
- после отправки загруженные файлы удаляются с сервера
Все основные операции завернуты в функцию sendMessage, которая прерывает своё выполнение в случае ошибок. Для упрощения примера часть проверок не была реализована.
/*
Пример использования библиотеки ba-tg-sender
*/
include(__DIR__.'/classes/BA_RequestDataFilter.php');
include(__DIR__.'/classes/BA_FieldChecker.php');
include(__DIR__.'/classes/BA_TelegramSender.php');
include(__DIR__.'/classes/BA_FileUploader.php');
include(__DIR__.'/classes/BA_KeyValue_combinator.php');
use classes\BA_RequestDataFilter;
use classes\BA_FieldChecker;
use classes\BA_KeyValue_combinator;
use classes\BA_FileUploader;
use classes\BA_TelegramSender;
function sendMessage($bot_token, $chatID){
global $_POST;
global $_FILES;
$post = BA_RequestDataFilter::filter($_POST);
$fieldChecker = new BA_FieldChecker();
$fieldChecker
->addRequiredValue('secret', '')
->addRequiredValue('name', 'Тестер')
->addRequiredValue('name', 'Alex');
/*
Для примера - поле secret должно оставаться пустым, а поле name содержать значение "Тестер" или "Alex"
*/
if (!$fieldChecker->checkData($post)) { //Проверка секретных полей
return false; // проверка не пройдена, выполнение прервано
}
$tgSender = new BA_TelegramSender();
$tgSender
->setBotToken($bot_token)
->setTheme('Заказан обратный звонок');
$combinator = new Combinator();
$combinator
->setField('name', "Имя") // задается только подпись поля
->setField('phone', "Телефон", $post['phone']) // задаются подпись и значение поля
->setValue('name', $post['name'])
->valueInNewLineOn()
->setDataSeparator('* * * * * * * *');
$strings = $combinator->combineAll();
$tgSender
->addString('На сайте test.ter заказан обратный звонок.')
->addString('Получены следующие данные:')
->addString('')
->addStrings($strings);
$response = $tgSender->sendMessage($chatID);
if ($response===false) {
return false;
}
$uploader = new BA_FileUploader();
$uploader
->setFiles($_FILES)
->setUploadDir(__DIR__.DIRECTORY_SEPARATOR.'uploads')
->setRenameFiles('random')
->setAllowedTypes('images', array('jpg'=>true,'png'=>true,'gif'=>false))
->setAllowedTypes('document', array('pdf'=>true,'doc'=>true,'txt'=>false))
->setAllowedTypes('table', array('xls'=>true,'xlsx'=>true));
/*
В поле images разрешены только файлы с расширениями jpg и png, все остальные расширения запрещены, включая gif.
В поле document разрешено только расширение doc, txt - прямо указано, как запрещённое.
В поле table разрешены только таблицы xls и xlsx.
Всё остальное не пройдёт проверку
*/
$uploader->uploadFiles();
$uploaded = $uploader->getUploadedArray();
$response = $tgSender->sendFiles($chatID, $uploaded);
$uploader->clearUploads();
if ($response===false) {
return false;
}
return true;
}
sendMessage(ТОКЕН_БОТА, ИД_ЧАТА);
Не забудьте вместо ТОКЕН_БОТА, ИД_ЧАТА поставить реальные значения!