Exemplo n.º 1
0
 /**
  * Check package dependencies.
  *
  * @param Config $manifest Package manifest.
  *
  * @throws PackageException
  * @return void
  */
 private function _checkDependencies($manifest)
 {
     // Check dependencies.
     if (!$manifest->get('dependencies')) {
         return;
     }
     $filter = new PhalconFilter();
     $missingDependencies = [];
     $wrongVersionDependencies = [];
     $dependencies = $manifest->get('dependencies');
     foreach ($dependencies as $dependency) {
         if (!isset($this->_packagesVersions[$dependency['type']][$dependency['name']])) {
             $missingDependencies[] = $dependency;
             continue;
         }
         $installedVersion = $filter->sanitize($this->_packagesVersions[$dependency['type']][$dependency['name']], 'int');
         $packageDependecyVersion = $filter->sanitize($dependency['version'], 'int');
         if ($installedVersion < $packageDependecyVersion) {
             $wrongVersionDependencies[] = $dependency;
         }
     }
     if (!empty($missingDependencies)) {
         $msg = 'This package requires the presence of the following modules:<br/>';
         foreach ($missingDependencies as $dependency) {
             $msg .= sprintf('- %s "%s" (v.%s)<br/>', $dependency['type'], $dependency['name'], $dependency['version']);
         }
         throw new PackageException($msg);
     }
     if (!empty($wrongVersionDependencies)) {
         $msg = 'To install this package you need update:<br/>';
         foreach ($wrongVersionDependencies as $dependency) {
             $msg .= sprintf('- %s "%s" up to: v.%s. Current version: v.%s <br/>', $dependency['type'], $dependency['name'], $dependency['version'], $this->_packagesVersions[$dependency['type']][$dependency['name']]);
         }
         throw new PackageException($msg);
     }
 }