HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-59-generic #61-Ubuntu SMP PREEMPT_DYNAMIC Fri Apr 11 23:16:11 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /opt/wpsites/datainsightnow.com/wp-content/plugins/essential-blocks/includes/API/PostBlock.php
<?php

namespace EssentialBlocks\API;

use EssentialBlocks\Utils\Helper;
use EssentialBlocks\blocks\PostGrid as PostGridBlock;
use EssentialBlocks\blocks\PostCarousel as PostCarouselBlock;

class PostBlock extends Base {
    /**
     * Register REST Routes
     * @return void
     */
    public function register() {
        $this->get( 'queries', [
            'callback' => [$this, 'get_posts']
        ] );
    }

    public function get_posts( $request ) {
        $block_type = $request->has_param( 'block_type' ) ? $request->get_param( 'block_type' ) : 'post-grid';

        $query      = json_decode( $request['query_data'], true );
        $attributes = json_decode( $request['attributes'], true );
        $query      = ( is_object( $query ) || is_array( $query ) ) ? (array) $query : [];
        $attributes = ( is_object( $attributes ) || is_array( $attributes ) ) ? (array) $attributes : [];
        $pageNumber = isset( $request['pageNumber'] ) ? (int) sanitize_text_field( $request['pageNumber'] ) - 1 : 0;

        //Check if param is empty
        if ( ! is_array( $query ) || ! is_array( $attributes ) ) {
            wp_send_json_error( "Invalid request param" );
        }

        if ( isset( $query['per_page'] ) && isset( $query['offset'] ) ) {
            $query['offset'] = (int) $query['offset'] + ( (int) $query['per_page'] * (int) $pageNumber );
        }

        $_template_name = 'carousel-markup';
        $block_object   = PostCarouselBlock::get_instance();
        if ( $block_type === 'post-grid' ) {
            if ( isset( $request["taxonomy"] ) && isset( $request["category"] ) ) {
                $category  = get_term_by( 'slug', sanitize_text_field( $request["category"] ), sanitize_text_field( $request["taxonomy"] ) );
                $catString = json_encode( [[
                    "label" => $category->name,
                    "value" => $category->term_id
                ]] );
                $filterQuery = [
                    $request["taxonomy"] => [
                        "name"  => sanitize_text_field( $request["category"] ),
                        "slug"  => sanitize_text_field( $request["category"] ),
                        "value" => $catString
                    ]
                ];
                $query["taxonomies"] = $filterQuery;
            }

            // if ( isset( $request["query_type"] ) && $request["query_type"] === "filter" ) {
            //     $query['offset'] = 0;
            // }
            $_template_name = 'grid-markup';
            $block_object   = PostGridBlock::get_instance();
        }

        $result = $block_object->get_posts( $query, true );
        $posts  = [];
        if ( isset( $result->posts ) && is_array( $result->posts ) && count( $result->posts ) > 0 ) {
            $posts = $result->posts;
        }
        $posts_count = 0;
        if ( isset( $result->found_posts ) ) {
            $posts_count = $result->found_posts;
        }

        if ( empty( $posts ) ) {
            return false;
        }

        ob_start();
        Helper::views( 'post-partials/' . $_template_name, array_merge( $attributes, [
            'posts'        => $posts,
            'block_object' => $block_object,
            'source'       => isset( $query['source'] ) ? $query['source'] : 'post',
            'headerMeta'   => ! empty( $attributes['headerMeta'] ) ? json_decode( $attributes['headerMeta'] ) : [],
            'footerMeta'   => ! empty( $attributes['footerMeta'] ) ? json_decode( $attributes['footerMeta'] ) : []
        ] ) );

        $response = rest_ensure_response( ob_get_clean() );
        $response->set_headers( [
            'x-wp-total' => $posts_count
        ] );

        return $response;
    }
}