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