Advertisement
arie_cristianD

Override ArchiveViewAbstract.php

Oct 23rd, 2023
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.11 KB | None | 0 0
  1. <?php
  2. /**
  3.  * @author : Jegtheme
  4.  */
  5.  
  6. namespace JNews\Module\Archive;
  7.  
  8. use JNews\Module\ModuleViewAbstract;
  9. use JNews\Module\ModuleQuery;
  10.  
  11. abstract class ArchiveViewAbstract extends ModuleViewAbstract {
  12.     public $post_per_page;
  13.  
  14.     protected static $term;
  15.  
  16.     protected static $index;
  17.  
  18.     protected static $result = array();
  19.  
  20.     public function is_on_editor() {
  21.  
  22.         if ( function_exists( 'jeg_is_frontend_vc' ) && jeg_is_frontend_vc() ) {
  23.             return true;
  24.         }
  25.  
  26.         if ( isset( $_REQUEST['action'] ) ) {
  27.  
  28.             if ( ( $_REQUEST['action'] === 'elementor' || $_REQUEST['action'] === 'elementor_ajax' ) ) {
  29.                 return true;
  30.             }
  31.         }
  32.  
  33.         return false;
  34.     }
  35.  
  36.     public function render_module( $attr, $column_class, $result = null ) {
  37.         return $this->is_on_editor() ? $this->render_module_back( $attr, $column_class ) : $this->render_module_front( $attr, $column_class );
  38.     }
  39.  
  40.     public function get_term() {
  41.         return ! self::$term ? get_queried_object() : self::$term;
  42.     }
  43.  
  44.     public function get_number_post() {
  45.  
  46.         if ( ! $this->post_per_page ) {
  47.  
  48.             $this->post_per_page = get_option( 'posts_per_page' );
  49.  
  50.             if ( is_category() ) {
  51.                 if ( get_theme_mod( 'jnews_category_page_layout', 'right-sidebar' ) === 'custom-template' ) {
  52.                     $this->post_per_page = (int) get_theme_mod( 'jnews_category_custom_template_number_post', 10 );
  53.                 }
  54.             } elseif ( is_author() ) {
  55.                 if ( get_theme_mod( 'jnews_author_page_layout', 'right-sidebar' ) === 'custom-template' ) {
  56.                     $this->post_per_page = (int) get_theme_mod( 'jnews_author_custom_template_number_post', 10 );
  57.                 }
  58.             } elseif ( is_archive() ) {
  59.                 if ( get_theme_mod( 'jnews_archive_page_layout', 'right-sidebar' ) === 'custom-template' ) {
  60.                     $this->post_per_page = (int) get_theme_mod( 'jnews_archive_custom_template_number_post', 10 );
  61.                 }
  62.             }
  63.         }
  64.  
  65.         return $this->post_per_page;
  66.     }
  67.  
  68.     protected function do_query( $attr ) {
  69.         if ( ! self::$result ) {
  70.  
  71.             if ( is_category() ) {
  72.                 $term = $this->get_term();
  73.  
  74.                 if ( isset( $term->term_id ) ) {
  75.                     $attr['include_category'] = $term->term_id;
  76.                     $this->post_per_page      = $this->get_number_post();
  77.                 }
  78.             } elseif ( is_tag() ) {
  79.                 $term = $this->get_term();
  80.  
  81.                 if ( isset( $term->term_id ) ) {
  82.                     $attr['include_tag'] = $term->term_id;
  83.                     $this->post_per_page = $this->get_number_post();
  84.                 }
  85.             } elseif ( is_author() ) {
  86.                 $user = get_userdata( get_query_var( 'author' ) );
  87.  
  88.                 if ( isset( $user->ID ) ) {
  89.                     $attr['include_author'] = $user->ID;
  90.                     $this->post_per_page    = $this->get_number_post();
  91.                 }
  92.             } elseif ( is_date() ) {
  93.                 $attr['date_query']  = array( // fix custom archive template date issue (see: #H1Gk3Nfv)
  94.                     array(
  95.                         'year'  => get_query_var( 'year' ) ? get_query_var( 'year' ) : null,
  96.                         'month' => get_query_var( 'monthnum' ) ? get_query_var( 'monthnum' ) : null,
  97.                         'day'   => get_query_var( 'day' ) ? get_query_var( 'day' ) : null,
  98.                     ),
  99.                 );
  100.                 $this->post_per_page = $this->get_number_post();
  101.             }
  102.  
  103.             $attr['sort_by']                = 'latest';
  104.             $attr['post_type']              = 'post';
  105.             $attr['post_offset']            = 0;
  106.             $attr['number_post']            = $this->post_per_page;
  107.             $attr['pagination_number_post'] = $this->post_per_page;
  108.             $attr['paged']                  = jnews_get_post_current_page();
  109.  
  110.             $result = ModuleQuery::do_query( $attr );
  111.  
  112.             if ( isset( $result['result'] ) ) {
  113.                 self::$result = $result;
  114.             }
  115.         }
  116.  
  117.         return self::$result;
  118.     }
  119.  
  120.     protected function get_result( $attr, $number_post ) {
  121.         $result = $this->do_query( $attr );
  122.  
  123.         if ( ! empty( $result['result'] ) && is_array( $result['result'] ) ) {
  124.  
  125.             if ( isset( $number_post['size'] ) ) {
  126.                 $number_post = $number_post['size'];
  127.             }
  128.  
  129.             // $result['result'] = $number_post ? array_slice( $result['result'], self::$index, $number_post ) : array_slice( $result['result'], self::$index );
  130.  
  131.             if ( ! is_admin() ) {
  132.                 self::$index += $number_post;
  133.             }
  134.         }
  135.  
  136.         return $result;
  137.     }
  138.  
  139.     abstract public function render_module_back( $attr, $column_class );
  140.  
  141.     abstract public function render_module_front( $attr, $column_class );
  142. }
  143.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement