Example #1
0
 public function validateUninstallDependencies(array $uninstallPackages, \PEAR2\MultiErrors $errs)
 {
     $ret = true;
     foreach ($uninstallPackages as $package) {
         foreach ($this->reg->getDependentPackages($package) as $deppackage) {
             $dep = new \Pyrus\Dependency\Validator(array('channel' => $deppackage->channel, 'package' => $deppackage->name), \Pyrus\Validate::UNINSTALLING, $errs);
             foreach ($uninstallPackages as $test) {
                 if ($deppackage->isEqual($test)) {
                     // we are uninstalling both the package that is depended upon
                     // and the parent package, so all dependencies are nulled
                     continue 2;
                 }
             }
             foreach (array('package', 'subpackage') as $packaged) {
                 $deps = $deppackage->dependencies['required']->{$packaged};
                 if (isset($deps[$package->channel . '/' . $package->name])) {
                     $ret = $ret && $dep->validatePackageUninstall($deps[$package->channel . '/' . $package->name], $package);
                 }
                 $deps = $deppackage->dependencies['optional']->{$packaged};
                 if (isset($deps[$package->channel . '/' . $package->name])) {
                     $ret = $ret && $dep->validatePackageUninstall($deps[$package->channel . '/' . $package->name], $package);
                 }
             }
         }
     }
     return $ret;
 }