PluginProbe ʕ •ᴥ•ʔ
Hostinger Tools / 3.0.69
Hostinger Tools v3.0.69
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 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.2 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 3.0.0 3.0.10 3.0.11 3.0.12 3.0.13 3.0.14 3.0.15 3.0.16 3.0.17 3.0.18 3.0.19 3.0.2 3.0.20 3.0.21 3.0.22 3.0.23 3.0.24 3.0.25 3.0.26 3.0.27 3.0.28 3.0.29 3.0.3 3.0.30 3.0.31 3.0.32 3.0.33 3.0.34 3.0.35 3.0.36 3.0.37 3.0.38 3.0.39 3.0.4 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.0.46 3.0.47 3.0.48 3.0.49 3.0.5 3.0.50 3.0.51 3.0.52 3.0.53 3.0.54 3.0.55 3.0.56 3.0.57 3.0.58 3.0.59 3.0.6 3.0.60 3.0.61 3.0.62 3.0.65 3.0.7 3.0.8 3.0.9 trunk 1.8.0
hostinger / includes / Hooks.php
hostinger / includes Last commit date
Admin 2 months ago Cli 2 weeks ago LlmsTxtGenerator 2 weeks ago Mcp 11 months ago Preview 1 year ago Rest 10 months ago Views 1 year ago Activator.php 1 year ago Bootstrap.php 9 months ago Cli.php 9 months ago ComingSoon.php 2 months ago Deactivator.php 1 year ago DefaultOptions.php 2 months ago Errors.php 1 year ago Helper.php 9 months ago Hooks.php 2 months ago Hostinger.php 2 months ago I18n.php 1 year ago LlmsTxtGenerator.php 1 year ago Loader.php 1 year ago Settings.php 1 year ago
Hooks.php
158 lines
1 <?php
2
3 namespace Hostinger;
4
5 use Hostinger\Admin\PluginSettings;
6 use Hostinger\Admin\Jobs\NotifyMcpJob;
7 use Hostinger\Mcp\EventHandlerFactory;
8 use Hostinger\WpHelper\Utils;
9
10 defined( 'ABSPATH' ) || exit;
11
12 class Hooks {
13 public function __construct() {
14 add_filter( 'xmlrpc_enabled', array( $this, 'check_xmlrpc_enabled' ) );
15 add_filter( 'wp_is_application_passwords_available', array( $this, 'check_authentication_password_enabled' ) );
16 add_filter( 'wp_headers', array( $this, 'check_pingback' ) );
17 add_action( 'init', array( $this, 'plugins_loaded' ) );
18 add_action( 'update_option_woocommerce_coming_soon', array( $this, 'litespeed_flush_cache' ) );
19 add_action( 'update_option_woocommerce_store_pages_only', array( $this, 'litespeed_flush_cache' ) );
20 add_action( 'transition_post_status', array( $this, 'handle_transition_post_status' ), 10, 3 );
21 add_action( 'updated_option', array( $this, 'handle_updated_option' ), 10, 3 );
22 }
23
24 public function handle_transition_post_status( string $new_status, string $old_status, \WP_Post $post ): void {
25 if ( $new_status === 'publish' || $old_status === 'publish' ) {
26 do_action(
27 NotifyMcpJob::JOB_NAME,
28 array(
29 'event' => EventHandlerFactory::MCP_EVENT_PAGE_UPDATED,
30 'post_id' => $post->ID,
31 )
32 );
33 }
34 }
35
36 public function handle_updated_option( string $option, mixed $old_value, mixed $value ): void {
37 if ( $option === 'cron' || $this->is_transient( $option ) ) {
38 return;
39 }
40
41 if ( $old_value !== $value ) {
42 do_action( NotifyMcpJob::JOB_NAME, array( 'event' => EventHandlerFactory::MCP_EVENT_UPDATED ) );
43 }
44
45 if ( $option === HOSTINGER_PLUGIN_SETTINGS_OPTION && isset( $value['optin_mcp'] ) && isset( $old_value['optin_mcp'] ) ) {
46 if ( $old_value['optin_mcp'] !== $value['optin_mcp'] ) {
47 do_action(
48 NotifyMcpJob::JOB_NAME,
49 array(
50 'event' => EventHandlerFactory::MCP_EVENT_OPTIN_TOGGLED,
51 'value' => $value['optin_mcp'],
52 )
53 );
54 }
55 }
56 }
57
58 /**
59 * @return void
60 */
61 public function plugins_loaded() {
62 $utils = new Utils();
63 $plugin_settings = new PluginSettings();
64 $settings = $plugin_settings->get_plugin_settings();
65
66 if ( defined( 'WP_CLI' ) && \WP_CLI ) {
67 return;
68 }
69
70 // Xmlrpc.
71 if ( $settings->get_disable_xml_rpc() && $utils->isThisPage( 'xmlrpc.php' ) ) {
72 exit( 'Disabled' );
73 }
74
75 // SSL redirect.
76 if ( $settings->get_force_https() && ! is_ssl() ) {
77 if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
78 $host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
79
80 if ( $settings->get_force_www() && strpos( $host, 'www.' ) === false ) {
81 $host = 'www.' . $host;
82 }
83
84 wp_safe_redirect( 'https://' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
85 exit;
86 }
87 }
88
89 // Force www.
90 if ( $settings->get_force_www() ) {
91 if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
92 $host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
93
94 if ( strpos( $host, 'www.' ) === false ) {
95 wp_safe_redirect( 'https://www.' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
96 exit;
97 }
98 }
99 }
100 }
101
102 /**
103 * @param mixed $headers
104 *
105 * @return mixed
106 */
107 public function check_pingback( $headers ) {
108 $plugin_settings = new PluginSettings();
109 $settings = $plugin_settings->get_plugin_settings();
110
111 if ( $settings->get_disable_xml_rpc() ) {
112 unset( $headers['X-Pingback'] );
113 }
114
115 return $headers;
116 }
117
118 /**
119 * @param bool $enabled
120 *
121 * @return bool
122 */
123 public function check_xmlrpc_enabled( bool $enabled ): bool {
124 $plugin_settings = new PluginSettings();
125 $settings = $plugin_settings->get_plugin_settings();
126
127 if ( $settings->get_disable_xml_rpc() ) {
128 return false;
129 }
130
131 return $enabled;
132 }
133
134 /**
135 * @return bool
136 */
137 public function check_authentication_password_enabled(): bool {
138 $plugin_settings = new PluginSettings();
139 $settings = $plugin_settings->get_plugin_settings();
140
141 if ( $settings->get_disable_authentication_password() ) {
142 return false;
143 }
144
145 return true;
146 }
147
148 public function litespeed_flush_cache(): void {
149 if ( has_action( 'litespeed_purge_all' ) ) {
150 do_action( 'litespeed_purge_all' );
151 }
152 }
153
154 private function is_transient( $option ): bool {
155 return str_contains( $option, '_transient' );
156 }
157 }
158