<?php if (!defined('ABSPATH')) { exit; } if (!class_exists('ACF_Admin_Upgrade')) { class ACF_Admin_Upgrade { function __construct() { add_action('admin_menu', array($this, 'admin_menu'), 20); if (is_multisite()) { add_action('network_admin_menu', array($this, 'network_admin_menu'), 20); } } function admin_menu() { if (acf_has_upgrade()) { add_action('admin_notices', array($this, 'admin_notices')); $page = add_submenu_page('index.php', __('Upgrade Database', 'acf'), __('Upgrade Database', 'acf'), acf_get_setting('capability'), 'acf-upgrade', array($this, 'admin_html')); add_action('load-' . $page, array($this, 'admin_load')); } } function network_admin_menu() { $upgrade = false; $sites = get_sites(array('number' => 0)); if ($sites) { remove_action('switch_blog', 'wp_switch_roles_and_user', 1); foreach ($sites as $site) { switch_to_blog($site->blog_id); $site_upgrade = acf_has_upgrade(); restore_current_blog(); if ($site_upgrade) { $upgrade = true; break; } } add_action('switch_blog', 'wp_switch_roles_and_user', 1, 2); } if (!$upgrade) { return; } add_action('network_admin_notices', array($this, 'network_admin_notices')); $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')); } function admin_load() { remove_action('admin_notices', array($this, 'admin_notices')); acf_enqueue_script('acf'); } function network_admin_load() { remove_action('network_admin_notices', array($this, 'network_admin_notices')); acf_enqueue_script('acf'); } function admin_notices() { $view = array('button_text' => __('Upgrade Database', 'acf'), 'button_url' => admin_url('index.php?page=acf-upgrade'), 'confirm' => true); acf_get_view('html-notice-upgrade', $view); } function network_admin_notices() { $view = array('button_text' => __('Review sites & upgrade', 'acf'), 'button_url' => network_admin_url('index.php?page=acf-upgrade-network'), 'confirm' => false); acf_get_view('html-notice-upgrade', $view); } function admin_html() { acf_get_view('html-admin-page-upgrade'); } function network_admin_html() { acf_get_view('html-admin-page-upgrade-network'); } } acf_new_instance('ACF_Admin_Upgrade'); }