function wpcf7ev_verify_email_address($wpcf7_form)
{
    // first prevent the emails being sent as per usual
    add_filter('wpcf7_mail_components', 'wpcf7ev_skip_sending');
    // fetch the submitted form details
    $mail_tags = $wpcf7_form->prop('mail');
    $mail_fields = wpcf7_mail_replace_tags($mail_tags);
    $senders_email_address = $mail_fields['sender'];
    // save any attachments to a temp directory
    $mail_string = trim($mail_fields['attachments']);
    if (strlen($mail_string) > 0 and !ctype_space($mail_string)) {
        $mail_attachments = explode(" ", $mail_string);
        foreach ($mail_attachments as $attachment) {
            $uploaded_file_path = ABSPATH . 'wp-content/uploads/wpcf7_uploads/' . $attachment;
            $new_filepath = WPCF7EV_UPLOADS_DIR . $attachment;
            rename($uploaded_file_path, $new_filepath);
        }
    }
    // send an email to the recipient to let them know verification is pending
    wp_mail($mail_fields['recipient'], 'Form notice', "Hi,\n\nYou've had a form submission on " . get_option('blogname') . " from " . $senders_email_address . ".\n\nWe are waiting for them to confirm their email address.");
    //create hash code for verification key
    $random_hash = substr(md5(uniqid(rand(), true)), -16, 16);
    // save submitted form as a transient object
    $data_to_save = array($mail_fields, $random_hash);
    set_transient(wpcf7ev_get_slug($random_hash), $data_to_save, WPCF7EV_STORAGE_TIME);
    // send email to the sender with a verification link to click on
    wp_mail($senders_email_address, 'Verify your email address', "Hi,\n\nThanks for your your recent submission on " . get_option('blogname') . ".\n\nIn order for your submission to be processed, please verify this is your email address by clicking on the following link:\n\n" . get_site_url() . "/wp-admin/admin-post.php?action=wpcf7ev&email-verification-key={$random_hash}" . "\n\nThanks.");
}
Example #2
0
function wpcf7_flamingo_get_value($field, $contactform)
{
    if (empty($field) || empty($contactform)) {
        return false;
    }
    $value = '';
    if (in_array($field, array('email', 'name', 'subject'))) {
        $templates = $contactform->additional_setting('flamingo_' . $field);
        if (empty($templates[0])) {
            $template = sprintf('[your-%s]', $field);
        } else {
            $template = trim(wpcf7_strip_quote($templates[0]));
        }
        $value = wpcf7_mail_replace_tags($template);
    }
    $value = apply_filters('wpcf7_flamingo_get_value', $value, $field, $contactform);
    return $value;
}
Example #3
0
 public function replace_tags($content, $html = false)
 {
     $args = array('html' => $html, 'exclude_blank' => $this->exclude_blank);
     return wpcf7_mail_replace_tags($content, $args);
 }
 public function message($status, $filter = true)
 {
     $messages = $this->prop('messages');
     $message = isset($messages[$status]) ? $messages[$status] : '';
     if ($filter) {
         $message = wpcf7_mail_replace_tags($message, array('html' => true));
         $message = apply_filters('wpcf7_display_message', $message, $status);
     }
     return $message;
 }
Example #5
0
 function storage_capture($cf7)
 {
     // Store this entry and get its ID
     $entry_id = wp_insert_post(array('post_type' => self::$post_type, 'post_status' => 'publish', 'post_parent' => $cf7->id()));
     do_action('cf7_storage_pre_capture', $entry_id, $cf7);
     // Make this entry ID available to this class
     $this->set_entry_id($entry_id);
     // Get the mail template and settings of this contact form
     $template = $cf7->prop('mail');
     // Replace all variables with form values
     $mail = wpcf7_mail_replace_tags($template, array('html' => $template['use_html'], 'exclude_blank' => $template['exclude_blank']));
     // Update post title and body content
     wp_update_post(array('ID' => $entry_id, 'post_title' => $mail['sender'], 'post_content' => $mail['body']));
     // Store all field values that were mailed
     foreach ($mail as $mail_field => $mail_value) {
         add_post_meta($entry_id, 'mail_' . $mail_field, $mail_value, true);
     }
     $submission = WPCF7_Submission::get_instance();
     $posted_data_raw = $submission->get_posted_data();
     $posted_fields = array();
     foreach ($posted_data_raw as $field_key => $field_value) {
         if (!preg_match('/^(_wpnonce|_wpcf7)/i', $field_key)) {
             $posted_fields[$field_key] = $field_value;
         }
     }
     // Store field values
     add_post_meta($entry_id, 'form_fields', $posted_fields);
     // Store user browser, IP, referer
     $extra_meta = array('http_user_agent' => $_SERVER['HTTP_USER_AGENT'], 'remote_addr' => $_SERVER['REMOTE_ADDR'], 'http_referer' => $_SERVER['HTTP_REFERER']);
     $unit_tag = $submission->get_meta('unit_tag');
     // Store the post/page ID where the form was submitted
     if ($unit_tag && preg_match('/^wpcf7-f(\\d+)-p(\\d+)-o(\\d+)$/', $unit_tag, $unit_matches)) {
         $extra_meta['post_id'] = absint($unit_matches[2]);
     }
     if (is_user_logged_in()) {
         $extra_meta['user_id'] = get_current_user_id();
     }
     foreach ($extra_meta as $key => $value) {
         add_post_meta($entry_id, $key, $value);
     }
     // Store uploads permanently
     $uploads_stored = $this->store_uploaded_files($entry_id, $submission->uploaded_files());
     do_action('cf7_storage_capture', $entry_id, $cf7);
 }
 /**
  * contact form submision
  * @param object $WPCF7_ContactForm: current contact form object
  */
 public function _hw_wpcf7_do_something($WPCF7_ContactForm)
 {
     /* Use WPCF7_Submission object's get_posted_data() method to get it. */
     $properties = $WPCF7_ContactForm->get_properties();
     //get google form ID of this form
     $gformID = $properties['hw_gformID'];
     // get the contact form object
     $wpcf7 = WPCF7_ContactForm::get_current();
     if (isset($properties['enable_email_by_gapp']) && $properties['enable_email_by_gapp']) {
         //  do not send the email
         $wpcf7->skip_mail = true;
         //turn off default send mail by wpcf7, use google drive instead
     }
     $atts = $WPCF7_ContactForm->form_scan_shortcode();
     $fields_title = array();
     //fields title
     $data = array();
     //fields value
     //submission data
     $submission = WPCF7_Submission::get_instance();
     if ($submission) {
         //get storage service
         $storage_hook = $WPCF7_ContactForm->prop('hwcf_data_hook');
         //get posted form data
         $posted_data = $submission->get_posted_data();
         //parse email template into user data
         $mail_temp = $WPCF7_ContactForm->prop('mail');
         $result = wpcf7_mail_replace_tags($mail_temp);
         $admin_email = !empty($mail_temp['recipient']) ? $mail_temp['recipient'] : get_option('admin_email');
         //set special field value
         $special_fields_value['sendEmail'] = $result['body'];
         $special_fields_value['admin_email'] = $admin_email;
         #admin email
         $special_fields_value['website'] = hw_wpcf7_current_page_url();
         #site url
         foreach ($atts as $field) {
             //loop each field
             $tag = new WPCF7_Shortcode($field);
             $name = $tag->name;
             //get field name
             if ($tag->has_option('gfield') && $tag->type != 'hw_wpcf7_special_fields') {
                 if ($tag->get_option('gfield', '', true)) {
                     $name = $tag->get_option('gfield', '', true);
                     //modify field value
                     $data[$name] = apply_filters('hwwpcf7_field_value', $posted_data[$tag->name], array('name' => $name, 'tag' => $tag, 'data' => &$data, 'wpcf7' => $wpcf7));
                     /*if(isset($_POST['product_id']) && $tag->name=='order_detail'){
                           $sp=get_post($_POST['product_id']);
                           $data[$name] = '[ID='.$sp->ID.']'.PHP_EOL.$sp->post_title.PHP_EOL.get_permalink($sp->ID);
                       }*/
                     //else $data[$name] = $posted_data[$tag->name];
                 }
             }
             /**
              * get field title
              */
             if ($tag->has_option('placeholder') && $tag->type != 'hw_wpcf7_special_fields') {
                 $fields_title[$name] = (string) reset($tag->values);
                 #$tag->get_option('placeholder','',true);
             }
             /**
              * special tag to get special fields
              */
             if ($tag->type == 'hw_wpcf7_special_fields') {
                 foreach (HW_WPCF7::$special_gfields as $fname => $desc) {
                     if ($tag->has_option($fname) && isset($special_fields_value[$fname])) {
                         $data[$tag->get_option($fname, '', true)] = $special_fields_value[$fname];
                         //add special field value to data
                     }
                 }
             }
         }
         //storage
         if ($storage_hook == 'google_form') {
             //get google form id
             $gform_id = $WPCF7_ContactForm->prop('hw_gformID');
             //from google spreadsheet as responses that link to google form. Create event onSubmitForm. you can send mail using google script.
             hw_wpcf7_post_gform($gform_id, $data);
         } elseif ($storage_hook == 'url') {
             $hook_url = $WPCF7_ContactForm->prop('hook_url');
             //web hook url
             $data['labels'] = serialize($fields_title);
             //nest labels for all fields in one data together
             HW_CURL::curl_post($hook_url, $data);
         }
         /*hw_mail(array(
            'subject'=>'Khách hàng liên hệ từ '.home_url(),
            'body'=>$body
           ));*/
     }
 }
 /**
  * Get the value from the submitted fields
  *
  * @param  string $subject The name of the field; ie: [first-name]
  * @param  array $posted_data The posted data, in array form.
  *
  * @return [type]               [description]
  */
 static function get_submitted_value($subject, &$obj, $pattern = '/\\[\\s*([a-zA-Z_][0-9a-zA-Z:._-]*)\\s*\\]/')
 {
     // new method ( since Contact Form 7 Version 4.0.1 )
     if (function_exists('wpcf7_mail_replace_tags')) {
         $subject = preg_replace('/^(?:\\[?)(.*)(?:\\]?)$/ism', '[$1]', $subject);
         $replaced = wpcf7_mail_replace_tags($subject);
         return $replaced;
     }
     // Keeping below for back compatibility (??)
     if (is_callable(array($obj, 'replace_mail_tags'))) {
         // Make sure the title is wrapped in []
         $subject = preg_replace('/^(?:\\[?)(.*)(?:\\]?)$/ism', '[$1]', $subject);
         $replaced = $obj->replace_mail_tags($subject);
         return $replaced;
     }
     // Keeping below for back compatibility
     $posted_data = $obj->posted_data;
     if (preg_match($pattern, $subject, $matches) > 0) {
         if (isset($posted_data[$matches[1]])) {
             $submitted = $posted_data[$matches[1]];
             if (is_array($submitted)) {
                 $replaced = join(', ', $submitted);
             } else {
                 $replaced = $submitted;
             }
             if ($html) {
                 $replaced = strip_tags($replaced);
                 $replaced = wptexturize($replaced);
             }
             $replaced = apply_filters('wpcf7_mail_tag_replaced', $replaced, $submitted);
             return stripslashes($replaced);
         }
         if ($special = apply_filters('wpcf7_special_mail_tags', '', $matches[1])) {
             return $special;
         }
         return $matches[0];
     }
     return $subject;
 }