Uname: Linux premium294.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
Software: LiteSpeed
PHP version: 8.1.32 [ PHP INFO ] PHP os: Linux
Server Ip: 104.21.16.1
Your Ip: 216.73.216.223
User: mjbynoyq (1574) | Group: mjbynoyq (1570)
Safe Mode: OFF
Disable Function:
NONE

name : editor.php
<?php

/**
 * Class Brizy_Editor
 */
class Brizy_Editor {

	private static $settings_key = 'post-types';

	private static $instance;

	private static $is_allowed_for_current_user = null;
	/**
	 * All plugin ajax actions and enpoints are going to be prefixed with this string.
	 * This will not affect the database prefix tables or option keys and post meta keys *
	 *
	 * @var string
	 */
	private static $prefix = null;
	/**
	 * @var Brizy_Content_MainProcessor
	 */
	private $mainProcessor = null;

	public static function get() {

		if ( self::$instance ) {
			return self::$instance;
		}

		self::$instance = new self();

		return self::$instance;
	}

	/**
	 * Return the prefix
	 *
	 * @param string $string
	 *
	 * @return string
	 */
	public static function prefix( $string = null ) {

		$string = $string ? trim( $string ) : '';

		if ( ! self::$prefix ) {

			$prefix = 'brizy';

			if ( class_exists( 'BrizyPro_Admin_WhiteLabel' ) && BrizyPro_Admin_WhiteLabel::_init()->getEnabled() ) {
				$prefix = method_exists( 'BrizyPro_Admin_WhiteLabel',
					'getPrefix' ) ? BrizyPro_Admin_WhiteLabel::_init()->getPrefix() : get_option( 'brizy_prefix',
					'brizy' );
			}

			self::$prefix = $prefix;
		}

		return self::$prefix . $string;
	}

	/**
	 * @param string $string
	 *
	 * @return string
	 * @deprecated
	 * Return the prefix
	 *
	 */
	public static function setPrefix( $string ) {

		if ( $string == '' ) {
			throw new Exception( 'The prefix cannot be empty' );
		}

		update_option( 'brizy_prefix', $string );

		return self::$prefix = $string;
	}


	/**
	 * Brizy_Editor constructor.
	 */
	private function __construct() {

		if ( is_admin() ) {
			Brizy_SystemChecks::run();
		}

		// make sure the project is created
		// do not remove this! we force the project creation here.
		$project = Brizy_Editor_Project::get();

		Brizy_Editor_Compiler::checkRecompileTag();

		Brizy_Admin_Flash::instance()->initialize(); // initialize flash

		add_action( 'init', array( $this, 'registerCustomPostTemplates' ), - 4000 );
		add_action( 'init', array( $this, 'runMigrations' ), - 3000 );

		add_action( 'init', array( 'Brizy_MaintenanceMode', 'init' ), - 4000 );
		add_action( 'init', array( $this, 'resetPermalinks' ), - 2000 );
		add_action( 'init', array( $this, 'initialize' ), - 2000 );
		add_action( 'init', array( $this, 'initializeThirdParty' ), -2000);
        add_action('init', [ $this, 'handleEditorEditMode' ], 0 );
		add_action( 'wp', [ $this, 'handleEditorPreviewMode' ] );
	}

	public function initialize() {

		add_action( 'init', array( $this, 'wordpressInit' ), 1000 );
		add_action( 'wp_loaded', array( $this, 'wordpressLoaded' ) );
		add_action( 'wp_print_scripts', array( $this, 'forceJqueryQueue' ), 99999 );

		if ( current_user_can( Brizy_Admin_Capabilities::CAP_EDIT_WHOLE_PAGE ) || Brizy_Editor_User::is_administrator() ) {
			Brizy_Admin_Rules_Api::_init();
		}

		if ( ! defined( 'WP_POST_REVISIONS' ) || ( defined( 'WP_POST_REVISIONS' ) && WP_POST_REVISIONS !== false ) ) {
			add_filter( "wp_revisions_to_keep", array( $this, 'revisionsToKeep' ), 10, 2 );
		}}

	public function initializeThirdParty() {
		Brizy_Editor_ThirdParty_Main::_init();
	}

	public function runMigrations() {

		try {
			if ( ! Brizy_Editor_Project::get()->getWpPost() ) {
				return;
			}
		} catch ( Exception $e ) {
			Brizy_Admin_Flash::instance()->add_error( 'On run migrations, get project throw the message: ' . $e->getMessage() );
		}

		try {
			$migrationManager = new Brizy_Admin_Migrations();
			$migrationManager->runMigrations( BRIZY_VERSION );
		} catch ( Brizy_Admin_Migrations_UpgradeRequiredException $e ) {
			Brizy_Admin_Flash::instance()->add_error( 'Please upgrade Brizy to the latest version.' );
			Brizy_Logger::instance()->critical( 'Unknown migration found. The plugin must be downgraded to the previous version' );
			//throw new Exception( 'Halt plugin execution!' );
		}
	}

	public function wordpressInit() {

		// watch all supported posts and create meta revisions
		$metaManager = new Brizy_Admin_Post_RevisionManager();
		$metaManager->addMonitor( new Brizy_Admin_Post_BrizyPostsMonitor() );
		$metaManager->addMonitor( new Brizy_Admin_Post_ProjectPostMonitor() );

		//Brizy_Editor_Asset_Cleaner::_init();
		Brizy_Admin_PanelPostContent::_init();
		Brizy_Admin_Templates::instance();
		Brizy_Admin_Popups_Main::_init();
		Brizy_Admin_FormEntries::_init();
		Brizy_Admin_Fonts_Main::_init();
		Brizy_Admin_Blocks_Main::_init();
		Brizy_Admin_Stories_Main::_init();
		Brizy_Admin_Symbols_Main::_init();

		if ( Brizy_Editor_User::is_user_allowed() ) {
			Brizy_Admin_Svg_Main::_init();
			Brizy_Admin_Json_Main::_init();
			Brizy_Admin_Layouts_Main::_init();
			Brizy_Admin_Membership_Membership::_init();

			// the cloud will be always initialized with the exception when the white label is enabled
			if ( ! ( class_exists( 'BrizyPro_Admin_WhiteLabel' ) && BrizyPro_Admin_WhiteLabel::_init()->getEnabled() ) ) {
				Brizy_Admin_Cloud::_init();
			}
		}

		$this->initializeAssetLoaders();

		$supported_post_types   = $this->supported_post_types();
		$supported_post_types[] = Brizy_Admin_Templates::CP_TEMPLATE;

		foreach ( $supported_post_types as $type ) {
			add_filter( "theme_{$type}_templates", array( $this, 'registerPageTemplates' ) );
		}
	}

	public function wordpressLoaded() {

		$pid  = Brizy_Editor::get()->currentPostId();
		$post = null;

		try {
			// do not delete this line
			$user = Brizy_Editor_User::get();

            if ($pid) {
                $post = Brizy_Editor_Post::get($pid);
            }
        } catch (Exception $e) {

		}
        $this->loadEditorApi($post, $user);
        $this->loadEditorAdminSettings();

		if ( ! class_exists( 'BrizyPro_Admin_WhiteLabel' ) || ! BrizyPro_Admin_WhiteLabel::_init()->getEnabled() ) {
			if ( current_user_can( 'manage_options' ) ) {
				add_action( 'wp_dashboard_setup', 'Brizy_Admin_DashboardWidget::_init' );
			}
		}

        if ((current_user_can('manage_options') && is_admin()) || (defined('WP_CLI') && WP_CLI)) {
            new Brizy_Import_Main();

		}
        add_filter('brizy_content', array($this, 'brizy_content'), 10, 3);
    }

	public function handleEditorEditMode() {
		$pid = Brizy_Editor::get()->currentPostId();

        if (!$pid || !Brizy_Editor_Entity::isBrizyEnabled($pid) || !Brizy_Editor_User::is_user_allowed()) {
            return;

		}
        try {
            $post = Brizy_Editor_Post::get($pid);
        } catch (Exception $e) {
            return;

		}
        try {
            $main = Brizy_Public_Main::get($post);

			$main->editMode();
		} catch ( Exception $e ) {
			Brizy_Logger::instance()->exception( $e );
		}
	}

	public function handleEditorPreviewMode() {
		$pid = Brizy_Editor::get()->currentPostId();

        if (!$pid || !Brizy_Editor_Entity::isBrizyEnabled($pid)) {
            return;

		}
        try {
            $post = Brizy_Editor_Post::get($pid);
        } catch (Exception $e) {
            return;

		}
        try {
            $context             = Brizy_Content_ContextFactory::createContext( Brizy_Editor_Project::get(), $post->getWpPost() );
			$this->mainProcessor = new Brizy_Content_MainProcessor( $context );

			$main = Brizy_Public_Main::get( $post );
			$main->previewMode();
		} catch ( Exception $e ) {
			Brizy_Logger::instance()->exception( $e );
		}
	}

	public function revisionsToKeep( $num, $post ) {
		try {
			$revisionCount = apply_filters( 'brizy_revisions_max_count', BRIZY_MAX_REVISIONS_TO_KEEP );

			// $num can be -1
			if ( $revisionCount > $num && $num >= 0 ) {
				return $num;
			}

            if (in_array($post->post_type, array(Brizy_Editor_Project::BRIZY_PROJECT))) {
                return $revisionCount;

			}
            if (Brizy_Editor_Entity::isBrizyEnabled($post->ID)) {
                $num = $revisionCount;
            }
        } catch (Exception $e) {
            Brizy_Logger::instance()->debug($e->getMessage(), array($e));
        }

		return $num;
	}

	/**
	 * Reset permalinks after plugin upgrade or enable
	 */
	public function resetPermalinks() {

		$this->registerCustomPostTemplates();

        if (defined('BRIZY_PRO_VERSION') && class_exists('BrizyPro_Main')) {
            $mainInstance = new BrizyPro_Main();
            $mainInstance->registerCustomPosts();

		}
        if (get_option('brizy-regenerate-permalinks', false)) {
            flush_rewrite_rules();
            delete_option('brizy-regenerate-permalinks');
        }
    }

	/**
	 * @param $templates
	 *
	 * @return array
	 */
	function registerPageTemplates( $templates ) {
		return array_merge( $templates,
			array(
				Brizy_Config::BRIZY_BLANK_TEMPLATE_FILE_NAME => __bt( 'brizy', 'Brizy' ) . __( ' Template', 'brizy' ),
			) );
	}

	public function registerCustomPostTemplates() {
		Brizy_Editor_Project::registerCustomPostType();
		Brizy_Admin_Layouts_Main::registerCustomPosts();
		Brizy_Admin_Fonts_Main::registerCustomPosts();
		Brizy_Admin_FormEntries::registerCustomPost();
		Brizy_Admin_Stories_Main::registerCustomPosts();
		Brizy_Admin_Popups_Main::registerCustomPosts();
		Brizy_Admin_Blocks_Main::registerCustomPosts();
		Brizy_Admin_Templates::registerCustomPostTemplate();
	}

	/**
	 * @param $project
	 * @param $post
	 * @param $user
	 */
	private function loadEditorApi( $post, $user ) {
		try {
			if ( Brizy_Editor_User::is_user_allowed() ) {
				new Brizy_Editor_RestExtend();
				new Brizy_Editor_API( $post );
				new Brizy_Editor_BlockScreenshotApi( $post );
				Brizy_Editor_Accounts_Api::_init();
			}

			new Brizy_Editor_Forms_Api( $post );

			// for other apis
			do_action( 'brizy_register_api_methods', $user, $post );
		} catch ( Exception $e ) {
			Brizy_Logger::instance()->exception( $e );
		}
	}

	private function loadEditorAdminSettings() {
		try {
			new Brizy_Admin_Capabilities( Brizy_Editor_Storage_Common::instance() );

            if (is_admin()) {
                Brizy_Admin_Main::instance();
                new Brizy_Admin_GettingStarted();
                $this->initFeedback();

			}
            if (is_network_admin()) {
                Brizy_Admin_NetworkSettings::_init();
            } elseif (is_admin()) {
                Brizy_Admin_Settings::_init();
            }
        } catch (Exception $exception) {
            Brizy_Admin_Flash::instance()->add_error('Unable to empty the trash. Please try again later.');
            wp_safe_redirect($_SERVER['HTTP_REFERER']);
            exit;
        }
    }

	public function brizy_content( $content, $project, $wpPost, $contentType = 'document' ) {

		$context             = Brizy_Content_ContextFactory::createContext( $project, $wpPost );

		if(!$this->mainProcessor) {
			$this->mainProcessor = new Brizy_Content_MainProcessor( $context );
		} else {
			$this->mainProcessor->setContext($context);
		}

		return $this->mainProcessor->process( $content );
	}

	public function forceJqueryQueue() {
		if ( ! wp_script_is( 'jquery', 'enqueued' ) ) {
			wp_enqueue_script( 'jquery' );
		}
	}

	private function initializeAssetLoaders() {
		try {
			$url_builder = new Brizy_Editor_UrlBuilder( null );

			$config           = null;
			$proxy            = new Brizy_Public_AssetProxy( $url_builder, $config );
			$crop_proxy       = new Brizy_Public_CropProxy( $url_builder, $config );
			$attachment_proxy = new Brizy_Public_AttachmentProxy( $url_builder, $config );
			$screenshot_roxy  = new Brizy_Public_BlockScreenshotProxy( new Brizy_Editor_UrlBuilder( null ), $config );
		} catch ( Exception $e ) {
			Brizy_Logger::instance()->exception( $e );
		}
	}

	/*
	 * ====================================================================================================
	 * =====================================================================================================
	 * =====================================================================================================
	 * =====================================================================================================
	 * =====================================================================================================
	 */
    function currentPostId()
    {
        $pid = null;
        global $wp_query;

        if ($wp_query && $wp_query->is_posts_page) {
            $pid = absint(get_queried_object_id());
        } elseif ($wp_query && ($apid = get_queried_object_id()) && (is_single() || is_page()) && $wp_query->queried_object instanceof WP_Post) {
            $pid = absint($apid);
        } elseif (function_exists('is_shop') && is_shop()) {
            $pid = wc_get_page_id('shop');
        } elseif (isset($_REQUEST[Brizy_Editor::prefix('_post')])) {
            $pid = absint($_REQUEST[Brizy_Editor::prefix('_post')]);
        } elseif (isset($_REQUEST['post'])) {
            $pid = absint($_REQUEST['post']);
        } elseif (isset($_REQUEST['page_id'])) {
            $pid = absint($_REQUEST['page_id']);
        } elseif (isset($_REQUEST['post_ID'])) {
            $pid = absint($_REQUEST['post_ID']);
        } elseif (isset($_REQUEST['id'])) {
            $pid = absint($_REQUEST['id']);
        }

        return $pid;
    }

	static public function get_slug() {
		return apply_filters( 'brizy-slug', 'brizy' );
	}

	public function get_path( $rel = '/' ) {
		return BRIZY_PLUGIN_PATH . DIRECTORY_SEPARATOR . ltrim( $rel, DIRECTORY_SEPARATOR );
	}

	public function get_url( $rel = '' ) {
		return BRIZY_PLUGIN_URL . "/" . ltrim( $rel, "/" );
	}

	public function get_version() {
		return BRIZY_VERSION;
	}

	/**
	 * @param $wp_post_id
	 * @param bool $throw
	 *
	 * @return bool
	 * @throws Brizy_Editor_Exceptions_UnsupportedPostType
	 */
	public static function checkIfPostTypeIsSupported( $wp_post_id, $throw = true ) {
		$type = get_post_type( $wp_post_id );

		$supported_post_types   = self::get()->supported_post_types();
		$supported_post_types[] = 'revision';

		if ( ! in_array( $type, $supported_post_types ) ) {

			if ( $throw ) {
				throw new Brizy_Editor_Exceptions_UnsupportedPostType(
					"Brizy editor doesn't support '{$type}' post type"
				);
			} else {
				return false;
			}
		}

		return true;
	}

	public function supported_post_types() {
		$types = $this->get_post_types();

		return apply_filters( 'brizy_supported_post_types', apply_filters( 'brizy:post_types', $types ) );
	}

	public function default_supported_post_types() {
		return array( 'page', 'post' );
	}

	public function get_name() {
		return __bt( 'brizy', 'Brizy' );
	}

	protected function get_post_types() {
		try {
			return Brizy_Editor_Storage_Common::instance()->get( self::$settings_key );
		} catch ( Brizy_Editor_Exceptions_NotFound $exception ) {
			Brizy_Editor_Storage_Common::instance()->set( self::$settings_key, $this->default_supported_post_types() );

			return $this->default_supported_post_types();
		}
	}

	public function lockProject() {
		if ( ! function_exists( 'wp_set_post_lock' ) ) {
			require_once ABSPATH . 'wp-admin/includes/post.php';
		}
		wp_set_post_lock( Brizy_Editor_Project::get()->getWpPostId() );
	}

	public function removeProjectLock() {
		delete_post_meta( Brizy_Editor_Project::get()->getWpPostId(), '_edit_lock' );
	}

	public function checkIfProjectIsLocked() {
		if ( ! function_exists( 'wp_check_post_lock' ) ) {
			require_once ABSPATH . 'wp-admin/includes/post.php';
		}

		return wp_check_post_lock( Brizy_Editor_Project::get()->getWpPostId() );
	}


	private function initFeedback() {

		$feedback = true;

		if ( class_exists( 'BrizyPro_Admin_WhiteLabel' ) ) {

			$whiteLabel = BrizyPro_Admin_WhiteLabel::_init();
			$callable   = is_callable( [ $whiteLabel, 'getEnabled' ] );

            if (($callable && $whiteLabel->getEnabled()) || !$callable) {
                $feedback = false;

		}
}
		if ( $feedback && current_user_can( 'manage_options' ) ) {
			new Brizy_Admin_Feedback();
		}
	}

	/**
	 * @deprecated Use Brizy_Editor_User::is_user_allowed()
	 */
	public static function is_user_allowed() {

		if ( ! is_user_logged_in() ) {
			return false;
		}

		if ( current_user_can( 'manage_options' ) ) {
			return true;
		}

		if ( is_null( self::$is_allowed_for_current_user ) ) {
			self::$is_allowed_for_current_user = (
				current_user_can( Brizy_Admin_Capabilities::CAP_EDIT_WHOLE_PAGE )
				||
				current_user_can( Brizy_Admin_Capabilities::CAP_EDIT_CONTENT_ONLY ));

		}

		return self::$is_allowed_for_current_user;
	}

	/**
	 * Get all image sizes.
	 *
	 * Retrieve available image sizes with data like `width`, `height` and `crop`.
	 *
	 * @return array An array of available image sizes.
	 */
	static public function get_all_image_sizes() {
		global $_wp_additional_image_sizes;

		static $image_sizes = [];

        if ($image_sizes) {
            return $image_sizes;

		}
        foreach (['thumbnail', 'medium', 'medium_large', 'large'] as $size) {
            $image_sizes[$size] = [
                'width' => (int)get_option($size . '_size_w'),
                'height' => (int)get_option($size . '_size_h'),
                'crop' => (bool)get_option($size . '_crop'),

		];
		}
		if ( $_wp_additional_image_sizes ) {
			$image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
		}

		/** The filter image_size_names_choose is documented in wp-admin/includes/media.php */
		$image_sizes = array_filter( apply_filters( 'image_size_names_choose', $image_sizes ), function ( $size ) {
			return ! empty( $size['width'] ) && ! empty( $size['height'] );
		} );
		$translations = [
			'thumbnail' => __( 'Thumbnail' ),
			'medium'    => __( 'Medium' ),
			'large'     => __( 'Large' ),
			'full'      => __( 'Full Size' ),
		];foreach ( $image_sizes as $sizeName => $sizeAttrs ) {
			$label = isset( $translations[ $sizeName ] ) ? $translations[ $sizeName ] :ucwords( str_replace( '_', ' ', $sizeName ) );
			if ( is_array( $sizeAttrs ) ) {
				$label .= sprintf( ' - %d x %d', $sizeAttrs['width'], $sizeAttrs['height'] );
			}

            $image_sizes[$sizeName]['label'] = $label;

		}
        if (!array_key_exists('original', $image_sizes)) {
            $image_sizes = ['original' => ['label' => __('Original', 'brizy')]] + $image_sizes;
        }

		return $image_sizes;
	}
}
© 2025 XylotrechusZ