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();