File "class-wc-plugin-updates.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/admin/plugin-updates/class-wc-plugin-updates.php
File size: 5 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?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);
    }
}