forked from mirzaev/deeproots_bot
switch tabs to spaces, editorconfig
This commit is contained in:
parent
468f454cab
commit
a45eaca11f
|
@ -0,0 +1,7 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
indent_size = 4
|
22
LICENSE
22
LICENSE
|
@ -1,11 +1,11 @@
|
|||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
|
|
108
composer.json
108
composer.json
|
@ -1,56 +1,56 @@
|
|||
{
|
||||
"name": "mirzaev/deeproots",
|
||||
"description": "",
|
||||
"homepage": "https://git.svoboda.works/mirzaev/deeproots",
|
||||
"type": "site",
|
||||
"keywords": [
|
||||
"minimal",
|
||||
"baza"
|
||||
],
|
||||
"readme": "README.md",
|
||||
"license": "WTFPL",
|
||||
"authors": [
|
||||
{
|
||||
"name": "mirzaev",
|
||||
"email": "mirzaev@gmail.com",
|
||||
"homepage": "https://mirzaev.page",
|
||||
"role": "Programmer"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"wiki": "https://git.svoboda.works/mirzaev/deeproots/wiki",
|
||||
"issues": "https://git.svoboda.works/mirzaev/deeproots/issues"
|
||||
},
|
||||
"require": {
|
||||
"php": "^8.4",
|
||||
"mirzaev/minimal": "^3.4",
|
||||
"mirzaev/baza": "^3.3",
|
||||
"twig/twig": "^3.10",
|
||||
"twig/extra-bundle": "^3.7",
|
||||
"twig/intl-extra": "^3.10",
|
||||
"svoboda/time": "^1.0",
|
||||
"badfarm/zanzara": "^0.9.1",
|
||||
"nyholm/psr7": "^1.8",
|
||||
"react/filesystem": "^0.1.2",
|
||||
"react/async": "^4.3"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"mirzaev\\deeproots\\": "mirzaev/deeproots/system"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"mirzaev\\deeproots\\tests\\": "mirzaev/deeproots/tests"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"pre-update-cmd": "./install.sh"
|
||||
},
|
||||
"config": {
|
||||
"allow-plugins": {
|
||||
"php-http/discovery": true,
|
||||
"wyrihaximus/composer-update-bin-autoload-path": true
|
||||
}
|
||||
}
|
||||
"name": "mirzaev/deeproots",
|
||||
"description": "",
|
||||
"homepage": "https://git.svoboda.works/mirzaev/deeproots",
|
||||
"type": "site",
|
||||
"keywords": [
|
||||
"minimal",
|
||||
"baza"
|
||||
],
|
||||
"readme": "README.md",
|
||||
"license": "WTFPL",
|
||||
"authors": [
|
||||
{
|
||||
"name": "mirzaev",
|
||||
"email": "mirzaev@gmail.com",
|
||||
"homepage": "https://mirzaev.page",
|
||||
"role": "Programmer"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"wiki": "https://git.svoboda.works/mirzaev/deeproots/wiki",
|
||||
"issues": "https://git.svoboda.works/mirzaev/deeproots/issues"
|
||||
},
|
||||
"require": {
|
||||
"php": "^8.4",
|
||||
"mirzaev/minimal": "^3.4",
|
||||
"mirzaev/baza": "^3.3",
|
||||
"twig/twig": "^3.10",
|
||||
"twig/extra-bundle": "^3.7",
|
||||
"twig/intl-extra": "^3.10",
|
||||
"svoboda/time": "^1.0",
|
||||
"badfarm/zanzara": "^0.9.1",
|
||||
"nyholm/psr7": "^1.8",
|
||||
"react/filesystem": "^0.1.2",
|
||||
"react/async": "^4.3"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"mirzaev\\deeproots\\": "mirzaev/deeproots/system"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"mirzaev\\deeproots\\tests\\": "mirzaev/deeproots/tests"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"pre-update-cmd": "./install.sh"
|
||||
},
|
||||
"config": {
|
||||
"allow-plugins": {
|
||||
"php-http/discovery": true,
|
||||
"wyrihaximus/composer-update-bin-autoload-path": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ -d author/project ]; then
|
||||
mv author/project author/deeproots
|
||||
mv author/project author/deeproots
|
||||
fi
|
||||
|
||||
if [ -d author ]; then
|
||||
mv author mirzaev
|
||||
mv author mirzaev
|
||||
fi
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ use mirzaev\deeproots\models\core as models;
|
|||
|
||||
// Framework for PHP
|
||||
use mirzaev\minimal\core as minimal,
|
||||
mirzaev\minimal\controller,
|
||||
mirzaev\minimal\http\response,
|
||||
mirzaev\minimal\http\enumerations\status;
|
||||
mirzaev\minimal\controller,
|
||||
mirzaev\minimal\http\response,
|
||||
mirzaev\minimal\http\enumerations\status;
|
||||
|
||||
/**
|
||||
* Controllers core
|
||||
|
@ -29,47 +29,47 @@ use mirzaev\minimal\core as minimal,
|
|||
*/
|
||||
class core extends controller
|
||||
{
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* @var language $language Language
|
||||
*/
|
||||
protected language $language = language::en;
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* @var language $language Language
|
||||
*/
|
||||
protected language $language = language::en;
|
||||
|
||||
/**
|
||||
* Response
|
||||
*
|
||||
* @see https://wiki.php.net/rfc/property-hooks (find a table about backed and virtual hooks)
|
||||
*
|
||||
* @var response $response Response
|
||||
*/
|
||||
protected response $response {
|
||||
// Read
|
||||
get => $this->response ??= $this->request->response();
|
||||
}
|
||||
/**
|
||||
* Response
|
||||
*
|
||||
* @see https://wiki.php.net/rfc/property-hooks (find a table about backed and virtual hooks)
|
||||
*
|
||||
* @var response $response Response
|
||||
*/
|
||||
protected response $response {
|
||||
// Read
|
||||
get => $this->response ??= $this->request->response();
|
||||
}
|
||||
|
||||
/**
|
||||
* Errors
|
||||
*
|
||||
* @var array $errors Registry of errors
|
||||
*/
|
||||
protected array $errors = [
|
||||
];
|
||||
/**
|
||||
* Errors
|
||||
*
|
||||
* @var array $errors Registry of errors
|
||||
*/
|
||||
protected array $errors = [
|
||||
];
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param minimal $core Instance of the MINIMAL
|
||||
* @param bool $initialize Initialize a controller?
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(minimal $core, bool $initialize = true)
|
||||
{
|
||||
// Blocking requests from CloudFlare (better to write this blocking into nginx config file)
|
||||
if (isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] === 'nginx-ssl early hints') return status::bruh->label;
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param minimal $core Instance of the MINIMAL
|
||||
* @param bool $initialize Initialize a controller?
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(minimal $core, bool $initialize = true)
|
||||
{
|
||||
// Blocking requests from CloudFlare (better to write this blocking into nginx config file)
|
||||
if (isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] === 'nginx-ssl early hints') return status::bruh->label;
|
||||
|
||||
// For the extends system
|
||||
parent::__construct(core: $core);
|
||||
}
|
||||
// For the extends system
|
||||
parent::__construct(core: $core);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ use mirzaev\deeproots\controllers\core;
|
|||
|
||||
// Framework for PHP
|
||||
use mirzaev\minimal\http\enumerations\content,
|
||||
mirzaev\minimal\http\enumerations\status;
|
||||
mirzaev\minimal\http\enumerations\status;
|
||||
|
||||
/**
|
||||
* Index
|
||||
|
@ -26,46 +26,46 @@ use mirzaev\minimal\http\enumerations\content,
|
|||
*/
|
||||
final class index extends core
|
||||
{
|
||||
/**
|
||||
* Errors
|
||||
*
|
||||
* @var array $errors Registry of errors
|
||||
*/
|
||||
protected array $errors = [
|
||||
'system' => []
|
||||
];
|
||||
/**
|
||||
* Errors
|
||||
*
|
||||
* @var array $errors Registry of errors
|
||||
*/
|
||||
protected array $errors = [
|
||||
'system' => []
|
||||
];
|
||||
|
||||
/**
|
||||
* Main page
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function index(): null
|
||||
{
|
||||
if (str_contains($this->request->headers['accept'], content::any->value)) {
|
||||
// Request for any response
|
||||
/**
|
||||
* Main page
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function index(): null
|
||||
{
|
||||
if (str_contains($this->request->headers['accept'], content::any->value)) {
|
||||
// Request for any response
|
||||
|
||||
// Render page
|
||||
$page = $this->view->render('index.html');
|
||||
// Render page
|
||||
$page = $this->view->render('index.html');
|
||||
|
||||
// Sending response
|
||||
$this->response
|
||||
->start()
|
||||
->clean()
|
||||
->sse()
|
||||
->write($page)
|
||||
->validate($this->request)
|
||||
?->body()
|
||||
->end();
|
||||
// Sending response
|
||||
$this->response
|
||||
->start()
|
||||
->clean()
|
||||
->sse()
|
||||
->write($page)
|
||||
->validate($this->request)
|
||||
?->body()
|
||||
->end();
|
||||
|
||||
// Deinitializing rendered page
|
||||
unset($page);
|
||||
// Deinitializing rendered page
|
||||
unset($page);
|
||||
|
||||
// Exit (success)
|
||||
return null;
|
||||
}
|
||||
// Exit (success)
|
||||
return null;
|
||||
}
|
||||
|
||||
// Exit (fail)
|
||||
return null;
|
||||
}
|
||||
// Exit (fail)
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,183 +2,183 @@
|
|||
|
||||
// Exit (success)
|
||||
return [
|
||||
// System
|
||||
'deeproots' => 'DeepRoots',
|
||||
'empty' => 'Empty',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
// System
|
||||
'deeproots' => 'DeepRoots',
|
||||
'empty' => 'Empty',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
|
||||
// Main menu
|
||||
'menu_title' => 'Main menu',
|
||||
'menu_button_start' => 'Start',
|
||||
'menu_button_rating' => 'Rating',
|
||||
'menu_button_balance' => 'Balance',
|
||||
'menu_button_system_accounts' => 'Accounts',
|
||||
'menu_button_system_questions' => 'Questions',
|
||||
'menu_button_system_settings' => 'Settings',
|
||||
'menu_system_authorized' => 'System authorization found',
|
||||
// Main menu
|
||||
'menu_title' => 'Main menu',
|
||||
'menu_button_start' => 'Start',
|
||||
'menu_button_rating' => 'Rating',
|
||||
'menu_button_balance' => 'Balance',
|
||||
'menu_button_system_accounts' => 'Accounts',
|
||||
'menu_button_system_questions' => 'Questions',
|
||||
'menu_button_system_settings' => 'Settings',
|
||||
'menu_system_authorized' => 'System authorization found',
|
||||
|
||||
// Account
|
||||
'account_title' => 'Account',
|
||||
'account_identifier' => 'Identifier',
|
||||
'account_authorized_system' => 'Access to the system',
|
||||
'account_authorized_game_play' => 'Access to play games',
|
||||
'account_authorized_rating_display' => 'Access to display in the rating',
|
||||
'account_authorized_balance_deposit' => 'Access to deposit into the balance',
|
||||
'account_authorized_balance_withdraw' => 'Access to withdraw from the balance',
|
||||
'account_authorized_settings' => 'Access to settings',
|
||||
'account_authorized_system_accounts' => 'System access to accounts',
|
||||
'account_authorized_system_questions' => 'System access to questions',
|
||||
'account_authorized_system_settings' => 'System access to system settings',
|
||||
// Account
|
||||
'account_title' => 'Account',
|
||||
'account_identifier' => 'Identifier',
|
||||
'account_authorized_system' => 'Access to the system',
|
||||
'account_authorized_game_play' => 'Access to play games',
|
||||
'account_authorized_rating_display' => 'Access to display in the rating',
|
||||
'account_authorized_balance_deposit' => 'Access to deposit into the balance',
|
||||
'account_authorized_balance_withdraw' => 'Access to withdraw from the balance',
|
||||
'account_authorized_settings' => 'Access to settings',
|
||||
'account_authorized_system_accounts' => 'System access to accounts',
|
||||
'account_authorized_system_questions' => 'System access to questions',
|
||||
'account_authorized_system_settings' => 'System access to system settings',
|
||||
|
||||
// Language setting
|
||||
'settings_select_language_title' => 'Select language',
|
||||
'settings_select_language_description' => 'The selected language will be writed in your account settings',
|
||||
'settings_language_update_success' => 'Language replaced:',
|
||||
'settings_language_update_fail' => 'Failed to replace language',
|
||||
// Language setting
|
||||
'settings_select_language_title' => 'Select language',
|
||||
'settings_select_language_description' => 'The selected language will be writed in your account settings',
|
||||
'settings_language_update_success' => 'Language replaced:',
|
||||
'settings_language_update_fail' => 'Failed to replace language',
|
||||
|
||||
// Language selection
|
||||
'select_language_title' => 'Select language',
|
||||
'select_language_description' => 'The selected language will be used in the current process',
|
||||
'select_language_button_add' => 'Add a language',
|
||||
// Language selection
|
||||
'select_language_title' => 'Select language',
|
||||
'select_language_description' => 'The selected language will be used in the current process',
|
||||
'select_language_button_add' => 'Add a language',
|
||||
|
||||
// Repository
|
||||
'repository_title' => 'Repository',
|
||||
'repository_text' => <<<TXT
|
||||
Svoboder is written in [PHP](https://www.php.net/) using [Zanzara](https://github.com/badfarm/zanzara) for Telegram,
|
||||
my [MINIMAL](https://git.svoboda.works/mirzaev/minimal) framework for PHP and my [Baza](https://git.svoboda.works/mirzaev/baza) database
|
||||
// Repository
|
||||
'repository_title' => 'Repository',
|
||||
'repository_text' => <<<TXT
|
||||
Deeproots is written in [PHP](https://www.php.net/) using [Zanzara](https://github.com/badfarm/zanzara) for Telegram,
|
||||
my [MINIMAL](https://git.svoboda.works/mirzaev/minimal) framework for PHP and my [Baza](https://git.svoboda.works/mirzaev/baza) database
|
||||
|
||||
The code is under the [WTFPL](https://en.wikipedia.org/wiki/WTFPL) license
|
||||
You can help me with the development, or use my code for free\!
|
||||
TXT,
|
||||
'repository_button_code' => 'The code',
|
||||
'repository_button_issues' => 'Issues',
|
||||
'repository_button_suggestions' => 'Suggestions',
|
||||
The code is under the [WTFPL](https://en.wikipedia.org/wiki/WTFPL) license
|
||||
You can help me with the development, or use my code for free\!
|
||||
TXT,
|
||||
'repository_button_code' => 'The code',
|
||||
'repository_button_issues' => 'Issues',
|
||||
'repository_button_suggestions' => 'Suggestions',
|
||||
|
||||
// Author
|
||||
'author_title' => 'Author',
|
||||
'author_text' => <<<TXT
|
||||
*Arsen Mirzaev Tatyano\-Muradovich*
|
||||
Programmer, anarchist, vegetarian
|
||||
TXT,
|
||||
'author_button_neurojournal' => 'Neurojournal',
|
||||
'author_button_projects' => 'Projects',
|
||||
'author_button_twitter' => 'Twitter',
|
||||
'author_button_bluesky' => 'Bluesky',
|
||||
'author_button_bastyon' => 'Bastyon',
|
||||
'author_button_youtube_english' => 'YouTube',
|
||||
'author_button_youtube_russian' => 'YouTube',
|
||||
'author_button_message' => 'Send a message',
|
||||
// Author
|
||||
'author_title' => 'Author',
|
||||
'author_text' => <<<TXT
|
||||
*Arsen Mirzaev Tatyano\-Muradovich*
|
||||
Programmer, anarchist, vegetarian
|
||||
TXT,
|
||||
'author_button_neurojournal' => 'Neurojournal',
|
||||
'author_button_projects' => 'Projects',
|
||||
'author_button_twitter' => 'Twitter',
|
||||
'author_button_bluesky' => 'Bluesky',
|
||||
'author_button_bastyon' => 'Bastyon',
|
||||
'author_button_youtube_english' => 'YouTube',
|
||||
'author_button_youtube_russian' => 'YouTube',
|
||||
'author_button_message' => 'Send a message',
|
||||
|
||||
// Questions (system)
|
||||
'system_questions_title' => 'The questions registry',
|
||||
'system_questions_questions' => 'Questions',
|
||||
'system_questions_answers' => 'Answers',
|
||||
'system_questions_answers_amount_matches' => 'The amount of questions matches the amount of answers',
|
||||
'system_questions_answers_amount_different' => 'The amount of questions does not match the amount of answers',
|
||||
'system_questions_amount_matches' => 'The amount of questions matches the amount of localizations',
|
||||
'system_questions_amount_different' => 'The amount of questions does not match the amount of localizations',
|
||||
'system_questions_localizations_amount_matches' => 'Amounts of localizations matches with each other',
|
||||
'system_questions_localizations_amount_different' => 'Amounts of localizations does not match with each other',
|
||||
'system_questions_button_search' => 'Search',
|
||||
'system_questions_button_create' => 'Create',
|
||||
// Questions (system)
|
||||
'system_questions_title' => 'The questions registry',
|
||||
'system_questions_questions' => 'Questions',
|
||||
'system_questions_answers' => 'Answers',
|
||||
'system_questions_answers_amount_matches' => 'The amount of questions matches the amount of answers',
|
||||
'system_questions_answers_amount_different' => 'The amount of questions does not match the amount of answers',
|
||||
'system_questions_amount_matches' => 'The amount of questions matches the amount of localizations',
|
||||
'system_questions_amount_different' => 'The amount of questions does not match the amount of localizations',
|
||||
'system_questions_localizations_amount_matches' => 'Amounts of localizations matches with each other',
|
||||
'system_questions_localizations_amount_different' => 'Amounts of localizations does not match with each other',
|
||||
'system_questions_button_search' => 'Search',
|
||||
'system_questions_button_create' => 'Create',
|
||||
|
||||
// Question create (system)
|
||||
'system_questions_create_created' => 'The question was created',
|
||||
// Question create (system)
|
||||
'system_questions_create_created' => 'The question was created',
|
||||
|
||||
// Question search (system)
|
||||
'system_questions_search_title' => 'The question search process',
|
||||
'system_questions_search_continued' => 'The process of the question search found and continued',
|
||||
'system_questions_search_started' => 'The process of the question search started',
|
||||
'system_questions_search_not_started' => 'The process of the question search is not started',
|
||||
'system_questions_search_ended' => 'The process of the question search ended',
|
||||
'system_questions_search_page_next_exists' => 'There are more questions in the registry',
|
||||
'system_questions_search_page_next_not_exists' => 'There are no more questions in the registry',
|
||||
'system_questions_search_empty' => 'No questions found',
|
||||
'system_questions_search_question_title' => 'Question',
|
||||
'system_questions_search_question_answer' => 'Answer',
|
||||
'system_questions_search_identifier_request_title' => 'Enter identifier',
|
||||
'system_questions_search_identifier_request_not_acceptable' => 'Failed to process the identifier',
|
||||
'system_questions_search_identifier_request_too_short' => 'Identifier length must be \>\= 1 and \<\= 12',
|
||||
'system_questions_search_identifier_request_too_long' => 'Identifier length must be \>\= 1 and \<\= 12',
|
||||
'system_questions_search_identifier_request_restricted_characters_title' => "Restricted any characters except digits",
|
||||
'system_questions_search_identifier_request_restricted_characters_description' => "Remove these characters:",
|
||||
'system_questions_search_identifier_cancel_success' => 'Cancelled the identifier replacing process',
|
||||
'system_questions_search_identifier_delete_success' => 'Identifier deleted',
|
||||
'system_questions_search_identifier_update_success' => 'Identifier replaced:',
|
||||
'system_questions_search_identifier_update_fail' => 'Failed to replace identifier',
|
||||
'system_questions_search_text_request_title' => 'Enter text',
|
||||
'system_questions_search_text_request_not_acceptable' => 'Failed to process the text',
|
||||
'system_questions_search_text_request_too_short' => 'Text length must be \>\= 3 and \<\= 256',
|
||||
'system_questions_search_text_request_too_long' => 'Text length must be \>\= 3 and \<\= 256',
|
||||
'system_questions_search_text_cancel_success' => 'Cancelled the text replacing process',
|
||||
'system_questions_search_text_delete_success' => 'Text deleted',
|
||||
'system_questions_search_text_update_success' => 'Text replaced:',
|
||||
'system_questions_search_text_update_fail' => 'Failed to replace text',
|
||||
'system_questions_search_a_request_title' => 'Enter A\-answer',
|
||||
'system_questions_search_a_request_not_acceptable' => 'Failed to process the A\-answer',
|
||||
'system_questions_search_a_request_too_short' => 'A\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_a_request_too_long' => 'A\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_a_cancel_success' => 'Cancelled the A\-answer replacing process',
|
||||
'system_questions_search_a_delete_success' => 'A\-answer deleted',
|
||||
'system_questions_search_a_update_success' => 'A\-answer replaced:',
|
||||
'system_questions_search_a_update_fail' => 'Failed to replace A\-answer',
|
||||
'system_questions_search_b_request_title' => 'Enter B\-answer',
|
||||
'system_questions_search_b_request_not_acceptable' => 'Failed to process the B\-answer',
|
||||
'system_questions_search_b_request_too_short' => 'B\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_b_request_too_long' => 'B\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_b_cancel_success' => 'Cancelled the B\-answer replacing process',
|
||||
'system_questions_search_b_delete_success' => 'B\-answer deleted',
|
||||
'system_questions_search_b_update_success' => 'B\-answer replaced:',
|
||||
'system_questions_search_b_update_fail' => 'Failed to replace B\-answer',
|
||||
'system_questions_search_c_request_title' => 'Enter C\-answer',
|
||||
'system_questions_search_c_request_not_acceptable' => 'Failed to process the C\-answer',
|
||||
'system_questions_search_c_request_too_short' => 'C\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_c_request_too_long' => 'C\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_c_cancel_success' => 'Cancelled the C\-answer replacing process',
|
||||
'system_questions_search_c_delete_success' => 'C\-answer deleted',
|
||||
'system_questions_search_c_update_success' => 'C\-answer replaced:',
|
||||
'system_questions_search_c_update_fail' => 'Failed to replace C\-answer',
|
||||
'system_questions_search_d_request_title' => 'Enter D\-answer',
|
||||
'system_questions_search_d_request_not_acceptable' => 'Failed to process the D\-answer',
|
||||
'system_questions_search_d_request_too_short' => 'D\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_d_request_too_long' => 'D\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_d_cancel_success' => 'Cancelled the D\-answer replacing process',
|
||||
'system_questions_search_d_delete_success' => 'D\-answer deleted',
|
||||
'system_questions_search_d_update_success' => 'D\-answer replaced:',
|
||||
'system_questions_search_d_update_fail' => 'Failed to replace D\-answer',
|
||||
'system_questions_search_button_delete' => 'Delete',
|
||||
'system_questions_search_button_author' => 'Author',
|
||||
'system_questions_search_button_active' => 'Active',
|
||||
'system_questions_search_button_inactive' => 'Inactive',
|
||||
'system_questions_search_button_answer' => 'Answer',
|
||||
'system_questions_search_button_localizations' => 'Localizations',
|
||||
'system_questions_search_button_identifier' => 'Identifier',
|
||||
'system_questions_search_button_text' => 'Text',
|
||||
'system_questions_search_button_a' => 'A',
|
||||
'system_questions_search_button_b' => 'B',
|
||||
'system_questions_search_button_c' => 'C',
|
||||
'system_questions_search_button_d' => 'D',
|
||||
'system_questions_search_button_delete' => 'Delete',
|
||||
'system_questions_search_button_cancel' => 'Cancel',
|
||||
'system_questions_search_button_page_next' => 'Next page',
|
||||
'system_questions_search_button_end' => 'End the search process',
|
||||
'system_questions_search_not_localized' => 'Failed to initialize the question localization',
|
||||
// Question search (system)
|
||||
'system_questions_search_title' => 'The question search process',
|
||||
'system_questions_search_continued' => 'The process of the question search found and continued',
|
||||
'system_questions_search_started' => 'The process of the question search started',
|
||||
'system_questions_search_not_started' => 'The process of the question search is not started',
|
||||
'system_questions_search_ended' => 'The process of the question search ended',
|
||||
'system_questions_search_page_next_exists' => 'There are more questions in the registry',
|
||||
'system_questions_search_page_next_not_exists' => 'There are no more questions in the registry',
|
||||
'system_questions_search_empty' => 'No questions found',
|
||||
'system_questions_search_question_title' => 'Question',
|
||||
'system_questions_search_question_answer' => 'Answer',
|
||||
'system_questions_search_identifier_request_title' => 'Enter identifier',
|
||||
'system_questions_search_identifier_request_not_acceptable' => 'Failed to process the identifier',
|
||||
'system_questions_search_identifier_request_too_short' => 'Identifier length must be \>\= 1 and \<\= 12',
|
||||
'system_questions_search_identifier_request_too_long' => 'Identifier length must be \>\= 1 and \<\= 12',
|
||||
'system_questions_search_identifier_request_restricted_characters_title' => "Restricted any characters except digits",
|
||||
'system_questions_search_identifier_request_restricted_characters_description' => "Remove these characters:",
|
||||
'system_questions_search_identifier_cancel_success' => 'Cancelled the identifier replacing process',
|
||||
'system_questions_search_identifier_delete_success' => 'Identifier deleted',
|
||||
'system_questions_search_identifier_update_success' => 'Identifier replaced:',
|
||||
'system_questions_search_identifier_update_fail' => 'Failed to replace identifier',
|
||||
'system_questions_search_text_request_title' => 'Enter text',
|
||||
'system_questions_search_text_request_not_acceptable' => 'Failed to process the text',
|
||||
'system_questions_search_text_request_too_short' => 'Text length must be \>\= 3 and \<\= 256',
|
||||
'system_questions_search_text_request_too_long' => 'Text length must be \>\= 3 and \<\= 256',
|
||||
'system_questions_search_text_cancel_success' => 'Cancelled the text replacing process',
|
||||
'system_questions_search_text_delete_success' => 'Text deleted',
|
||||
'system_questions_search_text_update_success' => 'Text replaced:',
|
||||
'system_questions_search_text_update_fail' => 'Failed to replace text',
|
||||
'system_questions_search_a_request_title' => 'Enter A\-answer',
|
||||
'system_questions_search_a_request_not_acceptable' => 'Failed to process the A\-answer',
|
||||
'system_questions_search_a_request_too_short' => 'A\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_a_request_too_long' => 'A\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_a_cancel_success' => 'Cancelled the A\-answer replacing process',
|
||||
'system_questions_search_a_delete_success' => 'A\-answer deleted',
|
||||
'system_questions_search_a_update_success' => 'A\-answer replaced:',
|
||||
'system_questions_search_a_update_fail' => 'Failed to replace A\-answer',
|
||||
'system_questions_search_b_request_title' => 'Enter B\-answer',
|
||||
'system_questions_search_b_request_not_acceptable' => 'Failed to process the B\-answer',
|
||||
'system_questions_search_b_request_too_short' => 'B\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_b_request_too_long' => 'B\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_b_cancel_success' => 'Cancelled the B\-answer replacing process',
|
||||
'system_questions_search_b_delete_success' => 'B\-answer deleted',
|
||||
'system_questions_search_b_update_success' => 'B\-answer replaced:',
|
||||
'system_questions_search_b_update_fail' => 'Failed to replace B\-answer',
|
||||
'system_questions_search_c_request_title' => 'Enter C\-answer',
|
||||
'system_questions_search_c_request_not_acceptable' => 'Failed to process the C\-answer',
|
||||
'system_questions_search_c_request_too_short' => 'C\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_c_request_too_long' => 'C\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_c_cancel_success' => 'Cancelled the C\-answer replacing process',
|
||||
'system_questions_search_c_delete_success' => 'C\-answer deleted',
|
||||
'system_questions_search_c_update_success' => 'C\-answer replaced:',
|
||||
'system_questions_search_c_update_fail' => 'Failed to replace C\-answer',
|
||||
'system_questions_search_d_request_title' => 'Enter D\-answer',
|
||||
'system_questions_search_d_request_not_acceptable' => 'Failed to process the D\-answer',
|
||||
'system_questions_search_d_request_too_short' => 'D\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_d_request_too_long' => 'D\-answer length must be \>\= 3 and \<\= 128',
|
||||
'system_questions_search_d_cancel_success' => 'Cancelled the D\-answer replacing process',
|
||||
'system_questions_search_d_delete_success' => 'D\-answer deleted',
|
||||
'system_questions_search_d_update_success' => 'D\-answer replaced:',
|
||||
'system_questions_search_d_update_fail' => 'Failed to replace D\-answer',
|
||||
'system_questions_search_button_delete' => 'Delete',
|
||||
'system_questions_search_button_author' => 'Author',
|
||||
'system_questions_search_button_active' => 'Active',
|
||||
'system_questions_search_button_inactive' => 'Inactive',
|
||||
'system_questions_search_button_answer' => 'Answer',
|
||||
'system_questions_search_button_localizations' => 'Localizations',
|
||||
'system_questions_search_button_identifier' => 'Identifier',
|
||||
'system_questions_search_button_text' => 'Text',
|
||||
'system_questions_search_button_a' => 'A',
|
||||
'system_questions_search_button_b' => 'B',
|
||||
'system_questions_search_button_c' => 'C',
|
||||
'system_questions_search_button_d' => 'D',
|
||||
'system_questions_search_button_delete' => 'Delete',
|
||||
'system_questions_search_button_cancel' => 'Cancel',
|
||||
'system_questions_search_button_page_next' => 'Next page',
|
||||
'system_questions_search_button_end' => 'End the search process',
|
||||
'system_questions_search_not_localized' => 'Failed to initialize the question localization',
|
||||
|
||||
// Question localization create (system)
|
||||
'system_questions_localization_create_created' => 'The question localization was created',
|
||||
// Question localization create (system)
|
||||
'system_questions_localization_create_created' => 'The question localization was created',
|
||||
|
||||
// Authorization
|
||||
'not_authorized_system' => 'You do not have access to the system',
|
||||
'not_authorized_game_play' => 'You do not have access to play games',
|
||||
'not_authorized_rating_display' => 'You do not have access to display in the rating',
|
||||
'not_authorized_balance_deposit' => 'You do not have access to deposit into the balance',
|
||||
'not_authorized_balance_withdraw' => 'You do not have access to withdraw from the balance',
|
||||
'not_authorized_settings' => 'You do not have access to the settings',
|
||||
'not_authorized_system_accounts' => 'You do not have system access to the accounts',
|
||||
'not_authorized_system_questions' => 'You do not have system access to the questions',
|
||||
'not_authorized_system_settings' => 'You do not have system access to the system settings',
|
||||
// Authorization
|
||||
'not_authorized_system' => 'You do not have access to the system',
|
||||
'not_authorized_game_play' => 'You do not have access to play games',
|
||||
'not_authorized_rating_display' => 'You do not have access to display in the rating',
|
||||
'not_authorized_balance_deposit' => 'You do not have access to deposit into the balance',
|
||||
'not_authorized_balance_withdraw' => 'You do not have access to withdraw from the balance',
|
||||
'not_authorized_settings' => 'You do not have access to the settings',
|
||||
'not_authorized_system_accounts' => 'You do not have system access to the accounts',
|
||||
'not_authorized_system_questions' => 'You do not have system access to the questions',
|
||||
'not_authorized_system_settings' => 'You do not have system access to the system settings',
|
||||
|
||||
// Other
|
||||
'why_so_shroomious' => 'why so shroomious',
|
||||
// Other
|
||||
'why_so_shroomious' => 'why so shroomious',
|
||||
];
|
||||
|
|
|
@ -2,183 +2,183 @@
|
|||
|
||||
// Exit (success)
|
||||
return [
|
||||
// Система
|
||||
'deeproots' => 'DeepRoots',
|
||||
'empty' => 'Пусто',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Нет',
|
||||
// Система
|
||||
'deeproots' => 'DeepRoots',
|
||||
'empty' => 'Пусто',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Нет',
|
||||
|
||||
// Главное меню
|
||||
'menu_title' => 'Главное меню',
|
||||
'menu_button_start' => 'Начать',
|
||||
'menu_button_rating' => 'Рейтинг',
|
||||
'menu_button_balance' => 'Баланс',
|
||||
'menu_button_system_accounts' => 'Аккаунты',
|
||||
'menu_button_system_questions' => 'Вопросы',
|
||||
'menu_button_system_settings' => 'Настройки',
|
||||
'menu_system_authorized' => 'Найдена системная авторизация',
|
||||
// Главное меню
|
||||
'menu_title' => 'Главное меню',
|
||||
'menu_button_start' => 'Начать',
|
||||
'menu_button_rating' => 'Рейтинг',
|
||||
'menu_button_balance' => 'Баланс',
|
||||
'menu_button_system_accounts' => 'Аккаунты',
|
||||
'menu_button_system_questions' => 'Вопросы',
|
||||
'menu_button_system_settings' => 'Настройки',
|
||||
'menu_system_authorized' => 'Найдена системная авторизация',
|
||||
|
||||
// Аккаунт
|
||||
'account_title' => 'Аккаунт',
|
||||
'account_identifier' => 'Идентификатор',
|
||||
'account_authorized_system' => 'Доступ к системе',
|
||||
'account_authorized_game_play' => 'Доступ к играм',
|
||||
'account_authorized_rating_display' => 'Доступ к отображению в рейтинге',
|
||||
'account_authorized_balance_deposit' => 'Доступ к пополнению баланса',
|
||||
'account_authorized_balance_withdraw' => 'Доступ к выводу баланса',
|
||||
'account_authorized_settings' => 'Доступ к настроекам',
|
||||
'account_authorized_system_accounts' => 'Системный доступ к аккаунтам',
|
||||
'account_authorized_system_questions' => 'Системный доступ к вопросам',
|
||||
'account_authorized_system_settings' => 'Системный доступ к системным настройкам',
|
||||
// Аккаунт
|
||||
'account_title' => 'Аккаунт',
|
||||
'account_identifier' => 'Идентификатор',
|
||||
'account_authorized_system' => 'Доступ к системе',
|
||||
'account_authorized_game_play' => 'Доступ к играм',
|
||||
'account_authorized_rating_display' => 'Доступ к отображению в рейтинге',
|
||||
'account_authorized_balance_deposit' => 'Доступ к пополнению баланса',
|
||||
'account_authorized_balance_withdraw' => 'Доступ к выводу баланса',
|
||||
'account_authorized_settings' => 'Доступ к настроекам',
|
||||
'account_authorized_system_accounts' => 'Системный доступ к аккаунтам',
|
||||
'account_authorized_system_questions' => 'Системный доступ к вопросам',
|
||||
'account_authorized_system_settings' => 'Системный доступ к системным настройкам',
|
||||
|
||||
// Настройки языка
|
||||
'settings_select_language_title' => 'Выбери язык',
|
||||
'settings_select_language_description' => 'Выбранный язык будет записан в настройки аккаунта',
|
||||
'settings_language_update_success' => 'Язык заменён:',
|
||||
'settings_language_update_fail' => 'Не удалось заменить язык',
|
||||
// Настройки языка
|
||||
'settings_select_language_title' => 'Выбери язык',
|
||||
'settings_select_language_description' => 'Выбранный язык будет записан в настройки аккаунта',
|
||||
'settings_language_update_success' => 'Язык заменён:',
|
||||
'settings_language_update_fail' => 'Не удалось заменить язык',
|
||||
|
||||
// Выбор языка
|
||||
'select_language_title' => 'Выбери язык',
|
||||
'select_language_description' => 'Выбранный язык будет использован в текущем процессе',
|
||||
'select_language_button_add' => 'Добавить язык',
|
||||
// Выбор языка
|
||||
'select_language_title' => 'Выбери язык',
|
||||
'select_language_description' => 'Выбранный язык будет использован в текущем процессе',
|
||||
'select_language_button_add' => 'Добавить язык',
|
||||
|
||||
// Репозиторий
|
||||
'repository_title' => 'Репозиторий',
|
||||
'repository_text' => <<<TXT
|
||||
Svoboder написан на [PHP](https://www.php.net/) используя [Zanzara](https://github.com/badfarm/zanzara) для Telegram,
|
||||
мой [MINIMAL](https://git.svoboda.works/mirzaev/minimal) фреймворк для PHP и моя база данных [Baza](https://git.svoboda.works/mirzaev/baza)
|
||||
// Репозиторий
|
||||
'repository_title' => 'Репозиторий',
|
||||
'repository_text' => <<<TXT
|
||||
Svoboder написан на [PHP](https://www.php.net/) используя [Zanzara](https://github.com/badfarm/zanzara) для Telegram,
|
||||
мой [MINIMAL](https://git.svoboda.works/mirzaev/minimal) фреймворк для PHP и моя база данных [Baza](https://git.svoboda.works/mirzaev/baza)
|
||||
|
||||
Код находится под лицензией [WTFPL](https://en.wikipedia.org/wiki/WTFPL)
|
||||
Помогай с разработкой или используй мой код бесплатно\!
|
||||
TXT,
|
||||
'repository_button_code' => 'Код',
|
||||
'repository_button_issues' => 'Проблемы',
|
||||
'repository_button_suggestions' => 'Предложения',
|
||||
Код находится под лицензией [WTFPL](https://en.wikipedia.org/wiki/WTFPL)
|
||||
Помогай с разработкой или используй мой код бесплатно\!
|
||||
TXT,
|
||||
'repository_button_code' => 'Код',
|
||||
'repository_button_issues' => 'Проблемы',
|
||||
'repository_button_suggestions' => 'Предложения',
|
||||
|
||||
// Автор
|
||||
'author_title' => 'Автор',
|
||||
'author_text' => <<<TXT
|
||||
*Арсен Мирзаев Татьяно\-Мурадович*
|
||||
Программист, анархист, вегетарианец
|
||||
TXT,
|
||||
'author_button_neurojournal' => 'Нейрожурнал',
|
||||
'author_button_projects' => 'Проекты',
|
||||
'author_button_twitter' => 'Twitter',
|
||||
'author_button_bluesky' => 'Bluesky',
|
||||
'author_button_bastyon' => 'Bastyon',
|
||||
'author_button_youtube_english' => 'YouTube',
|
||||
'author_button_youtube_russian' => 'YouTube',
|
||||
'author_button_message' => 'Отправить сообщение',
|
||||
// Автор
|
||||
'author_title' => 'Автор',
|
||||
'author_text' => <<<TXT
|
||||
*Арсен Мирзаев Татьяно\-Мурадович*
|
||||
Программист, анархист, вегетарианец
|
||||
TXT,
|
||||
'author_button_neurojournal' => 'Нейрожурнал',
|
||||
'author_button_projects' => 'Проекты',
|
||||
'author_button_twitter' => 'Twitter',
|
||||
'author_button_bluesky' => 'Bluesky',
|
||||
'author_button_bastyon' => 'Bastyon',
|
||||
'author_button_youtube_english' => 'YouTube',
|
||||
'author_button_youtube_russian' => 'YouTube',
|
||||
'author_button_message' => 'Отправить сообщение',
|
||||
|
||||
// Вопросы (система)
|
||||
'system_questions_title' => 'Реестр вопросов',
|
||||
'system_questions_questions' => 'Вопросы',
|
||||
'system_questions_answers' => 'Ответы',
|
||||
'system_questions_answers_amount_matches' => 'Количество вопросов совпадает с количеством ответов',
|
||||
'system_questions_answers_amount_different' => 'Количество вопросов не совпадает с количеством ответов',
|
||||
'system_questions_amount_matches' => 'Количество вопросов совпадает с количеством локализаций',
|
||||
'system_questions_amount_different' => 'Количество вопросов не совпадает с количеством локализаций',
|
||||
'system_questions_localizations_amount_matches' => 'Количества локализаций совпадает друг с другом',
|
||||
'system_questions_localizations_amount_different' => 'Количества локализаций не совпадает друг с другом',
|
||||
'system_questions_button_search' => 'Поиск',
|
||||
'system_questions_button_create' => 'Создать',
|
||||
// Вопросы (система)
|
||||
'system_questions_title' => 'Реестр вопросов',
|
||||
'system_questions_questions' => 'Вопросы',
|
||||
'system_questions_answers' => 'Ответы',
|
||||
'system_questions_answers_amount_matches' => 'Количество вопросов совпадает с количеством ответов',
|
||||
'system_questions_answers_amount_different' => 'Количество вопросов не совпадает с количеством ответов',
|
||||
'system_questions_amount_matches' => 'Количество вопросов совпадает с количеством локализаций',
|
||||
'system_questions_amount_different' => 'Количество вопросов не совпадает с количеством локализаций',
|
||||
'system_questions_localizations_amount_matches' => 'Количества локализаций совпадает друг с другом',
|
||||
'system_questions_localizations_amount_different' => 'Количества локализаций не совпадает друг с другом',
|
||||
'system_questions_button_search' => 'Поиск',
|
||||
'system_questions_button_create' => 'Создать',
|
||||
|
||||
// Создание вопроса (система)
|
||||
'system_questions_create_created' => 'Создан вопрос',
|
||||
// Создание вопроса (система)
|
||||
'system_questions_create_created' => 'Создан вопрос',
|
||||
|
||||
// Поиск вопроса (система)
|
||||
'system_questions_search_title' => 'Процесс поиска вопроса',
|
||||
'system_questions_search_continued' => 'Процесс поиска вопроса найден и продолжен',
|
||||
'system_questions_search_started' => 'Процесс поиска вопроса начат',
|
||||
'system_questions_search_not_started' => 'Процесс поиска вопроса не начат',
|
||||
'system_questions_search_ended' => 'Процесс поиска вопроса завершён',
|
||||
'system_questions_search_page_next_exists' => 'В реестре есть ещё вопросы',
|
||||
'system_questions_search_page_next_not_exists' => 'В реестре больше нет вопросов',
|
||||
'system_questions_search_empty' => 'Вопросы не найдены',
|
||||
'system_questions_search_question_title' => 'Вопрос',
|
||||
'system_questions_search_question_answer' => 'Ответ',
|
||||
'system_questions_search_identifier_request_title' => 'Введи идентификатор',
|
||||
'system_questions_search_identifier_request_not_acceptable' => 'Не удалось обработать идентификатор',
|
||||
'system_questions_search_identifier_request_too_short' => 'Длина идентификатора должна быть \>\= 1 и \<\= 12',
|
||||
'system_questions_search_identifier_request_too_long' => 'Длина идентификатора должна быть \>\= 1 и \<\= 12',
|
||||
'system_questions_search_identifier_request_restricted_characters_title' => "Запрещены любые символы, кроме цифр",
|
||||
'system_questions_search_identifier_request_restricted_characters_description' => "Удали эти символы:",
|
||||
'system_questions_search_identifier_cancel_success' => 'Отменён процесс замены идентификатора',
|
||||
'system_questions_search_identifier_delete_success' => 'Идентификатор удалён',
|
||||
'system_questions_search_identifier_update_success' => 'Идентификатор заменён:',
|
||||
'system_questions_search_identifier_update_fail' => 'Не удалось заменить идентификатор',
|
||||
'system_questions_search_text_request_title' => 'Введи текст',
|
||||
'system_questions_search_text_request_not_acceptable' => 'Не удалось обработать текст',
|
||||
'system_questions_search_text_request_too_short' => 'Длина текста должна быть \>\= 3 и \<\= 256',
|
||||
'system_questions_search_text_request_too_long' => 'Длина текста должна быть \>\= 3 и \<\= 256',
|
||||
'system_questions_search_text_cancel_success' => 'Отменён процесс замены текста',
|
||||
'system_questions_search_text_delete_success' => 'Текст удалён',
|
||||
'system_questions_search_text_update_success' => 'Текст заменён:',
|
||||
'system_questions_search_text_update_fail' => 'Не удалось заменить текст',
|
||||
'system_questions_search_a_request_title' => 'Введи A\-ответ',
|
||||
'system_questions_search_a_request_not_acceptable' => 'Не удалось обработать A\-ответ',
|
||||
'system_questions_search_a_request_too_short' => 'Длина A\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_a_request_too_long' => 'Длина A\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_a_cancel_success' => 'Отменён процесс замены A\-ответа',
|
||||
'system_questions_search_a_delete_success' => 'A\-ответ удалён',
|
||||
'system_questions_search_a_update_success' => 'A\-ответ заменён:',
|
||||
'system_questions_search_a_update_fail' => 'Не удалось заменить A\-ответ',
|
||||
'system_questions_search_b_request_title' => 'Введи B\-ответ',
|
||||
'system_questions_search_b_request_not_acceptable' => 'Не удалось обработать B\-ответ',
|
||||
'system_questions_search_b_request_too_short' => 'Длина B\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_b_request_too_long' => 'Длина B\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_b_cancel_success' => 'Отменён процесс замены B\-ответа',
|
||||
'system_questions_search_b_delete_success' => 'B\-ответ удалён',
|
||||
'system_questions_search_b_update_success' => 'B\-ответ заменён:',
|
||||
'system_questions_search_b_update_fail' => 'Не удалось заменить B\-ответ',
|
||||
'system_questions_search_c_request_title' => 'Введи C\-ответ',
|
||||
'system_questions_search_c_request_not_acceptable' => 'Не удалось обработать C\-ответ',
|
||||
'system_questions_search_c_request_too_short' => 'Длина C\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_c_request_too_long' => 'Длина C\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_c_cancel_success' => 'Отменён процесс замены C\-ответа',
|
||||
'system_questions_search_c_delete_success' => 'C\-ответ удалён',
|
||||
'system_questions_search_c_update_success' => 'C\-ответ заменён:',
|
||||
'system_questions_search_c_update_fail' => 'Не удалось заменить C\-ответ',
|
||||
'system_questions_search_d_request_title' => 'Введи D\-ответ',
|
||||
'system_questions_search_d_request_not_acceptable' => 'Не удалось обработать D\-ответ',
|
||||
'system_questions_search_d_request_too_short' => 'Длина D\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_d_request_too_long' => 'Длина D\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_d_cancel_success' => 'Отменён процесс замены D\-ответа',
|
||||
'system_questions_search_d_delete_success' => 'D\-ответ удалён',
|
||||
'system_questions_search_d_update_success' => 'D\-ответ заменён:',
|
||||
'system_questions_search_d_update_fail' => 'Не удалось заменить D\-ответ',
|
||||
'system_questions_search_button_delete' => 'Удалить',
|
||||
'system_questions_search_button_author' => 'Автор',
|
||||
'system_questions_search_button_active' => 'Активен',
|
||||
'system_questions_search_button_inactive' => 'Неактивен',
|
||||
'system_questions_search_button_answer' => 'Ответ',
|
||||
'system_questions_search_button_localizations' => 'Локализации',
|
||||
'system_questions_search_button_identifier' => 'Идентифиикатор',
|
||||
'system_questions_search_button_text' => 'Текст',
|
||||
'system_questions_search_button_a' => 'А',
|
||||
'system_questions_search_button_b' => 'Б',
|
||||
'system_questions_search_button_c' => 'В',
|
||||
'system_questions_search_button_d' => 'Г',
|
||||
'system_questions_search_button_delete' => 'Удалить',
|
||||
'system_questions_search_button_cancel' => 'Отменить',
|
||||
'system_questions_search_button_page_next' => 'Следующая страница',
|
||||
'system_questions_search_button_end' => 'Завершить процесс поиска',
|
||||
'system_questions_search_not_localized' => 'Не удалось инициализировать локализацию вопроса',
|
||||
// Поиск вопроса (система)
|
||||
'system_questions_search_title' => 'Процесс поиска вопроса',
|
||||
'system_questions_search_continued' => 'Процесс поиска вопроса найден и продолжен',
|
||||
'system_questions_search_started' => 'Процесс поиска вопроса начат',
|
||||
'system_questions_search_not_started' => 'Процесс поиска вопроса не начат',
|
||||
'system_questions_search_ended' => 'Процесс поиска вопроса завершён',
|
||||
'system_questions_search_page_next_exists' => 'В реестре есть ещё вопросы',
|
||||
'system_questions_search_page_next_not_exists' => 'В реестре больше нет вопросов',
|
||||
'system_questions_search_empty' => 'Вопросы не найдены',
|
||||
'system_questions_search_question_title' => 'Вопрос',
|
||||
'system_questions_search_question_answer' => 'Ответ',
|
||||
'system_questions_search_identifier_request_title' => 'Введи идентификатор',
|
||||
'system_questions_search_identifier_request_not_acceptable' => 'Не удалось обработать идентификатор',
|
||||
'system_questions_search_identifier_request_too_short' => 'Длина идентификатора должна быть \>\= 1 и \<\= 12',
|
||||
'system_questions_search_identifier_request_too_long' => 'Длина идентификатора должна быть \>\= 1 и \<\= 12',
|
||||
'system_questions_search_identifier_request_restricted_characters_title' => "Запрещены любые символы, кроме цифр",
|
||||
'system_questions_search_identifier_request_restricted_characters_description' => "Удали эти символы:",
|
||||
'system_questions_search_identifier_cancel_success' => 'Отменён процесс замены идентификатора',
|
||||
'system_questions_search_identifier_delete_success' => 'Идентификатор удалён',
|
||||
'system_questions_search_identifier_update_success' => 'Идентификатор заменён:',
|
||||
'system_questions_search_identifier_update_fail' => 'Не удалось заменить идентификатор',
|
||||
'system_questions_search_text_request_title' => 'Введи текст',
|
||||
'system_questions_search_text_request_not_acceptable' => 'Не удалось обработать текст',
|
||||
'system_questions_search_text_request_too_short' => 'Длина текста должна быть \>\= 3 и \<\= 256',
|
||||
'system_questions_search_text_request_too_long' => 'Длина текста должна быть \>\= 3 и \<\= 256',
|
||||
'system_questions_search_text_cancel_success' => 'Отменён процесс замены текста',
|
||||
'system_questions_search_text_delete_success' => 'Текст удалён',
|
||||
'system_questions_search_text_update_success' => 'Текст заменён:',
|
||||
'system_questions_search_text_update_fail' => 'Не удалось заменить текст',
|
||||
'system_questions_search_a_request_title' => 'Введи A\-ответ',
|
||||
'system_questions_search_a_request_not_acceptable' => 'Не удалось обработать A\-ответ',
|
||||
'system_questions_search_a_request_too_short' => 'Длина A\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_a_request_too_long' => 'Длина A\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_a_cancel_success' => 'Отменён процесс замены A\-ответа',
|
||||
'system_questions_search_a_delete_success' => 'A\-ответ удалён',
|
||||
'system_questions_search_a_update_success' => 'A\-ответ заменён:',
|
||||
'system_questions_search_a_update_fail' => 'Не удалось заменить A\-ответ',
|
||||
'system_questions_search_b_request_title' => 'Введи B\-ответ',
|
||||
'system_questions_search_b_request_not_acceptable' => 'Не удалось обработать B\-ответ',
|
||||
'system_questions_search_b_request_too_short' => 'Длина B\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_b_request_too_long' => 'Длина B\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_b_cancel_success' => 'Отменён процесс замены B\-ответа',
|
||||
'system_questions_search_b_delete_success' => 'B\-ответ удалён',
|
||||
'system_questions_search_b_update_success' => 'B\-ответ заменён:',
|
||||
'system_questions_search_b_update_fail' => 'Не удалось заменить B\-ответ',
|
||||
'system_questions_search_c_request_title' => 'Введи C\-ответ',
|
||||
'system_questions_search_c_request_not_acceptable' => 'Не удалось обработать C\-ответ',
|
||||
'system_questions_search_c_request_too_short' => 'Длина C\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_c_request_too_long' => 'Длина C\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_c_cancel_success' => 'Отменён процесс замены C\-ответа',
|
||||
'system_questions_search_c_delete_success' => 'C\-ответ удалён',
|
||||
'system_questions_search_c_update_success' => 'C\-ответ заменён:',
|
||||
'system_questions_search_c_update_fail' => 'Не удалось заменить C\-ответ',
|
||||
'system_questions_search_d_request_title' => 'Введи D\-ответ',
|
||||
'system_questions_search_d_request_not_acceptable' => 'Не удалось обработать D\-ответ',
|
||||
'system_questions_search_d_request_too_short' => 'Длина D\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_d_request_too_long' => 'Длина D\-ответа должна быть \>\= 3 и \<\= 128',
|
||||
'system_questions_search_d_cancel_success' => 'Отменён процесс замены D\-ответа',
|
||||
'system_questions_search_d_delete_success' => 'D\-ответ удалён',
|
||||
'system_questions_search_d_update_success' => 'D\-ответ заменён:',
|
||||
'system_questions_search_d_update_fail' => 'Не удалось заменить D\-ответ',
|
||||
'system_questions_search_button_delete' => 'Удалить',
|
||||
'system_questions_search_button_author' => 'Автор',
|
||||
'system_questions_search_button_active' => 'Активен',
|
||||
'system_questions_search_button_inactive' => 'Неактивен',
|
||||
'system_questions_search_button_answer' => 'Ответ',
|
||||
'system_questions_search_button_localizations' => 'Локализации',
|
||||
'system_questions_search_button_identifier' => 'Идентифиикатор',
|
||||
'system_questions_search_button_text' => 'Текст',
|
||||
'system_questions_search_button_a' => 'А',
|
||||
'system_questions_search_button_b' => 'Б',
|
||||
'system_questions_search_button_c' => 'В',
|
||||
'system_questions_search_button_d' => 'Г',
|
||||
'system_questions_search_button_delete' => 'Удалить',
|
||||
'system_questions_search_button_cancel' => 'Отменить',
|
||||
'system_questions_search_button_page_next' => 'Следующая страница',
|
||||
'system_questions_search_button_end' => 'Завершить процесс поиска',
|
||||
'system_questions_search_not_localized' => 'Не удалось инициализировать локализацию вопроса',
|
||||
|
||||
// Создание локализации вопроса (система)
|
||||
'system_questions_localization_create_created' => 'Создана локализация вопроса',
|
||||
// Создание локализации вопроса (система)
|
||||
'system_questions_localization_create_created' => 'Создана локализация вопроса',
|
||||
|
||||
// Авторизация
|
||||
'not_authorized_system' => 'У тебя нет доступа к системе',
|
||||
'not_authorized_game_play' => 'У тебя нет доступа к играм',
|
||||
'not_authorized_rating_display' => 'У тебя нет доступа к отображению в рейтинге',
|
||||
'not_authorized_balance_deposit' => 'У тебя нет доступа к пополнению баланса',
|
||||
'not_authorized_balance_withdraw' => 'У тебя нет доступа к выводу баланса',
|
||||
'not_authorized_settings' => 'У тебя нет доступа к настройкам',
|
||||
'not_authorized_system_accounts' => 'У тебя нет системного доступа к аккаунтам',
|
||||
'not_authorized_system_questions' => 'У тебя нет системного доступа к вопросам',
|
||||
'not_authorized_system_settings' => 'У тебя нет системного доступа к системным настройкам',
|
||||
// Авторизация
|
||||
'not_authorized_system' => 'У тебя нет доступа к системе',
|
||||
'not_authorized_game_play' => 'У тебя нет доступа к играм',
|
||||
'not_authorized_rating_display' => 'У тебя нет доступа к отображению в рейтинге',
|
||||
'not_authorized_balance_deposit' => 'У тебя нет доступа к пополнению баланса',
|
||||
'not_authorized_balance_withdraw' => 'У тебя нет доступа к выводу баланса',
|
||||
'not_authorized_settings' => 'У тебя нет доступа к настройкам',
|
||||
'not_authorized_system_accounts' => 'У тебя нет системного доступа к аккаунтам',
|
||||
'not_authorized_system_questions' => 'У тебя нет системного доступа к вопросам',
|
||||
'not_authorized_system_settings' => 'У тебя нет системного доступа к системным настройкам',
|
||||
|
||||
// Прочее
|
||||
'why_so_shroomious' => 'почему такой грибъёзный',
|
||||
// Прочее
|
||||
'why_so_shroomious' => 'почему такой грибъёзный',
|
||||
];
|
||||
|
|
|
@ -202,15 +202,15 @@ final class account extends core
|
|||
$identifier,
|
||||
$name,
|
||||
$language->name,
|
||||
ACCOUNT_ACCESS_SYSTEM,
|
||||
ACCOUNT_ACCESS_GAME_PLAY,
|
||||
ACCOUNT_ACCESS_RATING_DISPLAY,
|
||||
ACCOUNT_ACCESS_BALANCE_DEPOSIT,
|
||||
ACCOUNT_ACCESS_BALANCE_WITHDRAW,
|
||||
ACCOUNT_ACCESS_SETTINGS,
|
||||
ACCOUNT_ACCESS_SYSTEM_ACCOUNTS,
|
||||
ACCOUNT_ACCESS_SYSTEM_QUESTIONS,
|
||||
ACCOUNT_ACCESS_SYSTEM_SETTINGS,
|
||||
1, // ACCOUNT_ACCESS_SYSTEM
|
||||
1, // ACCOUNT_ACCESS_GAME_PLAY
|
||||
1, // ACCOUNT_ACCESS_RATING_DISPLAY
|
||||
1, // ACCOUNT_ACCESS_BALANCE_DEPOSIT
|
||||
1, // ACCOUNT_ACCESS_BALANCE_WITHDRAW
|
||||
1, // ACCOUNT_ACCESS_SETTINGS
|
||||
0, // ACCOUNT_ACCESS_SYSTEM_ACCOUNTS
|
||||
0, // ACCOUNT_ACCESS_SYSTEM_QUESTIONS
|
||||
0, // ACCOUNT_ACCESS_SYSTEM_SETTINGS
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
|
|
|
@ -6,22 +6,22 @@ namespace mirzaev\deeproots\models;
|
|||
|
||||
// Files of the project
|
||||
use mirzaev\deeproots\models\core,
|
||||
mirzaev\deeproots\models\question,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
mirzaev\deeproots\models\question,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
|
||||
// Svoboda time
|
||||
use svoboda\time\statement as svoboda;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\database,
|
||||
mirzaev\baza\column,
|
||||
mirzaev\baza\record,
|
||||
mirzaev\baza\enumerations\encoding,
|
||||
mirzaev\baza\enumerations\type;
|
||||
mirzaev\baza\column,
|
||||
mirzaev\baza\record,
|
||||
mirzaev\baza\enumerations\encoding,
|
||||
mirzaev\baza\enumerations\type;
|
||||
|
||||
// Built-in libraries
|
||||
use Exception as exception,
|
||||
RuntimeException as exception_runtime;
|
||||
RuntimeException as exception_runtime;
|
||||
|
||||
/**
|
||||
* Answer
|
||||
|
@ -34,77 +34,77 @@ use Exception as exception,
|
|||
*/
|
||||
final class answer extends core
|
||||
{
|
||||
/**
|
||||
* File
|
||||
*
|
||||
* @var string $database Path to the database file
|
||||
*/
|
||||
protected string $file = DATABASES . DIRECTORY_SEPARATOR . 'answers.baza';
|
||||
/**
|
||||
* File
|
||||
*
|
||||
* @var string $database Path to the database file
|
||||
*/
|
||||
protected string $file = DATABASES . DIRECTORY_SEPARATOR . 'answers.baza';
|
||||
|
||||
/**
|
||||
* Database
|
||||
*
|
||||
* @var database $database The database
|
||||
*/
|
||||
public protected(set) database $database;
|
||||
/**
|
||||
* Database
|
||||
*
|
||||
* @var database $database The database
|
||||
*/
|
||||
public protected(set) database $database;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param language $language Questions language
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initializing the database
|
||||
$this->database = new database()
|
||||
->encoding(encoding::ascii)
|
||||
->columns(
|
||||
new column('identifier', type::long_long_unsigned),
|
||||
new column('A', type::char),
|
||||
new column('B', type::char),
|
||||
new column('C', type::char),
|
||||
new column('D', type::char),
|
||||
new column('updated', type::integer_unsigned),
|
||||
new column('created', type::integer_unsigned)
|
||||
)
|
||||
->connect($this->file);
|
||||
}
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param language $language Questions language
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initializing the database
|
||||
$this->database = new database()
|
||||
->encoding(encoding::ascii)
|
||||
->columns(
|
||||
new column('identifier', type::long_long_unsigned),
|
||||
new column('A', type::char),
|
||||
new column('B', type::char),
|
||||
new column('C', type::char),
|
||||
new column('D', type::char),
|
||||
new column('updated', type::integer_unsigned),
|
||||
new column('created', type::integer_unsigned)
|
||||
)
|
||||
->connect($this->file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create
|
||||
*
|
||||
* Creates the record in the database
|
||||
*
|
||||
* @param int $identifier Identifier (same for questions in every language)
|
||||
* @param int $a Number of points for answer A
|
||||
* @param int $b Number of points for answer B
|
||||
* @param int $c Number of points for answer C
|
||||
* @param int $d Number of points for answer D
|
||||
*
|
||||
* @return int|false The record identifier, if created
|
||||
*/
|
||||
public function create(?int $identifier, int $a = 0, int $b = 0, int $c = 0, int $d = 0): int|false
|
||||
{
|
||||
// Initializing the identifier
|
||||
$identifier ??= $this->database->count() + 1;
|
||||
/**
|
||||
* Create
|
||||
*
|
||||
* Creates the record in the database
|
||||
*
|
||||
* @param int $identifier Identifier (same for questions in every language)
|
||||
* @param int $a Number of points for answer A
|
||||
* @param int $b Number of points for answer B
|
||||
* @param int $c Number of points for answer C
|
||||
* @param int $d Number of points for answer D
|
||||
*
|
||||
* @return int|false The record identifier, if created
|
||||
*/
|
||||
public function create(?int $identifier, int $a = 0, int $b = 0, int $c = 0, int $d = 0): int|false
|
||||
{
|
||||
// Initializing the identifier
|
||||
$identifier ??= $this->database->count() + 1;
|
||||
|
||||
// Initializing the record
|
||||
$record = $this->database->record(
|
||||
$identifier,
|
||||
$a,
|
||||
$b,
|
||||
$c,
|
||||
$d,
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
// Initializing the record
|
||||
$record = $this->database->record(
|
||||
$identifier,
|
||||
$a,
|
||||
$b,
|
||||
$c,
|
||||
$d,
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
|
||||
// Creating the record in the database
|
||||
$created = $this->database->write($record);
|
||||
// Creating the record in the database
|
||||
$created = $this->database->write($record);
|
||||
|
||||
// Exit (success)
|
||||
return $created ? $identifier : false;
|
||||
}
|
||||
// Exit (success)
|
||||
return $created ? $identifier : false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace mirzaev\deeproots\models;
|
|||
|
||||
// Framework for PHP
|
||||
use mirzaev\minimal\model,
|
||||
mirzaev\minimal\http\enumerations\status;
|
||||
mirzaev\minimal\http\enumerations\status;
|
||||
|
||||
// Built-in libraries
|
||||
use exception;
|
||||
|
@ -23,22 +23,21 @@ use exception;
|
|||
*/
|
||||
class core extends model
|
||||
{
|
||||
/**
|
||||
* File
|
||||
*
|
||||
* @var string database Path to the database file
|
||||
*/
|
||||
protected string $file = DATABASES . DIRECTORY_SEPARATOR . 'example.baza';
|
||||
/**
|
||||
* File
|
||||
*
|
||||
* @var string database Path to the database file
|
||||
*/
|
||||
protected string $file = DATABASES . DIRECTORY_SEPARATOR . 'example.baza';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* Initialize the database
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* Initialize the database
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,22 +6,22 @@ namespace mirzaev\deeproots\models;
|
|||
|
||||
// Files of the project
|
||||
use mirzaev\deeproots\models\core,
|
||||
mirzaev\deeproots\models\question\localization,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
mirzaev\deeproots\models\question\localization,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
|
||||
// Svoboda time
|
||||
use svoboda\time\statement as svoboda;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\database,
|
||||
mirzaev\baza\column,
|
||||
mirzaev\baza\record,
|
||||
mirzaev\baza\enumerations\encoding,
|
||||
mirzaev\baza\enumerations\type;
|
||||
mirzaev\baza\column,
|
||||
mirzaev\baza\record,
|
||||
mirzaev\baza\enumerations\encoding,
|
||||
mirzaev\baza\enumerations\type;
|
||||
|
||||
// Built-in libraries
|
||||
use Exception as exception,
|
||||
RuntimeException as exception_runtime;
|
||||
RuntimeException as exception_runtime;
|
||||
|
||||
/**
|
||||
* Question
|
||||
|
@ -34,65 +34,65 @@ use Exception as exception,
|
|||
*/
|
||||
final class question extends core
|
||||
{
|
||||
/**
|
||||
* File
|
||||
*
|
||||
* @var string $database Path to the database file
|
||||
*/
|
||||
protected string $file = DATABASES . DIRECTORY_SEPARATOR . 'questions.baza';
|
||||
/**
|
||||
* File
|
||||
*
|
||||
* @var string $database Path to the database file
|
||||
*/
|
||||
protected string $file = DATABASES . DIRECTORY_SEPARATOR . 'questions.baza';
|
||||
|
||||
/**
|
||||
* Database
|
||||
*
|
||||
* @var database $database The database
|
||||
*/
|
||||
public protected(set) database $database;
|
||||
/**
|
||||
* Database
|
||||
*
|
||||
* @var database $database The database
|
||||
*/
|
||||
public protected(set) database $database;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initializing the database
|
||||
$this->database = new database()
|
||||
->encoding(encoding::ascii)
|
||||
->columns(
|
||||
new column('identifier', type::long_long_unsigned),
|
||||
new column('active', type::char),
|
||||
new column('updated', type::integer_unsigned),
|
||||
new column('created', type::integer_unsigned)
|
||||
)
|
||||
->connect($this->file);
|
||||
}
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initializing the database
|
||||
$this->database = new database()
|
||||
->encoding(encoding::ascii)
|
||||
->columns(
|
||||
new column('identifier', type::integer_unsigned),
|
||||
new column('active', type::char),
|
||||
new column('updated', type::integer_unsigned),
|
||||
new column('created', type::integer_unsigned)
|
||||
)
|
||||
->connect($this->file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create
|
||||
*
|
||||
* Creates the record in the database
|
||||
*
|
||||
* @param bool $active Is the question active?
|
||||
*
|
||||
* @return int|false The record identifier, if created
|
||||
*/
|
||||
public function create(bool $active = false): int|false
|
||||
{
|
||||
// Initializing the identifier
|
||||
$identifier ??= $this->database->count() + 1;
|
||||
/**
|
||||
* Create
|
||||
*
|
||||
* Creates the record in the database
|
||||
*
|
||||
* @param bool $active Is the question active?
|
||||
*
|
||||
* @return int|false The record identifier, if created
|
||||
*/
|
||||
public function create(bool $active = false): int|false
|
||||
{
|
||||
// Initializing the identifier
|
||||
$identifier ??= $this->database->count() + 1;
|
||||
|
||||
// Initializing the record
|
||||
$record = $this->database->record(
|
||||
$identifier,
|
||||
(int) $active,
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
// Initializing the record
|
||||
$record = $this->database->record(
|
||||
$identifier,
|
||||
(int) $active,
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
|
||||
// Creating the record in the database
|
||||
$created = $this->database->write($record);
|
||||
// Creating the record in the database
|
||||
$created = $this->database->write($record);
|
||||
|
||||
// Exit (success)
|
||||
return $created ? $identifier : false;
|
||||
}
|
||||
// Exit (success)
|
||||
return $created ? $identifier : false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,22 +6,22 @@ namespace mirzaev\deeproots\models\question;
|
|||
|
||||
// Files of the project
|
||||
use mirzaev\deeproots\models\core,
|
||||
mirzaev\deeproots\models\question,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
mirzaev\deeproots\models\question,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
|
||||
// Svoboda time
|
||||
use svoboda\time\statement as svoboda;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\database,
|
||||
mirzaev\baza\column,
|
||||
mirzaev\baza\record,
|
||||
mirzaev\baza\enumerations\encoding,
|
||||
mirzaev\baza\enumerations\type;
|
||||
mirzaev\baza\column,
|
||||
mirzaev\baza\record,
|
||||
mirzaev\baza\enumerations\encoding,
|
||||
mirzaev\baza\enumerations\type;
|
||||
|
||||
// Built-in libraries
|
||||
use Exception as exception,
|
||||
RuntimeException as exception_runtime;
|
||||
RuntimeException as exception_runtime;
|
||||
|
||||
/**
|
||||
* Question localization
|
||||
|
@ -34,77 +34,77 @@ use Exception as exception,
|
|||
*/
|
||||
final class localization extends core
|
||||
{
|
||||
/**
|
||||
* Files
|
||||
*
|
||||
* @var string $database Path to the database files
|
||||
*/
|
||||
protected string $files = DATABASES . DIRECTORY_SEPARATOR . 'questions' . DIRECTORY_SEPARATOR . 'localizations';
|
||||
/**
|
||||
* Files
|
||||
*
|
||||
* @var string $database Path to the database files
|
||||
*/
|
||||
protected string $files = DATABASES . DIRECTORY_SEPARATOR . 'questions' . DIRECTORY_SEPARATOR . 'localizations';
|
||||
|
||||
/**
|
||||
* Database
|
||||
*
|
||||
* @var database $database The database
|
||||
*/
|
||||
public protected(set) database $database;
|
||||
/**
|
||||
* Database
|
||||
*
|
||||
* @var database $database The database
|
||||
*/
|
||||
public protected(set) database $database;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param language $language Language
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(language $language)
|
||||
{
|
||||
// Initializing the database
|
||||
$this->database = new database()
|
||||
->encoding(encoding::ascii)
|
||||
->columns(
|
||||
new column('identifier', type::long_long_unsigned),
|
||||
new column('text', type::string, ['length' => 256]),
|
||||
new column('A', type::string, ['length' => 128]),
|
||||
new column('B', type::string, ['length' => 128]),
|
||||
new column('C', type::string, ['length' => 128]),
|
||||
new column('D', type::string, ['length' => 128]),
|
||||
new column('updated', type::integer_unsigned),
|
||||
new column('created', type::integer_unsigned)
|
||||
)
|
||||
->connect($this->files . DIRECTORY_SEPARATOR . strtolower($language->label()) . '.baza');
|
||||
}
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param language $language Language
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(language $language)
|
||||
{
|
||||
// Initializing the database
|
||||
$this->database = new database()
|
||||
->encoding(encoding::ascii)
|
||||
->columns(
|
||||
new column('identifier', type::long_long_unsigned),
|
||||
new column('text', type::string, ['length' => 256]),
|
||||
new column('A', type::string, ['length' => 128]),
|
||||
new column('B', type::string, ['length' => 128]),
|
||||
new column('C', type::string, ['length' => 128]),
|
||||
new column('D', type::string, ['length' => 128]),
|
||||
new column('updated', type::integer_unsigned),
|
||||
new column('created', type::integer_unsigned)
|
||||
)
|
||||
->connect($this->files . DIRECTORY_SEPARATOR . strtolower($language->label()) . '.baza');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create
|
||||
*
|
||||
* Creates the record in the database
|
||||
*
|
||||
* @param int $identifier Identifier of the question::class record
|
||||
* @param string $text Text (length: 256)
|
||||
* @param string $a Answer A (length: 128)
|
||||
* @param string $b Answer B (length: 128)
|
||||
* @param string $c Answer C (length: 128)
|
||||
* @param string $d Answer D (length: 128)
|
||||
*
|
||||
* @return int|false The record identifier, if created
|
||||
*/
|
||||
public function create(int $identifier, string $text, string $a, string $b, string $c, string $d): int|false
|
||||
{
|
||||
// Initializing the record
|
||||
$record = $this->database->record(
|
||||
$identifier,
|
||||
$text,
|
||||
$a,
|
||||
$b,
|
||||
$c,
|
||||
$d,
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
/**
|
||||
* Create
|
||||
*
|
||||
* Creates the record in the database
|
||||
*
|
||||
* @param int $identifier Identifier of the question::class record
|
||||
* @param string $text Text (length: 256)
|
||||
* @param string $a Answer A (length: 128)
|
||||
* @param string $b Answer B (length: 128)
|
||||
* @param string $c Answer C (length: 128)
|
||||
* @param string $d Answer D (length: 128)
|
||||
*
|
||||
* @return int|false The record identifier, if created
|
||||
*/
|
||||
public function create(int $identifier, string $text, string $a, string $b, string $c, string $d): int|false
|
||||
{
|
||||
// Initializing the record
|
||||
$record = $this->database->record(
|
||||
$identifier,
|
||||
$text,
|
||||
$a,
|
||||
$b,
|
||||
$c,
|
||||
$d,
|
||||
svoboda::timestamp(),
|
||||
svoboda::timestamp()
|
||||
);
|
||||
|
||||
// Creating the record in the database
|
||||
$created = $this->database->write($record);
|
||||
// Creating the record in the database
|
||||
$created = $this->database->write($record);
|
||||
|
||||
// Exit (success)
|
||||
return $created ? $identifier : false;
|
||||
}
|
||||
// Exit (success)
|
||||
return $created ? $identifier : false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,14 +6,14 @@ namespace svoboda\svoboder\models\telegram\buttons\account\localization;
|
|||
|
||||
// Files of the project
|
||||
use svoboda\svoboder\models\core,
|
||||
svoboda\svoboder\models\enumerations\language,
|
||||
svoboda\svoboder\models\account,
|
||||
svoboda\svoboder\models\telegram\selections,
|
||||
svoboda\svoboder\models\telegram\processes\account\localization\create as process_account_localization_create;
|
||||
svoboda\svoboder\models\enumerations\language,
|
||||
svoboda\svoboder\models\account,
|
||||
svoboda\svoboder\models\telegram\selections,
|
||||
svoboda\svoboder\models\telegram\processes\account\localization\create as process_account_localization_create;
|
||||
|
||||
// Framework for Telegram
|
||||
use Zanzara\Context as context,
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\record;
|
||||
|
@ -28,201 +28,201 @@ use mirzaev\baza\record;
|
|||
*/
|
||||
final class create extends core
|
||||
{
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* Send the language selection menu
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function language(context $context)
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* Send the language selection menu
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function language(context $context)
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing language
|
||||
$language = $context->get('language');
|
||||
// Initializing language
|
||||
$language = $context->get('language');
|
||||
|
||||
if ($language) {
|
||||
// Initialized language
|
||||
if ($language) {
|
||||
// Initialized language
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Reading from the telegram user buffer
|
||||
$context->getUserDataItem(process_account_localization_create::PROCESS)
|
||||
->then(function (?array $process) use ($context, $account, $localization) {
|
||||
// Readed from the telegram user buffer
|
||||
// Reading from the telegram user buffer
|
||||
$context->getUserDataItem(process_account_localization_create::PROCESS)
|
||||
->then(function (?array $process) use ($context, $account, $localization) {
|
||||
// Readed from the telegram user buffer
|
||||
|
||||
if ($process) {
|
||||
// Found started account localization create process
|
||||
if ($process) {
|
||||
// Found started account localization create process
|
||||
|
||||
// Initializing the account model
|
||||
$model_account = new account;
|
||||
// Initializing the account model
|
||||
$model_account = new account;
|
||||
|
||||
// Initializing the account localizations
|
||||
$existed = $model_account->localization->database->read(
|
||||
filter: fn(record $localization) => $localization->account === $account->identifier,
|
||||
amount: ACCOUNT_LOCALIZATION_CREATE_ACCOUNT_LOCALIZATIONS_AMOUNT
|
||||
);
|
||||
// Initializing the account localizations
|
||||
$existed = $model_account->localization->database->read(
|
||||
filter: fn(record $localization) => $localization->account === $account->identifier,
|
||||
amount: ACCOUNT_LOCALIZATION_CREATE_ACCOUNT_LOCALIZATIONS_AMOUNT
|
||||
);
|
||||
|
||||
// Declaring the buffer of languages to exclude
|
||||
$exclude = [];
|
||||
// Declaring the buffer of languages to exclude
|
||||
$exclude = [];
|
||||
|
||||
// Initializing languages to exclude
|
||||
foreach ($existed as $record) $exclude[] = $record->language;
|
||||
// Initializing languages to exclude
|
||||
foreach ($existed as $record) $exclude[] = $record->language;
|
||||
|
||||
if (count($exclude) !== count(language::cases())) {
|
||||
// Not all languages in the registry have localizations created (expected)
|
||||
if (count($exclude) !== count(language::cases())) {
|
||||
// Not all languages in the registry have localizations created (expected)
|
||||
|
||||
// Sending the language selection
|
||||
selections::language(
|
||||
context: $context,
|
||||
prefix: 'account_localization_create_select_language_',
|
||||
title: '🌏 *' . $localization['account_localization_create_select_language_title'] . '*',
|
||||
description: '🌏 *' . $localization['account_localization_create_select_language_description'] . '*',
|
||||
exclude: $exclude
|
||||
);
|
||||
} else {
|
||||
// All languages in the registry have localizations created (expected)
|
||||
// Sending the language selection
|
||||
selections::language(
|
||||
context: $context,
|
||||
prefix: 'account_localization_create_select_language_',
|
||||
title: '🌏 *' . $localization['account_localization_create_select_language_title'] . '*',
|
||||
description: '🌏 *' . $localization['account_localization_create_select_language_description'] . '*',
|
||||
exclude: $exclude
|
||||
);
|
||||
} else {
|
||||
// All languages in the registry have localizations created (expected)
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_create_every_language_created'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_create_every_language_created'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not found started account localization create process
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not found started account localization create process
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_create_not_started'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_create_not_started'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized language
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized language
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize language*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize language*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Name
|
||||
*
|
||||
* Request to enter name
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function name(context $context)
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
/**
|
||||
* Name
|
||||
*
|
||||
* Request to enter name
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function name(context $context)
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Reading from the telegram user buffer
|
||||
$context->getUserDataItem(process_account_localization_create::PROCESS)
|
||||
->then(function (?array $process) use ($context, $account, $localization) {
|
||||
// Readed from the telegram user buffer
|
||||
// Reading from the telegram user buffer
|
||||
$context->getUserDataItem(process_account_localization_create::PROCESS)
|
||||
->then(function (?array $process) use ($context, $account, $localization) {
|
||||
// Readed from the telegram user buffer
|
||||
|
||||
if ($process) {
|
||||
// Found started account localization create process
|
||||
if ($process) {
|
||||
// Found started account localization create process
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('📄 *' . $localization['account_localization_create_name_request'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('📄 *' . $localization['account_localization_create_name_request'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Writing into the account localization create buffer
|
||||
$context->nextStep([process_account_localization_create::class, 'name']);
|
||||
});
|
||||
} else {
|
||||
// Not found started account localization create process
|
||||
// Writing into the account localization create buffer
|
||||
$context->nextStep([process_account_localization_create::class, 'name']);
|
||||
});
|
||||
} else {
|
||||
// Not found started account localization create process
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_create_not_started'] . '*');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_create_not_started'] . '*');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,14 +6,14 @@ namespace svoboda\svoboder\models\telegram\buttons\account\localization;
|
|||
|
||||
// Files of the project
|
||||
use svoboda\svoboder\models\core,
|
||||
svoboda\svoboder\models\enumerations\language,
|
||||
svoboda\svoboder\models\account,
|
||||
svoboda\svoboder\models\telegram\selections,
|
||||
svoboda\svoboder\models\telegram\processes\account\localization\update as process_account_localization_update;
|
||||
svoboda\svoboder\models\enumerations\language,
|
||||
svoboda\svoboder\models\account,
|
||||
svoboda\svoboder\models\telegram\selections,
|
||||
svoboda\svoboder\models\telegram\processes\account\localization\update as process_account_localization_update;
|
||||
|
||||
// Framework for Telegram
|
||||
use Zanzara\Context as context,
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\record;
|
||||
|
@ -28,75 +28,75 @@ use mirzaev\baza\record;
|
|||
*/
|
||||
final class update extends core
|
||||
{
|
||||
/**
|
||||
* Name
|
||||
*
|
||||
* Request to enter name
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function name(context $context)
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
/**
|
||||
* Name
|
||||
*
|
||||
* Request to enter name
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function name(context $context)
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Reading from the telegram user buffer
|
||||
$context->getUserDataItem(process_account_localization_update::PROCESS)
|
||||
->then(function (?array $process) use ($context, $account, $localization) {
|
||||
// Readed from the telegram user buffer
|
||||
// Reading from the telegram user buffer
|
||||
$context->getUserDataItem(process_account_localization_update::PROCESS)
|
||||
->then(function (?array $process) use ($context, $account, $localization) {
|
||||
// Readed from the telegram user buffer
|
||||
|
||||
if ($process) {
|
||||
// Found started account localization update process
|
||||
if ($process) {
|
||||
// Found started account localization update process
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('📄 *' . $localization['account_localization_update_name_request'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('📄 *' . $localization['account_localization_update_name_request'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Writing into the account localization update buffer
|
||||
$context->nextStep([process_account_localization_update::class, 'name']);
|
||||
});
|
||||
} else {
|
||||
// Not found started account localization update process
|
||||
// Writing into the account localization update buffer
|
||||
$context->nextStep([process_account_localization_update::class, 'name']);
|
||||
});
|
||||
} else {
|
||||
// Not found started account localization update process
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_update_not_started'] . '*');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *' . $localization['account_localization_update_not_started'] . '*');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -412,79 +412,6 @@ final class middlewares extends core
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Join (middleware)
|
||||
*
|
||||
* Check the account for access to join to distributions
|
||||
*
|
||||
* @param context $context
|
||||
* @param node $next
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function join(context $context, node $next): void
|
||||
{
|
||||
// Is the process stopped?
|
||||
if ($context->get('stop')) return;
|
||||
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
if ($account->authorized_joins) {
|
||||
// Authorized the account to joint to distributions
|
||||
|
||||
// Continuation of the process
|
||||
$next($context);
|
||||
} else {
|
||||
// Not authorized the account to joint to distributions
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⛔ *' . $localization['not_authorized_joins'] . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
|
||||
// Stopping the process
|
||||
$context->set('stop', true);
|
||||
}
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Settings (middleware)
|
||||
*
|
||||
|
|
|
@ -6,17 +6,17 @@ namespace mirzaev\deeproots\models\telegram\processes\language;
|
|||
|
||||
// Files of the project
|
||||
use mirzaev\deeproots\models\core,
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
mirzaev\deeproots\models\enumerations\language;
|
||||
|
||||
// Framework for Telegram
|
||||
use Zanzara\Context as context,
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\record;
|
||||
|
||||
/**
|
||||
* Telegram language select
|
||||
* Telegram language select
|
||||
*
|
||||
* @package mirzaev\deeproots\models\telegram\processes\language
|
||||
*
|
||||
|
@ -25,126 +25,126 @@ use mirzaev\baza\record;
|
|||
*/
|
||||
final class select extends core
|
||||
{
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* Send the language choose menu
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
* @param string $prefix Prefix for 'callback_data' (`$prefix . $language->name`)
|
||||
* @param string $title Title of the message
|
||||
* @param string $description Description of the message
|
||||
* @param array $exclude Languages that will be excluded ['ru', 'en'...]
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function menu(context $context, string $prefix, string $title, string $description, array $exclude = []): void
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* Send the language choose menu
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
* @param string $prefix Prefix for 'callback_data' (`$prefix . $language->name`)
|
||||
* @param string $title Title of the message
|
||||
* @param string $description Description of the message
|
||||
* @param array $exclude Languages that will be excluded ['ru', 'en'...]
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function menu(context $context, string $prefix, string $title, string $description, array $exclude = []): void
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing language
|
||||
$language = $context->get('language');
|
||||
// Initializing language
|
||||
$language = $context->get('language');
|
||||
|
||||
if ($language) {
|
||||
// Initialized language
|
||||
if ($language) {
|
||||
// Initialized language
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Declaring the buffer of generated keyboard with languages
|
||||
$keyboard = [];
|
||||
// Declaring the buffer of generated keyboard with languages
|
||||
$keyboard = [];
|
||||
|
||||
// Initializing the iterator of rows
|
||||
$row = 0;
|
||||
// Initializing the iterator of rows
|
||||
$row = 0;
|
||||
|
||||
// Initializing buffer of languages
|
||||
$languages = language::cases();
|
||||
// Initializing buffer of languages
|
||||
$languages = language::cases();
|
||||
|
||||
// Deleting the actual language from buffer of languages
|
||||
unset($languages[array_search($language, $languages, strict: true)]);
|
||||
// Deleting the actual language from buffer of languages
|
||||
unset($languages[array_search($language, $languages, strict: true)]);
|
||||
|
||||
// Sorting buffer of languages by the actual language
|
||||
$languages = [$language, ...$languages];
|
||||
// Sorting buffer of languages by the actual language
|
||||
$languages = [$language, ...$languages];
|
||||
|
||||
foreach ($languages as $language) {
|
||||
// Iterating over languages
|
||||
foreach ($languages as $language) {
|
||||
// Iterating over languages
|
||||
|
||||
// Skipping excluded languages
|
||||
if (array_search($language->name, $exclude, strict: true) !== false) continue;
|
||||
// Skipping excluded languages
|
||||
if (array_search($language->name, $exclude, strict: true) !== false) continue;
|
||||
|
||||
// Initializing the row
|
||||
$keyboard[$row] ??= [];
|
||||
// Initializing the row
|
||||
$keyboard[$row] ??= [];
|
||||
|
||||
// Writing the language choose button into the buffer of generated keyboard with languages
|
||||
$keyboard[$row][] = [
|
||||
'text' => ($language->flag() ? $language->flag() . ' ' : '') . $language->label($language),
|
||||
'callback_data' => $prefix . $language->name
|
||||
];
|
||||
// Writing the language choose button into the buffer of generated keyboard with languages
|
||||
$keyboard[$row][] = [
|
||||
'text' => ($language->flag() ? $language->flag() . ' ' : '') . $language->label($language),
|
||||
'callback_data' => $prefix . $language->name
|
||||
];
|
||||
|
||||
// When reaching 4 buttons in a row, move to the next row
|
||||
if (count($keyboard[$row]) === 4) ++$row;
|
||||
}
|
||||
// When reaching 4 buttons in a row, move to the next row
|
||||
if (count($keyboard[$row]) === 4) ++$row;
|
||||
}
|
||||
|
||||
// Writing the button for helping lozalizing
|
||||
$keyboard[$row === 0 && empty($keyboard[0]) ? 0 : ++$row] = [
|
||||
[
|
||||
'text' => '🗂 ' . $localization['select_language_button_add'],
|
||||
'url' => 'https://git.svoboda.works/mirzaev/deeproots/src/branch/stable/mirzaev/deeproots/system/localizations'
|
||||
]
|
||||
];
|
||||
// Writing the button for helping lozalizing
|
||||
$keyboard[$row === 0 && empty($keyboard[0]) ? 0 : ++$row] = [
|
||||
[
|
||||
'text' => '🗂 ' . $localization['select_language_button_add'],
|
||||
'url' => 'https://git.svoboda.works/mirzaev/deeproots/src/branch/stable/mirzaev/deeproots/system/localizations'
|
||||
]
|
||||
];
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage(
|
||||
$title ?? '🌏 *' . $localization['select_language_title'] . "*\n" . ($description ?? $localization['select_language_description']),
|
||||
[
|
||||
'reply_markup' => [
|
||||
'inline_keyboard' => $keyboard,
|
||||
'disable_notification' => true
|
||||
],
|
||||
]
|
||||
);
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Sending the message
|
||||
$context->sendMessage(
|
||||
$title ?? '🌏 *' . $localization['select_language_title'] . "*\n" . ($description ?? $localization['select_language_description']),
|
||||
[
|
||||
'reply_markup' => [
|
||||
'inline_keyboard' => $keyboard,
|
||||
'disable_notification' => true
|
||||
],
|
||||
]
|
||||
);
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized language
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized language
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize language*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize language*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,22 +6,22 @@ namespace mirzaev\deeproots\models\telegram\processes\question;
|
|||
|
||||
// Files of the project
|
||||
use mirzaev\deeproots\models\core,
|
||||
mirzaev\deeproots\models\question,
|
||||
mirzaev\deeproots\models\question\localization,
|
||||
mirzaev\deeproots\models\answer,
|
||||
mirzaev\deeproots\models\enumerations\language,
|
||||
mirzaev\deeproots\models\telegram\commands,
|
||||
mirzaev\deeproots\models\telegram\processes\question\search as process_question_search;
|
||||
mirzaev\deeproots\models\question,
|
||||
mirzaev\deeproots\models\question\localization,
|
||||
mirzaev\deeproots\models\answer,
|
||||
mirzaev\deeproots\models\enumerations\language,
|
||||
mirzaev\deeproots\models\telegram\commands,
|
||||
mirzaev\deeproots\models\telegram\processes\question\search as process_question_search;
|
||||
|
||||
// Framework for Telegram
|
||||
use Zanzara\Context as context,
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
Zanzara\Telegram\Type\Message as message;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\record;
|
||||
|
||||
/**
|
||||
* Question create (system)
|
||||
* Question create (system)
|
||||
*
|
||||
* @package mirzaev\deeproots\models\telegram\processes\question
|
||||
*
|
||||
|
@ -30,95 +30,95 @@ use mirzaev\baza\record;
|
|||
*/
|
||||
final class create extends core
|
||||
{
|
||||
/**
|
||||
* Process
|
||||
*
|
||||
* @var const string PROCESS Name of the process in the telegram user buffer
|
||||
*/
|
||||
public const string PROCESS = 'system_questions_create';
|
||||
/**
|
||||
* Process
|
||||
*
|
||||
* @var const string PROCESS Name of the process in the telegram user buffer
|
||||
*/
|
||||
public const string PROCESS = 'system_questions_create';
|
||||
|
||||
/**
|
||||
* Start
|
||||
*
|
||||
* Starting the process
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function start(context $context): void
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
/**
|
||||
* Start
|
||||
*
|
||||
* Starting the process
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function start(context $context): void
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing language
|
||||
$language = $context->get('language');
|
||||
// Initializing language
|
||||
$language = $context->get('language');
|
||||
|
||||
if ($language instanceof language) {
|
||||
// Initialized language
|
||||
if ($language instanceof language) {
|
||||
// Initialized language
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Initializing the question model
|
||||
$model_question = new question();
|
||||
// Initializing the question model
|
||||
$model_question = new question();
|
||||
|
||||
// Creating the question
|
||||
$question = $model_question->create();
|
||||
// Creating the question
|
||||
$question = $model_question->create();
|
||||
|
||||
if ($question) {
|
||||
// Created the question
|
||||
if ($question) {
|
||||
// Created the question
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('✅ *' . $localization[static::PROCESS . '_created'] . '*')
|
||||
->then(function (message $message) use ($context, $question) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('✅ *' . $localization[static::PROCESS . '_created'] . '*')
|
||||
->then(function (message $message) use ($context, $question) {
|
||||
// Sended the message
|
||||
|
||||
// Sending the question search menu
|
||||
process_question_search::start($context, $question);
|
||||
});
|
||||
};
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Sending the question search menu
|
||||
process_question_search::start($context, $question);
|
||||
});
|
||||
};
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized language
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized language
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize language*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize language*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Sended the message
|
||||
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -6,15 +6,15 @@ namespace mirzaev\deeproots\models\telegram;
|
|||
|
||||
// Files of the project
|
||||
use mirzaev\deeproots\models\core,
|
||||
mirzaev\deeproots\models\account,
|
||||
mirzaev\deeproots\models\enumerations\language,
|
||||
mirzaev\deeproots\models\telegram\middlewares;
|
||||
mirzaev\deeproots\models\account,
|
||||
mirzaev\deeproots\models\enumerations\language,
|
||||
mirzaev\deeproots\models\telegram\middlewares;
|
||||
|
||||
// Framework for Telegram
|
||||
use Zanzara\Zanzara,
|
||||
Zanzara\Context as context,
|
||||
Zanzara\Telegram\Type\Message as message,
|
||||
Zanzara\Middleware\MiddlewareNode as node;
|
||||
Zanzara\Context as context,
|
||||
Zanzara\Telegram\Type\Message as message,
|
||||
Zanzara\Middleware\MiddlewareNode as node;
|
||||
|
||||
// Baza database
|
||||
use mirzaev\baza\record;
|
||||
|
@ -32,125 +32,125 @@ use Error as error;
|
|||
*/
|
||||
final class settings extends core
|
||||
{
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* Write language into the account record
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
* @param language $language The language
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function language(context $context, language $language): void
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
/**
|
||||
* Language
|
||||
*
|
||||
* Write language into the account record
|
||||
*
|
||||
* @param context $context Request data from Telegram
|
||||
* @param language $language The language
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function language(context $context, language $language): void
|
||||
{
|
||||
// Initializing the account
|
||||
$account = $context->get('account');
|
||||
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
if ($account instanceof record) {
|
||||
// Initialized the account
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Initializing the account model
|
||||
$model = new account();
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Updating the account in the database
|
||||
$updated = $model->database->read(
|
||||
filter: fn(record $record) => $record->identifier === $account->identifier,
|
||||
update: function (record &$record) use ($language) {
|
||||
// Writing new language value into the record
|
||||
$record->language = $language->name;
|
||||
},
|
||||
amount: 1
|
||||
)[0] ?? null;
|
||||
// Initializing the account model
|
||||
$model = new account();
|
||||
|
||||
if ($updated instanceof record) {
|
||||
// Updated the account in the database
|
||||
// Updating the account in the database
|
||||
$updated = $model->database->read(
|
||||
filter: fn(record $record) => $record->identifier === $account->identifier,
|
||||
update: function (record &$record) use ($language) {
|
||||
// Writing new language value into the record
|
||||
$record->language = $language->name;
|
||||
},
|
||||
amount: 1
|
||||
)[0] ?? null;
|
||||
|
||||
// Writing the updated account into the context variable
|
||||
$context->set('account', $updated);
|
||||
if ($updated instanceof record) {
|
||||
// Updated the account in the database
|
||||
|
||||
middlewares::language($context, new node(function (context $context) use ($account, $updated) {
|
||||
// Updated language
|
||||
// Writing the updated account into the context variable
|
||||
$context->set('account', $updated);
|
||||
|
||||
middlewares::localization($context, new node(function (context $context) use ($account, $updated) {
|
||||
// Updated localization
|
||||
middlewares::language($context, new node(function (context $context) use ($account, $updated) {
|
||||
// Updated language
|
||||
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
middlewares::localization($context, new node(function (context $context) use ($account, $updated) {
|
||||
// Updated localization
|
||||
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
// Initializing localization
|
||||
$localization = $context->get('localization');
|
||||
|
||||
try {
|
||||
// Initializing the old language
|
||||
$old = language::{$account->language};
|
||||
if ($localization) {
|
||||
// Initialized localization
|
||||
|
||||
// Initializing the new language
|
||||
$new = language::{$updated->language};
|
||||
try {
|
||||
// Initializing the old language
|
||||
$old = language::{$account->language};
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('✅ *' . $localization['settings_language_update_success'] . '* ' . ($old->flag() ? $old->flag() . ' ' : '') . $old->label($new) . ' → *' . ($new->flag() ? $new->flag() . ' ' : '') . $new->label($new) . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
} catch (error $error) {
|
||||
// Failed to send the message about language update
|
||||
// Initializing the new language
|
||||
$new = language::{$updated->language};
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('❎ *' . $localization['settings_language_update_fail'])
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Sending the message
|
||||
$context->sendMessage('✅ *' . $localization['settings_language_update_success'] . '* ' . ($old->flag() ? $old->flag() . ' ' : '') . $old->label($new) . ' → *' . ($new->flag() ? $new->flag() . ' ' : '') . $new->label($new) . '*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
} catch (error $error) {
|
||||
// Failed to send the message about language update
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}));
|
||||
}));
|
||||
} else {
|
||||
// Not updated the account in the database
|
||||
// Sending the message
|
||||
$context->sendMessage('❎ *' . $localization['settings_language_update_fail'])
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('❎ *' . $localization['settings_language_update_fail'])
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized localization
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}));
|
||||
}));
|
||||
} else {
|
||||
// Not updated the account in the database
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
// Sending the message
|
||||
$context->sendMessage('❎ *' . $localization['settings_language_update_fail'])
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized localization
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize localization*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Not initialized the account
|
||||
|
||||
// Sending the message
|
||||
$context->sendMessage('⚠️ *Failed to initialize the account*')
|
||||
->then(function (message $message) use ($context) {
|
||||
// Ending the conversation process
|
||||
$context->endConversation();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,44 +14,44 @@ namespace mirzaev\deeproots\models\telegram\traits;
|
|||
*/
|
||||
trait escape
|
||||
{
|
||||
/**
|
||||
* Markdown
|
||||
*
|
||||
* Escaping for markdown
|
||||
*
|
||||
* @param string $text Text
|
||||
* @param array $exception Symbols excluded from escaping
|
||||
*
|
||||
* @return string Escaped text
|
||||
*/
|
||||
public static function markdown(string $text, array $exceptions = []): string
|
||||
{
|
||||
// Initializing the registry of symbols for escaping
|
||||
$from = array_diff(
|
||||
[
|
||||
'#',
|
||||
'*',
|
||||
'_',
|
||||
'=',
|
||||
'.',
|
||||
'[',
|
||||
']',
|
||||
'(',
|
||||
')',
|
||||
'-',
|
||||
'>',
|
||||
'<',
|
||||
'!',
|
||||
'`'
|
||||
],
|
||||
$exceptions
|
||||
);
|
||||
/**
|
||||
* Markdown
|
||||
*
|
||||
* Escaping for markdown
|
||||
*
|
||||
* @param string $text Text
|
||||
* @param array $exception Symbols excluded from escaping
|
||||
*
|
||||
* @return string Escaped text
|
||||
*/
|
||||
public static function markdown(string $text, array $exceptions = []): string
|
||||
{
|
||||
// Initializing the registry of symbols for escaping
|
||||
$from = array_diff(
|
||||
[
|
||||
'#',
|
||||
'*',
|
||||
'_',
|
||||
'=',
|
||||
'.',
|
||||
'[',
|
||||
']',
|
||||
'(',
|
||||
')',
|
||||
'-',
|
||||
'>',
|
||||
'<',
|
||||
'!',
|
||||
'`'
|
||||
],
|
||||
$exceptions
|
||||
);
|
||||
|
||||
// Initializing the registry of targets for escaping
|
||||
$to = [];
|
||||
foreach ($from as $symbol) $to[] = "\\$symbol";
|
||||
// Initializing the registry of targets for escaping
|
||||
$to = [];
|
||||
foreach ($from as $symbol) $to[] = "\\$symbol";
|
||||
|
||||
// Escaping and exit (success)
|
||||
return str_replace($from, $to, $text);
|
||||
}
|
||||
// Escaping and exit (success)
|
||||
return str_replace($from, $to, $text);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ $robot->onCommand('repository', [commands::class, 'repository']);
|
|||
/* $robot->onCommand('projects', [commands::class, 'projects']); */
|
||||
$robot->onCommand('author', [commands::class, 'author']);
|
||||
$robot->onCommand('society', [commands::class, 'society']);
|
||||
/* $robot->onCommand('system_settings', [commands::class, 'system_settings'])->middleware([middlewares::class, 'system_settings']); */
|
||||
// $robot->onCommand('system_settings', [commands::class, 'system_settings'])->middleware([middlewares::class, 'system']);
|
||||
|
||||
// Initializing the robot settings language buttons handlers
|
||||
foreach (language::cases() as $language) {
|
||||
|
|
|
@ -12,14 +12,14 @@ use mirzaev\minimal\controller;
|
|||
|
||||
// Templater of views
|
||||
use Twig\Loader\FilesystemLoader,
|
||||
Twig\Environment as twig,
|
||||
Twig\Extra\Intl\IntlExtension as intl,
|
||||
Twig\TwigFilter,
|
||||
Twig\TwigFunction;
|
||||
Twig\Environment as twig,
|
||||
Twig\Extra\Intl\IntlExtension as intl,
|
||||
Twig\TwigFilter,
|
||||
Twig\TwigFunction;
|
||||
|
||||
// Built-in libraries
|
||||
use ArrayAccess as array_access,
|
||||
Error as error;
|
||||
Error as error;
|
||||
|
||||
/**
|
||||
* Templater
|
||||
|
@ -38,174 +38,173 @@ use ArrayAccess as array_access,
|
|||
*/
|
||||
final class templater extends controller implements array_access
|
||||
{
|
||||
/**
|
||||
* Twig
|
||||
*
|
||||
* @var twig $twig Instance of the twig templater
|
||||
*/
|
||||
readonly public twig $twig;
|
||||
/**
|
||||
* Twig
|
||||
*
|
||||
* @var twig $twig Instance of the twig templater
|
||||
*/
|
||||
readonly public twig $twig;
|
||||
|
||||
/**
|
||||
* Variables
|
||||
*
|
||||
* @var array $variables Registry of view global variables
|
||||
*/
|
||||
public array $variables = [];
|
||||
/**
|
||||
* Variables
|
||||
*
|
||||
* @var array $variables Registry of view global variables
|
||||
*/
|
||||
public array $variables = [];
|
||||
|
||||
/**
|
||||
* Constructor of an instance
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initializing the Twig instance
|
||||
$this->twig = new twig(new FilesystemLoader(VIEWS));
|
||||
/**
|
||||
* Constructor of an instance
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initializing the Twig instance
|
||||
$this->twig = new twig(new FilesystemLoader(VIEWS));
|
||||
|
||||
// Initializing global variables
|
||||
$this->twig->addGlobal('theme', 'default');
|
||||
$this->twig->addGlobal('server', $_SERVER);
|
||||
$this->twig->addGlobal('cookies', $_COOKIE);
|
||||
$this->twig->addGlobal('language', $language = $session?->buffer['language'] ?? language::en);
|
||||
}
|
||||
// Initializing global variables
|
||||
$this->twig->addGlobal('theme', 'default');
|
||||
$this->twig->addGlobal('server', $_SERVER);
|
||||
$this->twig->addGlobal('cookies', $_COOKIE);
|
||||
$this->twig->addGlobal('language', $language = $session?->buffer['language'] ?? language::en);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render
|
||||
*
|
||||
* Render the HTML-document
|
||||
*
|
||||
* @param string $file Related path to a HTML-document
|
||||
* @param array $variables Registry of variables to push into registry of global variables
|
||||
*
|
||||
* @return ?string HTML-document
|
||||
*/
|
||||
public function render(string $file, array $variables = []): ?string
|
||||
{
|
||||
// Generation and exit (success)
|
||||
return $this->twig->render('themes' . DIRECTORY_SEPARATOR . $this->twig->getGlobals()['theme'] . DIRECTORY_SEPARATOR . $file, $variables + $this->variables);
|
||||
/**
|
||||
* Render
|
||||
*
|
||||
* Render the HTML-document
|
||||
*
|
||||
* @param string $file Related path to a HTML-document
|
||||
* @param array $variables Registry of variables to push into registry of global variables
|
||||
*
|
||||
* @return ?string HTML-document
|
||||
*/
|
||||
public function render(string $file, array $variables = []): ?string
|
||||
{
|
||||
// Generation and exit (success)
|
||||
return $this->twig->render('themes' . DIRECTORY_SEPARATOR . $this->twig->getGlobals()['theme'] . DIRECTORY_SEPARATOR . $file, $variables + $this->variables);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write
|
||||
*
|
||||
* Write the variable into the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
* @param mixed $value Value of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __set(string $name, mixed $value = null): void
|
||||
{
|
||||
// Write the variable and exit (success)
|
||||
$this->variables[$name] = $value;
|
||||
}
|
||||
/**
|
||||
* Write
|
||||
*
|
||||
* Write the variable into the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
* @param mixed $value Value of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __set(string $name, mixed $value = null): void
|
||||
{
|
||||
// Write the variable and exit (success)
|
||||
$this->variables[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read
|
||||
*
|
||||
* Read the variable from the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
*
|
||||
* @return mixed Content of the variable, if they are found
|
||||
*/
|
||||
public function __get(string $name): mixed
|
||||
{
|
||||
// Read the variable and exit (success)
|
||||
return $this->variables[$name];
|
||||
}
|
||||
/**
|
||||
* Read
|
||||
*
|
||||
* Read the variable from the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
*
|
||||
* @return mixed Content of the variable, if they are found
|
||||
*/
|
||||
public function __get(string $name): mixed
|
||||
{
|
||||
// Read the variable and exit (success)
|
||||
return $this->variables[$name];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete
|
||||
*
|
||||
* Delete the variable from the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __unset(string $name): void
|
||||
{
|
||||
// Delete the variable and exit (success)
|
||||
unset($this->variables[$name]);
|
||||
}
|
||||
/**
|
||||
* Delete
|
||||
*
|
||||
* Delete the variable from the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __unset(string $name): void
|
||||
{
|
||||
// Delete the variable and exit (success)
|
||||
unset($this->variables[$name]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check of initialization
|
||||
*
|
||||
* Check of initialization in the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
*
|
||||
* @return bool The variable is initialized?
|
||||
*/
|
||||
public function __isset(string $name): bool
|
||||
{
|
||||
// Check of initialization of the variable and exit (success)
|
||||
return isset($this->variables[$name]);
|
||||
}
|
||||
/**
|
||||
* Check of initialization
|
||||
*
|
||||
* Check of initialization in the registry of the view global variables
|
||||
*
|
||||
* @param string $name Name of the variable
|
||||
*
|
||||
* @return bool The variable is initialized?
|
||||
*/
|
||||
public function __isset(string $name): bool
|
||||
{
|
||||
// Check of initialization of the variable and exit (success)
|
||||
return isset($this->variables[$name]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write
|
||||
*
|
||||
* Write the variable into the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of an offset of the variable
|
||||
* @param mixed $value Value of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function offsetSet(mixed $name, mixed $value): void
|
||||
{
|
||||
// Write the variable and exit (success)
|
||||
$this->variables[$name] = $value;
|
||||
}
|
||||
/**
|
||||
* Write
|
||||
*
|
||||
* Write the variable into the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of an offset of the variable
|
||||
* @param mixed $value Value of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function offsetSet(mixed $name, mixed $value): void
|
||||
{
|
||||
// Write the variable and exit (success)
|
||||
$this->variables[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read
|
||||
*
|
||||
* Read the variable from the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of the variable
|
||||
*
|
||||
* @return mixed Content of the variable, if they are found
|
||||
*/
|
||||
public function offsetGet(mixed $name): mixed
|
||||
{
|
||||
// Read the variable and exit (success)
|
||||
return $this->variables[$name];
|
||||
}
|
||||
/**
|
||||
* Read
|
||||
*
|
||||
* Read the variable from the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of the variable
|
||||
*
|
||||
* @return mixed Content of the variable, if they are found
|
||||
*/
|
||||
public function offsetGet(mixed $name): mixed
|
||||
{
|
||||
// Read the variable and exit (success)
|
||||
return $this->variables[$name];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete
|
||||
*
|
||||
* Delete the variable from the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function offsetUnset(mixed $name): void
|
||||
{
|
||||
// Delete the variable and exit (success)
|
||||
unset($this->variables[$name]);
|
||||
}
|
||||
/**
|
||||
* Delete
|
||||
*
|
||||
* Delete the variable from the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of the variable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function offsetUnset(mixed $name): void
|
||||
{
|
||||
// Delete the variable and exit (success)
|
||||
unset($this->variables[$name]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check of initialization
|
||||
*
|
||||
* Check of initialization in the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of the variable
|
||||
*
|
||||
* @return bool The variable is initialized?
|
||||
*/
|
||||
public function offsetExists(mixed $name): bool
|
||||
{
|
||||
// Check of initialization of the variable and exit (success)
|
||||
return isset($this->variables[$name]);
|
||||
}
|
||||
/**
|
||||
* Check of initialization
|
||||
*
|
||||
* Check of initialization in the registry of the view global variables
|
||||
*
|
||||
* @param mixed $name Name of the variable
|
||||
*
|
||||
* @return bool The variable is initialized?
|
||||
*/
|
||||
public function offsetExists(mixed $name): bool
|
||||
{
|
||||
// Check of initialization of the variable and exit (success)
|
||||
return isset($this->variables[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,4 +7,4 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,30 +2,29 @@
|
|||
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
{% use '/themes/default/head.html' with title as head_title, meta as head_meta, css as head_css %}
|
||||
<head>
|
||||
{% use '/themes/default/head.html' with title as head_title, meta as head_meta, css as head_css %}
|
||||
|
||||
{% block title %}
|
||||
{{ block('head_title') }}
|
||||
{% endblock %}
|
||||
{% block title %}
|
||||
{{ block('head_title') }}
|
||||
{% endblock %}
|
||||
|
||||
{% block meta %}
|
||||
{{ block('head_meta') }}
|
||||
{% endblock %}
|
||||
{% block meta %}
|
||||
{{ block('head_meta') }}
|
||||
{% endblock %}
|
||||
|
||||
{{ block('head_css') }}
|
||||
{% block css %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
{{ block('head_css') }}
|
||||
{% block css %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{% block body %}
|
||||
{% endblock %}
|
||||
<body>
|
||||
{% block body %}
|
||||
{% endblock %}
|
||||
|
||||
{% include '/themes/default/js.html' %}
|
||||
{% block js %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
{% include '/themes/default/js.html' %}
|
||||
{% block js %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
{{ block('header') }}
|
||||
{{ block('aside') }}
|
||||
<main>
|
||||
{% block main %}
|
||||
{{ main|raw }}
|
||||
{% endblock %}
|
||||
{% block main %}
|
||||
{{ main|raw }}
|
||||
{% endblock %}
|
||||
</main>
|
||||
{{ block('footer') }}
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in New Issue