示例#1
0
 public static function set_post_fields($field, $value, &$errors)
 {
     $errors = FrmProEntryMetaHelper::set_post_fields($field, $value, $errors);
     return $errors;
 }
示例#2
0
 function set_post_fields($field, $value, $errors = null)
 {
     _deprecated_function(__FUNCTION__, '1.07.05', 'FrmProEntryMetaHelper::set_post_fields');
     return FrmProEntryMetaHelper::set_post_fields($field, $value, $errors);
 }
示例#3
0
 public static function import_csv($path, $form_id, $field_ids, $entry_key = 0, $start_row = 2, $del = ',', $max = 250)
 {
     global $importing_fields, $wpdb, $frmpro_settings;
     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, $frm_field;
         $row = 0;
         //setlocale(LC_ALL, get_locale());
         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 (is_numeric($field_id)) {
                     if (isset($importing_fields[$field_id])) {
                         $field = $importing_fields[$field_id];
                     } else {
                         $field = $frm_field->getOne($field_id);
                         $importing_fields[$field_id] = $field;
                     }
                     $values['item_meta'][$field_id] = apply_filters('frm_import_val', $data[$key], $field);
                     switch ($field->type) {
                         case 'user_id':
                             $values['item_meta'][$field_id] = FrmProAppHelper::get_user_id_param(trim($values['item_meta'][$field_id]));
                             $_POST['frm_user_id'] = $values['frm_user_id'] = $values['item_meta'][$field_id];
                             break;
                         case 'checkbox':
                         case 'select':
                             $values['item_meta'][$field_id] = self::get_multi_opts($values['item_meta'][$field_id], $field);
                             break;
                         case 'data':
                             $values['item_meta'][$field_id] = self::get_dfe_id($values['item_meta'][$field_id], $field, array(), $values);
                             break;
                         case 'file':
                             $values['item_meta'][$field_id] = self::get_file_id($values['item_meta'][$field_id]);
                             break;
                         case 'date':
                             $values['item_meta'][$field_id] = self::get_date($values['item_meta'][$field_id]);
                             break;
                     }
                     if (isset($_POST['item_meta'][$field_id]) and ($field->type == 'checkbox' or $field->type == 'data' and $field->field_options['data_type'] != 'checkbox')) {
                         if (empty($values['item_meta'][$field_id])) {
                             $values['item_meta'][$field_id] = $_POST['item_meta'][$field_id];
                         } else {
                             if (!empty($_POST['item_meta'][$field_id])) {
                                 $values['item_meta'][$field_id] = array_merge((array) $_POST['item_meta'][$field_id], (array) $values['item_meta'][$field_id]);
                             }
                         }
                     }
                     $_POST['item_meta'][$field_id] = $values['item_meta'][$field_id];
                     FrmProEntryMetaHelper::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];
             }
             $offset = get_option('gmt_offset') * 60 * 60;
             foreach (array('created_at', 'updated_at') as $stamp) {
                 if (!isset($values[$stamp])) {
                     continue;
                 }
                 // adjust the date format if it starts with the day
                 if (!preg_match('/^\\d{4}-\\d{2}-\\d{2}/', trim($values[$stamp])) && substr($frmpro_settings->date_format, 0, 1) == 'd') {
                     $reg_ex = str_replace(array('/', '.', '-', 'd', 'j', 'm', 'y', 'Y'), array('\\/', '\\.', '\\-', '\\d{2}', '\\d', '\\d{2}', '\\d{2}', '\\d{4}'), $frmpro_settings->date_format);
                     if (preg_match('/^' . $reg_ex . '/', trim($values[$stamp]))) {
                         $values[$stamp] = FrmProAppHelper::convert_date($values[$stamp], $frmpro_settings->date_format, 'Y-m-d H:i:s');
                     }
                 }
                 $values[$stamp] = date('Y-m-d H:i:s', strtotime($values[$stamp]) - $offset);
                 unset($stamp);
             }
             unset($offset);
             if (isset($values['user_id'])) {
                 $values['user_id'] = FrmProAppHelper::get_user_id_param($values['user_id']);
             }
             if (isset($values['updated_by'])) {
                 $values['updated_by'] = FrmProAppHelper::get_user_id_param($values['updated_by']);
             }
             if (isset($values['is_draft'])) {
                 $values['is_draft'] = (int) $values['is_draft'];
             }
             $editing = false;
             if (isset($values['id']) && $values['item_key']) {
                 //check for updating by entry ID
                 $editing = $wpdb->get_var($wpdb->prepare("SELECT id FROM {$wpdb->prefix}frm_items WHERE form_id=%d AND id=%d", $values['form_id'], $values['id']));
             }
             if ($editing) {
                 $created = $frm_entry->update($values['id'], $values);
             } else {
                 $created = $frm_entry->create($values);
             }
             unset($_POST);
             unset($values);
             unset($created);
             if ($row - $start_row >= $max) {
                 fclose($f);
                 return $row;
             }
         }
         fclose($f);
         return $row;
     }
 }