File "class-observer.php"
Full path: /home/dora/public_html/wp-content/plugins/wp-grid-builder-bricks/includes/class-observer.php
File size: 2.33 KB
MIME-type: --
Charset: utf-8
<?php
/**
* Observer
*
* @package WP Grid Builder - Bricks
* @author Loïc Blascos
* @copyright 2019-2022 Loïc Blascos
*/
namespace WP_Grid_Builder_Bricks\Includes;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Observer
*
* @class WP_Grid_Builder_Bricks\Includes\Observer
* @since 1.0.0
*/
class Observer {
/**
* Holds Bricks element to handle
*
* @since 1.0.0
* @access protected
* @var boolean|object
*/
protected $handled = false;
/**
* Constructor
*
* @since 1.0.0
* @access public
*/
public function __construct() {
add_action( 'bricks/element/render', [ $this, 'before_render' ], 10, 2 );
add_action( 'bricks/element/render', [ $this, 'after_render' ], 9, 2 );
add_filter( 'bricks/frontend/render_data', [ $this, 'after_content' ] );
}
/**
* Before to render element
*
* @since 1.0.0
* @access public
*
* @param boolean $render Whether to render element.
* @param array $element Holds element to render.
* @return boolean
*/
public function before_render( $render, $element ) {
if ( bricks_is_builder() && ! wpgb_doing_ajax() ) {
return $render;
}
if ( empty( $element->name ) ) {
return $render;
}
if ( $this->maybe_handle( $element->name, $element ) ) {
$this->handled = $element;
}
return $render;
}
/**
* After to render previous element
*
* @since 1.0.0
* @access public
*
* @param boolean $render Whether to render element.
* @param array $element Holds element to render.
* @return boolean
*/
public function after_render( $render, $element ) {
if ( bricks_is_builder() && ! wpgb_doing_ajax() ) {
return $render;
}
if ( empty( $this->handled ) || $element->id === $this->handled->id ) {
return $render;
}
if ( $this->maybe_render( $this->handled->name, $this->handled ) ) {
$this->handled = false;
}
return $render;
}
/**
* After to render page content
*
* @since 1.0.0
* @access public
*
* @param string $content Rendered content.
* @return string
*/
public function after_content( $content ) {
if ( bricks_is_builder() && ! wpgb_doing_ajax() ) {
return $content;
}
if ( empty( $this->handled ) ) {
return $content;
}
if ( $this->maybe_render( $this->handled->name, $this->handled ) ) {
$this->handled = false;
}
return $content;
}
}