File "wordpress-plugin-version.php"
Full Path: /home/apmablcosr/www/wp-content/plugins/yoast-test-helper/src/wordpress-plugin-version.php
File size: 1.83 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Yoast\WP\Test_Helper;
use WPSEO_Options;
use Yoast\WP\Test_Helper\WordPress_Plugins\WordPress_Plugin;
/**
* Class that retrieves and stores a plugin version.
*/
class WordPress_Plugin_Version {
/**
* Retrieves the version of a specific plugin.
*
* @param WordPress_Plugin $plugin Plugin to retrieve the version of.
*
* @return string The version.
*/
public function get_version( WordPress_Plugin $plugin ) {
$data = \get_option( $plugin->get_version_option_name() );
if ( isset( $data[ $plugin->get_version_key() ] ) ) {
return $data[ $plugin->get_version_key() ];
}
return '';
}
/**
* Stores a plugin version.
*
* @param WordPress_Plugin $plugin Plugin to store the version of.
* @param string $version The version to store.
*
* @return bool True on success.
*/
public function update_version( WordPress_Plugin $plugin, $version ) {
$option_name = $plugin->get_version_option_name();
$data = \get_option( $option_name );
if ( empty( $version ) ) {
return false;
}
if ( $plugin->get_version_key() === '' ) {
return \update_option( $plugin->get_version_option_name(), $version );
}
if ( $data[ $plugin->get_version_key() ] === $version ) {
return false;
}
$data[ $plugin->get_version_key() ] = $version;
$option_instance = false;
// Unhook option sanitization, otherwise the version cannot be changed.
if ( \class_exists( WPSEO_Options::class ) ) {
$option_instance = WPSEO_Options::get_option_instance( $option_name );
\remove_filter( 'sanitize_option_' . $option_name, [ $option_instance, 'validate' ] );
}
$success = \update_option( $option_name, $data );
// Restore option sanitization.
if ( $option_instance ) {
\add_filter( 'sanitize_option_' . $option_name, [ $option_instance, 'validate' ] );
}
return $success;
}
}