DefaultPolicy.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /*
  3. * This file is part of Composer.
  4. *
  5. * (c) Nils Adermann <naderman@naderman.de>
  6. * Jordi Boggiano <j.boggiano@seld.be>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Composer\DependencyResolver;
  12. /**
  13. * @author Nils Adermann <naderman@naderman.de>
  14. */
  15. class DefaultPolicy implements PolicyInterface
  16. {
  17. public function allowUninstall()
  18. {
  19. return false;
  20. }
  21. public function allowDowngrade()
  22. {
  23. return false;
  24. }
  25. public function versionCompare(Package $a, Package $b, $operator)
  26. {
  27. return version_compare($a->getVersion(), $b->getVersion(), $operator);
  28. }
  29. public function findUpdatePackages(Solver $solver, Pool $pool, RepositoryInterface $repo, Package $package, $allowAll = false)
  30. {
  31. $packages = array();
  32. foreach ($pool->whatProvides($package->getName()) as $candidate) {
  33. // skip old packages unless downgrades are an option
  34. if (!$allowAll && !$this->allowDowngrade() && $this->versionCompare($package, $candidate, '>')) {
  35. continue;
  36. }
  37. if ($candidate != $package) {
  38. $packages[] = $candidate;
  39. }
  40. }
  41. return $packages;
  42. }
  43. public function installable(Solver $solver, Pool $pool, RepositoryInterface $repo, Package $package)
  44. {
  45. // todo: package blacklist?
  46. return true;
  47. }
  48. public function selectPreferedPackages(array $literals)
  49. {
  50. // todo: prefer installed, recommended, highest priority repository, ...
  51. return array($literals[0]);
  52. }
  53. }