advert_multisite_start(); } public function advert_multisite_start(){ global $advert_network_options; $main_site_id = $this->advert_get_main_blog_id(); $advert_network_options = (is_array(get_blog_option($main_site_id, 'advert_network_setup')) ? get_blog_option($main_site_id, 'advert_network_setup') : []); //add network menu if(is_admin()){ //add_action('plugins_loaded', array($this, 'advert_multisite_network_menus')); add_action('network_admin_menu', array($this, 'advert_create_network_menu')); add_action( 'admin_init', array( $this, 'page_init' ) ); } } public function advert_create_network_menu(){ //network level advert page add_menu_page( __( 'AdVert', 'ADVERT_TEXTDOMAIN' ), __( 'AdVert', 'ADVERT_TEXTDOMAIN' ), 'manage_network', 'advert', array( $this, 'create_network_setup'), '' ); //network level advert page submenus add_submenu_page('advert', __( 'AdVert Network Setup', 'ADVERT_TEXTDOMAIN' ), __( 'Network Setup', 'ADVERT_TEXTDOMAIN' ), 'manage_network', 'advert', array( $this, 'create_network_setup')); } public function create_network_setup(){ // Set class property $this->options = get_option( 'advert_network_setup' ); //display settings messages settings_errors(); //get current screen and set option name global $currentScreen; $currentScreen = '_network_setup'; ?> 'advert_network_allow_sites', 'option1' => __('Connected AdVert Network', 'ADVERT_TEXTDOMAIN'), 'option2' => __('Independent AdVert Network', 'ADVERT_TEXTDOMAIN')) ); $default_site = $this->advert_get_main_blog_id(); $blog_details = get_blog_details($default_site); add_settings_field( 'advert_network_set_default_site', // ID __( 'Set default site for your network (optional)', 'ADVERT_TEXTDOMAIN' ), // Title array( $this, 'textbox_callback' ), // Callback 'advert-network-setup', // Page 'advert_setup_options_s1', // Section $args = array ('label_for' => 'advert_network_set_default_site', 'type' => 'number', 'minvalue' => 1, 'text'=> sprintf( __('The default site will always be %s (%s) unless you add a different default site. If using a Connected AdVert Network, your default site will be used to manage advertisements and settings across all sites.', 'ADVERT_TEXTDOMAIN'), $blog_details->blogname, $blog_details->blog_id)) ); if( $allow_sites_network_option == 'Independent AdVert Network' ){ add_settings_field( 'advert_network_disable_independent_sites', // ID __( 'Disable AdVert for the following sites', 'ADVERT_TEXTDOMAIN' ), // Title array( $this, 'independent_checkbox_callback' ), // Callback 'advert-network-setup', // Page 'advert_setup_options_s1', // Section $args = array ('label_for' => 'advert_network_disable_independent_sites') ); if( $disabled_sites_network_option ){ add_settings_field( 'advert_network_control_disabled_independent_sites', // ID __( 'Use Connected AdVert Network for sites that are disabled', 'ADVERT_TEXTDOMAIN' ), // Title array( $this, 'checkbox_callback' ), // Callback 'advert-network-setup', // Page 'advert_setup_options_s1', // Section $args = array ('label_for' => 'advert_network_control_disabled_independent_sites') ); } add_settings_field( 'advert_network_empty_independent_sites', // ID __( 'Use Connected AdVert Network for sites that have no active campiagns', 'ADVERT_TEXTDOMAIN' ), // Title array( $this, 'checkbox_callback' ), // Callback 'advert-network-setup', // Page 'advert_setup_options_s1', // Section $args = array ('label_for' => 'advert_network_empty_independent_sites') ); }//end if independent advert network } //infobox public function print_section_info_network_s1() { echo '' . __( 'Choose the type of AdVert Network', 'ADVERT_TEXTDOMAIN' ) . ''; } public function print_section_info_setup_s1() { echo '' . __( 'Choose the type of AdVert Network for all sites', 'ADVERT_TEXTDOMAIN' ) . ''; } // Textboxes public function textbox_callback(array $args) { global $currentScreen; $textbox_id = $args['label_for']; $type = array_key_exists('type', $args) ? $args['type'] : 'text'; $text = ( array_key_exists('text', $args) ? '

' . $args['text'] . '

' : '' ); $textbox_options = get_option('advert'.$currentScreen); $minValue = ( array_key_exists('minvalue', $args) ? 'min="' . $args['minvalue'] . '"' : '' ); printf( ' '.$text, isset( $textbox_options[$textbox_id] ) ? esc_attr( $textbox_options[$textbox_id] ) : '' ); } // Textarea public function textarea_callback(array $args) { global $currentScreen; $textarea_id = $args['label_for']; $text = ( array_key_exists('text', $args) ? '

' . $args['text'] . '

' : '' ); $textarea_options = get_option('advert'.$currentScreen); printf( ''.$text, isset( $textarea_options[$textarea_id] ) ? esc_attr( $textarea_options[$textarea_id] ) : '' ); } // Selection public function select_callback(array $selectOptions) { global $currentScreen; $select_id = $selectOptions['label_for']; $text = ( array_key_exists('text', $selectOptions) ? '' : '' ); $select_options = get_option('advert'.$currentScreen); $howmany = sizeof($selectOptions); $count = 1; $selected = ''; $html = ''; echo $html.$text; } // Checkbox public function checkbox_callback(array $args) { global $currentScreen; $checkbox_id = $args['label_for']; $checkbox_options = get_option('advert'.$currentScreen); $checked = ( isset($checkbox_options[$checkbox_id]) && intval($checkbox_options[$checkbox_id]) === 1 ? $checked = 1 : $checked = 0 ); $text = ( array_key_exists('text', $args) ? '' : '' ); $warning = ( array_key_exists('warning', $args) ? '' : '' ); $warningClass = ( !empty($warning) ? $warningClass = 'class="hide-if-no-js advert-cp-warning"' : '' ); $html = ''; echo $html.$text.$warning; } // Radio public function radio_callback(array $radioOptions) { global $currentScreen; $radio_id = $radioOptions['label_for']; $text = ( array_key_exists('text', $args) ? '

' . $args['text'] . '

' : '' ); $radio_options = get_option('advert'.$currentScreen); $howmany = sizeof($radioOptions); $count = 1; $html = ''; while ($count < $howmany) { $html .= '
'; $count = $count + 1; } echo $html.$text; } public function restore_standard_locations_callback(array $args) { global $currentScreen; $checkbox_id = $args['label_for']; $checkbox_options = get_option('advert'.$currentScreen); if(isset($checkbox_options[$checkbox_id]) && $checkbox_options[$checkbox_id] === '1' && current_user_can('manage_options')){ $standard_locations = get_option('advert_standard_locations'); if(is_array($standard_locations)){ foreach($standard_locations as $key => $location){ if(get_post_status($location) && get_post_type($location) === 'advert-location' ){ wp_delete_post($location, true); } } } delete_option('advert_standard_locations'); require_once(ADVERT_PLUGIN_DIR . 'includes/class-advert-setup.php'); AdVert_Setup::create_standard_locations(); $text = ''; $warning = ''; $warningClass = ''; $checked = 0; } else{ $checked = 0; $text = ( array_key_exists('text', $args) ? '' : '' ); $warning = ( array_key_exists('warning', $args) ? '' : '' ); $warningClass = ( !empty($warning) ? $warningClass = 'class="hide-if-no-js advert-cp-warning"' : '' ); } $html = ''; echo $html.$text.$warning; } // Checkbox specific to empty advert database public function empty_advert_db_checkbox_callback(array $args) { global $currentScreen; $checkbox_id = $args['label_for']; $checkbox_options = get_option('advert'.$currentScreen); if(isset($checkbox_options[$checkbox_id]) && $checkbox_options[$checkbox_id] === '1' && current_user_can('manage_options')){ global $wpdb; $table_name = $wpdb->prefix . 'advert_logged'; $delete = $wpdb->query( "TRUNCATE TABLE $table_name " ); $checked = 0; } else{$checked = 0;} $warning = ''; $html = ''; echo $html.$warning; } // Checkbox post type public function checkbox_post_type_callback(array $args) { global $currentScreen; $checkbox_id = $args['label_for']; $checkbox_options = get_option('advert'.$currentScreen); $post_args = array( 'public' => true ); $post_types = get_post_types( $post_args ); echo '