Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

jsarnowski / jsarnowski/jet-engine   php

Repository URL to install this package:

/ dashboard / skins-import.php

<?php
/**
 * Class description
 *
 * @package   package_name
 * @author    Cherry Team
 * @license   GPL-2.0+
 */

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

if ( ! class_exists( 'Jet_Engine_Skins_Import' ) ) {

	/**
	 * Define Jet_Engine_Skins_Import class
	 */
	class Jet_Engine_Skins_Import {

		public $nonce = 'jet-engine-import';
		private $log  = array();

		/**
		 * Initialize components
		 */
		public function __construct() {
			add_action( 'wp_ajax_jet_engine_import_skin', array( $this, 'process_import' ) );
			add_action( 'admin_footer', array( $this, 'print_templates' ) );
		}

		/**
		 * Process skin import
		 * @return [type] [description]
		 */
		public function process_import() {

			if ( ! current_user_can( 'import' ) ) {
				wp_send_json_error( __( 'You don\'t have permissions to do this', 'jet-engine' ) );
			}

			if ( empty( $_FILES['_skin'] ) ) {
				wp_send_json_error( __( 'File not passed', 'jet-engine' ) );
			}

			$file = $_FILES['_skin'];

			if ( 'application/json' !== $file['type'] ) {
				wp_send_json_error( __( 'Format not allowed', 'jet-engine' ) );
			}

			$content = file_get_contents( $file['tmp_name'] );
			$content = json_decode( $content, true );

			if ( ! $content ) {
				wp_send_json_error( __( 'No data found in file', 'jet-engine' ) );
			}

			$post_types    = isset( $content['post_types'] ) ? $content['post_types'] : array();
			$taxonomies    = isset( $content['taxonomies'] ) ? $content['taxonomies'] : array();
			$listings      = isset( $content['listings'] ) ? $content['listings'] : array();
			$meta_boxes    = isset( $content['meta_boxes'] ) ? $content['meta_boxes'] : array();
			$relations     = isset( $content['relations'] ) ? $content['relations'] : array();
			$options_pages = isset( $content['options_pages'] ) ? $content['options_pages'] : array();
			$posts         = isset( $content['content']['posts'] ) ? $content['content']['posts'] : array();
			$terms         = isset( $content['content']['terms'] ) ? $content['content']['terms'] : array();
			$options       = isset( $content['content']['options'] ) ? $content['content']['options'] : array();

			$this->import_post_types( $post_types );
			$this->import_taxonomies( $taxonomies );
			$this->import_listings( $listings );
			$this->import_meta_boxes( $meta_boxes );
			$this->import_relations( $relations );
			$this->import_options_pages( $options_pages );
			$this->import_posts( $posts );
			$this->import_terms( $terms );
			$this->import_options( $options );

			wp_send_json_success( $this->log );

		}

		/**
		 * Import meta boxes
		 *
		 * @param  [type] $meta_boxes [description]
		 * @return [type]             [description]
		 */
		public function import_meta_boxes( $meta_boxes ) {

			foreach ( $meta_boxes as $meta_box ) {

				if ( isset( $meta_box['id'] ) ) {
					unset( $meta_box['id'] );
				}

				jet_engine()->meta_boxes->data->update_item_in_db( $meta_box );
				jet_engine()->meta_boxes->data->reset_raw_cache();

				if ( empty( $this->log['meta_boxes'] ) ) {
					$this->log['meta_boxes'] = array( 'items' => array() );
				}

				$this->log['meta_boxes']['items'][] = $meta_box['args']['name'];
			}

			if ( ! empty( $this->log['meta_boxes'] ) ) {
				$this->log['meta_boxes']['label'] = __( 'Meta Boxes', 'jet-engine' );
			}

		}

		/**
		 * Import relations
		 *
		 * @param  [type] $relations [description]
		 * @return [type]             [description]
		 */
		public function import_relations( $relations ) {

			foreach ( $relations as $relation ) {

				if ( isset( $relation['id'] ) ) {
					unset( $relation['id'] );
				}

				jet_engine()->relations->data->update_item_in_db( $relation );
				jet_engine()->relations->data->reset_raw_cache();

				if ( empty( $this->log['relations'] ) ) {
					$this->log['relations'] = array( 'items' => array() );
				}

				$this->log['relations']['items'][] = $relation['name'];
			}

			if ( ! empty( $this->log['relations'] ) ) {
				$this->log['relations']['label'] = __( 'Relations', 'jet-engine' );
			}

		}

		/**
		 * Import options pages
		 *
		 * @param  array $options_pages
		 * @return void
		 */
		public function import_options_pages( $options_pages ) {

			foreach ( $options_pages as $page ) {

				if ( isset( $page['id'] ) ) {
					unset( $page['id'] );
				}

				$page['slug']        = jet_engine()->options_pages->data->sanitize_slug( $page['slug'] );
				$page['labels']      = maybe_unserialize( $page['labels'] );
				$page['args']        = maybe_unserialize( $page['args'] );
				$page['meta_fields'] = maybe_unserialize( $page['meta_fields'] );

				$id = jet_engine()->options_pages->data->update_item_in_db( $page );

				if ( $id ) {

					if ( empty( $this->log['options_pages'] ) ) {
						$this->log['options_pages'] = array( 'items' => array() );
					}

					$this->log['options_pages']['items'][] = $page['labels']['name'];
				}
			}

			if ( ! empty( $this->log['options_pages'] ) ) {
				$this->log['options_pages']['label'] = __( 'Options Pages', 'jet-engine' );
			}

		}

		/**
		 * Import post types
		 *
		 * @return [type] [description]
		 */
		public function import_post_types( $post_types = array() ) {

			foreach ( $post_types as $post_type ) {

				unset( $post_type['id'] );

				$post_type['slug']        = jet_engine()->cpt->data->sanitize_slug( $post_type['slug'] );
				$post_type['labels']      = maybe_unserialize( $post_type['labels'] );
				$post_type['args']        = maybe_unserialize( $post_type['args'] );
				$post_type['meta_fields'] = maybe_unserialize( $post_type['meta_fields'] );

				$id = jet_engine()->cpt->data->update_item_in_db( $post_type );

				if ( $id ) {

					if ( empty( $this->log['post_types'] ) ) {
						$this->log['post_types'] = array( 'items' => array() );
					}

					$this->log['post_types']['items'][] = $post_type['labels']['name'];
				}

			}

			if ( ! empty( $this->log['post_types'] ) ) {
				$this->log['post_types']['label'] = __( 'Post types', 'jet-engine' );
			}

		}

		/**
		 * Import post types
		 *
		 * @return [type] [description]
		 */
		public function import_taxonomies( $taxonomies = array() ) {

			foreach ( $taxonomies as $tax ) {

				unset( $tax['id'] );

				$tax['slug']        = jet_engine()->taxonomies->data->sanitize_slug( $tax['slug'] );
				$tax['object_type'] = maybe_unserialize( $tax['object_type'] );
				$tax['labels']      = maybe_unserialize( $tax['labels'] );
				$tax['args']        = maybe_unserialize( $tax['args'] );
				$tax['meta_fields'] = maybe_unserialize( $tax['meta_fields'] );

				$id = jet_engine()->taxonomies->data->update_item_in_db( $tax );

				if ( $id ) {

					if ( empty( $this->log['taxonomies'] ) ) {
						$this->log['taxonomies'] = array( 'items' => array() );
					}

					$this->log['taxonomies']['items'][] = $tax['labels']['name'];
				}

			}

			if ( ! empty( $this->log['taxonomies'] ) ) {
				$this->log['taxonomies']['label'] = __( 'Taxonomies', 'jet-engine' );
			}

		}

		/**
		 * Import post types
		 *
		 * @return [type] [description]
		 */
		public function import_listings( $listings = array() ) {

			if ( class_exists( 'Elementor\Plugin' ) ) {
				$documents     = Elementor\Plugin::instance()->documents;
				$doc_type      = $documents->get_document_type( jet_engine()->listings->get_id() );
				$type_meta_key = $doc_type::TYPE_META_KEY;
			} else {
				$type_meta_key = '_elementor_template_type';
			}

			foreach ( $listings as $listing ) {

				$listing_type = ! empty( $listing['type'] ) ? $listing['type'] : 'elementor';

				$postarr = array(
					'post_title'  => $listing['title'],
					'post_status' => 'publish',
					'post_type'   => jet_engine()->post_type->slug(),
					'post_name'   => $listing['slug'],
					'meta_input'  => array(
						'_listing_type' => $listing_type,
						'_elementor_page_settings' => $listing['settings'],
					),
				);

				if ( 'elementor' === $listing_type ) {
					$postarr['meta_input']['_elementor_edit_mode'] = 'builder';
					$postarr['meta_input'][ $type_meta_key ] = jet_engine()->listings->get_id();
					$postarr['meta_input'][ '_elementor_data' ] = wp_slash( $listing['content'] );
				}

				if ( 'blocks' === $listing_type ) {
					$postarr['post_content'] = $listing['content'];
				}

				$id = wp_insert_post( $postarr );

				if ( $id ) {

					if ( empty( $this->log['listings'] ) ) {
						$this->log['listings'] = array( 'items' => array() );
					}

					$this->log['listings']['items'][] = $listing['title'];
				}
			}

			if ( ! empty( $this->log['listings'] ) ) {
				$this->log['listings']['label'] = __( 'Listings', 'jet-engine' );
			}
		}

		/**
		 * Import post types
		 *
		 * @return [type] [description]
		 */
		public function import_posts( $posts = array() ) {

			foreach ( $posts as $post ) {

				$post['meta_input']  = $this->prepare_meta( $post['meta_input'] );
				$post['post_status'] = 'publish';

				$id = wp_insert_post( $post );

				if ( $id ) {

					if ( empty( $this->log['posts'] ) ) {
						$this->log['posts'] = array( 'items' => array() );
					}

					$this->log['posts']['items'][] = $post['post_title'];
				}
			}

			if ( ! empty( $this->log['posts'] ) ) {
				$this->log['posts']['label'] = __( 'Posts', 'jet-engine' );
			}
		}

		/**
		 * Import post types
		 *
		 * @return [type] [description]
		 */
		public function import_terms( $terms = array() ) {

			foreach ( $terms as $term ) {
Loading ...