Completed
Push — renovate/url-polyfill-1.x ( 01368d...f2aaf6 )
by
unknown
114:05 queued 106:27
created

Version_Selector::is_version_update_required()   B

Complexity

Conditions 8
Paths 12

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 8
nc 12
nop 2
dl 0
loc 25
rs 8.4444
c 0
b 0
f 0
1
<?php
2
/* HEADER */ // phpcs:ignore
3
4
/**
5
 * Used to select package versions.
6
 */
7
class Version_Selector {
8
9
	/**
10
	 * Checks whether the selected package version should be updated. Composer development
11
	 * package versions ('9999999-dev' or versions that start with 'dev-') are favored
12
	 * when the JETPACK_AUTOLOAD_DEV constant is set to true.
13
	 *
14
	 * @param String $selected_version The currently selected package version.
15
	 * @param String $compare_version The package version that is being evaluated to
16
	 *                                determine if the version needs to be updated.
17
	 *
18
	 * @return Boolean Returns true if the selected package version should be updated,
19
	 *                 else false.
20
	 */
21
	public function is_version_update_required( $selected_version, $compare_version ) {
22
		$use_dev_versions = defined( 'JETPACK_AUTOLOAD_DEV' ) && JETPACK_AUTOLOAD_DEV;
23
24
		if ( is_null( $selected_version ) ) {
25
			return true;
26
		}
27
28
		if ( $use_dev_versions && $this->is_package_version_dev( $selected_version ) ) {
29
			return false;
30
		}
31
32
		if ( $this->is_package_version_dev( $compare_version ) ) {
33
			if ( $use_dev_versions ) {
34
				return true;
35
			} else {
36
				return false;
37
			}
38
		}
39
40
		if ( version_compare( $selected_version, $compare_version, '<' ) ) {
41
			return true;
42
		}
43
44
		return false;
45
	}
46
47
	/**
48
	 * Checks whether the given package version is a development version.
49
	 *
50
	 * @param String $version The package version.
51
	 *
52
	 * @return Boolean True if the version is a dev version, else false.
53
	 */
54
	private function is_package_version_dev( $version ) {
55
		if ( 'dev-' === substr( $version, 0, 4 ) || '9999999-dev' === $version ) {
56
			return true;
57
		}
58
59
		return false;
60
	}
61
}
62