PluginProbe
Hostinger Tools / 3.0.2
Hostinger Tools v3.0.2
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
← All changes | includes/Hooks.php +27 -130 3.0.773.0.2 View file →
@@ -1,118 +1,68 @@
1 1 <?php
2 2
3 3 namespace Hostinger;
4 4
5 -use Hostinger\Admin\Menu;
6 5 use Hostinger\Admin\PluginSettings;
7 -use Hostinger\Admin\Jobs\NotifyMcpJob;
8 -use Hostinger\Mcp\EventHandlerFactory;
9 6 use Hostinger\WpHelper\Utils;
10 7
11 8 defined( 'ABSPATH' ) || exit;
12 9
13 10 class Hooks {
14 - public function __construct() {
11 + public function __construct() {
12 + // XMLRpc / Force SSL
15 13 add_filter( 'xmlrpc_enabled', array( $this, 'check_xmlrpc_enabled' ) );
16 - add_filter( 'wp_is_application_passwords_available', array( $this, 'check_authentication_password_enabled' ) );
17 - add_filter( 'wp_die_handler', array( $this, 'maybe_customize_application_password_die_handler' ) );
18 - add_filter( 'wp_headers', array( $this, 'check_pingback' ) );
19 - add_action( 'init', array( $this, 'plugins_loaded' ) );
20 - add_action( 'update_option_woocommerce_coming_soon', array( $this, 'litespeed_flush_cache' ) );
21 - add_action( 'update_option_woocommerce_store_pages_only', array( $this, 'litespeed_flush_cache' ) );
22 - add_action( 'transition_post_status', array( $this, 'handle_transition_post_status' ), 10, 3 );
23 - add_action( 'updated_option', array( $this, 'handle_updated_option' ), 10, 3 );
24 - }
14 + add_filter( 'wp_headers', array( $this, 'check_pingback' ));
15 + add_filter( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
16 + }
25 17
26 - public function handle_transition_post_status( string $new_status, string $old_status, \WP_Post $post ): void {
27 - if ( $new_status === 'publish' || $old_status === 'publish' ) {
28 - do_action(
29 - NotifyMcpJob::JOB_NAME,
30 - array(
31 - 'event' => EventHandlerFactory::MCP_EVENT_PAGE_UPDATED,
32 - 'post_id' => $post->ID,
33 - )
34 - );
35 - }
36 - }
37 -
38 - public function handle_updated_option( string $option, mixed $old_value, mixed $value ): void {
39 - if ( $option === 'cron' || $this->is_transient( $option ) ) {
40 - return;
41 - }
42 -
43 - if ( $old_value !== $value ) {
44 - do_action( NotifyMcpJob::JOB_NAME, array( 'event' => EventHandlerFactory::MCP_EVENT_UPDATED ) );
45 - }
46 -
47 - if ( $option === HOSTINGER_PLUGIN_SETTINGS_OPTION && isset( $value['optin_mcp'] ) && isset( $old_value['optin_mcp'] ) ) {
48 - if ( $old_value['optin_mcp'] !== $value['optin_mcp'] ) {
49 - do_action(
50 - NotifyMcpJob::JOB_NAME,
51 - array(
52 - 'event' => EventHandlerFactory::MCP_EVENT_OPTIN_TOGGLED,
53 - 'value' => $value['optin_mcp'],
54 - )
55 - );
56 - }
57 - }
58 - }
59 -
60 18 /**
61 19 * @return void
62 20 */
63 21 public function plugins_loaded() {
64 - $utils = new Utils();
22 + $utils = new Utils();
65 23 $plugin_settings = new PluginSettings();
66 - $settings = $plugin_settings->get_plugin_settings();
24 + $settings = $plugin_settings->get_plugin_settings();
67 25
68 - if ( defined( 'WP_CLI' ) && \WP_CLI ) {
26 + if ( defined( 'WP_CLI' ) && WP_CLI ) {
69 27 return;
70 28 }
71 29
72 30 // Xmlrpc.
73 - if ( $settings->get_disable_xml_rpc() && $utils->isThisPage( 'xmlrpc.php' ) ) {
74 - exit( 'Disabled' );
31 + if($settings->get_disable_xml_rpc() && $utils->isThisPage('xmlrpc.php')) {
32 + exit('Disabled');
75 33 }
76 34
77 35 // SSL redirect.
78 - if ( $settings->get_force_https() && ! is_ssl() ) {
79 - if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
80 - $host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
36 + if($settings->get_force_https() && !is_ssl()) {
37 + $host = $_SERVER['HTTP_HOST'];
81 38
82 - if ( $settings->get_force_www() && strpos( $host, 'www.' ) === false ) {
83 - $host = 'www.' . $host;
84 - }
39 + if ($settings->get_force_www() && strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
40 + $host = 'www.'.$host;
41 + }
85 42
86 - wp_safe_redirect( 'https://' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
87 - exit;
88 - }
43 + wp_redirect('https://' . $host . $_SERVER['REQUEST_URI'], 301);
44 + exit();
89 45 }
90 46
91 47 // Force www.
92 - if ( $settings->get_force_www() ) {
93 - if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
94 - $host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
95 -
96 - if ( strpos( $host, 'www.' ) === false ) {
97 - wp_safe_redirect( 'https://www.' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
98 - exit;
99 - }
100 - }
48 + if ($settings->get_force_www() && strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
49 + wp_redirect('https://www.' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301);
50 + exit;
101 51 }
102 52 }
103 53
104 54 /**
105 - * @param mixed $headers
55 + * @param $headers
106 56 *
107 57 * @return mixed
108 58 */
109 59 public function check_pingback( $headers ) {
110 60 $plugin_settings = new PluginSettings();
111 - $settings = $plugin_settings->get_plugin_settings();
61 + $settings = $plugin_settings->get_plugin_settings();
112 62
113 - if ( $settings->get_disable_xml_rpc() ) {
114 - unset( $headers['X-Pingback'] );
63 + if($settings->get_disable_xml_rpc()) {
64 + unset($headers['X-Pingback']);
115 65 }
116 66
117 67 return $headers;
118 68 }
@@ -117,70 +67,17 @@
117 67 return $headers;
118 68 }
119 69
120 70 /**
121 - * @param bool $enabled
122 - *
123 71 * @return bool
124 72 */
125 - public function check_xmlrpc_enabled( bool $enabled ): bool {
73 + public function check_xmlrpc_enabled(): bool {
126 74 $plugin_settings = new PluginSettings();
127 - $settings = $plugin_settings->get_plugin_settings();
75 + $settings = $plugin_settings->get_plugin_settings();
128 76
129 - if ( $settings->get_disable_xml_rpc() ) {
77 + if($settings->get_disable_xml_rpc()) {
130 78 return false;
131 79 }
132 80
133 - return $enabled;
134 - }
135 -
136 - /**
137 - * @return bool
138 - */
139 - public function check_authentication_password_enabled(): bool {
140 - $plugin_settings = new PluginSettings();
141 - $settings = $plugin_settings->get_plugin_settings();
142 -
143 - if ( $settings->get_disable_authentication_password() ) {
144 - return false;
145 - }
146 -
147 81 return true;
148 - }
149 -
150 - public function maybe_customize_application_password_die_handler( $handler ) {
151 - $plugin_settings = new PluginSettings();
152 - $settings = $plugin_settings->get_plugin_settings();
153 -
154 - if ( ! $settings->get_disable_authentication_password() ) {
155 - return $handler;
156 - }
157 -
158 - return function ( $message, $title = '', $args = array() ) use ( $handler ) {
159 - if ( is_string( $message ) && $message === __( 'Application passwords are not available.' ) ) {
160 - $message = $this->get_application_password_disabled_message();
161 - }
162 -
163 - call_user_func( $handler, $message, $title, $args );
164 - };
165 - }
166 -
167 - private function get_application_password_disabled_message(): string {
168 - $settings_url = admin_url( 'admin.php?page=' . Menu::MENU_SLUG );
169 -
170 - return sprintf(
171 - /* translators: %s: URL to the Hostinger Tools settings page. */
172 - __( 'Application passwords have been disabled by Hostinger for security reasons. You can turn them back on from <a href="%s">Hostinger Tools → Security settings</a>.', 'hostinger' ),
173 - esc_url( $settings_url )
174 - );
175 - }
176 -
177 - public function litespeed_flush_cache(): void {
178 - if ( has_action( 'litespeed_purge_all' ) ) {
179 - do_action( 'litespeed_purge_all' );
180 - }
181 - }
182 -
183 - private function is_transient( $option ): bool {
184 - return str_contains( $option, '_transient' );
185 82 }
186 83 }