PluginProbe
Hostinger Tools / 3.0.39
Hostinger Tools v3.0.39
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.39, at includes/Helper.php

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