• File: class-tracking-plugin-data.php
  • Full Path: /home/matthif/www/wp-content/plugins/wordpress-seo/admin/tracking/class-tracking-plugin-data.php
  • Date Modified: 02/24/2024 11:29 PM
  • File size: 2.03 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * WPSEO plugin file.
 *
 * @package WPSEO\Admin\Tracking
 */

/**
 * Represents the plugin data.
 */
class WPSEO_Tracking_Plugin_Data implements WPSEO_Collection {

    
/**
     * Plugins with auto updating enabled.
     *
     * @var array
     */
    
private $auto_update_plugin_list;

    
/**
     * Returns the collection data.
     *
     * @return array The collection data.
     */
    
public function get() {
        return [
            
'plugins' => $this->get_plugin_data(),
        ];
    }

    
/**
     * Returns all plugins.
     *
     * @return array The formatted plugins.
     */
    
protected function get_plugin_data() {

        if ( ! 
function_exists'get_plugin_data' ) ) {
            require_once 
ABSPATH 'wp-admin/includes/plugin.php';
        }
        
$plugins wp_get_active_and_valid_plugins();

        
$plugins array_map'get_plugin_data'$plugins );
        
$this->set_auto_update_plugin_list();
        
$plugins array_map( [ $this'format_plugin' ], $plugins );

        
$plugin_data = [];
        foreach ( 
$plugins as $plugin ) {
            
$plugin_key                 sanitize_title$plugin['name'] );
            
$plugin_data$plugin_key ] = $plugin;
        }

        return 
$plugin_data;
    }

    
/**
     * Sets all auto updating plugin data so it can be used in the tracking list.
     *
     * @return void
     */
    
public function set_auto_update_plugin_list() {

        
$auto_update_plugins      = [];
        
$auto_update_plugin_files get_option'auto_update_plugins' );
        if ( 
$auto_update_plugin_files ) {
            foreach ( 
$auto_update_plugin_files as $auto_update_plugin ) {
                
$data                                 get_plugin_dataWP_PLUGIN_DIR DIRECTORY_SEPARATOR $auto_update_plugin );
                
$auto_update_plugins$data['Name'] ] = $data;
            }
        }

        
$this->auto_update_plugin_list $auto_update_plugins;
    }

    
/**
     * Formats the plugin array.
     *
     * @param array $plugin The plugin details.
     *
     * @return array The formatted array.
     */
    
protected function format_plugin( array $plugin ) {

        return [
            
'name'          => $plugin['Name'],
            
'version'       => $plugin['Version'],
            
'auto_updating' => array_key_exists$plugin['Name'], $this->auto_update_plugin_list ),
        ];
    }
}