Skip to content
Snippets Groups Projects
Commit 45b639a3 authored by vasili.guruli's avatar vasili.guruli
Browse files

Unit test fix, plus some code correction

parent aa142ffb
No related branches found
No related tags found
1 merge request!19Feature/minimum plugin version check demo1
Pipeline #9910 passed with warnings
...@@ -17,10 +17,9 @@ ...@@ -17,10 +17,9 @@
const PLUGIN_INFO_KEY_NAME = 'name'; const PLUGIN_INFO_KEY_NAME = 'name';
const PLUGIN_INFO_VERSION = 'version'; const PLUGIN_INFO_VERSION = 'version';
const PLUGIN_INFO_FAKE_REQUIRED_MINIMUM_VERSION = '0.0'; const PLUGIN_INFO_FAKE_REQUIRED_MINIMUM_VERSION = '0.0';
const PLUGIN_INFO_TRANSIENT_EXPIRATION_TIME = 0;
const PLUGIN_INFO_APPEND_PLUGIN_DATA = 'required_version'; const PLUGIN_INFO_APPEND_PLUGIN_DATA = 'required_version';
const PLUGIN_INFO_REQUIRED_PLUGINS_TRANSIENT_NAME = 'require_plugins_data'; const PLUGIN_INFO_TRANSIENT_NAME = 'require_plugins_data';
const PLUGIN_INFO_IS_WP_PLUGIN_INSTALLED_TRANSIENT_NAME = 'is_wp_plugin_installed'; const PLUGIN_INFO_TRANSIENT_EXPIRATION_TIME = 0;
/** @var string */ /** @var string */
protected $plugin_name; protected $plugin_name;
...@@ -285,16 +284,6 @@ ...@@ -285,16 +284,6 @@
return defined( 'OPENSSL_VERSION_NUMBER' ) && OPENSSL_VERSION_NUMBER > (int) $required_version; return defined( 'OPENSSL_VERSION_NUMBER' ) && OPENSSL_VERSION_NUMBER > (int) $required_version;
} }
/**
* @return array Transient Names
*/
private function transient_names() {
return array(
self::PLUGIN_INFO_REQUIRED_PLUGINS_TRANSIENT_NAME,
self::PLUGIN_INFO_IS_WP_PLUGIN_INSTALLED_TRANSIENT_NAME,
);
}
/** /**
* @param $notices array * @param $notices array
* *
...@@ -315,24 +304,21 @@ ...@@ -315,24 +304,21 @@
} }
/** /**
* Check the plugins directory and retrieve installed plugin file or plugin data. * Check the plugins directory and retrieve all plugin files with plugin data.
*
* @param $transient_name
* @param $plugin_file
* *
* @return array|bool * @return array
*/ */
private static function retrieve_plugins_data_in_transient( $transient_name, $plugin_file = '' ) { private static function retrieve_plugins_data_in_transient() {
$plugins = get_transient( self::PLUGIN_INFO_TRANSIENT_NAME );
if ( $plugins === false ) {
if ( ! function_exists( 'get_plugins' ) ) { if ( ! function_exists( 'get_plugins' ) ) {
require_once ABSPATH . '/wp-admin/includes/plugin.php'; require_once ABSPATH . '/wp-admin/includes/plugin.php';
} }
$plugins = function_exists( 'get_plugins' ) ? get_plugins() : array();
$plugins = get_transient( $transient_name ); set_transient( self::PLUGIN_INFO_TRANSIENT_NAME, $plugins, self::PLUGIN_INFO_TRANSIENT_EXPIRATION_TIME );
if ( $plugins === false ) {
$plugins = ! empty( $plugin_file ) ? array_key_exists( $plugin_file, get_plugins() ) : get_plugins();
set_transient( $transient_name, $plugins, self::PLUGIN_INFO_TRANSIENT_EXPIRATION_TIME );
} }
return $plugins; return $plugins;
...@@ -346,7 +332,8 @@ ...@@ -346,7 +332,8 @@
private function retrieve_required_plugins_data() { private function retrieve_required_plugins_data() {
$require_plugins = array(); $require_plugins = array();
$plugins = self::retrieve_plugins_data_in_transient( self::PLUGIN_INFO_REQUIRED_PLUGINS_TRANSIENT_NAME ); $plugins = self::retrieve_plugins_data_in_transient();
if ( is_array( $plugins ) ) {
if ( count( $plugins ) > 0 ) { if ( count( $plugins ) > 0 ) {
if ( ! empty( $this->plugin_require ) ) { if ( ! empty( $this->plugin_require ) ) {
foreach ( $this->plugin_require as $plugin ) { foreach ( $this->plugin_require as $plugin ) {
...@@ -354,8 +341,9 @@ ...@@ -354,8 +341,9 @@
$plugin_version = $plugin[ self::PLUGIN_INFO_VERSION ]; $plugin_version = $plugin[ self::PLUGIN_INFO_VERSION ];
if ( self::is_wp_plugin_active( $plugin_file_name ) ) { if ( self::is_wp_plugin_active( $plugin_file_name ) ) {
$require_plugins[ $plugin[ $plugin_file_name ] ] = $plugins[ $plugin_file_name ]; $require_plugins[ $plugin_file_name ] = $plugins[ $plugin_file_name ];
$require_plugins[ $plugin[ $plugin_file_name ] ][ self::PLUGIN_INFO_APPEND_PLUGIN_DATA ] = $plugin_version; $require_plugins[ $plugin_file_name ][ self::PLUGIN_INFO_APPEND_PLUGIN_DATA ] = $plugin_version;
}
} }
} }
} }
...@@ -434,7 +422,7 @@ ...@@ -434,7 +422,7 @@
$nice_name = $plugin_info[ self::PLUGIN_INFO_KEY_NICE_NAME ]; $nice_name = $plugin_info[ self::PLUGIN_INFO_KEY_NICE_NAME ];
if ( ! self::is_wp_plugin_active( $name ) ) { if ( ! self::is_wp_plugin_active( $name ) ) {
if ( ! self::is_wp_plugin_installed( self::PLUGIN_INFO_IS_WP_PLUGIN_INSTALLED_TRANSIENT_NAME, $name ) ) { if ( ! self::is_wp_plugin_installed( $name ) ) {
$install_url = $this->prepare_plugin_repository_install_url( $plugin_info ); $install_url = $this->prepare_plugin_repository_install_url( $plugin_info );
return $this->prepare_notice_message( sprintf( wp_kses( __( 'The &#8220;%s&#8221; plugin requires free %s plugin. <a href="%s">Install %s →</a>', return $this->prepare_notice_message( sprintf( wp_kses( __( 'The &#8220;%s&#8221; plugin requires free %s plugin. <a href="%s">Install %s →</a>',
...@@ -475,17 +463,13 @@ ...@@ -475,17 +463,13 @@
* Checks if plugin is installed. Needs to be enabled in deferred way. * Checks if plugin is installed. Needs to be enabled in deferred way.
* *
* @param string $plugin_file * @param string $plugin_file
* @param string $transient_name
* *
* @return bool * @return bool
*/ */
public static function is_wp_plugin_installed( $transient_name, $plugin_file ) { public static function is_wp_plugin_installed( $plugin_file ) {
if ( isset( $plugin_file ) ) { $plugins_data = self::retrieve_plugins_data_in_transient();
return self::retrieve_plugins_data_in_transient( $transient_name, $plugin_file );
}
return false; return array_key_exists( $plugin_file, (array)$plugins_data );
} }
/** /**
...@@ -582,9 +566,7 @@ ...@@ -582,9 +566,7 @@
if ( isset( $this->plugin_file ) ) { if ( isset( $this->plugin_file ) ) {
deactivate_plugins( plugin_basename( $this->plugin_file ) ); deactivate_plugins( plugin_basename( $this->plugin_file ) );
foreach ($this->transient_names() as $transient_name) { delete_transient( self::PLUGIN_INFO_TRANSIENT_NAME );
delete_transient( $transient_name );
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment