PluginProbe
Hostinger Tools / 3.0.49
Hostinger Tools v3.0.49
3.0.77 3.0.76 3.0.75 3.0.74 3.0.73 3.0.72 3.0.71 3.0.70 3.0.69 3.0.68 3.0.67 3.0.66 1.8.1 1.8.2 1.8.3 1.9.1 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.4 All 108 releases
hostinger / includes / Mcp / Handlers / EventHandler.php

EventHandler.php in Hostinger Tools 3.0.49, at includes/Mcp/Handlers/EventHandler.php

62 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Hostinger\Mcp\Handlers;
4
5 use Hostinger\Admin\Proxy;
6 use Hostinger\Mcp\EventHandlerFactory;
7
8 defined( 'ABSPATH' ) || exit;
9
10 abstract class EventHandler {
11
12 public Proxy $proxy;
13
14 public function __construct( Proxy $proxy ) {
15 $this->proxy = $proxy;
16 }
17
18 protected function send_to_proxy( array $args = array() ): bool {
19 if ( ! $this->can_send( $args ) ) {
20 $this->debug_mcp( 'Event failed: User is not opted in' . ' -- ' . print_r( $args, true ) );
21 return false;
22 }
23
24 $event = $args['event'];
25 $request = $this->proxy->trigger_event( $event, $args );
26 if ( is_wp_error( $request ) ) {
27 $this->debug_mcp( 'Event failed: ' . $event . $request->get_error_message() . ' -- ' . print_r( $args, true ) );
28 return false;
29 }
30
31 $response_code = wp_remote_retrieve_response_code( $request );
32 if ( $response_code < 300 ) {
33 $this->debug_mcp( 'Event sent: ' . $event . ' -- ' . print_r( $args, true ) );
34 return true;
35 }
36
37 $this->debug_mcp( 'Event failed: ' . $event . ' --' . $response_code . ' -- ' . print_r( $args, true ) );
38 return false;
39 }
40
41 public function can_send( array $args = array() ): bool {
42 return isset( $args['event'] ) && ( $this->is_optin_event( $args['event'] ) || $this->is_opted_in() );
43 }
44
45 private function is_opted_in(): bool {
46 $settings = get_option( HOSTINGER_PLUGIN_SETTINGS_OPTION, array() );
47 return $settings['optin_mcp'] ?? false;
48 }
49
50 private function is_optin_event( $event ): bool {
51 return $event === EventHandlerFactory::MCP_EVENT_OPTIN_TOGGLED;
52 }
53
54 private function debug_mcp( string $msg ): void {
55 if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
56 error_log( 'Hostinger Tools MCP: ' . $msg . PHP_EOL, 3, WP_CONTENT_DIR . '/mcp.log' );
57 }
58 }
59
60 abstract public function send( array $args = array() ): void;
61 }
62