PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.16
VikBooking Hotel Booking Engine & PMS v1.8.16
1.8.16 1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 All 37 releases
vikbooking / libraries / wordpress / version.php

version.php in VikBooking Hotel Booking Engine & PMS 1.8.16, at libraries/wordpress/version.php

485 lines 10.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking - Libraries
4 * @subpackage wordpress
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2018 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 // do nothing if the class already exists
15 if (!class_exists('VersionListener'))
16 {
17 /**
18 * Version recognizer class to identify which platform version is running.
19 *
20 * @see JVersion Used to identify the installed platform version.
21 *
22 * @since 1.6
23 */
24 class VersionListener
25 {
26 /**
27 * The platform name.
28 *
29 * @var string
30 * @since 1.6.3
31 */
32 private static $platform = null;
33
34 /**
35 * The platform version.
36 *
37 * @var string
38 * @since 1.6.3
39 */
40 private static $version = null;
41
42 /**
43 * The identifier of the platform version.
44 *
45 * @var integer
46 */
47 private static $id = null;
48
49 /**
50 * Class constructor.
51 */
52 private function __construct()
53 {
54 // not accessible
55 }
56
57 /**
58 * Class cloner.
59 */
60 private function __clone()
61 {
62 // not accessible
63 }
64
65 /**
66 * Returns the current platform name.
67 *
68 * @return string The platform name.
69 *
70 * @since 1.6.3
71 */
72 public static function getPlatform()
73 {
74 if (self::$platform === null)
75 {
76 if (defined('WPINC'))
77 {
78 // wordpress is installed
79 self::$platform = 'wordpress';
80 }
81 else if (defined('_JEXEC'))
82 {
83 // joomla is installed
84 self::$platform = 'joomla';
85 }
86 else
87 {
88 // platform not supported
89 $self::$platform = false;
90 }
91 }
92
93 return self::$platform;
94 }
95
96 /**
97 * Checks if the current platform is Wordpress.
98 *
99 * @return boolean
100 *
101 * @since 1.6.3
102 */
103 public static function isWordpress()
104 {
105 return self::getPlatform() === 'wordpress';
106 }
107
108 /**
109 * Checks if the current platform is Wordpress.
110 *
111 * @return boolean
112 *
113 * @since 1.6.3
114 */
115 public static function isJoomla()
116 {
117 return self::getPlatform() === 'joomla';
118 }
119
120 /**
121 * Returns the current platform version.
122 *
123 * @return string The platform version.
124 *
125 * @since 1.6.3
126 */
127 public static function getVersion()
128 {
129 if (self::$version === null)
130 {
131 $version = new JVersion();
132 self::$version = $version->getShortVersion();
133 }
134
135 return self::$version;
136 }
137
138 /**
139 * Recognizes the Joomla version and return the respective indetifier.
140 *
141 * @return integer The identifier of the Joomla version.
142 */
143 public static function getID()
144 {
145 if (self::$id === null)
146 {
147 // UNSUPPORTED flag will be overridden (if supported)
148 self::$id = self::UNSUPPORTED;
149
150 if (class_exists('JVersion'))
151 {
152 // get platform version
153 $v = static::getVersion();
154
155 if (static::isJoomla())
156 {
157 // get Joomla version identifier
158 self::$id = static::getJoomlaID($v);
159 }
160 else if (static::isWordpress())
161 {
162 // get Wordpress version identifier
163 self::$id = static::getWordpressID($v);
164 }
165 }
166 }
167
168 return self::$id;
169 }
170
171 /**
172 * Detects the current Wordpress version constant.
173 *
174 * @param string $v The platform short version.
175 *
176 * @return integer The version constant.
177 *
178 * @since 1.6.3
179 */
180 protected static function getWordpressID($v)
181 {
182 if (version_compare($v, '4.0') >= 0 && version_compare($v, '5.0') < 0)
183 {
184 // wordpress 4.0
185 return self::WP4;
186 }
187 else if (version_compare($v, '5.0') >= 0)
188 {
189 // wordpress 5.0
190 return self::WP5;
191 }
192
193 // fallback to Wordpress 3.0 or lower
194 return self::WP3;
195 }
196
197 /**
198 * Detects the current Joomla! version constant.
199 *
200 * @param string $v The platform short version.
201 *
202 * @return integer The version constant.
203 *
204 * @since 1.6.3
205 */
206 protected static function getJoomlaID($v)
207 {
208 if (version_compare($v, '2.5') >= 0 && version_compare($v, '3.0') < 0)
209 {
210 // joomla 2.5
211 return self::J25;
212 }
213 else if (version_compare($v, '3.0') >= 0 && version_compare($v, '3.5') < 0)
214 {
215 // joomla 3.0, 3.1, 3.2, 3.3, 3.4
216 return self::J30;
217 }
218 else if (version_compare($v, '3.5') >= 0 && version_compare($v, '3.7') < 0)
219 {
220 // joomla 3.5, 3.6
221 return self::J35;
222 }
223 else if (version_compare($v, '3.7') >= 0 && version_compare($v, '4.0') < 0)
224 {
225 // joomla 3.7, 3.8, 3.9
226 return self::J37;
227 }
228 else if (version_compare($v, '4.0') >= 0)
229 {
230 // joomla 4.0
231 return self::J40;
232 }
233
234 // fallback to Joomla 1.5
235 return self::J15;
236 }
237
238 /**
239 * Checks if the installed Joomla is 1.5 or 1.6.
240 *
241 * @return boolean True if Joomla is 1.5 or 1.6, otherwise false.
242 */
243 public static function isJoomla15()
244 {
245 return self::isJoomla() && self::getID() == self::J15;
246 }
247
248 /**
249 * Checks if the installed Joomla is 2.5.
250 *
251 * @return boolean True if Joomla is 2.5, otherwise false.
252 */
253 public static function isJoomla25()
254 {
255 return self::isJoomla() && self::getID() == self::J25;
256 }
257
258 /**
259 * Checks if the installed Joomla is 3.x.
260 *
261 * @return boolean True if Joomla is between 3.0 and 4.0 (excluded), otherwise false.
262 *
263 * @since 1.8.3
264 */
265 public static function isJoomla3x()
266 {
267 return self::isJoomla30() || self::isJoomla35() || self::isJoomla37();
268 }
269
270 /**
271 * Checks if the installed Joomla is between 3.0 and 3.4.
272 *
273 * @return boolean True if Joomla is between 3.0 and 3.4, otherwise false.
274 */
275 public static function isJoomla30()
276 {
277 return self::isJoomla() && self::getID() == self::J30;
278 }
279
280 /**
281 * Checks if the installed Joomla is between 3.5 and 4.0 (excluded).
282 *
283 * @return boolean True if Joomla is between 3.0 and 4.0 (excluded), otherwise false.
284 */
285 public static function isJoomla35()
286 {
287 return self::isJoomla() && self::getID() == self::J35;
288 }
289
290 /**
291 * Checks if the installed Joomla is 3.7 or higher.
292 *
293 * @return boolean True if Joomla is 3.7 or higher, otherwise false.
294 */
295 public static function isJoomla37()
296 {
297 return self::isJoomla() && self::getID() == self::J37;
298 }
299
300 /**
301 * Checks if the installed Joomla is 4.0 or higher.
302 *
303 * @return boolean True if Joomla is 4.0 or higher, otherwise false.
304 */
305 public static function isJoomla40()
306 {
307 return self::isJoomla() && self::getID() == self::J40;
308 }
309
310 /**
311 * Alias for `isJoomla40`.
312 */
313 public static function isJoomla4x()
314 {
315 return self::isJoomla40();
316 }
317
318 /**
319 * Checks if the installed Joomla is 5.0 or higher.
320 *
321 * @return boolean True if Joomla is 5.0 or higher, otherwise false.
322 */
323 public static function isJoomla50()
324 {
325 return self::isJoomla() && version_compare(static::getVersion(), '5.0', '>=');
326 }
327
328 /**
329 * Checks if the installed Joomla is 6.0 or higher.
330 *
331 * @return boolean True if Joomla is 6.0 or higher, otherwise false.
332 */
333 public static function isJoomla60()
334 {
335 return self::isJoomla() && version_compare(static::getVersion(), '6.0', '>=');
336 }
337
338 /**
339 * Checks if the installed Wordpress is 4.0 or higher.
340 *
341 * @return boolean True if Wordpress is 4.0 or higher, otherwise false.
342 */
343 public static function isWordpress4()
344 {
345 return self::isWordpress() && self::getID() == self::WP4;
346 }
347
348 /**
349 * Checks if the installed Wordpress is 5.0 or higher.
350 *
351 * @return boolean True if Wordpress is 5.0 or higher, otherwise false.
352 */
353 public static function isWordpress5()
354 {
355 return self::isWordpress() && self::getID() == self::WP5;
356 }
357
358 /**
359 * Checks if the installed Joomla is supported.
360 * The Joomla version is not supported when the class is not able
361 * to recognize the installed version.
362 *
363 * @return boolean True if the Joomla version is supported, otherwise false.
364 */
365 public static function isSupported()
366 {
367 return self::getID() != self::UNSUPPORTED;
368 }
369
370 /**
371 * Check if the current Joomla version is higher than the provided one.
372 *
373 * @param mixed The version to check.
374 * - int The platform ID will be compared;
375 * - string The platform version will be compared.
376 *
377 * @return boolean True if the current version is higher, otherwise false.
378 */
379 public static function isHigherThan($version)
380 {
381 if (is_int($version))
382 {
383 // compare platform ID only if an int was passed
384 return self::getID() > $version;
385 }
386
387 // compare current version with provided version
388 return version_compare(static::getVersion(), $version, '>');
389 }
390
391 /**
392 * Check if the current Joomla version is lower than the provided one.
393 *
394 * @param mixed The version to check.
395 * - int The platform ID will be compared;
396 * - string The platform version will be compared.
397 *
398 * @return boolean True if the current version is lower, otherwise false.
399 */
400 public static function isLowerThan($version)
401 {
402 if (is_int($version))
403 {
404 return self::getID() < $version;
405 }
406
407 // compare current version with provided version
408 return version_compare(static::getVersion(), $version, '<');
409 }
410
411 /**
412 * The UNSUPPORTED version identifier.
413 *
414 * @var integer
415 */
416 const UNSUPPORTED = -1;
417
418 /**
419 * The Joomla 1.5 version identifier.
420 *
421 * @var integer
422 */
423 const J15 = 0;
424
425 /**
426 * The Joomla 2.5 version identifier.
427 *
428 * @var integer
429 */
430 const J25 = 1;
431
432 /**
433 * The Joomla 3.0 to 3.4 version identifier.
434 *
435 * @var integer
436 */
437 const J30 = 2;
438
439 /**
440 * The Joomla 3.5 to 4.0 (excluded) version identifier.
441 *
442 * @var integer
443 */
444 const J35 = 3;
445
446 /**
447 * The Joomla 3.7 version identifier.
448 *
449 * @var integer
450 */
451 const J37 = 4;
452
453 /**
454 * The Joomla 4.0 version identifier.
455 *
456 * @var integer
457 */
458 const J40 = 5;
459
460 /**
461 * The Wordpress 3.0 version identifier.
462 *
463 * @var integer
464 * @since 1.6.3
465 */
466 const WP3 = 0;
467
468 /**
469 * The Wordpress 4.0 version identifier.
470 *
471 * @var integer
472 * @since 1.6.3
473 */
474 const WP4 = 1;
475
476 /**
477 * The Wordpress 5.0 version identifier.
478 *
479 * @var integer
480 * @since 1.6.3
481 */
482 const WP5 = 2;
483 }
484 }
485