Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/hostinge.../includes
File: Hooks.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace Hostinger;
[2] Fix | Delete
[3] Fix | Delete
use Hostinger\Admin\PluginSettings;
[4] Fix | Delete
use Hostinger\Admin\Jobs\NotifyMcpJob;
[5] Fix | Delete
use Hostinger\Mcp\EventHandlerFactory;
[6] Fix | Delete
use Hostinger\WpHelper\Utils;
[7] Fix | Delete
[8] Fix | Delete
defined( 'ABSPATH' ) || exit;
[9] Fix | Delete
[10] Fix | Delete
class Hooks {
[11] Fix | Delete
public function __construct() {
[12] Fix | Delete
add_filter( 'xmlrpc_enabled', array( $this, 'check_xmlrpc_enabled' ) );
[13] Fix | Delete
add_filter( 'wp_is_application_passwords_available', array( $this, 'check_authentication_password_enabled' ) );
[14] Fix | Delete
add_filter( 'wp_headers', array( $this, 'check_pingback' ) );
[15] Fix | Delete
add_filter( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
[16] Fix | Delete
add_action( 'update_option_woocommerce_coming_soon', array( $this, 'litespeed_flush_cache' ) );
[17] Fix | Delete
add_action( 'update_option_woocommerce_store_pages_only', array( $this, 'litespeed_flush_cache' ) );
[18] Fix | Delete
add_action( 'upgrader_process_complete', array( $this, 'disable_auth_passwords_on_update' ), 10, 2 );
[19] Fix | Delete
add_action( 'transition_post_status', array( $this, 'handle_transition_post_status' ), 10, 3 );
[20] Fix | Delete
add_action( 'updated_option', array( $this, 'handle_updated_option' ), 10, 3 );
[21] Fix | Delete
}
[22] Fix | Delete
[23] Fix | Delete
public function handle_transition_post_status( string $new_status, string $old_status, \WP_Post $post ): void {
[24] Fix | Delete
if ( $new_status === 'publish' || $old_status === 'publish' ) {
[25] Fix | Delete
do_action(
[26] Fix | Delete
NotifyMcpJob::JOB_NAME,
[27] Fix | Delete
array(
[28] Fix | Delete
'event' => EventHandlerFactory::MCP_EVENT_PAGE_UPDATED,
[29] Fix | Delete
'post_id' => $post->ID,
[30] Fix | Delete
)
[31] Fix | Delete
);
[32] Fix | Delete
}
[33] Fix | Delete
}
[34] Fix | Delete
[35] Fix | Delete
public function handle_updated_option( string $option, mixed $old_value, mixed $value ): void {
[36] Fix | Delete
if ( $option === 'cron' || $this->is_transient( $option ) ) {
[37] Fix | Delete
return;
[38] Fix | Delete
}
[39] Fix | Delete
[40] Fix | Delete
if ( $old_value !== $value ) {
[41] Fix | Delete
do_action( NotifyMcpJob::JOB_NAME, array( 'event' => EventHandlerFactory::MCP_EVENT_UPDATED ) );
[42] Fix | Delete
}
[43] Fix | Delete
[44] Fix | Delete
if ( $option === HOSTINGER_PLUGIN_SETTINGS_OPTION && isset( $value['optin_mcp'] ) && isset( $old_value['optin_mcp'] ) ) {
[45] Fix | Delete
if ( $old_value['optin_mcp'] !== $value['optin_mcp'] ) {
[46] Fix | Delete
do_action(
[47] Fix | Delete
NotifyMcpJob::JOB_NAME,
[48] Fix | Delete
array(
[49] Fix | Delete
'event' => EventHandlerFactory::MCP_EVENT_OPTIN_TOGGLED,
[50] Fix | Delete
'value' => $value['optin_mcp'],
[51] Fix | Delete
)
[52] Fix | Delete
);
[53] Fix | Delete
}
[54] Fix | Delete
}
[55] Fix | Delete
}
[56] Fix | Delete
[57] Fix | Delete
public function disable_auth_passwords_on_update( \WP_Upgrader $upgrader_object, array $options ): void {
[58] Fix | Delete
if ( $options['action'] !== 'update' || $options['type'] !== 'plugin' || empty( $options['plugins'] ) ) {
[59] Fix | Delete
return;
[60] Fix | Delete
}
[61] Fix | Delete
[62] Fix | Delete
if ( ! in_array( 'hostinger/hostinger.php', $options['plugins'], true ) ) {
[63] Fix | Delete
return;
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
$settings = get_option( HOSTINGER_PLUGIN_SETTINGS_OPTION, array() );
[67] Fix | Delete
[68] Fix | Delete
if ( ! empty( $settings['disable_authentication_password'] ) ) {
[69] Fix | Delete
return;
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
$options = new DefaultOptions();
[73] Fix | Delete
$options->configure_authentication_password();
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
/**
[77] Fix | Delete
* @return void
[78] Fix | Delete
*/
[79] Fix | Delete
public function plugins_loaded() {
[80] Fix | Delete
$utils = new Utils();
[81] Fix | Delete
$plugin_settings = new PluginSettings();
[82] Fix | Delete
$settings = $plugin_settings->get_plugin_settings();
[83] Fix | Delete
[84] Fix | Delete
if ( defined( 'WP_CLI' ) && \WP_CLI ) {
[85] Fix | Delete
return;
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
// Xmlrpc.
[89] Fix | Delete
if ( $settings->get_disable_xml_rpc() && $utils->isThisPage( 'xmlrpc.php' ) ) {
[90] Fix | Delete
exit( 'Disabled' );
[91] Fix | Delete
}
[92] Fix | Delete
[93] Fix | Delete
// SSL redirect.
[94] Fix | Delete
if ( $settings->get_force_https() && ! is_ssl() ) {
[95] Fix | Delete
if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
[96] Fix | Delete
$host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
[97] Fix | Delete
[98] Fix | Delete
if ( $settings->get_force_www() && strpos( $host, 'www.' ) === false ) {
[99] Fix | Delete
$host = 'www.' . $host;
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
wp_safe_redirect( 'https://' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
[103] Fix | Delete
exit;
[104] Fix | Delete
}
[105] Fix | Delete
}
[106] Fix | Delete
[107] Fix | Delete
// Force www.
[108] Fix | Delete
if ( $settings->get_force_www() ) {
[109] Fix | Delete
if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
[110] Fix | Delete
$host = sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) );
[111] Fix | Delete
[112] Fix | Delete
if ( strpos( $host, 'www.' ) === false ) {
[113] Fix | Delete
wp_safe_redirect( 'https://www.' . $host . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 301 );
[114] Fix | Delete
exit;
[115] Fix | Delete
}
[116] Fix | Delete
}
[117] Fix | Delete
}
[118] Fix | Delete
}
[119] Fix | Delete
[120] Fix | Delete
/**
[121] Fix | Delete
* @param mixed $headers
[122] Fix | Delete
*
[123] Fix | Delete
* @return mixed
[124] Fix | Delete
*/
[125] Fix | Delete
public function check_pingback( $headers ) {
[126] Fix | Delete
$plugin_settings = new PluginSettings();
[127] Fix | Delete
$settings = $plugin_settings->get_plugin_settings();
[128] Fix | Delete
[129] Fix | Delete
if ( $settings->get_disable_xml_rpc() ) {
[130] Fix | Delete
unset( $headers['X-Pingback'] );
[131] Fix | Delete
}
[132] Fix | Delete
[133] Fix | Delete
return $headers;
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
/**
[137] Fix | Delete
* @return bool
[138] Fix | Delete
*/
[139] Fix | Delete
public function check_xmlrpc_enabled(): bool {
[140] Fix | Delete
$plugin_settings = new PluginSettings();
[141] Fix | Delete
$settings = $plugin_settings->get_plugin_settings();
[142] Fix | Delete
[143] Fix | Delete
if ( $settings->get_disable_xml_rpc() ) {
[144] Fix | Delete
return false;
[145] Fix | Delete
}
[146] Fix | Delete
[147] Fix | Delete
return true;
[148] Fix | Delete
}
[149] Fix | Delete
[150] Fix | Delete
/**
[151] Fix | Delete
* @return bool
[152] Fix | Delete
*/
[153] Fix | Delete
public function check_authentication_password_enabled(): bool {
[154] Fix | Delete
$plugin_settings = new PluginSettings();
[155] Fix | Delete
$settings = $plugin_settings->get_plugin_settings();
[156] Fix | Delete
[157] Fix | Delete
if ( $settings->get_disable_authentication_password() ) {
[158] Fix | Delete
return false;
[159] Fix | Delete
}
[160] Fix | Delete
[161] Fix | Delete
return true;
[162] Fix | Delete
}
[163] Fix | Delete
[164] Fix | Delete
public function litespeed_flush_cache(): void {
[165] Fix | Delete
if ( has_action( 'litespeed_purge_all' ) ) {
[166] Fix | Delete
do_action( 'litespeed_purge_all' );
[167] Fix | Delete
}
[168] Fix | Delete
}
[169] Fix | Delete
[170] Fix | Delete
private function is_transient( $option ): bool {
[171] Fix | Delete
return str_contains( $option, '_transient' );
[172] Fix | Delete
}
[173] Fix | Delete
}
[174] Fix | Delete
[175] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function