Exemplo n.º 1
0
 /**
  * Build an array describing existing field groups within the domain.
  * 
  * @return array
  * @since 2.0
  */
 private function build_group_data()
 {
     $factory = Types_Field_Utils::get_group_factory_by_domain($this->get_current_domain());
     $groups = $factory->query_groups();
     $group_data = array();
     foreach ($groups as $group) {
         $group_data[$group->get_slug()] = array('slug' => $group->get_slug(), 'displayName' => $group->get_display_name());
     }
     return $group_data;
 }
 /**
  * @param string $domain Valid field domain
  * @param array $group Field group import data as associative array.
  * @param string $conflict_resolution = 'overwrite'|'create_new' Defines how to handle a situation when a
  *     field group already exists in the database.
  *
  * @return array Import results:
  *     'is_success' bool
  *     'display_message' string
  *     'new_group_id' int
  *
  * @since 2.1
  */
 public function import_field_group($domain, $group, $conflict_resolution)
 {
     $group_slug = wpcf_getarr($group, Types_Field_Group::XML_SLUG);
     $group_factory = Types_Field_Utils::get_group_factory_by_domain($domain);
     $existing_groups = $group_factory->query_groups(array('name' => $group_slug));
     $group_already_exists = count($existing_groups) > 0;
     $new_post = array('post_status' => $group['post_status'], 'post_type' => $group_factory->get_post_type(), 'post_title' => $group['post_title'], 'post_content' => !empty($group['post_content']) ? $group['post_content'] : '');
     $update_existing = $group_already_exists && 'overwrite' == $conflict_resolution;
     if ($update_existing) {
         $existing_group = $existing_groups[0];
         $new_post['ID'] = $existing_group->get_id();
         $new_group_id = wp_update_post($new_post);
     } else {
         $new_group_id = wp_insert_post($new_post, true);
     }
     $is_success = !is_wp_error($new_group_id) && 0 < $new_group_id;
     // Update group's postmeta
     if ($is_success && !empty($group['meta'])) {
         foreach ($group['meta'] as $meta_key => $meta_value) {
             if (Types_Field_Group_Term::POSTMETA_ASSOCIATED_TAXONOMY == $meta_key) {
                 $meta_values = explode(',', $meta_value);
                 delete_post_meta($new_group_id, $meta_key);
                 foreach ($meta_values as $single_meta_value) {
                     update_post_meta($new_group_id, $meta_key, $single_meta_value);
                 }
             } else {
                 update_post_meta($new_group_id, $meta_key, $meta_value);
             }
         }
     }
     // Create display message
     if ($is_success) {
         if ($update_existing) {
             $display_message = sprintf(__('Term field group "%s" updated', 'wpcf'), $group['post_title']);
         } else {
             $display_message = sprintf(__('Term field group "%s" added', 'wpcf'), $group['post_title']);
         }
     } else {
         if ($update_existing) {
             $display_message = sprintf(__('Term field group "%s" update failed', 'wpcf'), $group['post_title']);
         } else {
             $display_message = sprintf(__('Term field group "%s" insert failed', 'wpcf'), $group['post_title']);
         }
     }
     return array('is_success' => $is_success, 'display_message' => $display_message, 'new_group_id' => $new_group_id);
 }