File: /var/www/vfconf/wp-content/plugins/gutentor/includes/blocks/widgets/class-gutentor-blog-post.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'Gutentor_Blog_Post' ) ) {
/**
* Functions related to Blog Post
*
* @package Gutentor
* @since 1.0.1
*/
class Gutentor_Blog_Post extends Gutentor_Block_Base {
/**
* Name of the block.
*
* @access protected
* @since 1.0.1
* @var string
*/
protected $block_name = 'blog-post';
/**
* Gets an instance of this object.
* Prevents duplicate instances which avoid artefacts and improves performance.
*
* @static
* @access public
* @since 1.0.1
* @return object
*/
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;
}
/**
* 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/widgets/class-widget-blog-post-templates.php';
}
/**
* Returns attributes for this Block
*
* @static
* @access public
* @since 1.0.1
* @return array
*/
protected function get_attrs() {
$blog_post_attr = array(
'blockID' => array(
'type' => 'string',
'default' => '',
),
'timestamp' => array(
'type' => 'number',
'default' => 0,
),
'gutentorBlockName' => array(
'type' => 'string',
),
/*blog specific*/
'blockBlogTemplate' => array(
'type' => 'string',
'default' => 'blog-template1',
),
'blockBlogStyle' => array(
'type' => 'string',
'default' => 'blog-grid',
),
'postsToShow' => array(
'type' => 'number',
'default' => 6,
),
'entryMetaFontSize' => array(
'type' => 'number',
'default' => 14,
),
'order' => array(
'type' => 'string',
'default' => 'desc',
),
'orderBy' => array(
'type' => 'string',
'default' => 'date',
),
'categories' => array(
'type' => 'string',
'default' => '',
),
'gutentorBlogPostImageLink' => array(
'type' => 'boolean',
'default' => false,
),
'gutentorBlogPostImageLinkNewTab' => array(
'type' => 'boolean',
'default' => false,
),
'enablePostImage' => array(
'type' => 'boolean',
'default' => true,
),
'enablePostTitle' => array(
'type' => 'boolean',
'default' => true,
),
'enablePostAuthor' => array(
'type' => 'boolean',
'default' => true,
),
'enablePostDate' => array(
'type' => 'boolean',
'default' => true,
),
'enablePostCategory' => array(
'type' => 'boolean',
'default' => true,
),
'enablePostExcerpt' => array(
'type' => 'boolean',
'default' => true,
),
'excerptLength' => array(
'type' => 'number',
'default' => 100,
),
'enableButton' => array(
'type' => 'boolean',
'default' => true,
),
'buttonIcon' => array(
'type' => 'object',
'default' => array(
'label' => 'fa-book',
'value' => 'fas fa-book',
'code' => 'f108',
),
),
'buttonText' => array(
'type' => 'string',
'default' => __( 'Read More', 'gutentor' ),
),
'imageDisplayOptions' => array(
'type' => 'string',
'default' => 'normal-image',
),
'bgImageOptions' => array(
'type' => 'object',
'default' => array(
'backgroundImage' => '',
'height' => array(
'desktop' => 50,
'tablet' => 50,
'mobile' => 50,
),
'backgroundSize' => '',
'backgroundPosition' => '',
'backgroundRepeat' => '',
'backgroundAttachment' => '',
),
),
'imageBorder' => array(
'type' => 'object',
'default' => array(
'borderStyle' => 'none',
'borderTop' => '',
'borderRight' => '',
'borderBottom' => '',
'borderLeft' => '',
'borderColor' => '',
'borderRadiusType' => 'px',
'borderRadiusTop' => '',
'borderRadiusRight' => '',
'borderRadiusBottom' => '',
'borderRadiusLeft' => '',
),
),
'imageOverlayColor' => array(
'type' => 'object',
'default' => array(
'enable' => false,
'normal' => '',
'hover' => '',
),
),
'entryMetaColor' => array(
'type' => 'object',
'default' => array(
'enable' => false,
'normal' => '',
'hover' => '',
),
),
'blockEntryMetaTypography' => array(
'type' => 'object',
'default' => array(
'fontType' => '',
'systemFont' => '',
'googleFont' => '',
'customFont' => '',
'fontSize' => array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
),
'fontWeight' => '',
'textTransform' => '',
'fontStyle' => '',
'textDecoration' => '',
'lineHeight' => array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
),
'letterSpacing' => array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
),
),
),
'blockEntryMetaMargin' => array(
'type' => 'object',
'default' => array(
'type' => 'px',
'desktopTop' => '',
'desktopRight' => '',
'desktopBottom' => '',
'desktopLeft' => '',
'tabletTop' => '',
'tabletRight' => '',
'tabletBottom' => '',
'tabletLeft' => '',
'mobileTop' => '',
'mobileRight' => '',
'mobileBottom' => '',
'mobileLeft' => '',
),
),
'blockEntryMetaPadding' => array(
'type' => 'object',
'default' => array(
'type' => 'px',
'desktopTop' => '',
'desktopRight' => '',
'desktopBottom' => '',
'desktopLeft' => '',
'tabletTop' => '',
'tabletRight' => '',
'tabletBottom' => '',
'tabletLeft' => '',
'mobileTop' => '',
'mobileRight' => '',
'mobileBottom' => '',
'mobileLeft' => '',
),
),
'mBGImageSrc' => array(
'type' => 'string',
'default' => 'self-hosted-local',
),
'mBGVideoSrc' => array(
'type' => 'string',
'default' => 'self-hosted-local',
),
'mBGVideoUrl' => array(
'type' => 'string',
'default' => 'https://www.youtube.com/watch?v=bGMi7L78hVk',
),
);
return array_merge_recursive( $blog_post_attr, $this->get_single_item_common_attrs() );
}
/**
* Blog Post Attributes Default Values
*
* @since 1.0.1
* @package Gutentor
* @author Gutentor <info@gutentor.com>
*/
public function get_default_values() {
$blog_attr = array(
'blockID' => '',
'gutentorBlockName' => '',
'timestamp' => 0,
'blockBlogStyle' => 'blog-grid',
'blockBlogTemplate' => 'blog-template1',
'postsToShow' => 6,
'entryMetaFontSize' => 14,
'order' => 'desc',
'orderBy' => 'date',
'categories' => '',
'enablePostImage' => true,
'enablePostTitle' => true,
'enablePostAuthor' => true,
'enablePostDate' => true,
'enablePostCategory' => true,
'enablePostExcerpt' => true,
'excerptLength' => 100,
'enableButton' => true,
'gutentorBlogPostImageLink' => false,
'gutentorBlogPostImageLinkNewTab' => false,
'buttonIcon' => array(
'label' => 'fa-book',
'value' => 'fas fa-book',
'code' => 'f108',
),
'buttonText' => __( 'Read More', 'gutentor' ),
'imageDisplayOptions' => 'normal-image',
'bgImageOptions' => array(
'backgroundImage' => '',
'height' => array(
'desktop' => 50,
'tablet' => 50,
'mobile' => 50,
),
'backgroundSize' => '',
'backgroundPosition' => '',
'backgroundRepeat' => '',
'backgroundAttachment' => '',
),
'imageBorder' => array(
'borderStyle' => 'none',
'borderTop' => '',
'borderRight' => '',
'borderBottom' => '',
'borderLeft' => '',
'borderColor' => '',
'borderRadiusType' => 'px',
'borderRadiusTop' => '',
'borderRadiusRight' => '',
'borderRadiusBottom' => '',
'borderRadiusLeft' => '',
),
'imageOverlayColor' => array(
'enable' => false,
'normal' => '',
'hover' => '',
),
'entryMetaColor' => array(
'enable' => false,
'normal' => '',
'hover' => '',
),
'blockEntryMetaTypography' => array(
'fontType' => '',
'systemFont' => '',
'googleFont' => '',
'customFont' => '',
'fontSize' => array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
),
'fontWeight' => '',
'textTransform' => '',
'fontStyle' => '',
'textDecoration' => '',
'lineHeight' => array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
),
'letterSpacing' => array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
),
),
'blockEntryMetaMargin' => array(
'type' => 'px',
'desktopTop' => '',
'desktopRight' => '',
'desktopBottom' => '',
'desktopLeft' => '',
'tabletTop' => '',
'tabletRight' => '',
'tabletBottom' => '',
'tabletLeft' => '',
'mobileTop' => '',
'mobileRight' => '',
'mobileBottom' => '',
'mobileLeft' => '',
),
'blockEntryMetaPadding' => array(
'type' => 'px',
'desktopTop' => '',
'desktopRight' => '',
'desktopBottom' => '',
'desktopLeft' => '',
'tabletTop' => '',
'tabletRight' => '',
'tabletBottom' => '',
'tabletLeft' => '',
'mobileTop' => '',
'mobileRight' => '',
'mobileBottom' => '',
'mobileLeft' => '',
),
);
$blog_attr = apply_filters( 'gutentor_blog_post_get_default_values', $blog_attr );
return $blog_attr;
}
/**
* Render Blog Post Data
*
* @since 1.0.1
* @access public
*
* @param array $attributes
* @param string $content
* @return string
*/
public function render_callback( $attributes, $content ) {
$blockID = isset( $attributes['blockID'] ) ? $attributes['blockID'] : '';
$output = '';
$default_class = gutentor_block_add_default_classes( 'gutentor-blog-post', $attributes );
// the query
$args = array(
'posts_per_page' => $attributes['postsToShow'],
'orderby' => $attributes['orderBy'],
'order' => $attributes['order'],
'cat' => $attributes['categories'],
'ignore_sticky_posts' => 1,
);
$tag = $attributes['blockSectionHtmlTag'] ? $attributes['blockSectionHtmlTag'] : 'section';
$template = $attributes['blockBlogTemplate'] ? $attributes['blockBlogTemplate'] : '';
$align = isset( $attributes['align'] ) ? 'align' . $attributes['align'] : '';
$blockComponentAnimation = isset( $attributes['blockComponentAnimation'] ) ? $attributes['blockComponentAnimation'] : '';
$blockItemsWrapAnimation = isset( $attributes['blockItemsWrapAnimation'] ) ? $attributes['blockItemsWrapAnimation'] : '';
$the_query = new WP_Query( gutentor_get_query( $args ) );
if ( $the_query->have_posts() ) :
$tag = gutentor_get_module_tag( $tag );
$output .= '<' . esc_attr( $tag ) . ' class="' . esc_attr( apply_filters( 'gutentor_save_section_class', 'gutentor-section gutentor-blog-post-wrapper ' . gutentor_concat_space( $template, $align, $default_class ) . '', $attributes ) ) . '" id="section-' . esc_attr( $blockID ) . '" ' . GutentorAnimationOptionsDataAttr( $blockComponentAnimation ) . '>' . "\n";
$output .= apply_filters( 'gutentor_save_before_container', '', $attributes );
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_save_container_class', 'grid-container', $attributes ) ) . "'>";
$output .= apply_filters( 'gutentor_save_before_block_items', '', $attributes );
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_save_grid_item_wrap_class', 'gutentor-grid-item-wrap', $attributes ) ) . " ' " . apply_filters( 'gutentor_save_grid_item_wrap_attr', '', $attributes ) . ' ' . GutentorAnimationOptionsDataAttr( $blockItemsWrapAnimation ) . '>';
$output .= "<div class='" . esc_attr( apply_filters( 'gutentor_save_grid_row_class', 'grid-row', $attributes ) ) . " ' " . apply_filters( 'gutentor_save_grid_row_attr', '', $attributes ) . '>';
while ( $the_query->have_posts() ) :
$the_query->the_post();
$thumb_class = has_post_thumbnail() ? 'gutentor-post-has-thumb' : 'gutentor-post-no-thumb';
$output .= "<article class='" . esc_attr( apply_filters( 'gutentor_save_grid_column_class', $thumb_class, $attributes ) ) . "'>";
$output .= '<div class="gutentor-single-item">';
$output .= apply_filters( 'gutentor_save_blog_post_block_template_data', '', get_post(), $attributes );
$output .= '</div>';/*.gutentor-single-item*/
$output .= '</article>';/*.article*/
endwhile;
$output .= '</div>';/*.grid-row*/
$output .= '</div>';/*.grid-row-item-wrap*/
$output .= apply_filters( 'gutentor_save_after_block_items', '', $attributes );
$output .= '</div>';/*.grid-container*/
$output .= apply_filters( 'gutentor_save_after_container', '', $attributes );
$output .= '</' . esc_attr( $tag ) . '>';/*.gutentor-blog-post-wrapper*/
endif;
// Restore original Post Data.
wp_reset_postdata();
return $output;
}
}
}
Gutentor_Blog_Post::get_instance()->run();