‪TYPO3CMS  ‪main
Dependency.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 
28 {
29  protected string ‪$identifier = '';
30  protected string ‪$lowestVersion = '';
31  protected string ‪$highestVersion = '';
32  protected string ‪$type = '';
33  protected static array ‪$dependencyTypes = [
34  'depends',
35  'conflicts',
36  'suggests',
37  ];
38  public static array ‪$specialDependencies = [
39  'typo3',
40  'php',
41  ];
42 
43  private function ‪__construct(string ‪$identifier, string ‪$type, string ‪$lowestVersion, string ‪$highestVersion)
44  {
45  $this->identifier = ‪$identifier;
46  $this->type = ‪$type;
47  $this->lowestVersion = ‪$lowestVersion;
48  $this->highestVersion = ‪$highestVersion;
49  }
50 
58  public static function ‪createFromEmConf(
59  string ‪$identifier,
60  string $versionConstraint = '',
61  string $dependencyType = 'depends'
62  ): self {
63  $versionNumbers = ‪VersionNumberUtility::convertVersionsStringToVersionNumbers($versionConstraint);
64  $lowest = $versionNumbers[0];
65  if (count($versionNumbers) === 2) {
66  $highest = $versionNumbers[1];
67  } else {
68  $highest = '';
69  }
70  if (!in_array($dependencyType, self::$dependencyTypes, true)) {
71  throw new ‪ExtensionManagerException($dependencyType . ' was not a valid dependency type.', 1476122402);
72  }
73  // dynamically migrate 'cms' dependency to 'core' dependency
74  // see also \TYPO3\CMS\Core\Package\Package::getPackageMetaData
75  ‪$identifier = strtolower(‪$identifier);
76  ‪$identifier = ‪$identifier === 'cms' ? 'core' : ‪$identifier;
77  return new self(‪$identifier, $dependencyType, (string)$lowest, (string)$highest);
78  }
79 
80  public function ‪getHighestVersion(): string
81  {
83  }
84 
85  public function ‪getIdentifier(): string
86  {
87  return ‪$this->identifier;
88  }
89 
90  public function ‪getLowestVersion(): string
91  {
93  }
94 
95  public function ‪getType(): string
96  {
97  return ‪$this->type;
98  }
99 
107  public function ‪isVersionCompatible(string $version): bool
108  {
109  if ($this->lowestVersion !== '' && version_compare($version, $this->lowestVersion) === -1) {
110  return false;
111  }
112  if ($this->highestVersion !== '' && version_compare($this->highestVersion, $version) === -1) {
113  return false;
114  }
115  return true;
116  }
117 
118  public function ‪getLowestVersionAsInteger(): int
119  {
120  if ($this->lowestVersion) {
121  return ‪VersionNumberUtility::convertVersionNumberToInteger($this->lowestVersion);
122  }
123  return 0;
124  }
125 
126  public function ‪getHighestVersionAsInteger(): int
127  {
128  if ($this->highestVersion) {
129  return ‪VersionNumberUtility::convertVersionNumberToInteger($this->highestVersion);
130  }
131  return 0;
132  }
133 }
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\getHighestVersion
‪getHighestVersion()
Definition: Dependency.php:80
‪TYPO3\CMS\Core\Utility\VersionNumberUtility
Definition: VersionNumberUtility.php:26
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency
Definition: Dependency.php:28
‪TYPO3\CMS\Core\Utility\VersionNumberUtility\convertVersionNumberToInteger
‪static int convertVersionNumberToInteger(string $versionNumber)
Definition: VersionNumberUtility.php:33
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\getType
‪getType()
Definition: Dependency.php:95
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\getLowestVersion
‪getLowestVersion()
Definition: Dependency.php:90
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\$dependencyTypes
‪static array $dependencyTypes
Definition: Dependency.php:33
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\getHighestVersionAsInteger
‪getHighestVersionAsInteger()
Definition: Dependency.php:126
‪TYPO3\CMS\Core\Utility\VersionNumberUtility\convertVersionsStringToVersionNumbers
‪static string[] convertVersionsStringToVersionNumbers(string $versionsString)
Definition: VersionNumberUtility.php:79
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\getIdentifier
‪getIdentifier()
Definition: Dependency.php:85
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\createFromEmConf
‪static createFromEmConf(string $identifier, string $versionConstraint='', string $dependencyType='depends')
Definition: Dependency.php:58
‪TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException
Definition: ExtensionManagerException.php:25
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\$highestVersion
‪string $highestVersion
Definition: Dependency.php:31
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\__construct
‪__construct(string $identifier, string $type, string $lowestVersion, string $highestVersion)
Definition: Dependency.php:43
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\$type
‪string $type
Definition: Dependency.php:32
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\$specialDependencies
‪static array $specialDependencies
Definition: Dependency.php:38
‪TYPO3\CMS\Extensionmanager\Domain\Model
Definition: Dependency.php:18
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\isVersionCompatible
‪bool isVersionCompatible(string $version)
Definition: Dependency.php:107
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\getLowestVersionAsInteger
‪getLowestVersionAsInteger()
Definition: Dependency.php:118
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\$identifier
‪string $identifier
Definition: Dependency.php:29
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\$lowestVersion
‪string $lowestVersion
Definition: Dependency.php:30