AbstractBatchedJob.php
10 months ago
AbstractJob.php
10 months ago
ActionScheduler.php
11 months ago
JobInitializer.php
10 months ago
JobInterface.php
10 months ago
LlmsTxtInjectContentJob.php
10 months ago
NotifyMcpJob.php
11 months ago
NotifyMcpJob.php
51 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Hostinger\Admin\Jobs; |
| 4 | use Hostinger\Mcp\EventHandlerFactory; |
| 5 | use Hostinger\Mcp\Handlers\EventHandler; |
| 6 | use PHPUnit\Exception; |
| 7 | |
| 8 | class NotifyMcpJob extends AbstractJob implements JobInterface { |
| 9 | |
| 10 | public const JOB_NAME = 'notify_mcp'; |
| 11 | |
| 12 | private EventHandlerFactory $event_handler_factory; |
| 13 | |
| 14 | public function __construct( ActionScheduler $action_scheduler, EventHandlerFactory $event_handler_factory ) { |
| 15 | $this->event_handler_factory = $event_handler_factory; |
| 16 | parent::__construct( $action_scheduler ); |
| 17 | } |
| 18 | |
| 19 | public function get_name(): string { |
| 20 | return self::JOB_NAME; |
| 21 | } |
| 22 | |
| 23 | public function event_handler( string $event ): EventHandler { |
| 24 | return $this->event_handler_factory->get_handler( $event ); |
| 25 | } |
| 26 | |
| 27 | public function process_items( array $args = array() ): void { |
| 28 | $handler = $this->event_handler( $args['event'] ); |
| 29 | $handler->send( $args ); |
| 30 | } |
| 31 | |
| 32 | public function schedule( array $args = array() ): void { |
| 33 | if ( $this->can_schedule( $args ) ) { |
| 34 | $this->action_scheduler->schedule_immediate( $this->get_process_item_hook(), array( $args ) ); |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | public function can_schedule( $args = array() ): bool { |
| 39 | if ( ! parent::can_schedule( $args ) ) { |
| 40 | return false; |
| 41 | } |
| 42 | |
| 43 | try { |
| 44 | $handler = $this->event_handler( $args['event'] ); |
| 45 | return $handler->can_send( $args ); |
| 46 | } catch ( Exception $e ) { |
| 47 | return false; |
| 48 | } |
| 49 | } |
| 50 | } |
| 51 |