_upload' ] ); if ( is_wp_error( $upload_result ) ) { Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $upload_result['tmp_name'] ) ); return $upload_result; } /** @var Source_Local $source_local */ $source_local = $this->get_source( 'local' ); $import_result = $source_local->import_template( $upload_result['name'], $upload_result['tmp_name'] ); // Remove the temporary directory generated for the stream-uploaded file. Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $upload_result['tmp_name'] ) ); return $import_result; } /** * Enable JSON Template Upload * * Runs on the 'elementor/files/allow-file-type/json' Uploads Manager filter. * * @since 3.5.0 * @access public * * return bool */ public function enable_json_template_upload() { return true; } /** * Mark template as favorite. * * Add the template to the user favorite templates. * * @since 1.9.0 * @access public * * @param array $args Template arguments. * * @return mixed Whether the template marked as favorite. */ public function mark_template_as_favorite( $args ) { $validate_args = $this->ensure_args( [ 'source', 'template_id', 'favorite' ], $args ); if ( is_wp_error( $validate_args ) ) { return $validate_args; } $source = $this->get_source( $args['source'] ); return $source->mark_as_favorite( $args['template_id'], filter_var( $args['favorite'], FILTER_VALIDATE_BOOLEAN ) ); } public function import_from_json( array $args ) { $validate_args = $this->ensure_args( [ 'editor_post_id', 'elements' ], $args ); if ( is_wp_error( $validate_args ) ) { return $validate_args; } $elements = json_decode( $args['elements'], true ); $document = Plugin::$instance->documents->get( $args['editor_post_id'] ); if ( ! $document ) { return new \WP_Error( 'template_error', 'Document not found.' ); } $import_data = $document->get_import_data( [ 'content' => $elements ] ); return $import_data['content']; } /** * Register default template sources. * * Register the 'local' and 'remote' template sources that Elementor use by * default. * * @since 1.0.0 * @access private */ private function register_default_sources() { $sources = [ 'local', 'remote', ]; foreach ( $sources as $source_filename ) { $class_name = ucwords( $source_filename ); $class_name = str_replace( '-', '_', $class_name ); $this->register_source( __NAMESPACE__ . '\Source_' . $class_name ); } } /** * Handle ajax request. * * Fire authenticated ajax actions for any given ajax request. * * @since 1.0.0 * @access private * * @param string $ajax_request Ajax request. * * @param array $data * * @return mixed * @throws \Exception */ private function handle_ajax_request( $ajax_request, array $data ) { if ( ! User::is_current_user_can_edit_post_type( Source_Local::CPT ) ) { throw new \Exception( 'Access denied.' ); } if ( ! empty( $data['editor_post_id'] ) ) { $editor_post_id = absint( $data['editor_post_id'] ); if ( ! get_post( $editor_post_id ) ) { throw new \Exception( 'Post not found.' ); } Plugin::$instance->db->switch_to_post( $editor_post_id ); } $result = call_user_func( [ $this, $ajax_request ], $data ); if ( is_wp_error( $result ) ) { throw new \Exception( $result->get_error_message() ); } return $result; } /** * Init ajax calls. * * Initialize template library ajax calls for allowed ajax requests. * * @since 2.3.0 * @access public * * @param Ajax $ajax */ public function register_ajax_actions( Ajax $ajax ) { $library_ajax_requests = [ 'get_library_data', 'get_template_data', 'save_template', 'update_templates', 'delete_template', 'import_template', 'mark_template_as_favorite', 'import_from_json', ]; foreach ( $library_ajax_requests as $ajax_request ) { $ajax->register_ajax_action( $ajax_request, function( $data ) use ( $ajax_request ) { return $this->handle_ajax_request( $ajax_request, $data ); } ); } } /** * @since 2.3.0 * @access public */ public function handle_direct_actions() { if ( ! User::is_current_user_can_edit_post_type( Source_Local::CPT ) ) { return; } /** @var Ajax $ajax */ $ajax = Plugin::$instance->common->get_component( 'ajax' ); if ( ! $ajax->verify_request_nonce() ) { $this->handle_direct_action_error( 'Access Denied' ); } $action = Utils::get_super_global_value( $_REQUEST, 'library_action' ); // phpcs:ignore -- Nonce already verified. $whitelist_methods = [ 'export_template', 'direct_import_template', ]; if ( in_array( $action, $whitelist_methods, true ) ) { $result = $this->$action( $_REQUEST ); // phpcs:ignore -- Nonce already verified. } else { $result = new \WP_Error( 'method_not_exists', 'Method Not exists' ); } if ( is_wp_error( $result ) ) { /** @var \WP_Error $result */ $this->handle_direct_action_error( $result->get_error_message() . '.' ); } $callback = "on_{$action}_success"; if ( method_exists( $this, $callback ) ) { $this->$callback( $result ); } die; } /** * On successful template import. * * Redirect the user to the template library after template import was * successful finished. * * @since 2.3.0 * @access private */ private function on_direct_import_template_success() { wp_safe_redirect( admin_url( Source_Local::ADMIN_MENU_SLUG ) ); } /** * @since 2.3.0 * @access private */ private function handle_direct_action_error( $message ) { _default_wp_die_handler( $message, 'Elementor Library' ); } /** * Ensure arguments exist. * * Checks whether the required arguments exist in the specified arguments. * * @since 1.0.0 * @access private * * @param array $required_args Required arguments to check whether they * exist. * @param array $specified_args The list of all the specified arguments to * check against. * * @return \WP_Error|true True on success, 'WP_Error' otherwise. */ private function ensure_args( array $required_args, array $specified_args ) { $not_specified_args = array_diff( $required_args, array_keys( $specified_args ) ); if ( $not_specified_args ) { return new \WP_Error( 'arguments_not_specified', sprintf( 'The required argument(s) "%s" not specified.', implode( ', ', $not_specified_args ) ) ); } return true; } }
Fatal error: Uncaught Error: Class 'Elementor\TemplateLibrary\Manager' not found in /home/sportuga/public_html/wp-content/plugins/elementor/includes/plugin.php:731 Stack trace: #0 /home/sportuga/public_html/wp-content/plugins/elementor/includes/plugin.php(647): Elementor\Plugin->init_components() #1 /home/sportuga/public_html/wp-includes/class-wp-hook.php(324): Elementor\Plugin->init('') #2 /home/sportuga/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #3 /home/sportuga/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #4 /home/sportuga/public_html/wp-settings.php(695): do_action('init') #5 /home/sportuga/public_html/wp-config.php(102): require_once('/home/sportuga/...') #6 /home/sportuga/public_html/wp-load.php(50): require_once('/home/sportuga/...') #7 /home/sportuga/public_html/wp-blog-header.php(13): require_once('/home/sportuga/...') #8 /home/sportuga/public_html/index.php(17): require('/home/sportuga/...') #9 {main} thrown in /home/sportuga/public_html/wp-content/plugins/elementor/includes/plugin.php on line 731