コード例 #1
0
 public static function import_xml_entries($entries, $imported)
 {
     global $frm_duplicate_ids, $wpdb;
     $saved_entries = array();
     $track_child_ids = array();
     // Import all child entries first
     self::put_child_entries_first($entries);
     foreach ($entries as $item) {
         $entry = array('id' => (int) $item->id, 'item_key' => (string) $item->item_key, 'name' => (string) $item->name, 'description' => FrmAppHelper::maybe_json_decode((string) $item->description), 'ip' => (string) $item->ip, 'form_id' => isset($imported['forms'][(int) $item->form_id]) ? $imported['forms'][(int) $item->form_id] : (int) $item->form_id, 'post_id' => isset($imported['posts'][(int) $item->post_id]) ? $imported['posts'][(int) $item->post_id] : (int) $item->post_id, 'user_id' => FrmAppHelper::get_user_id_param((string) $item->user_id), 'parent_item_id' => (int) $item->parent_item_id, 'is_draft' => (int) $item->is_draft, 'updated_by' => FrmAppHelper::get_user_id_param((string) $item->updated_by), 'created_at' => (string) $item->created_at, 'updated_at' => (string) $item->updated_at);
         $metas = array();
         foreach ($item->item_meta as $meta) {
             $field_id = (int) $meta->field_id;
             if (is_array($frm_duplicate_ids) && isset($frm_duplicate_ids[$field_id])) {
                 $field_id = $frm_duplicate_ids[$field_id];
             }
             $field = FrmField::getOne($field_id);
             if (!$field) {
                 continue;
             }
             $metas[$field_id] = FrmAppHelper::maybe_json_decode((string) $meta->meta_value);
             $metas[$field_id] = apply_filters('frm_import_val', $metas[$field_id], $field);
             self::convert_field_values($field, $field_id, $metas, $saved_entries);
             if ($field->type == 'user_id' && $metas[$field_id] && is_numeric($metas[$field_id])) {
                 $entry['frm_user_id'] = $metas[$field_id];
             }
             unset($field, $meta);
         }
         unset($item);
         $entry['item_meta'] = $metas;
         unset($metas);
         // edit entry if the key and created time match
         $editing = FrmDb::get_var('frm_items', array('item_key' => $entry['item_key'], 'created_at' => date('Y-m-d H:i:s', strtotime($entry['created_at']))));
         if ($editing) {
             FrmEntry::update_entry_from_xml($entry['id'], $entry);
             $imported['updated']['items']++;
             $saved_entries[$entry['id']] = $entry['id'];
         } else {
             if ($e = FrmEntry::create_entry_from_xml($entry)) {
                 $saved_entries[$entry['id']] = $e;
                 $imported['imported']['items']++;
             }
         }
         self::track_imported_child_entries($saved_entries[$entry['id']], $entry['parent_item_id'], $track_child_ids);
         unset($entry);
     }
     self::update_parent_item_ids($track_child_ids, $saved_entries);
     unset($entries);
     return $imported;
 }