Files
roi-theme/wp-content/plugins/fluent-smtp/app/Hooks/Handlers/ActionsRegistrar.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

151 lines
3.5 KiB
PHP
Executable File

<?php
namespace FluentMail\App\Hooks\Handlers;
use FluentMail\Includes\Core\Application;
use FluentMail\App\Hooks\Handlers\AdminMenuHandler;
use FluentMail\App\Hooks\Handlers\SchedulerHandler;
use FluentMail\App\Hooks\Handlers\InitializeSiteHandler;
use WP_REST_Request;
class ActionsRegistrar
{
/**
* Application instance.
*
* @var Application
*/
protected $app;
/**
* Constructor.
*
* @param Application $app
*/
public function __construct(Application $app)
{
$this->app = $app;
}
/**
* Alternative static constructor.
*
* @param Application $app
* @return static
*/
public static function init(Application $app)
{
$instance = new static($app);
$instance->registerHooks();
return $instance;
}
/**
* Register all core hooks and REST routes.
*
* @return void
*/
public function registerHooks()
{
$this->registerAdminMenu();
$this->registerScheduler();
$this->registerSiteInitialization();
$this->registerCustomActions();
$this->registerRestRoutes();
}
/**
* Register admin menu and notices.
*
* @return void
*/
protected function registerAdminMenu()
{
$adminMenuHandler = new AdminMenuHandler($this->app);
$adminMenuHandler->addFluentMailMenu();
$this->app->addAction('admin_notices', 'AdminMenuHandler@maybeAdminNotice');
}
/**
* Register background scheduler hooks.
*
* @return void
*/
protected function registerScheduler()
{
(new SchedulerHandler)->register();
}
/**
* Register site-level initialization logic.
*
* @return void
*/
protected function registerSiteInitialization()
{
(new InitializeSiteHandler)->addHandler();
}
/**
* Register custom application actions.
*
* @return void
*/
protected function registerCustomActions()
{
$this->app->addCustomAction(
'handle_exception', 'ExceptionHandler@handle'
);
}
/**
* Register REST API routes.
*
* @return void
*/
protected function registerRestRoutes()
{
$this->app->addAction('rest_api_init', function () {
register_rest_route('fluent-smtp', '/outlook_callback/', [
'methods' => 'GET',
'callback' => [$this, 'handleOutlookCallback'],
'permission_callback' => [$this, 'verifyOutlookCallbackState'],
]);
});
}
/**
* Handle the Outlook OAuth callback.
*
* @param WP_REST_Request $request
* @return void
*/
public function handleOutlookCallback(WP_REST_Request $request)
{
$code = $request->get_param('code');
$output = $this->app->view->make('admin.html_code', [
'title' => 'Your Access Code',
'body' => sprintf(
'<p>Copy the following code and paste in the fluentSMTP settings</p><textarea readonly>%s</textarea>',
sanitize_textarea_field($code)
),
]);
wp_die($output, 'Access Code');
}
/**
* Verify the 'state' parameter in the OAuth callback.
*
* @return bool
*/
public function verifyOutlookCallbackState()
{
$state = $_REQUEST['state'] ?? null;
return $state === get_option('_fluentmail_last_generated_state');
}
}