PluginProbe
Hostinger Tools / 3.0.3
Hostinger Tools v3.0.3
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/Helper.php +14 -208 3.0.23.0.3 View file →
@@ -5,11 +5,11 @@
5 5 defined( 'ABSPATH' ) || exit;
6 6
7 7 class Helper {
8 8 public const HOSTINGER_FREE_SUBDOMAIN_URL = 'hostingersite.com';
9 - public const HOSTINGER_PAGE = '/wp-admin/admin.php?page=hostinger';
9 + public const HOSTINGER_PAGE = '/wp-admin/admin.php?page=hostinger';
10 10 public const CLIENT_WOO_COMPLETED_ACTIONS = 'woocommerce_task_list_tracked_completed_tasks';
11 - private const PROMOTIONAL_LINKS = array(
11 + private const PROMOTIONAL_LINKS = array(
12 12 'fr_FR' => 'https://www.hostinger.fr/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
13 13 'es_ES' => 'https://www.hostinger.es/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
14 14 'ar' => 'https://www.hostinger.ae/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
15 15 'zh_CN' => 'https://www.hostinger.com.hk/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
@@ -40,47 +40,14 @@
40 40
41 41 return false;
42 42 }
43 43
44 - public static function get_api_token(): string {
45 - $api_token = '';
46 - $token_file = HOSTINGER_WP_TOKEN;
47 -
48 - if ( file_exists( $token_file ) && ! empty( file_get_contents( $token_file ) ) ) {
49 - $api_token = file_get_contents( $token_file );
50 - }
51 -
52 - return $api_token;
53 - }
54 -
55 - /**
56 - *
57 - * Get the host info (domain, subdomain, subdirectory)
58 - *
59 - * @since 1.7.0
60 - * @access public
61 - */
62 - public function get_host_info(): string {
63 - $host = isset( $_SERVER['HTTP_HOST'] ) ? sanitize_text_field( $_SERVER['HTTP_HOST'] ) : '';
64 - $site_url = get_site_url();
65 - $site_url = preg_replace( '#^https?://#', '', $site_url );
66 -
67 - if ( ! empty( $site_url ) && ! empty( $host ) && strpos( $site_url, $host ) === 0 ) {
68 - if ( $site_url === $host ) {
69 - return $host;
70 - } else {
71 - return substr( $site_url, strlen( $host ) + 1 );
72 - }
73 - }
74 -
75 - return $host;
76 - }
77 -
78 - public function is_preview_domain(): bool {
79 - if ( function_exists( 'getallheaders' ) ) {
44 + public function is_preview_domain( $headers = null ): bool {
45 + // @codeCoverageIgnoreStart
46 + if ($headers === null && function_exists('getallheaders')) {
80 47 $headers = getallheaders();
81 48 }
82 -
49 + // @codeCoverageIgnoreEnd
83 50 if ( isset( $headers['X-Preview-Indicator'] ) && $headers['X-Preview-Indicator'] ) {
84 51 return true;
85 52 }
86 53
@@ -86,184 +53,23 @@
86 53
87 54 return false;
88 55 }
89 56
90 - public function is_free_subdomain(): bool {
91 - $site_url = preg_replace( '#^https?://#', '', get_site_url() );
92 -
93 - return ! empty( $site_url ) && strpos( $site_url, self::HOSTINGER_FREE_SUBDOMAIN_URL ) !== false;
94 - }
95 -
96 - public function is_hostinger_admin_page(): bool {
97 -
98 - if ( ! isset( $_SERVER['REQUEST_URI'] ) ) {
99 - return false;
100 - }
101 -
102 - $current_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
103 -
104 - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
105 - return false;
106 - }
107 -
108 - if ( isset( $current_uri ) && strpos( $current_uri, '/wp-json/' ) !== false ) {
109 - return false;
110 - }
111 -
112 - if ( strpos( $current_uri, self::HOSTINGER_PAGE ) !== false ) {
113 - return true;
114 - }
115 -
116 - return false;
117 - }
118 -
119 - /**
120 - *
121 - * Error log
122 - *
123 - * @since 1.9.6
124 - * @access public
125 - */
126 - public function error_log( string $message ): void {
127 - if ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) {
128 - error_log( print_r( $message, true ) );
129 - }
130 - }
131 -
132 - public function default_woocommerce_survey_steps_completed( array $steps ): bool {
133 - $completed_actions = get_option( self::CLIENT_WOO_COMPLETED_ACTIONS, array() );
134 -
135 - return empty( array_diff( $steps, $completed_actions ) );
136 - }
137 -
138 - public function is_this_page( string $page ): bool {
139 -
140 - if ( ! isset( $_SERVER['REQUEST_URI'] ) ) {
141 - return false;
142 - }
143 -
144 - $current_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
145 -
146 - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
147 - return false;
148 - }
149 -
150 - if ( isset( $current_uri ) && strpos( $current_uri, '/wp-json/' ) !== false ) {
151 - return false;
152 - }
153 -
154 - if ( strpos( $current_uri, $page ) !== false ) {
155 - return true;
156 - }
157 -
158 - return false;
159 - }
160 -
161 - public function get_promotional_link_url( string $locale ): string {
162 - if ( isset( self::PROMOTIONAL_LINKS[ $locale ] ) ) {
163 - return self::PROMOTIONAL_LINKS[ $locale ];
164 - }
165 -
166 - return self::PROMOTIONAL_LINKS['en_US'];
167 - }
168 -
169 - public function get_hpanel_domain_url(): string {
170 - $parsed_url = parse_url( get_site_url() );
171 - $host = $parsed_url['host'];
172 - $host_parts = explode( '.', $host );
173 - $subdomain = ( count( $host_parts ) > 2 ) ? array_shift( $host_parts ) . '.' : '';
174 - $domain = implode( '.', $host_parts );
175 -
176 - return self::HPANEL_DOMAIN_URL . $domain . ( $subdomain ? "/wordpress/dashboard/$subdomain$domain" : '' );
177 - }
178 -
179 - public function check_transient_eligibility( $transient_request_key, $cache_time = 3600 ): bool {
180 - try {
181 - // Set transient
182 - set_transient( $transient_request_key, true, $cache_time );
183 -
184 - // Check if transient was set successfully
185 - if ( false === get_transient( $transient_request_key ) ) {
186 - throw new Exception( 'Unable to create transient in WordPress.' );
187 - }
188 -
189 - // If everything is fine, return true
190 - return true;
191 - } catch ( Exception $exception ) {
192 - // If there's an exception, log the error and return false
193 - $this->error_log( 'Error checking eligibility: ' . $exception->getMessage() );
194 -
195 - return false;
196 - }
197 - }
198 -
199 57 public static function woocommerce_onboarding_choice(): bool {
200 58 return (bool) get_option( 'hostinger_woo_onboarding_choice', false );
201 59 }
202 60
203 - /**
204 - * @return bool
205 - */
206 - public static function is_woocommerce_site(): bool {
207 - return class_exists( 'WooCommerce' );
208 - }
61 + public static function generate_bypass_code( $length ) {
62 + $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
63 + $code = '';
64 + $max_index = strlen( $characters ) - 1;
209 65
210 - /**
211 - * @return bool
212 - */
213 - public static function show_woocommerce_onboarding(): bool {
214 - $woo_onboarding_enabled = get_option( 'hostinger_woo_onboarding_enabled', false );
215 - $woo_setup_wizard_completed = get_option( 'woocommerce_onboarding_profile', false );
216 -
217 - return ( self::is_woocommerce_site() && ! self::woocommerce_onboarding_choice() && $woo_onboarding_enabled && ! $woo_setup_wizard_completed );
218 - }
219 -
220 - /**
221 - * @return bool
222 - */
223 - public function can_show_store_ready_message(): bool {
224 - if ( ! self::is_woocommerce_site() || ! self::woocommerce_onboarding_choice() ) {
225 - return false;
66 + for ( $i = 0; $i < $length; $i++ ) {
67 + $random_index = wp_rand( 0, $max_index );
68 + $code .= $characters[ $random_index ];
226 69 }
227 70
228 - $store_ready_message_shown = get_option( 'hostinger_woo_ready_message_shown', null );
229 -
230 - if ( $store_ready_message_shown === null ) {
231 - return false;
232 - }
233 -
234 - if ( (int) $store_ready_message_shown !== 0 ) {
235 - return false;
236 - }
237 -
238 - if ( ! $this->default_woocommerce_survey_completed() ) {
239 - return false;
240 - }
241 -
242 - return true;
71 + return $code;
243 72 }
244 -
245 - public function default_woocommerce_survey_completed(): bool {
246 - $completed_actions = get_option( self::CLIENT_WOO_COMPLETED_ACTIONS, array() );
247 - $required_completed_actions = array( 'products', 'payments' );
248 -
249 - return empty( array_diff( $required_completed_actions, $completed_actions ) );
250 - }
251 -
252 - /**
253 - * @return void
254 - */
255 - public static function generate_bypass_code( $length ) {
256 - $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
257 - $code = '';
258 - $maxIndex = strlen($characters) - 1;
259 -
260 - for ($i = 0; $i < $length; $i++) {
261 - $randomIndex = mt_rand(0, $maxIndex);
262 - $code .= $characters[$randomIndex];
263 - }
264 -
265 - return $code;
266 - }
267 73 }
268 74
269 75 $hostinger_helper = new Helper();