File: /var/www/vfconf/wp-content/plugins/gutentor/includes/blocks/modules/class-gutentor-p1.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'Gutentor_P1' ) ) {
/**
* Functions related to Blog Post
*
* @package Gutentor
* @since 1.0.1
*/
class Gutentor_P1 extends Gutentor_Block_Base {
/**
* Name of the block.
*
* @access protected
* @since 1.0.1
* @var string
*/
protected $block_name = 'p1';
/**
* Gets an instance of this object.
* Prevents duplicate instances which avoid artefacts and improves performance.
*
* @static
* @access public
* @return object
* @since 1.0.1
*/
public static function get_instance() {
// Store the instance locally to avoid private static replication.
static $instance = null;
// Only run these methods if they haven't been ran previously.
if ( null === $instance ) {
$instance = new self();
}
// Always return the instance.
return $instance;
}
/**
* Set register_block_type_args variable on parent
* Used for blog template loading
*
* @since 3.0.6
* @package Gutentor
* @author Gutentor <info@gutentor.com>
*/
public function register_block_type_args() {
$this->register_block_type_args = array(
'view_script_handles' => array( 'magnific-popup', 'masonry' ),
'style_handles' => array( 'magnific-popup' ),
);
}
/**
* Load Dependencies
* Used for blog template loading
*
* @since 1.0.1
* @package Gutentor
* @author Gutentor <info@gutentor.com>
*/
public function load_dependencies() {
require_once GUTENTOR_PATH . 'includes/block-templates/normal/class-normal-p1-templates.php';
require_once GUTENTOR_PATH . 'includes/block-templates/normal/class-normal-p1-woo-templates.php';
require_once GUTENTOR_PATH . 'includes/block-templates/normal/class-normal-p1-edd-templates.php';
}
/**
* Returns attributes for this Block
*
* @static
* @access public
* @return array
* @since 1.0.1
*/
public function get_attrs() {
$blog_post_attr = array(
'gID' => array(
'type' => 'string',
'default' => '',
),
/*column*/
'blockItemsColumn' => array(
'type' => 'object',
'default' => array(
'desktop' => 'grid-md-4',
'tablet' => 'grid-sm-4',
'mobile' => 'grid-xs-12',
),
),
'timestamp' => array(
'type' => 'number',
'default' => 0,
),
'gName' => array(
'type' => 'string',
'default' => 'gutentor/p1',
),
'p1Temp' => array(
'type' => 'string',
'default' => 'gutentor_p1_template1',
),
'gStyle' => array(
'type' => 'string',
'default' => 'gutentor-blog-grid',
),
'pTaxTerm' => array(
'type' => 'array',
'items' => array(
'type' => 'object',
'label' => array(
'type' => 'string',
),
'value' => array(
'type' => 'number',
),
),
),
'pTaxType' => array(
'type' => 'string',
'default' => 'category',
),
'pTaxOperator' => array(
'type' => 'string',
'default' => 'IN',
),
'pPostType' => array(
'type' => 'string',
'default' => 'post',
),
'pIncludePosts' => array(
'type' => 'string',
),
'pExcludePosts' => array(
'type' => 'string',
),
'pOffsetPosts' => array(
'type' => 'number',
),
'postsToShow' => array(
'type' => 'number',
'default' => 6,
),
'order' => array(
'type' => 'string',
'default' => 'desc',
),
'orderBy' => array(
'type' => 'string',
'default' => 'date',
),
'pNoFoundTxt' => array(
'type' => 'string',
'default' => 'Nothing Found',
),
'pEqlHeight' => array(
'type' => 'boolean',
'default' => false,
),
'categories' => array(
'type' => 'string',
'default' => '',
),
'gutentorBlogPostImageLink' => array(
'type' => 'boolean',
'default' => false,
),
'pReverseContent' => array(
'type' => 'boolean',
'default' => false,
),
'pOnColInList' => array(
'type' => 'boolean',
'default' => false,
),
'gutentorBlogPostImageLinkNewTab' => array(
'type' => 'boolean',
'default' => false,
),
'pContentPos' => array(
'type' => 'object',
'default' => array(
'desktop' => 'g-pos-center',
'tablet' => 'g-pos-center',
'mobile' => 'g-pos-center',
),
),
'pMsyOn' => array(
'type' => 'boolean',
'default' => false,
),
'pTimeline' => array(
'type' => 'object',
'default' => array(
'enable' => false,
/*icon*/
'icon' => array(
'label' => 'fa-arrow-down',
'value' => (int) gutentor_get_options( 'fa-version' ) === 4 ? 'fa fa-arrow-down' : 'fas fa-arrow-down',
'code' => 'f108',
),
'iSize' => array(
'type' => 'px',
'mobile' => 10,
),
'iColor' => array(
'enable' => true,
'normal' => '#fff',
),
/*node*/
'nBgColor' => array(
'enable' => true,
'normal' => '#d5dee6',
),
'nWidth' => array(
'enable' => true,
'type' => 'px',
'mobile' => 30,
),
'nHeight' => array(
'enable' => true,
'type' => 'px',
'mobile' => 30,
),
'border' => array(
'rTypeN' => '%',
'rTopN' => '50',
'rRightN' => '50',
'rBottomN' => '50',
'rLeftN' => '50',
),
/*width*/
'lColor' => array(
'enable' => true,
'normal' => '#d5dee6',
),
'lWidth' => array(
'enable' => true,
'type' => 'px',
'mobile' => 3,
),
),
),
'pTypeWpQuery' => array(
'type' => 'string',
'default' => 'default',
),
'pWpQuery' => array(
'type' => 'string',
'default' => '',
),
'pImgDisplayType' => array(
'type' => 'string',
'default' => 'bg-image',
),
);
$blog_partial_attrs = array_merge_recursive( $blog_post_attr, $this->get_module_common_attrs() );
return array_merge_recursive( $blog_partial_attrs, $this->get_module_query_elements_common_attrs() );
}
/**
* Render Blog Post Data
*
* @param array $attributes
* @param string $content
* @return string
* @since 1.0.1
* @access public
*/
public function render_callback( $attributes, $content ) {
$blockID = isset( $attributes['pID'] ) ? $attributes['pID'] : $attributes['gID'];
$gID = isset( $attributes['gID'] ) ? $attributes['gID'] : '';
$pTypeWpQuery = isset( $attributes['pTypeWpQuery'] ) ? $attributes['pTypeWpQuery'] : false;
$output = '';
$default_class = gutentor_block_add_default_classes( 'gutentor-p1', $attributes );
$tag = $attributes['mTag'] ? $attributes['mTag'] : 'div';
$pFType = $attributes['pFType'] ? $attributes['pFType'] : '';
$template = $attributes['p1Temp'] ? $attributes['p1Temp'] : '';
$enable_equal_height = isset( $attributes['pEqlHeight'] ) && $attributes['pEqlHeight'] ? 'g-equal-height' : '';
$align = isset( $attributes['align'] ) ? 'align' . $attributes['align'] : '';
$blockComponentAnimation = isset( $attributes['mAnimation'] ) ? $attributes['mAnimation'] : '';
$post_type = isset( $attributes['pPostType'] ) ? $attributes['pPostType'] : '';
$nothing_found_text = isset( $attributes['pNoFoundTxt'] ) ? $attributes['pNoFoundTxt'] : '';
$thumbnail_enable = isset( $attributes['pOnFImg'] ) ? $attributes['pOnFImg'] : false;
$timeline = isset( $attributes['pTimeline'] ) ? $attributes['pTimeline'] : false;
$timelineEnable = is_array( $timeline ) && array_key_exists( 'enable', $timeline ) ? $timeline['enable'] : false;
$timelineClass = '';
$thumb_class = '';
$access_no_thumbnail = array( 'product', 'download' );
$gptm_class = $template === 'gutentor_p1_template5' ? 'gptm-item' : '';
$pImgDisplayType = ( isset( $attributes['pImgDisplayType'] ) ) ? $attributes['pImgDisplayType'] : false;
/*query args*/
$query_args = array(
'posts_per_page' => isset( $attributes['postsToShow'] ) ? $attributes['postsToShow'] : 6,
'post_type' => isset( $attributes['pPostType'] ) ? $attributes['pPostType'] : 'post',
'orderby' => isset( $attributes['orderBy'] ) ? $attributes['orderBy'] : 'date',
'order' => isset( $attributes['order'] ) ? $attributes['order'] : 'desc',
'paged' => isset( $attributes['paged'] ) ? $attributes['paged'] : 1,
'ignore_sticky_posts' => true,
'post_status' => 'publish',
);
/*load custom template search*/
global $wp_query;
$gutentor_template = $wp_query->get(
'gutentor-templates'
);
if ( isset( $gutentor_template['type'] ) && $gutentor_template['type'] === 'search' ) {
$query_args['s'] = $gutentor_template['s'];
}
if ( $pTypeWpQuery === 'default' ) {
/*Backward compatible*/
if ( isset( $attributes['categories'] ) && ! empty( $attributes['categories'] ) ) {
if ( is_array( $attributes['categories'] ) && ! gutentor_is_array_empty( $attributes['categories'] ) ) {
$query_args['taxonomy'] = 'category';
$query_args['term'] = $attributes['categories'];
}
if ( ! is_array( $attributes['categories'] ) ) {
$query_args['taxonomy'] = 'category';
$query_args['term'] = $attributes['categories'];
}
}
if ( isset( $attributes['pTaxType'] ) && ! empty( $attributes['pTaxType'] ) &&
isset( $attributes['pTaxTerm'] ) && ! empty( $attributes['pTaxTerm'] ) ) {
$query_args['taxonomy'] = $attributes['pTaxType'];
$query_args['taxOperator'] = $attributes['pTaxOperator'] ? $attributes['pTaxOperator'] : 'IN';
if ( is_array( $attributes['pTaxTerm'] ) ) {
$p1_terms = array();
foreach ( $attributes['pTaxTerm'] as $p1_term ) {
$p1_terms [] = $p1_term['value'];
}
$query_args['term'] = $p1_terms;
} elseif ( is_string( $attributes['pTaxTerm'] ) || is_numeric( $attributes['pTaxTerm'] ) ) {
$query_args['term'] = $attributes['pTaxTerm'];
}
}
if ( isset( $attributes['pAuthor'] ) && ! empty( $attributes['pAuthor'] ) ) {
if ( is_array( $attributes['pAuthor'] ) ) {
$author_list = array();
foreach ( $attributes['pAuthor'] as $data ) {
$author_list[] = $data['value'];
}
$query_args['author__in'] = $author_list;
}
}
if ( isset( $attributes['pOffsetPosts'] ) ) {
$query_args['offset'] = $attributes['pOffsetPosts'];
}
if ( isset( $attributes['pIncludePosts'] ) && ! empty( $attributes['pIncludePosts'] ) ) {
$query_args['post__in'] = $attributes['pIncludePosts'];
}
if ( isset( $attributes['pExcludePosts'] ) && ! empty( $attributes['pExcludePosts'] ) ) {
$query_args['post__not_in'] = $attributes['pExcludePosts'];
}
/*Search query*/
if ( isset( $attributes['s'] ) && ! empty( $attributes['s'] ) ) {
$query_args['s'] = $attributes['s'];
}
}
if ( $pTypeWpQuery === 'custom' ) {
$pWpQueryJson = isset( $attributes['pWpQuery'] ) ? $attributes['pWpQuery'] : false;
$pWpQueryData = json_decode( $pWpQueryJson, true );
$query_args = array_merge( $query_args, $pWpQueryData );
}
$the_query = new WP_Query( gutentor_get_query( $query_args ) );
$tag = gutentor_get_module_tag( $tag );
$output .= '<' . esc_attr( $tag ) . ' class="' . esc_attr( apply_filters( 'gutentor_post_module_main_wrap_class', gutentor_concat_space( 'gutentor-post-module', 'section-' . $gID, 'gutentor-post-module-p1', $template, $align, $default_class, $enable_equal_height ), $attributes ) ) . '" id="' . esc_attr( $blockID ) . '" data-gbid="' . esc_attr( $gID ) . '" ' . GutentorAnimationOptionsDataAttr( $blockComponentAnimation ) . '>' . "\n";
$output .= apply_filters( 'gutentor_post_module_before_container', '', $attributes );
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_post_module_container_class', 'grid-container', $attributes ) ) . "'>";
$output .= apply_filters( 'gutentor_post_module_before_block_items', '', $attributes );
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_post_module_grid_row_class', 'grid-row', $attributes ) ) . "' " . gutentor_get_html_attr( apply_filters( 'gutentor_post_module_attr', array(), $attributes ) ) . '>';
$cat_style = '';
$post_categories = array();
if ( $the_query->have_posts() ) :
$index = 0;
while ( $the_query->have_posts() ) :
$the_query->the_post();
$post_categories = array_merge( $post_categories, wp_get_post_categories( get_the_ID() ) );
$video_url = get_post_meta( get_the_ID(), 'gutentor_meta_video_url', true );
$video_id = get_post_meta( get_the_ID(), 'gutentor_meta_video_id', true );
if ( ! in_array( $post_type, $access_no_thumbnail ) ) {
$thumb_class = has_post_thumbnail() && $thumbnail_enable ? '' : 'gutentor-post-no-thumb';
$thumb_class = ( ( $video_url || $video_id ) && gutentor_pro_active() && $pFType === 'video' ) ? '' : $thumb_class;
$thumb_class = $template === 'gutentor_p1_template5' && $pImgDisplayType === 'normal-image' ? '' : $thumb_class;
}
if ( $timelineEnable ) {
if ( $index % 2 === 0 ) {
$timelineClass = 'g-timeline-even';
} else {
$timelineClass = 'g-timeline-odd';
}
}
$output .= "<article class='" . esc_attr( apply_filters( 'gutentor_post_module_grid_column_class', gutentor_concat_space( 'gutentor-post', $thumb_class, $timelineClass ), $attributes ) ) . "'>";
if ( $timelineEnable ) {
$output .= "<div class='g-timeline-post-wrap'>";
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_post_module_post_item', gutentor_concat_space( 'gutentor-post-item', $gptm_class ), $attributes ) ) . "'>";
$output .= apply_filters( 'gutentor_post_module_p1_query_data', '', get_post(), $attributes );
$output .= '</div>';/*.gutentor-post-item*/
$output .= '</div>';/*.g-timeline-post-wrap*/
$output .= apply_filters( 'gutentor_post_module_p1_query_data_after', '', get_post(), $attributes );
} else {
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_post_module_post_item', gutentor_concat_space( 'gutentor-post-item', $gptm_class ), $attributes ) ) . "'>";
$output .= apply_filters( 'gutentor_post_module_p1_query_data', '', get_post(), $attributes );
$output .= '</div>';/*.gutentor-post-item*/
}
$output .= '</article>';/*.article*/
++$index;
endwhile;
else :
$output .= '<header class="g-n-f-t-1"><h2 class="g-n-f-title">' . esc_html( $nothing_found_text ) . '</h2></header>';
endif;
$output .= '</div>';/*.grid-row*/
$output .= apply_filters( 'gutentor_post_module_after_block_items', '', $attributes );
$output .= '</div>';/*.grid-container*/
$output .= apply_filters( 'gutentor_post_module_after_container', '', $attributes );
if ( $post_categories && $content === 'ajax' ) {
$cat_style = gutentor_pm_post_dynamic_categories_color( array_unique( $post_categories ) );
$output .= '<style>' . wp_strip_all_tags( $cat_style ) . '</style>';
}
$output .= '</' . esc_attr( $tag ) . '>';/*
.gutentor-blog-post-wrapper*/
// Restore original Post Data
wp_reset_postdata();
return $output;
}
}
}
Gutentor_P1::get_instance()->run();