blog_id != $perfmatters_network['default']) { $option_names = array( 'perfmatters_options', 'perfmatters_tools' ); foreach($option_names as $option_name) { //clear selected blog previous option delete_blog_option($blog->blog_id, $option_name); //grab new option from default blog $new_option = get_blog_option($perfmatters_network['default'], $option_name); //remove options we don't want to copy if($option_name == 'perfmatters_option') { unset($new_option['cdn']['cdn_url']); } //update selected blog with default option update_blog_option($blog->blog_id, $option_name, $new_option); } //Default Settings Updated Notice echo "

" . __('Default settings applied!', 'perfmatters') . "

"; } else { //Can't Apply to Network Default echo "

" . __('Select a site that is not already the Network Default.', 'perfmatters') . "

"; } } else { //Network Default Not Set echo "

" . __('Network Default not set.', 'perfmatters') . "

"; } } else { //Blog Not Found Notice echo "

" . __('Error: Blog Not Found.', 'perfmatters') . "

"; } } } elseif(isset($_POST['perfmatters_apply_defaults_all'])) { check_admin_referer('perfmatters-network-apply'); $perfmatters_network = get_site_option('perfmatters_network'); if(!empty($perfmatters_network['default'])) { $sites = array_map('get_object_vars', get_sites(array('deleted' => 0, 'number' => 1000))); if(is_array($sites) && $sites !== array()) { $update_count = 0; foreach($sites as $site) { $apply = perfmatters_apply_defaults_to_blog($site['blog_id'], $perfmatters_network['default']); if($apply) { $update_count++; } } if($update_count > 0) { //default settings applied echo "

" . __('Default settings applied!', 'perfmatters') . "

"; } } else { //no sites available echo "

" . __('No available sites found.', 'perfmatters') . "

"; } } else { //network default not set echo "

" . __('Network Default not set.', 'perfmatters') . "

"; } } //Options Updated if(isset($_GET['updated'])) { echo "

" . __('Options saved.', 'perfmatters') . "

"; } echo "
"; settings_fields('perfmatters_network'); perfmatters_settings_section('perfmatters_network', 'perfmatters_network', 'dashicons-networking'); submit_button(); echo "
"; echo "
"; echo '
'; echo "

" . __('Apply Default Settings', 'perfmatters') . "

"; wp_nonce_field('perfmatters-network-apply', '_wpnonce', true, true); echo "

" . __('Select a site from the dropdown and click to apply the settings from your network default (above).', 'perfmatters') . "

"; echo ""; echo ""; echo "
"; echo "

" . __('Apply the settings from your network default to all sites. Depending on the amount, this may take a while.', 'perfmatters') . "

"; echo ""; echo '
'; echo "
"; //apply defaults to blog function perfmatters_apply_defaults_to_blog($blog_id, $network_default) { $blog = get_blog_details($blog_id); if($blog && !empty($network_default)) { if($blog->blog_id != $network_default) { $option_names = array( 'perfmatters_options', 'perfmatters_tools' ); foreach($option_names as $option_name) { //clear selected blog previous option delete_blog_option($blog->blog_id, $option_name); //grab new option from default blog $new_option = get_blog_option($network_default, $option_name); //remove options we don't want to copy if($option_name == 'perfmatters_options') { unset($new_option['cdn']['cdn_url']); } //update selected blog with default option update_blog_option($blog->blog_id, $option_name, $new_option); } return true; } } return false; }