File "class-wc-plugins-screen-updates.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/admin/plugin-updates/class-wc-plugins-screen-updates.php
File
size: 4.87 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
use Automattic\Jetpack\Constants;
if (!defined('ABSPATH')) {
exit;
}
if (!class_exists('WC_Plugin_Updates')) {
include_once dirname(__FILE__) . '/class-wc-plugin-updates.php';
}
class WC_Plugins_Screen_Updates extends WC_Plugin_Updates
{
protected $upgrade_notice = '';
public function __construct()
{
add_action('in_plugin_update_message-woocommerce/woocommerce.php', array($this, 'in_plugin_update_message'), 10, 2);
}
public function in_plugin_update_message($args, $response)
{
$version_type = Constants::get_constant('WC_SSR_PLUGIN_UPDATE_RELEASE_VERSION_TYPE');
if (!is_string($version_type)) {
$version_type = 'none';
}
$this->new_version = $response->new_version;
$this->upgrade_notice = $this->get_upgrade_notice($response->new_version);
$this->major_untested_plugins = $this->get_untested_plugins($response->new_version, $version_type);
$current_version_parts = explode('.', Constants::get_constant('WC_VERSION'));
$new_version_parts = explode('.', $this->new_version);
if (version_compare($current_version_parts[0] . '.' . $current_version_parts[1], $new_version_parts[0] . '.' . $new_version_parts[1], '=')) {
return;
}
if (!empty($this->major_untested_plugins)) {
$this->upgrade_notice .= $this->get_extensions_inline_warning_major();
}
if (!empty($this->major_untested_plugins)) {
$this->upgrade_notice .= $this->get_extensions_modal_warning();
add_action('admin_print_footer_scripts', array($this, 'plugin_screen_modal_js'));
}
echo apply_filters('woocommerce_in_plugin_update_message', $this->upgrade_notice ? '</p>' . wp_kses_post($this->upgrade_notice) . '<p class="dummy">' : '');
}
protected function get_upgrade_notice($version)
{
$transient_name = 'wc_upgrade_notice_' . $version;
$upgrade_notice = get_transient($transient_name);
if (false === $upgrade_notice) {
$response = wp_safe_remote_get('https://plugins.svn.wordpress.org/woocommerce/trunk/readme.txt');
if (!is_wp_error($response) && !empty($response['body'])) {
$upgrade_notice = $this->parse_update_notice($response['body'], $version);
set_transient($transient_name, $upgrade_notice, DAY_IN_SECONDS);
}
}
return $upgrade_notice;
}
private function parse_update_notice($content, $new_version)
{
$version_parts = explode('.', $new_version);
$check_for_notices = array($version_parts[0] . '.0', $version_parts[0] . '.0.0', $version_parts[0] . '.' . $version_parts[1], $version_parts[0] . '.' . $version_parts[1] . '.' . $version_parts[2]);
$notice_regexp = '~==\\s*Upgrade Notice\\s*==\\s*=\\s*(.*)\\s*=(.*)(=\\s*' . preg_quote($new_version) . '\\s*=|$)~Uis';
$upgrade_notice = '';
foreach ($check_for_notices as $check_version) {
if (version_compare(Constants::get_constant('WC_VERSION'), $check_version, '>')) {
continue;
}
$matches = null;
if (preg_match($notice_regexp, $content, $matches)) {
$notices = (array) preg_split('~[\\r\\n]+~', trim($matches[2]));
if (version_compare(trim($matches[1]), $check_version, '=')) {
$upgrade_notice .= '<p class="wc_plugin_upgrade_notice">';
foreach ($notices as $index => $line) {
$upgrade_notice .= preg_replace('~\\[([^\\]]*)\\]\\(([^\\)]*)\\)~', '<a href="${2}">${1}</a>', $line);
}
$upgrade_notice .= '</p>';
}
break;
}
}
return wp_kses_post($upgrade_notice);
}
public function plugin_screen_modal_js()
{
?>
<script>
( function( $ ) {
var $update_box = $( '#woocommerce-update' );
var $update_link = $update_box.find('a.update-link').first();
var update_url = $update_link.attr( 'href' );
// Set up thickbox.
$update_link.removeClass( 'update-link' );
$update_link.addClass( 'wc-thickbox' );
$update_link.attr( 'href', '#TB_inline?height=600&width=550&inlineId=wc_untested_extensions_modal' );
// Trigger the update if the user accepts the modal's warning.
$( '#wc_untested_extensions_modal .accept' ).on( 'click', function( evt ) {
evt.preventDefault();
tb_remove();
$update_link.removeClass( 'wc-thickbox open-plugin-details-modal' );
$update_link.addClass( 'update-link' );
$update_link.attr( 'href', update_url );
$update_link.trigger( 'click' );
});
$( '#wc_untested_extensions_modal .cancel' ).on( 'click', function( evt ) {
evt.preventDefault();
tb_remove();
});
})( jQuery );
</script>
<?php
$this->generic_modal_js();
}
}
new WC_Plugins_Screen_Updates();