adsns_options ) $this->adsns_activate(); if ( ! is_admin() ) { add_filter( 'the_content', array( $this, 'adsns_content' ) ); add_filter( 'comment_id_fields', array( $this, 'adsns_comments' ) ); } } /* Show ads after comment form */ function adsns_end_comment_ad() { global $adsns_count; if ( ! is_feed() && $adsns_count < $this->adsns_options['max_ads'] && $adsns_count < $this->adsns_options['max_homepostads'] ) { echo '
' . $this->adsns_options['code'] . '
'; $this->adsns_options['num_show'] ++; /* Counting views */ update_option( 'adsns_settings', $this->adsns_options ); $adsns_count = $this->adsns_options['num_show']; } } /* Show ads after post on a single page */ function adsns_end_post_ad( $content ) { global $adsns_count; if ( ! is_feed() && is_single() && $adsns_count < $this->adsns_options['max_ads'] && $adsns_count < $this->adsns_options['max_homepostads'] ) { /* Checking if we are on a single page */ $content.= '
' . $this->adsns_options['code'] . '
'; /* Adding an ad code on page */ $this->adsns_options['num_show'] ++; /* Counting views */ update_option( 'adsns_settings', $this->adsns_options ); $adsns_count = $this->adsns_options['num_show']; } return $content; } /* Show ads after post on home page */ function adsns_end_home_post_ad( $content ) { global $adsns_count; if ( $adsns_count < $this->adsns_options['max_ads'] && $adsns_count < $this->adsns_options['max_homepostads'] ) { if ( ! is_feed() && ( is_home() || is_front_page() ) ) { $content .= '
' . $this->adsns_options['code'] . '
'; $this->adsns_options['num_show'] ++; /* Counting views */ update_option( 'adsns_settings', $this->adsns_options ); $adsns_count = $this->adsns_options['num_show']; /* Restore count value */ } } return $content; } /* Show ads in footer */ function adsns_end_footer_ad() { global $adsns_count; if ( ! is_feed() && $adsns_count < $this->adsns_options['max_ads'] && $adsns_count < $this->adsns_options['max_homepostads'] ) { echo ''; $this->adsns_options['num_show'] ++; /* Counting views */ update_option( 'adsns_settings', $this->adsns_options ); $adsns_count = $this->adsns_options['num_show']; /* Restore count value */ } } /* Add 'BWS Plugins' menu at the left side in administer panel */ function adsns_add_admin_menu() { bws_general_menu(); $settings = add_submenu_page( 'bws_panel', __( 'Google AdSense Settings', 'adsense-plugin' ), 'Google AdSense', 'manage_options', "adsense-plugin.php", array( $this, 'adsns_settings_page' ) ); add_action( 'load-' . $settings, array( $this, 'adsns_add_tabs' ) ); } function adsns_plugin_init() { require_once( dirname( __FILE__ ) . '/bws_menu/bws_include.php' ); bws_include_init( 'adsense-plugin/adsense-plugin.php' ); if ( empty( $this->adsns_plugin_info ) ) { if ( ! function_exists( 'get_plugin_data' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $this->adsns_plugin_info = get_plugin_data( dirname( __FILE__ ) . '/adsense-plugin.php' ); } /* Function check if plugin is compatible with current WP version */ bws_wp_min_version_check( 'adsense-plugin/adsense-plugin.php', $this->adsns_plugin_info, '3.8' ); /* Call register settings function */ if ( ! is_admin() || ( isset( $_GET['page'] ) && 'adsense-plugin.php' == $_GET['page'] ) ) { $this->adsns_activate(); } } /* Plugin localization */ function adsns_localization() { /* Internationalization */ load_plugin_textdomain( 'adsense-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); } function adsns_plugin_admin_init() { global $bws_plugin_info; if ( isset( $_GET['page'] ) && "adsense-plugin.php" == $_GET['page'] ) { if ( ! session_id() ) { session_start(); } } if ( empty( $bws_plugin_info ) ) $bws_plugin_info = array( 'id' => '80', 'version' => $this->adsns_plugin_info["Version"] ); } /* Creating a default options for showing ads. Starts on plugin activation. */ function adsns_activate() { global $adsns_count; if ( ! function_exists( 'get_plugin_data' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $this->adsns_plugin_info = get_plugin_data( dirname( __FILE__ ) . '/adsense-plugin.php' ); $adsns_options_defaults = array( 'plugin_option_version' => $this->adsns_plugin_info["Version"], 'widget_title' => '', 'publisher_id' => '', 'include_inactive_ads' => 1, 'display_settings_notice' => 1, 'first_install' => strtotime( "now" ), 'suggest_feature_banner' => 1 ); if ( ! get_option( 'adsns_settings' ) ) { add_option( 'adsns_settings', $adsns_options_defaults ); } $this->adsns_options = get_option( 'adsns_settings' ); $adsns_count = 0; /* Number of posts on home page */ /* Array merge incase this version has added new options */ if ( ! isset( $this->adsns_options['plugin_option_version'] ) || $this->adsns_options['plugin_option_version'] != $this->adsns_plugin_info["Version"] ) { $adsns_options_defaults['display_settings_notice'] = 0; $this->adsns_options = array_merge( $adsns_options_defaults, $this->adsns_options ); $this->adsns_options['plugin_option_version'] = $this->adsns_plugin_info["Version"]; update_option( 'adsns_settings', $this->adsns_options ); } } /* Google Asense API */ function adsns_client() { require_once( dirname( __FILE__ ) . '/google_api/autoload.php' ); $client = new Google_Client(); $client->setClientId( '903234641369-4mm0lqt76r0rracrdn2on3qrk6c554aa.apps.googleusercontent.com' ); $client->setClientSecret( 'Twlx072svotXexK5rvqC5bb-' ); $client->setScopes( array( 'https://www.googleapis.com/auth/adsense' ) ); $client->setRedirectUri( 'urn:ietf:wg:oauth:2.0:oob' ); $client->setAccessType( 'offline' ); $client->setDeveloperKey( 'AIzaSyBa4vT_9do8e7Yxv88EXle6546nFVGLHI8' ); $client->setApplicationName( $this->adsns_plugin_info['Name'] ); return $client; } /* Show ads on the home page / single page / post / custom post / categories page / tags page via Google AdSense API */ function adsns_content( $content ) { global $adsns_count; if ( $this->adsns_is_main_query && ! is_feed() && ( is_home() || is_front_page() || is_category() || is_tag() ) ) { $adsns_count = empty( $adsns_count ) ? 0 : $adsns_count; if ( $adsns_count > 2 ) { return $content; } if ( is_home() || is_front_page() ) { $adsns_area = 'home'; } if ( is_category() || is_tag() ) { $adsns_area = 'categories+tags'; } if ( isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ][ $adsns_count ] ) ) { $adsns_ad_unit = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ][ $adsns_count ]; $adsns_ad_unit_id = $adsns_ad_unit['id']; $adsns_ad_unit_position = $adsns_ad_unit['position']; $adsns_ad_unit_code = htmlspecialchars_decode( $adsns_ad_unit['code'] ); $adsns_count++; switch ( $adsns_ad_unit_position ) { case 'after': $adsns_ads = sprintf( '
%s
', $adsns_ad_unit_id, $adsns_ad_unit_code ); return $content . $adsns_ads; break; case 'before': $adsns_ads = sprintf( '
%s
', $adsns_ad_unit_id, $adsns_ad_unit_code ); return $adsns_ads . $content; break; default: return $content; break; } } return $content; } if ( $this->adsns_is_main_query && ! is_feed() && ( is_single() || is_page() ) ) { if ( is_single() ) { $adsns_area = 'posts+custom_posts'; } if ( is_page() ) { $adsns_area = 'pages'; } if ( isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ] ) ) { $adsns_ad_units = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ]; for ( $i = 0; $i < count( $adsns_ad_units ); $i++ ) { if ( isset( $adsns_ad_units[ $i ] ) ) { $adsns_ad_unit = $adsns_ad_units[ $i ]; $adsns_ad_unit_id = $adsns_ad_unit['id']; $adsns_ad_unit_position = $adsns_ad_unit['position']; $adsns_ad_unit_code = htmlspecialchars_decode( $adsns_ad_unit['code'] ); $adsns_count++; switch ( $adsns_ad_unit_position ) { case 'after': $adsns_ads = sprintf( '
%s
', $adsns_ad_unit_id, $adsns_ad_unit_code ); $content = $content . $adsns_ads; break; case 'before': $adsns_ads = sprintf( '
%s
', $adsns_ad_unit_id, $adsns_ad_unit_code ); $content = $adsns_ads . $content; break; default: break; } } } } } return $content; } /* Show ads after comment form via Google AdSense API */ function adsns_comments( $content ) { $adsns_area = ''; if ( is_single() ) { $adsns_area = 'posts+custom_posts'; } if ( is_page() ) { $adsns_area = 'pages'; } if ( isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ] ) ) { $adsns_ad_units = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ]; for ( $i = 0; $i < count( $adsns_ad_units ); $i++ ) { if ( isset( $adsns_ad_units[ $i ] ) ) { $adsns_ad_unit = $adsns_ad_units[ $i ]; $adsns_ad_unit_id = $adsns_ad_unit['id']; $adsns_ad_unit_position = $adsns_ad_unit['position']; $adsns_ad_unit_code = htmlspecialchars_decode( $adsns_ad_unit['code'] ); if ( $adsns_ad_unit_position == 'commentform' ) { $content .= sprintf( '
%s
', $adsns_ad_unit_id, $adsns_ad_unit_code ); } } } } return $content; } /* Main settings page */ function adsns_settings_page() { global $wp_version; $plugin_basename = plugin_basename( __FILE__ ); if ( ! isset( $_GET['action'] ) ) { if ( isset( $_POST['adsns_upgrade'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'adsns_nonce_name' ) ) { $adsns_new_options['plugin_option_version'] = $this->adsns_options['plugin_option_version']; $adsns_new_options['widget_title'] = $this->adsns_options['widget_title']; $this->adsns_options = $adsns_new_options; update_option( 'adsns_settings', $this->adsns_options ); } $adsns_current_tab = ( isset( $_GET['tab'] ) ) ? urlencode( $_GET['tab'] ) : 'home'; $adsns_form_action = $adsns_tab_url = ''; if ( isset( $_GET ) ) { unset( $_GET['page'] ); foreach ( $_GET as $action => $value ) { $adsns_form_action .= sprintf( '&%s=%s', $action, urlencode( $value ) ); } $adsns_tab_url = preg_replace( '/&tab=[\w\d+]+/', '', $adsns_form_action ); } $adsns_tabs = array( 'home' => array( 'tab' => array( 'title' => __( 'Home page', 'adsense-plugin' ), 'url' => sprintf( 'admin.php?page=adsense-plugin.php%s', $adsns_tab_url ) ), 'adunit_positions' => array( 'before' => __( 'Before the content', 'adsense-plugin' ), 'after' => __( 'After the content', 'adsense-plugin' ) ), 'adunit_positions_pro' => array( '1st_paragraph' => __( 'After the first paragraph (Available in Pro)', 'adsense-plugin' ), 'random_paragraph' => __( 'After a random paragraph (Available in Pro)', 'adsense-plugin' ) ), 'max_ads' => 3 ), 'pages' => array( 'tab' => array( 'title' => __( 'Pages', 'adsense-plugin' ), 'url' => sprintf( 'admin.php?page=adsense-plugin.php&tab=pages%s', $adsns_tab_url ) ), 'adunit_positions' => array( 'before' => __( 'Before the content', 'adsense-plugin' ), 'after' => __( 'After the content', 'adsense-plugin' ), 'commentform' => __( 'Below the comment form', 'adsense-plugin' ) ), 'adunit_positions_pro' => array( '1st_paragraph' => __( 'After the first paragraph (Available in Pro)', 'adsense-plugin' ), 'random_paragraph' => __( 'After a random paragraph (Available in Pro)', 'adsense-plugin' ) ), 'max_ads' => 3 ), 'posts+custom_posts' => array( 'tab' => array( 'title' => __( 'Posts / Custom posts', 'adsense-plugin' ), 'url' => sprintf( 'admin.php?page=adsense-plugin.php&tab=posts+custom_posts%s', $adsns_tab_url ) ), 'adunit_positions' => array( 'before' => __( 'Before the content', 'adsense-plugin' ), 'after' => __( 'After the content', 'adsense-plugin' ), 'commentform' => __( 'Below the comment form', 'adsense-plugin' ) ), 'adunit_positions_pro' => array( '1st_paragraph' => __( 'After the first paragraph (Available in Pro)', 'adsense-plugin' ), 'random_paragraph' => __( 'After a random paragraph (Available in Pro)', 'adsense-plugin' ) ), 'max_ads' => 3 ), 'categories+tags' => array( 'tab' => array( 'title' => __( 'Categories / Tags', 'adsense-plugin' ), 'url' => sprintf( 'admin.php?page=adsense-plugin.php&tab=categories+tags%s', $adsns_tab_url ) ), 'adunit_positions' => array( 'before' => __( 'Before the content', 'adsense-plugin' ), 'after' => __( 'After the content', 'adsense-plugin' ) ), 'adunit_positions_pro' => array( '1st_paragraph' => __( 'After the first paragraph (Available in Pro)', 'adsense-plugin' ), 'random_paragraph' => __( 'After a random paragraph (Available in Pro)', 'adsense-plugin' ) ), 'max_ads' => 3 ), 'search' => array( 'tab' => array( 'title' => __( 'Search results', 'adsense-plugin' ), 'url' => sprintf( 'admin.php?page=adsense-plugin.php&tab=search%s', $adsns_tab_url ) ), 'adunit_positions' => array( 'before' => __( 'Before the content', 'adsense-plugin' ), 'after' => __( 'After the content', 'adsense-plugin' ) ), 'adunit_positions_pro' => array( '1st_paragraph' => __( 'After the first paragraph (Available in Pro)', 'adsense-plugin' ), 'random_paragraph' => __( 'After a random paragraph (Available in Pro)', 'adsense-plugin' ) ), 'max_ads' => 3 ), 'widget' => array( 'tab' => array( 'title' => __( 'Widget', 'adsense-plugin' ), 'url' => sprintf( 'admin.php?page=adsense-plugin.php&tab=widget%s', $adsns_tab_url ) ), 'adunit_positions' => array( 'static' => __( 'Static', 'adsense-plugin' ) ), 'adunit_positions_pro' => array( 'fixed' => __( 'Fixed (Available in Pro)', 'adsense-plugin' ), ), 'max_ads' => 1 ) ); $adsns_table_data = array(); $adsns_adunit_types = array( 'TEXT' => __( 'Text', 'adsense-plugin' ), 'IMAGE' => __( 'Image', 'adsense-plugin' ), 'TEXT_IMAGE' => __( 'Text/Image', 'adsense-plugin' ), 'LINK' => __( 'Link', 'adsense-plugin' ) ); $adsns_adunit_statuses = array( 'NEW' => __( 'New', 'adsense-plugin' ), 'ACTIVE' => __( 'Active', 'adsense-plugin' ), 'INACTIVE' => __( 'Idle', 'adsense-plugin' ) ); $adsns_adunit_sizes = array( 'RESPONSIVE' => __( 'Responsive', 'adsense-plugin' ) ); $adsns_client = $this->adsns_client(); $adsns_blog_prefix = '_' . get_current_blog_id(); if ( isset( $_POST['adsns_logout'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'adsns_nonce_name' ) ) { unset( $_SESSION[ 'adsns_authorization_code' . $adsns_blog_prefix ] ); unset( $this->adsns_options['authorization_code'] ); update_option( 'adsns_settings', $this->adsns_options ); } if ( isset( $_POST['adsns_authorization_code'] ) && ! empty( $_POST['adsns_authorization_code'] ) && check_admin_referer( plugin_basename(__FILE__), 'adsns_nonce_name' ) ) { try { $adsns_client->authenticate( $_POST['adsns_authorization_code'] ); $this->adsns_options['authorization_code'] = $_SESSION[ 'adsns_authorization_code' . $adsns_blog_prefix ] = $adsns_client->getAccessToken(); update_option( 'adsns_settings', $this->adsns_options ); } catch ( Exception $e ) {} } if ( ! isset( $_SESSION[ 'adsns_authorization_code' . $adsns_blog_prefix ] ) && isset( $this->adsns_options['authorization_code'] ) ) { $_SESSION[ 'adsns_authorization_code' . $adsns_blog_prefix ] = $this->adsns_options['authorization_code']; } if ( isset( $_SESSION[ 'adsns_authorization_code' . $adsns_blog_prefix ] ) ) { $adsns_client->setAccessToken( $_SESSION[ 'adsns_authorization_code' . $adsns_blog_prefix ] ); } if ( $adsns_client->getAccessToken() ) { $adsns_adsense = new Google_Service_AdSense( $adsns_client ); $adsns_adsense_accounts = $adsns_adsense->accounts; $adsns_adsense_adclients = $adsns_adsense->adclients; $adsns_adsense_adunits = $adsns_adsense->adunits; try { $adsns_list_accounts = $adsns_adsense_accounts->listAccounts()->getItems(); $adsns_publisher_id = $adsns_list_accounts[0]['id']; $this->adsns_options['publisher_id'] = $adsns_publisher_id; /* Start fix old options */ if ( isset( $this->adsns_options['adunits'] ) && ! isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ] ) ) { $adsns_temp_adunits = $this->adsns_options['adunits']; unset( $this->adsns_options['adunits'] ); $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ] = $adsns_temp_adunits; } /* End fix old options */ update_option( 'adsns_settings', $this->adsns_options ); try { $adsns_list_adclients = $adsns_adsense_adclients->listAdclients()->getItems(); $adsns_ad_client = null; foreach ( $adsns_list_adclients as $adsns_list_adclient ) { if ( $adsns_list_adclient['productCode'] == 'AFC' ) { $adsns_ad_client = $adsns_list_adclient['id']; } } if ( $adsns_ad_client ) { try { $adsns_adunits = $adsns_adsense_adunits->listAdunits( $adsns_ad_client )->getItems(); foreach ( $adsns_adunits as $adsns_adunit ) { $adsns_adunit_type = $adsns_adunit_types[ $adsns_adunit->getContentAdsSettings()->getType() ]; $adsns_adunit_size = preg_replace( '/SIZE_([\d]+)_([\d]+)/', '$1x$2', $adsns_adunit->getContentAdsSettings()->getSize() ); if ( array_key_exists( $adsns_adunit_size, $adsns_adunit_sizes ) ) { $adsns_adunit_size = $adsns_adunit_sizes[ $adsns_adunit_size ]; } $adsns_adunit_status = $adsns_adunit->getStatus(); if ( array_key_exists( $adsns_adunit_status, $adsns_adunit_statuses ) ) { $adsns_adunit_status = $adsns_adunit_statuses[ $adsns_adunit_status ]; } $adsns_table_data[ $adsns_adunit->getName() ] = array( 'id' => $adsns_adunit->getId(), 'name' => $adsns_adunit->getName(), 'code' => $adsns_adunit->getCode(), 'summary' => sprintf( '%s, %s', $adsns_adunit_type, $adsns_adunit_size ), 'status' => $adsns_adunit_status, 'status_value' => $adsns_adunit['status'] ); } } catch ( Google_Service_Exception $e ) { $adsns_err = $e->getErrors(); $adsns_api_notice = array( 'class' => 'error adsns_api_notice below-h2', 'message' => sprintf( '%s %s %s', __( 'AdUnits Error:', 'adsense-plugin' ), $adsns_err[0]['message'], sprintf( __( 'Create account in %s', 'adsense-plugin' ), 'Google AdSense.' ) ) ); } } } catch ( Google_Service_Exception $e ) { $adsns_err = $e->getErrors(); $adsns_api_notice = array( 'class' => 'error adsns_api_notice below-h2', 'message' => sprintf( '%s %s %s', __( 'AdClient Error:', 'adsense-plugin' ), $adsns_err[0]['message'], sprintf( __( 'Create account in %s', 'adsense-plugin' ), 'Google AdSense.' ) ) ); } } catch ( Google_Service_Exception $e ) { $adsns_err = $e->getErrors(); $adsns_api_notice = array( 'class' => 'error adsns_api_notice below-h2', 'message' => sprintf( '%s %s %s', __( 'Account Error:', 'adsense-plugin' ), $adsns_err[0]['message'], sprintf( __( 'Create account in %s', 'adsense-plugin' ), 'Google AdSense.' ) ) ); } catch ( Exception $e ) { $adsns_api_notice = array( 'class' => 'error adsns_api_notice below-h2', 'message' => $e->getMessage() ); } } if ( isset( $_POST['adsns_authorization_code'] ) && isset( $_POST['adsns_authorize'] ) && ! $adsns_client->getAccessToken() && check_admin_referer( plugin_basename( __FILE__ ), 'adsns_nonce_name' ) ) { $adsns_api_notice = array( 'class' => 'error adsns_api_notice below-h2', 'message' => __( 'Invalid authorization code. Please, try again.', 'adsense-plugin' ) ); } if ( isset( $_POST['adsns_save_settings'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'adsns_nonce_name' ) ) { $adsns_old_options = $this->adsns_options; $adsns_area = isset( $_POST['adsns_area'] ) ? $_POST['adsns_area'] : ''; if ( array_key_exists( $adsns_area, $adsns_tabs ) ) { $adsns_save_settings = true; $this->adsns_options['include_inactive_ads'] = ( ! empty( $_POST['adsns_include_inactive_id'] ) ) ? 1 : 0; if ( isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ] ) ) { $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ] = array(); } if ( isset( $_POST['adsns_adunit_ids'] ) ) { $adsns_adunit_ids = array_slice( $_POST['adsns_adunit_ids'], 0, $adsns_tabs[ $adsns_area ]['max_ads'] ); $adsns_adunit_positions = isset( $_POST['adsns_adunit_position'] ) ? $_POST['adsns_adunit_position'] : array(); if ( isset( $adsns_publisher_id ) && isset( $adsns_ad_client ) ) { foreach ( $adsns_adunit_ids as $adsns_adunit_id ) { try { $adsns_adunit_code = $adsns_adsense_adunits->getAdCode( $adsns_ad_client, $adsns_adunit_id )->getAdCode(); $adsns_adunit_position = array_key_exists( $adsns_adunit_id, $adsns_adunit_positions ) ? $adsns_adunit_positions[ $adsns_adunit_id ] : NULL; $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ][] = array( 'id' => $adsns_adunit_id, 'position' => $adsns_adunit_position, 'code' => htmlspecialchars( $adsns_adunit_code ) ); } catch ( Google_Service_Exception $e ) { $adsns_err = $e->getErrors(); $adsns_save_settings = false; $adsns_settings_notices[] = array( 'class' => 'error below-h2', 'message' => sprintf( '%s
%s
%s', sprintf( __( 'An error occurred while obtaining the code for the block %s.', 'adsense-plugin' ), sprintf( '%s', $adsns_adunit_id ) ), $adsns_err[0]['message'], __( "Settings are not saved.", 'adsense-plugin' ) ) ); } } } } if ( $adsns_area != 'widget' ) { if ( isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) ) { if ( count( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) > 0 && count( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_area ] ) > 2 ) { $adsns_save_settings = false; $adsns_settings_notices[] = array( 'class' => 'error below-h2', 'message' => sprintf( '%s
%s
%s', sprintf( __( "The maximum number of ad blocks on the page cannot be more than 3 ad blocks (%s).", 'adsense-plugin' ), sprintf( '%s', __( 'Learn more', 'adsense-plugin' ) ) ), sprintf( __( 'Please select a smaller number of ad blocks or disable the ad block display in the %s tab.', 'adsense-plugin' ), sprintf( '"%s"', __( 'Widget', 'adsense-plugin' ) ) ), __( "Settings are not saved.", 'adsense-plugin' ) ) ); } } } else { if ( isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) && count( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) > 0 ) { $adsns_crowded_tabs = ''; $adsns_crowded_tabs_count = 0; foreach ( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ] as $adsns_tab => $adsns_adunit ) { if ( $adsns_tab == 'widget' ) { continue; } if ( count( $adsns_adunit ) > 2 ) { $adsns_crowded_tabs .= sprintf( '"%s" (%s %s), ', $adsns_tabs[ $adsns_tab ]['tab']['title'], count( $adsns_adunit ), __( 'ad blocks', 'adsense-plugin' ) ); $adsns_crowded_tabs_count++; } } $adsns_crowded_tabs = substr( $adsns_crowded_tabs, 0, -2 ); if ( $adsns_crowded_tabs_count > 0 ) { if ( $adsns_crowded_tabs_count <= 1 ) { $adsns_settings_notices[] = array( 'class' => 'error below-h2', 'message' => sprintf( '%s
%s
%s', sprintf( __( "The maximum number of ad blocks on the page cannot be more than 3 ad blocks (%s).", 'adsense-plugin' ), sprintf( '%s', __( 'Learn more', 'adsense-plugin' ) ) ), sprintf( __( 'To display the ad block in widget, please set a smaller number of ad blocks in the %s tab.', 'adsense-plugin' ), sprintf( '%s', $adsns_crowded_tabs ) ), __( "Settings are not saved.", 'adsense-plugin' ) ) ); } else { $adsns_settings_notices[] = array( 'class' => 'error below-h2', 'message' => sprintf( '%s
%s
%s', sprintf( __( "The maximum number of ad blocks on the page cannot be more than 3 ad blocks (%s).", 'adsense-plugin' ), sprintf( '%s', __( 'Learn more', 'adsense-plugin' ) ) ), sprintf( __( 'To display the ad block in widget, please set a smaller number of ad blocks in tabs: %s.', 'adsense-plugin' ), sprintf( '%s', $adsns_crowded_tabs ) ), __( "Settings are not saved.", 'adsense-plugin' ) ) ); } $adsns_save_settings = false; } } } if ( $adsns_save_settings ) { update_option( 'adsns_settings', $this->adsns_options ); $adsns_settings_notices[] = array( 'class' => 'updated fade below-h2', 'message' => __( "Settings saved.", 'adsense-plugin' ) ); } else { $this->adsns_options = $adsns_old_options; } } else { $adsns_settings_notices[] = array( 'class' => 'error below-h2', 'message' => __( "Settings are not saved.", 'adsense-plugin' ) ); } } $adsns_hidden_idle_notice = false; if ( 1 != $this->adsns_options['include_inactive_ads'] && isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_current_tab ] ) ) { $current_ads = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_current_tab ]; if ( ! empty( $current_ads ) ) { foreach ( $adsns_table_data as $adname => $addata ) { foreach ( $current_ads as $current_ad ) { if ( $current_ad['id'] == $addata['id'] ) { if ( 'INACTIVE' == $addata['status_value'] ) { $adsns_hidden_idle_notice = true; break(2); } break; } } } } } } /* GO PRO */ if ( isset( $_GET['action'] ) && 'go_pro' == $_GET['action'] ) { $go_pro_result = bws_go_pro_tab_check( $plugin_basename ); if ( ! empty( $go_pro_result['error'] ) ) { $adsns_settings_notices[] = array( 'class' => 'error below-h2', 'message' => $go_pro_result['error'] ); } } ?>

%s

', $adsns_api_notice['class'], $adsns_api_notice['message'] ); } if ( isset( $adsns_settings_notices ) ) { foreach ( $adsns_settings_notices as $adsns_settings_notice ) { printf( '

%s

', $adsns_settings_notice['class'], $adsns_settings_notice['message'] ); } } bws_show_settings_notice(); if ( ! isset( $_GET['action'] ) ) { ?>

getAccessToken() ) { ?>
setState( $adsns_state ); $_SESSION[ 'gglstmp_state' . $adsns_blog_prefix ] = $adsns_client; $adsns_auth_url = $adsns_client->createAuthUrl(); ?>
adsns_options['include_inactive_ads'] ) && 1 == $this->adsns_options['include_inactive_ads'] ) echo 'checked="checked"'; ?> value="1">
>
>
>

%s %s %s.', __( 'Please note:', 'adsense-plugin' ), __( 'The maximum number of ad blocks on the page cannot be more than 3 ad blocks.', 'adsense-plugin' ), __( 'Learn more', 'adsense-plugin' ) ); ?>

%s', __( 'widget page', 'adsense-plugin' ) ) ); printf( ' %s Pro.', __( 'An opportunity to add several widgets is available in the', 'adsense-plugin' ), $this->adsns_plugin_info["Version"], $wp_version ); ?>

%s', __( 'Google AdSense', 'adsense-plugin' ) ) ); ?>
%s', $adsns_form_action, __( 'reload the page', 'adsense-plugin' ) ) ) ; ?>

adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_current_tab ] ) ) { foreach ( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ][ $adsns_current_tab ] as $adsns_table_adunit ) { $adsns_table_adunits[ $adsns_table_adunit['id'] ] = $adsns_table_adunit['position']; } } $adsns_lt = new Adsns_List_Table( $this->adsns_options ); $adsns_lt->adsns_table_data = $adsns_table_data; $adsns_lt->adsns_table_adunits = ( isset( $adsns_table_adunits ) && is_array( $adsns_table_adunits ) ) ? $adsns_table_adunits : array(); $adsns_lt->adsns_adunit_positions = $adsns_tabs[ $adsns_current_tab ]['adunit_positions']; $adsns_lt->adsns_adunit_positions_pro = $adsns_tabs[ $adsns_current_tab ]['adunit_positions_pro']; $adsns_lt->prepare_items(); echo '
'; $adsns_lt->display(); echo "
"; ?>

adsns_plugin_info, $plugin_basename, 'adsense-plugin.php', 'adsense-pro.php', 'adsense-pro/adsense-pro.php', 'google-adsense', '2887beb5e9d5e26aebe6b7de9152ad1f', '80', isset( $go_pro_result['pro_plugin_is_activated'] ) ); } bws_plugin_reviews_block( $this->adsns_plugin_info['Name'], 'adsense-plugin' ); ?> adsns_plugin_info["Version"] ); wp_enqueue_style( 'adsns_admin_css', plugins_url( 'css/style.css', __FILE__ ), false, $this->adsns_plugin_info["Version"] ); bws_enqueue_settings_scripts(); if ( isset( $_GET['action'] ) && 'custom_code' == $_GET['action'] ) bws_plugins_include_codemirror(); } } /* Stylesheets for ads */ function adsns_head() { wp_enqueue_style( 'adsns_css', plugins_url( 'css/adsns.css', __FILE__ ), false, $this->adsns_plugin_info["Version"] ); } /* Display notice in the main dashboard page / plugins page */ function adsns_plugin_notice() { global $hook_suffix; if ( 'plugins.php' == $hook_suffix ) { if ( isset( $this->adsns_options['first_install'] ) && strtotime( '-1 week' ) > $this->adsns_options['first_install'] ) bws_plugin_banner( $this->adsns_plugin_info, 'adsns', 'google-adsense', '6057da63c4951b1a7b03296e54ed6d02', '80', '//ps.w.org/adsense-plugin/assets/icon-128x128.png' ); bws_plugin_banner_to_settings( $this->adsns_plugin_info, 'adsns_settings', 'adsense-plugin', 'admin.php?page=adsense-plugin.php' ); } if ( isset( $_GET['page'] ) && 'adsense-plugin.php' == $_GET['page'] ) { bws_plugin_suggest_feature_banner( $this->adsns_plugin_info, 'adsns_settings', 'adsense-plugin' ); } } /* *displays AdSense in widget *@return array() */ function adsns_widget_display() { global $adsns_count; $title = $this->adsns_options['widget_title']; if ( ! empty( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) ) { $adsns_ad_unit_id = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'][0]['id']; $adsns_ad_unit_code = htmlspecialchars_decode( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'][0]['code'] ); printf( '', $title, $adsns_ad_unit_id, $adsns_ad_unit_code ); } } /* *Register widget for use in sidebars. *Registers widget control callback for customizing options */ function adsns_register_widget() { if ( isset( $this->adsns_options['publisher_id'] ) && isset( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) && count( $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'] ) > 0 ) { $adsns_widget_positions = array( 'static' => __( 'Static', 'adsense-plugin' ), 'fixed' => __( 'Fixed', 'adsense-plugin' ), ); $adsns_widget = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'][0]; $adsns_id = substr( strstr( $adsns_widget['id'], ':' ), 1 ); $adsns_widget_position = isset( $adsns_widget['position'] ) ? $adsns_widget['position'] : 'static'; if ( $adsns_widget_position != 'static' ) { $adsns_widget_position = $this->adsns_options['adunits'][ $this->adsns_options['publisher_id'] ]['widget'][0]['position'] = 'static'; update_option( 'adsns_settings', $this->adsns_options ); } wp_register_sidebar_widget( 'adsns_widget', /* Unique widget id */ sprintf( 'AdSense: ID: %s, %s', $adsns_id, $adsns_widget_positions[ $adsns_widget_position ] ), array( $this, 'adsns_widget_display' ), /* Callback function */ array( 'description' => sprintf( '%s ID: %s, %s', __( 'Widget displays Google AdSense.', 'adsense-plugin' ), $adsns_id, $adsns_widget_positions[ $adsns_widget_position ] ) ) /* Options */ ); wp_register_widget_control( 'adsns_widget', /* Unique widget id */ sprintf( 'AdSense: ID: %s, %s', $adsns_id, $adsns_widget_positions[ $adsns_widget_position ] ), array( $this, 'adsns_widget_control' ) /* Callback function */ ); } } /* *Registers widget control callback for customizing options *@return array */ function adsns_widget_control() { if ( isset( $_POST["adsns-widget-submit"] ) ) { $this->adsns_options['widget_title'] = strip_tags( stripslashes( $_POST["adsns-widget-title"] ) ); update_option( 'adsns_settings', $this->adsns_options ); } $title = isset( $this->adsns_options['widget_title'] ) ? $this->adsns_options['widget_title'] : '' ; printf( '

', __( 'Title', 'adsense-plugin' ), $title ); ?>

%s %s', __( 'Please note:', 'adsense-plugin' ), sprintf( '%s', __( "Select ad block to display in the widget you can on the plugin settings page in the 'Widget' tab.", 'adsense-plugin' ) ) ); ?>

' . __( 'Settings', 'adsense-plugin' ) . ''; array_unshift( $links, $settings_link ); } } return $links; } function adsns_register_plugin_links( $links, $file ) { if ( $file == 'adsense-plugin/adsense-plugin.php' ) { if ( ! is_network_admin() ) $links[] = '' . __( 'Settings', 'adsense-plugin' ) . ''; $links[] = '' . __( 'FAQ', 'adsense-plugin' ) . ''; $links[] = '' . __( 'Support', 'adsense-plugin' ) . ''; } return $links; } /* add help tab */ function adsns_add_tabs() { $screen = get_current_screen(); $args = array( 'id' => 'adsns', 'section' => '200538919' ); bws_help_tab( $screen, $args ); } function adsns_loop_start( $content ) { global $wp_query; if ( is_main_query() && $content === $wp_query ) { $this->adsns_is_main_query = true; } } function adsns_loop_end( $content ) { $this->adsns_is_main_query = false; } } /* Class */ } if ( ! class_exists( 'Adsns_List_Table' ) ) { if ( ! class_exists( 'WP_List_Table' ) ) { require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); } class Adsns_List_Table extends WP_List_Table { public $adsns_table_data, $adsns_table_adunits, $adsns_adunit_positions, $adsns_adunit_positions_pro; private $include_inactive_ads, $adsns_options, $item_counter; function __construct( $options ) { $this->include_inactive_ads = $options['include_inactive_ads']; $this->item_counter = 0; parent::__construct( array( 'singular' => __( 'item', 'adsense-plugin' ), 'plural' => __( 'items', 'adsense-plugin' ), 'ajax' => false, ) ); } function get_columns() { $columns = array( 'cb' => __( 'Display', 'adsense-plugin' ), 'name' => __( 'Name', 'adsense-plugin' ), 'code' => __( 'Id', 'adsense-plugin' ), 'summary' => __( 'Type / Size', 'adsense-plugin' ), 'status' => __( 'Status', 'adsense-plugin' ), 'position' => __( 'Position', 'adsense-plugin' ) ); if ( ! $this->adsns_adunit_positions ) { unset( $columns['position'] ); } return $columns; } function usort_reorder( $a, $b ) { $orderby = ( ! empty( $_GET['orderby'] ) ) ? $_GET['orderby'] : 'name'; $order = ( ! empty( $_GET['order'] ) ) ? $_GET['order'] : 'asc'; $result = strcasecmp( $a[$orderby], $b[$orderby] ); return ( $order === 'asc' ) ? $result : -$result; } function get_sortable_columns() { $sortable_columns = array( 'name' => array( 'name',false ), 'code' => array( 'code',false ), 'summary' => array( 'summary', false ), 'status' => array( 'status', false ) ); return $sortable_columns; } /** * Add necessary css classes depending on item status * @param array $item The current item data. * @return void */ function single_row( $item ) { $row_class = isset( $item['status_value'] ) && 'INACTIVE' == $item['status_value'] ? 'adsns_inactive' : ''; if ( '1' != $this->include_inactive_ads ) { if ( isset( $item['status_value'] ) && 'INACTIVE' != $item['status_value'] ) { if ( $this->item_counter%2 == 0 ) { $row_class .= ( '' == $row_class ) ? 'adsns_table_row_odd' : ' adsns_table_row_odd'; } $this->item_counter++; } elseif ( isset( $item['status_value'] ) && 'INACTIVE' == $item['status_value'] ) { $row_class .= ( '' == $row_class ) ? 'hidden' : ' hidden'; } } else { if ( $this->item_counter%2 == 0 ) { $row_class .= ( '' == $row_class ) ? 'adsns_table_row_odd' : ' adsns_table_row_odd'; } $this->item_counter++; } $row_class = ( '' != $row_class ) ? ' class="' . $row_class . '"' : ''; echo ""; $this->single_row_columns( $item ); echo ''; } function prepare_items() { global $adsns_table_rows; $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $primary = 'name'; $this->_column_headers = array( $columns, $hidden, $sortable, $primary ); usort( $this->adsns_table_data, array( &$this, 'usort_reorder' ) ); $this->items = $this->adsns_table_data; } function column_default( $item, $column_name ) { switch( $column_name ) { case 'cb': case 'name': case 'code': case 'summary': case 'status': case 'position': return $item[ $column_name ]; default: return print_r( $item, true ); } } function column_cb( $item ) { return sprintf( '', $item['id'], ( array_key_exists( $item['id'], $this->adsns_table_adunits ) ) ? 'checked="checked"' : '' ); } function column_position( $item ) { $disabled = ( ! array_key_exists( $item['id'], $this->adsns_table_adunits ) ) ? 'disabled="disabled"' : ''; $adsns_adunit_positions = is_array( $this->adsns_adunit_positions ) ? $this->adsns_adunit_positions : array(); $adsns_adunit_positions_pro = is_array( $this->adsns_adunit_positions_pro ) ? $this->adsns_adunit_positions_pro : array(); $adsns_position = $adsns_position_pro = ''; foreach ( $adsns_adunit_positions as $value => $name ) { $adsns_position .= sprintf( '', $value, ( array_key_exists( $item['id'], $this->adsns_table_adunits ) && $this->adsns_table_adunits[ $item['id'] ] == $value ) ? 'selected="selected"' : '', $name ); } if ( $adsns_adunit_positions_pro ) { foreach ( $adsns_adunit_positions_pro as $value_pro => $name_pro ) { $adsns_position_pro .= sprintf( '', $name_pro ); } $adsns_position .= $adsns_position_pro; } return sprintf( '', $item['id'], $disabled, $adsns_position ); } } }