| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/wp-content/plugins/wordpress-seo/admin/ |
Upload File : |
<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\Plugin_Compatibility
*/
/**
* Class WPSEO_Plugin_Compatibility.
*/
class WPSEO_Plugin_Compatibility {
/**
* Holds the current WPSEO version.
*
* @var string
*/
protected $current_wpseo_version;
/**
* Holds the availability checker.
*
* @var WPSEO_Plugin_Availability
*/
protected $availability_checker;
/**
* Holds the installed plugins.
*
* @var array
*/
protected $installed_plugins;
/**
* WPSEO_Plugin_Compatibility constructor.
*
* @param string $version The version to check against.
* @param null|class $availability_checker The checker to use.
*/
public function __construct( $version, $availability_checker = null ) {
// We trim off the patch version, as this shouldn't break the comparison.
$this->current_wpseo_version = $this->get_major_minor_version( $version );
$this->availability_checker = $this->retrieve_availability_checker( $availability_checker );
$this->installed_plugins = $this->availability_checker->get_installed_plugins();
}
/**
* Retrieves the availability checker.
*
* @param null|object $checker The checker to set.
*
* @return WPSEO_Plugin_Availability The checker to use.
*/
private function retrieve_availability_checker( $checker ) {
if ( is_null( $checker ) || ! is_object( $checker ) ) {
$checker = new WPSEO_Plugin_Availability();
$checker->register();
}
return $checker;
}
/**
* Wraps the availability checker's get_installed_plugins method.
*
* @return array Array containing all the installed plugins.
*/
public function get_installed_plugins() {
return $this->installed_plugins;
}
/**
* Creates a list of installed plugins and whether or not they are compatible.
*
* @return array Array containing the installed plugins and compatibility.
*/
public function get_installed_plugins_compatibility() {
foreach ( $this->installed_plugins as $key => $plugin ) {
$this->installed_plugins[ $key ]['compatible'] = $this->is_compatible( $key );
}
return $this->installed_plugins;
}
/**
* Checks whether or not a plugin is compatible.
*
* @param string $plugin The plugin to look for and match.
*
* @return bool Whether or not the plugin is compatible.
*/
public function is_compatible( $plugin ) {
$plugin = $this->availability_checker->get_plugin( $plugin );
// If we are not syncing versions, we are always compatible.
if ( ! isset( $plugin['version_sync'] ) || $plugin['version_sync'] !== true ) {
return true;
}
$plugin_version = $this->availability_checker->get_version( $plugin );
return $this->get_major_minor_version( $plugin_version ) === $this->current_wpseo_version;
}
/**
* Gets the major/minor version of the plugin for easier comparing.
*
* @param string $version The version to trim.
*
* @return string The major/minor version of the plugin.
*/
protected function get_major_minor_version( $version ) {
return substr( $version, 0, 3 );
}
}