<?php
class KeyboardMenu {
public $TG;
public $activationText;
public $welcomeMessage;
public $logOutText;
public $toolsMenuMessage;
function __construct(TranslateService $TG){
$this->TG = $TG;
$this->activationText = "یک دکمه در صفحه چت شما با عنوان عضویت در گروه مترجمان فعال شد.";
$this->activationText .= "با کلیک روی آن می توانید لغت های خود را به لغتنامه اضافه کنید";
$this->welcomeMessage = "به گروه مترجمان خوش آمدید.";
$this->welcomeMessage .= "دو دکمه ی دیگر برای شما فعال شد. لطفا دکمه امکانات را بفشارید";
$this->logOutText = "شما با موفقیت از گروه خارج شدید";
$this->toolsMenuMessage = "شما می توانید لغت های جدید را به لغت نامه آموزش دهید. برای این کار می توانید از دکمه وارد کردن لغت استفاده کنید";
$this->toolsMenuMessage .= PHP_EOL."در آینده امکانات بیشتری به این گروه اضافه خواهد شد";
$this->toolsMenuMessage .= PHP_EOL."در زمانی که شما عضو این گروه هستید، لغتنامه از شما سوالاتی برای یادگیری لغت های جدید خواهد پرسید";
}
function activate(){
$this->TG->getUser()->setKeyboard(EnumKeyboard::ACTIVATED);
$this->onActivate();
}
function deactivate(){
$this->TG->getUser()->setKeyboard(EnumKeyboard::DEACTIVATED)->setRole(EnumRole::USER);
$keyboard = $this->defineKeyboard($this->getRegisterKeyboard());
$this->sendMessageAndKeyboard($this->logOutText,$keyboard);
}
function listen(){
switch ($this->TG->message['text']){
case EnumTranslatorButton::REGISTER :
$this->showTools();
return true;
break;
case EnumTranslatorButton::MAINPAGE:
$this->showMenu();
return true;
break;
case EnumTranslatorButton::TOOLS:
$this->showTools();
return true;
break;
case EnumTranslatorButton::UNREGISTER:
$this->deactivate();
return true;
break;
case EnumTranslatorButton::ACTIVATE_KEYBOARD:
$this->activate();
default :
// if(!$this->TG->getUser()->hasKeyboard())
// $this->activate();
if(false && $this->TG->getUser()->getKeyboard() == "DEACTIVATED")
$this->activate();
break;
}
return false;
}
function showMenu() {
$keyboard = $this->defineKeyboard($this->getMainPageKeyboard());
$this->sendMessageAndKeyboard($this->welcomeMessage,$keyboard);
}
function showTools() {
$this->TG->getUser()->setRole(EnumRole::TRANSLATOR);
$keyboard = $this->defineKeyboard($this->getToolsKeyboard());
$this->sendMessageAndKeyboard($this->toolsMenuMessage,$keyboard);
}
function onActivate(){
$keyboard = $this->defineKeyboard($this->getRegisterKeyboard());
$this->sendMessageAndKeyboard($this->activationText,$keyboard);
}
function getToolsKeyboard(){
$keyButtons[] = EnumTranslatorButton::INSERT_WORD;
$keyButtons[] = EnumTranslatorButton::MAINPAGE;
return $keyButtons;
}
function getMainPageKeyboard(){
$keyButtons[] = EnumTranslatorButton::TOOLS;
$keyButtons[] = EnumTranslatorButton::UNREGISTER;
return $keyButtons;
}
function getRegisterKeyboard(){
$keyButtons[] = EnumTranslatorButton::REGISTER;
return $keyButtons;
}
function getTranslatorInlineKeyboard(){
$word = $this->TG->word;
// $word = $this->cleanWord($word);
if ($this->TG->translated) {
// return array('text' => "اضافه کردن معنی به $word", 'callback_data' => EnumSteps::USER_WANTS_INSERT_MEANING . ":" . $word);
// return ['text' => "اضافه کردن معنی به $word", 'callback_data' => EnumSteps::USER_WANTS_INSERT_MEANING . ":" . $word];
}
else {
return array('text' => "وارد کردن معنی $word", 'id' => EnumSteps::USER_WANTS_INSERT_COMPLETE_MEANING . ":" . $word);
}
}
function defineKeyboard($keyButtons){
// $keyboard = [
// 'keyboard' => [
// [['text' => EnumTranslatorButton::REGISTER]],,
// [['text' => EnumTranslatorButton::MAINPAGE]]
// ],
// "resize_keyboard" => true,
// "one_time_keyboard" => true
// ];
foreach ( $keyButtons as $button) {
$keyboard['keyboard'][][]['text']=$button;
}
$keyboard['resize_keyboard'] = true;
// $keyboard['one_time_keyboard'] = true;
// $keyboard = [
// 'keyboard' => [[['text' => EnumTranslatorButton::REGISTER]],
// [['text' => EnumTranslatorButton::MAINPAGE]]],
// "resize_keyboard" => true,
// "one_time_keyboard" => true
// ];
// $keyboard = [
// "keyboard" => [[['text' => EnumTranslatorButton::UNREGISTER]]],
// "resize_keyboard" => true,
// "one_time_keyboard" => true
// ];
return $keyboard;
}
function sendmessageAndKeyboard($message,$keyboard){
// $keyboard = [
// "keyboard" => [[['text' => EnumTranslatorButton::UNREGISTER]]],
// "resize_keyboard" => true,
// "one_time_keyboard" => true
// ];
$markup = json_encode($keyboard, true);
$this->TG->apiRequest ( "sendMessage", array (
'chat_id' => $this->TG->chat_id,
"text" => $message,
"parse_mode" => "html",
"disable_web_page_preview" => true,
"reply_markup" =>$markup
) );
// exit();
}
}
?>