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