function import_csv($path, $form_id, $field_ids, $entry_key = 0, $start_row = 2, $del = ',') { global $importing_fields, $wpdb; if (!defined('WP_IMPORTING')) { define('WP_IMPORTING', true); } $form_id = (int) $form_id; if (!$form_id) { return $start_row; } if (!$importing_fields) { $importing_fields = array(); } if (!ini_get('safe_mode')) { set_time_limit(0); } //Remove time limit to execute this function if ($f = fopen($path, "r")) { unset($path); global $frm_entry, $frmdb; $row = 0; //setlocale(LC_ALL, 'ja_JP.UTF8'); while (($data = fgetcsv($f, 100000, $del)) !== FALSE) { $row++; if ($start_row > $row) { continue; } $values = array('form_id' => $form_id); $values['item_meta'] = array(); foreach ($field_ids as $key => $field_id) { $data[$key] = isset($data[$key]) ? $data[$key] : ''; //if($data[$key] == ''){ // error_log($row .' key:'. $key .' $data[$key] empty'); // return $row-1; //} if (is_numeric($field_id)) { if (isset($importing_fields[$field_id])) { $field = $importing_fields[$field_id]; } else { $field = FrmField::getOne($field_id); $importing_fields[$field_id] = $field; } $values['item_meta'][$field_id] = $data[$key]; if ($field->type == 'user_id') { if (!is_numeric($values['item_meta'][$field_id])) { if (!isset($user_array)) { $users = $wpdb->get_results("SELECT ID, user_login, display_name FROM {$wpdb->users} ORDER BY display_name ASC"); $user_array = array(); foreach ($users as $user) { $ukey = !empty($user->display_name) ? $user->display_name : $user->user_login; $user_array[$ukey] = $user->ID; unset($ukey); unset($user); } } if (isset($user_array[$values['item_meta'][$field_id]])) { $values['item_meta'][$field_id] = (int) $user_array[$values['item_meta'][$field_id]]; } } $values['user_id'] = $values['item_meta'][$field_id]; } else { if ($field->type == 'checkbox' and !empty($values['item_meta'][$field_id])) { if (!in_array($values['item_meta'][$field_id], (array) $field->options)) { $checked = maybe_unserialize($values['item_meta'][$field_id]); if (!is_array($checked)) { $checked = explode(',', $checked); } if ($checked and count($checked) > 1) { $values['item_meta'][$field_id] = array_map('trim', $checked); } } } } $_POST['item_meta'][$field_id] = $values['item_meta'][$field_id]; FrmProEntryMeta::set_post_fields($field, $values['item_meta'][$field_id]); unset($field); } else { if (is_array($field_id)) { $field_type = isset($field_id['type']) ? $field_id['type'] : false; $linked = isset($field_id['linked']) ? $field_id['linked'] : false; $field_id = $field_id['field_id']; if ($field_type == 'data') { if ($linked) { $entry_id = $frmdb->get_var($frmdb->entry_metas, array('meta_value' => $data[$key], 'field_id' => $linked), 'item_id'); } else { //get entry id of entry with item_key == $data[$key] $entry_id = $frmdb->get_var($frmdb->entries, array('item_key' => $data[$key])); } if ($entry_id) { $values['item_meta'][$field_id] = $entry_id; } } unset($field_type); unset($linked); } else { $values[$field_id] = $data[$key]; } } } if (!isset($values['item_key']) or empty($values['item_key'])) { $values['item_key'] = $data[$entry_key]; } if (isset($values['created_at'])) { $values['created_at'] = date('Y-m-d H:i:s', strtotime($values['created_at'])); } if (isset($values['updated_at'])) { $values['updated_at'] = date('Y-m-d H:i:s', strtotime($values['updated_at'])); } $created = $frm_entry->create($values); unset($_POST); unset($values); unset($created); if ($row - $start_row >= 250) { //change max rows here fclose($f); return $row; } } fclose($f); return $row; } }