GIF89A;
Server : Microsoft-IIS/10.0 System : Windows NT HMW9050 6.2 build 9200 (Unknow Windows version Standard Edition) i586 User : fatorc ( 0) PHP Version : 5.3.28 Disable Function : escapeshellarg, escapeshellcmd, exec, passthru, proc_close, proc_open, shell_exec, system, dl, popen, php_check_syntax, php_strip_whitespace, symlink, link, openlog, apache_child_terminate Directory : e:/home/fatorc/Web/wp-content/plugins/types/library/toolset/types/includes/ |
Upload File : |
<?php /* * Migration functions * * */ /** * Migration form. * * @global object $wpdb * * @return array */ function wpcf_admin_migration_form() { global $wpdb; $wpcf_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); $wpcf_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); $wpcf_types_defaults = wpcf_custom_types_default(); $wpcf_taxonomies_defaults = wpcf_custom_taxonomies_default(); $form = array(); $form['#form']['callback'] = 'wpcf_admin_migration_form_submit'; $cfui_types = get_option('cpt_custom_post_types', array()); $cfui_types_migrated = array(); $cfui_taxonomies = get_option('cpt_custom_tax_types', array()); $cfui_tax_migrated = array(); if (!empty($cfui_types)) { $form['types_title'] = array( '#type' => 'markup', '#markup' => '<h3>' . __('Custom Types UI Post Types', 'wpcf') . '</h3>', ); foreach ($cfui_types as $key => $cfui_type) { $exists = array_key_exists(sanitize_title($cfui_type['name']), $wpcf_types); if ($exists) { $attributes = array('readonly' => 'readonly', 'disabled' => 'disabled'); $add = __('(exists)', 'wpcf'); } else { $attributes = array(); $add = ''; } $slug = $id = sanitize_title($cfui_type['name']); $form['types-' . $slug] = array( '#type' => 'checkbox', '#name' => 'cfui[types][]', '#value' => $slug, '#title' => !empty($cfui_type['label']) ? $cfui_type['label'] . ' ' . $add : $slug . ' ' . $add, '#inline' => true, '#after' => ' ', '#default_value' => $exists ? 0 : 1, '#attributes' => $attributes, ); } } if (!empty($cfui_taxonomies)) { $form['tax_titles'] = array( '#type' => 'markup', '#markup' => '<h3>' . __('Custom Types UI Taxonomies', 'wpcf') . '</h3>', ); foreach ($cfui_taxonomies as $key => $cfui_tax) { $title = !empty($cfui_tax['label']) ? $cfui_tax['label'] : $slug; $exists = array_key_exists(sanitize_title($cfui_tax['name']), $wpcf_taxonomies); if ($exists) { $attributes = array('readonly' => 'readonly', 'disabled' => 'disabled'); $add = __('(exists)', 'wpcf'); } else { $attributes = array(); $add = ''; } $slug = $id = sanitize_title($cfui_tax['name']); $form['types-' . $slug] = array( '#type' => 'checkbox', '#name' => 'cfui[tax][]', '#value' => $slug, '#title' => $title . ' ' . $add, '#inline' => true, '#after' => ' ', '#default_value' => $exists ? 0 : 1, '#attributes' => $attributes, ); } } if (!empty($cfui_types) || !empty($cfui_taxonomies)) { $form['deactivate-cfui'] = array( '#type' => 'checkbox', '#name' => 'deactivate-cfui', '#before' => '<br /><br />', '#default_value' => 1, '#title' => __('Disable Custom Types UI after importing the configuration (leave this checked to avoid defining custom types twice)', 'wpcf'), ); }; /** * Advanced Custom Fields */ if (class_exists('acf') && !class_exists('acf_pro')) { $acf_groups = get_posts('post_type=acf&status=publish&numberposts=-1'); if (!empty($acf_groups)) { $wpcf_types = wpcf_admin_fields_get_available_types(); $wpcf_types_options = array(); foreach ($wpcf_types as $type => $data) { $wpcf_types_options[$type] = array( '#title' => $data['title'], '#value' => $type, ); } $acf_types = array( 'text' => 'textfield', 'textarea' => 'textarea', 'wysiwyg' => 'wysiwyg', 'image' => 'image', 'file' => 'file', 'select' => 'select', 'checkbox' => 'checkbox', 'radio' => 'radio', 'true_false' => 'radio', 'page_link' => 'textfield', 'post_object' => false, 'relationship' => 'textfield', 'date_picker' => 'date', 'color_picker' => false, 'repeater' => false, ); if (!empty($acf_groups)) { $form['acf_title'] = array( '#type' => 'markup', '#markup' => '<h3>' . __('Advanced Custom Fields', 'wpcf') . '</h3>', ); } foreach ($acf_groups as $acf_key => $acf_post) { $group_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type = %s", $acf_post->post_title, TYPES_CUSTOM_FIELD_GROUP_CPT_NAME ) ); if (empty($group_id)) { $add = __('Group will be created', 'wpcf'); } else { $add = __('Group will be updated', 'wpcf'); } $form[$acf_post->ID . '_post'] = array( '#type' => 'checkbox', '#title' => $acf_post->post_title . ' (' . $add . ')', '#value' => $acf_post->ID, '#default_value' => 1, '#name' => 'acf_posts[migrate_groups][]', '#inline' => true, '#after' => '<br />', '#attributes' => array('onclick' => 'if (jQuery(this).is(\':checked\')) { jQuery(this).parent().find(\'table .checkbox\').attr(\'checked\',\'checked\'); } else { jQuery(this).parent().find(\'table .checkbox\').removeAttr(\'checked\'); }'), ); $form[$acf_post->ID . '_post_title'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][post_title]', '#value' => $acf_post->post_title, ); $form[$acf_post->ID . '_post_content'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][post_content]', '#value' => addslashes($acf_post->post_content), ); $form[$acf_post->ID . '_fields_table'] = array( '#type' => 'markup', '#markup' => '<table style="margin-bottom: 40px;">', ); $metas = get_post_custom($acf_post->ID); $acf_fields = array(); foreach ($metas as $meta_name => $meta) { if (strpos($meta_name, 'field_') === 0) { $data = unserialize($meta[0]); $exists = wpcf_types_cf_under_control('check_exists', $data['name']); $outsider = wpcf_types_cf_under_control('check_outsider', $data['name']); $supported = !empty($acf_types[$data['type']]); if (!$supported) { $attributes = array('style' => 'margin-left: 20px;', 'readonly' => 'readonly', 'disabled' => 'disabled'); $add = __('Field conversion not supported by Types', 'wpcf'); } else if ($exists && !$outsider) { $attributes = array('style' => 'margin-left: 20px;', 'readonly' => 'readonly', 'disabled' => 'disabled'); $add = __('Field with same name is already controlled by Types', 'wpcf'); } else if ($exists && $outsider) { $attributes = array('style' => 'margin-left: 20px;'); $add = __('Field will be updated', 'wpcf'); } else { $attributes = array('style' => 'margin-left: 20px;'); $add = __('Field will be created', 'wpcf'); } $form[$acf_post->ID . '_acf_field_' . $meta_name . '_checkbox'] = array( '#type' => 'checkbox', '#title' => $data['name'] . ' (' . $add . ')', '#value' => $meta_name, '#default_value' => (($exists && !$outsider) || !$supported) ? 0 : 1, '#name' => 'acf_posts[' . $acf_post->ID . '][migrate_fields][]', '#inline' => true, '#attributes' => $attributes, '#before' => '<tr><td>', ); $form[$acf_post->ID . '_acf_field_' . $meta_name . '_details_description'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][description]', '#value' => esc_attr($data['instructions']), '#inline' => true, ); $form[$acf_post->ID . '_acf_field_' . $meta_name . '_details_name'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][name]', '#value' => esc_attr($data['label']), ); $form[$acf_post->ID . '_acf_field_' . $meta_name . '_details_slug'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][slug]', '#value' => esc_attr($data['name']), ); // Add options for radios and select if (in_array($data['type'], array('radio', 'select')) && !empty($data['choices'])) { foreach ($data['choices'] as $option_value => $option_title) { if (strpos($option_value, ':') !== false) { $temp = explode(':', $option_value); $option_value = trim($temp[0]); $option_title = trim($temp[1]); } else if (strpos($option_title, ':') !== false) { $temp = explode(':', $option_title); $option_value = trim($temp[0]); $option_title = trim($temp[1]); } $_key = sanitize_title($option_value); $form[$acf_post->ID . '_acf_field_' . $meta_name . '_option_' . $_key . '_value'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][options][' . $_key . '][value]', '#value' => esc_attr($option_value), ); $form[$acf_post->ID . '_acf_field_' . $meta_name . '_option_' . $_key . '_title'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][options][' . $_key . '][title]', '#value' => esc_attr($option_title), ); } if (!empty($data['default_value'])) { $form[$acf_post->ID . '_acf_field_' . $meta_name . '_option_default'] = array( '#type' => 'hidden', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][options][default]', '#value' => esc_attr($data['default_value']), ); } } if (($exists && !$outsider) || !$supported) { $attributes = array('disabled' => 'disabled'); if ($exists) { } } else { $attributes = array(); } $default_value = isset($acf_types[$data['type']]) && !empty($acf_types[$data['type']]) ? $acf_types[$data['type']] : 'textfield'; $form[$acf_post->ID . '_acf_field_' . $meta_name . '_details_type'] = array( '#type' => 'select', '#name' => 'acf_posts[' . $acf_post->ID . '][fields][' . $meta_name . '][type]', '#options' => $wpcf_types_options, '#default_value' => $default_value, '#inline' => true, '#attributes' => $attributes, '#before' => '</td><td>', '#after' => '</td></tr>', ); } } $acf_groups[$acf_key] = $acf_post; $form[$acf_post->ID . '_fields_table_close'] = array( '#type' => 'markup', '#markup' => '</table>', ); } } } $form['submit'] = array( '#type' => 'submit', '#name' => 'submit', '#value' => __('Import custom field settings', 'wpcf'), '#attributes' => array('class' => 'button-primary'), ); return $form; } /** * Adds 3rd party created types, taxonomies and fields */ function wpcf_admin_migration_form_submit() { $cfui_types = get_option('cpt_custom_post_types', array()); $cfui_taxonomies = get_option('cpt_custom_tax_types', array()); $wpcf_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); $wpcf_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); $redirect_page = 'wpcf-ctt'; if (!empty($_POST['cfui']['types'])) { $data = array(); foreach ($_POST['cfui']['types'] as $key => $types_slug) { if (array_key_exists(sanitize_title($types_slug), $wpcf_types)) { continue; } foreach ($cfui_types as $cfui_type) { if (sanitize_title($cfui_type['name']) == $types_slug) { $data[$types_slug] = wpcf_admin_migrate_get_cfui_type_data($cfui_type); wpcf_admin_message_store( sprintf(__("Post Type %s added", 'wpcf'), '<em>' . $cfui_type['name'] . '</em>') ); } } } $wpcf_types = array_merge($wpcf_types, $data); } if (!empty($_POST['cfui']['tax'])) { $data = array(); foreach ($_POST['cfui']['tax'] as $key => $tax_slug) { if (array_key_exists(sanitize_title($tax_slug), $wpcf_taxonomies)) { continue; } foreach ($cfui_taxonomies as $cfui_tax) { if (sanitize_title($cfui_tax['name']) == $tax_slug) { $data[$tax_slug] = wpcf_admin_migrate_get_cfui_tax_data($cfui_tax); wpcf_admin_message_store( sprintf(__("Taxonomy %s added", 'wpcf'), '<em>' . $cfui_tax['name'] . '</em>') ); if ( array_key_exists(1,$cfui_tax) && !empty($cfui_tax[1]) && is_array($cfui_tax[1]) ) { foreach( $cfui_tax[1] as $key) { $types_slug = sanitize_title($key); if ( array_key_exists($types_slug, $wpcf_types) ) { if ( !array_key_exists('taxonomies', $wpcf_types[$types_slug] )) { $wpcf_types[$types_slug]['taxonomies'] = array(); } $wpcf_types[$types_slug]['taxonomies'][$tax_slug] = 1; $wpcf_types[$types_slug][TOOLSET_EDIT_LAST] = time(); } } } } } } $wpcf_taxonomies = array_merge($wpcf_taxonomies, $data); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $wpcf_taxonomies); } update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $wpcf_types); // ACF if (!empty($_POST['acf_posts']['migrate_groups'])) { foreach ($_POST['acf_posts']['migrate_groups'] as $acf_group_id) { if (empty($_POST['acf_posts'][$acf_group_id])) { continue; } global $wpdb; $group = $wpdb->get_row( $wpdb->prepare( "SELECT ID, post_title FROM $wpdb->posts WHERE post_title = %s AND post_type = %s", $_POST['acf_posts'][$acf_group_id]['post_title'], TYPES_CUSTOM_FIELD_GROUP_CPT_NAME ) ); if (empty($group)) { // @todo Maybe sanitize here $group = array(); $group['name'] = $_POST['acf_posts'][$acf_group_id]['post_title']; $group['description'] = $_POST['acf_posts'][$acf_group_id]['post_content']; $group_id = wpcf_admin_fields_save_group($group); wpcf_admin_message_store(sprintf(__("Group %s added", 'wpcf'), '<em>' . $group['name'] . '</em>')); } else { $group_id = $group->ID; wpcf_admin_message_store(sprintf(__("Group %s updated", 'wpcf'), '<em>' . $group->post_title . '</em>')); } $fields_to_add = array(); if ($group_id && !empty($_POST['acf_posts'][$acf_group_id]['fields'])) { foreach ($_POST['acf_posts'][$acf_group_id]['fields'] as $field_id => $field) { if (!in_array($field_id, $_POST['acf_posts'][$acf_group_id]['migrate_fields'])) { continue; } if (!wpcf_types_cf_under_control('check_exists', $field['slug']) || wpcf_types_cf_under_control('check_outsider', $field['slug'])) { // save field $field['controlled'] = 1; $temp = wpcf_admin_fields_save_field($field); $fields_to_add[] = $temp; wpcf_admin_message_store(sprintf(__("Field %s added", 'wpcf'), '<em>' . $temp . '</em>')); } } wpcf_admin_fields_save_group_fields($group_id, $fields_to_add, false); } wpcf_admin_fields_save_group_post_types($group_id, array()); wpcf_admin_fields_save_group_terms($group_id, array()); } $redirect_page = 'wpcf'; } flush_rewrite_rules(); // Deactivate plugins if (!empty($_POST['deactivate-cfui'])) { $active_plugins = get_option('active_plugins', array()); foreach ($active_plugins as $key => $file) { if (strpos($file, 'custom-post-type-ui.php') !== false) { unset($active_plugins[$key]); } } update_option('active_plugins', array_values($active_plugins)); } wp_safe_redirect(esc_url_raw(admin_url('admin.php?page=' . $redirect_page))); die(); } /** * Gets types data. * * @param type $cfui_type * @return type */ function wpcf_admin_migrate_get_cfui_type_data($cfui_type) { $cfui_types_migrated = array(); $supports = array(); if (!empty($cfui_type[0])) { foreach ($cfui_type[0] as $temp_key => $support) { $supports[$support] = 1; } } $taxonomies = array(); if (!empty($cfui_type[1])) { foreach ($cfui_type[1] as $key => $tax) { $taxonomies[$tax] = 1; } } $wpcf_types_defaults = wpcf_custom_types_default(); $slug = $id = sanitize_title($cfui_type['name']); // Set labels $labels = isset($cfui_type[2]) ? $cfui_type[2] : array(); $labels['name'] = !empty($cfui_type['label']) ? $cfui_type['label'] : $slug; $labels['singular_name'] = !empty($cfui_type['singular_label']) ? $cfui_type['singular_label'] : $slug; foreach ($wpcf_types_defaults['labels'] as $label_id => $label_text) { if (empty($labels[$label_id])) { $labels[$label_id] = $label_text; } } foreach ($labels as $label_id => $label_text) { if (!isset($wpcf_types_defaults['labels'][$label_id])) { unset($labels[$label_id]); } } // Force menu_name label if (empty($labels['menu_name'])) { $labels['menu_name'] = $labels['name']; } // Set rewrite $rewrite = empty($cfui_type['rewrite']) ? 0 : array(); if (is_array($rewrite)) { $rewrite = array( 'enabled' => 1, 'custom' => !empty($cfui_type['rewrite_slug']) ? 'custom' : 'normal', 'slug' => !empty($cfui_type['rewrite_slug']) ? $cfui_type['rewrite_slug'] : '', 'with_front' => 1, 'feeds' => 1, 'pages' => 1, ); } $cfui_types_migrated[$slug] = array( 'labels' => $labels, 'supports' => $supports, 'slug' => $slug, 'rewrite' => $rewrite, 'slug' => $slug, 'id' => $id, 'public' => empty($cfui_type['public']) ? 'hidden' : 'public', 'publicly_queryable' => empty($cfui_type['public']) ? false : true, 'query_var_enabled' => (bool) $cfui_type['query_var'], 'query_var' => '', 'show_in_menu' => (bool) $cfui_type['show_in_menu'], 'show_in_menu_page' => $cfui_type['show_in_menu_string'], 'has_archive' => (bool) $cfui_type['has_archive'], 'taxonomies' => $taxonomies, 'can_export' => true, 'show_in_nav_menus' => true, ); unset($cfui_type[0], $cfui_type[1], $cfui_type[2], $cfui_type['public'], $cfui_type['rewrite'], $cfui_type['name'], $cfui_type['label'], $cfui_type['singular_label'], $cfui_type['capability_type'], $cfui_type['rewrite_slug'], $cfui_type['show_in_menu'], $cfui_type['show_in_menu_string'], $cfui_type['publicly_queryable'], $cfui_type['capabilities'], $cfui_type['has_archive'], $cfui_type['show_in_nav_menus']); $cfui_types_migrated[$slug] = array_merge($cfui_type, $cfui_types_migrated[$slug]); return $cfui_types_migrated[$slug]; } /** * Gets taxonomies data. * * @param type $cfui_tax * @return type */ function wpcf_admin_migrate_get_cfui_tax_data($cfui_tax) { $cfui_tax_migrated = array(); $supports = array(); if (!empty($cfui_tax[1])) { foreach ($cfui_tax[1] as $temp_key => $support) { $supports[$support] = 1; } } $wpcf_taxonomies_defaults = wpcf_custom_taxonomies_default(); $slug = $id = sanitize_title($cfui_tax['name']); // Set labels $labels = isset($cfui_tax[0]) ? $cfui_tax[0] : array(); $labels['name'] = !empty($cfui_tax['label']) ? $cfui_tax['label'] : $slug; $labels['singular_name'] = !empty($cfui_tax['singular_label']) ? $cfui_tax['singular_label'] : $slug; foreach ($wpcf_taxonomies_defaults['labels'] as $label_id => $label_text) { if (empty($labels[$label_id])) { $labels[$label_id] = $label_text; } } foreach ($labels as $label_id => $label_text) { if (!isset($wpcf_taxonomies_defaults['labels'][$label_id])) { unset($labels[$label_id]); } } // Force menu_name label if (empty($labels['menu_name'])) { $labels['menu_name'] = $labels['name']; } // Set rewrite $rewrite = empty($cfui_tax['rewrite']) ? 0 : array(); if (is_array($rewrite)) { $rewrite = array( 'enabled' => 1, 'slug' => !empty($cfui_tax['rewrite_slug']) ? $cfui_tax['rewrite_slug'] : '', 'with_front' => 1, 'hierarchical' => (bool) $cfui_tax['hierarchical'], ); } $cfui_tax_migrated[$slug] = array( 'labels' => $labels, 'supports' => $supports, 'slug' => $slug, 'wpcf-tax' => $slug, 'rewrite' => $rewrite, 'slug' => $slug, 'id' => $id, 'public' => 'public', 'query_var_enabled' => (bool) $cfui_tax['query_var'], 'query_var' => '', 'hierarchical' => (bool) $cfui_tax['hierarchical'] ? 'hierarchical' : 'flat', ); unset($cfui_tax[0], $cfui_tax[1], $cfui_tax['rewrite'], $cfui_tax['name'], $cfui_tax['label'], $cfui_tax['singular_label'], $cfui_tax['rewrite_slug'], $cfui_tax['capabilities'], $cfui_tax['hierarchical']); $cfui_tax_migrated[$slug] = array_merge($wpcf_taxonomies_defaults, array_merge($cfui_tax, $cfui_tax_migrated[$slug])); return $cfui_tax_migrated[$slug]; }