/** * Process a form submission * * @return array */ function process_submission() { if (!empty($_POST['my_information'])) { // Honeypot return array('error' => 'honeypot', 'success' => false); } if (empty($_POST['form_nonce']) || !wp_verify_nonce($_POST['form_nonce'], 'ccf_form')) { return array('error' => 'nonce', 'success' => false); } $form_id = (int) $_POST['form_id']; $form = get_post($form_id); if (empty($form)) { return array('error' => 'missing_form', 'success' => false); } $fields = get_post_meta($form->ID, 'ccf_attached_fields', true); $field_slug_to_id = array(); $errors = array(); $submission = array(); $skip_fields = apply_filters('ccf_skip_fields', array('html', 'section-header'), $form->ID); $save_skip_fields = apply_filters('ccf_save_skip_fields', array('recaptcha'), $form->ID); $file_ids = array(); $all_form_fields = array(); foreach ($fields as $field_id) { $field_id = (int) $field_id; $type = get_post_meta($field_id, 'ccf_field_type', true); if (in_array($type, $skip_fields)) { continue; } $slug = null; $field_metas = get_post_meta($field_id); $new_field = array(); foreach ($field_metas as $meta_key => $meta_value) { if (0 === stripos($meta_key, 'ccf_field_')) { if ('ccf_field_slug' === $meta_key) { $slug = $meta_value[0]; } $new_field[$meta_key] = wp_kses_post($meta_value[0]); } } $all_form_fields[$slug] = $new_field; // We save this to reference later $field_slug_to_id[$slug] = array('id' => $field_id, 'type' => sanitize_text_field($type)); $custom_value_mapping = array('recaptcha' => 'g-recaptcha-response'); if (in_array($type, array_keys($custom_value_mapping))) { $value = isset($_POST[$custom_value_mapping[$type]]) ? $_POST[$custom_value_mapping[$type]] : ''; } else { $value = isset($_POST['ccf_field_' . $slug]) ? $_POST['ccf_field_' . $slug] : ''; } $validation = $this->process_field($field_id, $value); if ($validation['error'] !== null) { $errors[$slug] = $validation['error']; } else { if (!in_array($type, $save_skip_fields)) { $submission[$slug] = $validation['sanitized_value']; if ('file' === $type) { $file_ids[] = $submission[$slug]['id']; } } } } if (!empty($errors)) { $this->errors_by_form[$form_id] = $errors; return array('error' => 'invalid_fields', 'field_errors' => $errors, 'success' => false); } else { $submission_id = wp_insert_post(array('post_status' => 'publish', 'post_type' => 'ccf_submission', 'post_parent' => $form_id, 'post_title' => 'Form Submission ' . $form_id)); if (!is_wp_error($submission_id)) { update_post_meta($submission_id, 'ccf_submission_data', $submission); /** * @since 6.6 */ update_post_meta($submission_id, 'ccf_submission_data_map', $field_slug_to_id); /** * @since 7.4.4 */ update_post_meta($submission_id, 'ccf_submission_form_fields', $all_form_fields); update_post_meta($submission_id, 'ccf_submission_ip', sanitize_text_field($_SERVER['REMOTE_ADDR'])); foreach ($file_ids as $file_id) { wp_update_post(array('ID' => $file_id, 'post_parent' => $submission_id)); } do_action('ccf_successful_submission', $submission_id, $form_id); } else { do_action('ccf_unsuccessful_submission', $form_id); return array('error' => 'could_not_create_submission', 'success' => false); } // Post creation $post_creation = get_post_meta($form_id, 'ccf_form_post_creation', true); if (!empty($post_creation)) { $post_creation_type = get_post_meta($form_id, 'ccf_form_post_creation_type', true); $post_creation_status = get_post_meta($form_id, 'ccf_form_post_creation_status', true); $mappings = get_post_meta($form_id, 'ccf_form_post_field_mappings', true); if (!empty($mappings)) { $args = array('post_status' => !empty($post_creation_status) ? $post_creation_status : 'draft', 'post_type' => !empty($post_creation_type) ? $post_creation_type : 'post'); $tags = array(); $custom_fields = array(); foreach ($mappings as $mapping) { if (!empty($mapping['formField']) && isset($submission[$mapping['formField']])) { $field_id = $field_slug_to_id[$mapping['formField']]['id']; $field_type = get_post_meta($field_id, 'ccf_field_type', true); $submission_value = $submission[$mapping['formField']]; if (is_array($submission_value) && isset($submission_value['email'])) { $submission_value = $submission_value['email']; } if ('post_title' === $mapping['postField']) { $args['post_title'] = $this->_flatten_and_concat($submission_value); } elseif ('post_content' === $mapping['postField']) { $args['post_content'] = $this->_flatten_and_concat($submission_value); } elseif ('post_date' === $mapping['postField']) { $args['post_date'] = $this->_flatten_and_concat($submission_value); } elseif ('post_excerpt' === $mapping['postField']) { $args['post_excerpt'] = $this->_flatten_and_concat($submission_value); } elseif ('post_tag' === $mapping['postField']) { if ('checkboxes' === $field_type) { $tags = array_merge($tags, $submission_value); } elseif ('dropdown' == $field_type && is_array($submission_value)) { $tags = array_merge($tags, $submission_value); } else { $tags[] = $this->_flatten_and_concat($submission[$mapping['formField']]); } } elseif ('custom_field' === $mapping['postField'] && !empty($mapping['customFieldKey'])) { $custom_fields[] = array('key' => $mapping['customFieldKey'], 'value' => $this->_flatten_and_concat($submission_value)); } } } if (empty($args['post_title'])) { $args['post_title'] = apply_filters('ccf_default_post_creation_title', esc_html__('Post created by form', 'custom-contact-forms'), $args, $form_id, $submission_id, $submission); } $post_creation_id = wp_insert_post(apply_filters('ccf_post_creation_args', $args, $form_id, $submission_id, $submission)); if (!is_wp_error($post_creation_id)) { update_post_meta($post_creation_id, 'ccf_created_by_form', (int) $form_id); if (!empty($tags)) { wp_set_object_terms($post_creation_id, $tags, 'post_tag', true); } if (!empty($custom_fields)) { foreach ($custom_fields as $custom_field) { // Todo: sanitization? add_post_meta($post_creation_id, $custom_field['key'], $custom_field['value']); } } } do_action('ccf_post_creation', $post_creation_id, $form_id, $submission_id, $submission); } } $output = array('success' => true, 'action_type' => get_post_meta($form_id, 'ccf_form_completion_action_type', true)); $notifications = get_post_meta($form_id, 'ccf_form_notifications', true); $form_page = !empty($_POST['form_page']) ? $_POST['form_page'] : null; if (!empty($notifications)) { foreach ($notifications as $notification) { if (!empty($notification['active']) && !empty($notification['addresses'])) { $message = $notification['content']; // Variables if (false !== stripos($message, '[all_fields]')) { $all_fields = ''; ob_start(); foreach ($submission as $slug => $field) { $field_id = $field_slug_to_id[$slug]['id']; $label = get_post_meta($field_id, 'ccf_field_label', true); $type = get_post_meta($field_id, 'ccf_field_type', true); if ('hidden' === $type) { $label = esc_html__('*Hidden Field*', 'custom-contact-forms'); } ?> <div> <?php if (!empty($label)) { ?> <b><?php echo esc_html($label); ?> <?php if (apply_filters('ccf_show_slug_in_submission_email', false, $submission_id, $form_id)) { ?> (<?php echo esc_html($slug); ?> )<?php } ?> :</b> <?php } else { ?> <b><?php echo esc_html($slug); ?> :</b> <?php } ?> </div> <div style="margin-bottom: 10px;"> <?php if (!empty($field)) { ?> <?php if ('date' === $type) { ?> <?php echo esc_html(stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_date($field, $field_id))); ?> <?php } elseif ('name' === $type) { ?> <?php echo esc_html(stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_name($field))); ?> <?php } elseif ('file' === $type) { ?> <a href="<?php echo esc_url($field['url']); ?> "><?php echo esc_html(stripslashes($field['file_name'])); ?> </a> <?php } elseif ('address' === $type) { ?> <?php echo esc_html(stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_address($field))); ?> <?php } elseif ('email' === $type) { ?> <?php if (is_array($field)) { ?> <?php echo esc_html(stripslashes($field['email'])); ?> <?php } else { ?> <?php echo esc_html(stripslashes($field)); ?> <?php } ?> <?php } elseif ('dropdown' === $type || 'radio' === $type || 'checkboxes' === $type) { ?> <?php if (is_array($field)) { ?> <?php $i = 0; foreach ($field as $value) { ?> <?php if (!empty($value)) { ?> <?php if ($i !== 0) { ?> <br><?php } ?> <?php echo esc_html(stripslashes($value)); ?> <?php $i++; ?> <?php } ?> <?php } ?> <?php if (0 === $i) { ?> <span>-</span> <?php } ?> <?php } else { ?> <?php echo esc_html(stripslashes($field)); ?> <?php } ?> <?php } else { ?> <?php echo esc_html(stripslashes($field)); ?> <?php } ?> <?php } else { ?> <span>-</span> <?php } ?> </div> <?php } if (!empty($form_page)) { ?> <div> <?php esc_html_e('Form submitted from', 'custom-contact-forms'); ?> : <?php echo esc_url($form_page); ?> </div> <?php } if (apply_filters('ccf_show_ip_in_submission_email', true, $submission_id, $form_id)) { ?> <div> <?php esc_html_e('Form submitter IP', 'custom-contact-forms'); ?> : <?php echo esc_html($_SERVER['REMOTE_ADDR']); ?> </div> <?php } $all_fields .= ob_get_clean(); $message = str_ireplace('[all_fields]', $all_fields, $message); } if (false !== stripos($message, '[ip_address]')) { $message = str_ireplace('[ip_address]', $_SERVER['REMOTE_ADDR'], $message); } foreach ($fields as $field_id) { $field_slug = get_post_meta($field_id, 'ccf_field_slug', true); if (!empty($field_slug) && isset($submission[$field_slug])) { $value = $submission[$field_slug]; if (is_array($value) && isset($value['email'])) { $value = $value['email']; } $message = str_ireplace('[' . $field_slug . ']', wp_kses_post($this->_flatten_and_concat($value)), $message); } } $headers = array('MIME-Version: 1.0', 'Content-type: text/html; charset=utf-8'); $name = null; $email = null; $sitename = strtolower($_SERVER['SERVER_NAME']); if (substr($sitename, 0, 4) === 'www.') { $sitename = substr($sitename, 4); } $default_from_email = 'wordpress@' . $sitename; if ('custom' === $notification['fromNameType']) { $name = $notification['fromName']; } else { $name_field = $notification['fromNameField']; if (!empty($name_field) && !empty($submission[$name_field]) && is_array($submission[$name_field])) { if (!empty($submission[$name_field]['first']) || !empty($submission[$name_field]['last'])) { $name = $submission[$name_field]['first'] . ' ' . $submission[$name_field]['last']; } } } if ('custom' === $notification['fromType']) { $email = $notification['fromAddress']; } elseif ('field' === $notification['fromType']) { $email_field = $notification['fromField']; if (!empty($email_field) && !empty($submission[$email_field])) { if (is_array($submission[$email_field]) && !empty($submission[$email_field]['confirm'])) { $email = $submission[$email_field]['confirm']; } else { $email = $submission[$email_field]; } } } if (!empty($name) && !empty($email)) { $headers[] = 'From: ' . sanitize_text_field($name) . ' <' . sanitize_email($email) . '>'; $headers[] = 'Reply-To: ' . sanitize_email($email); } elseif (!empty($name) && empty($email)) { $headers[] = 'From: ' . sanitize_text_field($name) . '<' . sanitize_email($default_from_email) . '>'; } elseif (empty($name) && !empty($email)) { // @Todo: investigate how wp_mail handles From: email $headers[] = 'From: ' . sanitize_email($email); $headers[] = 'Reply-To: ' . sanitize_email($email); } $email_notification_subject_type = $notification['subjectType']; $subject = sprintf(__('%s: Form Submission', 'custom-contact-forms'), wp_specialchars_decode(get_bloginfo('name'))); if (!empty($form->post_title)) { $subject .= sprintf(__(' to "%s"', 'custom-contact-forms'), wp_specialchars_decode($form->post_title)); } if ('custom' === $email_notification_subject_type) { $subject = $notification['subject']; } elseif ('field' === $email_notification_subject_type) { $subject_field = $notification['subjectField']; if (!empty($subject_field) && !empty($submission[$subject_field])) { $subject = $submission[$subject_field]; } } foreach ($notification['addresses'] as $address) { if (!empty($address['email']) || !empty($address['field'])) { $email = ''; if ('custom' === $address['type']) { $email = $address['email']; } else { $email_field = $address['field']; if (!empty($email_field) && !empty($submission[$email_field])) { if (is_array($submission[$email_field]) && !empty($submission[$email_field]['confirm'])) { $email = $submission[$email_field]['confirm']; } else { $email = $submission[$email_field]; } } } if (!empty($email)) { if (empty($notification_content)) { $notification_content = ' '; // Hack to send email with empty body via PHPMailer } $subject = apply_filters('ccf_email_subject', $subject, $form_id, $email, $form_page, $notification); $notification_content = apply_filters('ccf_email_content', $message, $form_id, $email, $form_page, $notification); $notification_headers = apply_filters('ccf_email_headers', $headers, $form_id, $email, $form_page, $notification); do_action('ccf_send_notification', $email, $subject, $notification_content, $notification_headers, $notification); wp_mail($email, $subject, $notification_content, $notification_headers); } } } } } } if ('redirect' === $output['action_type']) { $output['completion_redirect_url'] = get_post_meta($form_id, 'ccf_form_completion_redirect_url', true); } else { $output['completion_message'] = get_post_meta($form_id, 'ccf_form_completion_message', true); if (empty($output['completion_message'])) { $output['completion_message'] = esc_html__('Thank you for your submission.', 'custom-contact-forms'); } } return $output; } }
/** * Process a form submission * * @return array */ function process_submission() { if (!empty($_POST['my_information'])) { // Honeypot return array('error' => 'honeypot', 'success' => false); } if (empty($_POST['form_nonce']) || !wp_verify_nonce($_POST['form_nonce'], 'ccf_form')) { return array('error' => 'nonce', 'success' => false); } $form_id = (int) $_POST['form_id']; $form = get_post($form_id); if (empty($form)) { return array('error' => 'missing_form', 'success' => false); } $fields = get_post_meta($form->ID, 'ccf_attached_fields', true); $field_slug_to_id = array(); $errors = array(); $submission = array(); $skip_fields = apply_filters('ccf_skip_fields', array('html', 'section-header'), $form->ID); $save_skip_fields = apply_filters('ccf_save_skip_fields', array('recaptcha'), $form->ID); $file_ids = array(); foreach ($fields as $field_id) { $field_id = (int) $field_id; $type = get_post_meta($field_id, 'ccf_field_type', true); if (in_array($type, $skip_fields)) { continue; } $slug = get_post_meta($field_id, 'ccf_field_slug', true); // We save this to reference later $field_slug_to_id[$slug] = array('id' => $field_id, 'type' => sanitize_text_field($type)); $custom_value_mapping = array('recaptcha' => 'g-recaptcha-response'); if (in_array($type, array_keys($custom_value_mapping))) { $value = isset($_POST[$custom_value_mapping[$type]]) ? $_POST[$custom_value_mapping[$type]] : ''; } else { $value = isset($_POST['ccf_field_' . $slug]) ? $_POST['ccf_field_' . $slug] : ''; } $validation = $this->process_field($field_id, $value); if ($validation['error'] !== null) { $errors[$slug] = $validation['error']; } else { if (!in_array($type, $save_skip_fields)) { $submission[$slug] = $validation['sanitized_value']; if ('file' === $type) { $file_ids[] = $submission[$slug]['id']; } } } } if (!empty($errors)) { $this->errors_by_form[$form_id] = $errors; return array('error' => 'invalid_fields', 'field_errors' => $errors, 'success' => false); } else { $submission_id = wp_insert_post(array('post_status' => 'publish', 'post_type' => 'ccf_submission', 'post_parent' => $form_id, 'post_title' => 'Form Submission ' . $form_id)); if (!is_wp_error($submission_id)) { update_post_meta($submission_id, 'ccf_submission_data', $submission); /** * @since 6.6 */ update_post_meta($submission_id, 'ccf_submission_data_map', $field_slug_to_id); update_post_meta($submission_id, 'ccf_submission_ip', sanitize_text_field($_SERVER['REMOTE_ADDR'])); foreach ($file_ids as $file_id) { wp_update_post(array('ID' => $file_id, 'post_parent' => $submission_id)); } do_action('ccf_successful_submission', $submission_id, $form_id); } else { do_action('ccf_unsuccessful_submission', $form_id); return array('error' => 'could_not_create_submission', 'success' => false); } $output = array('success' => true, 'action_type' => get_post_meta($form_id, 'ccf_form_completion_action_type', true)); $send_email_notifications = get_post_meta($form_id, 'ccf_form_send_email_notifications', true); $email_addresses_field = get_post_meta($form_id, 'ccf_form_email_notification_addresses', true); if (!empty($send_email_notifications) && !empty($email_addresses_field)) { $email_addresses_field = str_replace(';', ',', $email_addresses_field); $email_addresses = explode(',', $email_addresses_field); $email_addresses = array_map('trim', $email_addresses); if (!empty($email_addresses)) { $message = ''; ob_start(); foreach ($submission as $slug => $field) { $field_id = $field_slug_to_id[$slug]['id']; $label = get_post_meta($field_id, 'ccf_field_label', true); $type = get_post_meta($field_id, 'ccf_field_type', true); if ('hidden' === $type) { $label = esc_html__('*Hidden Field*', 'custom-contact-forms'); } ?> <div> <?php if (!empty($label)) { ?> <b><?php echo esc_html($label); ?> <?php if (apply_filters('ccf_show_slug_in_submission_email', false, $submission_id, $form_id)) { ?> (<?php echo esc_html($slug); ?> )<?php } ?> :</b> <?php } else { ?> <b><?php echo esc_html($slug); ?> :</b> <?php } ?> </div> <div style="margin-bottom: 10px;"> <?php if (!empty($field)) { ?> <?php if ('date' === $type) { ?> <?php echo esc_html(stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_date($field))); ?> <?php } elseif ('name' === $type) { ?> <?php echo esc_html(stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_name($field))); ?> <?php } elseif ('file' === $type) { ?> <a href="<?php echo esc_url($field['url']); ?> "><?php echo esc_html(stripslashes($field['file_name'])); ?> </a> <?php } elseif ('address' === $type) { ?> <?php echo esc_html(stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_address($field))); ?> <?php } elseif ('email' === $type) { ?> <?php if (is_array($field)) { ?> <?php echo esc_html(stripslashes($field['email'])); ?> <?php } else { ?> <?php echo esc_html(stripslashes($field)); ?> <?php } ?> <?php } elseif ('dropdown' === $type || 'radio' === $type || 'checkboxes' === $type) { ?> <?php if (is_array($field)) { ?> <?php $i = 0; foreach ($field as $value) { ?> <?php if (!empty($value)) { ?> <?php if ($i !== 0) { ?> <br><?php } ?> <?php echo esc_html(stripslashes($value)); ?> <?php $i++; ?> <?php } ?> <?php } ?> <?php if (0 === $i) { ?> <span>-</span> <?php } ?> <?php } else { ?> <?php echo esc_html(stripslashes($field)); ?> <?php } ?> <?php } else { ?> <?php echo esc_html(stripslashes($field)); ?> <?php } ?> <?php } else { ?> <span>-</span> <?php } ?> </div> <?php } $form_page = null; if (!empty($_POST['form_page'])) { $form_page = $_POST['form_page']; ?> <div> <?php esc_html_e('Form submitted from', 'custom-contact-forms'); ?> : <?php echo esc_url($_POST['form_page']); ?> </div> <?php } if (apply_filters('ccf_show_ip_in_submission_email', true, $submission_id, $form_id)) { ?> <div> <?php esc_html_e('Form submitter IP', 'custom-contact-forms'); ?> : <?php echo esc_html($_SERVER['REMOTE_ADDR']); ?> </div> <?php } $message .= ob_get_clean(); $headers = array('MIME-Version: 1.0', 'Content-type: text/html; charset=utf-8'); $email_notification_from_type = get_post_meta($form_id, 'ccf_form_email_notification_from_type', true); $email_notification_from_name_type = get_post_meta($form_id, 'ccf_form_email_notification_from_name_type', true); $email_notification_from_name = get_post_meta($form_id, 'ccf_form_email_notification_from_name', true); $name = null; $email = null; if ('custom' === $email_notification_from_type) { $name = $email_notification_from_name; } else { $name_field = get_post_meta($form_id, 'ccf_form_email_notification_from_name_field', true); if (!empty($name_field) && !empty($submission[$name_field]) && is_array($submission[$name_field])) { if (!empty($submission[$name_field]['first']) || !empty($submission[$name_field]['last'])) { $name = $submission[$name_field]['first'] . ' ' . $submission[$name_field]['last']; } } } if ('custom' === $email_notification_from_type) { $email = get_post_meta($form_id, 'ccf_form_email_notification_from_address', true); } elseif ('field' === $email_notification_from_type) { $email_field = get_post_meta($form_id, 'ccf_form_email_notification_from_field', true); if (!empty($email_field) && !empty($submission[$email_field])) { if (is_array($submission[$email_field]) && !empty($submission[$email_field]['confirm'])) { $email = $submission[$email_field]['confirm']; } else { $email = $submission[$email_field]; } } } if (!empty($name) && !empty($email)) { $headers[] = 'From: ' . sanitize_text_field($name) . ' <' . sanitize_email($email) . '>'; $headers[] = 'Reply-To: ' . sanitize_email($email); } elseif (!empty($name) && empty($email)) { $headers[] = 'From: ' . sanitize_text_field($name); } elseif (empty($name) && !empty($email)) { $headers[] = 'From: ' . sanitize_email($email); $headers[] = 'Reply-To: ' . sanitize_email($email); } $email_notification_subject_type = get_post_meta($form_id, 'ccf_form_email_notification_subject_type', true); $subject = sprintf(__('%s: Form Submission', 'custom-contact-forms'), wp_specialchars_decode(get_bloginfo('name'))); if (!empty($form->post_title)) { $subject .= sprintf(__(' to "%s"', 'custom-contact-forms'), wp_specialchars_decode($form->post_title)); } if ('custom' === $email_notification_subject_type) { $subject = get_post_meta($form_id, 'ccf_form_email_notification_subject', true); } elseif ('field' === $email_notification_subject_type) { $subject_field = get_post_meta($form_id, 'ccf_form_email_notification_subject_field', true); if (!empty($subject_field) && !empty($submission[$subject_field])) { $subject = $submission[$subject_field]; } } foreach ($email_addresses as $email) { $subject = apply_filters('ccf_email_subject', $subject, $form_id, $email, $form_page); wp_mail($email, $subject, apply_filters('ccf_email_content', $message, $form_id, $email, $form_page), apply_filters('ccf_email_headers', $headers, $form_id, $email, $form_page)); } } } if ('redirect' === $output['action_type']) { $output['completion_redirect_url'] = get_post_meta($form_id, 'ccf_form_completion_redirect_url', true); } else { $output['completion_message'] = get_post_meta($form_id, 'ccf_form_completion_message', true); if (empty($output['completion_message'])) { $output['completion_message'] = esc_html__('Thank you for your submission.', 'custom-contact-forms'); } } return $output; } }
/** * Handle submissions csv download * * @since 6.6 */ public function action_parse_request() { if (empty($_GET['download_submissions'])) { return; } if (!current_user_can('manage_options')) { return; } if (empty($_GET['post']) || 'ccf_form' !== get_post_type($_GET['post'])) { return; } if (empty($_GET['download_submissions_nonce']) || !wp_verify_nonce($_GET['download_submissions_nonce'], 'ccf_download_submissions_nonce')) { return; } $post_id = (int) $_GET['post']; $submissions = new WP_Query(array('post_type' => 'ccf_submission', 'posts_per_page' => apply_filters('ccf_max_submissions', 5000, $post_id), 'no_found_rows' => true, 'cache_results' => false, 'fields' => 'ids', 'order' => 'DESC', 'orderby' => 'date', 'post_parent' => $post_id)); // Todo: Unit tests header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename=form-' . $post_id . '-submission-' . date('Y-m-d') . '.csv'); header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0'); $output = fopen('php://output', 'w'); if ($submissions->have_posts()) { $last_submission_id = $submissions->posts[0]; $fields = get_post_meta($last_submission_id, 'ccf_submission_data_map', true); if (empty($fields)) { $slugs = array_keys(get_post_meta($last_submission_id, 'ccf_submission_data', true)); $fields = array(); $attached_fields = get_post_meta($post_id, 'ccf_attached_fields', true); $attached_field_slugs = array(); foreach ($attached_fields as $field_id) { $slug = get_post_meta($field_id, 'ccf_field_slug', true); if (!empty($slug)) { $attached_field_slugs[$slug] = $field_id; } } foreach ($slugs as $slug) { if (!empty($attached_field_slugs[$slug])) { $fields[$slug] = array('id' => $attached_field_slugs[$slug], 'type' => get_post_meta($attached_field_slugs[$slug], 'ccf_field_type', true)); } } } $headers = array_merge(array('date', 'ip'), array_keys($fields)); fputcsv($output, $headers); foreach ($submissions->posts as $submission_id) { $submission_data = get_post_meta($submission_id, 'ccf_submission_data', true); $submission_ip = get_post_meta($submission_id, 'ccf_submission_ip', true); $row = array(get_the_time('Y-m-d H:i:s', $submission_id), sanitize_text_field($submission_ip)); foreach ($fields as $slug => $field_array) { $type = $field_array['type']; if (!empty($submission_data[$slug])) { $field = $submission_data[$slug]; if ('date' === $type) { $row[] = stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_date($field)); } elseif ('name' === $type) { $row[] = stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_name($field)); } elseif ('file' === $type) { $row[] = $field['url']; } elseif ('address' === $type) { $row[] = stripslashes(CCF_Submission_CPT::factory()->get_pretty_field_address($field)); } elseif ('email' === $type) { if (is_array($field)) { $row[] = stripslashes($field['email']); } else { $row[] = stripslashes($field); } } elseif ('dropdown' === $type || 'radio' === $type || 'checkboxes' === $type) { if (is_array($field)) { $i = 0; $outputval = ''; foreach ($field as $value) { if (!empty($value)) { if ($i !== 0) { $outputval .= ', '; } $outputval .= stripslashes($value); $i++; } } if (0 === $i) { $row[] = ''; } else { $row[] = $outputval; } } else { $row[] = stripslashes($field); } } else { $row[] = stripslashes($field); } } else { $row[] = ''; } } fputcsv($output, $row); } fclose($output); } exit; }
require_once dirname(__FILE__) . '/classes/class-ccf-form-mail.php'; require_once dirname(__FILE__) . '/classes/class-ccf-field-cpt.php'; require_once dirname(__FILE__) . '/classes/class-ccf-choice-cpt.php'; require_once dirname(__FILE__) . '/classes/class-ccf-form-manager.php'; require_once dirname(__FILE__) . '/classes/class-ccf-field-renderer.php'; require_once dirname(__FILE__) . '/classes/class-ccf-form-renderer.php'; require_once dirname(__FILE__) . '/classes/class-ccf-form-handler.php'; require_once dirname(__FILE__) . '/classes/class-ccf-upgrader.php'; require_once dirname(__FILE__) . '/classes/class-ccf-widget.php'; require_once dirname(__FILE__) . '/classes/class-ccf-export.php'; require_once dirname(__FILE__) . '/classes/class-ccf-ads.php'; require_once dirname(__FILE__) . '/classes/class-ccf-settings.php'; CCF_Custom_Contact_Forms::factory(); CCF_Constants::factory(); CCF_Form_CPT::factory(); CCF_Submission_CPT::factory(); CCF_Field_CPT::factory(); CCF_Choice_CPT::factory(); CCF_Form_Manager::factory(); CCF_Form_Renderer::factory(); CCF_Field_Renderer::factory(); CCF_Form_Handler::factory(); CCF_Upgrader::factory(); CCF_Export::factory(); CCF_Ads::factory(); CCF_Settings::factory(); /** * Setup the widget * * @since 6.4 */