function update_object($entry_id, $fields)
 {
     return FrmEntry::update($entry_id, $fields);
 }
 public static function process_update_entry($params, $errors, $form, $args)
 {
     global $frm_vars;
     if ($params['action'] == 'update' && isset($frm_vars['saved_entries']) && in_array((int) $params['id'], (array) $frm_vars['saved_entries'])) {
         return;
     }
     if ($params['action'] == 'create' && isset($frm_vars['created_entries'][$form->id]) && isset($frm_vars['created_entries'][$form->id]['entry_id']) && is_numeric($frm_vars['created_entries'][$form->id]['entry_id'])) {
         $entry_id = $params['id'] = $frm_vars['created_entries'][$form->id]['entry_id'];
         self::set_cookie($entry_id, $form->id);
         $conf_method = apply_filters('frm_success_filter', 'message', $form, $form->options, $params['action']);
         if ($conf_method != 'redirect') {
             return;
         }
         $success_args = array('action' => $params['action']);
         if (isset($args['ajax'])) {
             $success_args['ajax'] = $args['ajax'];
         }
         do_action('frm_success_action', $conf_method, $form, $form->options, $params['id'], $success_args);
     } else {
         if ($params['action'] == 'update') {
             if (isset($frm_vars['saved_entries']) && in_array((int) $params['id'], (array) $frm_vars['saved_entries'])) {
                 if (isset($_POST['item_meta'])) {
                     unset($_POST['item_meta']);
                 }
                 add_filter('frm_continue_to_new', '__return_false', 15);
                 return;
             }
             //don't update if there are validation errors
             if (!empty($errors)) {
                 return;
             }
             //check if user is allowed to update
             if (!FrmProEntriesHelper::user_can_edit((int) $params['id'], $form)) {
                 $frm_settings = FrmAppHelper::get_settings();
                 wp_die(do_shortcode($frm_settings->login_msg));
             }
             //update, but don't check for confirmation if saving draft
             if (FrmProFormsHelper::saving_draft()) {
                 FrmEntry::update($params['id'], $_POST);
                 return;
             }
             //don't update if going back
             if (isset($_POST['frm_page_order_' . $form->id]) || FrmProFormsHelper::going_to_prev($form->id)) {
                 return;
             }
             FrmEntry::update($params['id'], $_POST);
             $success_args = array('action' => $params['action']);
             if ($params['action'] != 'create' && FrmProEntriesHelper::is_new_entry($params['id'])) {
                 $success_args['action'] = 'create';
             }
             //check confirmation method
             $conf_method = apply_filters('frm_success_filter', 'message', $form, $success_args['action']);
             if ($conf_method != 'redirect') {
                 return;
             }
             if (isset($args['ajax'])) {
                 $success_args['ajax'] = $args['ajax'];
             }
             do_action('frm_success_action', $conf_method, $form, $form->options, $params['id'], $success_args);
         } else {
             if ($params['action'] == 'destroy') {
                 //if the user who created the entry is deleting it
                 self::ajax_destroy($form->id, false, false);
             }
         }
     }
 }
Esempio n. 3
0
 public static function import_xml_entries($entries, $imported)
 {
     global $frm_duplicate_ids, $wpdb, $frm_field;
     $frm_entry = new FrmEntry();
     $saved_entries = array();
     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' => FrmProAppHelper::get_user_id_param((string) $item->user_id), 'parent_item_id' => (int) $item->parent_item_id, 'is_draft' => (int) $item->is_draft, 'updated_by' => FrmProAppHelper::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 = $frm_field->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);
             switch ($field->type) {
                 case 'user_id':
                     $metas[$field_id] = FrmProAppHelper::get_user_id_param($metas[$field_id]);
                     if ($metas[$field_id] && is_numeric($metas[$field_id])) {
                         $entry['frm_user_id'] = $metas[$field_id];
                     }
                     break;
                 case 'file':
                     $metas[$field_id] = self::get_file_id($metas[$field_id]);
                     break;
                 case 'date':
                     $metas[$field_id] = self::get_date($metas[$field_id]);
                     break;
                 case 'data':
                     $metas[$field_id] = self::get_dfe_id($metas[$field_id], $field, $saved_entries, $metas);
                     break;
                 case 'select':
                 case 'checkbox':
                     $metas[$field_id] = self::get_multi_opts($metas[$field_id], $field);
                     break;
             }
             unset($field);
             unset($meta);
         }
         unset($item);
         $entry['item_meta'] = $metas;
         unset($metas);
         // edit entry if the key and created time match
         $editing = $wpdb->get_var($wpdb->prepare("SELECT id FROM {$wpdb->prefix}frm_items WHERE item_key=%s AND created_at=%s", $entry['item_key'], date('Y-m-d H:i:s', strtotime($entry['created_at']))));
         if ($editing) {
             $frm_entry->update($entry['id'], $entry);
             $imported['updated']['items']++;
             $saved_entries[$entry['id']] = $entry['id'];
         } else {
             if ($e = $frm_entry->create($entry)) {
                 $saved_entries[$entry['id']] = $e;
                 $imported['imported']['items']++;
             }
         }
         unset($entry);
     }
     unset($entries);
     return $imported;
 }
Esempio n. 4
0
 /**
  * Save the entry after checking if it should be created or updated
  */
 private static function save_or_edit_entry($values)
 {
     $editing = false;
     if (isset($values['id']) && $values['item_key']) {
         global $wpdb;
         //check for updating by entry ID
         $editing = FrmDb::get_var('frm_items', array('form_id' => $values['form_id'], 'id' => $values['id']));
     }
     if ($editing) {
         FrmEntry::update($values['id'], $values);
     } else {
         FrmEntry::create($values);
     }
 }
Esempio n. 5
0
 public static function save_sub_entries($values, $action = 'create')
 {
     $form_id = isset($values['form_id']) ? (int) $values['form_id'] : 0;
     if (!$form_id || !isset($values['item_meta'])) {
         return $values;
     }
     $form_fields = FrmProFormsHelper::has_field('form', $form_id, false);
     $section_fields = FrmProFormsHelper::has_field('divider', $form_id, false);
     if (!$form_fields && !$section_fields) {
         // only continue if there could be sub entries
         return $values;
     }
     $form_fields = array_merge($section_fields, $form_fields);
     $new_values = $values;
     unset($new_values['item_meta']);
     // allow for multiple embeded forms
     foreach ($form_fields as $field) {
         if (!isset($values['item_meta'][$field->id]) || !isset($field->field_options['form_select']) || !isset($values['item_meta'][$field->id]['form'])) {
             // don't continue if we don't know which form to insert the sub entries into
             unset($values['item_meta'][$field->id]);
             continue;
         }
         if ('divider' == $field->type && !FrmField::is_repeating_field($field)) {
             // only create sub entries for repeatable sections
             continue;
         }
         $field_values = $values['item_meta'][$field->id];
         $sub_form_id = $field->field_options['form_select'];
         unset($field_values['form']);
         if ($action != 'create' && isset($field_values['id'])) {
             $old_ids = FrmEntryMeta::get_entry_meta_by_field($values['id'], $field->id);
             $old_ids = array_filter((array) $old_ids, 'is_numeric');
             unset($field_values['id']);
         } else {
             $old_ids = array();
         }
         $sub_ids = array();
         foreach ($field_values as $k => $v) {
             $entry_values = $new_values;
             $entry_values['form_id'] = $sub_form_id;
             $entry_values['item_meta'] = (array) $v;
             $entry_values['parent_item_id'] = isset($values['id']) ? $values['id'] : 0;
             $entry_values['parent_form_id'] = $form_id;
             // include a nonce just to be sure the parent_form_id is legit
             $entry_values['parent_nonce'] = wp_create_nonce('parent');
             // set values for later user (file upload and tags fields)
             $_POST['item_meta']['key_pointer'] = $k;
             $_POST['item_meta']['parent_field'] = $field->id;
             if (!is_numeric($k) && in_array(str_replace('i', '', $k), $old_ids)) {
                 // update existing sub entries
                 $entry_values['id'] = str_replace('i', '', $k);
                 FrmEntry::update($entry_values['id'], $entry_values);
                 $sub_id = $entry_values['id'];
             } else {
                 // create new sub entries
                 $sub_id = FrmEntry::create($entry_values);
             }
             if ($sub_id) {
                 $sub_ids[] = $sub_id;
             }
             unset($k, $v, $entry_values, $sub_id);
         }
         $values['item_meta'][$field->id] = $sub_ids;
         // array of sub entry ids
         $old_ids = array_diff($old_ids, $sub_ids);
         if (!empty($old_ids)) {
             // delete entries that were removed from section
             foreach ($old_ids as $old_id) {
                 FrmEntry::destroy($old_id);
             }
         }
         unset($field);
     }
     return $values;
 }