|
Server : LiteSpeed System : Linux premium152.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64 User : idesfsze ( 1473) PHP Version : 7.4.33 Disable Function : NONE Directory : /home/idesfsze/pandaexpressketo.com/wp-content/themes/jnews/class/ |
<?php
/**
* Ads
*
* @author : Jegtheme
* @package jnews
*/
namespace JNews;
use JNews\Single\SinglePost;
/**
* Class JNews Ads
*/
class Ads {
/**
* Instance
*
* @var Ads
*/
private static $instance;
/**
* Instance
*
* @return Ads
*/
public static function getInstance() {
if ( null === static::$instance ) {
static::$instance = new static();
}
return static::$instance;
}
/**
* Method __construct
*
* @return void
*/
private function __construct() {
// header.
add_action( 'jnews_header_top_ads', array( $this, 'header_top' ) );
add_action( 'jnews_header_ads', array( $this, 'header' ) );
add_action( 'jnews_header_bottom_ads', array( $this, 'header_bottom' ) );
// article.
add_action( 'jnews_article_top_ads', array( $this, 'article_top' ) );
add_action( 'jnews_content_top_ads', array( $this, 'content_top' ) );
add_action( 'jnews_article_bottom_ads', array( $this, 'article_bottom' ) );
add_action( 'jnews_content_inline_ads', array( $this, 'content_inline' ) );
add_action( 'jnews_single_post_before_content', array( $this, 'article_content_top' ), 10 );
add_action( 'jnews_single_post_after_content', array( $this, 'article_content_bottom' ), 10 );
// paragraph.
add_filter( 'the_content', array( $this, 'inject_ads' ), 10 );
// archive.
add_action( 'jnews_archive_above_content', array( $this, 'above_content' ) );
add_action( 'jnews_archive_above_hero', array( $this, 'above_hero' ) );
add_action( 'jnews_archive_below_hero', array( $this, 'below_hero' ) );
// sidefeed.
add_action( 'jnews_sidefeed_ads', array( $this, 'sidefeed' ) );
// footer.
add_action( 'jnews_above_footer_ads', array( $this, 'above_footer' ) );
add_action( 'jnews_after_main', array( $this, 'after_main' ) );
add_action( 'wp_footer', array( $this, 'sticky_footer_ads' ), 50 );
// page level ads.
add_action( 'wp_footer', array( $this, 'page_level_ads' ) );
}
/**
* Inject ads inside content paragraph
*
* @param string $content content.
* @return string
*/
public function inject_ads( $content ) {
if ( 'post' === get_post_type() && is_single() && ! is_admin() ) {
$locations = array( 'content_inline', 'content_inline_2', 'content_inline_3', 'content_inline_parallax', 'content_inline_parallax_2', 'content_inline_parallax_3' );
$tag = new ContentTag( $content );
$pnumber = $tag->total( 'p' );
foreach ( $locations as $location ) {
if ( get_theme_mod( 'jnews_ads_' . $location . '_enable', false ) ) {
$adsposition = get_theme_mod( 'jnews_ads_' . $location . '_paragraph', 3 );
if ( get_theme_mod( 'jnews_ads_' . $location . '_paragraph_random', false ) ) {
$maxparagraph = $pnumber - 2;
$adsposition = rand( $adsposition, $maxparagraph );
}
if ( get_theme_mod( 'jnews_hide_inline_enable', false ) ) {
if ( $adsposition >= $pnumber ) {
return $content;
}
}
$ad_code = "<div class=\"jeg_ad jeg_ad_article jnews_{$location}_ads " . $this->additional_class( $location ) . ' ">' . $this->content_inline( $location, false ) . '</div>';
$content = $this->prefix_insert_after_paragraph( $ad_code, $adsposition, $content );
}
}
}
return $content;
}
/**
* Method page_level_ads
*
* @return void
*/
public function page_level_ads() {
if ( wp_is_mobile() ) {
if ( get_theme_mod( 'jnews_page_level_ads_enable', false ) ) {
$join_ads = array();
$publisher = get_theme_mod( 'jnews_ads_page_level_google_publisher', '' );
$publisher = str_replace( ' ', '', $publisher );
$vignette_channel = get_theme_mod( 'jnews_ads_page_level_vignette_google_channel', '' );
$anchor_channel = get_theme_mod( 'jnews_ads_page_level_anchor_google_channel', '' );
$join_ads[] = "google_ad_client: '{$publisher}'";
$join_ads[] = 'enable_page_level_ads: true';
if ( get_theme_mod( 'jnews_page_level_vignette_enable', false ) && ! empty( $vignette_channel ) ) {
$join_ads[] = "vignettes: {google_ad_channel: '{$vignette_channel}'}";
}
if ( get_theme_mod( 'jnews_page_level_anchor_enable', false ) && ! empty( $anchor_channel ) ) {
$join_ads[] = "overlays: {google_ad_channel: '{$anchor_channel}'}";
}
$join_ads = implode( ', ', $join_ads );
$googleads = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
$external_script = "<script async defer src='{$googleads}'></script>";
if ( method_exists( '\JNews\Asset\FrontendAsset', 'autoptimize_option' ) ) {
if ( get_theme_mod( 'jnews_extreme_autoptimize_script_loader', false ) && \JNews\Asset\FrontendAsset::autoptimize_option( 'autoptimize_js_aggregate' ) && \JNews\Asset\FrontendAsset::autoptimize_option( 'autoptimize_js' ) ) {
$external_script = "<script>(jnewsads = window.jnewsads || []); if ('object' === typeof jnewsads && 'object' === typeof jnews.library) { if (jnewsads.length) { if (!jnews.library.isObjectSame(jnewsads[0], { defer: true, async: true, url: '{$googleads}' })) { jnewsads.push({ defer: true, async: true, url: '{$googleads}' }); } } else { jnewsads.push({ defer: true, async: true, url: '{$googleads}' }); } }</script>";
}
}
$script =
"{$external_script}<script>
( adsbygoogle = window.adsbygoogle || []).push({
{$join_ads}
});
</script>";
echo jnews_sanitize_output( $script );
}
}
}
/**
* Insert code after paragraph
*
* @param string $insertion insertion.
* @param string $paragraph_id paragraph id.
* @param string $content content.
* @return string
*/
public function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
$tag = new ContentTag( $content );
$line = $paragraph_id ? $tag->find( 'p', $paragraph_id ) : 0;
return jeg_string_insert( $tag->get_content(), $insertion, $line );
}
/** Call back **/
/**
* Method article_top
*
* @return void
*/
public function article_top() {
echo jnews_sanitize_output( $this->render_ads( 'article_top' ) );
}
/**
* Method above_footer
*
* @param boolean $echo $echo.
*
* @return void|string
*/
public function above_footer( $echo = true ) {
$ads = $this->render_ads( 'above_footer' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method article_content_top
*
* @return void
*/
public function article_content_top() {
$html = '<div class="jeg_ad jeg_article jnews_content_top_ads ' . $this->additional_class( 'content_top' ) . '">' . $this->content_top( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method article_content_bottom
*
* @return void
*/
public function article_content_bottom() {
$html = '<div class="jeg_ad jeg_article jnews_content_bottom_ads ' . $this->additional_class( 'content_bottom' ) . '">' . $this->content_bottom( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method article_bottom
*
* @return void
*/
public function article_bottom() {
echo jnews_sanitize_output( $this->render_ads( 'article_bottom' ) );
}
/**
* Method after_main
*
* @return void
*/
public function after_main() {
$html = '<div class="jeg_ad jnews_above_footer_ads ' . $this->additional_class( 'above_footer' ) . '">' . $this->above_footer( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method above_content
*
* @return void
*/
public function above_content() {
$html = '<div class="jeg_ad jeg_archive jnews_archive_above_content_ads ' . $this->additional_class( 'archive_above_content' ) . '">' . $this->archive_above_content( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method additional_class
*
* @param string $location $location.
*
* @return string
*/
protected function additional_class( $location ) {
$class = array();
if ( $this->default_value( 'jnews_ads_' . $location . '_google_desktop', false, 'auto' ) === 'hide' ) {
$class[] = 'jeg_ads_hide_desktop';
}
if ( $this->default_value( 'jnews_ads_' . $location . '_google_tab', false, 'auto' ) === 'hide' ) {
$class[] = 'jeg_ads_hide_tab';
}
if ( $this->default_value( 'jnews_ads_' . $location . '_google_phone', false, 'auto' ) === 'hide' ) {
$class[] = 'jeg_ads_hide_phone';
}
return implode( ' ', $class );
}
/**
* Method archive_above_content
*
* @param boolean $echo $echo.
*
* @return strings
*/
public function archive_above_content( $echo = true ) {
$ads = $this->render_ads( 'archive_above_content' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method above_hero
*
* @return void
*/
public function above_hero() {
$html = '<div class="jeg_ad jeg_category jnews_archive_above_hero_ads ' . $this->additional_class( 'archive_above_hero' ) . '">' . $this->archive_above_hero( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method archive_above_hero
*
* @param boolean $echo $echo.
*
* @return void|string
*/
public function archive_above_hero( $echo = true ) {
$ads = $this->render_ads( 'archive_above_hero' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method content_top
*
* @param boolean $echo $echo.
*
* @return void|string
*/
public function content_top( $echo = true ) {
$ads = $this->render_ads( 'content_top' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method content_bottom
*
* @param bollean $echo $echo.
*
* @return void|string
*/
public function content_bottom( $echo = true ) {
$ads = $this->render_ads( 'content_bottom' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method content_inline_2
*
* @return void
*/
public function content_inline_2() {
$this->content_inline( 'content_inline_2' );
}
/**
* Method content_inline_3
*
* @return void
*/
public function content_inline_3() {
$this->content_inline( 'content_inline_3' );
}
/**
* Method content_inline_parallax_2
*
* @return void
*/
public function content_inline_parallax_2() {
$this->content_inline( 'content_inline_parallax_2' );
}
/**
* Method content_inline_parallax_3
*
* @return void
*/
public function content_inline_parallax_3() {
$this->content_inline( 'content_inline_parallax_3' );
}
/**
* Method content_inline_parallax
*
* @return void
*/
public function content_inline_parallax() {
$this->content_inline( 'content_inline_parallax' );
}
/**
* Method content_inline
*
* @param $location $location [explicite description]
* @param echo $echo [explicite description]
*
* @return void
*/
public function content_inline( $location = 'content_inline', $echo = true ) {
if ( strpos( $location, 'content_inline_parallax' ) === false ) {
$align = get_theme_mod( 'jnews_ads_' . $location . '_align', 'center' );
$ads = $this->render_ads( $location, 'align-' . $align );
} else {
$ads = $this->render_ads( $location );
}
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method default_value
*
* @param string name $name name.
* @param mix default $default default.
* @param string $ads_default $ads_default.
*
* @return mix
*/
private function default_value( $name, $default, $ads_default ) {
return isset( $ads_default[ $name ] ) ? get_theme_mod( $name, $ads_default[ $name ] ) : get_theme_mod( $name, $default );
}
/**
* Method header_top
*
* @return void
*/
public function header_top() {
echo jnews_sanitize_output( $this->render_ads( 'header_top' ) );
}
/**
* Method header
*
* @return void
*/
public function header() {
echo jnews_sanitize_output(
$this->render_ads(
'header',
null,
array(
'jnews_ads_header_enable' => true,
'jnews_ads_header_type' => 'image',
'jnews_ads_header_image' => get_parent_theme_file_uri( 'assets/img/ad_728x90.png' ),
'jnews_ads_header_link' => '#',
'jnews_ads_header_text' => esc_html__( 'Advertisement', 'jnews' ),
)
)
);
}
/**
* Method header_bottom
*
* @return void
*/
public function header_bottom() {
echo jnews_sanitize_output( $this->render_ads( 'header_bottom' ) );
}
/**
* Method mobile_sticky
*
* @param boolean $echo $echo.
*
* @return void|string
*/
public function mobile_sticky( $echo = true ) {
if ( wp_is_mobile() ) {
$ads = $this->render_ads( 'mobile_sticky' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
}
/**
* Method sidefeed
*
* @return void
*/
public function sidefeed() {
$sidefeed_ads = get_theme_mod( 'jnews_ads_sidefeed_enable' );
if ( $sidefeed_ads ) {
echo jnews_sanitize_output( $this->render_ads( 'sidefeed', 'jeg_ad_sidecontent' ) );
}
}
/**
* Method sticky_footer_ads
*
* @return void
*/
public function sticky_footer_ads() {
$html = '<div class="jeg_ad jnews_mobile_sticky_ads ' . $this->additional_class( 'mobile_sticky' ) . '">' . $this->mobile_sticky( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method below_hero
*
* @return void
*/
public function below_hero() {
$html = '<div class="jeg_ad jeg_category jnews_archive_below_hero_ads ' . $this->additional_class( 'archive_below_hero' ) . '">' . $this->archive_below_hero( false ) . '</div>';
echo jnews_sanitize_output( $html );
}
/**
* Method archive_below_hero
*
* @param boolean $echo $echo.
*
* @return void|string
*/
public function archive_below_hero( $echo = true ) {
$ads = $this->render_ads( 'archive_below_hero' );
if ( ! $echo ) {
return $ads;
}
echo jnews_sanitize_output( $ads );
}
/**
* Method get_location_size
*
* @param string $location $location.
* @param array $desktopsize_ad $desktopsize_ad.
* @param array $tabsize_ad $tabsize_ad.
* @param array $phonesize_ad $phonesize_ad.
*
* @return void
*/
public function get_location_size( $location, &$desktopsize_ad, &$tabsize_ad, &$phonesize_ad ) {
if ( 'header_1' === $location || 'header_2' === $location || 'header' === $location ) {
$desktopsize_ad = array( '728', '90' );
$tabsize_ad = array( '468', '60' );
$phonesize_ad = array( '320', '50' );
}
if ( 'header_4' === $location || 'header_top' === $location || 'article_top' === $location || 'article_bottom' === $location || 'header_bottom' === $location ) {
$desktopsize_ad = array( '970', '90' );
$tabsize_ad = array( '468', '60' );
$phonesize_ad = array( '320', '50' );
}
if ( 'content_top' === $location || 'content_bottom' === $location ) {
$desktopsize_ad = array( '728', '90' );
$tabsize_ad = array( '468', '60' );
$phonesize_ad = array( '320', '50' );
}
if ( 'content_inline' === $location || 'content_inline_2' === $location || 'content_inline_3' === $location || 'inline_module' === $location ) {
$align = get_theme_mod( 'jnews_ads_' . $location . '_align', 'center' );
if ( 'center' === $align ) {
$single = SinglePost::getInstance();
$float_class = $single->share_float_additional_class();
if ( 'with-share' === $float_class ) {
$desktopsize_ad = array( '468', '60' );
$tabsize_ad = array( '468', '60' );
$phonesize_ad = array( '320', '50' );
} else {
$desktopsize_ad = array( '728', '90' );
$tabsize_ad = array( '468', '60' );
$phonesize_ad = array( '320', '50' );
}
} else {
$desktopsize_ad = array( '300', '250' );
$tabsize_ad = array( '300', '250' );
$phonesize_ad = array( '300', '250' );
}
}
if ( 'sidefeed' === $location ) {
$desktopsize_ad = array( '300', '250' );
$tabsize_ad = array( '250', '250' );
$phonesize_ad = array( '250', '250' );
}
if ( 'mobile_sticky' === $location ) {
$desktopsize_ad = array( '', '' );
$tabsize_ad = array( '', '' );
$phonesize_ad = array( '320', '50' );
}
}
/**
* Method inline_module
*
* @return void
*/
public function inline_module() {
echo jnews_sanitize_output( $this->render_ads( 'inline_module' ) );
}
/**
* Calculate Real Ads
*
* @param string $location location.
* @param string $addclass add class.
* @param array $default default.
* @return string
*/
public function render_ads( $location, $addclass = '', $default = array() ) {
$enabled = $this->default_value( 'jnews_ads_' . $location . '_enable', false, $default );
$ads_html = '';
if ( $enabled ) {
$type = $this->default_value( 'jnews_ads_' . $location . '_type', 'googleads', $default );
if ( 'image' === $type ) {
$ads_tab = $this->default_value( 'jnews_ads_' . $location . '_open_tab', false, $default ) ? 'target="_blank" rel="nofollow noopener"' : 'rel="noopener"';
$ads_link = $this->default_value( 'jnews_ads_' . $location . '_link', '', $default );
$ads_text = $this->default_value( 'jnews_ads_' . $location . '_text', '', $default );
$ads_images = array(
'ads_image' => $this->default_value( 'jnews_ads_' . $location . '_image', '', $default ),
'ads_image_tablet' => $this->default_value( 'jnews_ads_' . $location . '_image_tablet', '', $default ),
'ads_image_phone' => $this->default_value( 'jnews_ads_' . $location . '_image_phone', '', $default ),
);
foreach ( $ads_images as $key => $ads_image ) {
if ( ! empty( $ads_image ) ) {
if ( $this->default_value( 'jnews_ads_' . $location . '_normal_load', '', $default ) ) {
$ads_html .=
"<a href='{$ads_link}' {$ads_tab} class='adlink {$key} {$addclass}'>
<img src='{$ads_image}' alt='{$ads_text}' data-pin-no-hover=\"true\">
</a>";
} else {
$ads_html .=
"<a href='{$ads_link}' {$ads_tab} class='adlink {$key} {$addclass}'>
<img src='" . apply_filters( 'jnews_empty_image', '' ) . "' class='lazyload' data-src='{$ads_image}' alt='{$ads_text}' data-pin-no-hover=\"true\">
</a>";
}
}
}
}
if ( 'shortcode' === $type ) {
$shortcode = $this->default_value( 'jnews_ads_' . $location . '_shortcode', '', $default );
$ads_html = "<div class='ads_shortcode'>" . do_shortcode( $shortcode ) . '</div>';
}
if ( 'code' === $type ) {
$code = $this->default_value( 'jnews_ads_' . $location . '_code', '', $default );
$ads_html = "<div class='ads_code'>" . $code . '</div>';
}
if ( 'googleads' === $type ) {
$publisherid = $this->default_value( 'jnews_ads_' . $location . '_google_publisher', '', $default );
$slotid = $this->default_value( 'jnews_ads_' . $location . '_google_id', '', $default );
$publisherid = str_replace( ' ', '', $publisherid );
$slotid = str_replace( ' ', '', $slotid );
if ( ! empty( $publisherid ) && ! empty( $slotid ) ) {
$desktopsize_ad = array();
$tabsize_ad = array();
$phonesize_ad = array();
$ad_style = '';
$desktopsize = $this->default_value( 'jnews_ads_' . $location . '_google_desktop', 'auto', $default );
$tabsize = $this->default_value( 'jnews_ads_' . $location . '_google_tab', 'auto', $default );
$phonesize = $this->default_value( 'jnews_ads_' . $location . '_google_phone', 'auto', $default );
$this->get_location_size( $location, $desktopsize_ad, $tabsize_ad, $phonesize_ad );
if ( $desktopsize !== 'auto' ) {
$desktopsize_ad = explode( 'x', $desktopsize );
}
if ( $tabsize !== 'auto' ) {
$tabsize_ad = explode( 'x', $tabsize );
}
if ( $phonesize !== 'auto' ) {
$phonesize_ad = explode( 'x', $phonesize );
}
$randomstring = jeg_generate_random_string();
if ( 'hide' !== $desktopsize && is_array( $desktopsize_ad ) && isset( $desktopsize_ad['0'] ) && isset( $desktopsize_ad['1'] ) ) {
$ad_style .= ".adsslot_{$randomstring}{ width:{$desktopsize_ad[0]}px !important; height:{$desktopsize_ad[1]}px !important; }\n";
}
if ( 'hide' !== $tabsize && is_array( $tabsize_ad ) && isset( $tabsize_ad['0'] ) && isset( $tabsize_ad['1'] ) ) {
$ad_style .= "@media (max-width:1199px) { .adsslot_{$randomstring}{ width:{$tabsize_ad[0]}px !important; height:{$tabsize_ad[1]}px !important; } }\n";
}
if ( 'hide' !== $phonesize && is_array( $phonesize_ad ) && isset( $phonesize_ad['0'] ) && isset( $phonesize_ad['1'] ) ) {
$ad_style .= "@media (max-width:767px) { .adsslot_{$randomstring}{ width:{$phonesize_ad[0]}px !important; height:{$phonesize_ad[1]}px !important; } }\n";
}
$googleads = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
$external_script = "<script async defer src='{$googleads}'></script>";
if ( method_exists( '\JNews\Asset\FrontendAsset', 'autoptimize_option' ) ) {
if ( get_theme_mod( 'jnews_extreme_autoptimize_script_loader', false ) && \JNews\Asset\FrontendAsset::autoptimize_option( 'autoptimize_js_aggregate' ) && \JNews\Asset\FrontendAsset::autoptimize_option( 'autoptimize_js' ) ) {
$external_script = "<script>(jnewsads = window.jnewsads || []); if ('object' === typeof jnewsads && 'object' === typeof jnews.library) { if (jnewsads.length) { if (!jnews.library.isObjectSame(jnewsads[0], { defer: true, async: true, url: '{$googleads}' })) { jnewsads.push({ defer: true, async: true, url: '{$googleads}' }); } } else { jnewsads.push({ defer: true, async: true, url: '{$googleads}' }); } }</script>";
}
}
$ads_html .=
"<div class=\"ads_google_ads\">
<style type='text/css' scoped>
{$ad_style}
</style>
<ins class=\"adsbygoogle adsslot_{$randomstring}\" style=\"display:inline-block;\" data-ad-client=\"{$publisherid}\" data-ad-slot=\"{$slotid}\"></ins>
{$external_script}
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>";
}
}
$bottom_text = $this->default_value( 'jnews_ads_' . $location . '_ads_text', false, $default );
if ( strpos( $location, 'content_inline_parallax' ) !== false ) {
$ads_html = "<div class='ads-parallax-wrapper'><div class='ads-parallax-inner'><div class='ads-parallax'>{$ads_html}</div></div></div>";
if ( $bottom_text ) {
$ads_text_html = jnews_return_translation( 'Advertisement. Scroll to continue reading.', 'jnews', 'scroll_advertisement' );
$ads_html = "<div class='ads-text'>{$ads_text_html}</div>" . $ads_html;
}
} elseif ( $bottom_text ) {
$ads_text_html = jnews_return_translation( 'ADVERTISEMENT', 'jnews', 'advertisement' );
$ads_html = $ads_html . "<div class='ads-text'>{$ads_text_html}</div>";
}
}
$addclass .= ' ' . $this->additional_class( $location );
return "<div class='ads-wrapper {$addclass}'>" . $ads_html . '</div>';
}
}