Current Path : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/editor/ |
Current File : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/editor/user.php |
<?php if ( ! defined( 'ABSPATH' ) ) { die( 'Direct access forbidden.' ); } class Brizy_Editor_User { private static $is_allowed_for_current_user; private static $instance; /** * @var Brizy_Editor_API_AccessToken */ private $token; /** * @var Brizy_Editor_Storage_Common */ private $common_storage; /** * @var string */ private $platform_user_id; /** * @var string */ private $platform_user_email; /** * @var string */ private $platform_user_signature; /** * Brizy_Editor_User constructor. * * @param $common_storage * * @throws Brizy_Editor_Exceptions_NotFound */ protected function __construct( $common_storage ) { $this->common_storage = $common_storage; $this->platform_user_id = $common_storage->get( 'platform_user_id' ); $this->platform_user_email = $common_storage->get( 'platform_user_email' ); $this->platform_user_signature = $common_storage->get( 'platform_user_signature' ); $token_data = $common_storage->get( 'access-token', false ); if ( $token_data instanceof Brizy_Editor_API_AccessToken ) { $this->token = $token_data; $common_storage->set( 'access-token', $token_data->convertToOptionValue() ); } elseif ( is_array( $token_data ) ) { $this->token = Brizy_Editor_API_AccessToken::createFromSerializedData( $token_data ); } } /** * @return Brizy_Editor_User * @throws Brizy_Editor_Exceptions_ServiceUnavailable * @throws Exception */ public static function get() { if ( self::$instance ) { return self::$instance; } $user = null; try { $user = new Brizy_Editor_User( Brizy_Editor_Storage_Common::instance() ); } catch ( Brizy_Editor_Exceptions_NotFound $e ) { Brizy_Logger::instance()->notice( 'New user created' ); Brizy_Editor_Storage_Common::instance()->set( 'platform_user_local', true ); Brizy_Editor_Storage_Common::instance()->set( 'platform_user_id', uniqid( 'user', true ) ); Brizy_Editor_Storage_Common::instance()->set( 'platform_user_email', self::generateRandomEmail() ); Brizy_Editor_Storage_Common::instance()->set( 'platform_user_signature', Brizy_Editor_Signature::get() ); $user = new Brizy_Editor_User( Brizy_Editor_Storage_Common::instance() ); } return self::$instance = $user; } public static function reload() { return self::$instance = new self( Brizy_Editor_Storage_Common::instance() ); } /** * @return string */ static protected function generateRandomEmail() { $uniqid = 'brizy-' . md5( uniqid( '', true ) ); return $uniqid . '@brizy.io'; } /** * @param Brizy_Editor_Project $project * @param Brizy_Editor_Post $post * * @return Brizy_Editor_CompiledHtml * @throws Brizy_Editor_API_Exceptions_Exception * @throws Brizy_Editor_Http_Exceptions_BadRequest * @throws Brizy_Editor_Http_Exceptions_ResponseException * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized * @throws Exception */ public function compile_page( $project, $post ) { $editor_data = $post->get_editor_data(); $config = Brizy_Editor_Editor_Editor::get( $project, $post )->config(); $urlBuilder = new Brizy_Editor_UrlBuilder( $project, $post->getWpPostId() ); $page_html = $this->get_client()->compile_page( $project, $editor_data, $config, $urlBuilder->compiler_url() ); return $page_html; } public static function is_administrator() { if ( ! is_user_logged_in() ) { return false; } return is_admin() || is_super_admin(); } public static function is_subscriber() { if ( ! is_user_logged_in() ) { return false; } $user = wp_get_current_user(); return in_array( 'subscriber', (array) $user->roles ); } public static function is_user_allowed() { if ( ! is_user_logged_in() ) { return false; } if ( Brizy_Editor_User::is_administrator() ) { 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; } protected function get_token() { return $this->token; } protected function get_client() { return new Brizy_Editor_API_Client( $this->get_token() ); } /** * @return string */ public function getPlatformUserId() { return $this->platform_user_id; } /** * @return string */ public function getPlatformUserEmail() { return $this->platform_user_email; } /** * @return string */ public function getPlatformUserSignature() { return $this->platform_user_signature; } }