You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1335 lines
46 KiB
1335 lines
46 KiB
<?php
|
|
|
|
if ( ! class_exists('XmlExportEngine') ){
|
|
|
|
require_once dirname(__FILE__) . '/XmlExportComment.php';
|
|
require_once dirname(__FILE__) . '/XmlExportTaxonomy.php';
|
|
|
|
final class XmlExportEngine
|
|
{
|
|
|
|
const VARIABLE_PRODUCTS_EXPORT_PARENT_AND_VARIATION = 1;
|
|
const VARIABLE_PRODUCTS_EXPORT_VARIATION = 2;
|
|
const VARIABLE_PRODUCTS_EXPORT_PARENT = 3;
|
|
|
|
const VARIATION_USE_PARENT_TITLE = 1;
|
|
const VARIATION_USE_DEFAULT_TITLE = 2;
|
|
|
|
/**
|
|
* Custom XML Loop begin statement
|
|
* @var string
|
|
*/
|
|
const XML_LOOP_START = '<!-- BEGIN LOOP -->';
|
|
|
|
/**
|
|
* Custom XML Loop end statement
|
|
* @var string
|
|
*/
|
|
const XML_LOOP_END = '<!-- END LOOP -->';
|
|
|
|
const EXPORT_TYPE_GOOLE_MERCHANTS = 'XmlGoogleMerchants';
|
|
const EXPORT_TYPE_XML = 'xml';
|
|
const EXPORT_TYPE_CSV = 'csv';
|
|
|
|
public static $acf_export;
|
|
public static $woo_export = false;
|
|
public static $woo_order_export;
|
|
public static $woo_coupon_export;
|
|
public static $woo_refund_export;
|
|
public static $woo_review_export;
|
|
public static $user_export = false;
|
|
public static $comment_export;
|
|
public static $taxonomy_export;
|
|
public static $custom_record_export;
|
|
|
|
public static $is_preview = false;
|
|
|
|
public static $implode = ',';
|
|
|
|
private $post;
|
|
private $_existing_meta_keys = array();
|
|
private $_existing_taxonomies = array();
|
|
|
|
private static $addons_service = false;
|
|
|
|
private $init_fields = array(
|
|
array(
|
|
'label' => 'id',
|
|
'name' => 'ID',
|
|
'type' => 'id'
|
|
),
|
|
array(
|
|
'label' => 'title',
|
|
'name' => 'Title',
|
|
'type' => 'title'
|
|
),
|
|
array(
|
|
'label' => 'content',
|
|
'name' => 'Content',
|
|
'type' => 'content'
|
|
)
|
|
);
|
|
|
|
public static $default_fields = array(
|
|
array(
|
|
'label' => 'id',
|
|
'name' => 'ID',
|
|
'type' => 'id'
|
|
),
|
|
array(
|
|
'label' => 'title',
|
|
'name' => 'Title',
|
|
'type' => 'title'
|
|
),
|
|
array(
|
|
'label' => 'content',
|
|
'name' => 'Content',
|
|
'type' => 'content'
|
|
),
|
|
array(
|
|
'label' => 'excerpt',
|
|
'name' => 'Excerpt',
|
|
'type' => 'excerpt'
|
|
),
|
|
array(
|
|
'label' => 'date',
|
|
'name' => 'Date',
|
|
'type' => 'date'
|
|
),
|
|
array(
|
|
'label' => 'post_type',
|
|
'name' => 'Post Type',
|
|
'type' => 'post_type'
|
|
),
|
|
array(
|
|
'label' => 'permalink',
|
|
'name' => 'Permalink',
|
|
'type' => 'permalink'
|
|
)
|
|
);
|
|
|
|
private $other_fields = array(
|
|
array(
|
|
'label' => 'status',
|
|
'name' => 'Status',
|
|
'type' => 'status'
|
|
),
|
|
|
|
array(
|
|
'label' => 'author',
|
|
'name' => 'Author ID',
|
|
'type' => 'author'
|
|
),
|
|
|
|
array(
|
|
'label' => 'author_username',
|
|
'name' => 'Author Username',
|
|
'type' => 'author_username'
|
|
),
|
|
|
|
array(
|
|
'label' => 'author_email',
|
|
'name' => 'Author Email',
|
|
'type' => 'author_email'
|
|
),
|
|
|
|
array(
|
|
'label' => 'author_first_name',
|
|
'name' => 'Author First Name',
|
|
'type' => 'author_first_name'
|
|
),
|
|
|
|
array(
|
|
'label' => 'author_last_name',
|
|
'name' => 'Author Last Name',
|
|
'type' => 'author_last_name'
|
|
),
|
|
|
|
array(
|
|
'label' => 'slug',
|
|
'name' => 'Slug',
|
|
'type' => 'slug'
|
|
),
|
|
array(
|
|
'label' => 'format',
|
|
'name' => 'Format',
|
|
'type' => 'format'
|
|
),
|
|
array(
|
|
'label' => 'template',
|
|
'name' => 'Template',
|
|
'type' => 'template'
|
|
),
|
|
array(
|
|
'label' => 'parent',
|
|
'name' => 'Parent',
|
|
'type' => 'parent'
|
|
),
|
|
array(
|
|
'label' => 'parent_slug',
|
|
'name' => 'Parent Slug',
|
|
'type' => 'parent_slug'
|
|
),
|
|
array(
|
|
'label' => 'order',
|
|
'name' => 'Order',
|
|
'type' => 'order'
|
|
),
|
|
array(
|
|
'label' => 'comment_status',
|
|
'name' => 'Comment Status',
|
|
'type' => 'comment_status'
|
|
),
|
|
array(
|
|
'label' => 'ping_status',
|
|
'name' => 'Ping Status',
|
|
'type' => 'ping_status'
|
|
),
|
|
array(
|
|
'label' => 'post_modified',
|
|
'name' => 'Post Modified Date',
|
|
'type' => 'post_modified'
|
|
)
|
|
);
|
|
|
|
private $available_sections = array();
|
|
private $filter_sections = array();
|
|
|
|
private $errors;
|
|
|
|
private $available_data = array(
|
|
'acf_groups' => array(),
|
|
'existing_acf_meta_keys' => array(),
|
|
'existing_meta_keys' => array(),
|
|
'init_fields' => array(),
|
|
'default_fields' => array(),
|
|
'other_fields' => array(),
|
|
'woo_data' => array(),
|
|
'existing_attributes' => array(),
|
|
'existing_taxonomies' => array()
|
|
);
|
|
|
|
private $filters;
|
|
|
|
public static $is_user_export = false;
|
|
public static $is_comment_export = false;
|
|
public static $is_taxonomy_export = false;
|
|
public static $is_custom_addon_export = false;
|
|
public static $post_types = array();
|
|
public static $exportOptions = array();
|
|
public static $exportQuery;
|
|
public static $exportID = false;
|
|
public static $exportRecord = false;
|
|
public static $globalAvailableSections;
|
|
|
|
public static $is_auto_generate_enabled = true;
|
|
|
|
public function __construct( $post, & $errors = false ){
|
|
|
|
$this->post = $post;
|
|
$this->errors = $errors;
|
|
|
|
$this->available_sections = array(
|
|
'default' => array(
|
|
'title' => __("Standard", "wp_all_export_plugin"),
|
|
'content' => 'default_fields'
|
|
),
|
|
'media' => array(
|
|
'title' => __("Media", "wp_all_export_plugin"),
|
|
'content' => '',
|
|
'additional' => array(
|
|
'images' => array(
|
|
'title' => __("Images", "wp_all_export_plugin"),
|
|
'meta' => array(
|
|
array(
|
|
'name' => 'URL',
|
|
'label' => 'url',
|
|
'type' => 'image_url',
|
|
'auto' => 1
|
|
),
|
|
array(
|
|
'name' => 'Filename',
|
|
'label' => 'filename',
|
|
'type' => 'image_filename'
|
|
),
|
|
array(
|
|
'name' => 'Path',
|
|
'label' => 'path',
|
|
'type' => 'image_path'
|
|
),
|
|
array(
|
|
'name' => 'ID',
|
|
'label' => 'image_id',
|
|
'type' => 'image_id'
|
|
),
|
|
array(
|
|
'name' => 'Title',
|
|
'label' => 'title',
|
|
'type' => 'image_title',
|
|
'auto' => 1
|
|
),
|
|
array(
|
|
'name' => 'Caption',
|
|
'label' => 'caption',
|
|
'type' => 'image_caption',
|
|
'auto' => 1
|
|
),
|
|
array(
|
|
'name' => 'Description',
|
|
'label' => 'description',
|
|
'type' => 'image_description',
|
|
'auto' => 1
|
|
),
|
|
array(
|
|
'name' => 'Alt Text',
|
|
'label' => 'alt',
|
|
'type' => 'image_alt',
|
|
'auto' => 1
|
|
),
|
|
array(
|
|
'name' => 'Featured',
|
|
'label' => 'featured',
|
|
'type' => 'image_featured',
|
|
'auto' => 1
|
|
),
|
|
)
|
|
),
|
|
'attachments' => array(
|
|
'title' => __("Attachments", "wp_all_export_plugin"),
|
|
'meta' => array(
|
|
array(
|
|
'name' => 'URL',
|
|
'label' => 'url',
|
|
'type' => 'attachment_url',
|
|
'auto' => 1
|
|
),
|
|
array(
|
|
'name' => 'Filename',
|
|
'label' => 'filename',
|
|
'type' => 'attachment_filename'
|
|
),
|
|
array(
|
|
'name' => 'Path',
|
|
'label' => 'path',
|
|
'type' => 'attachment_path'
|
|
),
|
|
array(
|
|
'name' => 'ID',
|
|
'label' => 'attachment_id',
|
|
'type' => 'attachment_id'
|
|
),
|
|
array(
|
|
'name' => 'Title',
|
|
'label' => 'title',
|
|
'type' => 'attachment_title'
|
|
),
|
|
array(
|
|
'name' => 'Caption',
|
|
'label' => 'caption',
|
|
'type' => 'attachment_caption'
|
|
),
|
|
array(
|
|
'name' => 'Description',
|
|
'label' => 'description',
|
|
'type' => 'attachment_description'
|
|
),
|
|
array(
|
|
'name' => 'Alt Text',
|
|
'label' => 'alt',
|
|
'type' => 'attachment_alt'
|
|
),
|
|
)
|
|
)
|
|
)
|
|
),
|
|
'cats' => array(
|
|
'title' => __("Taxonomies", "wp_all_export_plugin"),
|
|
'content' => 'existing_taxonomies'
|
|
),
|
|
'cf' => array(
|
|
'title' => __("Custom Fields", "wp_all_export_plugin"),
|
|
'content' => 'existing_meta_keys'
|
|
),
|
|
'other' => array(
|
|
'title' => __("Other", "wp_all_export_plugin"),
|
|
'content' => 'other_fields'
|
|
)
|
|
);
|
|
|
|
$this->available_sections = apply_filters('pmxe_available_sections', $this->available_sections);
|
|
|
|
$this->filter_sections = array(
|
|
'author' => array(
|
|
'title' => __("Author", "wp_all_export_plugin"),
|
|
'fields' => array(
|
|
'user_ID' => 'User ID',
|
|
'user_login' => 'User Login',
|
|
'user_nicename' => 'Nicename',
|
|
'user_email' => 'Email',
|
|
'user_registered' => 'Date Registered (Y-m-d H:i:s)',
|
|
'display_name' => 'Display Name',
|
|
'cf_first_name' => 'First Name',
|
|
'cf_last_name' => 'Last Name',
|
|
'nickname' => 'Nickname',
|
|
'description' => 'User Description',
|
|
'wp_capabilities' => 'User Role'
|
|
)
|
|
)
|
|
);
|
|
|
|
if ( 'specific' == $this->post['export_type'])
|
|
{
|
|
|
|
self::$post_types = ( ! is_array($this->post['cpt']) ) ? array($this->post['cpt']) : $this->post['cpt'];
|
|
|
|
if( \class_exists('WooCommerce') && XmlExportEngine::get_addons_service()->isWooCommerceAddonActive()) {
|
|
if (in_array('product', self::$post_types) and !in_array('product_variation', self::$post_types)) self::$post_types[] = 'product_variation';
|
|
} else if(\class_exists('WooCommerce') && in_array('product', self::$post_types) && XmlExportEngine::get_addons_service()->isWooCommerceProductAddonActive()) {
|
|
self::$post_types = ['product'];
|
|
}
|
|
|
|
self::$is_user_export = ( in_array('users', self::$post_types) or in_array('shop_customer', self::$post_types) ) ? true : false;
|
|
|
|
self::$is_comment_export = ( in_array('comments', self::$post_types) ) ? true : false;
|
|
|
|
self::$is_taxonomy_export = ( in_array('taxonomies', self::$post_types) ) ? true : false;
|
|
|
|
if(count(self::$post_types) === 1) {
|
|
if(strpos(self::$post_types[0], 'custom_') === 0 ) {
|
|
self::$is_custom_addon_export = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self::$is_user_export = ( 'wp_user_query' == $this->post['wp_query_selector'] );
|
|
self::$is_comment_export = ( 'wp_comment_query' == $this->post['wp_query_selector'] );
|
|
}
|
|
|
|
if ( ! self::$is_user_export && ! self::$is_comment_export && ! self::$is_taxonomy_export)
|
|
{
|
|
add_filter("wp_all_export_filters", array( &$this, "filter_export_filters"), 10, 1);
|
|
|
|
// When WPML is active and at least one post in the export has a trid
|
|
if (class_exists('SitePress'))
|
|
{
|
|
self::$default_fields[] = array(
|
|
'label' => 'wpml_trid',
|
|
'name' => 'WPML Translation ID',
|
|
'type' => 'wpml_trid'
|
|
);
|
|
|
|
self::$default_fields[] = array(
|
|
'label' => 'wpml_lang',
|
|
'name' => 'WPML Language Code',
|
|
'type' => 'wpml_lang'
|
|
);
|
|
}
|
|
}
|
|
|
|
self::$exportOptions = $post;
|
|
|
|
if ( ! empty(PMXE_Plugin::$session) and PMXE_Plugin::$session->has_session() )
|
|
{
|
|
$filter_args = array(
|
|
'filter_rules_hierarhy' => $this->post['filter_rules_hierarhy'],
|
|
'product_matching_mode' => $this->post['product_matching_mode'],
|
|
'taxonomy_to_export' => empty($this->post['taxonomy_to_export']) ? '' : $this->post['taxonomy_to_export']
|
|
);
|
|
|
|
$this->filters = \Wpae\Pro\Filtering\FilteringFactory::getFilterEngine();
|
|
$this->filters->init($filter_args);
|
|
|
|
$this->init();
|
|
}
|
|
|
|
if (empty(self::$exportOptions['delimiter'])) self::$exportOptions['delimiter'] = ',';
|
|
|
|
self::$implode = (self::$exportOptions['delimiter'] == ',') ? '|' : ',';
|
|
|
|
self::$implode = apply_filters('wp_all_export_implode_delimiter', self::$implode, self::$exportID);
|
|
|
|
if ( !empty(self::$exportOptions['xml_template_type']) && in_array(self::$exportOptions['xml_template_type'], array('custom', 'XmlGoogleMerchants')) ) self::$implode = '#delimiter#';
|
|
|
|
self::$comment_export = new XmlExportComment();
|
|
self::$taxonomy_export = new XmlExportTaxonomy();
|
|
self::$custom_record_export = new XmlExportCustomRecord();
|
|
|
|
do_action('pmxe_init_addons');
|
|
}
|
|
|
|
// [FILTERS]
|
|
|
|
/**
|
|
*
|
|
* Filter data for advanced filtering
|
|
*
|
|
*/
|
|
public function filter_export_filters($filters){
|
|
return array_merge($filters, $this->filter_sections);
|
|
}
|
|
|
|
// [\FILTERS]
|
|
|
|
protected function init(){
|
|
|
|
PMXE_Plugin::$session->set('is_user_export', self::$is_user_export);
|
|
PMXE_Plugin::$session->set('is_comment_export', self::$is_comment_export);
|
|
PMXE_Plugin::$session->set('is_taxonomy_export', self::$is_taxonomy_export);
|
|
PMXE_Plugin::$session->save_data();
|
|
|
|
if ('advanced' == $this->post['export_type']) {
|
|
|
|
if( "" == $this->post['wp_query'] ){
|
|
$this->errors->add('form-validation', __('WP Query field is required', 'pmxe_plugin'));
|
|
}
|
|
else if(!XmlExportEngine::get_addons_service()->isWooCommerceAddonActive() && strpos($this->post['wp_query'], 'product') !== false && \class_exists('WooCommerce')) {
|
|
$this->errors->add('form-validation', __('The WooCommerce Export Add-On Pro is required to Export WooCommerce Products', 'pmxe_plugin'));
|
|
}
|
|
else if(!XmlExportEngine::get_addons_service()->isWooCommerceAddonActive() && strpos($this->post['wp_query'], 'shop_order') !== false) {
|
|
$this->errors->add('form-validation', __('The WooCommerce Export Add-On Pro is required to Export WooCommerce Orders', 'pmxe_plugin'));
|
|
}
|
|
else if(!XmlExportEngine::get_addons_service()->isWooCommerceAddonActive() && strpos($this->post['wp_query'], 'shop_coupon') !== false) {
|
|
$this->errors->add('form-validation', __('The WooCommerce Export Add-On Pro is required to Export WooCommerce Coupons', 'pmxe_plugin'));
|
|
}
|
|
else
|
|
{
|
|
$this->filters->parse();
|
|
|
|
PMXE_Plugin::$session->set('whereclause', $this->filters->get('queryWhere'));
|
|
PMXE_Plugin::$session->set('joinclause', $this->filters->get('queryJoin'));
|
|
PMXE_Plugin::$session->set('wp_query', $this->post['wp_query']);
|
|
PMXE_Plugin::$session->save_data();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->filters->parse();
|
|
|
|
PMXE_Plugin::$session->set('cpt', self::$post_types);
|
|
PMXE_Plugin::$session->set('whereclause', $this->filters->get('queryWhere'));
|
|
PMXE_Plugin::$session->set('joinclause', $this->filters->get('queryJoin'));
|
|
PMXE_Plugin::$session->save_data();
|
|
}
|
|
|
|
PMXE_Plugin::$session->save_data();
|
|
|
|
}
|
|
|
|
public function init_additional_data(){
|
|
|
|
if(self::$woo_export) {
|
|
self::$woo_export->init_additional_data();
|
|
}
|
|
|
|
if(self::$woo_order_export) {
|
|
self::$woo_order_export->init_additional_data();
|
|
}
|
|
}
|
|
|
|
public function init_available_data(){
|
|
|
|
global $wpdb;
|
|
$table_prefix = $wpdb->prefix;
|
|
|
|
// Prepare existing taxonomies
|
|
if ( 'specific' == $this->post['export_type'] and ! self::$is_user_export and ! self::$is_comment_export and ! self::$is_taxonomy_export )
|
|
{
|
|
$this->_existing_taxonomies = wp_all_export_get_existing_taxonomies_by_cpt( self::$post_types[0] );
|
|
|
|
$this->_existing_meta_keys = wp_all_export_get_existing_meta_by_cpt( self::$post_types[0] );
|
|
}
|
|
if ( 'advanced' == $this->post['export_type'] and ! self::$is_user_export and ! self::$is_comment_export and ! self::$is_taxonomy_export )
|
|
{
|
|
$meta_keys = $wpdb->get_results("SELECT DISTINCT meta_key FROM {$table_prefix}postmeta WHERE {$table_prefix}postmeta.meta_key NOT LIKE '_edit%' AND {$table_prefix}postmeta.meta_key NOT LIKE '_oembed_%' LIMIT 1000");
|
|
if ( ! empty($meta_keys)){
|
|
$exclude_keys = array('_first_variation_attributes', '_is_first_variation_created');
|
|
foreach ($meta_keys as $meta_key) {
|
|
if ( strpos($meta_key->meta_key, "_tmp") === false && strpos($meta_key->meta_key, "_v_") === false && ! in_array($meta_key->meta_key, $exclude_keys))
|
|
$this->_existing_meta_keys[] = $meta_key->meta_key;
|
|
}
|
|
}
|
|
|
|
global $wp_taxonomies;
|
|
|
|
foreach ($wp_taxonomies as $key => $obj) { if (in_array($obj->name, array('nav_menu'))) continue;
|
|
|
|
if (strpos($obj->name, "pa_") !== 0 and strlen($obj->name) > 3)
|
|
$this->_existing_taxonomies[] = array(
|
|
'name' => empty($obj->label) ? $obj->name : $obj->label,
|
|
'label' => $obj->name,
|
|
'type' => 'cats'
|
|
);
|
|
}
|
|
}
|
|
|
|
if(self::$acf_export) {
|
|
// Prepare existing ACF groups & fields
|
|
self::$acf_export->init($this->_existing_meta_keys);
|
|
}
|
|
|
|
if(XmlExportEngine::$woo_export) {
|
|
// Prepare existing WooCommerce data
|
|
self::$woo_export->init($this->_existing_meta_keys);
|
|
|
|
if(self::get_addons_service()->isWooCommerceAddonActive()) {
|
|
// Prepare existing WooCommerce Coupon data
|
|
self::$woo_coupon_export->init($this->_existing_meta_keys);
|
|
}
|
|
}
|
|
if(XmlExportEngine::$woo_order_export) {
|
|
// Prepare existing WooCommerce Order data
|
|
self::$woo_order_export->init($this->_existing_meta_keys);
|
|
|
|
|
|
}
|
|
|
|
if(XmlExportEngine::$user_export) {
|
|
// Prepare existing Users data
|
|
self::$user_export->init($this->_existing_meta_keys);
|
|
}
|
|
|
|
// Prepare existing Comments data
|
|
self::$comment_export->init($this->_existing_meta_keys);
|
|
|
|
// Prepare existing Taxonomy data
|
|
self::$taxonomy_export->init($this->_existing_meta_keys);
|
|
|
|
return $this->get_available_data();
|
|
}
|
|
|
|
public function get_available_data(){
|
|
|
|
if(self::$acf_export) {
|
|
$this->available_data['acf_groups'] = self::$acf_export->get('_acf_groups');
|
|
$this->available_data['existing_acf_meta_keys'] = self::$acf_export->get('_existing_acf_meta_keys');
|
|
}
|
|
|
|
$this->available_data['existing_meta_keys'] = $this->_existing_meta_keys;
|
|
$this->available_data['existing_taxonomies'] = $this->_existing_taxonomies;
|
|
|
|
$this->available_data['init_fields'] = apply_filters('wp_all_export_init_fields', $this->init_fields);
|
|
$this->available_data['default_fields'] = apply_filters('wp_all_export_default_fields', self::$default_fields);
|
|
$this->available_data['other_fields'] = apply_filters('wp_all_export_other_fields', $this->other_fields);
|
|
|
|
$this->available_data = apply_filters("wp_all_export_available_data", $this->available_data);
|
|
|
|
return $this->available_data;
|
|
|
|
}
|
|
|
|
public function get_fields_options( $field_keys = array() ){
|
|
|
|
$fields = array(
|
|
'ids' => array(),
|
|
'cc_label' => array(),
|
|
'cc_php' => array(),
|
|
'cc_code' => array(),
|
|
'cc_sql' => array(),
|
|
'cc_options' => array(),
|
|
'cc_type' => array(),
|
|
'cc_value' => array(),
|
|
'cc_name' => array(),
|
|
'cc_settings' => array()
|
|
);
|
|
|
|
self::$woo_order_export->get_fields_options( $fields, $field_keys );
|
|
|
|
$available_sections = apply_filters("wp_all_export_available_sections", $this->available_sections);
|
|
|
|
foreach ($available_sections as $slug => $section)
|
|
{
|
|
if ( ! empty($this->available_data[$section['content']]) ):
|
|
|
|
foreach ($this->available_data[$section['content']] as $field)
|
|
{
|
|
|
|
$field_key = (is_array($field)) ? $field['name'] : $field;
|
|
|
|
if ( ! in_array($field_key, $field_keys) ) continue;
|
|
|
|
$fields['ids'][] = 1;
|
|
$fields['cc_label'][] = (is_array($field)) ? $field['label'] : $field;
|
|
$fields['cc_php'][] = '';
|
|
$fields['cc_code'][] = '';
|
|
$fields['cc_sql'][] = '';
|
|
$fields['cc_options'][] = '';
|
|
$fields['cc_type'][] = (is_array($field)) ? $field['type'] : $slug;
|
|
$fields['cc_value'][] = (is_array($field)) ? $field['label'] : $field;
|
|
$fields['cc_name'][] = $field_key;
|
|
$fields['cc_settings'][] = '';
|
|
}
|
|
endif;
|
|
|
|
if ( ! empty($section['additional']) )
|
|
{
|
|
foreach ($section['additional'] as $sub_slug => $sub_section)
|
|
{
|
|
|
|
foreach ($sub_section['meta'] as $field) {
|
|
$key_to_check = (is_array($field)) ? $field['name'] : $field;
|
|
|
|
if ( in_array($sub_slug, array('images', 'attachments')) ){
|
|
$key_to_check = preg_replace("%s$%","",ucfirst($sub_slug)) . ' ' . $key_to_check;
|
|
}
|
|
|
|
if ( ! in_array($key_to_check, $field_keys) ) continue;
|
|
|
|
$field_options = ( in_array($sub_slug, array('images', 'attachments')) ) ? esc_attr('{"is_export_featured":true,"is_export_attached":true,"image_separator":"|"}') : '0';
|
|
|
|
$fields['ids'][] = 1;
|
|
$fields['cc_label'][] = (is_array($field)) ? $field['label'] : $field;
|
|
$fields['cc_php'][] = '';
|
|
$fields['cc_code'][] = '';
|
|
$fields['cc_sql'][] = '';
|
|
$fields['cc_options'][] = $field_options;
|
|
$fields['cc_type'][] = (is_array($field)) ? $field['type'] : $sub_slug;
|
|
$fields['cc_value'][] = (is_array($field)) ? $field['label'] : $field;
|
|
$fields['cc_name'][] = $key_to_check;
|
|
$fields['cc_settings'][] = '';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! self::$is_comment_export )
|
|
{
|
|
if(self::$acf_export) {
|
|
self::$acf_export->get_fields_options( $fields, $field_keys );
|
|
}
|
|
}
|
|
|
|
$sort_fields = array();
|
|
foreach ($field_keys as $i => $field_key){
|
|
foreach ($fields['cc_name'] as $j => $cc_name){
|
|
if (!empty($cc_name) && $cc_name == $field_key){
|
|
$sort_fields['ids'][] = 1;
|
|
$sort_fields['cc_label'][] = $fields['cc_label'][$j];
|
|
$sort_fields['cc_php'][] = $fields['cc_php'][$j];
|
|
$sort_fields['cc_code'][] = $fields['cc_code'][$j];
|
|
$sort_fields['cc_sql'][] = $fields['cc_sql'][$j];
|
|
$sort_fields['cc_options'][] = $fields['cc_options'][$j];
|
|
$sort_fields['cc_type'][] = $fields['cc_type'][$j];
|
|
$sort_fields['cc_value'][] = $fields['cc_value'][$j];
|
|
$sort_fields['cc_name'][] = $fields['cc_name'][$j];
|
|
$sort_fields['cc_settings'][] = $fields['cc_settings'][$j];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $sort_fields;
|
|
|
|
}
|
|
|
|
public function render(){
|
|
|
|
$i = 0;
|
|
|
|
ob_start();
|
|
|
|
$available_sections = apply_filters("wp_all_export_available_sections", $this->available_sections);
|
|
self::$globalAvailableSections = $available_sections;
|
|
|
|
if(self::$woo_order_export) {
|
|
// Render Available WooCommerce Orders Data
|
|
self::$woo_order_export->render($i);
|
|
}
|
|
|
|
foreach ($available_sections as $slug => $section)
|
|
{
|
|
|
|
if ( ! empty($this->available_data[$section['content']]) or ! empty($section['additional']) ):
|
|
?>
|
|
<p class="wpae-available-fields-group"><?php echo esc_html($section['title']); ?><span class="wpae-expander">+</span></p>
|
|
<div class="wpae-custom-field">
|
|
<?php
|
|
if($slug == 'cf' && XmlExportEngine::$is_user_export) {
|
|
?>
|
|
<div class="wpallexport-free-edition-notice">
|
|
<a class="upgrade_link" target="_blank" href="https://www.wpallimport.com/checkout/?edd_action=add_to_cart&download_id=5839967&edd_options%5Bprice_id%5D=1&utm_source=export-plugin-free&utm_medium=upgrade-notice&utm_campaign=export-user-meta">Upgrade to the Pro edition of WP All Export to Export User Meta</a>
|
|
</div>
|
|
<?php
|
|
}
|
|
?>
|
|
<?php
|
|
if($slug == 'other' && XmlExportEngine::$is_user_export) {
|
|
?>
|
|
<div class="wpallexport-free-edition-notice">
|
|
<a class="upgrade_link" target="_blank" href="https://www.wpallimport.com/checkout/?edd_action=add_to_cart&download_id=5839967&edd_options%5Bprice_id%5D=1&utm_source=export-plugin-free&utm_medium=upgrade-notice&utm_campaign=export-advanced-user-data">Upgrade to the Pro edition of WP All Export to Export Advanced Fields</a>
|
|
</div>
|
|
<?php
|
|
}
|
|
$elementClass = "";
|
|
if(($slug == 'cf' || $slug == 'other') && XmlExportEngine::$is_user_export){
|
|
$elementClass = 'wpallexport_disabled';
|
|
}
|
|
?>
|
|
<ul>
|
|
<?php if ( ! empty($this->available_data[$section['content']]) ): ?>
|
|
<li class="<?php echo esc_attr($elementClass); ?>">
|
|
<div class="default_column" rel="">
|
|
<label class="wpallexport-element-label"><?php esc_html_e("All", "wp_all_export_plugin") . ' ' . esc_html($section['title']); ?></label>
|
|
<input type="hidden" name="rules[]" value="<?php echo esc_attr("pmxe_" . $slug); ?>"/>
|
|
</div>
|
|
</li>
|
|
<?php
|
|
foreach ($this->available_data[$section['content']] as $field)
|
|
{
|
|
$field_type = is_array($field) ? $field['type'] : $slug;
|
|
$field_name = is_array($field) ? $field['name'] : $field;
|
|
|
|
if ( $field_type == 'cf' && $field_name == '_thumbnail_id' ) continue;
|
|
|
|
$is_auto_field = ( ! empty($field['auto']) or self::$is_auto_generate_enabled and ('specific' != $this->post['export_type'] or 'specific' == $this->post['export_type'] and (! in_array(self::$post_types[0], array('product')) || !\class_exists('WooCommerce'))));
|
|
|
|
?>
|
|
<li class="pmxe_<?php echo $slug; ?> <?php if ( $is_auto_field ) echo 'wp_all_export_auto_generate';?> <?php echo esc_attr($elementClass);?>">
|
|
<div class="custom_column" rel="<?php echo ($i + 1);?>">
|
|
<label class="wpallexport-xml-element"><?php echo esc_html(is_array($field) ? $field['name'] : $field); ?></label>
|
|
<input type="hidden" name="ids[]" value="1"/>
|
|
<input type="hidden" name="cc_label[]" value="<?php echo esc_html(is_array($field) ? $field['label'] : $field); ?>"/>
|
|
<input type="hidden" name="cc_php[]" value="0"/>
|
|
<input type="hidden" name="cc_code[]" value=""/>
|
|
<input type="hidden" name="cc_sql[]" value="0"/>
|
|
<input type="hidden" name="cc_options[]" value="0"/>
|
|
<input type="hidden" name="cc_type[]" value="<?php echo esc_html(is_array($field) ? $field['type'] : $slug); ?>"/>
|
|
<input type="hidden" name="cc_value[]" value="<?php echo esc_html(is_array($field) ? $field['label'] : $field); ?>"/>
|
|
<input type="hidden" name="cc_name[]" value="<?php echo esc_html(is_array($field) ? $field['name'] : $field); ?>"/>
|
|
<input type="hidden" name="cc_settings[]" value="0"/>
|
|
</div>
|
|
</li>
|
|
<?php
|
|
$i++;
|
|
}
|
|
endif;
|
|
|
|
if ( ! empty($section['additional']) )
|
|
{
|
|
foreach ($section['additional'] as $sub_slug => $sub_section)
|
|
{
|
|
|
|
?>
|
|
<li class="available_sub_section">
|
|
<p class="wpae-available-fields-group"><?php echo esc_html($sub_section['title']); ?><span
|
|
class="wpae-expander">+</span></p>
|
|
<div class="wpae-custom-field">
|
|
<?php
|
|
$show_additional_subsection = apply_filters("wp_all_export_show_additional_subsection", true, $sub_slug, $sub_section);
|
|
do_action("wp_all_export_before_available_subsection", $sub_slug, $sub_section);
|
|
|
|
|
|
if($show_additional_subsection) { ?>
|
|
|
|
<ul>
|
|
<li>
|
|
<div class="default_column" rel="">
|
|
<label class="wpallexport-element-label"><?php echo __("All", "wp_all_export_plugin") . ' ' . esc_html($sub_section['title']); ?></label>
|
|
<input type="hidden" name="rules[]"
|
|
value="<?php echo esc_attr("pmxe_" . $slug . "_" . $sub_slug); ?>"/>
|
|
</div>
|
|
</li>
|
|
<?php
|
|
foreach ($sub_section['meta'] as $field) {
|
|
$is_auto_field = empty($field['auto']) ? false : true;
|
|
$field_options = (in_array($sub_slug, array('images', 'attachments'))) ? esc_attr('{"is_export_featured":true,"is_export_attached":true,"image_separator":"|"}') : '0';
|
|
?>
|
|
<li class="<?php echo esc_attr("pmxe_" . $slug . "_" . $sub_slug); ?> <?php if ($is_auto_field) echo 'wp_all_export_auto_generate'; ?>">
|
|
<div class="custom_column" rel="<?php echo($i + 1); ?>">
|
|
<label class="wpallexport-xml-element"><?php echo (is_array($field)) ? esc_html(XmlExportEngine::sanitizeFieldName($field['name'])) : esc_html($field); ?></label>
|
|
<input type="hidden" name="ids[]" value="1"/>
|
|
<input type="hidden" name="cc_label[]"
|
|
value="<?php echo (is_array($field)) ? esc_attr($field['label']) : esc_attr($field); ?>"/>
|
|
<input type="hidden" name="cc_php[]" value="0"/>
|
|
<input type="hidden" name="cc_code[]" value="0"/>
|
|
<input type="hidden" name="cc_sql[]" value="0"/>
|
|
<input type="hidden" name="cc_options[]"
|
|
value="<?php echo esc_attr($field_options); ?>"/>
|
|
<input type="hidden" name="cc_type[]"
|
|
value="<?php echo (is_array($field)) ? esc_attr($field['type']) : esc_attr($sub_slug); ?>"/>
|
|
<input type="hidden" name="cc_value[]"
|
|
value="<?php echo (is_array($field)) ? esc_attr($field['label']) : esc_attr($field); ?>"/>
|
|
<input type="hidden" name="cc_name[]"
|
|
value="<?php echo (is_array($field)) ? esc_attr(XmlExportEngine::sanitizeFieldName($field['name'])) : esc_attr($field); ?>"/>
|
|
<input type="hidden" name="cc_settings[]" value=""/>
|
|
</div>
|
|
</li>
|
|
<?php
|
|
$i++;
|
|
|
|
}
|
|
?>
|
|
</ul>
|
|
<?php
|
|
}
|
|
?>
|
|
</div>
|
|
</li>
|
|
<?php
|
|
|
|
}
|
|
}
|
|
?>
|
|
</ul>
|
|
</div>
|
|
<?php
|
|
endif;
|
|
}
|
|
|
|
if ( ! self::$is_comment_export )
|
|
{
|
|
if(self::$acf_export) {
|
|
// Render Available ACF
|
|
self::$acf_export->render($i);
|
|
} else {
|
|
if(!self::get_addons_service()->isAcfAddonActive()) {
|
|
?>
|
|
<p class="wpae-available-fields-group">ACF<span class="wpae-expander">+</span></p>
|
|
<div class="wpae-custom-field">
|
|
|
|
<div class="wpallexport-free-edition-notice">
|
|
<a class="upgrade_link" target="_blank"
|
|
href="https://www.wpallimport.com/checkout/?edd_action=add_to_cart&download_id=5839953&edd_options%5Bprice_id%5D=1&utm_source=export-plugin-free&utm_medium=upgrade-notice&utm_campaign=export-advanced-custom-fields">Upgrade to the ACF Export Package to Export Advanced Custom Fields</a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
return ob_get_clean();
|
|
|
|
}
|
|
|
|
public function render_filters(){
|
|
|
|
$available_sections = apply_filters("wp_all_export_available_sections", apply_filters('wp_all_export_filters', $this->available_sections) );
|
|
|
|
if(self::$woo_order_export) {
|
|
// Render Filters for WooCommerce Orders
|
|
self::$woo_order_export->render_filters();
|
|
}
|
|
|
|
if(self::$is_custom_addon_export) {
|
|
if(class_exists('GF_Export_Add_On')) {
|
|
$addon = GF_Export_Add_On::get_instance();
|
|
$addon->render_filters();
|
|
unset($available_sections);
|
|
}
|
|
|
|
}
|
|
|
|
if ( ! empty($available_sections) )
|
|
{
|
|
$exclude = array('wpml_lang', 'wpml_trid');
|
|
|
|
foreach ($available_sections as $slug => $section)
|
|
{
|
|
if ( ! empty($section['content']) and ! empty($this->available_data[$section['content']]) or ! empty($section['fields'])):
|
|
?>
|
|
|
|
<optgroup label="<?php echo esc_attr($section['title']); ?>">
|
|
|
|
<?php if ( ! empty($section['content']) && ! empty($this->available_data[$section['content']]) ): ?>
|
|
|
|
<?php foreach ($this->available_data[$section['content']] as $field) : ?>
|
|
|
|
<?php
|
|
|
|
$field_label = is_array($field) ? $field['label'] : $field;
|
|
$field_type = is_array($field) ? $field['type'] : $slug;
|
|
$field_name = is_array($field) ? $field['name'] : $field;
|
|
|
|
if ( in_array($field_label, $exclude) ) continue;
|
|
|
|
switch ($field_type)
|
|
{
|
|
case 'woo':
|
|
$exclude_fields = array('attributes');
|
|
if ( ! in_array($field_label, $exclude_fields)):
|
|
?>
|
|
<option value="<?php echo esc_attr('cf_' . $field_label); ?>"><?php echo esc_html($field_name); ?></option>
|
|
<?php
|
|
endif;
|
|
break;
|
|
case 'cf':
|
|
?>
|
|
<option value="<?php echo esc_attr('cf_' . $field_label); ?>"><?php echo esc_html($field_name); ?></option>
|
|
<?php
|
|
break;
|
|
case 'cats':
|
|
case 'attr':
|
|
?>
|
|
<option value="<?php echo esc_attr('tx_' . $field_label); ?>"><?php echo esc_html($field_name); ?></option>
|
|
<?php
|
|
break;
|
|
default:
|
|
|
|
if (self::$is_user_export)
|
|
{
|
|
switch ($field_label)
|
|
{
|
|
case 'id':
|
|
$field_label = strtoupper($field_label);
|
|
break;
|
|
case 'user_nicename':
|
|
?>
|
|
<option value="user_role"><?php esc_html_e('User Role', 'wp_all_export_plugin'); ?></option>
|
|
<?php
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch ($field_label) {
|
|
case 'id':
|
|
$field_label = strtoupper($field_label);
|
|
break;
|
|
case 'parent':
|
|
case 'author':
|
|
case 'author_username':
|
|
case 'author_email':
|
|
case 'author_first_name':
|
|
case 'author_last_name':
|
|
case 'status':
|
|
case 'title':
|
|
case 'content':
|
|
case 'date':
|
|
case 'excerpt':
|
|
$field_label = 'post_' . $field_label;
|
|
break;
|
|
case 'permalink':
|
|
$field_label = 'guid';
|
|
break;
|
|
case 'slug':
|
|
$field_label = 'post_name';
|
|
break;
|
|
case 'order':
|
|
$field_label = 'menu_order';
|
|
break;
|
|
case 'template':
|
|
$field_label = 'cf__wp_page_template';
|
|
break;
|
|
case 'format':
|
|
$field_label = 'tx_post_format';
|
|
break;
|
|
default:
|
|
# code...
|
|
break;
|
|
}
|
|
}
|
|
?>
|
|
<option value="<?php echo esc_attr($field_label); ?>"><?php echo esc_html($field_name); ?></option>
|
|
<?php
|
|
break;
|
|
}
|
|
?>
|
|
|
|
<?php endforeach; ?>
|
|
|
|
<?php endif; ?>
|
|
|
|
<?php if ( ! empty($section['fields'])): ?>
|
|
|
|
<?php foreach ($section['fields'] as $key => $title) : ?>
|
|
|
|
<option value="<?php echo esc_attr($key); ?>"><?php echo esc_html($title); ?></option>
|
|
|
|
<?php endforeach; ?>
|
|
|
|
<?php endif; ?>
|
|
|
|
</optgroup>
|
|
|
|
<?php
|
|
|
|
endif;
|
|
|
|
if ( ! empty($section['additional']) )
|
|
{
|
|
foreach ($section['additional'] as $sub_slug => $sub_section)
|
|
{
|
|
if ( $sub_slug == 'attributes' ) {
|
|
?>
|
|
<optgroup label="<?php echo esc_attr($sub_section['title']); ?>">
|
|
<?php
|
|
foreach ($sub_section['meta'] as $field) :
|
|
if ( isset( $field['type'] ) ) {
|
|
switch ( $field['type'] ) {
|
|
case 'attr':
|
|
?>
|
|
<option value="<?php echo esc_attr('tx_' . $field['label']); ?>"><?php echo esc_html($field['name']); ?></option>
|
|
<?php
|
|
break;
|
|
case 'cf':
|
|
?>
|
|
<option value="<?php echo esc_attr('cf_' . $field['label']); ?>"><?php echo esc_html($field['name']); ?></option>
|
|
<?php
|
|
break;
|
|
default:
|
|
# code...
|
|
break;
|
|
}
|
|
}
|
|
|
|
endforeach;
|
|
?>
|
|
</optgroup>
|
|
<?php
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! self::$is_comment_export )
|
|
{
|
|
if(self::$acf_export) {
|
|
// Render Available ACF
|
|
self::$acf_export->render_filters();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public function render_new_field(){
|
|
|
|
ob_start();
|
|
|
|
$available_sections = apply_filters("wp_all_export_available_sections", $this->available_sections);
|
|
|
|
if(self::$woo_order_export) {
|
|
// Render Available WooCommerce Orders Data
|
|
self::$woo_order_export->render_new_field();
|
|
}
|
|
|
|
if ( ! empty($available_sections) ):?>
|
|
|
|
<select class="wp-all-export-chosen-select" name="column_value_type" style="width:350px;">
|
|
|
|
<?php
|
|
foreach ($available_sections as $slug => $section)
|
|
{
|
|
if($slug === 'product_data' && !self::get_addons_service()->isWooCommerceAddonActive()) {
|
|
unset($section['additional']);
|
|
}
|
|
|
|
if ( ! empty($this->available_data[$section['content']]) or ! empty($section['additional']) ):
|
|
?>
|
|
<optgroup label="<?php echo esc_attr($section['title']); ?>">
|
|
|
|
<?php
|
|
if ( ! empty($this->available_data[$section['content']]) )
|
|
{
|
|
foreach ($this->available_data[$section['content']] as $field)
|
|
{
|
|
$field_label = is_array($field) ? $field['label'] : $field;
|
|
$field_type = is_array($field) ? $field['type'] : $slug;
|
|
$field_name = is_array($field) ? $field['name'] : $field;
|
|
$field_options = empty ($field['options']) ? '' : $field['options'];
|
|
|
|
if ( $field_type == 'cf' && $field_name == '_thumbnail_id' || ($field_type=='other')) continue;
|
|
$elementDisabled = "";
|
|
if(($section['title'] == 'Custom Fields' || $section['title'] == 'Other') && XmlExportEngine::$is_user_export) {
|
|
$elementDisabled = "disabled='disabled'";
|
|
}
|
|
?>
|
|
<option
|
|
value="<?php echo esc_attr($field_type);?>"
|
|
label="<?php echo esc_attr($field_label);?>"
|
|
<?php echo esc_html($elementDisabled); ?>
|
|
options="<?php echo esc_attr($field_options); ?>"><?php echo esc_html($field_name);?></option>
|
|
<?php
|
|
}
|
|
}
|
|
?>
|
|
|
|
</optgroup>
|
|
|
|
<?php
|
|
|
|
if ( ! empty($section['additional']) )
|
|
{
|
|
foreach ($section['additional'] as $sub_slug => $sub_section)
|
|
{
|
|
?>
|
|
<optgroup label="<?php echo esc_attr($sub_section['title']); ?>">
|
|
|
|
<?php
|
|
foreach ($sub_section['meta'] as $field)
|
|
{
|
|
$field_label = is_array($field) ? $field['label'] : $field;
|
|
$field_type = is_array($field) ? $field['type'] : $slug;
|
|
$field_name = is_array($field) ? $field['name'] : $field;
|
|
$field_options = empty($field['options']) ? '{"is_export_featured":true,"is_export_attached":true,"image_separator":"|"}' : $field['options'];
|
|
?>
|
|
<option
|
|
value="<?php echo esc_attr($field_type);?>"
|
|
label="<?php echo esc_attr($field_label);?>"
|
|
options="<?php echo esc_attr($field_options); ?>"><?php echo esc_html($field_name);?></option>
|
|
<?php
|
|
}
|
|
?>
|
|
</optgroup>
|
|
<?php
|
|
}
|
|
}
|
|
endif;
|
|
}
|
|
|
|
if ( ! self::$is_comment_export )
|
|
{
|
|
if(self::$acf_export) {
|
|
// Render Available ACF
|
|
self::$acf_export->render_new_field();
|
|
}
|
|
}
|
|
|
|
?>
|
|
<optgroup label="Advanced">
|
|
<option value="sql" label="sql"><?php esc_html_e("SQL Query", "wp_all_export_plugin"); ?></option>
|
|
</optgroup>
|
|
</select>
|
|
<?php
|
|
endif;
|
|
|
|
return ob_get_clean();
|
|
|
|
}
|
|
|
|
public function parse_custom_xml_template(){
|
|
|
|
preg_match("%". self::XML_LOOP_START ."(.*)". self::XML_LOOP_END ."%", $this->post['custom_xml_template'], $matches);
|
|
$parts = explode(self::XML_LOOP_START, $this->post['custom_xml_template']);
|
|
$loopContent = $parts[1];
|
|
$parts = explode(self::XML_LOOP_END, $loopContent);
|
|
$loopContent = $parts[0];
|
|
$line_numbers = substr_count($loopContent, "\n") +1;
|
|
|
|
$result['original_post_loop'] = $loopContent;
|
|
$result['line_numbers'] = $line_numbers;
|
|
|
|
$custom_xml_template = str_replace("\n", "", $this->post['custom_xml_template']);
|
|
// retrieve XML header
|
|
preg_match("%(.*)". self::XML_LOOP_START ."%", $custom_xml_template, $matches);
|
|
$result['custom_xml_template_header'] = empty($matches[1]) ? '' : rtrim($matches[1]);
|
|
// retrieve XML POST LOOP
|
|
preg_match("%". self::XML_LOOP_START ."(.*)". self::XML_LOOP_END ."%", $custom_xml_template, $matches);
|
|
$result['custom_xml_template_loop'] = empty($matches[1]) ? '' : rtrim($matches[1]);
|
|
// retrieve XML footer
|
|
preg_match("%". self::XML_LOOP_END ."(.*)%", $custom_xml_template, $matches);
|
|
$result['custom_xml_template_footer'] = empty($matches[1]) ? '' : $matches[1];
|
|
|
|
// Validate Custom XML Template header
|
|
if ( empty($result['custom_xml_template_header']) )
|
|
{
|
|
$this->errors->add('form-validation', __('Missing custom XML template header.', 'wp_all_export_plugin'));
|
|
}
|
|
// Validate Custom XML Template post LOOP
|
|
if ( empty($result['custom_xml_template_loop']) )
|
|
{
|
|
$this->errors->add('form-validation', __('Missing custom XML template post loop.', 'wp_all_export_plugin'));
|
|
}
|
|
// Validate Custom XML Template footer
|
|
if ( empty($result['custom_xml_template_footer']) )
|
|
{
|
|
$this->errors->add('form-validation', __('Missing custom XML template footer.', 'wp_all_export_plugin'));
|
|
}
|
|
|
|
if ( ! $this->errors->get_error_codes()) {
|
|
|
|
// retrieve all placeholders in the XML loop
|
|
preg_match_all("%(\[[^\]\[]*\])%", $result['custom_xml_template_loop'], $matches);
|
|
$loop_placeholders = empty($matches) ? array() : $matches[0];
|
|
|
|
$field_keys = array();
|
|
// looking for placeholders e.q. {Post Type}, {Title}
|
|
if ( ! empty($loop_placeholders) ){
|
|
|
|
foreach ($loop_placeholders as $snippet) {
|
|
preg_match("%\{(.*)\}%", $snippet, $matches);
|
|
if ( ! empty($matches[1]) ) $field_keys[] = $matches[1];
|
|
}
|
|
}
|
|
|
|
preg_match_all("%(\{[^\}\{]*\})%", $result['custom_xml_template_loop'], $matches);
|
|
$loop_placeholders = empty($matches) ? array() : $matches[0];
|
|
|
|
$field_keys = array();
|
|
// looking for placeholders e.q. {Post Type}, {Title}
|
|
if ( ! empty($loop_placeholders) ){
|
|
|
|
foreach ($loop_placeholders as $snippet) {
|
|
preg_match("%\{(.*)\}%", $snippet, $matches);
|
|
if ( ! empty($matches[1]) and ! in_array($matches[1], $field_keys)) $field_keys[] = $matches[1];
|
|
}
|
|
}
|
|
|
|
if (!empty($field_keys)){
|
|
$result['custom_xml_template_options'] = $this->get_fields_options( $field_keys );
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* __get function.
|
|
*
|
|
* @access public
|
|
* @param mixed $key
|
|
* @return mixed
|
|
*/
|
|
public function __get( $key ) {
|
|
return $this->get( $key );
|
|
}
|
|
|
|
/**
|
|
* Get a session variable
|
|
*
|
|
* @param string $key
|
|
* @param mixed $default used if the session variable isn't set
|
|
* @return mixed value of session variable
|
|
*/
|
|
public function get( $key, $default = null ) {
|
|
return isset( $this->{$key} ) ? $this->{$key} : $default;
|
|
}
|
|
|
|
public static function getProductVariationMode()
|
|
{
|
|
if(!isset(self::$exportOptions['export_variations'])) {
|
|
self::$exportOptions['export_variations'] = self::VARIABLE_PRODUCTS_EXPORT_PARENT_AND_VARIATION;
|
|
}
|
|
|
|
return apply_filters('wp_all_export_product_variation_mode', self::$exportOptions['export_variations'], self::$exportID);
|
|
}
|
|
|
|
public static function getProductVariationTitleMode()
|
|
{
|
|
if(!isset(self::$exportOptions['export_variations_title'])) {
|
|
self::$exportOptions['export_variations_title'] = self::VARIATION_USE_PARENT_TITLE;
|
|
}
|
|
|
|
return self::$exportOptions['export_variations_title'];
|
|
}
|
|
|
|
public static function sanitizeFieldName($fieldName)
|
|
{
|
|
if (class_exists('XmlExportWooCommerce') && XmlExportWooCommerce::$is_active) {
|
|
return urldecode($fieldName);
|
|
}
|
|
|
|
return $fieldName;
|
|
}
|
|
|
|
public static function get_addons_service()
|
|
{
|
|
if(!self::$addons_service) {
|
|
self::$addons_service = new Wpae\App\Service\Addons\AddonService();
|
|
}
|
|
|
|
return self::$addons_service;
|
|
}
|
|
}
|
|
|
|
}
|
|
|