Chris@14
|
1 <?php
|
Chris@14
|
2 /*
|
Chris@14
|
3 * This file is part of PharIo\Manifest.
|
Chris@14
|
4 *
|
Chris@14
|
5 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@14
|
6 *
|
Chris@14
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@14
|
8 * file that was distributed with this source code.
|
Chris@14
|
9 */
|
Chris@14
|
10
|
Chris@14
|
11 namespace PharIo\Manifest;
|
Chris@14
|
12
|
Chris@14
|
13 use PharIo\Version\Version;
|
Chris@14
|
14
|
Chris@14
|
15 class Manifest {
|
Chris@14
|
16 /**
|
Chris@14
|
17 * @var ApplicationName
|
Chris@14
|
18 */
|
Chris@14
|
19 private $name;
|
Chris@14
|
20
|
Chris@14
|
21 /**
|
Chris@14
|
22 * @var Version
|
Chris@14
|
23 */
|
Chris@14
|
24 private $version;
|
Chris@14
|
25
|
Chris@14
|
26 /**
|
Chris@14
|
27 * @var Type
|
Chris@14
|
28 */
|
Chris@14
|
29 private $type;
|
Chris@14
|
30
|
Chris@14
|
31 /**
|
Chris@14
|
32 * @var CopyrightInformation
|
Chris@14
|
33 */
|
Chris@14
|
34 private $copyrightInformation;
|
Chris@14
|
35
|
Chris@14
|
36 /**
|
Chris@14
|
37 * @var RequirementCollection
|
Chris@14
|
38 */
|
Chris@14
|
39 private $requirements;
|
Chris@14
|
40
|
Chris@14
|
41 /**
|
Chris@14
|
42 * @var BundledComponentCollection
|
Chris@14
|
43 */
|
Chris@14
|
44 private $bundledComponents;
|
Chris@14
|
45
|
Chris@14
|
46 public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) {
|
Chris@14
|
47 $this->name = $name;
|
Chris@14
|
48 $this->version = $version;
|
Chris@14
|
49 $this->type = $type;
|
Chris@14
|
50 $this->copyrightInformation = $copyrightInformation;
|
Chris@14
|
51 $this->requirements = $requirements;
|
Chris@14
|
52 $this->bundledComponents = $bundledComponents;
|
Chris@14
|
53 }
|
Chris@14
|
54
|
Chris@14
|
55 /**
|
Chris@14
|
56 * @return ApplicationName
|
Chris@14
|
57 */
|
Chris@14
|
58 public function getName() {
|
Chris@14
|
59 return $this->name;
|
Chris@14
|
60 }
|
Chris@14
|
61
|
Chris@14
|
62 /**
|
Chris@14
|
63 * @return Version
|
Chris@14
|
64 */
|
Chris@14
|
65 public function getVersion() {
|
Chris@14
|
66 return $this->version;
|
Chris@14
|
67 }
|
Chris@14
|
68
|
Chris@14
|
69 /**
|
Chris@14
|
70 * @return Type
|
Chris@14
|
71 */
|
Chris@14
|
72 public function getType() {
|
Chris@14
|
73 return $this->type;
|
Chris@14
|
74 }
|
Chris@14
|
75
|
Chris@14
|
76 /**
|
Chris@14
|
77 * @return CopyrightInformation
|
Chris@14
|
78 */
|
Chris@14
|
79 public function getCopyrightInformation() {
|
Chris@14
|
80 return $this->copyrightInformation;
|
Chris@14
|
81 }
|
Chris@14
|
82
|
Chris@14
|
83 /**
|
Chris@14
|
84 * @return RequirementCollection
|
Chris@14
|
85 */
|
Chris@14
|
86 public function getRequirements() {
|
Chris@14
|
87 return $this->requirements;
|
Chris@14
|
88 }
|
Chris@14
|
89
|
Chris@14
|
90 /**
|
Chris@14
|
91 * @return BundledComponentCollection
|
Chris@14
|
92 */
|
Chris@14
|
93 public function getBundledComponents() {
|
Chris@14
|
94 return $this->bundledComponents;
|
Chris@14
|
95 }
|
Chris@14
|
96
|
Chris@14
|
97 /**
|
Chris@14
|
98 * @return bool
|
Chris@14
|
99 */
|
Chris@14
|
100 public function isApplication() {
|
Chris@14
|
101 return $this->type->isApplication();
|
Chris@14
|
102 }
|
Chris@14
|
103
|
Chris@14
|
104 /**
|
Chris@14
|
105 * @return bool
|
Chris@14
|
106 */
|
Chris@14
|
107 public function isLibrary() {
|
Chris@14
|
108 return $this->type->isLibrary();
|
Chris@14
|
109 }
|
Chris@14
|
110
|
Chris@14
|
111 /**
|
Chris@14
|
112 * @return bool
|
Chris@14
|
113 */
|
Chris@14
|
114 public function isExtension() {
|
Chris@14
|
115 return $this->type->isExtension();
|
Chris@14
|
116 }
|
Chris@14
|
117
|
Chris@14
|
118 /**
|
Chris@14
|
119 * @param ApplicationName $application
|
Chris@14
|
120 * @param Version|null $version
|
Chris@14
|
121 *
|
Chris@14
|
122 * @return bool
|
Chris@14
|
123 */
|
Chris@14
|
124 public function isExtensionFor(ApplicationName $application, Version $version = null) {
|
Chris@14
|
125 if (!$this->isExtension()) {
|
Chris@14
|
126 return false;
|
Chris@14
|
127 }
|
Chris@14
|
128
|
Chris@14
|
129 /** @var Extension $type */
|
Chris@14
|
130 $type = $this->type;
|
Chris@14
|
131
|
Chris@14
|
132 if ($version !== null) {
|
Chris@14
|
133 return $type->isCompatibleWith($application, $version);
|
Chris@14
|
134 }
|
Chris@14
|
135
|
Chris@14
|
136 return $type->isExtensionFor($application);
|
Chris@14
|
137 }
|
Chris@14
|
138 }
|