*/ final class middlewares extends core { /** * Account (middleware) * * Initialize or registrate the account and write it into the `account` variable inside the `$$context` * * @param context $$context * @param node $$next * * @return void */ public static function account(context $$context, node $$next): void { // Is the process stopped? if ($$context->get('stop')) return; // Initializing the telegram account $$telegram = $$context->getEffectiveUser(); // Initializing the account $$account = new account()->initialize($$telegram); if ($$account instanceof account) { // Initialized the account // Writing the account into the context variable $$context->set('account', $$account); // Continuation of the process $$next($$context); } else { // Not initialized the account // Sending the message $$context->sendMessage('⚠️ *Failed to initialize your Telegram account*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } /** * Authorizations (middleware) * * Initialize the account authorizations and write them into the `authorizations` variable inside the `$$context` * * @param context $$context * @param node $$next * * @return void */ public static function authorizations(context $$context, node $$next): void { // Is the process stopped? if ($$context->get('stop')) return; // Initializing the account $$account = $$context->get('account'); if ($$account instanceof account) { // Initialized the account // Initializing the account authorizations $$authorizations = $$account->authorizations(); if ($$authorizations instanceof authorizations) { // Initialized the account authorizations // Writing the account authorizations into the context variable $$context->set('authorizations', $$authorizations); // Continuation of the process $$next($$context); } else { // Not initialized the account // Sending the message $$context->sendMessage('⚠️ *Failed to initialize your Telegram account authorizations*') ->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 your Telegram account*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } /** * Language (middleware) * * Implement the account language * * @param context $$context * @param node $$next * * @return void */ public static function language(context $$context, node $$next): void { // Is the process stopped? if ($$context->get('stop')) return; // Initializing the account $$account = $$context->get('account'); if ($$account instanceof account) { // Initialized the account if ($$account->language instanceof language) { // Initialized the language parameter try { // Writing the account language into the context variable $$context->set('language', $$account->language); } catch (error $$error) { // Not initialized the language // Writing the default language into the context variable $$context->set('language', LANGUAGE_DEFAULT ?? language::en); } } else { // Not initialized the language parameter // Writing the default language into the context variable $$context->set('language', LANGUAGE_DEFAULT ?? language::en); } // Continuation of the process $$next($$context); } else { // Not initialized the account // Sending the message $$context->sendMessage('⚠️ *Failed to initialize your Telegram account*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } /** * Localization (middleware) * * Implement the account language and initialize the localization file * * @param context $$context * @param node $$next * * @return void */ public static function localization(context $$context, node $$next): void { // Is the process stopped? if ($$context->get('stop')) return; // Initializing the account $$account = $$context->get('account'); if ($$account instanceof account) { // Initialized the account // Initializing the language $$language = $$context->get('language'); if ($$language instanceof language) { // Initialized the language // Initializing path to the localization file $$file = LOCALIZATIONS . DIRECTORY_SEPARATOR . strtolower($$language->label()) . '.php'; if (file_exists($$file) && is_readable($$file)) { // Found the localization file // Initializing localization $$localization = require($$file); if (is_array($$localization)) { // Initialized the localization // Writing localization into the context variable $$context->set('localization', $$localization); // Continuation of the process $$next($$context); } else { // Not initialized the 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 found the localization file // Sending the message $$context->sendMessage('⚠️ *Failed to initialize the localization file*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } else { // Not initialized language // Sending the message $$context->sendMessage('⚠️ *Failed to initialize language*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } else { // Not initialized the account // Sending the message $$context->sendMessage('⚠️ *Failed to initialize your Telegram account*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } /** * Settings (middleware) * * Check the account for access to the settings * * @param context $$context * @param node $$next * * @return void */ public static function settings(context $$context, node $$next): void { // Is the process stopped? if ($$context->get('stop')) return; // Initializing the account $$account = $$context->get('account'); if ($$account instanceof account) { // Initialized the account // Initializing the account authorizations $$authorizations = $$context->get('authorizations'); if ($$authorizations instanceof authorizations) { // Initialized the account authorizations if ($$authorizations->settings) { // Authorized the account to the settings // Continuation of the process $$next($$context); } else { // Not authorized the account to the settings // Initializing localization $$localization = $$context->get('localization'); if ($$localization) { // Initialized localization // Sending the message $$context->sendMessage('⛔ *' . $$localization['not_authorized_settings'] . '*') ->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 authorizations // Sending the message $$context->sendMessage('⚠️ *Failed to initialize your Telegram account authorizations*') ->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 your Telegram account*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } /** * System settings (middleware) * * Check the account for access to the system settings * * @param context $$context * @param node $$next * * @return void */ public static function system_settings(context $$context, node $$next): void { // Is the process stopped? if ($$context->get('stop')) return; // Initializing the account $$account = $$context->get('account'); if ($$account instanceof account) { // Initialized the account // Initializing the account authorizations $$authorizations = $$context->get('authorizations'); if ($$authorizations instanceof authorizations) { // Initialized the account authorizations if ($$authorizations->system_settings) { // Authorized the account to the system settings // Continuation of the process $$next($$context); } else { // Not authorized the account to the system settings // Initializing localization $$localization = $$context->get('localization'); if ($$localization) { // Initialized localization // Sending the message $$context->sendMessage('⛔ *' . $$localization['not_authorized_system_settings'] . '*') ->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 your Telegram account authorizations*') ->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 your Telegram account*') ->then(function (message $$message) use ($$context) { // Sended the message // Ending the conversation process $$context->endConversation(); }); } } }