הוספת התאמת תוספים לגרסת WP
Tue May 18 2021 20:37:34 GMT+0000 (UTC)
Saved by @Shesek
/** * The BetterPluginCompatibilityControl class * * @package WordPress_Plugins * @subpackage BetterPluginCompatibilityControl * @since 1.0 * @author scripts@schloebe.de */ class BetterPluginCompatibilityControl { private static $instance = null; /** * Creates or returns an instance of this class. */ public static function get_instance() { if( null == self::$instance ) { self::$instance = new self; } return self::$instance; } /** * The BetterPluginCompatibilityControl class constructor * initializing required stuff for the plugin * * @since 1.0 * @author scripts@schloebe.de */ function __construct() { if ( !BPCCISWP29 ) { add_action('admin_notices', array(&$this, 'wpVersionFailed')); return; } $this->localeInfo = localeconv(); add_action('plugins_loaded', array(&$this, 'bpcc_load_textdomain')); add_action('admin_init', array(&$this, 'bpcc_init')); } /** * Initialize and load the plugin stuff * * @since 1.0 * @uses $pagenow * @author scripts@schloebe.de */ function bpcc_init() { global $pagenow; if ( !function_exists("add_action") ) return; if((defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE || defined('MULTISITE') && MULTISITE) && function_exists('is_network_admin') && is_network_admin()) { add_filter('network_admin_plugin_action_links', array(&$this, 'bpcc_pluginversioninfo'), 10, 2); if( current_user_can( 'manage_network_plugins' ) ) { add_filter('plugin_action_links', array(&$this, 'bpcc_pluginversioninfo'), 10, 2); } } else { if( current_user_can( 'install_plugins' ) ) { add_filter('plugin_action_links', array(&$this, 'bpcc_pluginversioninfo'), 10, 2); } } if( $pagenow == 'plugins.php' ) { add_action('admin_head', array(&$this, 'bpcc_css_admin_header')); } } /** * Writes the css stuff into page header needed for the plugin to look good * * @since 1.0 * @author scripts@schloebe.de */ function bpcc_css_admin_header() { echo ' <style type="text/css"> .bpcc_minversion { color: #aaa; text-shadow: 0 1px 0 #FFFFFF; cursor: help; padding: 0px; text-decoration: none; font-weight: 200; } .bpcc_maxversion { border-left-width: 0; color: #aaa; text-shadow: 0 1px 0 #FFFFFF; cursor: help; padding: 0px; text-decoration: none; font-weight: 200; } .bpcc_red { color: #a00; padding: 1px 2px; font-weight: bold; } .bpcc_green { color: #0a0; padding: 1px 2px; } </style>' . "\n"; } /** * Add plugin version dependency info * * @since 1.0 * @author scripts@schloebe.de */ function bpcc_pluginversioninfo( $links, $file ) { $_wpversion = str_replace($this->localeInfo["decimal_point"], ".", floatval($GLOBALS['wp_version'])) . ''; // Only get x.y.0 from WP version string $minpluginver = $maxpluginver = $minpluginvermajor = ''; $bpcc_readme = WP_PLUGIN_DIR . '/' . dirname( $file ) . '/' . 'readme.txt'; if( file_exists( $bpcc_readme ) ) { $pluginver_data = get_file_data( $bpcc_readme, array('requires' => 'Requires at least', 'tested' => 'Tested up to') ); $minpluginver = $pluginver_data['requires']; $minpluginvermajor = str_replace($this->localeInfo["decimal_point"], ".", floatval($minpluginver)) . ''; $maxpluginver = $pluginver_data['tested']; if( !empty($pluginver_data['tested']) ) $maxpluginver = $pluginver_data['tested']; } else { require_once(ABSPATH . 'wp-admin/includes/plugin-install.php'); $info = plugins_api('plugin_information', array('fields' => array('tested' => true, 'requires' => true, 'rating' => false, 'downloaded' => false, 'downloadlink' => false, 'last_updated' => false, 'homepage' => false, 'tags' => false, 'sections' => false, 'compatibility' => false, 'author' => false, 'author_profile' => false, 'contributors' => false, 'added' => false), 'slug' => dirname( $file ) )); if (!is_wp_error($info)) { if( !empty($info->requires) ) { $minpluginver = $info->requires; $minpluginvermajor = str_replace($this->localeInfo["decimal_point"], ".", floatval($minpluginver)) . ''; } if( !empty($info->tested) ) $maxpluginver = $info->tested; } } if( $minpluginver != '' || $maxpluginver != '' ) { $addminverclass = ( version_compare(trim( $minpluginvermajor ), $_wpversion, '>') ) ? ' bpcc_red' : ' bpcc_green'; $addminvertitle = ( version_compare(trim( $minpluginvermajor ), $_wpversion, '>') ) ? __('Warning: This plugin has not been tested with your current version of WordPress.', 'better-plugin-compatibility-control') : __('This plugin has been tested successfully with your current version of WordPress.', 'better-plugin-compatibility-control'); $addminverinfo = ( $minpluginver ) ? '<span class="bpcc_minversion' . $addminverclass . '" title="' . $addminvertitle . '">' . trim( $minpluginver ) . '</span>' : '<span class="bpcc_minversion" title="' . __('No compatibility info for this plugin available.', 'better-plugin-compatibility-control') . '">' . __('N/A', 'better-plugin-compatibility-control') . '</span>'; $addmaxverclass = ( version_compare(trim( $maxpluginver ), $_wpversion, '<') ) ? ' bpcc_red' : ' bpcc_green'; $addminvertitle = ( version_compare(trim( $maxpluginver ), $_wpversion, '<') ) ? __('Warning: This plugin has not been tested with your current version of WordPress.', 'better-plugin-compatibility-control') : __('This plugin has been tested successfully with your current version of WordPress.', 'better-plugin-compatibility-control'); $addmaxverinfo = ( $maxpluginver ) ? '<span class="bpcc_maxversion' . $addmaxverclass . '" title="' . $addminvertitle . '">' . trim( $maxpluginver ) . '</span>' : '<span class="bpcc_maxversion" title="' . __('No compatibility info for this plugin available.', 'better-plugin-compatibility-control') . '">' . __('N/A', 'better-plugin-compatibility-control') . '</span>'; $addverinfo = '<span class="bpcc_wrapper" style="white-space: normal;">' . $addminverinfo . '–' . $addmaxverinfo . ''; } else { $addverinfo = '<span class="bpcc_wrapper" style="white-space: normal;"><span class="bpcc_maxversion" title="' . __('No readme.txt file for this plugin found. Contact the plugin author!', 'better-plugin-compatibility-control') . '">' . __('No compatibility data found', 'better-plugin-compatibility-control') . '</span></span>'; } $links = array_merge( $links, array( $addverinfo ) ); return $links; } /** * Initialize and load the plugin textdomain * * @since 1.0 * @author scripts@schloebe.de */ function bpcc_load_textdomain() { load_plugin_textdomain('better-plugin-compatibility-control', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/'); } /** * Checks for the version of WordPress, * and adds a message to inform the user * if required WP version is less than 2.9 * * @since 3.8.1.15 * @author scripts@schloebe.de */ function wpVersionFailed() { echo "<div id='wpversionfailedmessage' class='error fade'><p>" . __('Better Plugin Compatibility Control requires at least WordPress 2.9!', 'better-plugin-compatibility-control') . "</p></div>"; } } if( is_admin() && class_exists('BetterPluginCompatibilityControl') && ( !defined( 'DOING_AJAX' ) || !DOING_AJAX ) ) { add_action( 'plugins_loaded', array( 'BetterPluginCompatibilityControl', 'get_instance' ) ); }
Comments