From 6528aa5f7f11856940f8fd131d3dbb877a14d594 Mon Sep 17 00:00:00 2001 From: "vasili.guruli" <vasili.guruli@inspirelabs.pl> Date: Tue, 29 Oct 2019 15:54:58 +0100 Subject: [PATCH] Bug fixes --- src/Basic_Requirement_Checker.php | 60 +++++++++-------------- src/Basic_Requirement_Checker_Factory.php | 4 +- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/Basic_Requirement_Checker.php b/src/Basic_Requirement_Checker.php index c6a5d6e..d1208b2 100644 --- a/src/Basic_Requirement_Checker.php +++ b/src/Basic_Requirement_Checker.php @@ -44,6 +44,10 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) { private $is_required_minimum_version; /** @var string */ private $slug; + /** @var string */ + private $require_plugin_version; + /** @var string */ + private $require_plugin_name; /** * @param string $plugin_file @@ -218,8 +222,9 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) { '0x' . dechex( $this->min_openssl_version ) ) ); } - if ( true == $this->is_required_minimum_version && false !== $this->check_minimum_required_plugin_version( $this->slug ) ) { - $notices[] = $this->prepare_notice_message( sprintf( __( 'The “%s” plugin requires at least %s version to work correctly with WooCommerce. Please update it', $this->get_text_domain() ), esc_html( $this->plugin_name ), $this->get_plugin_version( $this->slug ) ) ); + if ( true == $this->is_required_minimum_version && false !== $this->check_minimum_required_plugin_version() ) { + $notices[] = $this->prepare_notice_message( sprintf( __( 'The “%s” plugin requires at least %s version of %s to work correctly. Please update it', + $this->get_text_domain() ), esc_html( $this->plugin_name ), $this->require_plugin_version, $this->require_plugin_name ) ); } $notices = $this->append_plugin_require_notices( $notices ); @@ -297,16 +302,14 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) { } /** - * @param string $slug - * * @return bool */ - public function check_minimum_required_plugin_version( $slug ) { - if ( null === $this->get_current_plugin_version() ) { + public function check_minimum_required_plugin_version() { + if (null === $this->get_existing_require_plugin_version()) { return false; } - return $this->get_current_plugin_version() <> $this->get_plugin_version( $slug ); + return $this->get_existing_require_plugin_version() <> $this->require_plugin_version; } /** @@ -323,12 +326,11 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) { /** * @return mixed|null */ - public function get_current_plugin_version() - { + public function get_existing_require_plugin_version() { $version = null; - if (! empty( $this->get_existing_plugins() ) ) { + if ( ! empty($this->get_existing_plugins() ) ) { foreach ( $this->get_existing_plugins() as $plugin ) { - if ( $plugin['Name'] === $this->plugin_name ) { + if ( $plugin['TextDomain'] === $this->slug ) { $version = $plugin['Version']; } } @@ -338,39 +340,25 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) { } /** - * Plugin slug - * - * @param string $slug . + * @param string $plugin_name * - * @return mixed + * @return $this */ - public function get_plugin_info_from_plugins_api( $slug ) { + public function add_require_plugin_name( $plugin_name ) { + $this->require_plugin_name = $plugin_name; - $transient_version = get_transient( $slug ); - $plugin_info = null; - if (false === $transient_version) { - require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; - $plugin_info = plugins_api( 'plugin_information', array( 'slug' => $slug ) ); - - set_transient( $slug, $plugin_info, WEEK_IN_SECONDS ); - } - - return $transient_version; + return $this; } /** - * @param $slug + * @param string $version * - * @return bool + * @return $this */ - public function get_plugin_version( $slug ) { - - $plugin_info = $this->get_plugin_info_from_plugins_api( $slug ); - if ( ! empty( $plugin_info ) ) { - return $plugin_info->version; - } + public function add_require_plugin_version( $version ) { + $this->require_plugin_version = $version; - return false; + return $this; } /** @@ -378,7 +366,7 @@ if ( ! class_exists( 'WPDesk_Basic_Requirement_Checker' ) ) { * * @return $this */ - public function add_plugin_slug( $slug ) { + public function add_require_plugin_slug( $slug ) { $this->slug = $slug; return $this; diff --git a/src/Basic_Requirement_Checker_Factory.php b/src/Basic_Requirement_Checker_Factory.php index 25986dd..8dc844f 100644 --- a/src/Basic_Requirement_Checker_Factory.php +++ b/src/Basic_Requirement_Checker_Factory.php @@ -57,6 +57,7 @@ class WPDesk_Basic_Requirement_Checker_Factory { foreach ( $requirements['repo_plugins'] as $requirement ) { $requirements_checker->add_plugin_repository_require( $requirement['name'], $requirement['version'], $requirement['nice_name'] ); + $requirements_checker->add_require_plugin_name( $requirement['nice_name'] ); } } @@ -69,7 +70,8 @@ class WPDesk_Basic_Requirement_Checker_Factory { if ( isset( $requirements['require_minimum_version'] ) ) { foreach ( $requirements['require_minimum_version'] as $version ) { $requirements_checker->is_required_minimum_version( $version['is_required'] ); - $requirements_checker->add_plugin_slug( $version['slug'] ); + $requirements_checker->add_require_plugin_slug( $version['slug'] ); + $requirements_checker->add_require_plugin_version( $version['minimum_version'] ); } } -- GitLab