Advertisement
arie_cristianD

override featured image size

Oct 9th, 2023 (edited)
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 45.62 KB | None | 0 0
  1. <?php
  2. /**
  3.  * @author : Jegtheme
  4.  */
  5.  
  6. namespace JNews\Single;
  7.  
  8. use JNews\ContentTag;
  9. use JNews\Module\Block\BlockViewAbstract;
  10.  
  11. /**
  12.  * Class Theme SinglePost
  13.  */
  14. class SinglePost {
  15.     /**
  16.      * @var SinglePost
  17.      */
  18.     private static $instance;
  19.  
  20.     /**
  21.      * @var \WP_Post
  22.      */
  23.     private $post_id;
  24.  
  25.     /**
  26.      * @return SinglePost
  27.      */
  28.     public static function getInstance() {
  29.         if ( null === static::$instance ) {
  30.             static::$instance = new static();
  31.         }
  32.  
  33.         return static::$instance;
  34.     }
  35.  
  36.     private function __construct() {
  37.         $this->post_id = get_the_ID();
  38.         $this->hook();
  39.     }
  40.  
  41.     public function hook() {
  42.         add_filter( 'body_class', array( $this, 'add_body_class' ) );
  43.         add_filter( 'the_category_list', array( $this, 'hide_category' ), 10, 2 );
  44.         add_filter( 'the_content', array( $this, 'render_inline_related_post' ), 99 );
  45.         add_filter( 'jnews_ads_global_enable', array( $this, 'ads_post_enable' ), 11, 2 );
  46.  
  47.         add_action( 'jnews_render_after_meta_left', array( $this, 'reading_time_meta' ), 10 );
  48.  
  49.         add_action( 'jnews_single_post_after_content', array( $this, 'next_prev_content_hook' ), 20 );
  50.         add_action( 'jnews_single_post_after_content', array( $this, 'author_box_hook' ), 30 );
  51.         add_action( 'jnews_single_post_after_content', array( $this, 'related_post_hook' ), 40 );
  52.         add_action( 'jnews_single_post_after_content', array( $this, 'popup_post_hook' ), 50 );
  53.         add_action( 'jnews_single_custom_post_after_content', array( $this, 'popup_post_hook' ), 50 );
  54.         add_action( 'jnews_single_post_after_content', array( $this, 'comment_post_hook' ), 60 );
  55.  
  56.         add_action( 'jnews_render_before_meta_right', array( $this, 'zoom_button_meta' ), 10 );
  57.         add_action( 'jnews_render_before_meta_right', array( $this, 'trending_post_meta' ), 5 );
  58.         add_action( 'jnews_single_post_before_title', array( $this, 'trending_post_title' ) );
  59.  
  60.         add_action( 'jnews_single_post_before_title', array( $this, 'sponsored_post_title' ) );
  61.         add_action( 'jnews_single_post_before_content', array( $this, 'sponsored_post_content' ) );
  62.  
  63.         add_action( 'jnews_source_via_single_post', array( $this, 'render_source_article' ), 8 );
  64.         add_action( 'jnews_source_via_single_post', array( $this, 'render_via_article' ), 9 );
  65.  
  66.         add_action( 'wp_footer', array( $this, 'render_reading_progress_bar' ) );
  67.     }
  68.  
  69.     /**
  70.      * Filters the categories before building the category list.
  71.      *
  72.      * @param \WP_Term[] $categories An array of the post's categories.
  73.      * @param int|bool   $post_id    ID of the post we're retrieving categories for.
  74.      *                               When `false`, we assume the current post in the loop.
  75.      */
  76.     public function hide_category( $categories, $post_id ) {
  77.         if ( is_single() && get_post_type() === 'post' ) {
  78.             $_post            = get_post( $post_id );
  79.             $primary_category = get_post_meta( $_post->ID, 'jnews_primary_category', true );
  80.             $hide_category    = isset( $primary_category['hide'] ) ? explode( ',', $primary_category['hide'] ) : array();
  81.             if ( ! empty( $hide_category ) ) {
  82.                 foreach ( $categories as $index => $category ) {
  83.                     if ( in_array( $category->term_id, $hide_category, false ) ) {
  84.                         unset( $categories[ $index ] );
  85.                     }
  86.                 }
  87.             }
  88.         }
  89.         return $categories;
  90.     }
  91.  
  92.     protected function render_sponsored_post( $post_id ) {
  93.         $output = '';
  94.         $flag   = vp_metabox( 'jnews_single_post.sponsored_post', null, $post_id );
  95.  
  96.         if ( $flag ) {
  97.             $label = vp_metabox( 'jnews_single_post.sponsored_post_label', null, $post_id );
  98.             $name  = vp_metabox( 'jnews_single_post.sponsored_post_name', null, $post_id );
  99.             $desc  = vp_metabox( 'jnews_single_post.sponsored_post_desc', null, $post_id );
  100.             $url   = vp_metabox( 'jnews_single_post.sponsored_post_url', null, $post_id );
  101.  
  102.             $logo_show = vp_metabox( 'jnews_single_post.sponsored_post_logo_enable', null, $post_id );
  103.             $logo      = vp_metabox( 'jnews_single_post.sponsored_post_logo', null, $post_id );
  104.  
  105.             if ( $logo_show ) {
  106.                 if ( $logo ) {
  107.                     $logo     = wp_get_attachment_image_src( $logo, 'full' );
  108.                     $logo_url = isset( $logo[0] ) ? $logo[0] : '';
  109.                     $alt      = empty( $name ) ? '' : 'alt="' . $name . '"';
  110.                     $sponsor  = '<img src="' . $logo_url . '" ' . $alt . '>';
  111.                 }
  112.             } else {
  113.                 $sponsor = '<strong>' . $name . '</strong>';
  114.             }
  115.  
  116.             if ( $label ) {
  117.                 $label = '<span class="sponsor-label">' . $label . '</span>';
  118.             }
  119.  
  120.             $output =
  121.                 '<div class="jeg_meta_sponsor">
  122.                     ' . $label . '
  123.                     <a class="sponsor-logo" href="' . $url . '" target="_blank">
  124.                         ' . $sponsor . '
  125.                     </a>
  126.                     <p>' . wp_kses( $desc, 'post' ) . '</p>
  127.                 </div>';
  128.         }
  129.  
  130.         return $output;
  131.     }
  132.  
  133.     public function sponsored_post_content() {
  134.         if ( in_array( $this->get_template(), array( '4', '5', '6' ) ) ) {
  135.             echo jnews_sanitize_output( $this->render_sponsored_post( get_the_ID() ) );
  136.         }
  137.     }
  138.  
  139.     public function sponsored_post_title( $post_id ) {
  140.         if ( in_array( $this->get_template(), array( '1', '2', '3', '7', '8', '9', '10' ) ) ) {
  141.             echo jnews_sanitize_output( $this->render_sponsored_post( $post_id ) );
  142.         }
  143.     }
  144.  
  145.     public function render_reading_progress_bar() {
  146.  
  147.         if ( is_single() && get_post_type() === 'post' ) {
  148.             $output = $this->build_reading_progress_bar();
  149.             echo "<div class=\"jeg_read_progress_wrapper\">{$output}</div>";
  150.         }
  151.     }
  152.  
  153.     public function build_reading_progress_bar() {
  154.         $output   = '';
  155.         $position = get_theme_mod( 'jnews_single_show_reading_progress_bar_position', 'bottom' );
  156.  
  157.         if ( get_theme_mod( 'jnews_single_show_reading_progress_bar', false ) ) {
  158.             $output = "<div class=\"jeg_progress_container {$position}\"><span class=\"progress-bar\"></span></div>";
  159.         }
  160.  
  161.         return $output;
  162.     }
  163.  
  164.     public function set_post_id( $post_id ) {
  165.         $this->post_id = $post_id;
  166.  
  167.         return $this;
  168.     }
  169.  
  170.     public function render_source_article() {
  171.         $name = vp_metabox( 'jnews_single_post.source_name', false, $this->post_id );
  172.         $name = apply_filters( 'jnews_single_post_source_name', $name, $this->post_id );
  173.         $url  = vp_metabox( 'jnews_single_post.source_url', false, $this->post_id );
  174.         $url  = apply_filters( 'jnews_single_post_source_url', $url, $this->post_id );
  175.  
  176.         if ( ! empty( $name ) ) {
  177.  
  178.             if ( $url ) {
  179.                 $url = "href=\"{$url}\"";
  180.             }
  181.  
  182.             echo '<div class="jeg_post_source">
  183.                     <span>' . jnews_return_translation( 'Source:', 'jnews', 'source_text' ) . "</span>
  184.                     <a {$url} rel=\"nofollow\" target='_blank'>{$name}</a>
  185.                 </div>";
  186.         }
  187.     }
  188.  
  189.     public function render_via_article() {
  190.         $name = vp_metabox( 'jnews_single_post.via_name', false, $this->post_id );
  191.         $name = apply_filters( 'jnews_single_post_via_name', $name, $this->post_id );
  192.         $url  = vp_metabox( 'jnews_single_post.via_url', false, $this->post_id );
  193.         $url  = apply_filters( 'jnews_single_post_via_url', $url, $this->post_id );
  194.  
  195.         if ( ! empty( $name ) ) {
  196.  
  197.             if ( $url ) {
  198.                 $url = "href=\"{$url}\"";
  199.             }
  200.  
  201.             echo '<div class="jeg_post_via">
  202.                     <span>' . jnews_return_translation( 'Via:', 'jnews', 'via_text' ) . "</span>
  203.                     <a {$url} rel=\"nofollow\" target='_blank'>{$name}</a>
  204.                 </div>";
  205.         }
  206.     }
  207.  
  208.     public function next_prev_content_hook() {
  209.         echo '<div class="jnews_prev_next_container">';
  210.         $this->prev_next_post();
  211.         echo '</div>';
  212.     }
  213.  
  214.     public function author_box_hook() {
  215.         $class           = $truncate = '';
  216.         $show_author_box = $this->check_author_box();
  217.         if ( jnews_check_number_authors() > 3 && $show_author_box ) {
  218.             $class    = 'author-truncate';
  219.             $truncate = "<div class='truncate-read-more'><span>" . jnews_return_translation( 'Show More Contributor', 'jnews', 'show_more_contributor' ) . '</span></div>';
  220.         }
  221.         echo "<div class=\"jnews_author_box_container {$class}\">";
  222.         $this->author_box();
  223.         echo "{$truncate}";
  224.         echo '</div>';
  225.     }
  226.  
  227.     public function related_post_hook() {
  228.         echo '<div class="jnews_related_post_container">';
  229.         echo jnews_sanitize_output( $this->related_post( false ) );
  230.         echo '</div>';
  231.     }
  232.  
  233.     public function popup_post_hook() {
  234.         echo '<div class="jnews_popup_post_container">';
  235.         $this->popup_post();
  236.         echo '</div>';
  237.     }
  238.  
  239.     public function comment_post_hook() {
  240.         echo '<div class="jnews_comment_container">';
  241.         $this->post_comment();
  242.         echo '</div>';
  243.     }
  244.  
  245.     public function post_comment() {
  246.         $show_comment = apply_filters( 'jnews_single_show_comment', true, $this->post_id );
  247.  
  248.         if ( $show_comment ) {
  249.             if ( comments_open() || '0' != jnews_get_comments_number() ) {
  250.                 comments_template();
  251.             }
  252.         }
  253.     }
  254.  
  255.     /**
  256.      * @return string
  257.      */
  258.     public function additional_fs_class() {
  259.         $class    = array();
  260.         $template = $this->get_template();
  261.  
  262.         if ( $template === '4' || $template === '5' ) {
  263.             if ( $this->get_fullscreen_mode() ) {
  264.                 $class[] = 'jeg_fs_container';
  265.             }
  266.  
  267.             if ( $this->get_parallax_mode() ) {
  268.                 $class[] = 'jeg_parallax';
  269.             }
  270.         }
  271.  
  272.         echo implode( ' ', $class );
  273.     }
  274.  
  275.     public function add_body_class( $classes ) {
  276.         if ( get_post_type() === 'post' && is_single() ) {
  277.             $template = $this->get_template();
  278.  
  279.             switch ( $template ) {
  280.                 case '1':
  281.                     $classes[] = 'jeg_single_tpl_1';
  282.                     break;
  283.                 case '2':
  284.                     $classes[] = 'jeg_single_tpl_2';
  285.                     break;
  286.                 case '3':
  287.                     $classes[] = 'jeg_single_tpl_3';
  288.                     break;
  289.                 case '4':
  290.                     $classes[] = 'jeg_single_tpl_4';
  291.                     if ( $this->get_fullscreen_mode() ) {
  292.                         $classes[] = 'jeg_force_fs';
  293.                     }
  294.                     break;
  295.                 case '5':
  296.                     $classes[] = 'jeg_single_tpl_5';
  297.                     if ( $this->get_fullscreen_mode() ) {
  298.                         $classes[] = 'jeg_force_fs';
  299.                     }
  300.                     break;
  301.                 case '6':
  302.                     $classes[] = 'jeg_single_tpl_6';
  303.                     break;
  304.                 case '7':
  305.                     $classes[] = 'jeg_single_tpl_7';
  306.                     break;
  307.                 case '8':
  308.                     $classes[] = 'jeg_single_tpl_8';
  309.                     break;
  310.                 case '9':
  311.                     $classes[] = 'jeg_single_tpl_9';
  312.                     break;
  313.                 case '10':
  314.                     $classes[] = 'jeg_single_tpl_10';
  315.                     break;
  316.                 default:
  317.                     break;
  318.             }
  319.  
  320.             $layout = $this->get_layout();
  321.  
  322.             if ( $layout === 'no-sidebar' ) {
  323.                 $classes[] = 'jeg_single_fullwidth';
  324.             } elseif ( $layout === 'no-sidebar-narrow' ) {
  325.                 $classes[] = 'jeg_single_fullwidth jeg_single_narrow';
  326.             }
  327.         }
  328.  
  329.         return $classes;
  330.     }
  331.  
  332.     public function main_class() {
  333.         $layout = $this->get_layout();
  334.  
  335.         switch ( $layout ) {
  336.             case 'no-sidebar':
  337.             case 'no-sidebar-narrow':
  338.                 echo 'jeg_sidebar_none';
  339.                 break;
  340.  
  341.             case 'left-sidebar':
  342.                 echo 'jeg_sidebar_left';
  343.                 break;
  344.  
  345.             case 'left-sidebar-narrow':
  346.                 echo 'jeg_sidebar_left jeg_wide_content';
  347.                 break;
  348.  
  349.             case 'right-sidebar-narrow':
  350.                 echo 'jeg_wide_content';
  351.                 break;
  352.  
  353.             case 'double-sidebar':
  354.                 echo 'jeg_double_sidebar';
  355.                 break;
  356.  
  357.             case 'double-right-sidebar':
  358.                 echo 'jeg_double_right_sidebar';
  359.                 break;
  360.  
  361.             default:
  362.                 break;
  363.         }
  364.     }
  365.  
  366.     public function post_date_format( $post ) {
  367.         $date_format = $this->get_date_format();
  368.  
  369.         if ( $date_format === 'ago' ) {
  370.             return jnews_ago_time( human_time_diff( get_the_time( 'U', $post ), current_time( 'timestamp' ) ) );
  371.         } elseif ( $date_format === 'default' ) {
  372.             return jeg_get_post_date( '', $post );
  373.         } elseif ( $date_format ) {
  374.             return jeg_get_post_date( $date_format, $post );
  375.         }
  376.  
  377.         return jeg_get_post_date( '', $post );
  378.     }
  379.  
  380.     public function get_template() {
  381.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  382.             $template = vp_metabox( 'jnews_single_post.override.0.template', '1', $this->post_id );
  383.         } else {
  384.             $template = get_theme_mod( 'jnews_single_blog_template', '1' );
  385.         }
  386.  
  387.         return apply_filters( 'jnews_single_post_template', $template, $this->post_id );
  388.     }
  389.  
  390.     public function get_custom_template() {
  391.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  392.             $template = vp_metabox( 'jnews_single_post.override.0.single_blog_custom', null, $this->post_id );
  393.         } else {
  394.             $template = get_theme_mod( 'jnews_single_blog_custom', 'null' );
  395.         }
  396.  
  397.         return apply_filters( 'jnews_single_post_custom_template', $template, $this->post_id );
  398.     }
  399.  
  400.     public function get_fullscreen_mode() {
  401.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  402.             $enable = vp_metabox( 'jnews_single_post.override.0.fullscreen', false, $this->post_id );
  403.         } else {
  404.             $enable = get_theme_mod( 'jnews_single_blog_enable_fullscreen', true );
  405.         }
  406.  
  407.         return apply_filters( 'jnews_single_post_fullscreen', $enable, $this->post_id );
  408.     }
  409.  
  410.     public function get_parallax_mode() {
  411.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  412.             $enable = vp_metabox( 'jnews_single_post.override.0.parallax', false, $this->post_id );
  413.         } else {
  414.             $enable = get_theme_mod( 'jnews_single_blog_enable_parallax', true );
  415.         }
  416.  
  417.         return apply_filters( 'jnews_single_post_parallax', $enable, $this->post_id );
  418.     }
  419.  
  420.     public function get_layout() {
  421.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  422.             $layout = vp_metabox( 'jnews_single_post.override.0.layout', 'right-sidebar', $this->post_id );
  423.         } else {
  424.             $layout = get_theme_mod( 'jnews_single_blog_layout', 'right-sidebar' );
  425.         }
  426.  
  427.         return apply_filters( 'jnews_single_post_layout', $layout, $this->post_id );
  428.     }
  429.  
  430.     public function has_sidebar() {
  431.         $layout = $this->get_layout();
  432.  
  433.         $sidebar = array(
  434.             'left-sidebar',
  435.             'right-sidebar',
  436.             'left-sidebar-narrow',
  437.             'right-sidebar-narrow',
  438.             'double-sidebar',
  439.             'double-right-sidebar',
  440.         );
  441.  
  442.         if ( in_array( $layout, $sidebar ) ) {
  443.             return true;
  444.         }
  445.  
  446.         return false;
  447.     }
  448.  
  449.     public function get_sidebar() {
  450.         $sidebar = get_theme_mod( 'jnews_single_sidebar', 'default-sidebar' );
  451.  
  452.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  453.             $sidebar = vp_metabox( 'jnews_single_post.override.0.sidebar', 'default-sidebar', $this->post_id );
  454.         }
  455.  
  456.         return apply_filters( 'jnews_single_post_sidebar', $sidebar, $this->post_id );
  457.     }
  458.  
  459.     public function get_second_sidebar() {
  460.         $sidebar = get_theme_mod( 'jnews_single_second_sidebar', 'default-sidebar' );
  461.  
  462.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  463.             $sidebar = vp_metabox( 'jnews_single_post.override.0.second_sidebar', 'default-sidebar', $this->post_id );
  464.         }
  465.  
  466.         return apply_filters( 'jnews_single_post_second_sidebar', $sidebar, $this->post_id );
  467.     }
  468.  
  469.     public function get_sticky_sidebar() {
  470.         if ( $this->sticky_sidebar() ) {
  471.             return 'jeg_sticky_sidebar';
  472.         }
  473.  
  474.         return false;
  475.     }
  476.  
  477.     public function sticky_sidebar() {
  478.         $sticky_sidebar = get_theme_mod( 'jnews_single_sticky_sidebar', true );
  479.  
  480.         if ( vp_metabox( 'jnews_single_post.override_template', null, $this->post_id ) ) {
  481.             $sticky_sidebar = vp_metabox( 'jnews_single_post.override.0.sticky_sidebar', false, $this->post_id );
  482.         }
  483.  
  484.         return apply_filters( 'jnews_single_post_sticky_sidebar', $sticky_sidebar, $this->post_id );
  485.     }
  486.  
  487.     public function render_sidebar() {
  488.         if ( $this->has_sidebar() ) {
  489.             $layout = $this->get_layout();
  490.  
  491.             get_template_part( 'fragment/post/single-sidebar' );
  492.  
  493.             if ( $layout === 'double-right-sidebar' || $layout === 'double-sidebar' ) {
  494.                 set_query_var( 'double_sidebar', true );
  495.                 get_template_part( 'fragment/post/single-sidebar' );
  496.             }
  497.         }
  498.     }
  499.  
  500.     public function get_sidebar_width() {
  501.         $layout = $this->get_layout();
  502.  
  503.         if ( $layout === 'left-sidebar' || $layout === 'right-sidebar' ) {
  504.             return 4;
  505.         }
  506.  
  507.         return 3;
  508.     }
  509.  
  510.     public function set_global_content_width( $layout ) {
  511.         global $content_width;
  512.         switch ( $layout ) {
  513.             case 8:
  514.                 $content_width = 790;
  515.                 break;
  516.  
  517.             case 6:
  518.                 $content_width = 585;
  519.                 break;
  520.  
  521.             case 9:
  522.                 $content_width = 877.5;
  523.                 break;
  524.  
  525.             case 12:
  526.                 $content_width = 1150;
  527.                 break;
  528.  
  529.             default:
  530.                 $content_width = 768;
  531.                 break;
  532.         }
  533.     }
  534.  
  535.  
  536.     public function main_content_width() {
  537.         $layout = $this->get_layout();
  538.  
  539.         if ( in_array( $layout, array( 'right-sidebar', 'left-sidebar' ) ) ) {
  540.             $sidebar = $this->get_sidebar();
  541.             if ( ! is_active_sidebar( $sidebar ) ) {
  542.                 $width = 12;
  543.                 $this->set_global_content_width( $width );
  544.                 return $width;
  545.             }
  546.         }
  547.  
  548.         switch ( $layout ) {
  549.             case 'left-sidebar':
  550.             case 'right-sidebar':
  551.                 $width = 8;
  552.                 break;
  553.  
  554.             case 'left-sidebar-narrow':
  555.             case 'right-sidebar-narrow':
  556.                 $width = 9;
  557.                 break;
  558.  
  559.             case 'double-sidebar':
  560.             case 'double-right-sidebar':
  561.                 $width = 6;
  562.                 break;
  563.  
  564.             case 'no-sidebar-narrow':
  565.                 $width = $layout;
  566.                 break;
  567.  
  568.             default:
  569.                 $width = 12;
  570.                 break;
  571.         }
  572.         return $width;
  573.     }
  574.  
  575.     /**
  576.      * breadcrumb
  577.      *
  578.      * @param bool $render
  579.      *
  580.      * @return mixed|string
  581.      */
  582.     public function render_breadcrumb( $render = true ) {
  583.         if ( $render ) {
  584.             echo jnews_render_breadcrumb();
  585.         }
  586.  
  587.         return jnews_render_breadcrumb();
  588.     }
  589.  
  590.     /**
  591.      * Post Share
  592.      */
  593.  
  594.     public function share_float_additional_class() {
  595.         if ( vp_metabox( 'jnews_single_post.override_template' ) && vp_metabox( 'jnews_single_post.override.0.share_position' ) ) {
  596.             if ( vp_metabox( 'jnews_single_post.override.0.share_position' ) === 'float' || vp_metabox( 'jnews_single_post.override.0.share_position' ) === 'floatbottom' ) {
  597.                 return 'with-share';
  598.             }
  599.  
  600.             return 'no-share';
  601.         }
  602.  
  603.         if ( get_theme_mod( 'jnews_single_share_position', 'top' ) === 'float' || get_theme_mod( 'jnews_single_share_position', 'top' ) === 'floatbottom' ) {
  604.             return 'with-share';
  605.         }
  606.  
  607.         return 'no-share';
  608.     }
  609.  
  610.     /**
  611.      * Post Share - Float Style
  612.      */
  613.  
  614.     public function share_float_style_class() {
  615.         if ( vp_metabox( 'jnews_single_post.override_template' ) && vp_metabox( 'jnews_single_post.override.0.share_float_style' ) ) {
  616.             echo vp_metabox( 'jnews_single_post.override.0.share_float_style' );
  617.         } else {
  618.             echo get_theme_mod( 'jnews_single_share_float_style', 'share-monocrhome' );
  619.         }
  620.     }
  621.  
  622.     /**
  623.      * Post Meta
  624.      */
  625.     public function render_post_meta() {
  626.         if ( $this->show_post_meta() ) {
  627.             $template = $this->get_template();
  628.  
  629.             switch ( $template ) {
  630.                 case '1':
  631.                 case '3':
  632.                 case '4':
  633.                 case '6':
  634.                 case '7':
  635.                 case '8':
  636.                 case '9':
  637.                     get_template_part( 'fragment/post/meta-post-1' );
  638.                     break;
  639.                 case '2':
  640.                 case '5':
  641.                 case '10':
  642.                 default:
  643.                     get_template_part( 'fragment/post/meta-post-2' );
  644.                     break;
  645.             }
  646.         }
  647.     }
  648.  
  649.     public function is_subtitle_empty() {
  650.         $subtitle = $this->render_subtitle();
  651.  
  652.         return empty( $subtitle );
  653.     }
  654.  
  655.     public function render_subtitle() {
  656.         $subtitle = wp_kses( get_post_meta( $this->post_id, 'post_subtitle', true ), wp_kses_allowed_html() );
  657.  
  658.         return apply_filters( 'jnews_single_subtitle', $subtitle, $this->post_id );
  659.     }
  660.  
  661.     public function show_post_meta() {
  662.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  663.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_meta' );
  664.         } else {
  665.             $flag = get_theme_mod( 'jnews_single_show_post_meta', true );
  666.         }
  667.  
  668.         return apply_filters( 'jnews_single_show_post_meta', $flag, $this->post_id );
  669.     }
  670.  
  671.     public function show_author_meta_image() {
  672.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  673.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_author_image' );
  674.         } else {
  675.             $flag = get_theme_mod( 'jnews_single_show_post_author_image', true );
  676.         }
  677.  
  678.         return apply_filters( 'jnews_single_show_post_author_image', $flag, $this->post_id );
  679.     }
  680.  
  681.     public function show_author_meta() {
  682.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  683.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_author' );
  684.         } else {
  685.             $flag = get_theme_mod( 'jnews_single_show_post_author', true );
  686.         }
  687.  
  688.         return apply_filters( 'jnews_single_show_post_author', $flag, $this->post_id );
  689.     }
  690.  
  691.     public function show_date_meta() {
  692.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  693.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_date' );
  694.         } else {
  695.             $flag = get_theme_mod( 'jnews_single_show_post_date', true );
  696.         }
  697.  
  698.         return apply_filters( 'jnews_single_show_post_date', $flag, $this->post_id );
  699.     }
  700.  
  701.     public function get_date_format() {
  702.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  703.             $format = vp_metabox( 'jnews_single_post.override.0.post_date_format', 'default' );
  704.  
  705.             if ( $format === 'custom' ) {
  706.                 $format = vp_metabox( 'jnews_single_post.override.0.post_date_format_custom', 'Y/m/d' );
  707.             }
  708.         } else {
  709.             $format = get_theme_mod( 'jnews_single_post_date_format', 'default' );
  710.  
  711.             if ( $format === 'custom' ) {
  712.                 $format = get_theme_mod( 'jnews_single_post_date_format_custom', 'Y/m/d' );
  713.             }
  714.         }
  715.  
  716.         return apply_filters( 'jnews_single_post_date_format_custom', $format, $this->post_id );
  717.     }
  718.  
  719.     public function show_category_meta() {
  720.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  721.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_category' );
  722.         } else {
  723.             $flag = get_theme_mod( 'jnews_single_show_category', true );
  724.         }
  725.  
  726.         return apply_filters( 'jnews_single_show_category', $flag, $this->post_id );
  727.     }
  728.  
  729.     public function show_comment_meta() {
  730.         $flag = get_theme_mod( 'jnews_single_comment', true );
  731.  
  732.         return apply_filters( 'jnews_single_comment', $flag, $this->post_id );
  733.     }
  734.  
  735.     public function show_reading_time_meta() {
  736.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  737.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_reading_time' );
  738.         } else {
  739.             $flag = get_theme_mod( 'jnews_single_reading_time', false );
  740.         }
  741.  
  742.         return apply_filters( 'jnews_single_show_reading_time', $flag, $this->post_id );
  743.     }
  744.  
  745.     public function show_zoom_button_meta() {
  746.         $flag = jnews_show_zoom_button();
  747.  
  748.         return apply_filters( 'jnews_single_show_zoom_button', $flag, $this->post_id );
  749.     }
  750.  
  751.     public function zoom_button_meta() {
  752.         if ( $this->show_zoom_button_meta() && is_single() ) {
  753.             $output = '';
  754.  
  755.             if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  756.                 $zoom_out_step = vp_metabox( 'jnews_single_post.override.0.zoom_button_out_step', 2 );
  757.                 $zoom_in_step  = vp_metabox( 'jnews_single_post.override.0.zoom_button_in_step', 3 );
  758.             } else {
  759.                 $zoom_out_step = get_theme_mod( 'jnews_single_zoom_button_out_step', 2 );
  760.                 $zoom_in_step  = get_theme_mod( 'jnews_single_zoom_button_in_step', 3 );
  761.             }
  762.  
  763.             $output = '<div class="jeg_meta_zoom" data-in-step="' . $zoom_in_step . '" data-out-step="' . $zoom_out_step . '">
  764.                             <div class="zoom-dropdown">
  765.                                 <div class="zoom-icon">
  766.                                     <span class="zoom-icon-small">A</span>
  767.                                     <span class="zoom-icon-big">A</span>
  768.                                 </div>
  769.                                 <div class="zoom-item-wrapper">
  770.                                     <div class="zoom-item">
  771.                                         <button class="zoom-out"><span>A</span></button>
  772.                                         <button class="zoom-in"><span>A</span></button>
  773.                                         <div class="zoom-bar-container">
  774.                                             <div class="zoom-bar"></div>
  775.                                         </div>
  776.                                         <button class="zoom-reset"><span>' . jnews_return_translation( 'Reset', 'jnews', 'zoom_reset' ) . '</span></button>
  777.                                     </div>
  778.                                 </div>
  779.                             </div>
  780.                         </div>';
  781.  
  782.             echo jnews_sanitize_by_pass( $output );
  783.         }
  784.     }
  785.  
  786.     public function reading_time_meta() {
  787.  
  788.         if ( $this->show_reading_time_meta() ) {
  789.  
  790.             $output = '';
  791.  
  792.             if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  793.                 $wpm = (int) vp_metabox( 'jnews_single_post.override.0.post_reading_time_wpm' );
  794.             } else {
  795.                 $wpm = (int) get_theme_mod( 'jnews_single_reading_time_wpm', 300 );
  796.             }
  797.  
  798.             $content = get_post_field( 'post_content', $this->post_id );
  799.  
  800.             if ( $content && $wpm ) {
  801.                 $content      = strip_shortcodes( $content );
  802.                 $word_count   = str_word_count( $content );
  803.                 $word_count   = ceil( $word_count / $wpm );
  804.                 $reading_time = jnews_return_translation( 'Reading Time: ', 'jnews', 'reading_time' );
  805.                 if ( defined( 'JNEWS_FRONT_TRANSLATION' ) ) {
  806.                     $reading_time .= sprintf( _n( jnews_return_translation( '%d min read', 'jnews', 'min_read_s' ), jnews_return_translation( '%d mins read', 'jnews', 'min_read_p', 'jnews' ), $word_count ), $word_count );
  807.                 } else {
  808.                     $reading_time .= sprintf( _n( '%d min read', '%d mins read', $word_count, 'jnews' ), $word_count );
  809.                 }
  810.  
  811.                 if ( $word_count ) {
  812.                     $output =
  813.                         '<div class="jeg_meta_reading_time">
  814.                         <span>
  815.                             ' . $reading_time . '
  816.                         </span>
  817.                     </div>';
  818.                 }
  819.             }
  820.  
  821.             echo jnews_sanitize_by_pass( $output );
  822.         }
  823.     }
  824.  
  825.     public function trending_post_meta( $post_id ) {
  826.         if ( $this->get_template() === 'custom' ) {
  827.             return false;
  828.         }
  829.  
  830.         $output   = '';
  831.         $flag     = vp_metabox( 'jnews_single_post.trending_post', null, $post_id );
  832.         $position = vp_metabox( 'jnews_single_post.trending_post_position', 'meta', $post_id );
  833.  
  834.         if ( $flag && $position === 'meta' ) {
  835.             $output = '<div class="jeg_meta_trending"><i class="fa fa-bolt"></i></div>';
  836.         }
  837.  
  838.         echo jnews_sanitize_by_pass( $output );
  839.     }
  840.  
  841.     public function trending_post_title( $post_id ) {
  842.         if ( $this->get_template() === 'custom' ) {
  843.             return false;
  844.         }
  845.  
  846.         $output   = '';
  847.         $flag     = vp_metabox( 'jnews_single_post.trending_post', null, $post_id );
  848.         $position = vp_metabox( 'jnews_single_post.trending_post_position', 'meta', $post_id );
  849.  
  850.         if ( $flag && $position === 'title' ) {
  851.             $label  = $position === 'title' ? '<strong>' . vp_metabox( 'jnews_single_post.trending_post_label', '', $post_id ) . '</strong>' : '';
  852.             $output = "<div class=\"jeg_meta_trending\"><i class=\"fa fa-bolt\"></i>{$label}</div>";
  853.         }
  854.  
  855.         echo jnews_sanitize_by_pass( $output );
  856.     }
  857.  
  858.     public function post_tag_render() {
  859.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  860.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_tag' );
  861.         } else {
  862.             $flag = get_theme_mod( 'jnews_single_show_tag', true );
  863.         }
  864.  
  865.         if ( $flag ) {
  866.             $this->render_post_tag();
  867.         }
  868.     }
  869.  
  870.     public function render_post_tag() {
  871.         echo '<span>' . jnews_return_translation( 'Tags:', 'jnews', 'tags' ) . '</span> ' . get_the_tag_list( '', '', '' );
  872.     }
  873.  
  874.     /**
  875.      * Featured Post
  876.      */
  877.     public function render_featured_post_alternate() {
  878.         $format = get_post_format();
  879.  
  880.         if ( $format === 'video' || $format === 'gallery' ) {
  881.             $this->render_featured_post();
  882.         }
  883.     }
  884.  
  885.     public function render_featured_post() {
  886.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  887.             $flag = vp_metabox( 'jnews_single_post.override.0.show_featured' );
  888.         } elseif ( get_theme_mod( 'jnews_single_show_featured', true ) ) {
  889.                 $format = get_post_format();
  890.             switch ( $format ) {
  891.                 case 'video':
  892.                     $flag = get_theme_mod( 'jnews_single_show_featured_video', true );
  893.                     break;
  894.                 case 'gallery':
  895.                     $flag = get_theme_mod( 'jnews_single_show_featured_gallery', true );
  896.                     break;
  897.                 default:
  898.                     $flag = get_theme_mod( 'jnews_single_show_featured_image', true );
  899.             }
  900.         } else {
  901.             $flag = false;
  902.         }
  903.  
  904.         $current_page = jnews_get_post_current_page();
  905.         if ( $flag && ( $current_page === 1 || ! apply_filters( 'jnews_single_first_split_featured', false, $this->post_id ) ) ) {
  906.             $this->feature_post_1();
  907.         }
  908.     }
  909.  
  910.     public function get_featured_post_image_size( $size ) {
  911.         $template = $this->get_template();
  912.  
  913.         if ( $template === '1' || $template === '2' || $template === '4' || $template === '5' || $template === '6' || $template === '8' || $template === '10' ) {
  914.             if ( $this->has_sidebar() ) {
  915.                 $width_image = false;
  916.             } else {
  917.                 $width_image = true;
  918.             }
  919.         } else {
  920.             $width_image = true;
  921.         }
  922.  
  923.         if ( ! $width_image ) {
  924.             switch ( $size ) {
  925.                 case 'no-crop':
  926.                     $image_size = 'jnews-featured-750';
  927.                     break;
  928.                 case 'crop-500';
  929.                     $image_size = 'jnews-750x375';
  930.                     break;
  931.                 case 'crop-715':
  932.                     $image_size = 'jnews-750x536';
  933.                     break;
  934.                 default:
  935.                     $image_size = 'jnews-750x375';
  936.             }
  937.         } else {
  938.             switch ( $size ) {
  939.                 case 'no-crop':
  940.                     $image_size = 'jnews-featured-1140';
  941.                     break;
  942.                 case 'crop-500';
  943.                     $image_size = 'jnews-1140x570';
  944.                     break;
  945.                 case 'crop-715':
  946.                     $image_size = 'jnews-1140x815';
  947.                     break;
  948.                 default:
  949.                     $image_size = 'jnews-1140x570';
  950.             }
  951.         }
  952.  
  953.         return $image_size;
  954.     }
  955.  
  956.     public function get_single_thumbnail_size() {
  957.         if ( vp_metabox( 'jnews_single_post.override_image_size', null, $this->post_id ) ) {
  958.             $image_size = vp_metabox( 'jnews_single_post.image_override.0.single_post_thumbnail_size', 'crop-500', $this->post_id );
  959.         } else {
  960.             $image_size = get_theme_mod( 'jnews_single_post_thumbnail_size', 'crop-500' );
  961.         }
  962.         return $this->get_featured_post_image_size( $image_size );
  963.     }
  964.  
  965.     public function get_gallery_thumbnail_size() {
  966.         if ( vp_metabox( 'jnews_single_post.override_image_size', null, $this->post_id ) ) {
  967.             $image_size = vp_metabox( 'jnews_single_post.image_override.0.single_post_gallery_size', 'crop-500', $this->post_id );
  968.         } else {
  969.             $image_size = get_theme_mod( 'jnews_single_post_gallery_size', 'crop-500' );
  970.         }
  971.  
  972.         return $this->get_featured_post_image_size( $image_size );
  973.     }
  974.  
  975.     public function feature_post_1( $image_size = null, $gallery_size = null, $id = null, $class = null ) {
  976.         $format = get_post_format();
  977.  
  978.         switch ( $format ) {
  979.             case 'gallery':
  980.                 if ( $gallery_size === null ) {
  981.                     $gallery_size = $this->get_gallery_thumbnail_size();
  982.                 }
  983.                 $output = $this->featured_gallery( $gallery_size, $id, $class );
  984.                 break;
  985.             case 'video':
  986.                 $output = "<div {$id} class='jeg_feature_video_wrapper {$class}'>" . $this->featured_video() . '</div>';
  987.                 break;
  988.             default:
  989.                 if ( $image_size === null ) {
  990.                     $image_size = $this->get_single_thumbnail_size();
  991.                 }
  992.                 $output = $this->featured_image( $image_size, $id, $class );
  993.                 break;
  994.         }
  995.  
  996.         echo jnews_sanitize_output( $output );
  997.     }
  998.  
  999.     public function featured_gallery( $size, $id = null, $class = null ) {
  1000.         $size      = apply_filters( 'jnews_featured_gallery_image_size', $size );
  1001.         $dimension = jnews_get_image_dimension_by_name( $size );
  1002.         $output    = '';
  1003.         $images    = get_post_meta( $this->post_id, '_format_gallery_images', true );
  1004.  
  1005.         if ( $images ) {
  1006.             if ( ( SCRIPT_DEBUG || get_theme_mod( 'jnews_load_necessary_asset', false ) ) && ! is_user_logged_in() ) {
  1007.                 $frontend_assets = \JNews\Asset\FrontendAsset::getInstance();
  1008.                 $frontend_assets->load_style();
  1009.                 $frontend_assets->load_script();
  1010.             }
  1011.             $output  = "<div {$id} class=\"jeg_featured thumbnail-container jeg_owlslider size-{$dimension} {$class}\">";
  1012.             $output .= '<div class="featured_gallery">';
  1013.  
  1014.             $popup = get_theme_mod( 'jnews_single_popup_script', 'magnific' );
  1015.  
  1016.             foreach ( $images as $key => $image_id ) {
  1017.                 $image     = wp_get_attachment_image_src( $image_id, 'full' );
  1018.                 $image_url = isset( $image[0] ) ? $image[0] : '';
  1019.  
  1020.                 $output         .= ( $popup !== 'disable' ) ? "<a href=\"{$image_url}\">" : '';
  1021.                 $image_mechanism = ! get_theme_mod( 'jnews_single_post_thumbnail_force_normal_load', false ) ? 'jnews_single_image_lazy_owl' : 'jnews_single_image_owl';
  1022.                 if ( 'jnews_single_image_owl' === $image_mechanism && 0 >= $key ) {
  1023.                     $output .= \JNews\Image\ImageNormalLoad::getInstance()->owl_single_image( $image_id, $size );
  1024.                 } else {
  1025.                     $output .= apply_filters( 'jnews_single_image_lazy_owl', $image_id, $size );
  1026.                 }
  1027.                 $output .= ( $popup !== 'disable' ) ? '</a>' : '';
  1028.             }
  1029.  
  1030.             $output .= '</div>';
  1031.             $output .= '</div>';
  1032.             if ( ( SCRIPT_DEBUG || get_theme_mod( 'jnews_load_necessary_asset', false ) ) && ! is_user_logged_in() ) {
  1033.                 wp_print_styles( 'jnews-global-slider' );
  1034.                 wp_print_scripts( 'tiny-slider-noconflict' );
  1035.             }
  1036.         }
  1037.  
  1038.         return apply_filters( 'jnews_featured_gallery', $output, $this->post_id );
  1039.     }
  1040.  
  1041.  
  1042.     public function featured_image( $size, $id = null, $class = null ) {
  1043.         $size   = 'full';
  1044.         $output = "<div {$id} class=\"jeg_featured featured_image {$class}\">";
  1045.  
  1046.         $popup     = get_theme_mod( 'jnews_single_popup_script', 'magnific' );
  1047.         $image_src = $this->get_featured_image_src( 'full' );
  1048.         if ( has_post_thumbnail() ) {
  1049.             $output .= ( $popup !== 'disable' ) ? "<a href=\"{$image_src}\">" : '';
  1050.             if ( ! get_theme_mod( 'jnews_single_post_thumbnail_force_normal_load', false ) ) {
  1051.                 $output .= apply_filters( 'jnews_image_thumbnail_unwrap', $this->post_id, $size );
  1052.             } else {
  1053.                 $output .= \JNews\Image\ImageNormalLoad::getInstance()->image_thumbnail_unwrap( $this->post_id, $size );
  1054.             }
  1055.             $output .= ( $popup !== 'disable' ) ? '</a>' : '';
  1056.         }
  1057.  
  1058.         $output .= '</div>';
  1059.  
  1060.         return apply_filters( 'jnews_featured_image', $output, $this->post_id );
  1061.     }
  1062.  
  1063.     public function get_featured_image_src( $size ) {
  1064.         $post_thumbnail_id = get_post_thumbnail_id( $this->post_id );
  1065.         $image             = wp_get_attachment_image_src( $post_thumbnail_id, $size );
  1066.  
  1067.         return isset( $image[0] ) ? $image[0] : false;
  1068.     }
  1069.  
  1070.     public function featured_video() {
  1071.         $following = defined( 'JNEWS_AUTOLOAD_POST' ) ? false : get_theme_mod( 'jnews_single_following_video', false );
  1072.         $position  = get_theme_mod( 'jnews_single_following_video_position', 'top_right' );
  1073.         $output    = "<div class=\"jeg_featured featured_video {$position}\" data-following='{$following}' data-position='{$position}'><div class='jeg_featured_video_wrapper'>";
  1074.  
  1075.         $video_url = get_post_meta( $this->post_id, '_format_video_embed', true );
  1076.         if ( class_exists( '\JNews\Paywall\Truncater\Truncater' ) ) {
  1077.             if ( \JNews\Paywall\Truncater\Truncater::instance()->check_status() ) {
  1078.                 if ( jeg_metabox( 'jnews_paywall_metabox.enable_preview_video', false, $this->post_id ) ) {
  1079.                     $video_url = jeg_metabox( 'jnews_paywall_metabox.video_preview_url', '', $this->post_id );
  1080.                 }
  1081.             }
  1082.         }
  1083.         $video_format = strtolower( pathinfo( $video_url, PATHINFO_EXTENSION ) );
  1084.         $featured_img = jnews_get_image_src( get_post_thumbnail_id( $this->post_id ), 'jnews-featured-750' );
  1085.  
  1086.         if ( $video_url === '' ) {
  1087.             $output .= '<div class="jeg_video_container" style="display: none;"></div>';
  1088.         } elseif ( jnews_check_video_type( $video_url ) === 'youtube' ) {
  1089.             $output .=
  1090.                 '<div data-src="' . esc_url( $video_url ) . '" data-type="youtube" data-repeat="false" data-autoplay="false" class="youtube-class clearfix">
  1091.                    <div class="jeg_video_container"></div>
  1092.                </div>';
  1093.         } elseif ( jnews_check_video_type( $video_url ) === 'vimeo' ) {
  1094.             $output .=
  1095.                 '<div data-src="' . esc_url( $video_url ) . '" data-repeat="false" data-autoplay="false" data-type="vimeo" class="vimeo-class clearfix">
  1096.                    <div class="jeg_video_container"></div>
  1097.                </div>';
  1098.         } elseif ( jnews_check_video_type( $video_url ) === 'dailymotion' ) {
  1099.             $output .=
  1100.                 '<div data-src="' . esc_url( $video_url ) . '" data-repeat="false" data-autoplay="false" data-type="dailymotion" class="dailymotion-class clearfix">
  1101.                    <div class="jeg_video_container"></div>
  1102.                </div>';
  1103.         } elseif ( $video_format == 'mp4' ) {
  1104.             $output .=
  1105.                 '<div class="jeg_video_container">
  1106.                     <video width="640" height="360" style="width: 100%; height: 100%;" poster="' . esc_attr( $featured_img ) . '" controls preload="none" >
  1107.                         <source type="video/mp4" src="' . esc_url( $video_url ) . '">
  1108.                     </video>
  1109.                </div>';
  1110.         } elseif ( wp_oembed_get( $video_url ) ) {
  1111.             $output .= '<div class="jeg_video_container">' . wp_oembed_get( $video_url ) . '</div>';
  1112.         } else {
  1113.             $output .= '<div class="jeg_video_container">' . $video_url . '</div>';
  1114.         }
  1115.  
  1116.         $output .= "<div class='floating_close'></div></div></div>";
  1117.  
  1118.         return apply_filters( 'jnews_featured_video', $output, $this->post_id );
  1119.     }
  1120.  
  1121.     /**
  1122.      * Next Prev Post
  1123.      */
  1124.     public function prev_next_post() {
  1125.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  1126.             $flag = vp_metabox( 'jnews_single_post.override.0.show_prev_next_post' );
  1127.         } else {
  1128.             $flag = get_theme_mod( 'jnews_single_show_prev_next_post', true );
  1129.         }
  1130.  
  1131.         $show_prev_next = apply_filters( 'jnews_single_show_prev_next_post', $flag, $this->post_id );
  1132.  
  1133.         if ( $show_prev_next ) {
  1134.             get_template_part( 'fragment/post/prev-next-post' );
  1135.         }
  1136.     }
  1137.  
  1138.     /**
  1139.      * Popup Post
  1140.      */
  1141.     public function popup_post() {
  1142.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  1143.             $flag   = vp_metabox( 'jnews_single_post.override.0.show_popup_post' );
  1144.             $number = vp_metabox( 'jnews_single_post.override.0.number_popup_post' );
  1145.         } else {
  1146.             $flag   = get_theme_mod( 'jnews_single_show_popup_post', true );
  1147.             $number = get_theme_mod( 'jnews_single_number_popup_post', 1 );
  1148.         }
  1149.  
  1150.         $show_popup_post = apply_filters( 'jnews_single_show_popup_post', $flag, $this->post_id );
  1151.  
  1152.         if ( $show_popup_post ) {
  1153.             set_query_var( 'number_popup_post', $number );
  1154.             get_template_part( 'fragment/post/popup-post' );
  1155.         }
  1156.     }
  1157.  
  1158.     /**
  1159.      * Check author box option
  1160.      *
  1161.      * @return bool|mixed|void
  1162.      */
  1163.     public function check_author_box() {
  1164.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  1165.             $flag = vp_metabox( 'jnews_single_post.override.0.show_author_box' );
  1166.         } else {
  1167.             $flag = get_theme_mod( 'jnews_single_show_author_box', false );
  1168.         }
  1169.  
  1170.         return apply_filters( 'jnews_single_show_author_box', $flag, $this->post_id );
  1171.     }
  1172.  
  1173.     /**
  1174.      * Author Box
  1175.      */
  1176.     public function author_box() {
  1177.         $show_author_box = $this->check_author_box();
  1178.  
  1179.         if ( $show_author_box ) {
  1180.             get_template_part( 'fragment/post/author-box' );
  1181.         }
  1182.     }
  1183.  
  1184.     public function recursive_category( $categories, &$result ) {
  1185.         foreach ( $categories as $category ) {
  1186.             $result[] = $category;
  1187.             $children = get_categories( array( 'parent' => $category->term_id ) );
  1188.  
  1189.             if ( ! empty( $children ) ) {
  1190.                 $this->recursive_category( $children, $result );
  1191.             }
  1192.         }
  1193.     }
  1194.  
  1195.     /**
  1196.      * Check if we can render related post
  1197.      *
  1198.      * @return boolean
  1199.      */
  1200.     public function can_render_related_post() {
  1201.         if ( apply_filters( 'jnews_force_disable_related_post', true ) ) {
  1202.             return false;
  1203.         }
  1204.  
  1205.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  1206.             $flag = vp_metabox( 'jnews_single_post.override.0.show_post_related' );
  1207.         } else {
  1208.             $flag = get_theme_mod( 'jnews_single_show_post_related', false );
  1209.         }
  1210.  
  1211.         return $flag;
  1212.     }
  1213.  
  1214.     /**
  1215.      * Check if we can render inline related post
  1216.      *
  1217.      * @return boolean
  1218.      */
  1219.     public function can_render_inline_related_post() {
  1220.         if ( apply_filters( 'jnews_force_disable_inline_related_post', false ) ) {
  1221.             return false;
  1222.         }
  1223.  
  1224.         if ( function_exists( 'is_amp_endpoint' ) ) {
  1225.             if ( is_amp_endpoint() ) {
  1226.                 return false;
  1227.             }
  1228.         }
  1229.  
  1230.         if ( vp_metabox( 'jnews_single_post.override_template' ) ) {
  1231.             $flag = vp_metabox( 'jnews_single_post.override.0.show_inline_post_related' );
  1232.         } else {
  1233.             $flag = get_theme_mod( 'jnews_single_post_show_inline_related', false );
  1234.         }
  1235.  
  1236.         return $flag;
  1237.     }
  1238.  
  1239.     /**
  1240.      * @param bool|true $echo
  1241.      *
  1242.      * @return array|string
  1243.      */
  1244.     public function related_post( $echo = true ) {
  1245.         if ( $this->can_render_related_post() ) {
  1246.             $content_width = is_numeric( $this->main_content_width() ) ? $this->main_content_width() : 8;
  1247.  
  1248.             do_action( 'jnews_module_set_width', $content_width );
  1249.             $post_per_page = get_theme_mod( 'jnews_single_number_post_related', 6 );
  1250.  
  1251.             $match    = get_theme_mod( 'jnews_single_post_related_match', 'category' );
  1252.             $category = $tag = $result = array();
  1253.             if ( $match === 'category' ) {
  1254.                 $this->recursive_category( get_the_category(), $result );
  1255.  
  1256.                 if ( $result ) {
  1257.                     foreach ( $result as $cat ) {
  1258.                         $category[] = $cat->term_id;
  1259.                     }
  1260.                 }
  1261.             } elseif ( $match === 'tag' ) {
  1262.                 $tags = get_the_tags();
  1263.                 if ( $tags ) {
  1264.                     foreach ( $tags as $cat ) {
  1265.                         $tag[] = $cat->term_id;
  1266.                     }
  1267.                 }
  1268.             }
  1269.  
  1270.             $attr = array(
  1271.                 'first_title'             => get_theme_mod( 'jnews_single_post_related_override_title', false ) ? get_theme_mod( 'jnews_single_post_related_ftitle', 'Related' ) : jnews_return_translation( 'Related', 'jnews', 'related' ),
  1272.                 'second_title'            => get_theme_mod( 'jnews_single_post_related_override_title', false ) ? get_theme_mod( 'jnews_single_post_related_stitle', 'Posts' ) : jnews_return_translation( ' Posts', 'jnews', 'posts' ),
  1273.                 'header_type'             => get_theme_mod( 'jnews_single_post_related_header', 'heading_6' ),
  1274.                 'date_format'             => get_theme_mod( 'jnews_single_post_related_date', 'default' ),
  1275.                 'date_format_custom'      => get_theme_mod( 'jnews_single_post_related_date_custom', 'Y/m/d' ),
  1276.                 'excerpt_length'          => get_theme_mod( 'jnews_single_post_related_excerpt', 20 ),
  1277.                 'pagination_number_post'  => $post_per_page,
  1278.                 'number_post'             => $post_per_page,
  1279.                 'unique_content'          => get_theme_mod( 'jnews_single_post_related_unique_content', 'disable' ),
  1280.                 'include_category'        => implode( ',', $category ),
  1281.                 'include_tag'             => implode( ',', $tag ),
  1282.                 'exclude_post'            => $this->post_id,
  1283.                 'sort_by'                 => get_theme_mod( 'jnews_single_post_related_sort_by', 'latest' ),
  1284.                 'pagination_mode'         => get_theme_mod( 'jnews_single_post_pagination_related', 'disable' ),
  1285.                 'pagination_scroll_limit' => get_theme_mod( 'jnews_single_post_auto_load_related', 3 ),
  1286.                 'paged'                   => 1,
  1287.             );
  1288.  
  1289.             $name = 'JNews_Block_' . get_theme_mod( 'jnews_single_post_related_template', '22' );
  1290.             $name = jnews_get_view_class_from_shortcode( $name );
  1291.  
  1292.             /** @var $content_instance BlockViewAbstract */
  1293.             $content_instance = jnews_get_module_instance( $name );
  1294.             $result           = $content_instance->build_module( $attr );
  1295.  
  1296.             if ( $echo ) {
  1297.                 echo jnews_sanitize_output( $result );
  1298.             } else {
  1299.                 return $result;
  1300.             }
  1301.         }
  1302.     }
  1303.  
  1304.     public function render_inline_related_post( $content ) {
  1305.         if ( get_post_type() === 'post' && is_single() && ! is_admin() ) {
  1306.             if ( $this->can_render_inline_related_post() ) {
  1307.                 $tag     = new ContentTag( $content );
  1308.                 $pnumber = $tag->total( 'p' );
  1309.  
  1310.                 $paragraph = get_theme_mod( 'jnews_single_post_inline_related_paragraph', 2 );
  1311.                 $random    = get_theme_mod( 'jnews_single_post_inline_related_random', false );
  1312.                 $class     = get_theme_mod( 'jnews_single_post_inline_related_float', 'left' );
  1313.                 $fullwidth = get_theme_mod( 'jnews_single_post_inline_related_fullwidth', false );
  1314.  
  1315.                 if ( $random && is_array( $pnumber ) ) {
  1316.                     $maxparagraph = count( $pnumber ) - 2;
  1317.                     $paragraph    = rand( $paragraph, $maxparagraph );
  1318.                 }
  1319.  
  1320.                 if ( ! $fullwidth ) {
  1321.                     $class .= ' half';
  1322.                 }
  1323.  
  1324.                 $related_content =
  1325.                     "<div class='jnews_inline_related_post_wrapper {$class}'>
  1326.                        " . $this->build_inline_related_post() . '
  1327.                    </div>';
  1328.  
  1329.                 $content = $this->prefix_insert_after_paragraph( $related_content, $paragraph, $tag );
  1330.             }
  1331.         }
  1332.  
  1333.         return $content;
  1334.     }
  1335.  
  1336.     public function build_inline_related_post() {
  1337.         $match         = get_theme_mod( 'jnews_single_post_inline_related_match', 'category' );
  1338.         $related_width = get_theme_mod( 'jnews_single_post_inline_related_fullwidth', false ) ? 8 : 4;
  1339.         $post_per_page = get_theme_mod( 'jnews_single_post_inline_related_number', 3 );
  1340.         $tag           = $category = $result = array();
  1341.  
  1342.         do_action( 'jnews_module_set_width', $related_width );
  1343.  
  1344.         if ( $match === 'category' ) {
  1345.             $this->recursive_category( get_the_category(), $result );
  1346.  
  1347.             if ( $result ) {
  1348.                 foreach ( $result as $cat ) {
  1349.                     $category[] = $cat->term_id;
  1350.                 }
  1351.             }
  1352.         } elseif ( $match === 'tag' ) {
  1353.             $tags = get_the_tags();
  1354.             if ( $tags ) {
  1355.                 foreach ( $tags as $cat ) {
  1356.                     $tag[] = $cat->term_id;
  1357.                 }
  1358.             }
  1359.         }
  1360.  
  1361.         $attr = array(
  1362.             'first_title'            => get_theme_mod( 'jnews_single_post_inline_related_ftitle', 'Related' ),
  1363.             'second_title'           => get_theme_mod( 'jnews_single_post_inline_related_stitle', 'Posts' ),
  1364.             'header_type'            => get_theme_mod( 'jnews_single_post_inline_related_header', 'heading_6' ),
  1365.             'date_format'            => get_theme_mod( 'jnews_single_post_inline_related_date', 'default' ),
  1366.             'date_format_custom'     => get_theme_mod( 'jnews_single_post_inline_related_date_custom', 'Y/m/d' ),
  1367.             'pagination_number_post' => $post_per_page,
  1368.             'number_post'            => $post_per_page,
  1369.             'unique_content'         => get_theme_mod( 'jnews_single_post_inline_related_unique_content', 'disable' ),
  1370.             'include_category'       => implode( ',', $category ),
  1371.             'include_tag'            => implode( ',', $tag ),
  1372.             'exclude_post'           => $this->post_id,
  1373.             'sort_by'                => get_theme_mod( 'jnews_single_post_inline_related_sort_by', 'latest' ),
  1374.             'pagination_mode'        => get_theme_mod( 'jnews_single_post_inline_related_pagination', 'nextprev' ),
  1375.             'paged'                  => 1,
  1376.         );
  1377.  
  1378.         $name = 'JNews_Block_' . get_theme_mod( 'jnews_single_post_inline_related_template', '29' );
  1379.         $name = jnews_get_view_class_from_shortcode( $name );
  1380.  
  1381.         /** @var $content_instance BlockViewAbstract */
  1382.         $content_instance = jnews_get_module_instance( $name );
  1383.         $result           = $content_instance->build_module( $attr );
  1384.  
  1385.         $output =
  1386.             "<div class='jnews_inline_related_post'>
  1387.                {$result}
  1388.            </div>";
  1389.  
  1390.         return $output;
  1391.     }
  1392.  
  1393.     /**
  1394.      * Filter jnews_ads_global_enable
  1395.      *
  1396.      * @param boolean   $flag Flag of ads.
  1397.      * @param int|false $post_id The ID of the current item in the WordPress Loop. False if $post is not set.
  1398.      *
  1399.      * @return boolean
  1400.      */
  1401.     public function ads_post_enable( $flag, $post_id ) {
  1402.         if ( get_post_type() === 'post' && is_single() && $flag ) {
  1403.             return ! vp_metabox( 'jnews_single_post.disable_ad', false, $post_id );
  1404.         }
  1405.         return $flag;
  1406.     }
  1407.  
  1408.     /**
  1409.      * @param $insertion
  1410.      * @param $paragraph_id
  1411.      * @param $tag ContentTag
  1412.      *
  1413.      * @return string
  1414.      */
  1415.     protected function prefix_insert_after_paragraph( $insertion, $paragraph_id, $tag ) {
  1416.         $end  = get_theme_mod( 'jnews_single_post_inline_related_overflow', 'top' ) === 'top' ? false : true;
  1417.         $line = $tag->find( 'p', $paragraph_id, $end );
  1418.  
  1419.         return jeg_string_insert( $tag->get_content(), $insertion, $line );
  1420.     }
  1421. }
  1422.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement