Server IP : 192.64.118.117 / Your IP : 18.188.48.106 Web Server : LiteSpeed System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : thecgapy ( 1160) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/thecgapy/www/wp-content/plugins/wp-smushit/extras/dash-notice/ |
Upload File : |
<?php ///////////////////////////////////////////////////////////////////////// /* -------- WPMU DEV Dashboard Notice - Aaron Edwards (Incsub) ------- */ /* This provides notices of available updates for our premium products */ if ( ! class_exists( 'WPMUDEV_Dashboard_Notice4' ) ) { class WPMUDEV_Dashboard_Notice4 { var $version = '4.2'; var $screen_id = false; var $product_name = false; var $product_update = false; var $theme_pack = 128; var $server_url = 'https://premium.wpmudev.org/api/dashboard/v1/'; var $update_count = 0; function __construct() { add_action( 'init', array( &$this, 'init' ) ); add_action( 'plugins_loaded', array( &$this, 'remove_older' ), 5 ); } function remove_older() { global $WPMUDEV_Dashboard_Notice3; //remove 3.0 notices if ( is_object( $WPMUDEV_Dashboard_Notice3 ) ) { remove_action( 'init', array( $WPMUDEV_Dashboard_Notice3, 'init' ) ); remove_action( 'plugins_loaded', array( $WPMUDEV_Dashboard_Notice3, 'init' ) ); } else if ( method_exists( 'WPMUDEV_Dashboard_Notice3', 'init' ) ) { //if class is not in global (some projects included inside a method), we have to use a hacky way to remove the filter $this->deregister_hook( 'init', 'WPMUDEV_Dashboard_Notice3', 'init', 10 ); $this->deregister_hook( 'plugins_loaded', 'WPMUDEV_Dashboard_Notice3', 'init', 10 ); } //remove version 2.0 if ( method_exists( 'WPMUDEV_Dashboard_Notice', 'init' ) ) { $this->deregister_hook( 'init', 'WPMUDEV_Dashboard_Notice', 'init', 10 ); $this->deregister_hook( 'plugins_loaded', 'WPMUDEV_Dashboard_Notice', 'init', 10 ); } //remove version 1.0 remove_action( 'admin_notices', 'wdp_un_check', 5 ); remove_action( 'network_admin_notices', 'wdp_un_check', 5 ); } /* Adapted from: https://github.com/herewithme/wp-filters-extras/ - Copyright 2012 Amaury Balmer - amaury@beapi.fr */ function deregister_hook( $hook_name, $class_name, $method_name, $priority ) { global $wp_filter; // Take only filters on right hook name and priority if ( ! isset( $wp_filter[ $hook_name ][ $priority ] ) || ! is_array( $wp_filter[ $hook_name ][ $priority ] ) ) { return false; } // Loop on filters registered foreach ( (array) $wp_filter[ $hook_name ][ $priority ] as $unique_id => $filter_array ) { // Test if filter is an array ! (always for class/method) if ( isset( $filter_array['function'] ) && is_array( $filter_array['function'] ) ) { // Test if object is a class, class and method is equal to param ! if ( is_object( $filter_array['function'][0] ) && get_class( $filter_array['function'][0] ) && get_class( $filter_array['function'][0] ) == $class_name && $filter_array['function'][1] == $method_name ) { if ( class_exists( 'WP_Hook' ) ) { //introduced in WP 4.7 https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/ unset( $wp_filter[ $hook_name ]->callbacks[ $priority ][ $unique_id ] ); } else { unset( $wp_filter[ $hook_name ][ $priority ][ $unique_id ] ); } return true; } } } return false; } function init() { global $wpmudev_un; if ( class_exists( 'WPMUDEV_Dashboard' ) || ( isset( $wpmudev_un->version ) && version_compare( $wpmudev_un->version, '3.4', '<' ) ) ) { return; } // Schedule update cron on main site only if ( is_main_site() ) { if ( ! wp_next_scheduled( 'wpmudev_scheduled_jobs' ) ) { wp_schedule_event( time(), 'twicedaily', 'wpmudev_scheduled_jobs' ); } add_action( 'wpmudev_scheduled_jobs', array( $this, 'updates_check' ) ); } add_action( 'delete_site_transient_update_plugins', array( &$this, 'updates_check' ) ); //refresh after upgrade/install add_action( 'delete_site_transient_update_themes', array( &$this, 'updates_check' ) ); //refresh after upgrade/install if ( is_admin() && current_user_can( 'install_plugins' ) ) { add_action( 'site_transient_update_plugins', array( &$this, 'filter_plugin_count' ) ); add_action( 'site_transient_update_themes', array( &$this, 'filter_theme_count' ) ); add_filter( 'plugins_api', array( &$this, 'filter_plugin_info' ), 101, 3 ); //run later to work with bad autoupdate plugins add_filter( 'themes_api', array( &$this, 'filter_plugin_info' ), 101, 3 ); //run later to work with bad autoupdate plugins add_action( 'load-plugins.php', array( &$this, 'filter_plugin_rows' ), 21 ); //make sure it runs after WP's add_action( 'load-themes.php', array( &$this, 'filter_plugin_rows' ), 21 ); //make sure it runs after WP's add_action( 'core_upgrade_preamble', array( &$this, 'disable_checkboxes' ) ); add_action( 'activated_plugin', array( &$this, 'set_activate_flag' ) ); add_action( 'wp_ajax_wdpun-changelog', array( &$this, 'popup_changelog_ajax' ) ); add_action( 'wp_ajax_wdpun-dismiss', array( &$this, 'dismiss_ajax' ) ); //if dashboard is installed but not activated if ( file_exists( WP_PLUGIN_DIR . '/wpmudev-updates/update-notifications.php' ) ) { if ( ! get_site_option( 'wdp_un_autoactivated' ) ) { //include plugin API if necessary if ( ! function_exists( 'activate_plugin' ) ) { require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); } $result = activate_plugin( '/wpmudev-updates/update-notifications.php', network_admin_url( 'admin.php?page=wpmudev' ), is_multisite() ); if ( ! is_wp_error( $result ) ) { //if autoactivate successful don't show notices update_site_option( 'wdp_un_autoactivated', 1 ); return; } } add_action( 'admin_print_styles', array( &$this, 'notice_styles' ) ); add_action( 'admin_print_footer_scripts', array( &$this, 'notice_scripts' ) ); add_action( 'all_admin_notices', array( &$this, 'activate_notice' ), 5 ); } else { //dashboard not installed at all if ( get_site_option( 'wdp_un_autoactivated' ) ) { update_site_option( 'wdp_un_autoactivated', 0 );//reset flag when dashboard is deleted } add_action( 'admin_print_styles', array( &$this, 'notice_styles' ) ); add_action( 'admin_print_footer_scripts', array( &$this, 'notice_scripts' ) ); add_action( 'all_admin_notices', array( &$this, 'install_notice' ), 5 ); } } } function is_allowed_screen() { global $wpmudev_notices; $screen = get_current_screen(); if ($screen && is_object($screen)) $this->screen_id = $screen->id; //Show special message right after plugin activation if ( in_array( $this->screen_id, array( 'plugins', 'plugins-network' ) ) && ( isset( $_GET['activate'] ) || isset( $_GET['activate-multi'] ) ) ) { $activated = get_site_option( 'wdp_un_activated_flag' ); if ( $activated === false ) { $activated = 1; } //on first encounter of new installed notice show if ( $activated ) { if ( $activated >= 2 ) { update_site_option( 'wdp_un_activated_flag', 0 ); } else { update_site_option( 'wdp_un_activated_flag', 2 ); } return true; } } //check dismiss flag $dismissed = get_site_option( 'wdp_un_dismissed' ); if ( $dismissed && $dismissed > strtotime( '-1 week' ) ) { return false; } //always show on certain core pages if updates are available $updates = get_site_option( 'wdp_un_updates_available' ); if ( is_array( $updates ) && count( $updates ) ) { $this->update_count = count( $updates ); if ( in_array( $this->screen_id, array( 'update-core', 'update-core-network' ) ) ) { return true; } } //check our registered plugins for hooks if ( isset( $wpmudev_notices ) && is_array( $wpmudev_notices ) ) { foreach ( $wpmudev_notices as $product ) { if ( isset( $product['screens'] ) && is_array( $product['screens'] ) && in_array( $this->screen_id, $product['screens'] ) ) { $this->product_name = $product['name']; //if this plugin needs updating flag it if ( isset( $product['id'] ) && isset( $updates[ $product['id'] ] ) ) { $this->product_update = true; } return true; } } } return false; } function auto_install_url() { $function = is_multisite() ? 'network_admin_url' : 'admin_url'; return wp_nonce_url( $function( "update.php?action=install-plugin&plugin=install_wpmudev_dash" ), "install-plugin_install_wpmudev_dash" ); } function activate_url() { $function = is_multisite() ? 'network_admin_url' : 'admin_url'; return wp_nonce_url( $function( 'plugins.php?action=activate&plugin=wpmudev-updates%2Fupdate-notifications.php' ), 'activate-plugin_wpmudev-updates/update-notifications.php' ); } function install_notice() { if ( ! $this->is_allowed_screen() ) return; ?> <div class="notice wdpun-notice" style="display: none;"> <input type="hidden" name="msg_id" value="<?php _e( 'install', 'wpmudev' ); ?>" /> <div class="wdpun-notice-logo"></div> <div class="wdpun-notice-message"> <?php if ( $this->product_name ) { if ( $this->product_update ) { printf( __( 'Important updates are available for <strong>%s</strong>. Install the free WPMU DEV Dashboard plugin now for updates and support!', 'wpmudev' ), esc_html( $this->product_name ) ); } else { printf( __( '<strong>%s</strong> is almost ready - install the free WPMU DEV Dashboard plugin for updates and support!', 'wpmudev' ), esc_html( $this->product_name ) ); } } else if ( $this->update_count ) { _e( 'Important updates are available for your WPMU DEV plugins/themes. Install the free WPMU DEV Dashboard plugin now for updates and support!', 'wpmudev' ); } else { _e( 'Almost ready - install the free WPMU DEV Dashboard plugin for updates and support!', 'wpmudev' ); } ?> </div><!-- end wdpun-notice-message --> <div class="wdpun-notice-cta"> <a href="<?php echo $this->auto_install_url(); ?>" class="wdpun-button wdpun-button-small"><?php _e( 'Install Plugin', 'wpmudev' ); ?></a> <button class="wdpun-button wdpun-button-notice-dismiss" data-msg="<?php _e( 'Saving...', 'wpmudev' ); ?>"> <?php _e( 'Dismiss', 'wpmudev' ); ?> </button> </div><!-- end wdpun-notice-cta --> </div><!-- end notice wdpun-notice --> <?php return; } function activate_notice() { if ( ! $this->is_allowed_screen() ) return; ?> <div class="notice wdpun-notice" style="display: none;"> <input type="hidden" name="msg_id" value="<?php _e( 'activate', 'wpmudev' ); ?>" /> <div class="wdpun-notice-logo"><span></span></div> <div class="wdpun-notice-message"> <?php if ( $this->product_name ) { if ( $this->product_update ) { printf( __( 'Important updates are available for <strong>%s</strong>. Activate the WPMU DEV Dashboard to update now!', 'wpmudev' ), esc_html( $this->product_name ) ); } else { printf( __( 'Just one more step to enable updates and support for <strong>%s</strong>!', 'wpmudev' ), esc_html( $this->product_name ) ); } } else if ( $this->update_count ) { _e( 'Important updates are available for your WPMU DEV plugins/themes. Activate the WPMU DEV Dashboard to update now!', 'wpmudev' ); } else { _e( "Just one more step - activate the WPMU DEV Dashboard plugin and you're all done!", 'wpmudev' ); } ?> </div><!-- end wdpun-notice-message --> <div class="wdpun-notice-cta"> <a href="<?php echo $this->activate_url(); ?>" class="wdpun-button wdpun-button-small"><?php _e( 'Activate WPMU DEV Dashboard', 'wpmudev' ); ?></a> <button class="wdpun-button wdpun-button-notice-dismiss" data-msg="<?php _e( 'Saving...', 'wpmudev' ); ?>"> <?php _e( 'Dismiss', 'wpmudev' ); ?> </button> </div><!-- end wdpun-notice-cta --> </div><!-- end notice wdpun-notice --> <?php return; } function notice_styles() { if ( !$this->is_allowed_screen() ) return; ?> <style type="text/css" media="all"> .cf:after{content:"";display:table;clear:both}@media only screen and (min-width: 1200px){.hide-to-large{display:none}}@media only screen and (min-width: 1140px){.hide-to-desktop{display:none}}.wrap>.wdpun-notice.notice,.wrap #header>.wdpun-notice.notice{width:100%}.wrap #header>.wdpun-notice.notice{box-shadow:none}.wdpun-notice *,.wdpun-notice *:after,.wdpun-notice *:before{box-sizing:border-box}.wdpun-notice.notice{background:#fff;border:1px solid #E5E5E5;border-radius:6px;box-shadow:0 1px 1px 0 rgba(0,0,0,0.05);clear:both;display:block;font:400 13px/20px "Open Sans",Arial,sans-serif;overflow:hidden;margin:10px 20px 20px 0;min-height:80px;padding:0;position:relative;text-align:center;z-index:1}.wdpun-notice.notice.loading:before{background-color:rgba(255,255,255,0.7);bottom:0;content:attr(data-message);font-size:22px;font-weight:600;left:0;line-height:80px;position:absolute;right:0;text-align:center;top:0;z-index:5}.wdpun-notice.notice.loading>div{-webkit-filter:blur(2px);filter:blur(2px)}.wdpun-notice-logo{background-color:transparent;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjU2cHgiIGhlaWdodD0iNTZweCIgdmlld0JveD0iMCAwIDU2IDU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAzLjguMyAoMjk4MDIpIC0gaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoIC0tPgogICAgPHRpdGxlPndwbXVkZXYtc3ZnPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImlQYWQtUHJvLUxhbmRzY2FwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIzLjAwMDAwMCwgLTIyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0id3BtdWRldi1zdmciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIzLjAwMDAwMCwgMjIuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjgsNTYgQzEyLjUzNTg3MSw1NiAwLDQzLjQ2NDEyOSAwLDI4IEMwLDEyLjUzNjc3NDIgMTIuNTM1ODcxLDAgMjgsMCBDNDMuNDY0MTI5LDAgNTYsMTIuNTM2Nzc0MiA1NiwyOCBDNTYsNDMuNDY0MTI5IDQzLjQ2NDEyOSw1NiAyOCw1NiBMMjgsNTYgWiIgaWQ9IkZpbGwtMSIgZmlsbD0iI0ZGRDAwNSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTUxLjQ4Mzg3MSwyOCBDNTEuNDgzODcxLDQwLjk2OTQxOTQgNDAuOTY5NDE5NCw1MS40ODM4NzEgMjgsNTEuNDgzODcxIEMxNS4wMzA1ODA2LDUxLjQ4Mzg3MSA0LjUxNjEyOTAzLDQwLjk2OTQxOTQgNC41MTYxMjkwMywyOCBDNC41MTYxMjkwMywxNS4wMzA1ODA2IDE1LjAzMDU4MDYsNC41MTYxMjkwMyAyOCw0LjUxNjEyOTAzIEM0MC45Njk0MTk0LDQuNTE2MTI5MDMgNTEuNDgzODcxLDE1LjAzMDU4MDYgNTEuNDgzODcxLDI4IiBpZD0iRmlsbC0zIiBmaWxsPSIjMzMzMzMzIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDIuNzc4ODUxNiwzMi42NzY2MzIzIEw0Mi43Nzg4NTE2LDEyLjUzMTA4MzkgTDM5LjUzMDg1MTYsMTUuMDU4MzA5NyBMMzkuNTMwODUxNiwzMi42NzY2MzIzIEwzOS41MjcyMzg3LDMyLjY3NjYzMjMgQzM5LjUyNzIzODcsMzMuNzA4MTE2MSAzOC43ODI5ODA2LDM0LjU0NDUwMzIgMzcuODY2MjA2NSwzNC41NDQ1MDMyIEMzNi45NDY3MjI2LDM0LjU0NDUwMzIgMzYuMjAyNDY0NSwzMy43MDgxMTYxIDM2LjIwMjQ2NDUsMzIuNjc2NjMyMyBMMzYuMjA3ODgzOSwyMy4zMjM3MjkgQzM2LjIwNzg4MzksMjAuMjc0NDM4NyAzNC4wMDU4MTk0LDE3LjgwMTQwNjUgMzEuMjkwNzIyNiwxNy44MDE0MDY1IEMyOC41NzM4MTk0LDE3LjgwMTQwNjUgMjYuMzcyNjU4MSwyMC4yNzQ0Mzg3IDI2LjM3MjY1ODEsMjMuMzIzNzI5IEwyNi4zNzI2NTgxLDMyLjY3NjYzMjMgQzI2LjM3MjY1ODEsMzMuNzA4MTE2MSAyNS42Mjg0LDM0LjU0NDUwMzIgMjQuNzA4OTE2MSwzNC41NDQ1MDMyIEMyMy43OTIxNDE5LDM0LjU0NDUwMzIgMjMuMDQ1MTc0MiwzMy43MDgxMTYxIDIzLjA0NTE3NDIsMzIuNjc2NjMyMyBMMjMuMDUyNCwyMy4zMjM3MjkgQzIzLjA1MjQsMjAuMjc0NDM4NyAyMC44NTEyMzg3LDE3LjgwMTQwNjUgMTguMTM2MTQxOSwxNy44MDE0MDY1IEMxNS40MjEwNDUyLDE3LjgwMTQwNjUgMTMuMjE4OTgwNiwyMC4yNzQ0Mzg3IDEzLjIxODk4MDYsMjMuMzIzNzI5IEwxMy4yMjA3ODcxLDIzLjMyMzcyOSBMMTMuMjIwNzg3MSw0My40NjkyNzc0IEwxNi40Njg3ODcxLDQwLjk0MTE0ODQgTDE2LjQ3MjQsMjMuMzIzNzI5IEMxNi40NzI0LDIyLjI5MjI0NTIgMTcuMjE2NjU4MSwyMS40NTU4NTgxIDE4LjEzNjE0MTksMjEuNDU1ODU4MSBDMTkuMDU0NzIyNiwyMS40NTU4NTgxIDE5Ljc5OTg4MzksMjIuMjkyMjQ1MiAxOS43OTk4ODM5LDIzLjMyMzcyOSBMMTkuNzkyNjU4MSwzMi42NzY2MzIzIEMxOS43OTI2NTgxLDM1LjcyNTkyMjYgMjEuOTkzODE5NCwzOC4xOTg5NTQ4IDI0LjcwODkxNjEsMzguMTk4OTU0OCBDMjcuNDI0MDEyOSwzOC4xOTg5NTQ4IDI5LjYyNTE3NDIsMzUuNzI1OTIyNiAyOS42MjUxNzQyLDMyLjY3NjYzMjMgTDI5LjYyNDI3MSwzMi42NzY2MzIzIEwyOS42MjY5ODA2LDIzLjMyMzcyOSBDMjkuNjI2OTgwNiwyMi4yOTIyNDUyIDMwLjM3MjE0MTksMjEuNDU1ODU4MSAzMS4yOTA3MjI2LDIxLjQ1NTg1ODEgQzMyLjIwODQsMjEuNDU1ODU4MSAzMi45NTI2NTgxLDIyLjI5MjI0NTIgMzIuOTUyNjU4MSwyMy4zMjM3MjkgTDMyLjk0NzIzODcsMzIuNjc2NjMyMyBDMzIuOTQ3MjM4NywzNS43MjU5MjI2IDM1LjE0OTMwMzIsMzguMTk4OTU0OCAzNy44NjYyMDY1LDM4LjE5ODk1NDggQzQwLjU4MDQsMzguMTk4OTU0OCA0Mi43ODA2NTgxLDM1LjcyNTkyMjYgNDIuNzgwNjU4MSwzMi42NzY2MzIzIEw0Mi43Nzg4NTE2LDMyLjY3NjYzMjMgTDQyLjc3ODg1MTYsMzIuNjc2NjMyMyBaIiBpZD0iRmlsbC01IiBmaWxsPSIjRjlFQzFDIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);background-repeat:no-repeat;background-position:50% 50%;display:block;height:56px;margin:10px auto 0;width:56px}.wdpun-notice .wdpun-notice-message{color:#23282D;display:block;font-family:"Open Sans",Arial,sans-serif;font-size:13px;line-height:20px;padding:10px}.wdpun-notice .wdpun-notice-message strong{font-weight:600}.wdpun-notice .wdpun-button{background:#00ACCA;border:1px solid #0087B9;border-radius:2px;color:#fff;cursor:pointer;display:block;font-weight:500;font-size:16px;height:auto;line-height:18px;margin:0;padding:10px 20px;text-decoration:none;-webkit-transition:color 0.3s, opacity 0.3s, background 0.3s;transition:color 0.3s, opacity 0.3s, background 0.3s;white-space:nowrap}.wdpun-notice .wdpun-button:hover:not(:focus):not(:active){background-color:#0093B1;color:#fff}.wdpun-notice .wdpun-button:focus,.wdpun-notice .wdpun-button:active{background:#0082a1;background:-webkit-linear-gradient(top, #0082a1 0%, #008fae 100%);background:linear-gradient(to bottom, #0082a1 0%, #008fae 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#0082a1', endColorstr='#008fae',GradientType=0 );border-color:transparent;color:#fff;outline-color:transparent;outline-style:none}.wdpun-notice .wdpun-button-small{padding:5px 15px}.wdpun-notice .wdpun-button-notice-dismiss{background:transparent;border:none;border-radius:0;color:#C5C5C5;padding:0;text-transform:none;-webkit-transition:color 0.3s;transition:color 0.3s}.wdpun-notice .wdpun-button-notice-dismiss:hover:not(:focus):not(:active),.wdpun-notice .wdpun-button-notice-dismiss:active,.wdpun-notice .wdpun-button-notice-dismiss:focus{background:transparent;color:#666}.wdpun-notice .wdpun-notice-cta{border-top:1px solid #E5E5E5;background:#F8F8F8;clear:both;display:block;padding:15px 20px;position:relative;text-align:center;white-space:nowrap}.wdpun-notice .wdpun-notice-cta .wdpun-button{vertical-align:middle}.wdpun-notice .wdpun-notice-cta .wdpun-button-notice-dismiss{margin:10px auto 0}.wdpun-notice .wdpun-notice-cta input[type="email"]{line-height:20px;margin:0;max-width:320px;min-width:50px;padding-right:0;padding-left:0;text-align:center;vertical-align:middle}@media only screen and (min-width: 601px){.wdpun-notice.notice{text-align:left}.wdpun-notice-logo{float:left;margin:10px}.wdpun-notice .wdpun-notice-message{margin-top:5px;margin-left:76px;padding:10px 20px 10px 10px}.wdpun-notice .wdpun-button{display:inline-block;font-size:14px}}@media only screen and (min-width: 783px){.wdpun-notice .wdpun-notice-cta .wdpun-button-notice-dismiss{margin-top:0}.wdpun-notice button+button,.wdpun-notice .wdpun-button+button,.wdpun-notice button+.wdpun-button,.wdpun-notice .wdpun-button+.wdpun-button,.wdpun-notice a+button,.wdpun-notice a+.wdpun-button{margin-left:10px}}@media only screen and (min-width: 961px){.wdpun-notice.notice{display:table}.wdpun-notice-logo{border-radius:0;height:auto;margin:0;min-height:80px;min-width:80px;width:5%}.wdpun-notice .wdpun-notice-logo,.wdpun-notice .wdpun-notice-message,.wdpun-notice .wdpun-notice-cta{cursor:default;display:table-cell;float:none;vertical-align:middle}.wdpun-notice .wdpun-notice-message{margin-top:0;max-width:100%;min-height:80px;width:75%}.wdpun-notice .wdpun-notice-cta{border-left:1px solid #E5E5E5;border-top:none;padding:0 30px;width:20%}}@media only screen and (min-width: 1140px){.wdpun-notice .wdpun-button{font-size:13px}} </style> <?php } function notice_scripts() { if ( !$this->is_allowed_screen() ) return; ?> <script type="text/javascript"> !function($){function n(){function n(){a.fadeIn(500)}function i(){a.fadeTo(100,0,function(){a.slideUp(100,function(){a.remove()})})}function t(n,t){"0"!==e?(a.attr("data-message",t),a.addClass("saving"),s.action=n,jQuery.post(window.ajaxurl,s,i)):i()}var a=jQuery(".wdpun-notice"),e=a.find("input[name=msg_id]").val(),o=a.find(".wdpun-button-notice-dismiss"),s={};s.msg_id=e,o.click(function(n){n.preventDefault(),t("wdpun-dismiss",o.data("msg"))}),window.setTimeout(n,500)}$(n)}(jQuery); </script> <?php } function get_id_plugin( $plugin_file ) { return get_file_data( $plugin_file, array( 'name' => 'Plugin Name', 'id' => 'WDP ID', 'version' => 'Version' ) ); } //simple check for updates function updates_check() { global $wp_version; $local_projects = array(); //----------------------------------------------------------------------------------// //plugins directory //----------------------------------------------------------------------------------// $plugins_root = WP_PLUGIN_DIR; if ( empty( $plugins_root ) ) { $plugins_root = ABSPATH . 'wp-content/plugins'; } $plugins_dir = @opendir( $plugins_root ); $plugin_files = array(); if ( $plugins_dir ) { while ( ( $file = readdir( $plugins_dir ) ) !== false ) { if ( substr( $file, 0, 1 ) == '.' ) { continue; } if ( is_dir( $plugins_root . '/' . $file ) ) { $plugins_subdir = @ opendir( $plugins_root . '/' . $file ); if ( $plugins_subdir ) { while ( ( $subfile = readdir( $plugins_subdir ) ) !== false ) { if ( substr( $subfile, 0, 1 ) == '.' ) { continue; } if ( substr( $subfile, - 4 ) == '.php' ) { $plugin_files[] = "$file/$subfile"; } } } } else { if ( substr( $file, - 4 ) == '.php' ) { $plugin_files[] = $file; } } } } @closedir( $plugins_dir ); @closedir( $plugins_subdir ); if ( $plugins_dir && ! empty( $plugin_files ) ) { foreach ( $plugin_files as $plugin_file ) { if ( is_readable( "$plugins_root/$plugin_file" ) ) { unset( $data ); $data = $this->get_id_plugin( "$plugins_root/$plugin_file" ); if ( isset( $data['id'] ) && ! empty( $data['id'] ) ) { $local_projects[ $data['id'] ]['type'] = 'plugin'; $local_projects[ $data['id'] ]['version'] = $data['version']; $local_projects[ $data['id'] ]['filename'] = $plugin_file; } } } } //----------------------------------------------------------------------------------// // mu-plugins directory //----------------------------------------------------------------------------------// $mu_plugins_root = WPMU_PLUGIN_DIR; if ( empty( $mu_plugins_root ) ) { $mu_plugins_root = ABSPATH . 'wp-content/mu-plugins'; } if ( is_dir( $mu_plugins_root ) && $mu_plugins_dir = @opendir( $mu_plugins_root ) ) { while ( ( $file = readdir( $mu_plugins_dir ) ) !== false ) { if ( substr( $file, - 4 ) == '.php' ) { if ( is_readable( "$mu_plugins_root/$file" ) ) { unset( $data ); $data = $this->get_id_plugin( "$mu_plugins_root/$file" ); if ( isset( $data['id'] ) && ! empty( $data['id'] ) ) { $local_projects[ $data['id'] ]['type'] = 'mu-plugin'; $local_projects[ $data['id'] ]['version'] = $data['version']; $local_projects[ $data['id'] ]['filename'] = $file; } } } } @closedir( $mu_plugins_dir ); } //----------------------------------------------------------------------------------// // wp-content directory //----------------------------------------------------------------------------------// $content_plugins_root = WP_CONTENT_DIR; if ( empty( $content_plugins_root ) ) { $content_plugins_root = ABSPATH . 'wp-content'; } $content_plugins_dir = @opendir( $content_plugins_root ); $content_plugin_files = array(); if ( $content_plugins_dir ) { while ( ( $file = readdir( $content_plugins_dir ) ) !== false ) { if ( substr( $file, 0, 1 ) == '.' ) { continue; } if ( ! is_dir( $content_plugins_root . '/' . $file ) ) { if ( substr( $file, - 4 ) == '.php' ) { $content_plugin_files[] = $file; } } } } @closedir( $content_plugins_dir ); if ( $content_plugins_dir && ! empty( $content_plugin_files ) ) { foreach ( $content_plugin_files as $content_plugin_file ) { if ( is_readable( "$content_plugins_root/$content_plugin_file" ) ) { unset( $data ); $data = $this->get_id_plugin( "$content_plugins_root/$content_plugin_file" ); if ( isset( $data['id'] ) && ! empty( $data['id'] ) ) { $local_projects[ $data['id'] ]['type'] = 'drop-in'; $local_projects[ $data['id'] ]['version'] = $data['version']; $local_projects[ $data['id'] ]['filename'] = $content_plugin_file; } } } } //----------------------------------------------------------------------------------// //themes directory //----------------------------------------------------------------------------------// $themes_root = WP_CONTENT_DIR . '/themes'; if ( empty( $themes_root ) ) { $themes_root = ABSPATH . 'wp-content/themes'; } $themes_dir = @opendir( $themes_root ); $themes_files = array(); $local_themes = array(); if ( $themes_dir ) { while ( ( $file = readdir( $themes_dir ) ) !== false ) { if ( substr( $file, 0, 1 ) == '.' ) { continue; } if ( is_dir( $themes_root . '/' . $file ) ) { $themes_subdir = @ opendir( $themes_root . '/' . $file ); if ( $themes_subdir ) { while ( ( $subfile = readdir( $themes_subdir ) ) !== false ) { if ( substr( $subfile, 0, 1 ) == '.' ) { continue; } if ( substr( $subfile, - 4 ) == '.css' ) { $themes_files[] = "$file/$subfile"; } } } } else { if ( substr( $file, - 4 ) == '.css' ) { $themes_files[] = $file; } } } } @closedir( $themes_dir ); @closedir( $themes_subdir ); if ( $themes_dir && ! empty( $themes_files ) ) { foreach ( $themes_files as $themes_file ) { //skip child themes if ( strpos( $themes_file, '-child' ) !== false ) { continue; } if ( is_readable( "$themes_root/$themes_file" ) ) { unset( $data ); $data = $this->get_id_plugin( "$themes_root/$themes_file" ); if ( isset( $data['id'] ) && ! empty( $data['id'] ) ) { $local_projects[ $data['id'] ]['type'] = 'theme'; $local_projects[ $data['id'] ]['filename'] = substr( $themes_file, 0, strpos( $themes_file, '/' ) ); //keep record of all themes for 133 themepack if ( $data['id'] == $this->theme_pack ) { $local_themes[ $themes_file ]['id'] = $data['id']; $local_themes[ $themes_file ]['filename'] = substr( $themes_file, 0, strpos( $themes_file, '/' ) ); $local_themes[ $themes_file ]['version'] = $data['version']; //increment 133 theme pack version to lowest in all of them if ( isset( $local_projects[ $data['id'] ]['version'] ) && version_compare( $data['version'], $local_projects[ $data['id'] ]['version'], '<' ) ) { $local_projects[ $data['id'] ]['version'] = $data['version']; } else if ( ! isset( $local_projects[ $data['id'] ]['version'] ) ) { $local_projects[ $data['id'] ]['version'] = $data['version']; } } else { $local_projects[ $data['id'] ]['version'] = $data['version']; } } } } } update_site_option( 'wdp_un_local_themes', $local_themes ); update_site_option( 'wdp_un_local_projects', $local_projects ); //now check the API $projects = array(); $theme = wp_get_theme(); $ms_allowed = $theme->get_allowed(); foreach ( $local_projects as $pid => $item ) { if ( ! empty( $blog_projects[ $pid ] ) ) { //not yet implemented // This project is activated on a blog! $active = true; } else { if ( is_multisite() ) { if ( 'theme' == $item['type'] ) { // If the theme is available on main site it's "active". $slug = $item['filename']; $active = ! empty( $ms_allowed[ $slug ] ); } else { $active = is_plugin_active_for_network( $item['filename'] ); } } else { if ( 'theme' == $item['type'] ) { $slug = $item['filename']; $active = ( $theme->stylesheet == $slug || $theme->template == $slug ); } else { $active = is_plugin_active( $item['filename'] ); } } } $extra = ''; /** * Collect extra data from individual plugins. * * @since 4.0.0 * @api wpmudev_api_project_extra_data-$pid * * @param string $extra Default extra data is an empty string. */ $extra = apply_filters( "wpmudev_api_project_extra_data-$pid", $extra ); $extra = apply_filters( 'wpmudev_api_project_extra_data', $extra, $pid ); $projects[ $pid ] = array( 'version' => $item['version'], 'active' => $active ? true : false, 'extra' => $extra, ); } //get WP/BP version string to help with support $wp_ver = is_multisite() ? "WordPress Multisite $wp_version" : "WordPress $wp_version"; if ( defined( 'BP_VERSION' ) ) { $wp_ver .= ', BuddyPress ' . BP_VERSION; } //add blog count if multisite $blog_count = is_multisite() ? get_blog_count() : 1; $url = $this->server_url . 'updates'; $options = array( 'timeout' => 15, 'sslverify' => false, // Many hosts have no updated CA bundle. 'user-agent' => 'Dashboard Notification/' . $this->version ); $options['body'] = array( 'blog_count' => $blog_count, 'wp_version' => $wp_ver, 'projects' => json_encode( $projects ), 'domain' => network_site_url(), 'admin_url' => network_admin_url(), 'home_url' => network_home_url(), ); $response = wp_remote_post( $url, $options ); if ( wp_remote_retrieve_response_code( $response ) == 200 ) { $data = $response['body']; if ( $data != 'error' ) { $data = json_decode( $data, true ); if ( is_array( $data ) ) { //we've made it here with no errors, now check for available updates $remote_projects = isset( $data['projects'] ) ? $data['projects'] : array(); $updates = array(); //check for updates if ( is_array( $remote_projects ) ) { foreach ( $remote_projects as $id => $remote_project ) { if ( isset( $local_projects[ $id ] ) && is_array( $local_projects[ $id ] ) ) { //match $local_version = $local_projects[ $id ]['version']; $remote_version = $remote_project['version']; if ( version_compare( $remote_version, $local_version, '>' ) ) { //add to array $updates[ $id ] = $local_projects[ $id ]; $updates[ $id ]['url'] = $remote_project['url']; $updates[ $id ]['name'] = $remote_project['name']; $updates[ $id ]['version'] = $local_version; $updates[ $id ]['new_version'] = $remote_version; $updates[ $id ]['autoupdate'] = $remote_project['autoupdate']; } } } //record results update_site_option( 'wdp_un_updates_available', $updates ); } else { return false; } } } } } function filter_plugin_info( $res, $action, $args ) { global $wp_version; $cur_wp_version = preg_replace( '/-.*$/', '', $wp_version ); if ( ( $action == 'plugin_information' || $action == 'theme_information' ) && strpos( $args->slug, 'wpmudev_install' ) !== false ) { $string = explode( '-', $args->slug ); $id = intval( $string[1] ); $updates = get_site_option( 'wdp_un_updates_available' ); //if in details iframe on update core page short-curcuit it if ( did_action( 'install_plugins_pre_plugin-information' ) && is_array( $updates ) && isset( $updates[ $id ] ) ) { $this->popup_changelog( $id ); } $res = new stdClass; $res->name = $updates[ $id ]['name']; $res->slug = sanitize_title( $updates[ $id ]['name'] ); $res->version = $updates[ $id ]['version']; $res->rating = 100; $res->homepage = $updates[ $id ]['url']; $res->download_link = ''; $res->tested = $cur_wp_version; return $res; } if ( $action == 'plugin_information' && strpos( $args->slug, 'install_wpmudev_dash' ) !== false ) { $res = new stdClass; $res->name = 'WPMU DEV Dashboard'; $res->slug = 'wpmu-dev-dashboard'; $res->version = ''; $res->rating = 100; $res->homepage = 'https://premium.wpmudev.org/project/wpmu-dev-dashboard/'; $res->download_link = $this->server_url . "download-dashboard"; $res->tested = $cur_wp_version; return $res; } return $res; } function filter_plugin_rows() { if ( ! current_user_can( 'update_plugins' ) ) { return; } //don't show on per site plugins list, just like core if ( is_multisite() && ! is_network_admin() ) { return; } $updates = get_site_option( 'wdp_un_updates_available' ); if ( is_array( $updates ) && count( $updates ) ) { foreach ( $updates as $id => $plugin ) { if ( $plugin['autoupdate'] != '2' ) { if ( $plugin['type'] == 'theme' ) { remove_all_actions( 'after_theme_row_' . $plugin['filename'] ); add_action( 'after_theme_row_' . $plugin['filename'], array( &$this, 'plugin_row' ), 99, 2 ); } else { remove_all_actions( 'after_plugin_row_' . $plugin['filename'] ); add_action( 'after_plugin_row_' . $plugin['filename'], array( &$this, 'plugin_row' ), 99, 2 ); } } } } $local_themes = get_site_option( 'wdp_un_local_themes' ); if ( is_array( $local_themes ) && count( $local_themes ) ) { foreach ( $local_themes as $id => $plugin ) { remove_all_actions( 'after_theme_row_' . $plugin['filename'] ); //only add the notice if specific version is wrong if ( isset( $updates[ $this->theme_pack ] ) && version_compare( $plugin['version'], $updates[ $this->theme_pack ]['new_version'], '<' ) ) { add_action( 'after_theme_row_' . $plugin['filename'], array( &$this, 'themepack_row' ), 9, 2 ); } } } } function filter_plugin_count( $value ) { global $wp_version; $cur_wp_version = preg_replace( '/-.*$/', '', $wp_version ); //remove any conflicting slug local WPMU DEV plugins from WP update notifications $local_projects = get_site_option( 'wdp_un_local_projects' ); if ( is_array( $local_projects ) && count( $local_projects ) ) { foreach ( $local_projects as $id => $plugin ) { if ( isset( $value->response[ $plugin['filename'] ] ) ) { unset( $value->response[ $plugin['filename'] ] ); } } } $updates = get_site_option( 'wdp_un_updates_available' ); if ( is_array( $updates ) && count( $updates ) ) { foreach ( $updates as $id => $plugin ) { if ( $plugin['type'] != 'theme' && $plugin['autoupdate'] != '2' ) { //build plugin class $object = new stdClass; $object->url = $plugin['url']; $object->slug = "wpmudev_install-$id"; $object->new_version = $plugin['new_version']; $object->package = ''; $object->tested = $cur_wp_version; //add to class $value->response[ $plugin['filename'] ] = $object; } } } return $value; } function filter_theme_count( $value ) { $updates = get_site_option( 'wdp_un_updates_available' ); if ( is_array( $updates ) && count( $updates ) ) { foreach ( $updates as $id => $theme ) { if ( $theme['type'] == 'theme' && $theme['autoupdate'] != '2' ) { $theme_slug = $theme['filename']; //build theme listing $value->response[ $theme_slug ]['theme'] = $theme['filename']; $value->response[ $theme_slug ]['url'] = admin_url( 'admin-ajax.php?action=wdpun-changelog&pid=' . $id ); $value->response[ $theme_slug ]['new_version'] = $theme['new_version']; $value->response[ $theme_slug ]['package'] = ''; } } } //filter 133 theme pack themes from the list unless update is available $local_themes = get_site_option( 'wdp_un_local_themes' ); if ( is_array( $local_themes ) && count( $local_themes ) ) { foreach ( $local_themes as $id => $theme ) { $theme_slug = $theme['filename']; //add to count only if new version exists, otherwise remove if ( isset( $updates[ $theme['id'] ] ) && isset( $updates[ $theme['id'] ]['new_version'] ) && version_compare( $theme['version'], $updates[ $theme['id'] ]['new_version'], '<' ) ) { $value->response[ $theme_slug ]['new_version'] = $updates[ $theme['id'] ]['new_version']; $value->response[ $theme_slug ]['package'] = ''; } else if ( isset( $value ) && isset( $value->response ) && isset( $theme_slug ) && isset( $value->response[ $theme_slug ] ) ) { unset( $value->response[ $theme_slug ] ); } } } return $value; } function plugin_row( $file, $plugin_data ) { //get new version and update url $updates = get_site_option( 'wdp_un_updates_available' ); if ( is_array( $updates ) && count( $updates ) ) { foreach ( $updates as $id => $plugin ) { if ( $plugin['filename'] == $file ) { $project_id = $id; $version = $plugin['new_version']; $plugin_url = $plugin['url']; $autoupdate = $plugin['autoupdate']; $filename = $plugin['filename']; $type = $plugin['type']; break; } } } else { return false; } $plugins_allowedtags = array( 'a' => array( 'href' => array(), 'title' => array() ), 'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ), 'code' => array(), 'em' => array(), 'strong' => array() ); $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); $info_url = admin_url( 'admin-ajax.php?action=wdpun-changelog&pid=' . $project_id . '&TB_iframe=true&width=640&height=800' ); if ( file_exists( WP_PLUGIN_DIR . '/wpmudev-updates/update-notifications.php' ) ) { $message = "Activate WPMU DEV Dashboard"; $action_url = $this->activate_url(); } else { //dashboard not installed at all $message = "Install WPMU DEV Dashboard"; $action_url = $this->auto_install_url(); } if ( current_user_can( 'update_plugins' ) ) { echo '<tr class="plugin-update-tr"><td colspan="3" class="plugin-update colspanchange"><div class="update-message notice inline notice-warning notice-alt"><p>'; printf( 'There is a new version of %1$s available on WPMU DEV. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">%6$s</a> to update.', $plugin_name, esc_url( $info_url ), esc_attr( $plugin_name ), $version, esc_url( $action_url ), $message ); echo '</p></div></td></tr>'; } } function themepack_row( $file, $plugin_data ) { //get new version and update url $updates = get_site_option( 'wdp_un_updates_available' ); if ( isset( $updates[ $this->theme_pack ] ) ) { $plugin = $updates[ $this->theme_pack ]; $project_id = $this->theme_pack; $version = $plugin['new_version']; $plugin_url = $plugin['url']; } else { return false; } $plugins_allowedtags = array( 'a' => array( 'href' => array(), 'title' => array() ), 'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ), 'code' => array(), 'em' => array(), 'strong' => array() ); $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); $info_url = admin_url( 'admin_ajax.php?action=wdpun-changelog&pid=' . $project_id . '&TB_iframe=true&width=640&height=800' ); if ( file_exists( WP_PLUGIN_DIR . '/wpmudev-updates/update-notifications.php' ) ) { $message = "Activate WPMU DEV Dashboard"; $action_url = $this->activate_url(); } else { //dashboard not installed at all $message = "Install WPMU DEV Dashboard"; $action_url = $this->auto_install_url(); } if ( current_user_can( 'update_themes' ) ) { echo '<tr class="plugin-update-tr"><td colspan="3" class="plugin-update colspanchange"><div class="update-message notice inline notice-warning notice-alt"><p>'; printf( 'There is a new version of %1$s available on WPMU DEV. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">%6$s</a> to update.', $plugin_name, esc_url( $info_url ), esc_attr( $plugin_name ), $version, esc_url( $action_url ), $message ); echo '</p></div></td></tr>'; } } function disable_checkboxes() { $updates = get_site_option( 'wdp_un_updates_available' ); if ( ! is_array( $updates ) || ( is_array( $updates ) && ! count( $updates ) ) ) { return; } $jquery = "<script type='text/javascript'>"; if ( file_exists( WP_PLUGIN_DIR . '/wpmudev-updates/update-notifications.php' ) ) { $message = "Activate WPMU DEV Dashboard"; $action_url = $this->activate_url(); } else { //dashboard not installed at all $message = "Install WPMU DEV Dashboard"; $action_url = $this->auto_install_url(); } $jquery .= "var wdp_note = '<br><span class=\"notice inline notice-warning notice-alt\">" . sprintf( '<a href="%s">%s</a> to update.', esc_url( $action_url ), $message ) . "</span>';\n"; foreach ( (array) $updates as $id => $project ) { $slug = $project['filename']; $jquery .= "jQuery(\"input:checkbox[value='" . esc_attr( $slug ) . "']\").closest('tr').find('td p').last().append(wdp_note);\n"; $jquery .= "jQuery(\"input:checkbox[value='" . esc_attr( $slug ) . "']\").remove();\n"; } //disable checkboxes for 133 theme pack themes $local_themes = get_site_option( 'wdp_un_local_themes' ); if ( is_array( $local_themes ) && count( $local_themes ) ) { foreach ( $local_themes as $id => $theme ) { $jquery .= "jQuery(\"input:checkbox[value='" . esc_attr( $theme['filename'] ) . "']\").closest('tr').find('td p').last().append(wdp_note);\n"; $jquery .= "jQuery(\"input:checkbox[value='" . esc_attr( $theme['filename'] ) . "']\").remove();\n"; } } $jquery .= "</script>\n"; echo $jquery; } function set_activate_flag( $plugin ) { $data = $this->get_id_plugin( WP_PLUGIN_DIR . '/' . $plugin ); if ( isset( $data['id'] ) && ! empty( $data['id'] ) ) { update_site_option( 'wdp_un_activated_flag', 1 ); } } function popup_changelog( $project_id ) { /** * Dashboard popup template: Project changelog * * Displays the changelog of a specific project. * * Following variables are passed into the template: * $pid (project ID) * * @since 4.0.5 * @package WPMUDEV_Dashboard */ $url = $this->server_url . 'changelog/' . $project_id; $options = array( 'timeout' => 15, 'sslverify' => false, // Many hosts have no updated CA bundle. 'user-agent' => 'Dashboard Notification/' . $this->version ); $response = wp_remote_get( $url, $options ); if ( wp_remote_retrieve_response_code( $response ) == 200 ) { $changelog = json_decode( wp_remote_retrieve_body( $response ), true ); } $updates = get_site_option( 'wdp_un_updates_available' ); $item = $updates[ $project_id ]; if ( ! $changelog || ! is_array( $changelog ) || ! $item ) { wp_die( __( 'We did not find any data for this plugin or theme...', 'wpmudev' ) ); } $dlg_id = 'dlg-' . md5( time() . '-' . $project_id ); ?> <div id="content" class="<?php echo esc_attr( $dlg_id ); ?>"> <script src="<?php echo includes_url( '/wp-includes/js/jquery/jquery.js' ); ?>"></script> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Condensed%3A400%2C700%7CRoboto%3A400%2C500%2C300%2C300italic%2C100" type="text/css" media="all"/> <style> * { box-sizing: border-box; -moz-box-sizing: border-box; } html, body { margin: 0; padding: 0; height: 100%; font-family: 'Roboto', 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; } h1, h2, h3, h4 { font-family: 'Roboto Condensed', 'Roboto', 'Helvetica Neue', Helvetica, sans-serif; font-weight: 700; color: #777771; } h1 { font-size: 3em; } p { font-size: 1.2em; font-weight: 300; color: #777771; } a { color: #19b4cf; text-decoration: none; } a:hover, a:focus, a:active { color: #387ac1; } #content { min-height: 100%; text-align: center; background: #FFF; position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: auto; } #content .excerpt { width: 100%; background-color: #14485F; padding: 10px; color: #FFF; } #content .excerpt h1 { margin: 30px; color: #FFF; font-weight: 100; } #content .versions h4 { font-size: 15px; text-transform: uppercase; text-align: left; padding: 0 0 15px; font-weight: bold; line-height: 20px; } #content .excerpt a { float: left; margin-right: 40px; text-decoration: none; color: #6ECEDE; } #content .excerpt a:hover, #content .excerpt a:focus, #content .excerpt a:active { color: #C7F7FF; } #content .footer { background-color: #0B2F3F; padding: 20px 0; margin: 0; position: relative; } #content .footer p { color: #FFF; margin: 10px 0; padding: 0; font-size: 15px; } #content .information { padding: 0; text-align: left; } #content .versions > li { border-bottom: 1px solid #E5E5E5; padding: 40px; margin: 0; } #content .versions > li.new { background: #fffff6; } #content .information .current-version, #content .information .new-version { border-radius: 5px; color: #FFF; cursor: default; display: inline-block; position: relative; top: -2px; margin: 0 0 0 10px; padding: 1px 5px; font-size: 10px; line-height: 20px; height: 20px; box-sizing: border-box; } #content .information .new-version { background: #FDCE43; text-shadow: 0 1px 1px #DDAE30; } #content .current-version { background: #00ACCA; text-shadow: 0 1px 1px #008CAA; } #content .versions { margin: 0; padding: 0; } #content .versions .changes { list-style: disc; padding: 0 0 0 20px; margin: 0; } #content .versions .changes li { padding: 3px 0 3px 20px; margin: 0; color: #777771; cursor: default; } #content .version-meta { float: right; text-align: right; } </style> <div class="excerpt"> <h1><?php printf( esc_attr__( '%s changelog', 'wpmudev' ), esc_html( $item['name'] ) ); ?></h1> </div> <div class="information"> <ul class="versions"> <?php foreach ( $changelog as $log ) { $row_class = ''; $badge = ''; if ( ! is_array( $log ) ) { continue; } if ( empty( $log ) ) { continue; } // -1 .. local is higher (dev) | 0 .. equal | 1 .. new version available $version_check = version_compare( $log['version'], $item['version'] ); if ( $item['version'] && 1 === $version_check ) { $row_class = 'new'; } if ( $item['version'] ) { if ( 0 === $version_check ) { $badge = sprintf( '<div class="current-version">%s %s</div>', '<i class="wdv-icon wdv-icon-ok"></i>', __( 'Current', 'wpmudev' ) ); } elseif ( 1 === $version_check ) { $badge = sprintf( '<div class="new-version">%s %s</div>', '<i class="wdv-icon wdv-icon-star"></i>', __( 'New', 'wpmudev' ) ); } } $version = $log['version']; if ( empty( $log['time'] ) ) { $rel_date = ''; } else { $rel_date = date_i18n( get_option( 'date_format' ), $log['time'] ); } printf( '<li class="%1$s"><h4>%2$s %3$s <small class="version-meta">%4$s</small></h4>', esc_attr( $row_class ), sprintf( esc_html__( 'Version %s', 'wpmudev' ), esc_html( $version ) ), wp_kses_post( $badge ), esc_html( $rel_date ) ); $notes = explode( "\n", $log['log'] ); $detail_level = 0; $detail_class = 'intro'; echo '<ul class="changes">'; foreach ( $notes as $note ) { if ( 0 === strpos( $note, '<p>' ) ) { if ( 1 == $detail_level ) { printf( '<li class="toggle-details"> <a href="#" class="for-intro">%s</a><a href="#" class="for-detail">%s</a> </li>', esc_html__( 'Show all changes', 'wpmudev' ), esc_html__( 'Hide details', 'wpmudev' ) ); $detail_class = 'detail'; } $detail_level += 1; } $note = stripslashes( $note ); $note = preg_replace( '/(<br ?\/?>|<p>|<\/p>)/', '', $note ); $note = trim( preg_replace( '/^\s*(\*|\-)\s*/', '', $note ) ); $note = str_replace( array( '<', '>' ), array( '<', '>' ), $note ); $note = preg_replace( '/`(.*?)`/', '<code>\1</code>', $note ); if ( empty( $note ) ) { continue; } printf( '<li class="version-%s">%s</li>', esc_attr( $detail_class ), wp_kses_post( $note ) ); } echo '</ul></li>'; } ?> </ul> </div> <div class="footer"> <p>Copyright 2009 - <?php echo esc_html( date( 'Y' ) ); ?> WPMU DEV</p> </div> <style> .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes .for-detail, .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes .version-detail { display: none; } .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes .for-intro { display: inline-block; } .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes.show-details .for-intro { display: none; } .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes.show-details .for-detail { display: inline-block; } .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes.show-details .version-detail { display: list-item; } .<?php echo esc_attr( $dlg_id ); ?> .versions ul.changes .toggle-details { padding: 8px 0 4px; text-align: right; font-size: 12px; list-style: none; } </style> <script> jQuery(function () { jQuery('.<?php echo esc_attr( $dlg_id ); ?>').on('click', '.toggle-details a', function (ev) { var li = jQuery(this), ver = li.closest('.changes'); ev.preventDefault(); ev.stopPropagation(); ver.toggleClass('show-details'); return false; }); }); </script> </div> <?php exit; //this is for output, we are done after this. } function popup_changelog_ajax() { $project_id = $_GET['pid']; $this->popup_changelog( $project_id ); } function dismiss_ajax() { update_site_option( 'wdp_un_dismissed', time() ); wp_send_json_success(); } } $GLOBALS['WPMUDEV_Dashboard_Notice4'] = new WPMUDEV_Dashboard_Notice4(); } //disable older versions if ( ! class_exists( 'WPMUDEV_Dashboard_Notice' ) ) { class WPMUDEV_Dashboard_Notice { } } if ( ! class_exists( 'WPMUDEV_Dashboard_Notice3' ) ) { class WPMUDEV_Dashboard_Notice3 { } }