Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/elementor/core/utils/version.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
namespace Elementor\Core\Utils;
3
+
4
+
if ( ! defined( 'ABSPATH' ) ) {
5
+
exit; // Exit if accessed directly.
6
+
}
7
+
8
+
class Version {
9
+
const PART_MAJOR_1 = 'major1';
10
+
const PART_MAJOR_2 = 'major2';
11
+
const PART_PATCH = 'patch';
12
+
const PART_STAGE = 'stage';
13
+
14
+
/**
15
+
* First number of a version 0.x.x
16
+
*
17
+
* @var string
18
+
*/
19
+
public $major1;
20
+
21
+
/**
22
+
* Second number of a version x.0.x
23
+
*
24
+
* @var string
25
+
*/
26
+
public $major2;
27
+
28
+
/**
29
+
* Third number of a version x.x.0
30
+
*
31
+
* @var string
32
+
*/
33
+
public $patch;
34
+
35
+
/**
36
+
* The stage of a version x.x.x-stage.
37
+
* e.g: x.x.x-dev1, x.x.x-beta3, x.x.x-rc
38
+
*
39
+
* @var string|null
40
+
*/
41
+
public $stage;
42
+
43
+
/**
44
+
* Version constructor.
45
+
*
46
+
* @param $major1
47
+
* @param $major2
48
+
* @param $patch
49
+
* @param $stage
50
+
*/
51
+
public function __construct( $major1, $major2, $patch, $stage = null ) {
52
+
$this->major1 = $major1;
53
+
$this->major2 = $major2;
54
+
$this->patch = $patch;
55
+
$this->stage = $stage;
56
+
}
57
+
58
+
/**
59
+
* Create Version instance.
60
+
*
61
+
* @param string $major1
62
+
* @param string $major2
63
+
* @param string $patch
64
+
* @param null $stage
65
+
*
66
+
* @return static
67
+
*/
68
+
public static function create( $major1 = '0', $major2 = '0', $patch = '0', $stage = null ) {
69
+
return new static( $major1, $major2, $patch, $stage );
70
+
}
71
+
72
+
/**
73
+
* Checks if the current version string is valid.
74
+
*
75
+
* @param $version
76
+
*
77
+
* @return bool
78
+
*/
79
+
public static function is_valid_version( $version ) {
80
+
return (bool) preg_match( '/^(\d+\.)?(\d+\.)?(\*|\d+)(-.+)?$/', $version );
81
+
}
82
+
83
+
/**
84
+
* Creates a Version instance from a string.
85
+
*
86
+
* @param $version
87
+
* @param bool $should_validate
88
+
*
89
+
* @return static
90
+
* @throws \Exception If version comparison fails or invalid version format is provided.
91
+
*/
92
+
public static function create_from_string( $version, $should_validate = true ) {
93
+
if ( $should_validate && ! static::is_valid_version( $version ) ) {
94
+
throw new \Exception( sprintf( '%s is an invalid version.', esc_html( $version ) ) );
95
+
}
96
+
97
+
$parts = explode( '.', $version );
98
+
$patch_parts = [];
99
+
100
+
$major1 = '0';
101
+
$major2 = '0';
102
+
$patch = '0';
103
+
$stage = null;
104
+
105
+
if ( isset( $parts[0] ) ) {
106
+
$major1 = $parts[0];
107
+
}
108
+
109
+
if ( isset( $parts[1] ) ) {
110
+
$major2 = $parts[1];
111
+
}
112
+
113
+
if ( isset( $parts[2] ) ) {
114
+
$patch_parts = explode( '-', $parts[2] );
115
+
116
+
$patch = $patch_parts[0];
117
+
}
118
+
119
+
if ( isset( $patch_parts[1] ) ) {
120
+
$stage = $patch_parts[1];
121
+
}
122
+
123
+
return static::create( $major1, $major2, $patch, $stage );
124
+
}
125
+
126
+
/**
127
+
* Compare the current version instance with another version.
128
+
*
129
+
* @param $operator
130
+
* @param $version
131
+
* @param string $part
132
+
*
133
+
* @return bool
134
+
* @throws \Exception If version validation fails or parsing errors occur.
135
+
*/
136
+
public function compare( $operator, $version, $part = self::PART_STAGE ) {
137
+
if ( ! ( $version instanceof Version ) ) {
138
+
if ( ! static::is_valid_version( $version ) ) {
139
+
$version = '0.0.0';
140
+
}
141
+
142
+
$version = static::create_from_string( $version, false );
143
+
}
144
+
145
+
$current_version = clone $this;
146
+
$compare_version = clone $version;
147
+
148
+
if ( in_array( $part, [ self::PART_PATCH, self::PART_MAJOR_2, self::PART_MAJOR_1 ], true ) ) {
149
+
$current_version->stage = null;
150
+
$compare_version->stage = null;
151
+
}
152
+
153
+
if ( in_array( $part, [ self::PART_MAJOR_2, self::PART_MAJOR_1 ], true ) ) {
154
+
$current_version->patch = '0';
155
+
$compare_version->patch = '0';
156
+
}
157
+
158
+
if ( self::PART_MAJOR_1 === $part ) {
159
+
$current_version->major2 = '0';
160
+
$compare_version->major2 = '0';
161
+
}
162
+
163
+
return version_compare(
164
+
$current_version,
165
+
$compare_version,
166
+
$operator
167
+
);
168
+
}
169
+
170
+
/**
171
+
* Implode the version and return it as string.
172
+
*
173
+
* @return string
174
+
*/
175
+
public function __toString() {
176
+
$version = implode( '.', [ $this->major1, $this->major2, $this->patch ] );
177
+
178
+
if ( $this->stage ) {
179
+
$version .= '-' . $this->stage;
180
+
}
181
+
182
+
return $version;
183
+
}
184
+
}
185
+