HEX
Server: Apache
System: Linux p3plzcpnl476737.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: p8pyefaexf70 (9161224)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/p8pyefaexf70/www/wp-content/plugins/lastudio-element-kit/includes/addons/post-content.php
<?php

/**
 * Class: LaStudioKit_Post_Content
 * Name: Post Content
 * Slug: lakit-post-content
 */

namespace Elementor;

if (!defined('WPINC')) {
    die;
}

use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;

/**
 * Post Content Widget
 */
class LaStudioKit_Post_Content extends LaStudioKit_Base {

    protected function enqueue_addon_resources(){
	    if(!lastudio_kit_settings()->is_combine_js_css()) {
		    $this->add_style_depends( 'lastudio-kit-base' );
	    }
    }

    public function get_name() {
        return 'lakit-post-content';
    }

    protected function get_html_wrapper_class()
    {
        return 'lastudio-kit elementor-widget-theme-post-content elementor-' . $this->get_name();
    }

    protected function get_widget_title() {
        return esc_html__( 'Full Content', 'lastudio-kit' );
    }

    public function get_icon() {
        return 'eicon-post-excerpt';
    }

    public function get_categories() {
        return [ 'lastudiokit-builder' ];
    }

    public function show_in_panel() {
        // By default don't show.
        return false;
    }

    protected function register_controls() {

        $this->start_controls_section(
            'section_style',
            [
                'label' => __( 'Style', 'lastudio-kit' ),
                'tab' => Controls_Manager::TAB_STYLE,
            ]
        );

        $this->add_responsive_control(
            'align',
            [
                'label' => __( 'Alignment', 'lastudio-kit' ),
                'type' => Controls_Manager::CHOOSE,
                'options' => [
                    'left' => [
                        'title' => __( 'Left', 'lastudio-kit' ),
                        'icon' => 'eicon-text-align-left',
                    ],
                    'center' => [
                        'title' => __( 'Center', 'lastudio-kit' ),
                        'icon' => 'eicon-text-align-center',
                    ],
                    'right' => [
                        'title' => __( 'Right', 'lastudio-kit' ),
                        'icon' => 'eicon-text-align-right',
                    ],
                    'justify' => [
                        'title' => __( 'Justified', 'lastudio-kit' ),
                        'icon' => 'eicon-text-align-justify',
                    ],
                ],
                'selectors' => [
                    '{{WRAPPER}}' => 'text-align: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'text_color',
            [
                'label' => __( 'Text Color', 'lastudio-kit' ),
                'type' => Controls_Manager::COLOR,
                'default' => '',
                'selectors' => [
                    '{{WRAPPER}}' => 'color: {{VALUE}};',
                ]
            ]
        );

        $this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name' => 'typography',
            ]
        );

        $this->end_controls_section();

    }

    protected function render() {
        // Post CSS should not be printed here because it overrides the already existing post CSS.
        $this->render_post_content( false, false );
    }

    public function render_plain_content() {}

    /**
     * Render post content.
     *
     * @param boolean     $with_wrapper - Whether to wrap the content with a div.
     * @param boolean     $with_css - Decides whether to print inline CSS before the post content.
     *
     * @return void
     */
    public function render_post_content( $with_wrapper = false, $with_css = true ) {
        static $did_posts = [];
        static $level = 0;

        $post = get_post();

        if( !$post instanceof \WP_Post){
            return;
        }

        if ( post_password_required( $post->ID ) ) {
            // PHPCS - `get_the_password_form`. is safe.
            echo get_the_password_form( $post->ID ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
            return;
        }

        // Avoid recursion
        if ( isset( $did_posts[ $post->ID ] ) ) {
            return;
        }

        $level++;
        $did_posts[ $post->ID ] = true;
        // End avoid recursion

        $editor = lastudio_kit()->elementor()->editor;
        $is_edit_mode = $editor->is_edit_mode();

        if ( lastudio_kit()->elementor()->preview->is_preview_mode( $post->ID ) ) {
            $content = lastudio_kit()->elementor()->preview->builder_wrapper( '' ); // XSS ok
        }
		else {
            $document = lastudio_kit()->elementor()->documents->get( $post->ID );
            // On view theme document show it's preview content.
            if ( $document ) {
                $preview_type = $document->get_settings( 'preview_type' );
                $preview_id = $document->get_settings( 'preview_id' );

                if ( !empty($preview_type) && ! empty( $preview_id ) && 0 === strpos( $preview_type, 'single' ) ) {
                    $post = get_post( $preview_id );

                    if ( ! $post ) {
                        $level--;

                        return;
                    }
                }
            }

            // Set edit mode as false, so don't render settings and etc. use the $is_edit_mode to indicate if we need the CSS inline
            $editor->set_edit_mode( false );

            // Print manually (and don't use `the_content()`) because it's within another `the_content` filter, and the Elementor filter has been removed to avoid recursion.
            $content = lastudio_kit()->elementor()->frontend->get_builder_content( $post->ID, $with_css );

            lastudio_kit()->elementor()->frontend->remove_content_filter();

            if ( empty( $content ) ) {
                // Split to pages.
                setup_postdata( $post );

                /** This filter is documented in wp-includes/post-template.php */

                if( $post->post_type === 'give_forms' ){
                    $raw_content = get_post_meta( $post->ID, '_lakit_custom_content', true );
                }
                else{
                    $raw_content = get_the_content();
                }
                // PHPCS - `get_the_content` is safe.
                echo apply_filters( 'the_content', $raw_content ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

                wp_link_pages( [
                    'before' => '<div class="page-links elementor-page-links"><span class="page-links-title elementor-page-links-title">' . __( 'Pages:', 'lastudio-kit' ) . '</span>',
                    'after' => '</div>',
                    'link_before' => '<span>',
                    'link_after' => '</span>',
                    'pagelink' => '<span class="screen-reader-text">' . __( 'Page', 'lastudio-kit' ) . ' </span>%',
                    'separator' => '<span class="screen-reader-text">, </span>',
                ] );

                lastudio_kit()->elementor()->frontend->add_content_filter();

                $level--;

                // Restore edit mode state
                lastudio_kit()->elementor()->editor->set_edit_mode( $is_edit_mode );

                return;
            }
			else {
                lastudio_kit()->elementor()->frontend->remove_content_filters();
                $content = apply_filters( 'the_content', $content );
                lastudio_kit()->elementor()->frontend->restore_content_filters();
            }
        } // End if().

        // Restore edit mode state
        lastudio_kit()->elementor()->editor->set_edit_mode( $is_edit_mode );

        if ( $with_wrapper ) {
            echo '<div class="lakit-post-content elementor-post__content">' . balanceTags( $content, true ) . '</div>';  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
        } else {
            echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
        }

        $level--;

        if ( 0 === $level ) {
            $did_posts = [];
        }
    }
    
}