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', [$this, 'admin_menu_function']); add_action('admin_enqueue_scripts', [$this, 'adsb30_load_scripts']); add_filter('the_content', [$this, 'load_ad']); } public function load_ad($content) { $adsenseib30_settings = get_option('adsenseib30_settings'); $content = $this->load_all_ads( $content, $adsenseib30_settings); return $content; } public function load_all_ads($content, $adsenseib30_settings){ for ($numberOfAd = 1; $numberOfAd <= 8; $numberOfAd++) { $content = $this->addAdAfterParagraphOrAfterH2H3($content, $adsenseib30_settings, $numberOfAd); } return $content; } private function addAdAfterParagraphOrAfterH2H3($content, $adsenseib30_settings, $numberOfAd){ $showOn = $adsenseib30_settings['showOn'.$numberOfAd]; if ($showOn == 'posts') if (is_page()) return $content; if ($showOn == 'pages') if (is_single()) return $content; $myad = $adsenseib30_settings['adCode'.$numberOfAd]; if (strlen(trim($myad)) == 0) return $content; $adPosition = $adsenseib30_settings['adPosition'.$numberOfAd]; $myad = $this->wrap_ad_into_div($myad, $adsenseib30_settings, $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('/

.*<\\/p>.*/', $content, $output_array); $realAdPosition = $this->get_real_ad_position($adPosition, ($paragraphs)); return preg_replace('/(.*){'.$realAdPosition.'}/Us', '${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') or ($align == 'left')){ return '

'.$myad.'
'; } if (($align == 'wrapright') or ($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 > $paragrahpsNum) return $paragrahpsNum; return $ad1Position; } public function adsb30_load_scripts() { wp_enqueue_style('adsb30-admin-styles', plugin_dir_url( __FILE__ ) . 'includes/css/adsB30AdminPanel.css'); } 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();