PluginProbe
Hostinger Tools / 2.0.6
Hostinger Tools v2.0.6
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
hostinger / includes / class-hostinger-helper.php

class-hostinger-helper.php in Hostinger Tools 2.0.6, at includes/class-hostinger-helper.php

202 lines 6.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class Hostinger_Helper {
4 public const HOSTINGER_FREE_SUBDOMAIN_URL = 'hostingersite.com';
5 public const HOSTINGER_PAGE = '/wp-admin/admin.php?page=hostinger';
6 public const CLIENT_WOO_COMPLETED_ACTIONS = 'woocommerce_task_list_tracked_completed_tasks';
7 private const PROMOTIONAL_LINKS = array(
8 'fr_FR' => 'https://www.hostinger.fr/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
9 'es_ES' => 'https://www.hostinger.es/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
10 'ar' => 'https://www.hostinger.ae/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
11 'zh_CN' => 'https://www.hostinger.com.hk/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
12 'id_ID' => 'https://www.hostinger.co.id/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
13 'lt_LT' => 'https://www.hostinger.lt/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
14 'pt_PT' => 'https://www.hostinger.pt/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
15 'uk' => 'https://www.hostinger.com.ua/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
16 'tr_TR' => 'https://www.hostinger.com.tr/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
17 'en_US' => 'https://www.hostinger.com/cpanel-login?r=%2Fjump-to%2Fnew-panel%2Fsection%2Freferrals&utm_source=Banner&utm_medium=HostingerWPplugin',
18 );
19
20 private const HPANEL_DOMAIN_URL = 'https://hpanel.hostinger.com/websites/';
21
22 /**
23 *
24 * Check if plugin is active
25 *
26 * @since 1.0.0
27 * @access public
28 */
29 public static function is_plugin_active( $plugin_slug ): bool {
30 $active_plugins = (array) get_option( 'active_plugins', array() );
31 foreach ( $active_plugins as $active_plugin ) {
32 if ( strpos( $active_plugin, $plugin_slug . '.php' ) !== false ) {
33 return true;
34 }
35 }
36
37 return false;
38 }
39
40 public static function get_api_token(): string {
41 $api_token = '';
42 $token_file = HOSTINGER_WP_TOKEN;
43
44 if ( file_exists( $token_file ) && ! empty( file_get_contents( $token_file ) ) ) {
45 $api_token = file_get_contents( $token_file );
46 }
47 return $api_token;
48 }
49
50 /**
51 *
52 * Get the host info (domain, subdomain, subdirectory)
53 *
54 * @since 1.7.0
55 * @access public
56 */
57 public function get_host_info(): string {
58 $host = isset( $_SERVER['HTTP_HOST'] ) ? sanitize_text_field( $_SERVER['HTTP_HOST'] ) : '';
59 $site_url = get_site_url();
60 $site_url = preg_replace( '#^https?://#', '', $site_url );
61
62 if ( ! empty( $site_url ) && ! empty( $host ) && strpos( $site_url, $host ) === 0 ) {
63 if ( $site_url === $host ) {
64 return $host;
65 } else {
66 return substr( $site_url, strlen( $host ) + 1 );
67 }
68 }
69
70 return $host;
71 }
72
73 public function is_preview_domain(): bool {
74 if ( function_exists( 'getallheaders' ) ) {
75 $headers = getallheaders();
76 }
77
78 if ( isset( $headers['X-Preview-Indicator'] ) && $headers['X-Preview-Indicator'] ) {
79 return true;
80 }
81
82 return false;
83 }
84
85 public function is_free_subdomain(): bool {
86 $site_url = preg_replace( '#^https?://#', '', get_site_url() );
87
88 return ! empty( $site_url ) && strpos( $site_url, self::HOSTINGER_FREE_SUBDOMAIN_URL ) !== false;
89 }
90
91 public function is_hostinger_admin_page(): bool {
92
93 if ( ! isset( $_SERVER['REQUEST_URI'] ) ) {
94 return false;
95 }
96
97 $current_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
98
99 if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
100 return false;
101 }
102
103 if ( isset( $current_uri ) && strpos( $current_uri, '/wp-json/' ) !== false ) {
104 return false;
105 }
106
107 if ( strpos( $current_uri, self::HOSTINGER_PAGE ) !== false ) {
108 return true;
109 }
110
111 return false;
112 }
113
114 /**
115 *
116 * Error log
117 *
118 * @since 1.9.6
119 * @access public
120 */
121 public function error_log( string $message ): void {
122 if ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) {
123 error_log( print_r( $message, true ) );
124 }
125 }
126
127 public function default_woocommerce_survey_steps_completed( array $steps ): bool {
128 $completed_actions = get_option( self::CLIENT_WOO_COMPLETED_ACTIONS, array() );
129
130 return empty( array_diff( $steps, $completed_actions ) );
131 }
132
133 public function is_this_page( string $page ): bool {
134
135 if ( ! isset( $_SERVER['REQUEST_URI'] ) ) {
136 return false;
137 }
138
139 $current_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
140
141 if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
142 return false;
143 }
144
145 if ( isset( $current_uri ) && strpos( $current_uri, '/wp-json/' ) !== false ) {
146 return false;
147 }
148
149 if ( strpos( $current_uri, $page ) !== false ) {
150 return true;
151 }
152
153 return false;
154 }
155
156 public function get_promotional_link_url( string $locale ): string {
157 if ( isset( self::PROMOTIONAL_LINKS[ $locale ] ) ) {
158 return self::PROMOTIONAL_LINKS[ $locale ];
159 }
160
161 return self::PROMOTIONAL_LINKS['en_US'];
162 }
163
164 public function get_domain_from_url(): string {
165 $host = parse_url( get_site_url(), PHP_URL_HOST );
166
167 return $host === false ? self::HPANEL_DOMAIN_URL : $host;
168 }
169
170 public function get_hpanel_domain_url(): string {
171 $domain_url = $this->get_domain_from_url();
172
173 if( $domain_url === self::HPANEL_DOMAIN_URL ) {
174 return $domain_url;
175 }
176
177 return self::HPANEL_DOMAIN_URL . $domain_url;
178 }
179
180 public function check_transient_eligibility( $transient_request_key, $cache_time = 3600 ): bool {
181 try {
182 // Set transient
183 set_transient( $transient_request_key, true, $cache_time );
184
185 // Check if transient was set successfully
186 if ( false === get_transient( $transient_request_key ) ) {
187 throw new Exception( 'Unable to create transient in WordPress.' );
188 }
189
190 // If everything is fine, return true
191 return true;
192
193 } catch ( Exception $exception ) {
194 // If there's an exception, log the error and return false
195 $this->helper->error_log( 'Error checking eligibility: ' . $exception->getMessage() );
196 return false;
197 }
198 }
199 }
200
201 $hostinger_helper = new Hostinger_Helper();
202