PluginProbe
Hostinger Tools / 3.0.73
Hostinger Tools v3.0.73
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 / Hooks.php

Hooks.php in Hostinger Tools 3.0.73, at includes/Hooks.php

158 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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