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(ТОКЕН_БОТА, ИД_ЧАТА);

Не забудьте вместо ТОКЕН_БОТА, ИД_ЧАТА поставить реальные значения!