includes(); self::$instance->init(); } return self::$instance; } private function includes() { include_once( dirname( __FILE__ ) . '/includes/adsb30_admin_page.php' ); } /** Filters & Actions **/ private function init() { add_action('admin_init', 'adsenseib30_register_settings'); add_action('admin_menu', array($this, 'admin_menu_function')); add_action('admin_enqueue_scripts', array($this, 'adsb30_load_scripts')); add_shortcode( 'sin_anuncios_b30', array($this,'do_nothing_shortcode')); add_shortcode( 'anuncio_b30', array($this,'show_add_shortcode')); add_filter('the_content', array($this, 'core_method'), 14); add_action('admin_init', array($this, 'myPlugin_admin_scripts' )); } private function isMobile() { return preg_match("/\b(?:a(?:ndroid|vantgo)|b(?:lackberry|olt|o?ost)|cricket|docomo|hiptop|i(?:emobile|p[ao]d)|kitkat|m(?:ini|obi)|palm|(?:i|smart|windows )phone|symbian|up\.(?:browser|link)|tablet(?: browser| pc)|(?:hp-|rim |sony )tablet|w(?:ebos|indows ce|os))/i", $_SERVER["HTTP_USER_AGENT"]); } public function myPlugin_admin_scripts() { if ( isset($_GET['page']) && $_GET['page'] == 'adsensei-admin' ) { wp_enqueue_script( 'jquery-form', array( 'jquery' ) ); } } public function do_nothing_shortcode( $atts, $content = null ) { self::$no_ads_shortcode = true; return; } public function show_add_shortcode( $atts, $content ) { $ad_shortcode = shortcode_atts(array( 'id' => 1 ), $atts); $numberOfAd = ($ad_shortcode['id']); self::$shortcodes_being_used[$numberOfAd] = true; $adsenseib30_settings = get_option('adsenseib30_settings'); //filter by device: $device = $adsenseib30_settings['adDevice'.$numberOfAd]; if ($device == 'desktop') {if ($this->isMobile()) return ''; }; if ($device == 'mobile') { if (!$this->isMobile()) return ''; }; $myad = $adsenseib30_settings['adCode'.$numberOfAd]; $myad = $this->wrap_ad_into_div($myad, $adsenseib30_settings, $numberOfAd); return $myad; } public function core_method($content) { if (self::$no_ads_shortcode == true) return $content; if (!(is_page() || (is_single()))) return $content; $content = preg_replace('/()/U', '', $content,1); $adsenseib30_settings = get_option('adsenseib30_settings'); $content = $this->load_all_ads( $content, $adsenseib30_settings); return $content." "; } private function load_all_ads($content, $adsenseib30_settings){ for ($numberOfAd = 1; $numberOfAd <= 10; $numberOfAd++) { if (self::$shortcodes_being_used[$numberOfAd] == false){ $content = $this->addAdAfterParagraphOrAfterH2H3($content, $adsenseib30_settings, $numberOfAd); } } return $content; } private function addAdAfterParagraphOrAfterH2H3($content, $adsenseib30_settings, $numberOfAd){ //filter by device: $device = $adsenseib30_settings['adDevice'.$numberOfAd]; if ($device == 'desktop') { if ($this->isMobile()) return $content; }; if ($device == 'mobile') { if (!$this->isMobile()) return $content; }; $showOn = $adsenseib30_settings['showOn'.$numberOfAd]; if ($showOn == 'shortcode') return $content; if ($showOn == 'posts') if (is_page()) return $content; if ($showOn == 'pages') if (is_single()) return $content; $enabled = $adsenseib30_settings['adEnabled'.$numberOfAd]; if ($enabled == 'false') return $content; $myad = $adsenseib30_settings['adCode'.$numberOfAd]; if (strlen(trim($myad)) == 0) return $content; $myad = $this->wrap_ad_into_div($myad, $adsenseib30_settings, $numberOfAd); $adPosition = $adsenseib30_settings['adPosition'.$numberOfAd]; if (strpos($adPosition, 'H') === false) { return $this->addAdAfterParagraph($content, $myad, $adPosition); } else { return $this->replaceH2H3($content, $myad, $adPosition); } } private function replaceH2H3($content, $myad, $adPosition){ if (strpos($adPosition, 'first') !== false) $realAdPosition = 1; if (strpos($adPosition, 'second') !== false) $realAdPosition = 2; if (strpos($adPosition, 'third') !== false) $realAdPosition = 3; if (strpos($adPosition, 'H2') !== false) { return preg_replace('/(.*){'.$realAdPosition.'}/Us', '${0}'.$myad, $content,1); } if (strpos($adPosition, 'H3') !== false) { return preg_replace('/(.*){'.$realAdPosition.'}/Us', '${0}'.$myad, $content,1); } return $content; } private function addAdAfterParagraph($content, $myad, $adPosition){ - $paragraphs = preg_match_all('/.*/isU', $content, $output_array); $realAdPosition = $this->get_real_ad_position($adPosition, ($paragraphs)); return preg_replace('/(.*){'.$realAdPosition.'}/sU', '${0}'.$myad, $content,1); return $content; } private function replaceAdInH2H3($content, $adsenseib30_settings, $numberOfAd){ $myad = $adsenseib30_settings['adCode'.$numberOfAd]; if (strlen(trim($myad)) == 0) return $content; $adPosition = $adsenseib30_settings['adPosition'.$numberOfAd]; if (strpos($adPosition, 'H') == false) return $content; $myad = $this->wrap_ad_into_div($myad, $adsenseib30_settings, $numberOfAd); if (strpos($adPosition, 'first') !== false) $realAdPosition = 1; if (strpos($adPosition, 'second') !== false) $realAdPosition = 2; if (strpos($adPosition, 'third') !== false) $realAdPosition = 3; if (strpos($adPosition, 'H2') !== false) { return preg_replace('/(.*){'.$realAdPosition.'}/Us', '${0}'.$myad, $content,1); } if (strpos($adPosition, 'H3') !== false) { return preg_replace('/(.*){'.$realAdPosition.'}/Us', '${0}'.$myad, $content,1); } return $content; } private function wrap_ad_into_div($myad, $adsenseib30_settings, $numberOfAd){ $margin = $adsenseib30_settings['adMargin'.$numberOfAd]; $align = $adsenseib30_settings['adAlign'.$numberOfAd]; if (($align == 'wrapleft') ){ return '
'.$myad.'
'; } if (($align == 'left')){ return '
'.$myad.'
'; } if (($align == 'wrapright')){ return '
'.$myad.'
'; } if (($align == 'right')){ return '
'.$myad.'
'; } return '
'.$myad.'
'; } private function get_real_ad_position($ad1Position, $paragrahpsNum){ if ($ad1Position == 'beginning') return 0; if ($ad1Position == 'middle') return ((floor($paragrahpsNum/2))); if ($ad1Position == 'end') return $paragrahpsNum; if ($ad1Position == 'before end') return ($paragrahpsNum - 1); if ($ad1Position > $paragrahpsNum) return $paragrahpsNum; return $ad1Position; } public function adsb30_load_scripts() { wp_enqueue_style('adsb30-admin-styles', plugin_dir_url( __FILE__ ) . 'includes/css/adsB30AdminPanel.css'); wp_enqueue_script('adsb30-admin-scripts', plugin_dir_url( __FILE__ ) . 'includes/js/admin_javascript.js'); } public function admin_menu_function(){ add_menu_page ( 'AdSensei B30 Admin', 'AdSensei B30', 'edit_pages', 'adsensei-admin', 'adsenseib30_settings_page'); } } /** SINGLETON INVOCATION **/ function adSensei_load() { return AdSensei_B30::instance(); } adSensei_load();