PluginProbe
Hostinger Tools / 3.0.34
Hostinger Tools v3.0.34
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 / Helper.php

Helper.php in Hostinger Tools 3.0.34, at includes/Helper.php

192 lines 5.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Hostinger;
4
5 defined( 'ABSPATH' ) || exit;
6
7 class Helper {
8 const HOSTINGER_LOCALES = [
9 'lt_LT' => 'hostinger.lt',
10 'uk_UA' => 'hostinger.com.ua',
11 'id_ID' => 'hostinger.co.id',
12 'en_US' => 'hostinger.com',
13 'es_ES' => 'hostinger.es',
14 'es_AR' => 'hostinger.com.ar',
15 'es_MX' => 'hostinger.mx',
16 'es_CO' => 'hostinger.co',
17 'pt_BR' => 'hostinger.com.br',
18 'ro_RO' => 'hostinger.ro',
19 'fr_FR' => 'hostinger.fr',
20 'it_IT' => 'hostinger.it',
21 'pl_PL' => 'hostinger.pl',
22 'en_PH' => 'hostinger.ph',
23 'ar_AE' => 'hostinger.ae',
24 'ms_MY' => 'hostinger.my',
25 'ko_KR' => 'hostinger.kr',
26 'vi_VN' => 'hostinger.vn',
27 'th_TH' => 'hostinger.in.th',
28 'tr_TR' => 'hostinger.web.tr',
29 'pt_PT' => 'hostinger.pt',
30 'de_DE' => 'hostinger.de',
31 'en_IN' => 'hostinger.in',
32 'ja_JP' => 'hostinger.jp',
33 'nl_NL' => 'hostinger.nl',
34 'en_GB' => 'hostinger.co.uk',
35 'el_GR' => 'hostinger.gr',
36 'cs_CZ' => 'hostinger.cz',
37 'hu_HU' => 'hostinger.hu',
38 'sv_SE' => 'hostinger.se',
39 'da_DK' => 'hostinger.dk',
40 'fi_FI' => 'hostinger.fi',
41 'sk_SK' => 'hostinger.sk',
42 'no_NO' => 'hostinger.no',
43 'hr_HR' => 'hostinger.hr',
44 'zh_HK' => 'hostinger.com.hk',
45 'he_IL' => 'hostinger.co.il',
46 'lv_LV' => 'hostinger.lv',
47 'et_EE' => 'hostinger.ee',
48 'ur_PK' => 'hostinger.pk',
49 ];
50
51 public const HOMEPAGE_DISPLAY = 'page';
52
53 /**
54 *
55 * Check if plugin is active
56 *
57 * @since 1.0.0
58 * @access public
59 */
60 public static function is_plugin_active( $plugin_slug ): bool {
61 $active_plugins = (array) get_option( 'active_plugins', array() );
62 foreach ( $active_plugins as $active_plugin ) {
63 if ( strpos( $active_plugin, $plugin_slug . '.php' ) !== false ) {
64 return true;
65 }
66 }
67
68 return false;
69 }
70
71 public function is_preview_domain( $headers = null ): bool {
72 // @codeCoverageIgnoreStart
73 if ( $headers === null && function_exists( 'getallheaders' ) ) {
74 $headers = getallheaders();
75 }
76 // @codeCoverageIgnoreEnd
77 if ( isset( $headers['X-Preview-Indicator'] ) && $headers['X-Preview-Indicator'] ) {
78 return true;
79 }
80
81 return false;
82 }
83
84 public static function woocommerce_onboarding_choice(): bool {
85 return (bool) get_option( 'hostinger_woo_onboarding_choice', false );
86 }
87
88 public static function generate_bypass_code( $length ) {
89 $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
90 $code = '';
91 $max_index = strlen( $characters ) - 1;
92
93 for ( $i = 0; $i < $length; $i++ ) {
94 $random_index = wp_rand( 0, $max_index );
95 $code .= $characters[ $random_index ];
96 }
97
98 return $code;
99 }
100
101 public function should_plugin_split_notice_shown() {
102 $plugin_split_notice_hidden = get_option( 'hts_plugin_split_notice_hidden', false );
103
104 if ( $plugin_split_notice_hidden !== false ) {
105 return false;
106 }
107
108 if ( ! version_compare( HOSTINGER_VERSION, '3.0.0', '>=' ) ) {
109 return false;
110 }
111
112 if ( is_plugin_active( 'hostinger-easy-onboarding/hostinger-easy-onboarding.php' ) ) {
113 return false;
114 }
115
116 return true;
117 }
118
119 public function get_hostinger_plugin_url() : string {
120 $websiteLocale = get_locale() ?? 'en_US';
121 $resellerLocale = get_option( 'hostinger_reseller', '' );
122 $baseDomain = $resellerLocale ? : ( self::HOSTINGER_LOCALES[$websiteLocale] ?? 'hostinger.com' );
123
124 $pluginUrl = rtrim( $baseDomain, '/' ) . '/';
125 $pluginUrl .= str_replace( ABSPATH, '', HOSTINGER_ABSPATH );
126
127 return $pluginUrl;
128 }
129
130 public function get_recommended_php_version(): string {
131 $wp_version = get_bloginfo('version');
132
133 if (empty($wp_version)) {
134 return '8.2';
135 }
136
137 // Remove any additional version info (like -RC1, -beta1, etc.)
138 $wp_version = preg_replace('/[-+].*$/', '', $wp_version);
139
140 // Version specific recommendations
141 if (version_compare($wp_version, '6.6', '>=')) {
142 return '8.2'; // Latest recommended version for WP 6.6+
143 }
144
145 if (version_compare($wp_version, '6.3', '>=')) {
146 return '8.1'; // Recommended for WP 6.3-6.5
147 }
148
149 if (version_compare($wp_version, '5.3', '>=')) {
150 return '7.4'; // Recommended for WP 5.3-6.2
151 }
152
153 if (version_compare($wp_version, '5.0', '>=')) {
154 return '7.3'; // Recommended for WP 5.0-5.2
155 }
156
157 if (version_compare($wp_version, '4.9', '=')) {
158 return '7.2'; // Recommended for WP 4.9
159 }
160
161 if (version_compare($wp_version, '4.7', '>=')) {
162 return '7.1'; // Recommended for WP 4.7-4.8
163 }
164
165 if (version_compare($wp_version, '4.4', '>=')) {
166 return '7.0'; // Recommended for WP 4.4-4.6
167 }
168
169 // For versions below 4.9
170 return '5.6';
171 }
172
173 public function get_edit_site_url(): string {
174 if ( wp_is_block_theme() ) {
175 return '';
176 }
177
178 $show_on_front = get_option( 'show_on_front' );
179 $front_page_id = get_option( 'page_on_front' );
180
181
182 if ( $show_on_front === self::HOMEPAGE_DISPLAY && $front_page_id ) {
183 return add_query_arg( [
184 'post' => $front_page_id,
185 'action' => 'edit',
186 ], admin_url( 'post.php' ) );
187 }
188
189 return '';
190 }
191 }
192