芝麻web文件管理V1.00
编辑当前文件:/home/seolotod/critterchoice.com/wp-content/themes/rehub-theme/rehub-elementor/templates/remote.php
$data ) { if ( isset( $data['isPro'] ) && $data['isPro'] ) { unset( $library_data[ $index ] ); } } } return array_merge( $this->get_local_items(), $library_data ); } /** * Get remote template data. * * Retrieve the data of a single remote template from a custom source. * * @since 1.5.0 * @access public * * @param array $args Custom template arguments. * @param string $context Optional. The context. Default is `display`. * * @return array Remote Template data. */ public function get_data( array $args, $context = 'display' ) { // @TODO: add security check if ( is_numeric( $args['template_id'] ) ) { return parent::get_data( $args, $context ); } $template_dir = $this->get_local_directory() . $args['template_id']; // $data_file = $template_dir . DIRECTORY_SEPARATOR . 'template_data.php'; $data_file = $template_dir . DIRECTORY_SEPARATOR . 'template.json'; if ( ! is_dir( $template_dir ) || ! file_exists( $data_file ) ) { return new \WP_Error( 'broke', esc_html__( 'template not found', 'rehub-theme' ) ); } ob_start(); include_once( $data_file ); $json_data = ob_get_contents(); ob_end_clean(); try { $data = json_decode( $json_data, true ); } catch ( Exception $e ) { return new WP_Error( 'broke', esc_html__( 'template file data is invalid', 'rehub-theme' ) ); } if ( ! $data ) { return new WP_Error('broke', esc_html__('The data is broken', 'rehub-theme') ); } $data['content'] = $this->replace_elements_ids( $data['content'] ); $data['content'] = $this->process_export_import_content( $data['content'], 'on_import' ); $post_id = $args['editor_post_id']; $document = Plugin::$instance->documents->get( $post_id ); if ( $document ) { $data['content'] = $document->get_elements_raw_data( $data['content'], true ); } return $data; } private function get_local_items( $templates = [] ) { // Read Local Directory $template_directory = $this->get_local_directory(); $handler = opendir( $template_directory ); if ( ! $handler ) { return $templates; } while ( false !== ( $directory = readdir( $handler ) ) ) { if ( in_array( $directory, ['.', '..'] ) ) { continue; } // Check if we have thumbnail and preview file $local_dir = $template_directory . $directory; if ( ! is_dir( $local_dir ) ) { continue; } // Make sure we have mandatory files $invalid_structure = false; foreach ( ['thumbnail.jpg', 'config.php'] as $file ) { if ( ! file_exists( $local_dir . DIRECTORY_SEPARATOR . $file ) ) { $invalid_structure = true; break; } } // Skip if invalid structure if ( $invalid_structure ) { continue; } $local_dir_url = trailingslashit( $this->get_local_url() . $directory ); $ext_dir_url = trailingslashit( $this->get_ext_url() ); $template_data = require( $local_dir . DIRECTORY_SEPARATOR . 'config.php' ); if ( ! isset( $template_data['id'] ) || ! isset( $template_data['tmpl_created'] ) ) { continue; } $templates[] = $this->prepare_template( $template_data ); } return $templates; } /** * @since 2.2.0 * @access private */ private function prepare_template( array $template_data ) { $favorite_templates = $this->get_user_meta( 'favorites' ); if(is_array($template_data['tags'])){ $template_data['tags'] = json_encode($template_data['tags']); } return [ 'template_id' => $template_data['id'], 'source' => 'remote', // 'source' => 'wpsm_local', 'type' => $template_data['type'], 'subtype' => $template_data['subtype'], 'title' => $template_data['title'], 'thumbnail' => $template_data['thumbnail'], 'accessLevel' => 0, 'date' => $template_data['tmpl_created'], 'author' => $template_data['author'], 'tags' => json_decode( $template_data['tags'] ), 'isPro' => false, 'popularityIndex' => (int) $template_data['popularity_index'], 'trendIndex' => (int) $template_data['trend_index'], 'hasPageSettings' => ( '1' === $template_data['has_page_settings'] ), 'url' => $template_data['url'], 'favorite' => ! empty( $favorite_templates[ $template_data['id'] ] ), ]; } private function get_local_directory() { return apply_filters( 'wpsm_elementor_template_directory', get_template_directory() . '/rehub-elementor/templates/templates/' ); } private function get_local_url() { return apply_filters( 'wpsm_elementor_template_directory_url', get_template_directory_uri() . '/rehub-elementor/templates/templates/' ); } private function get_ext_url() { return apply_filters( 'wpsm_elementor_ext_url', '//elementor.wpsoul.com/' ); } } class WPSM_Template_Manager extends Manager{ public function unregister_source( $id ) { if ( ! isset( $this->_registered_sources[ $id ] ) ) { return false; } unset( $this->_registered_sources[ $id ] ); return true; } } /* public function get_source( $id ) { $sources = $this->get_registered_sources(); if ( ! isset( $sources[ $id ] ) ) { return false; } return $sources[ $id ]; } public function register_source( $source_class, $args = [] ) { if ( ! class_exists( $source_class ) ) { return new \WP_Error( 'source_class_name_not_exists' ); } $source_instance = new $source_class( $args ); if ( ! $source_instance instanceof Source_Base ) { return new \WP_Error( 'wrong_instance_source' ); } $source_id = $source_instance->get_id(); if ( isset( $this->_registered_sources[ $source_id ] ) ) { return new \WP_Error( 'source_exists' ); } $this->_registered_sources[ $source_id ] = $source_instance; return true; }*/ add_action( 'init', function () { // @TODO: make sure elementor is installed Plugin::instance()->templates_manager = new WPSM_Template_Manager(); //we enable removing templates again Plugin::instance()->templates_manager->unregister_source( 'remote' ); Plugin::instance()->templates_manager->register_source( 'Elementor\TemplateLibrary\WPSM_Remote_Source' ); }, 0);