PluginProbe
Hostinger Tools / 2.2.4
Hostinger Tools v2.2.4
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 +24 -141 3.0.712.2.4 View file →
@@ -1,157 +1,40 @@
1 1 <?php
2 2
3 3 namespace Hostinger;
4 4
5 -use Hostinger\Admin\PluginSettings;
6 -use Hostinger\Admin\Jobs\NotifyMcpJob;
7 -use Hostinger\Mcp\EventHandlerFactory;
8 -use Hostinger\WpHelper\Utils;
9 -
10 5 defined( 'ABSPATH' ) || exit;
11 6
12 7 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 8
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 - }
9 + public function __construct() {
10 + add_action( 'init', array( $this, 'check_url_and_flush_rules' ) );
11 + }
35 12
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 - }
13 + public function check_url_and_flush_rules() {
14 + if ( defined( 'DOING_AJAX' ) && \DOING_AJAX ) {
15 + return false;
16 + }
40 17
41 - if ( $old_value !== $value ) {
42 - do_action( NotifyMcpJob::JOB_NAME, array( 'event' => EventHandlerFactory::MCP_EVENT_UPDATED ) );
43 - }
18 + $current_url = home_url( add_query_arg( null, null ) );
19 + $url_components = wp_parse_url( $current_url );
44 20
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 - }
21 + if ( isset( $url_components['query'] ) ) {
22 + parse_str( $url_components['query'], $params );
57 23
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();
24 + if ( isset( $params['app_name'] ) ) {
25 + $app_name = sanitize_text_field( $params['app_name'] );
65 26
66 - if ( defined( 'WP_CLI' ) && \WP_CLI ) {
67 - return;
68 - }
27 + if ( $app_name === 'Omnisend App' ) {
28 + if ( function_exists( 'flush_rewrite_rules' ) ) {
29 + flush_rewrite_rules();
30 + }
69 31
70 - // Xmlrpc.
71 - if ( $settings->get_disable_xml_rpc() && $utils->isThisPage( 'xmlrpc.php' ) ) {
72 - exit( 'Disabled' );
73 - }
32 + if ( has_action( 'litespeed_purge_all' ) ) {
33 + do_action( 'litespeed_purge_all' );
34 + }
35 + }
36 + }
37 + }
38 + }
74 39
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 40 }