/var/www/html/wp-content/plugins/woocommerce/vendor/jetpack-autoloader/class-autoloader-locator.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
/**
 * This file was automatically generated by automattic/jetpack-autoloader.
 *
 * @package automattic/jetpack-autoloader
 */

namespace Automattic\Jetpack\Autoloader\jp67abb2f5c15b32a13611c55273717232\al5_0_0;

 
// phpcs:ignore

use Automattic\Jetpack\Autoloader\AutoloadGenerator;

/**
 * This class locates autoloaders.
 */
class Autoloader_Locator {

    
/**
     * The object for comparing autoloader versions.
     *
     * @var Version_Selector
     */
    
private $version_selector;

    
/**
     * The constructor.
     *
     * @param Version_Selector $version_selector The version selector object.
     */
    
public function __construct$version_selector ) {
        
$this->version_selector $version_selector;
    }

    
/**
     * Finds the path to the plugin with the latest autoloader.
     *
     * @param array  $plugin_paths An array of plugin paths.
     * @param string $latest_version The latest version reference. @phan-output-reference.
     *
     * @return string|null
     */
    
public function find_latest_autoloader$plugin_paths, &$latest_version ) {
        
$latest_plugin null;

        foreach ( 
$plugin_paths as $plugin_path ) {
            
$version $this->get_autoloader_version$plugin_path );
            if ( ! 
$version || ! $this->version_selector->is_version_update_required$latest_version$version ) ) {
                continue;
            }

            
$latest_version $version;
            
$latest_plugin  $plugin_path;
        }

        return 
$latest_plugin;
    }

    
/**
     * Gets the path to the autoloader.
     *
     * @param string $plugin_path The path to the plugin.
     *
     * @return string
     */
    
public function get_autoloader_path$plugin_path ) {
        return 
trailingslashit$plugin_path ) . 'vendor/autoload_packages.php';
    }

    
/**
     * Gets the version for the autoloader.
     *
     * @param string $plugin_path The path to the plugin.
     *
     * @return string|null
     */
    
public function get_autoloader_version$plugin_path ) {
        
$classmap trailingslashit$plugin_path ) . 'vendor/composer/jetpack_autoload_classmap.php';
        if ( ! 
file_exists$classmap ) ) {
            return 
null;
        }

        
$classmap = require $classmap;
        if ( isset( 
$classmapAutoloadGenerator::class ] ) ) {
            return 
$classmapAutoloadGenerator::class ]['version'];
        }

        return 
null;
    }
}