diff --git a/.gitignore b/.gitignore index 96af5a87..59714a48 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ composer.phar .notes .DS_Store .vscode* +.idea* *.zip # Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control diff --git a/readme.txt b/readme.txt index 171b5bb8..1b712934 100644 --- a/readme.txt +++ b/readme.txt @@ -11,7 +11,7 @@ Tested up to: 6.3 WC requires at least: 3.0.0 WC tested up to: 7.6.0 Requires PHP: 5.6 -Stable Tag: 1.2.4 +Stable Tag: 1.2.5 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.html @@ -38,6 +38,12 @@ Para dúvidas e suporte técnico, entre em contato com a equipe Vindi através d 4. Opção de reembolso automático do pedido 5. Configurações de pagamentos via cartão de crédito +== Changelog == += 1.2.5 - 12/10/2023 = +-Lançamento da versão de patch. +- **Correção:** Validação das depenências do plugin +- **Correção:** Funcionamento da opção de sincronismo de assinaturas + == Changelog == = 1.2.4 - 30/08/2023 = -Lançamento da versão de patch. diff --git a/src/VindiWoocommerce.php b/src/VindiWoocommerce.php index 2792dca2..95c9cc51 100644 --- a/src/VindiWoocommerce.php +++ b/src/VindiWoocommerce.php @@ -73,6 +73,11 @@ class WcVindiPayment extends AbstractInstance */ private $interest_price_handler; + /** + * @var VindiWCSRenewalDisable + */ + private $wcs_renewal_disable; + public function __construct() { @@ -88,8 +93,10 @@ public function __construct() $this->frontend_files_loader = new FrontendFilesLoader(); $this->subscription_status_handler = new VindiSubscriptionStatusHandler($this->settings); $this->vindi_status_notifier = new VindiProductStatus($this->settings); - $this->interest_price_handler = new InterestPriceHandler(); + $this->interest_price_handler = new InterestPriceHandler(); $this->product_metabox = new ProductsMetabox(); + $this->wcs_renewal_disable = new VindiWCSRenewalDisable(); + /** * Add Gateway to Woocommerce @@ -125,6 +132,7 @@ public function init() require_once plugin_dir_path(__FILE__) . '/utils/PaymentGateway.php'; require_once plugin_dir_path(__FILE__) . '/utils/Conversions.php'; require_once plugin_dir_path(__FILE__) . '/utils/RedirectCheckout.php'; + require_once plugin_dir_path(__FILE__) . '/utils/PostMeta.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/CouponsMetaBox.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/ProductsMetabox.php'; @@ -143,7 +151,7 @@ public function init() require_once plugin_dir_path(__FILE__) . '/controllers/index.php'; require_once plugin_dir_path(__FILE__) . '/utils/PaymentProcessor.php'; - require_once plugin_dir_path(__FILE__) . '/utils/PostMeta.php'; + require_once plugin_dir_path(__FILE__) . '/utils/WCSRenewalDisable.php'; } public static function getPath() diff --git a/src/utils/DefinitionVariables.php b/src/utils/DefinitionVariables.php index 8bb01a14..aba7b0cf 100644 --- a/src/utils/DefinitionVariables.php +++ b/src/utils/DefinitionVariables.php @@ -1,6 +1,6 @@ get_meta('vindi_wc_subscription_id')) + && empty($subscription->get_meta('vindi_subscription_id'))) { + return; + } + + // Disable Woocommerce Subscriptions Renewal order and let Vindi handle it via webhooks + remove_action( + 'woocommerce_scheduled_subscription_payment', + 'WC_Subscriptions_Manager::prepare_renewal', + 1 + ); + } +} diff --git a/src/validators/Dependencies.php b/src/validators/Dependencies.php index 4d525d7d..8b9a212b 100644 --- a/src/validators/Dependencies.php +++ b/src/validators/Dependencies.php @@ -136,37 +136,34 @@ public static function check() $required_plugins = [ [ - 'path' => 'woocommerce/woocommerce.php', - 'plugin' => [ - 'name' => 'WooCommerce', - 'url' => $woocommerce_url, - 'version' => [ - 'validation' => '>=', - 'number' => '3.0' - ] + 'path' => 'woocommerce/woocommerce.php', + 'class' => 'WooCommerce', + 'name' => 'WooCommerce', + 'url' => $woocommerce_url, + 'version' => [ + 'validation' => '>=', + 'number' => '3.0' ] ], [ - 'path' => 'woocommerce-extra-checkout-fields-for-brazil/ - woocommerce-extra-checkout-fields-for-brazil.php', - 'plugin' => [ - 'name' => 'Brazilian Market on WooCommerce', - 'url' => $ecfb_url, - 'version' => [ - 'validation' => '>=', - 'number' => '3.5' - ] + 'path' => + 'woocommerce-extra-checkout-fields-for-brazil/woocommerce-extra-checkout-fields-for-brazil.php', + 'class' => 'Extra_Checkout_Fields_For_Brazil', + 'name' => 'Brazilian Market on WooCommerce', + 'url' => $ecfb_url, + 'version' => [ + 'validation' => '>=', + 'number' => '3.5' ] ], [ - 'path' => 'woocommerce-subscriptions/woocommerce-subscriptions.php', - 'plugin' => [ - 'name' => 'WooCommerce Subscriptions', - 'url' => 'http://www.woothemes.com/products/woocommerce-subscriptions/', - 'version' => [ - 'validation' => '>=', - 'number' => '2.6.1' - ] + 'path' => 'woocommerce-subscriptions/woocommerce-subscriptions.php', + 'class' => 'WC_Subscriptions', + 'name' => 'WooCommerce Subscription', + 'url' => 'http://www.woothemes.com/products/woocommerce-subscriptions/', + 'version' => [ + 'validation' => '>=', + 'number' => '2.6.1' ] ] ]; @@ -185,9 +182,14 @@ public static function check() */ public static function missing_notice($name, $version, $link) { + if (!is_admin() || !is_user_logged_in()) { + return; + } + include plugin_dir_path(VINDI_SRC) . 'src/views/missing-dependency.php'; } + /** * Generate critical dependency notice content * @@ -205,9 +207,8 @@ private static function check_plugin_dependencies($required_plugins) { $checked = true; - foreach ($required_plugins as $required_plugin) { - $plugin = $required_plugin['plugin']; - $search = self::search_plugin_name($plugin['name'], self::$active_plugins); + foreach ($required_plugins as $plugin) { + $search = self::search_plugin($plugin, self::$active_plugins); if ($search && version_compare( @@ -218,23 +219,22 @@ private static function check_plugin_dependencies($required_plugins) continue; } - $notice = self::missing_notice( + self::missing_notice( $plugin['name'], $plugin['version']['number'], $plugin['url'] ); - add_action('admin_notices', $notice); $checked = false; } return $checked; } - private static function search_plugin_name($name, $array) + private static function search_plugin($required, $array) { foreach ($array as $val) { - if ($val['name'] === $name) { + if ($val['plugin'] === $required['path'] && class_exists($required['class'])) { return $val; } } diff --git a/src/views/missing-dependency.php b/src/views/missing-dependency.php index 7b3977a0..8dff562a 100644 --- a/src/views/missing-dependency.php +++ b/src/views/missing-dependency.php @@ -1,18 +1,7 @@ - - -
diff --git a/vindi.php b/vindi.php index d90b8b7c..1124831d 100644 --- a/vindi.php +++ b/vindi.php @@ -6,7 +6,7 @@ * Description: Adiciona o gateway de pagamento da Vindi para o WooCommerce. * Author: Vindi * Author URI: https://www.vindi.com.br - * Version: 1.2.4 + * Version: 1.2.5 * Requires at least: 4.4 * Tested up to: 6.3 * WC requires at least: 3.0.0