function ninja_forms_import_form($file) { global $wpdb; $form = unserialize(trim($file)); $form_fields = isset($form['field']) ? $form['field'] : null; $notifications = isset($form['notifications']) ? $form['notifications'] : null; unset($form['field']); unset($form['notifications']); $form = apply_filters('ninja_forms_before_import_form', $form); // Remove our last_sub setting. This is our starting seq_num. if (isset($form['data']['last_sub'])) { unset($form['data']['last_sub']); } $form['data'] = serialize($form['data']); $wpdb->insert(NINJA_FORMS_TABLE_NAME, $form); $form_id = $wpdb->insert_id; $form['id'] = $form_id; if (is_array($form_fields)) { for ($x = 0; $x < count($form_fields); $x++) { $form_fields[$x]['form_id'] = $form_id; $form_fields[$x]['data'] = apply_filters('nf_before_import_field', $form_fields[$x]['data'], $form_fields[$x]['id']); $form_fields[$x]['data'] = serialize($form_fields[$x]['data']); $old_field_id = $form_fields[$x]['id']; $form_fields[$x]['id'] = NULL; $wpdb->insert(NINJA_FORMS_FIELDS_TABLE_NAME, $form_fields[$x]); $form_fields[$x]['id'] = $wpdb->insert_id; $form_fields[$x]['old_id'] = $old_field_id; $form_fields[$x]['data'] = unserialize($form_fields[$x]['data']); } } $form['data'] = unserialize($form['data']); $form['field'] = $form_fields; $form['notifications'] = $notifications; // Insert any notifications we might have. if (is_array($notifications)) { foreach ($notifications as $n) { $n_id = nf_insert_notification($form_id); $n = apply_filters('nf_import_notification_meta', $n, $n_id, $form); unset($n['conditions']); foreach ($n as $meta_key => $meta_value) { foreach ($form_fields as $field) { // We need to replace any references to old fields in our notification if ('email_message' == $meta_key) { $meta_value = str_replace('[ninja_forms_field id=' . $field['old_id'] . ']', '[ninja_forms_field id=' . $field['id'] . ']', $meta_value); $meta_value = str_replace('ninja_forms_field_' . $field['old_id'], 'ninja_forms_field_' . $field['id'], $meta_value); } else { $meta_value = preg_replace('/\\bfield_' . $field['old_id'] . '\\b/u', 'field_' . $field['id'], $meta_value); } } nf_update_object_meta($n_id, $meta_key, $meta_value); } } } do_action('ninja_forms_after_import_form', $form); return $form['id']; }
public function step($step) { global $ninja_forms_fields; // Get our form ID $form_id = $this->args['forms'][$step]; // Bail if we've already converted the notifications for this form. if (in_array($form_id, $this->completed_forms)) { return false; } // Grab our form from the database $form_settings = Ninja_Forms()->form($form_id)->settings; $fields = Ninja_Forms()->form($form_id)->fields; $process_fields = array(); foreach ($fields as $field_id => $field) { $label = strip_tags(nf_get_field_admin_label($field_id)); if (strlen($label) > 30) { $tmp_label = substr($label, 0, 30); } else { $tmp_label = $label; } $tmp_array = array('value' => $field_id, 'label' => $tmp_label . ' - ID: ' . $field_id); $admin_label = $label; $label = isset($field['data']['label']) ? $field['data']['label'] : ''; // Check to see if this field is supposed to be "processed" $type = $field['type']; if (isset($ninja_forms_fields[$type]['process_field']) && $ninja_forms_fields[$type]['process_field']) { $process_fields[$field_id] = array('field_id' => $field_id, 'label' => $label, 'admin_label' => $admin_label); } } // Create a notification for our admin email if (isset($form_settings['admin_email_msg']) && !empty($form_settings['admin_email_msg']) || isset($form_settings['admin_email_fields']) && 1 == $form_settings['admin_email_fields']) { // Create a notification $n_id = nf_insert_notification($form_id); // Update our notification type nf_update_object_meta($n_id, 'type', 'email'); // Activate our notification Ninja_Forms()->notification($n_id)->activate(); // Update our notification name Ninja_Forms()->notification($n_id)->update_setting('name', __('Admin Email', 'ninja-forms')); $admin_mailto = isset($form_settings['admin_mailto']) ? $form_settings['admin_mailto'] : array(); // Implode our admin email addresses $to = implode('`', $admin_mailto); // Update our to setting Ninja_Forms()->notification($n_id)->update_setting('to', $to); // Update our Format Setting Ninja_Forms()->notification($n_id)->update_setting('email_format', $form_settings['email_type']); // Update our attach csv option Ninja_Forms()->notification($n_id)->update_setting('attach_csv', $form_settings['admin_attach_csv']); // Update our subject $subject = $this->replace_shortcodes($form_settings['admin_subject']); Ninja_Forms()->notification($n_id)->update_setting('email_subject', $subject); // Update our From Name if (isset($form_settings['email_from_name'])) { Ninja_Forms()->notification($n_id)->update_setting('from_name', $form_settings['email_from_name']); } foreach ($fields as $field) { if (isset($field['data']['from_name']) && $field['data']['from_name'] == 1) { // Update our From Name Ninja_Forms()->notification($n_id)->update_setting('from_name', 'field_' . $field['id']); break; } } // Update our From Address Ninja_Forms()->notification($n_id)->update_setting('from_address', $form_settings['email_from']); // Get our reply-to address foreach ($fields as $field) { if (isset($field['data']['replyto_email']) && $field['data']['replyto_email'] == 1) { Ninja_Forms()->notification($n_id)->update_setting('reply_to', 'field_' . $field['id']); break; } } $email_message = $form_settings['admin_email_msg']; // Check to see if the "include list of fields" checkbox was checked. if (isset($form_settings['admin_email_fields']) && $form_settings['admin_email_fields'] == 1) { $email_message .= '<br />[ninja_forms_all_fields]'; } // Update our email message Ninja_Forms()->notification($n_id)->update_setting('email_message', $email_message); Ninja_Forms()->notification($n_id)->update_setting('admin_email', true); } // Create a notification for our user email if (!empty($fields)) { $addresses = array(); foreach ($fields as $field_id => $field) { if (isset($field['data']['send_email']) && $field['data']['send_email'] == 1) { // Add this field to our $addresses variable. $addresses[] = 'field_' . $field_id; unset($field['data']['send_email']); unset($field['data']['replyto_email']); unset($field['data']['from_name']); $args = array('update_array' => array('data' => serialize($field['data'])), 'where' => array('id' => $field_id)); ninja_forms_update_field($args); } } if (!empty($addresses)) { // We have a user email, so create a notification $n_id = nf_insert_notification($form_id); // Update our notification type nf_update_object_meta($n_id, 'type', 'email'); // Activate our notification Ninja_Forms()->notification($n_id)->activate(); // Update our notification name Ninja_Forms()->notification($n_id)->update_setting('name', __('User Email', 'ninja-forms')); // Implode our admin email addresses $n_var = count($addresses) > 1 ? 'bcc' : 'to'; $addresses = implode('`', $addresses); Ninja_Forms()->notification($n_id)->update_setting($n_var, $addresses); // Update our Format Setting Ninja_Forms()->notification($n_id)->update_setting('email_format', $form_settings['email_type']); // Update our subject $subject = $this->replace_shortcodes($form_settings['user_subject']); Ninja_Forms()->notification($n_id)->update_setting('email_subject', $subject); // Update our From Name if (isset($form_settings['email_from_name'])) { Ninja_Forms()->notification($n_id)->update_setting('from_name', $form_settings['email_from_name']); } // Update our From Address Ninja_Forms()->notification($n_id)->update_setting('from_address', $form_settings['email_from']); $email_message = $form_settings['user_email_msg']; // Check to see if the "include list of fields" checkbox was checked. If so, add our table to the end of the email message. if (isset($form_settings['user_email_fields']) && $form_settings['user_email_fields'] == 1) { $email_message .= '<br />[ninja_forms_all_fields]'; } // Update our email message Ninja_Forms()->notification($n_id)->update_setting('email_message', $email_message); Ninja_Forms()->notification($n_id)->update_setting('user_email', true); } } if (isset($form_settings['success_msg']) && !empty($form_settings['success_msg'])) { // Create a notification for our success message $n_id = nf_insert_notification($form_id); nf_update_object_meta($n_id, 'name', __('Success Message', 'ninja-forms')); nf_update_object_meta($n_id, 'type', 'success_message'); nf_update_object_meta($n_id, 'active', 1); nf_update_object_meta($n_id, 'success_msg', $form_settings['success_msg']); } if (isset($form_settings['landing_page']) && !empty($form_settings['landing_page'])) { // Create a notification for our redirect $n_id = nf_insert_notification($form_id); nf_update_object_meta($n_id, 'name', __('Redirect', 'ninja-forms')); nf_update_object_meta($n_id, 'type', 'redirect'); nf_update_object_meta($n_id, 'active', 1); nf_update_object_meta($n_id, 'redirect_url', $form_settings['landing_page']); } $completed_forms = get_option('nf_convert_notifications_forms'); if (!is_array($completed_forms) || empty($completed_forms)) { $completed_forms = array($form_id); } else { $completed_forms[] = $form_id; } update_option('nf_convert_notifications_forms', $completed_forms); // Unset our admin email settings and save the form. if (isset($form_settings['admin_mailto'])) { unset($form_settings['admin_mailto']); unset($form_settings['admin_attach_csv']); unset($form_settings['admin_subject']); unset($form_settings['admin_email_msg']); unset($form_settings['admin_email_fields']); unset($form_settings['success_msg']); unset($form_settings['user_email_msg']); unset($form_settings['user_subject']); unset($form_settings['landing_page']); $args = array('update_array' => array('data' => serialize($form_settings)), 'where' => array('id' => $form_id)); ninja_forms_update_form($args); } }
/** * Create a new notification * * @access public * @since 2.8 * @return int $n_id */ public function create($form_id = '') { // Bail if we don't have a form_id if ('' == $form_id) { return false; } $n_id = nf_insert_notification($form_id); // Activate our new notification Ninja_Forms()->notification($n_id)->activate(); return $n_id; }