File: /home/scientificreligi/public_html/wp-content/themes/scientific-religion/inc/authors.class.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit( 'Direct script access denied.' );
}
if ( ! class_exists( 'G5Plus_Auteur_Authors' ) ) {
	class G5Plus_Auteur_Authors {
		private static $_instance;
		public static function getInstance() {
			if ( self::$_instance == null ) {
				self::$_instance = new self();
			}
			return self::$_instance;
		}
		public function init() {
		}
		public function archive_markup( $query_args = null, $settings = null ) {
			$paged = get_query_var( 'paged' );
			if ( isset( $_REQUEST['settings'] ) ) {
				$settings = wp_parse_args( $_REQUEST['settings'], $settings );
				$paged    = isset( $settings['currentPage']['paged'] ) ? $settings['currentPage']['paged'] : 1;
			}
			$query_args['paged'] = $paged;
			$items_per_page           = intval( $query_args['number'] );
			$settings['itemSelector'] = 'article';
			$is_slider                = $settings['is_slider'];
			$dots                     = $settings['dots'];
			$nav                      = $settings['nav'];
			$autoplay                 = $settings['autoplay'];
			$autoplay_timeout         = $settings['autoplay_timeout'];
			$nav_style                = $settings['nav_style'];
			$nav_position             = $settings['nav_position'];
			$nav_size                 = $settings['nav_size'];
			$nav_hover_scheme         = $settings['nav_hover_scheme'];
			$nav_hover_style          = $settings['nav_hover_style'];
			$authors     = $settings['authors'];
			$post_paging = $settings['post_paging'];
			$image_size  = $settings['image_size'];
			$columns        = intval( $settings['columns'] );
			$columns_gutter = intval( $settings['columns_gutter'] );
			$columns_xl     = intval( $settings['columns_xl'] );
			$columns_lg     = intval( $settings['columns_lg'] );
			$columns_md     = intval( $settings['columns_md'] );
			$columns_sm     = intval( $settings['columns_sm'] );
			if ( $items_per_page != 0 && $post_paging !== 'none' ) {
				$query_args['offset'] = ( max( 1, $paged ) - 1 ) * $items_per_page;
			}
			$id_authors = array();
			if ( ! empty( $authors ) ) {
				$slugs      = explode( ',', $authors );
				$slugs      = array_map( 'trim', $slugs );
				foreach ( $slugs as $slug ) {
					$term = get_term_by( 'slug', $slug, 'product_author' );
					if ( is_object( $term ) ) {
						$id_authors[] = $term->term_id;
					}
				}
				$query_args['include'] = $id_authors;
			}
			$product_authors = get_terms( $query_args );
			$item_class  = array( 'gsf-product-author-item' );
			$inner_class = $owl_args = array();
			if ( 'on' === $is_slider ) {
				$inner_class[] = 'owl-carousel owl-theme';
				$owl_args      = array(
					'items'           => $columns_xl,
					'margin'          => $columns == 1 ? 0 : $columns_gutter,
					'slideBy'         => $columns_xl,
					'dots'            => ( $dots === 'on' ) ? true : false,
					'nav'             => ( $nav === 'on' ) ? true : false,
					'responsive'      => array(
						'1200' => array(
							'items'   => $columns_xl,
							'margin'  => $columns_xl == 1 ? 0 : $columns_gutter,
							'slideBy' => $columns_xl,
						),
						'992'  => array(
							'items'   => $columns_lg,
							'margin'  => $columns_lg == 1 ? 0 : $columns_gutter,
							'slideBy' => $columns_lg,
						),
						'768'  => array(
							'items'   => $columns_md,
							'margin'  => $columns_md == 1 ? 0 : $columns_gutter,
							'slideBy' => $columns_md,
						),
						'576'  => array(
							'items'   => $columns_sm,
							'margin'  => $columns_sm == 1 ? 0 : $columns_gutter,
							'slideBy' => $columns_sm,
						),
						'0'    => array(
							'items'   => $columns,
							'margin'  => $columns == 1 ? 0 : $columns_gutter,
							'slideBy' => $columns,
						)
					),
					'autoHeight'      => true,
					'autoplay'        => ( $autoplay === 'on' ) ? true : false,
					'autoplayTimeout' => intval( $autoplay_timeout ),
				);
				if ( $nav_style == 'nav-square-text' || $nav_style == 'nav-circle-text' ) {
					$owl_args['navText'] = array(
						'<i class="fal fa-angle-left"></i> <span>' . esc_html__( 'Prev', 'auteur-framework' ) . '</span>',
						'<span>' . esc_html__( 'Next', 'auteur-framework' ) . '</span> <i class="fal fa-angle-right"></i>'
					);
				}
				if ( $nav === 'on' ) {
					$inner_class = array_merge( $inner_class, array(
						$nav_position,
						$nav_style,
						$nav_size,
						$nav_hover_scheme,
						$nav_hover_style
					) );
				}
			} else {
				$inner_class[] = 'gf-gutter-' . $columns_gutter;
				$inner_class[] = 'gf-blog-inner';
				$item_class[]  = 'grid-item';
				$columns      = array(
					'xl' => $columns_xl,
					'lg' => $columns_lg,
					'md' => $columns_md,
					'sm' => $columns_sm,
					''   => $columns
				);
				$item_class[] = G5Plus_Auteur()->helper()->get_bootstrap_columns( $columns );
			}
			$totalRecord = sizeof( $product_authors );
			if ( empty( $image_size ) ) {
				$image_size = 'full';
			}
			$settingId             = isset( $settings['settingId'] ) ? $settings['settingId'] : mt_rand();
			$settings['settingId'] = $settingId;
			?>
            <div data-items-wrapper="<?php echo esc_attr( $settingId ) ?>" class="product-authors clearfix">
				<?php
				if ( $totalRecord > 0 ): ?>
                    <div data-items-container="true"
                         class="gsf-product-authors-inner <?php echo join( ' ', $inner_class ); ?>"
                         data-owl-options='<?php echo json_encode( $owl_args ); ?>'>
						<?php foreach ( $product_authors as $author ):
							$prefix = G5P()->getMetaPrefix();
							$first_name = get_term_meta( $author->term_id, "{$prefix}product_author_first_name", true );
							$first_name_character = mb_substr( $first_name, 0, 1 );
							$last_name = get_term_meta( $author->term_id, "{$prefix}product_author_last_name", true );
							$last_name_character = mb_substr( $last_name, 0, 1 );
							?>
                            <article data-first-name="<?php echo esc_attr( $first_name_character ) ?>"
                                     data-last-name="<?php echo esc_attr( $last_name_character ) ?>" <?php post_class( $item_class ); ?>>
								<?php
								$id     = $author->term_id;
								$img    = G5P()->termMeta()->get_product_author_thumb( $id );
								$img_id = isset( $img['id'] ) && ! empty( $img['id'] ) ? $img['id'] : ''; ?>
                                <div class="entry-thumbnail-wrap">
                                    <a href="<?php echo esc_url( get_term_link( $id, 'product_author' ) ) ?>"
                                       title="<?php echo esc_attr( $author->name ) ?>"></a>
									<?php
									G5Plus_Auteur()->blog()->render_post_image_markup( array(
										'image_id'          => $img_id,
										'image_size'        => $image_size,
										'display_permalink' => false,
										'image_mode'        => 'background'
									) );
									?>
                                </div>
                                <h6 class="gsf-product-author-name fs-13 text-center mg-top-15 uppercase fw-bold"><a
                                            href="<?php echo esc_url( get_term_link( $id, 'product_author' ) ) ?>"
                                            class="transition03 gsf-link"
                                            title="<?php echo esc_attr( $author->name ) ?>"><?php echo esc_html( $author->name ) ?></a>
                                </h6>
                            </article>
						<?php endforeach; ?>
                    </div>
				<?php else: ?>
                    <div class="item-not-found"><?php esc_html_e( 'No item found', 'auteur-framework' ); ?></div>
				<?php endif;
				if ( $post_paging !== 'none' ) {
					$this->pagination_markup( $query_args, $settings );
				}
				?>
            </div>
			<?php
		}
		public function pagination_markup( $query_args = null, $settings = null ) {
			$post_paging = $settings['post_paging'];
			unset( $query_args['offset'] );
			$total    = wp_count_terms( $query_args['taxonomy'], $query_args );
			$per_page = $query_args['number'];
			if ( $per_page > 0 ) {
				$max_num_pages = ceil( $total / $per_page );
			} else {
				$max_num_pages = 1;
			}
			$paged        = isset( $settings['currentPage']['paged'] ) ? $settings['currentPage']['paged'] : get_query_var( 'paged', 1 );
			$pagenum_link = isset( $settings['pagenum_link'] ) ? $settings['pagenum_link'] : '';
			if ( ( ! isset( $_REQUEST['action'] ) || empty( $_REQUEST['action'] ) ) ) {
				$settings['pagenum_link'] = html_entity_decode( get_pagenum_link() );
				G5Plus_Auteur()->custom_js()->addJsVariable( array(
					'settings' => $settings,
					'query'    => $query_args
				), "gf_ajax_paginate_{$settings['settingId']}" );
			}
			if ( ( $max_num_pages > 1 ) && ( $post_paging !== '' ) && ( $post_paging !== 'none' ) ) {
				G5Plus_Auteur()->helper()->getTemplate( "paging/{$post_paging}", array(
					'settingId'     => $settings['settingId'],
					'pagenum_link'  => $pagenum_link,
					'isMainQuery'   => isset( $settings['isMainQuery'] ),
					'paged'         => $paged,
					'max_num_pages' => $max_num_pages
				) );
			}
		}
	}
}