Server IP : 104.21.14.48 / Your IP : 18.119.167.191 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/wp-content/plugins/templately/includes/Core/Importer/Runners/ |
Upload File : |
<?php namespace Templately\Core\Importer\Runners; use Templately\Builder\PageTemplates; use Templately\Core\Importer\Utils\Utils; use Templately\Core\Importer\WPImport; use WP_Error; /** * @property GutenbergHelper $json */ class GutenbergContent extends BaseRunner { public function get_name(): string { return 'content'; } public function get_label(): string { return __( 'Block Editor Content', 'templately' ); } public function should_run( $data, $imported_data = [] ): bool { return $this->platform == 'gutenberg' && ! empty( $this->manifest['content'] ); } public function should_log(): bool { return true; } public function get_action(): string { return 'eventLog'; } public function log_message(): string { return __( 'Importing Gutenberg Templates (Pages, Posts etc)', 'templately' ); } public function import( $data, $imported_data ): array { $results = []; $contents = $this->manifest['content']; $path = $this->dir_path . 'content' . DIRECTORY_SEPARATOR; if(isset($this->manifest['has_settings']) && $this->manifest['has_settings']){ $file = $this->dir_path . "settings.json"; $settings = Utils::read_json_file( $file ); if(!empty($data['color'])){ if (isset($settings['global_colors'])) { foreach ($settings['global_colors'] as $key => $color) { $settings['global_colors'][$key]['color'] = $data['color'][$color['var']] ?? $color['color']; } } if (isset($settings['custom_colors'])) { foreach ($settings['custom_colors'] as $key => $color) { $settings['custom_colors'][$key]['color'] = $data['color'][$color['var']] ?? $color['color']; } } } if(!empty($data['logo']['id'])){ $site_logo_id = $data['logo']['id']; $settings['site_logo'] = $site_logo_id; Utils::update_option( 'site_logo', $site_logo_id ); $this->origin->update_imported_list('attachment', $data['logo']['id']); } else if(!empty($data['logo']) && empty(get_option('site_logo'))){ // demo logo $site_logo = Utils::upload_logo($data['logo']); if(!empty($site_logo['id'])){ $settings['site_logo'] = $site_logo['id']; Utils::update_option( 'site_logo', $site_logo['id'] ); $this->origin->update_imported_list('attachment', $site_logo['id']); } } $settings = array_map('json_encode', $settings); // Save the settings to the 'eb_global_styles' option Utils::update_option('eb_global_styles', $settings); } $processed = 0; $total = array_reduce($contents, function($carry, $item) { return $carry + count($item); }, 0); foreach ( $contents as $type => $posts ) { foreach ( $posts as $id => $settings ) { $import = $this->import_page_content( $id, $type, $path, $settings ); if ( ! $import ) { $results[ $type ]['failed'][ $id ] = $import; } else { Utils::import_page_settings( $import, $settings ); $results[ $type ]['succeed'][ $id ] = $import; } // Broadcast Log $processed += 1; $progress = floor( ( 100 * $processed ) / $total ); $this->log( $progress, null, 'eventLog' ); } } return [ 'content' => $results ]; } /** * @param $id * @param $type * @param $path * @param $settings * * @return false|int|void|WP_Error */ private function import_page_content( $id, $type, $path, $settings ) { try { $json_content = Utils::read_json_file( $path . '/' . $type . '/' . $id . '.json' ); if ( ! empty( $json_content ) ) { /** * TODO: * * We can check if there is any data for settings. * if yes: ignore content from insert. * * Process the content while finalizing. */ $post_data = [ 'post_title' => $json_content['title'] ?? ucfirst( $type ) . ' - (by Templately)', 'post_status' => 'publish', 'post_type' => $type, 'post_content' => wp_slash( $json_content['content'] ), 'page_template' => PageTemplates::TEMPLATE_HEADER_FOOTER ]; $inserted = wp_insert_post( $post_data ); if ( is_wp_error( $inserted ) ) { return false; } $attachments = $this->json->parse_images($json_content['content']); if (!empty($attachments)) { $manifest_content = &$this->manifest['content'][$type][$id]; if(!isset($manifest_content['__attachments'])){ $manifest_content['__attachments'] = []; } $manifest_content['__attachments'] = $attachments; } return $inserted; } } catch ( \Exception $e ) { return false; } } }