use app\models\User;
use frontend\components\TelegramComponent;
use yii\db\Exception;
use yii\filters\AccessControl;
use yii\web\Controller;
use frontend\models\Telegram;
class TelegramController extends Controller
{
public function beforeAction($action)//Обязательно нужно отключить Csr валидацию, так не будет работать
{
$this->enableCsrfValidation = ($action->id !== "webhook");
return parent::beforeAction($action);
}
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['webhook'],
'rules' => [
[
'allow' => true,
'roles' => ['?'],
],
],
],
];
}
public function actionWebhook()
{
$data = json_decode(file_get_contents('php://input'), true);//Обязательно json формат
if(isset($data['message']['chat']['id']))
{
$chatId = $data['message']['chat']['id'];//Получаем chat_id
$message = isset($data['message']['text']) ? $data['message']['text'] : false;
$send = false;
if (strpos($message, '/start') !== false) {//Возвращает позицию
$explode = explode(' ', $message);//Разбивает строку на подстроки
$token = isset($explode[1]) ? $explode[1] : false;//Получаем токен
$data = [
'raw' => $token,
'chat_id' => $chatId,
];
$send = Telegram::start($data);//Сравниваем токен и если имеется схожесть то сохраняем telegram_chat_id в бд
} else {
$send = 'Комманда не найдена. Если Вы уверены в том, что ошибка, обратитесь в тех поддержку';
}
$send = $send ? '' : 'Что-то пошло не по плану. Обратитесь в тех.поддержку';
}
}
}
<?php
namespace frontend\models;
use common\models\User;
class Telegram
{
public static function start($data){
return self::login($data);
}
public static function login($data)
{
$token = $data['raw'];//берем токен который отправляем
if ($token && $user = User::findOne(['token' => $token])) {//сравниваем
if ($user->telegram_chat_id) {
return "Уважаемый $user->name, Вы уже авторизованы в системе. ";
}
$user->telegram_chat_id = $data['chat_id'];//сохраняем chat_id в бд
$user->save();
return "Добро пожаловать, $user->name. Вы успешно авторизовались!";
} else {
return "Извините, не удалось найти данный токен!";
}
}
}
<?= $form->field($client, 'phone')->widget(Select2::className(), [
'data' => ArrayHelper::map(Client::find()->all(), 'id', 'phone'),
'options' => ['placeholder' => 'Введите номер телефона'],
'pluginOptions' => [
'allowClear' => true,
'language' => [
'noResults' => new JsExpression('function () { return "<button type=\"button\" class=\"btn btn-primary btn-xs\">Добавить клиента</button>"; }'),
],
'escapeMarkup' => new JsExpression('function (markup) {
return markup;
}')
],
])?>
if ($model->load(Yii::$app->request->post())) {
$model->file = UploadedFile::getInstance($model, 'file');
if(isset($model->file))
{
$model->file->saveAs('maket/Maket_'.$model->id_zakaz.'.'.$model->file->extension);
$model->maket = 'Maket_'.$model->id_zakaz.'.'.$model->file->extension;
$model->status = 4;
}
$model->save();
return $this->redirect(['view', 'id' => $model->id_zakaz]);
[['file'], 'file', 'skipOnEmpty' => true],
if (isset($_FILES["photo"]))
{ if ($_FILES["photo"]["error"] == 0) {
$imageFile = move_uploaded_file($_FILES["photo"]["tmp_name"], "image/img/".$_FILES["photo"]["name"]);
$imageFile1 = "image/img/".$_FILES["photo"]["name"];
$imageSave = "image/imgKonstr/".$_FILES["photo"]["name"];
switch ($_FILES["photo"]["type"]) {
case 'image/png':
$im2 = imagecreatefrompng($imageFile1);
break;
case 'image/jpeg':
$im2 = imagecreatefromjpeg($imageFile1);
break;
}
imagealphablending($im2, false);
imagesavealpha($im2, true);
$trans = imagecolorallocatealpha($im2, 0, 0, 0, 127);
$rotate = imagerotate($im2, $turn*-1, $trans, $visibility);
$width1 = imagesx($rotate);
$height1 = imagesy($rotate);
$width2 = imagesx($im2);
$height2 = imagesy($im2);
if ($size == 0) {
$size = $width2;
} else {
$size = $size;
}
imagecopyresampled($im, $rotate, (int)$leftCanvas, (int)$topCanvas, 0, 0, $size, $height1, $width1, $height1);
imagedestroy($im2);
imagedestroy($rotate);
}
}
if (isset($_FILES["photo"])) {
$imageFile = move_uploaded_file($_FILES["photo"]["tmp_name"], "image/img/".$_FILES["photo"]["name"]);
$imageFile1 = "image/img/".$_FILES["photo"]["name"];
$imageSave = "image/imgKonstr/".$_FILES["photo"]["name"];
if ($_FILES["photo"]["type"] == "image/png") {
$im2 = imagecreatefrompng($imageFile1);
} else {
$im2 = imagecreatefromjpeg($imageFile1);
}
imagealphablending($im2, false);
imagesavealpha($im2, true);
$trans = imagecolorallocatealpha($im2, 0, 0, 0, 127);
$rotate = imagerotate($im2, $turn*-1, $trans, $visibility);
$width1 = imagesx($rotate);
$height1 = imagesy($rotate);
$width2 = imagesx($im2);
$height2 = imagesy($im2);
imagecopyresampled($im, $rotate, (int)$leftCanvas+150, (int)$topCanvas+150, 0, 0, 60+10*$size, 60+10*$size, $width1, $height1);
}