PluginProbe
Hostinger Tools / 3.0.39
Hostinger Tools v3.0.39
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 +100 -151 3.0.773.0.39 View file →
@@ -1,186 +1,135 @@
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() {
15 - 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 - }
11 + public function __construct() {
12 + // XMLRpc / Force SSL
13 + add_filter( 'xmlrpc_enabled', array( $this, 'check_xmlrpc_enabled' ) );
14 + add_filter( 'wp_is_application_passwords_available', array( $this, 'check_authentication_password_enabled' ) );
15 + add_filter( 'wp_headers', array( $this, 'check_pingback' ) );
16 + add_filter( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
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 - }
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( 'upgrader_process_complete', array( $this, 'disable_auth_passwords_on_update' ), 10, 2 );
21 + }
37 22
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 - }
23 + public function disable_auth_passwords_on_update( \WP_Upgrader $upgrader_object, array $options ): void {
24 + if ( $options['action'] !== 'update' || $options['type'] !== 'plugin' || empty( $options['plugins'] ) ) {
25 + return;
26 + }
42 27
43 - if ( $old_value !== $value ) {
44 - do_action( NotifyMcpJob::JOB_NAME, array( 'event' => EventHandlerFactory::MCP_EVENT_UPDATED ) );
45 - }
28 + if ( ! in_array( 'hostinger/hostinger.php', $options['plugins'], true ) ) {
29 + return;
30 + }
46 31
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 - }
32 + $settings = get_option( HOSTINGER_PLUGIN_SETTINGS_OPTION, array() );
59 33
60 - /**
61 - * @return void
62 - */
63 - public function plugins_loaded() {
64 - $utils = new Utils();
65 - $plugin_settings = new PluginSettings();
66 - $settings = $plugin_settings->get_plugin_settings();
34 + if ( ! empty( $settings['disable_authentication_password'] ) ) {
35 + return;
36 + }
67 37
68 - if ( defined( 'WP_CLI' ) && \WP_CLI ) {
69 - return;
70 - }
38 + $options = new DefaultOptions();
39 + $options->configure_authentication_password();
40 + }
71 41
72 - // Xmlrpc.
73 - if ( $settings->get_disable_xml_rpc() && $utils->isThisPage( 'xmlrpc.php' ) ) {
74 - exit( 'Disabled' );
75 - }
42 + /**
43 + * @return void
44 + */
45 + public function plugins_loaded() {
46 + $utils = new Utils();
47 + $plugin_settings = new PluginSettings();
48 + $settings = $plugin_settings->get_plugin_settings();
76 49
77 - // 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'] ) );
50 + if ( defined( 'WP_CLI' ) && \WP_CLI ) {
51 + return;
52 + }
81 53
82 - if ( $settings->get_force_www() && strpos( $host, 'www.' ) === false ) {
83 - $host = 'www.' . $host;
84 - }
54 + // Xmlrpc.
55 + if ( $settings->get_disable_xml_rpc() && $utils->isThisPage( 'xmlrpc.php' ) ) {
56 + exit( 'Disabled' );
57 + }
85 58
86 - wp_safe_redirect( 'https://' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
87 - exit;
88 - }
89 - }
59 + // SSL redirect.
60 + if ( $settings->get_force_https() && ! is_ssl() ) {
61 + if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
62 + $host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
90 63
91 - // 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'] ) );
64 + if ( $settings->get_force_www() && strpos( $host, 'www.' ) === false ) {
65 + $host = 'www.' . $host;
66 + }
95 67
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 - }
101 - }
102 - }
68 + wp_safe_redirect( 'https://' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
69 + exit;
70 + }
71 + }
103 72
104 - /**
105 - * @param mixed $headers
106 - *
107 - * @return mixed
108 - */
109 - public function check_pingback( $headers ) {
110 - $plugin_settings = new PluginSettings();
111 - $settings = $plugin_settings->get_plugin_settings();
73 + // Force www.
74 + if ( $settings->get_force_www() ) {
75 + if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
76 + $host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
112 77
113 - if ( $settings->get_disable_xml_rpc() ) {
114 - unset( $headers['X-Pingback'] );
115 - }
78 + if ( strpos( $host, 'www.' ) === false ) {
79 + wp_safe_redirect( 'https://www.' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
80 + exit;
81 + }
82 + }
83 + }
84 + }
116 85
117 - return $headers;
118 - }
86 + /**
87 + * @param mixed $headers
88 + *
89 + * @return mixed
90 + */
91 + public function check_pingback( $headers ) {
92 + $plugin_settings = new PluginSettings();
93 + $settings = $plugin_settings->get_plugin_settings();
119 94
120 - /**
121 - * @param bool $enabled
122 - *
123 - * @return bool
124 - */
125 - public function check_xmlrpc_enabled( bool $enabled ): bool {
126 - $plugin_settings = new PluginSettings();
127 - $settings = $plugin_settings->get_plugin_settings();
95 + if ( $settings->get_disable_xml_rpc() ) {
96 + unset( $headers['X-Pingback'] );
97 + }
128 98
129 - if ( $settings->get_disable_xml_rpc() ) {
130 - return false;
131 - }
99 + return $headers;
100 + }
132 101
133 - return $enabled;
134 - }
102 + /**
103 + * @return bool
104 + */
105 + public function check_xmlrpc_enabled(): bool {
106 + $plugin_settings = new PluginSettings();
107 + $settings = $plugin_settings->get_plugin_settings();
135 108
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();
109 + if ( $settings->get_disable_xml_rpc() ) {
110 + return false;
111 + }
142 112
143 - if ( $settings->get_disable_authentication_password() ) {
144 - return false;
145 - }
113 + return true;
114 + }
146 115
147 - return true;
148 - }
116 + /**
117 + * @return bool
118 + */
119 + public function check_authentication_password_enabled(): bool {
120 + $plugin_settings = new PluginSettings();
121 + $settings = $plugin_settings->get_plugin_settings();
149 122
150 - public function maybe_customize_application_password_die_handler( $handler ) {
151 - $plugin_settings = new PluginSettings();
152 - $settings = $plugin_settings->get_plugin_settings();
123 + if ( $settings->get_disable_authentication_password() ) {
124 + return false;
125 + }
153 126
154 - if ( ! $settings->get_disable_authentication_password() ) {
155 - return $handler;
156 - }
127 + return true;
128 + }
157 129
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 - }
130 + public function litespeed_flush_cache(): void {
131 + if ( has_action( 'litespeed_purge_all' ) ) {
132 + do_action( 'litespeed_purge_all' );
133 + }
134 + }
186 135 }