Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
/
admin
/
plugin-updates
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php use Automattic\Jetpack\Constants; if (!defined('ABSPATH')) { exit; } class WC_Plugin_Updates { const VERSION_REQUIRED_HEADER = 'WC requires at least'; const VERSION_TESTED_HEADER = 'WC tested up to'; protected $new_version = ''; protected $major_untested_plugins = array(); protected function generic_modal_js() { ?> <script> ( function( $ ) { // Initialize thickbox. tb_init( '.wc-thickbox' ); var old_tb_position = false; // Make the WC thickboxes look good when opened. $( '.wc-thickbox' ).on( 'click', function( evt ) { var $overlay = $( '#TB_overlay' ); if ( ! $overlay.length ) { $( 'body' ).append( '<div id="TB_overlay"></div><div id="TB_window" class="wc_untested_extensions_modal_container"></div>' ); } else { $( '#TB_window' ).removeClass( 'thickbox-loading' ).addClass( 'wc_untested_extensions_modal_container' ); } // WP overrides the tb_position function. We need to use a different tb_position function than that one. // This is based on the original tb_position. if ( ! old_tb_position ) { old_tb_position = tb_position; } tb_position = function() { $( '#TB_window' ).css( { marginLeft: '-' + parseInt( ( TB_WIDTH / 2 ), 10 ) + 'px', width: TB_WIDTH + 'px' } ); $( '#TB_window' ).css( { marginTop: '-' + parseInt( ( TB_HEIGHT / 2 ), 10 ) + 'px' } ); }; }); // Reset tb_position to WP default when modal is closed. $( 'body' ).on( 'thickbox:removed', function() { if ( old_tb_position ) { tb_position = old_tb_position; } }); })( jQuery ); </script> <?php } protected function get_extensions_inline_warning_major() { $upgrade_type = 'major'; $plugins = $this->major_untested_plugins; $version_parts = explode('.', $this->new_version); $new_version = $version_parts[0] . '.0'; if (empty($plugins)) { return; } $message = sprintf(__("<strong>Heads up!</strong> The versions of the following plugins you're running haven't been tested with WooCommerce %s. Please update them or confirm compatibility before updating WooCommerce, or you may experience issues:", 'woocommerce'), $new_version); ob_start(); include __DIR__ . '/views/html-notice-untested-extensions-inline.php'; return ob_get_clean(); } protected function get_extensions_modal_warning() { $version_parts = explode('.', $this->new_version); $new_version = $version_parts[0] . '.0'; $plugins = $this->major_untested_plugins; ob_start(); include __DIR__ . '/views/html-notice-untested-extensions-modal.php'; return ob_get_clean(); } public function get_untested_plugins($new_version, $release) { if ('none' === $release) { return array(); } $extensions = array_merge($this->get_plugins_with_header(self::VERSION_TESTED_HEADER), $this->get_plugins_for_woocommerce()); $untested = array(); $new_version_parts = explode('.', $new_version); $version = $new_version_parts[0]; if ('minor' === $release) { $version .= '.' . $new_version_parts[1]; } foreach ($extensions as $file => $plugin) { if (!empty($plugin[self::VERSION_TESTED_HEADER])) { $plugin_version_parts = explode('.', $plugin[self::VERSION_TESTED_HEADER]); if (!is_numeric($plugin_version_parts[0]) || 'minor' === $release && !isset($plugin_version_parts[1]) || 'minor' === $release && !is_numeric($plugin_version_parts[1])) { continue; } $plugin_version = $plugin_version_parts[0]; if ('minor' === $release) { $plugin_version .= '.' . $plugin_version_parts[1]; } if (version_compare($plugin_version, $version, '<')) { $untested[$file] = $plugin; } } else { $plugin[self::VERSION_TESTED_HEADER] = __('unknown', 'woocommerce'); $untested[$file] = $plugin; } } return $untested; } protected function get_plugins_with_header($header) { $plugins = get_plugins(); $matches = array(); foreach ($plugins as $file => $plugin) { if (!empty($plugin[$header])) { $matches[$file] = $plugin; } } return apply_filters('woocommerce_get_plugins_with_header', $matches, $header, $plugins); } protected function get_plugins_for_woocommerce() { $plugins = get_plugins(); $matches = array(); foreach ($plugins as $file => $plugin) { if ('WooCommerce' !== $plugin['Name'] && (stristr($plugin['Name'], 'woocommerce') || stristr($plugin['Description'], 'woocommerce'))) { $matches[$file] = $plugin; } } return apply_filters('woocommerce_get_plugins_for_woocommerce', $matches, $plugins); } }