PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.6.9
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.6.9
1.6.7 1.6.8 1.6.9 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.20 1.6.21 1.6.22 1.6.23 1.6.24 1.6.25 1.6.26 1.6.27 1.6.28 1.6.3 1.6.4 1.6.5 1.6.6 All 74 releases
← All changes | includes/class-form.php +73 -0 1.6.71.6.9 View file →
@@ -138,8 +138,11 @@
138 138 $field['enable_no_captcha'] = isset( $field['enable_no_captcha'] ) ? $field['enable_no_captcha'] : '';
139 139 $field['recaptcha_theme'] = isset( $field['recaptcha_theme'] ) ? $field['recaptcha_theme'] : 'light';
140 140 }
141 141
142 + // Check if meta_key has changed when saving form compared current entries
143 + $field['original_name'] = $field['name'];
144 +
142 145 $form_fields[] = apply_filters( 'weforms-get-form-field', $field, $this->id );
143 146 }
144 147
145 148 $this->form_fields = apply_filters( 'weforms-get-form-fields', $form_fields, $this->id );
@@ -364,8 +367,78 @@
364 367 * @return \WeForms_Form_Entry_Manager
365 368 */
366 369 public function entries() {
367 370 return new WeForms_Form_Entry_Manager( $this->id, $this );
371 + }
372 +
373 + /**
374 + * When a user is editing their form they may change a fields name.
375 + * This method will loop through existing entries to match the new field names.
376 + *
377 + * @since 1.6.9
378 + *
379 + * @param int $form_id
380 + * @param array $form_fields
381 + */
382 + public function maybe_update_entries( $form_fields ) {
383 + $changed_fields = $this->get_changed_fields( $form_fields );
384 + // Loop through changed fields and update entries
385 + foreach ( $changed_fields as $old => $new) {
386 + $updated_fields = $this->rename_field( $old, $new );
387 + }
388 + }
389 +
390 + /**
391 + * When a user is editing their form they may change a fields name.
392 + * This method will loop through all fields that have changed.
393 + *
394 + * @since 1.6.9
395 + *
396 + * @param int $form_id
397 + * @param array $form_fields
398 + *
399 + * @return array
400 + */
401 + public function get_changed_fields( $form_fields ) {
402 + $changed_fields = array();
403 + foreach ( $form_fields as $field ) {
404 + $org_field = $field['original_name'];
405 + error_log("Org Field" . " = " . print_r($org_field,1));
406 + // All form fields should have an original name.
407 + if ( empty( $field['original_name'] ) ) {
408 + continue;
409 + }
410 + if ( $field['name'] !== $field['original_name'] ) {
411 + $changed_fields[$field['original_name']] = $field['name'];
412 + } else {
413 + continue;
414 + }
415 + }
416 + return $changed_fields;
417 +
418 + }
419 +
420 + /**
421 + * When a user changes the field names of a form, the existing entries will need updated.
422 + * This method will loop through the existing entries and update them will the new names.
423 + *
424 + * @since 1.6.9
425 + *
426 + * @param int $form_id
427 + * @param array $form_fields
428 + *
429 + * @return array
430 + */
431 + public function rename_field ( $old, $new ) {
432 + global $wpdb;
433 +
434 + $entries = weforms_get_form_entries( $this->id );
435 +
436 + foreach ( $entries as $entry ) {
437 + $entry_id = $entry->id;
438 + $values = weforms_get_entry_meta( $entry_id );
439 + $update_keys = $wpdb->update( $wpdb->weforms_entrymeta, array( 'meta_key' => $new ), array( 'meta_key' => $old, 'weforms_entry_id' => $entry_id ) );
440 + }
368 441 }
369 442
370 443 /**
371 444 * Get number of form entries