Aucune description

class-autoloader-locator.php 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * This file was automatically generated by automattic/jetpack-autoloader.
  4. *
  5. * @package automattic/jetpack-autoloader
  6. */
  7. namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ10_2;
  8. // phpcs:ignore
  9. use Automattic\Jetpack\Autoloader\AutoloadGenerator;
  10. /**
  11. * This class locates autoloaders.
  12. */
  13. class Autoloader_Locator {
  14. /**
  15. * The object for comparing autoloader versions.
  16. *
  17. * @var Version_Selector
  18. */
  19. private $version_selector;
  20. /**
  21. * The constructor.
  22. *
  23. * @param Version_Selector $version_selector The version selector object.
  24. */
  25. public function __construct( $version_selector ) {
  26. $this->version_selector = $version_selector;
  27. }
  28. /**
  29. * Finds the path to the plugin with the latest autoloader.
  30. *
  31. * @param array $plugin_paths An array of plugin paths.
  32. * @param string $latest_version The latest version reference.
  33. *
  34. * @return string|null
  35. */
  36. public function find_latest_autoloader( $plugin_paths, &$latest_version ) {
  37. $latest_plugin = null;
  38. foreach ( $plugin_paths as $plugin_path ) {
  39. $version = $this->get_autoloader_version( $plugin_path );
  40. if ( ! $this->version_selector->is_version_update_required( $latest_version, $version ) ) {
  41. continue;
  42. }
  43. $latest_version = $version;
  44. $latest_plugin = $plugin_path;
  45. }
  46. return $latest_plugin;
  47. }
  48. /**
  49. * Gets the path to the autoloader.
  50. *
  51. * @param string $plugin_path The path to the plugin.
  52. *
  53. * @return string
  54. */
  55. public function get_autoloader_path( $plugin_path ) {
  56. return trailingslashit( $plugin_path ) . 'vendor/autoload_packages.php';
  57. }
  58. /**
  59. * Gets the version for the autoloader.
  60. *
  61. * @param string $plugin_path The path to the plugin.
  62. *
  63. * @return string|null
  64. */
  65. public function get_autoloader_version( $plugin_path ) {
  66. $classmap = trailingslashit( $plugin_path ) . 'vendor/composer/jetpack_autoload_classmap.php';
  67. if ( ! file_exists( $classmap ) ) {
  68. return null;
  69. }
  70. $classmap = require $classmap;
  71. if ( isset( $classmap[ AutoloadGenerator::class ] ) ) {
  72. return $classmap[ AutoloadGenerator::class ]['version'];
  73. }
  74. return null;
  75. }
  76. }