oont-contents/plugins/astra-addon/addons/blog-pro/classes/class-astra-ext-blog-pro-images-resizer.php
2025-02-08 15:10:23 +01:00

255 lines
7.6 KiB
PHP

<?php
/**
* Blog Pro - Customizer.
*
* @package Astra Addon
* @since 1.5.0
*/
if ( ! class_exists( 'Astra_Ext_Blog_Pro_Images_Resizer' ) ) {
/**
* Customizer Initialization
*
* @since 1.5.0
*/
// @codingStandardsIgnoreStart
class Astra_Ext_Blog_Pro_Images_Resizer {
// @codingStandardsIgnoreEnd
/**
* Member Variable
*
* @var instance
*/
private static $instance;
/**
* Initiator
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
if ( self::is_image_resizer() ) {
self::includes();
}
add_action( 'customize_register', array( $this, 'customize_register' ), 2 );
add_filter( 'astra_featured_image_markup', array( $this, 'blog_archive_featured_image' ) );
add_filter( 'astra_featured_image_markup', array( $this, 'blog_single_post_featured_image' ) );
add_filter( 'astra_article_featured_image_markup', array( $this, 'article_post_featured_image' ) );
}
/**
* Filter to disable Image Processing Queue by DeliciousBrains.
*
* @return boolean true if Library is included/loaded.
*/
public function is_image_resizer() {
return apply_filters( 'astra_image_resizer', true );
}
/**
* Register panel, section and controls
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
*/
public function customize_register( $wp_customize ) {
require_once ASTRA_ADDON_EXT_BLOG_PRO_DIR . 'classes/sections/class-astra-customizer-blog-pro-image-resizer-configs.php';
}
/**
* Include necessary files.
*
* @since 1.5.0
*/
public static function includes() {
require_once ASTRA_EXT_DIR . 'classes/library/image-processing-queue/image-processing-queue.php';
}
/**
* Filter to add updated featured image markup with updated images sizes on Blog Archive Page.
*
* @since 1.5.0
* @param string $output the featured image markup for archive post.
* @return string $output Updated featured image markup for archive post.
*/
public function blog_archive_featured_image( $output ) {
if ( 'post' === get_post_type() && ( is_archive() || is_search() || is_home() ) ) {
$blog_archive_image_width = astra_get_option( 'blog-archive-image-width' );
$blog_archive_image_height = astra_get_option( 'blog-archive-image-height' );
$blog_post_title = astra_get_option( 'blog-post-structure' );
$attributes = array(
'width' => empty( $blog_archive_image_width ) ? false : $blog_archive_image_width,
'height' => empty( $blog_archive_image_height ) ? false : $blog_archive_image_height,
'crop' => ( empty( $blog_archive_image_width ) || empty( $blog_archive_image_height ) ) ? false : true,
);
if ( ! $attributes['width'] && ! $attributes['height'] ) {
$attributes = array();
}
$image_id = get_post_thumbnail_id( get_the_ID(), 'full' );
if ( in_array( 'image', $blog_post_title ) ) {
if ( $attributes && function_exists( 'ipq_get_theme_image' ) ) {
$output = ipq_get_theme_image(
$image_id,
array(
array( $attributes['width'], $attributes['height'], $attributes['crop'] ),
),
sprintf(
astra_attr(
'article-image-blog-archive',
array(
'class' => '',
)
)
)
);
}
}
}
return $output;
}
/**
* Filter to add updated featured image markup with updated images sizes on Blog Post single Page.
*
* @since 1.5.0
* @param string $output the featured image markup for single post.
* @return string $output Updated featured image markup for single post.
*/
public function blog_single_post_featured_image( $output ) {
$post_types = apply_filters( 'astra_single_featured_image_post_types', array( 'post' ) );
$check_is_singular_post = is_singular( $post_types );
if ( $check_is_singular_post ) {
$current_post_type = strval( get_post_type() );
$blog_single_image_width = astra_get_option( 'blog-single-post-image-width' );
$blog_single_image_height = astra_get_option( 'blog-single-post-image-height' );
$blog_single_post_structure = is_callable( 'astra_banner_elements_order' ) ? astra_get_option( 'ast-dynamic-single-' . $current_post_type . '-structure', array( 'ast-dynamic-single-' . $current_post_type . '-title', 'ast-dynamic-single-' . $current_post_type . '-breadcrumb' ) ) : astra_get_option( 'blog-single-' . $current_post_type . '-structure' );
$attributes = array(
'width' => empty( $blog_single_image_width ) ? false : $blog_single_image_width,
'height' => empty( $blog_single_image_height ) ? false : $blog_single_image_height,
'crop' => ( empty( $blog_single_image_width ) || empty( $blog_single_image_height ) ) ? false : true,
);
if ( ! $attributes['width'] && ! $attributes['height'] ) {
$attributes = array();
}
$attributes = apply_filters( 'astra_single_featured_image_attributes', $attributes );
$image_id = get_post_thumbnail_id( get_the_ID(), 'full' );
if ( in_array( 'single-image', $blog_single_post_structure ) || in_array( 'ast-dynamic-single-' . $current_post_type . '-image', $blog_single_post_structure ) ) {
if ( $attributes && function_exists( 'ipq_get_theme_image' ) ) {
$output = ipq_get_theme_image(
$image_id,
array(
array( $attributes['width'], $attributes['height'], $attributes['crop'] ),
),
sprintf(
str_replace(
'"',
'',
astra_attr(
'article-image-blog-single-post',
array( 'class' => '' )
)
)
)
);
}
}
}
return $output;
}
/**
* Filter to add updated featured image markup with updated images sizes on Article featured image.
*
* @since 4.4.0
* @param string $output the featured image markup for post article.
* @return string $output Updated featured image markup for post article.
*/
public function article_post_featured_image( $output ) {
$post_types = apply_filters( 'astra_single_featured_image_post_types', array( 'post' ) );
$check_is_singular_post = is_singular( $post_types );
if ( $check_is_singular_post ) {
$current_post_type = strval( get_post_type() );
$blog_single_image_width = astra_get_option( 'blog-single-post-image-width' );
$blog_single_image_height = astra_get_option( 'blog-single-post-image-height' );
$attributes = array(
'width' => empty( $blog_single_image_width ) ? false : $blog_single_image_width,
'height' => empty( $blog_single_image_height ) ? false : $blog_single_image_height,
'crop' => ( empty( $blog_single_image_width ) || empty( $blog_single_image_height ) ) ? false : true,
);
if ( ! $attributes['width'] && ! $attributes['height'] ) {
$attributes = array();
}
$attributes = apply_filters( 'astra_single_featured_image_attributes', $attributes );
$image_id = get_post_thumbnail_id( get_the_ID(), 'full' );
if ( $attributes && function_exists( 'ipq_get_theme_image' ) ) {
$output = ipq_get_theme_image(
$image_id,
array(
array( $attributes['width'], $attributes['height'], $attributes['crop'] ),
),
sprintf(
str_replace(
'"',
'',
astra_attr(
'article-image-blog-single-post',
array( 'class' => '' )
)
)
)
);
}
}
return $output;
}
}
}
if ( ! defined( 'ASTRA_BLOG_IMG_RESIZER' ) ) {
/**
* Kicking this off by calling 'get_instance()' method
*/
Astra_Ext_Blog_Pro_Images_Resizer::get_instance();
}