VPN licensing server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
3.4KB

  1. <?php
  2. namespace Composer;
  3. use Composer\Semver\VersionParser;
  4. class InstalledVersions
  5. {
  6. private static $installed = array (
  7. 'root' =>
  8. array (
  9. 'pretty_version' => '1.0.0+no-version-set',
  10. 'version' => '1.0.0.0',
  11. 'aliases' =>
  12. array (
  13. ),
  14. 'reference' => NULL,
  15. 'name' => '__root__',
  16. ),
  17. 'versions' =>
  18. array (
  19. '__root__' =>
  20. array (
  21. 'pretty_version' => '1.0.0+no-version-set',
  22. 'version' => '1.0.0.0',
  23. 'aliases' =>
  24. array (
  25. ),
  26. 'reference' => NULL,
  27. ),
  28. 'sergeytsalkov/meekrodb' =>
  29. array (
  30. 'pretty_version' => 'v2.3.1',
  31. 'version' => '2.3.1.0',
  32. 'aliases' =>
  33. array (
  34. ),
  35. 'reference' => 'e8c19ca2f8ed6a0fd0012c6c97e78aac80fded30',
  36. ),
  37. ),
  38. );
  39. public static function getInstalledPackages()
  40. {
  41. return array_keys(self::$installed['versions']);
  42. }
  43. public static function isInstalled($packageName)
  44. {
  45. return isset(self::$installed['versions'][$packageName]);
  46. }
  47. public static function satisfies(VersionParser $parser, $packageName, $constraint)
  48. {
  49. $constraint = $parser->parseConstraints($constraint);
  50. $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
  51. return $provided->matches($constraint);
  52. }
  53. public static function getVersionRanges($packageName)
  54. {
  55. if (!isset(self::$installed['versions'][$packageName])) {
  56. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  57. }
  58. $ranges = array();
  59. if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
  60. $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
  61. }
  62. if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
  63. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
  64. }
  65. if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
  66. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
  67. }
  68. if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
  69. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
  70. }
  71. return implode(' || ', $ranges);
  72. }
  73. public static function getVersion($packageName)
  74. {
  75. if (!isset(self::$installed['versions'][$packageName])) {
  76. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  77. }
  78. if (!isset(self::$installed['versions'][$packageName]['version'])) {
  79. return null;
  80. }
  81. return self::$installed['versions'][$packageName]['version'];
  82. }
  83. public static function getPrettyVersion($packageName)
  84. {
  85. if (!isset(self::$installed['versions'][$packageName])) {
  86. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  87. }
  88. if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
  89. return null;
  90. }
  91. return self::$installed['versions'][$packageName]['pretty_version'];
  92. }
  93. public static function getReference($packageName)
  94. {
  95. if (!isset(self::$installed['versions'][$packageName])) {
  96. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  97. }
  98. if (!isset(self::$installed['versions'][$packageName]['reference'])) {
  99. return null;
  100. }
  101. return self::$installed['versions'][$packageName]['reference'];
  102. }
  103. public static function getRootPackage()
  104. {
  105. return self::$installed['root'];
  106. }
  107. public static function getRawData()
  108. {
  109. return self::$installed;
  110. }
  111. public static function reload($data)
  112. {
  113. self::$installed = $data;
  114. }
  115. }