initial commit
This commit is contained in:
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'ACF_Admin_Upgrade' ) ) :
|
||||
|
||||
class ACF_Admin_Upgrade {
|
||||
|
||||
/**
|
||||
* __construct
|
||||
*
|
||||
* Sets up the class functionality.
|
||||
*
|
||||
* @date 31/7/18
|
||||
* @since 5.7.2
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
// actions
|
||||
add_action( 'admin_menu', array( $this, 'admin_menu' ), 20 );
|
||||
if ( is_multisite() ) {
|
||||
add_action( 'network_admin_menu', array( $this, 'network_admin_menu' ), 20 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* admin_menu
|
||||
*
|
||||
* Setus up logic if DB Upgrade is needed on a single site.
|
||||
*
|
||||
* @date 24/8/18
|
||||
* @since 5.7.4
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function admin_menu() {
|
||||
|
||||
// check if upgrade is avaialble
|
||||
if ( acf_has_upgrade() ) {
|
||||
|
||||
// add notice
|
||||
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
|
||||
|
||||
// add page
|
||||
$page = add_submenu_page( 'index.php', __( 'Upgrade Database', 'acf' ), __( 'Upgrade Database', 'acf' ), acf_get_setting( 'capability' ), 'acf-upgrade', array( $this, 'admin_html' ) );
|
||||
|
||||
// actions
|
||||
add_action( 'load-' . $page, array( $this, 'admin_load' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* network_admin_menu
|
||||
*
|
||||
* Sets up admin logic if DB Upgrade is required on a multi site.
|
||||
*
|
||||
* @date 24/8/18
|
||||
* @since 5.7.4
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function network_admin_menu() {
|
||||
|
||||
// Vars.
|
||||
$upgrade = false;
|
||||
|
||||
// Loop over sites and check for upgrades.
|
||||
$sites = get_sites( array( 'number' => 0 ) );
|
||||
if ( $sites ) {
|
||||
|
||||
// Unhook action to avoid memory issue (as seen in wp-includes/ms-site.php).
|
||||
remove_action( 'switch_blog', 'wp_switch_roles_and_user', 1 );
|
||||
foreach ( $sites as $site ) {
|
||||
|
||||
// Switch site.
|
||||
switch_to_blog( $site->blog_id );
|
||||
|
||||
// Check for upgrade.
|
||||
$site_upgrade = acf_has_upgrade();
|
||||
|
||||
// Restore site.
|
||||
// Ideally, we would switch back to the original site at after looping, however,
|
||||
// the restore_current_blog() is needed to modify global vars.
|
||||
restore_current_blog();
|
||||
|
||||
// Check if upgrade was found.
|
||||
if ( $site_upgrade ) {
|
||||
$upgrade = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
add_action( 'switch_blog', 'wp_switch_roles_and_user', 1, 2 );
|
||||
}
|
||||
|
||||
// Bail early if no upgrade is needed.
|
||||
if ( ! $upgrade ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add notice.
|
||||
add_action( 'network_admin_notices', array( $this, 'network_admin_notices' ) );
|
||||
|
||||
// Add page.
|
||||
$page = add_submenu_page(
|
||||
'index.php',
|
||||
__( 'Upgrade Database', 'acf' ),
|
||||
__( 'Upgrade Database', 'acf' ),
|
||||
acf_get_setting( 'capability' ),
|
||||
'acf-upgrade-network',
|
||||
array( $this, 'network_admin_html' )
|
||||
);
|
||||
add_action( "load-$page", array( $this, 'network_admin_load' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* admin_load
|
||||
*
|
||||
* Runs during the loading of the admin page.
|
||||
*
|
||||
* @date 24/8/18
|
||||
* @since 5.7.4
|
||||
*
|
||||
* @param type $var Description. Default.
|
||||
* @return type Description.
|
||||
*/
|
||||
function admin_load() {
|
||||
|
||||
// remove prompt
|
||||
remove_action( 'admin_notices', array( $this, 'admin_notices' ) );
|
||||
|
||||
// Enqueue core script.
|
||||
acf_enqueue_script( 'acf' );
|
||||
}
|
||||
|
||||
/**
|
||||
* network_admin_load
|
||||
*
|
||||
* Runs during the loading of the network admin page.
|
||||
*
|
||||
* @date 24/8/18
|
||||
* @since 5.7.4
|
||||
*
|
||||
* @param type $var Description. Default.
|
||||
* @return type Description.
|
||||
*/
|
||||
function network_admin_load() {
|
||||
|
||||
// remove prompt
|
||||
remove_action( 'network_admin_notices', array( $this, 'network_admin_notices' ) );
|
||||
|
||||
// Enqueue core script.
|
||||
acf_enqueue_script( 'acf' );
|
||||
}
|
||||
|
||||
/**
|
||||
* admin_notices
|
||||
*
|
||||
* Displays the DB Upgrade prompt.
|
||||
*
|
||||
* @date 23/8/18
|
||||
* @since 5.7.3
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function admin_notices() {
|
||||
|
||||
// vars
|
||||
$view = array(
|
||||
'button_text' => __( 'Upgrade Database', 'acf' ),
|
||||
'button_url' => admin_url( 'index.php?page=acf-upgrade' ),
|
||||
'confirm' => true,
|
||||
);
|
||||
|
||||
// view
|
||||
acf_get_view( 'html-notice-upgrade', $view );
|
||||
}
|
||||
|
||||
/**
|
||||
* network_admin_notices
|
||||
*
|
||||
* Displays the DB Upgrade prompt on a multi site.
|
||||
*
|
||||
* @date 23/8/18
|
||||
* @since 5.7.3
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function network_admin_notices() {
|
||||
|
||||
// vars
|
||||
$view = array(
|
||||
'button_text' => __( 'Review sites & upgrade', 'acf' ),
|
||||
'button_url' => network_admin_url( 'index.php?page=acf-upgrade-network' ),
|
||||
'confirm' => false,
|
||||
);
|
||||
|
||||
// view
|
||||
acf_get_view( 'html-notice-upgrade', $view );
|
||||
}
|
||||
|
||||
/**
|
||||
* admin_html
|
||||
*
|
||||
* Displays the HTML for the admin page.
|
||||
*
|
||||
* @date 24/8/18
|
||||
* @since 5.7.4
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function admin_html() {
|
||||
acf_get_view( 'html-admin-page-upgrade' );
|
||||
}
|
||||
|
||||
/**
|
||||
* network_admin_html
|
||||
*
|
||||
* Displays the HTML for the network upgrade admin page.
|
||||
*
|
||||
* @date 24/8/18
|
||||
* @since 5.7.4
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function network_admin_html() {
|
||||
acf_get_view( 'html-admin-page-upgrade-network' );
|
||||
}
|
||||
}
|
||||
|
||||
// instantiate
|
||||
acf_new_instance( 'ACF_Admin_Upgrade' );
|
||||
|
||||
endif; // class_exists check
|
||||
|
||||
|
Reference in New Issue
Block a user