Passed
Push — master ( 138f47...88fcc0 )
by Blizzz
10:57 queued 11s
created
apps/testing/appinfo/routes.php 1 patch
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -21,62 +21,62 @@
 block discarded – undo
21 21
  */
22 22
 
23 23
 return [
24
-	'routes' => [
25
-		[
26
-			'name' => 'RateLimitTest#userAndAnonProtected',
27
-			'url' => '/userAndAnonProtected',
28
-			'verb' => 'GET',
29
-		],
30
-		[
31
-			'name' => 'RateLimitTest#onlyAnonProtected',
32
-			'url' => '/anonProtected',
33
-			'verb' => 'GET',
34
-		],
35
-	],
24
+    'routes' => [
25
+        [
26
+            'name' => 'RateLimitTest#userAndAnonProtected',
27
+            'url' => '/userAndAnonProtected',
28
+            'verb' => 'GET',
29
+        ],
30
+        [
31
+            'name' => 'RateLimitTest#onlyAnonProtected',
32
+            'url' => '/anonProtected',
33
+            'verb' => 'GET',
34
+        ],
35
+    ],
36 36
 
37
-	'ocs' => [
38
-		[
39
-			'name' => 'Config#setAppValue',
40
-			'url'  => '/api/v1/app/{appid}/{configkey}',
41
-			'verb' => 'POST',
42
-		],
43
-		[
44
-			'name' => 'Config#deleteAppValue',
45
-			'url'  => '/api/v1/app/{appid}/{configkey}',
46
-			'verb' => 'DELETE',
47
-		],
48
-		[
49
-			'name' => 'Locking#isLockingEnabled',
50
-			'url'  => '/api/v1/lockprovisioning',
51
-			'verb' => 'GET',
52
-		],
53
-		[
54
-			'name' => 'Locking#isLocked',
55
-			'url'  => '/api/v1/lockprovisioning/{type}/{user}',
56
-			'verb' => 'GET',
57
-		],
58
-		[
59
-			'name' => 'Locking#acquireLock',
60
-			'url'  => '/api/v1/lockprovisioning/{type}/{user}',
61
-			'verb' => 'POST',
62
-		],
63
-		[
64
-			'name' => 'Locking#changeLock',
65
-			'url'  => '/api/v1/lockprovisioning/{type}/{user}',
66
-			'verb' => 'PUT',
67
-		],
68
-		[
69
-			'name' => 'Locking#releaseLock',
70
-			'url'  => '/api/v1/lockprovisioning/{type}/{user}',
71
-			'verb' => 'DELETE',
72
-		],
73
-		[
74
-			'name' => 'Locking#releaseAll',
75
-			'url'  => '/api/v1/lockprovisioning/{type}',
76
-			'verb' => 'DELETE',
77
-			'defaults' => [
78
-				'type' => null
79
-			]
80
-		],
81
-	],
37
+    'ocs' => [
38
+        [
39
+            'name' => 'Config#setAppValue',
40
+            'url'  => '/api/v1/app/{appid}/{configkey}',
41
+            'verb' => 'POST',
42
+        ],
43
+        [
44
+            'name' => 'Config#deleteAppValue',
45
+            'url'  => '/api/v1/app/{appid}/{configkey}',
46
+            'verb' => 'DELETE',
47
+        ],
48
+        [
49
+            'name' => 'Locking#isLockingEnabled',
50
+            'url'  => '/api/v1/lockprovisioning',
51
+            'verb' => 'GET',
52
+        ],
53
+        [
54
+            'name' => 'Locking#isLocked',
55
+            'url'  => '/api/v1/lockprovisioning/{type}/{user}',
56
+            'verb' => 'GET',
57
+        ],
58
+        [
59
+            'name' => 'Locking#acquireLock',
60
+            'url'  => '/api/v1/lockprovisioning/{type}/{user}',
61
+            'verb' => 'POST',
62
+        ],
63
+        [
64
+            'name' => 'Locking#changeLock',
65
+            'url'  => '/api/v1/lockprovisioning/{type}/{user}',
66
+            'verb' => 'PUT',
67
+        ],
68
+        [
69
+            'name' => 'Locking#releaseLock',
70
+            'url'  => '/api/v1/lockprovisioning/{type}/{user}',
71
+            'verb' => 'DELETE',
72
+        ],
73
+        [
74
+            'name' => 'Locking#releaseAll',
75
+            'url'  => '/api/v1/lockprovisioning/{type}',
76
+            'verb' => 'DELETE',
77
+            'defaults' => [
78
+                'type' => null
79
+            ]
80
+        ],
81
+    ],
82 82
 ];
Please login to merge, or discard this patch.
lib/public/Route/IRouter.php 1 patch
Indentation   +79 added lines, -79 removed lines patch added patch discarded remove patch
@@ -36,91 +36,91 @@
 block discarded – undo
36 36
  */
37 37
 interface IRouter {
38 38
 
39
-	/**
40
-	 * Get the files to load the routes from
41
-	 *
42
-	 * @return string[]
43
-	 * @since 7.0.0
44
-	 * @deprecated 9.0.0
45
-	 */
46
-	public function getRoutingFiles();
39
+    /**
40
+     * Get the files to load the routes from
41
+     *
42
+     * @return string[]
43
+     * @since 7.0.0
44
+     * @deprecated 9.0.0
45
+     */
46
+    public function getRoutingFiles();
47 47
 
48
-	/**
49
-	 * @return string
50
-	 * @since 7.0.0
51
-	 * @deprecated 9.0.0
52
-	 */
53
-	public function getCacheKey();
48
+    /**
49
+     * @return string
50
+     * @since 7.0.0
51
+     * @deprecated 9.0.0
52
+     */
53
+    public function getCacheKey();
54 54
 
55
-	/**
56
-	 * Loads the routes
57
-	 *
58
-	 * @param null|string $app
59
-	 * @since 7.0.0
60
-	 * @deprecated 9.0.0
61
-	 */
62
-	public function loadRoutes($app = null);
55
+    /**
56
+     * Loads the routes
57
+     *
58
+     * @param null|string $app
59
+     * @since 7.0.0
60
+     * @deprecated 9.0.0
61
+     */
62
+    public function loadRoutes($app = null);
63 63
 
64
-	/**
65
-	 * Sets the collection to use for adding routes
66
-	 *
67
-	 * @param string $name Name of the collection to use.
68
-	 * @return void
69
-	 * @since 7.0.0
70
-	 * @deprecated 9.0.0
71
-	 */
72
-	public function useCollection($name);
64
+    /**
65
+     * Sets the collection to use for adding routes
66
+     *
67
+     * @param string $name Name of the collection to use.
68
+     * @return void
69
+     * @since 7.0.0
70
+     * @deprecated 9.0.0
71
+     */
72
+    public function useCollection($name);
73 73
 
74
-	/**
75
-	 * returns the current collection name in use for adding routes
76
-	 *
77
-	 * @return string the collection name
78
-	 * @since 8.0.0
79
-	 * @deprecated 9.0.0
80
-	 */
81
-	public function getCurrentCollection();
74
+    /**
75
+     * returns the current collection name in use for adding routes
76
+     *
77
+     * @return string the collection name
78
+     * @since 8.0.0
79
+     * @deprecated 9.0.0
80
+     */
81
+    public function getCurrentCollection();
82 82
 
83
-	/**
84
-	 * Create a \OCP\Route\IRoute.
85
-	 *
86
-	 * @param string $name Name of the route to create.
87
-	 * @param string $pattern The pattern to match
88
-	 * @param array $defaults An array of default parameter values
89
-	 * @param array $requirements An array of requirements for parameters (regexes)
90
-	 * @return \OCP\Route\IRoute
91
-	 * @since 7.0.0
92
-	 * @deprecated 9.0.0
93
-	 */
94
-	public function create($name, $pattern, array $defaults = [], array $requirements = []);
83
+    /**
84
+     * Create a \OCP\Route\IRoute.
85
+     *
86
+     * @param string $name Name of the route to create.
87
+     * @param string $pattern The pattern to match
88
+     * @param array $defaults An array of default parameter values
89
+     * @param array $requirements An array of requirements for parameters (regexes)
90
+     * @return \OCP\Route\IRoute
91
+     * @since 7.0.0
92
+     * @deprecated 9.0.0
93
+     */
94
+    public function create($name, $pattern, array $defaults = [], array $requirements = []);
95 95
 
96
-	/**
97
-	 * Find the route matching $url.
98
-	 *
99
-	 * @param string $url The url to find
100
-	 * @throws \Exception
101
-	 * @return void
102
-	 * @since 7.0.0
103
-	 * @deprecated 9.0.0
104
-	 */
105
-	public function match($url);
96
+    /**
97
+     * Find the route matching $url.
98
+     *
99
+     * @param string $url The url to find
100
+     * @throws \Exception
101
+     * @return void
102
+     * @since 7.0.0
103
+     * @deprecated 9.0.0
104
+     */
105
+    public function match($url);
106 106
 
107
-	/**
108
-	 * Get the url generator
109
-	 *
110
-	 * @since 7.0.0
111
-	 * @deprecated 9.0.0
112
-	 */
113
-	public function getGenerator();
107
+    /**
108
+     * Get the url generator
109
+     *
110
+     * @since 7.0.0
111
+     * @deprecated 9.0.0
112
+     */
113
+    public function getGenerator();
114 114
 
115
-	/**
116
-	 * Generate url based on $name and $parameters
117
-	 *
118
-	 * @param string $name Name of the route to use.
119
-	 * @param array $parameters Parameters for the route
120
-	 * @param bool $absolute
121
-	 * @return string
122
-	 * @since 7.0.0
123
-	 * @deprecated 9.0.0
124
-	 */
125
-	public function generate($name, $parameters = [], $absolute = false);
115
+    /**
116
+     * Generate url based on $name and $parameters
117
+     *
118
+     * @param string $name Name of the route to use.
119
+     * @param array $parameters Parameters for the route
120
+     * @param bool $absolute
121
+     * @return string
122
+     * @since 7.0.0
123
+     * @deprecated 9.0.0
124
+     */
125
+    public function generate($name, $parameters = [], $absolute = false);
126 126
 }
Please login to merge, or discard this patch.
lib/public/Files/LockNotAcquiredException.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -36,27 +36,27 @@
 block discarded – undo
36 36
  * @since 7.0.0
37 37
  */
38 38
 class LockNotAcquiredException extends \Exception {
39
-	/** @var string $path The path that could not be locked */
40
-	public $path;
39
+    /** @var string $path The path that could not be locked */
40
+    public $path;
41 41
 
42
-	/** @var integer $lockType The type of the lock that was attempted */
43
-	public $lockType;
42
+    /** @var integer $lockType The type of the lock that was attempted */
43
+    public $lockType;
44 44
 
45
-	/**
46
-	 * @since 7.0.0
47
-	 */
48
-	public function __construct($path, $lockType, $code = 0, \Exception $previous = null) {
49
-		$message = \OC::$server->getL10N('core')->t('Could not obtain lock type %d on "%s".', [$lockType, $path]);
50
-		parent::__construct($message, $code, $previous);
51
-	}
45
+    /**
46
+     * @since 7.0.0
47
+     */
48
+    public function __construct($path, $lockType, $code = 0, \Exception $previous = null) {
49
+        $message = \OC::$server->getL10N('core')->t('Could not obtain lock type %d on "%s".', [$lockType, $path]);
50
+        parent::__construct($message, $code, $previous);
51
+    }
52 52
 
53
-	/**
54
-	 * custom string representation of object
55
-	 *
56
-	 * @return string
57
-	 * @since 7.0.0
58
-	 */
59
-	public function __toString() {
60
-		return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
61
-	}
53
+    /**
54
+     * custom string representation of object
55
+     *
56
+     * @return string
57
+     * @since 7.0.0
58
+     */
59
+    public function __toString() {
60
+        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
61
+    }
62 62
 }
Please login to merge, or discard this patch.
lib/public/DB/QueryBuilder/ICompositeExpression.php 1 patch
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -28,39 +28,39 @@
 block discarded – undo
28 28
  * @since 8.2.0
29 29
  */
30 30
 interface ICompositeExpression {
31
-	/**
32
-	 * Adds multiple parts to composite expression.
33
-	 *
34
-	 * @param array $parts
35
-	 *
36
-	 * @return ICompositeExpression
37
-	 * @since 8.2.0
38
-	 */
39
-	public function addMultiple(array $parts = []);
31
+    /**
32
+     * Adds multiple parts to composite expression.
33
+     *
34
+     * @param array $parts
35
+     *
36
+     * @return ICompositeExpression
37
+     * @since 8.2.0
38
+     */
39
+    public function addMultiple(array $parts = []);
40 40
 
41
-	/**
42
-	 * Adds an expression to composite expression.
43
-	 *
44
-	 * @param mixed $part
45
-	 *
46
-	 * @return ICompositeExpression
47
-	 * @since 8.2.0
48
-	 */
49
-	public function add($part);
41
+    /**
42
+     * Adds an expression to composite expression.
43
+     *
44
+     * @param mixed $part
45
+     *
46
+     * @return ICompositeExpression
47
+     * @since 8.2.0
48
+     */
49
+    public function add($part);
50 50
 
51
-	/**
52
-	 * Retrieves the amount of expressions on composite expression.
53
-	 *
54
-	 * @return integer
55
-	 * @since 8.2.0
56
-	 */
57
-	public function count();
51
+    /**
52
+     * Retrieves the amount of expressions on composite expression.
53
+     *
54
+     * @return integer
55
+     * @since 8.2.0
56
+     */
57
+    public function count();
58 58
 
59
-	/**
60
-	 * Returns the type of this composite expression (AND/OR).
61
-	 *
62
-	 * @return string
63
-	 * @since 8.2.0
64
-	 */
65
-	public function getType();
59
+    /**
60
+     * Returns the type of this composite expression (AND/OR).
61
+     *
62
+     * @return string
63
+     * @since 8.2.0
64
+     */
65
+    public function getType();
66 66
 }
Please login to merge, or discard this patch.
lib/public/AppFramework/Middleware.php 1 patch
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -42,67 +42,67 @@
 block discarded – undo
42 42
 abstract class Middleware {
43 43
 
44 44
 
45
-	/**
46
-	 * This is being run in normal order before the controller is being
47
-	 * called which allows several modifications and checks
48
-	 *
49
-	 * @param Controller $controller the controller that is being called
50
-	 * @param string $methodName the name of the method that will be called on
51
-	 *                           the controller
52
-	 * @since 6.0.0
53
-	 */
54
-	public function beforeController($controller, $methodName) {
55
-	}
45
+    /**
46
+     * This is being run in normal order before the controller is being
47
+     * called which allows several modifications and checks
48
+     *
49
+     * @param Controller $controller the controller that is being called
50
+     * @param string $methodName the name of the method that will be called on
51
+     *                           the controller
52
+     * @since 6.0.0
53
+     */
54
+    public function beforeController($controller, $methodName) {
55
+    }
56 56
 
57 57
 
58
-	/**
59
-	 * This is being run when either the beforeController method or the
60
-	 * controller method itself is throwing an exception. The middleware is
61
-	 * asked in reverse order to handle the exception and to return a response.
62
-	 * If the response is null, it is assumed that the exception could not be
63
-	 * handled and the error will be thrown again
64
-	 *
65
-	 * @param Controller $controller the controller that is being called
66
-	 * @param string $methodName the name of the method that will be called on
67
-	 *                           the controller
68
-	 * @param \Exception $exception the thrown exception
69
-	 * @throws \Exception the passed in exception if it can't handle it
70
-	 * @return Response a Response object in case that the exception was handled
71
-	 * @since 6.0.0
72
-	 */
73
-	public function afterException($controller, $methodName, \Exception $exception) {
74
-		throw $exception;
75
-	}
58
+    /**
59
+     * This is being run when either the beforeController method or the
60
+     * controller method itself is throwing an exception. The middleware is
61
+     * asked in reverse order to handle the exception and to return a response.
62
+     * If the response is null, it is assumed that the exception could not be
63
+     * handled and the error will be thrown again
64
+     *
65
+     * @param Controller $controller the controller that is being called
66
+     * @param string $methodName the name of the method that will be called on
67
+     *                           the controller
68
+     * @param \Exception $exception the thrown exception
69
+     * @throws \Exception the passed in exception if it can't handle it
70
+     * @return Response a Response object in case that the exception was handled
71
+     * @since 6.0.0
72
+     */
73
+    public function afterException($controller, $methodName, \Exception $exception) {
74
+        throw $exception;
75
+    }
76 76
 
77 77
 
78
-	/**
79
-	 * This is being run after a successful controllermethod call and allows
80
-	 * the manipulation of a Response object. The middleware is run in reverse order
81
-	 *
82
-	 * @param Controller $controller the controller that is being called
83
-	 * @param string $methodName the name of the method that will be called on
84
-	 *                           the controller
85
-	 * @param Response $response the generated response from the controller
86
-	 * @return Response a Response object
87
-	 * @since 6.0.0
88
-	 */
89
-	public function afterController($controller, $methodName, Response $response) {
90
-		return $response;
91
-	}
78
+    /**
79
+     * This is being run after a successful controllermethod call and allows
80
+     * the manipulation of a Response object. The middleware is run in reverse order
81
+     *
82
+     * @param Controller $controller the controller that is being called
83
+     * @param string $methodName the name of the method that will be called on
84
+     *                           the controller
85
+     * @param Response $response the generated response from the controller
86
+     * @return Response a Response object
87
+     * @since 6.0.0
88
+     */
89
+    public function afterController($controller, $methodName, Response $response) {
90
+        return $response;
91
+    }
92 92
 
93 93
 
94
-	/**
95
-	 * This is being run after the response object has been rendered and
96
-	 * allows the manipulation of the output. The middleware is run in reverse order
97
-	 *
98
-	 * @param Controller $controller the controller that is being called
99
-	 * @param string $methodName the name of the method that will be called on
100
-	 *                           the controller
101
-	 * @param string $output the generated output from a response
102
-	 * @return string the output that should be printed
103
-	 * @since 6.0.0
104
-	 */
105
-	public function beforeOutput($controller, $methodName, $output) {
106
-		return $output;
107
-	}
94
+    /**
95
+     * This is being run after the response object has been rendered and
96
+     * allows the manipulation of the output. The middleware is run in reverse order
97
+     *
98
+     * @param Controller $controller the controller that is being called
99
+     * @param string $methodName the name of the method that will be called on
100
+     *                           the controller
101
+     * @param string $output the generated output from a response
102
+     * @return string the output that should be printed
103
+     * @since 6.0.0
104
+     */
105
+    public function beforeOutput($controller, $methodName, $output) {
106
+        return $output;
107
+    }
108 108
 }
Please login to merge, or discard this patch.
lib/public/AppFramework/OCS/OCSNotFoundException.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -32,14 +32,14 @@
 block discarded – undo
32 32
  * @since 9.1.0
33 33
  */
34 34
 class OCSNotFoundException extends OCSException {
35
-	/**
36
-	 * OCSNotFoundException constructor.
37
-	 *
38
-	 * @param string $message
39
-	 * @param Exception|null $previous
40
-	 * @since 9.1.0
41
-	 */
42
-	public function __construct($message = '', Exception $previous = null) {
43
-		parent::__construct($message, Http::STATUS_NOT_FOUND, $previous);
44
-	}
35
+    /**
36
+     * OCSNotFoundException constructor.
37
+     *
38
+     * @param string $message
39
+     * @param Exception|null $previous
40
+     * @since 9.1.0
41
+     */
42
+    public function __construct($message = '', Exception $previous = null) {
43
+        parent::__construct($message, Http::STATUS_NOT_FOUND, $previous);
44
+    }
45 45
 }
Please login to merge, or discard this patch.
lib/public/AppFramework/OCS/OCSForbiddenException.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -32,14 +32,14 @@
 block discarded – undo
32 32
  * @since 9.1.0
33 33
  */
34 34
 class OCSForbiddenException extends OCSException {
35
-	/**
36
-	 * OCSForbiddenException constructor.
37
-	 *
38
-	 * @param string $message
39
-	 * @param Exception|null $previous
40
-	 * @since 9.1.0
41
-	 */
42
-	public function __construct($message = '', Exception $previous = null) {
43
-		parent::__construct($message, Http::STATUS_FORBIDDEN, $previous);
44
-	}
35
+    /**
36
+     * OCSForbiddenException constructor.
37
+     *
38
+     * @param string $message
39
+     * @param Exception|null $previous
40
+     * @since 9.1.0
41
+     */
42
+    public function __construct($message = '', Exception $previous = null) {
43
+        parent::__construct($message, Http::STATUS_FORBIDDEN, $previous);
44
+    }
45 45
 }
Please login to merge, or discard this patch.
lib/public/AppFramework/OCS/OCSBadRequestException.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -32,14 +32,14 @@
 block discarded – undo
32 32
  * @since 9.1.0
33 33
  */
34 34
 class OCSBadRequestException extends OCSException {
35
-	/**
36
-	 * OCSBadRequestException constructor.
37
-	 *
38
-	 * @param string $message
39
-	 * @param Exception|null $previous
40
-	 * @since 9.1.0
41
-	 */
42
-	public function __construct($message = '', Exception $previous = null) {
43
-		parent::__construct($message, Http::STATUS_BAD_REQUEST, $previous);
44
-	}
35
+    /**
36
+     * OCSBadRequestException constructor.
37
+     *
38
+     * @param string $message
39
+     * @param Exception|null $previous
40
+     * @since 9.1.0
41
+     */
42
+    public function __construct($message = '', Exception $previous = null) {
43
+        parent::__construct($message, Http::STATUS_BAD_REQUEST, $previous);
44
+    }
45 45
 }
Please login to merge, or discard this patch.
lib/private/App/PlatformRepository.php 1 patch
Indentation   +196 added lines, -196 removed lines patch added patch discarded remove patch
@@ -30,200 +30,200 @@
 block discarded – undo
30 30
  * @package OC\App
31 31
  */
32 32
 class PlatformRepository {
33
-	public function __construct() {
34
-		$this->packages = $this->initialize();
35
-	}
36
-
37
-	protected function initialize() {
38
-		$loadedExtensions = get_loaded_extensions();
39
-		$packages = [];
40
-
41
-		// Extensions scanning
42
-		foreach ($loadedExtensions as $name) {
43
-			if (in_array($name, ['standard', 'Core'])) {
44
-				continue;
45
-			}
46
-
47
-			$ext = new \ReflectionExtension($name);
48
-			try {
49
-				$prettyVersion = $ext->getVersion();
50
-				$prettyVersion = $this->normalizeVersion($prettyVersion);
51
-			} catch (\UnexpectedValueException $e) {
52
-				$prettyVersion = '0';
53
-				$prettyVersion = $this->normalizeVersion($prettyVersion);
54
-			}
55
-
56
-			$packages[$this->buildPackageName($name)] = $prettyVersion;
57
-		}
58
-
59
-		foreach ($loadedExtensions as $name) {
60
-			$prettyVersion = null;
61
-			switch ($name) {
62
-				case 'curl':
63
-					$curlVersion = curl_version();
64
-					$prettyVersion = $curlVersion['version'];
65
-					break;
66
-
67
-				case 'iconv':
68
-					$prettyVersion = ICONV_VERSION;
69
-					break;
70
-
71
-				case 'intl':
72
-					$name = 'ICU';
73
-					if (defined('INTL_ICU_VERSION')) {
74
-						$prettyVersion = INTL_ICU_VERSION;
75
-					} else {
76
-						$reflector = new \ReflectionExtension('intl');
77
-
78
-						ob_start();
79
-						$reflector->info();
80
-						$output = ob_get_clean();
81
-
82
-						preg_match('/^ICU version => (.*)$/m', $output, $matches);
83
-						$prettyVersion = $matches[1];
84
-					}
85
-
86
-					break;
87
-
88
-				case 'libxml':
89
-					$prettyVersion = LIBXML_DOTTED_VERSION;
90
-					break;
91
-
92
-				case 'openssl':
93
-					$prettyVersion = preg_replace_callback('{^(?:OpenSSL\s*)?([0-9.]+)([a-z]?).*}', function ($match) {
94
-						return $match[1] . (empty($match[2]) ? '' : '.' . (ord($match[2]) - 96));
95
-					}, OPENSSL_VERSION_TEXT);
96
-					break;
97
-
98
-				case 'pcre':
99
-					$prettyVersion = preg_replace('{^(\S+).*}', '$1', PCRE_VERSION);
100
-					break;
101
-
102
-				case 'uuid':
103
-					$prettyVersion = phpversion('uuid');
104
-					break;
105
-
106
-				case 'xsl':
107
-					$prettyVersion = LIBXSLT_DOTTED_VERSION;
108
-					break;
109
-
110
-				default:
111
-					// None handled extensions have no special cases, skip
112
-					continue 2;
113
-			}
114
-
115
-			try {
116
-				$prettyVersion = $this->normalizeVersion($prettyVersion);
117
-			} catch (\UnexpectedValueException $e) {
118
-				continue;
119
-			}
120
-
121
-			$packages[$this->buildPackageName($name)] = $prettyVersion;
122
-		}
123
-
124
-		return $packages;
125
-	}
126
-
127
-	private function buildPackageName($name) {
128
-		return str_replace(' ', '-', $name);
129
-	}
130
-
131
-	/**
132
-	 * @param $name
133
-	 * @return string
134
-	 */
135
-	public function findLibrary($name) {
136
-		$extName = $this->buildPackageName($name);
137
-		if (isset($this->packages[$extName])) {
138
-			return $this->packages[$extName];
139
-		}
140
-		return null;
141
-	}
142
-
143
-	private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)(?:[.-]?(\d+))?)?([.-]?dev)?';
144
-
145
-	/**
146
-	 * Normalizes a version string to be able to perform comparisons on it
147
-	 *
148
-	 * https://github.com/composer/composer/blob/master/src/Composer/Package/Version/VersionParser.php#L94
149
-	 *
150
-	 * @param string $version
151
-	 * @param string $fullVersion optional complete version string to give more context
152
-	 * @throws \UnexpectedValueException
153
-	 * @return string
154
-	 */
155
-	public function normalizeVersion($version, $fullVersion = null) {
156
-		$version = trim($version);
157
-		if (null === $fullVersion) {
158
-			$fullVersion = $version;
159
-		}
160
-		// ignore aliases and just assume the alias is required instead of the source
161
-		if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $version, $match)) {
162
-			$version = $match[1];
163
-		}
164
-		// match master-like branches
165
-		if (preg_match('{^(?:dev-)?(?:master|trunk|default)$}i', $version)) {
166
-			return '9999999-dev';
167
-		}
168
-		if ('dev-' === strtolower(substr($version, 0, 4))) {
169
-			return 'dev-' . substr($version, 4);
170
-		}
171
-		// match classical versioning
172
-		if (preg_match('{^v?(\d{1,3})(\.\d+)?(\.\d+)?(\.\d+)?' . self::$modifierRegex . '$}i', $version, $matches)) {
173
-			$version = $matches[1]
174
-				. (!empty($matches[2]) ? $matches[2] : '.0')
175
-				. (!empty($matches[3]) ? $matches[3] : '.0')
176
-				. (!empty($matches[4]) ? $matches[4] : '.0');
177
-			$index = 5;
178
-		} elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) { // match date-based versioning
179
-			$version = preg_replace('{\D}', '-', $matches[1]);
180
-			$index = 2;
181
-		} elseif (preg_match('{^v?(\d{4,})(\.\d+)?(\.\d+)?(\.\d+)?' . self::$modifierRegex . '$}i', $version, $matches)) {
182
-			$version = $matches[1]
183
-				. (!empty($matches[2]) ? $matches[2] : '.0')
184
-				. (!empty($matches[3]) ? $matches[3] : '.0')
185
-				. (!empty($matches[4]) ? $matches[4] : '.0');
186
-			$index = 5;
187
-		}
188
-		// add version modifiers if a version was matched
189
-		if (isset($index)) {
190
-			if (!empty($matches[$index])) {
191
-				if ('stable' === $matches[$index]) {
192
-					return $version;
193
-				}
194
-				$version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? $matches[$index + 1] : '');
195
-			}
196
-			if (!empty($matches[$index + 2])) {
197
-				$version .= '-dev';
198
-			}
199
-			return $version;
200
-		}
201
-		$extraMessage = '';
202
-		if (preg_match('{ +as +' . preg_quote($version) . '$}', $fullVersion)) {
203
-			$extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version';
204
-		} elseif (preg_match('{^' . preg_quote($version) . ' +as +}', $fullVersion)) {
205
-			$extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-';
206
-		}
207
-		throw new \UnexpectedValueException('Invalid version string "' . $version . '"' . $extraMessage);
208
-	}
209
-
210
-	/**
211
-	 * @param string $stability
212
-	 */
213
-	private function expandStability($stability) {
214
-		$stability = strtolower($stability);
215
-		switch ($stability) {
216
-			case 'a':
217
-				return 'alpha';
218
-			case 'b':
219
-				return 'beta';
220
-			case 'p':
221
-			case 'pl':
222
-				return 'patch';
223
-			case 'rc':
224
-				return 'RC';
225
-			default:
226
-				return $stability;
227
-		}
228
-	}
33
+    public function __construct() {
34
+        $this->packages = $this->initialize();
35
+    }
36
+
37
+    protected function initialize() {
38
+        $loadedExtensions = get_loaded_extensions();
39
+        $packages = [];
40
+
41
+        // Extensions scanning
42
+        foreach ($loadedExtensions as $name) {
43
+            if (in_array($name, ['standard', 'Core'])) {
44
+                continue;
45
+            }
46
+
47
+            $ext = new \ReflectionExtension($name);
48
+            try {
49
+                $prettyVersion = $ext->getVersion();
50
+                $prettyVersion = $this->normalizeVersion($prettyVersion);
51
+            } catch (\UnexpectedValueException $e) {
52
+                $prettyVersion = '0';
53
+                $prettyVersion = $this->normalizeVersion($prettyVersion);
54
+            }
55
+
56
+            $packages[$this->buildPackageName($name)] = $prettyVersion;
57
+        }
58
+
59
+        foreach ($loadedExtensions as $name) {
60
+            $prettyVersion = null;
61
+            switch ($name) {
62
+                case 'curl':
63
+                    $curlVersion = curl_version();
64
+                    $prettyVersion = $curlVersion['version'];
65
+                    break;
66
+
67
+                case 'iconv':
68
+                    $prettyVersion = ICONV_VERSION;
69
+                    break;
70
+
71
+                case 'intl':
72
+                    $name = 'ICU';
73
+                    if (defined('INTL_ICU_VERSION')) {
74
+                        $prettyVersion = INTL_ICU_VERSION;
75
+                    } else {
76
+                        $reflector = new \ReflectionExtension('intl');
77
+
78
+                        ob_start();
79
+                        $reflector->info();
80
+                        $output = ob_get_clean();
81
+
82
+                        preg_match('/^ICU version => (.*)$/m', $output, $matches);
83
+                        $prettyVersion = $matches[1];
84
+                    }
85
+
86
+                    break;
87
+
88
+                case 'libxml':
89
+                    $prettyVersion = LIBXML_DOTTED_VERSION;
90
+                    break;
91
+
92
+                case 'openssl':
93
+                    $prettyVersion = preg_replace_callback('{^(?:OpenSSL\s*)?([0-9.]+)([a-z]?).*}', function ($match) {
94
+                        return $match[1] . (empty($match[2]) ? '' : '.' . (ord($match[2]) - 96));
95
+                    }, OPENSSL_VERSION_TEXT);
96
+                    break;
97
+
98
+                case 'pcre':
99
+                    $prettyVersion = preg_replace('{^(\S+).*}', '$1', PCRE_VERSION);
100
+                    break;
101
+
102
+                case 'uuid':
103
+                    $prettyVersion = phpversion('uuid');
104
+                    break;
105
+
106
+                case 'xsl':
107
+                    $prettyVersion = LIBXSLT_DOTTED_VERSION;
108
+                    break;
109
+
110
+                default:
111
+                    // None handled extensions have no special cases, skip
112
+                    continue 2;
113
+            }
114
+
115
+            try {
116
+                $prettyVersion = $this->normalizeVersion($prettyVersion);
117
+            } catch (\UnexpectedValueException $e) {
118
+                continue;
119
+            }
120
+
121
+            $packages[$this->buildPackageName($name)] = $prettyVersion;
122
+        }
123
+
124
+        return $packages;
125
+    }
126
+
127
+    private function buildPackageName($name) {
128
+        return str_replace(' ', '-', $name);
129
+    }
130
+
131
+    /**
132
+     * @param $name
133
+     * @return string
134
+     */
135
+    public function findLibrary($name) {
136
+        $extName = $this->buildPackageName($name);
137
+        if (isset($this->packages[$extName])) {
138
+            return $this->packages[$extName];
139
+        }
140
+        return null;
141
+    }
142
+
143
+    private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)(?:[.-]?(\d+))?)?([.-]?dev)?';
144
+
145
+    /**
146
+     * Normalizes a version string to be able to perform comparisons on it
147
+     *
148
+     * https://github.com/composer/composer/blob/master/src/Composer/Package/Version/VersionParser.php#L94
149
+     *
150
+     * @param string $version
151
+     * @param string $fullVersion optional complete version string to give more context
152
+     * @throws \UnexpectedValueException
153
+     * @return string
154
+     */
155
+    public function normalizeVersion($version, $fullVersion = null) {
156
+        $version = trim($version);
157
+        if (null === $fullVersion) {
158
+            $fullVersion = $version;
159
+        }
160
+        // ignore aliases and just assume the alias is required instead of the source
161
+        if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $version, $match)) {
162
+            $version = $match[1];
163
+        }
164
+        // match master-like branches
165
+        if (preg_match('{^(?:dev-)?(?:master|trunk|default)$}i', $version)) {
166
+            return '9999999-dev';
167
+        }
168
+        if ('dev-' === strtolower(substr($version, 0, 4))) {
169
+            return 'dev-' . substr($version, 4);
170
+        }
171
+        // match classical versioning
172
+        if (preg_match('{^v?(\d{1,3})(\.\d+)?(\.\d+)?(\.\d+)?' . self::$modifierRegex . '$}i', $version, $matches)) {
173
+            $version = $matches[1]
174
+                . (!empty($matches[2]) ? $matches[2] : '.0')
175
+                . (!empty($matches[3]) ? $matches[3] : '.0')
176
+                . (!empty($matches[4]) ? $matches[4] : '.0');
177
+            $index = 5;
178
+        } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) { // match date-based versioning
179
+            $version = preg_replace('{\D}', '-', $matches[1]);
180
+            $index = 2;
181
+        } elseif (preg_match('{^v?(\d{4,})(\.\d+)?(\.\d+)?(\.\d+)?' . self::$modifierRegex . '$}i', $version, $matches)) {
182
+            $version = $matches[1]
183
+                . (!empty($matches[2]) ? $matches[2] : '.0')
184
+                . (!empty($matches[3]) ? $matches[3] : '.0')
185
+                . (!empty($matches[4]) ? $matches[4] : '.0');
186
+            $index = 5;
187
+        }
188
+        // add version modifiers if a version was matched
189
+        if (isset($index)) {
190
+            if (!empty($matches[$index])) {
191
+                if ('stable' === $matches[$index]) {
192
+                    return $version;
193
+                }
194
+                $version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? $matches[$index + 1] : '');
195
+            }
196
+            if (!empty($matches[$index + 2])) {
197
+                $version .= '-dev';
198
+            }
199
+            return $version;
200
+        }
201
+        $extraMessage = '';
202
+        if (preg_match('{ +as +' . preg_quote($version) . '$}', $fullVersion)) {
203
+            $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version';
204
+        } elseif (preg_match('{^' . preg_quote($version) . ' +as +}', $fullVersion)) {
205
+            $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-';
206
+        }
207
+        throw new \UnexpectedValueException('Invalid version string "' . $version . '"' . $extraMessage);
208
+    }
209
+
210
+    /**
211
+     * @param string $stability
212
+     */
213
+    private function expandStability($stability) {
214
+        $stability = strtolower($stability);
215
+        switch ($stability) {
216
+            case 'a':
217
+                return 'alpha';
218
+            case 'b':
219
+                return 'beta';
220
+            case 'p':
221
+            case 'pl':
222
+                return 'patch';
223
+            case 'rc':
224
+                return 'RC';
225
+            default:
226
+                return $stability;
227
+        }
228
+    }
229 229
 }
Please login to merge, or discard this patch.