/** * Converts string dependencies to an object storage of dependencies * * @param string $dependencies * @return \SplObjectStorage */ public function convertDependenciesToObjects($dependencies) { $dependenciesObject = new \SplObjectStorage(); $unserializedDependencies = unserialize($dependencies); if (!is_array($unserializedDependencies)) { return $dependenciesObject; } foreach ($unserializedDependencies as $dependencyType => $dependencyValues) { // Dependencies might be given as empty string, e.g. conflicts => '' if (!is_array($dependencyValues)) { continue; } foreach ($dependencyValues as $dependency => $versions) { if ($dependencyType && $dependency) { $versionNumbers = \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionsStringToVersionNumbers($versions); $lowest = $versionNumbers[0]; if (count($versionNumbers) === 2) { $highest = $versionNumbers[1]; } else { $highest = ''; } /** @var $dependencyObject \TYPO3\CMS\Extensionmanager\Domain\Model\Dependency */ $dependencyObject = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class); $dependencyObject->setType($dependencyType); $dependencyObject->setIdentifier($dependency); $dependencyObject->setLowestVersion($lowest); $dependencyObject->setHighestVersion($highest); $dependenciesObject->attach($dependencyObject); unset($dependencyObject); } } } return $dependenciesObject; }
/** * @test * @dataProvider convertVersionsStringToVersionNumbersForcesVersionNumberInRangeDataProvider */ public function convertVersionsStringToVersionNumbersForcesVersionNumberInRange($versionString, $expectedResult) { $versions = \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionsStringToVersionNumbers($versionString); $this->assertEquals($expectedResult, $versions); }
/** * @param string $dependencies * @return \SplObjectStorage */ public function convertDependenciesToObjects($dependencies) { $unserializedDependencies = unserialize($dependencies); $dependenciesObject = new \SplObjectStorage(); foreach ($unserializedDependencies as $dependencyType => $dependencyValues) { foreach ($dependencyValues as $dependency => $versions) { if ($dependencyType && $dependency) { $versionNumbers = \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionsStringToVersionNumbers($versions); $lowest = $versionNumbers[0]; if (count($versionNumbers) === 2) { $highest = $versionNumbers[1]; } else { $highest = ''; } /** @var $dependencyObject \TYPO3\CMS\Extensionmanager\Domain\Model\Dependency */ $dependencyObject = $this->objectManager->create('TYPO3\\CMS\\Extensionmanager\\Domain\\Model\\Dependency'); $dependencyObject->setType($dependencyType); $dependencyObject->setIdentifier($dependency); $dependencyObject->setLowestVersion($lowest); $dependencyObject->setHighestVersion($highest); $dependenciesObject->attach($dependencyObject); unset($dependencyObject); } } } return $dependenciesObject; }