contact_forms(); if ($cf = $contact_forms[$id]) { $cf = stripslashes_deep($cf); if ($this->mail($cf)) { echo '{ mailSent: 1, message: "' . $this->default_mail_result_message(true) . '" }'; } else { echo '{ mailSent: 0, message: "' . $this->default_mail_result_message(false) . '" }'; } } } exit(); } } function mail($contact_form) { $regex = '/\[\s*([a-zA-Z][0-9a-zA-Z:._-]*)\s*\]/'; $callback = create_function('$matches', 'if (isset($_POST[$matches[1]])) return $_POST[$matches[1]]; else return $matches[0];'); $mail_subject = preg_replace_callback($regex, $callback, $contact_form['mail']['subject']); $mail_sender = preg_replace_callback($regex, $callback, $contact_form['mail']['sender']); $mail_body = preg_replace_callback($regex, $callback, $contact_form['mail']['body']); $mail_headers = "MIME-Version: 1.0\n" . "From: $mail_sender\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; if (@wp_mail($contact_form['options']['recipient'], $mail_subject, $mail_body, $mail_headers)) { return true; } else { return false; } } function set_initial() { $wpcf7 = get_option('wpcf7'); if (! is_array($wpcf7)) $wpcf7 = array(); $contact_forms = $wpcf7['contact_forms']; if (! is_array($contact_forms)) $contact_forms = array(); if (0 == count($contact_forms)) $contact_forms[1] = $this->default_pack(__('Contact form', 'wpcf7') . ' 1'); $wpcf7['contact_forms'] = $contact_forms; update_option('wpcf7', $wpcf7); } function load_plugin_textdomain() { // l10n load_plugin_textdomain('wpcf7', 'wp-content/plugins/contact-form-7/languages'); } function contact_forms() { if (is_array($this->contact_forms)) return $this->contact_forms; $wpcf7 = get_option('wpcf7'); $this->contact_forms = $wpcf7['contact_forms']; if (! is_array($this->contact_forms)) $this->contact_forms = array(); return $this->contact_forms; } function update_contact_forms($contact_forms) { $wpcf7 = get_option('wpcf7'); $wpcf7['contact_forms'] = $contact_forms; update_option('wpcf7', $wpcf7); } /* Admin panel */ function add_pages() { add_options_page(__('Contact Form 7', 'wpcf7'), __('Contact Form 7', 'wpcf7'), 'manage_options', __FILE__, array(&$this, 'option_page')); } function admin_page_stylesheet() { global $plugin_page; if (isset($plugin_page) && $plugin_page == plugin_basename(__FILE__)) { $admin_stylesheet_url = get_option('siteurl') . '/wp-content/plugins/contact-form-7/admin-stylesheet.css'; echo ''; } } function option_page() { $base_url = $_SERVER['PHP_SELF'] . '?page=' . plugin_basename(__FILE__); $contact_forms = $this->contact_forms(); $id = $_POST['wpcf7-id']; if (isset($_POST['wpcf7-delete'])) { check_admin_referer('wpcf7-delete_' . $id); $updated_message = sprintf(__('Contact form "%s" deleted. ', 'wpcf7'), $contact_forms[$id]['title']); unset($contact_forms[$id]); $this->update_contact_forms($contact_forms); } elseif (isset($_POST['wpcf7-save'])) { check_admin_referer('wpcf7-save_' . $id); $title = trim($_POST['wpcf7-title']); $form = trim($_POST['wpcf7-form']); $mail_subject = trim($_POST['wpcf7-mail-subject']); $mail_sender = trim($_POST['wpcf7-mail-sender']); $mail_body = trim($_POST['wpcf7-mail-body']); $options_recipient = trim($_POST['wpcf7-options-recipient']); $mail = array('subject' => $mail_subject, 'sender' => $mail_sender, 'body' => $mail_body); $options = array('recipient' => $options_recipient); $contact_forms[$id] = compact('title', 'form', 'mail', 'options'); $updated_message = sprintf(__('Contact form "%s" saved. ', 'wpcf7'), $contact_forms[$id]['title']); $this->update_contact_forms($contact_forms); } if ('new' == $_GET['contactform'] || 0 == count($contact_forms)) { $initial = true; $contact_forms[] = array(); $current = max(array_keys($contact_forms)); $contact_forms[$current] = $this->default_pack(__('Contact form', 'wpcf7') . ' ' . $current, true); } else { $current = (int) $_GET['contactform']; if (! array_key_exists($current, $contact_forms)) $current = min(array_keys($contact_forms)); } include 'includes/admin-panel.php'; } function default_pack($title, $initial = false) { $cf = array('title' => $title, 'form' => $this->default_form_template(), 'mail' => $this->default_mail_template(), 'options' => $this->default_options_template()); if ($initial) $cf['initial'] = true; return $cf; } function default_form_template() { $template .= '
' . "\n\n"; $template .= '' . "\n\n"; $template .= '' . "\n\n"; $template .= '' . "\n\n"; $template .= '[submit "' . __('Send', 'wpcf7') . '"]'; return $template; } function default_mail_template() { $subject = '[your-subject]'; $sender = '[your-name] <[your-email]>'; $body = '[your-message]'; return compact('subject', 'sender', 'body'); } function default_options_template() { $recipient = get_option('admin_email'); return compact('recipient'); } /* Post content filtering */ function the_content_filter($content) { // Form submitted? if (isset($_POST['_wpcf7'])) { $id = (int) $_POST['_wpcf7']; $contact_forms = $this->contact_forms(); if ($cf = $contact_forms[$id]) { $cf = stripslashes_deep($cf); $fes = $this->form_elements($cf['form'], false); $validation = $this->validate_form_elements($fes); if ($validation['valid']) { if ($this->mail($cf)) { $_POST['_wpcf7_mail_sent'] = array('id' => $id, 'ok' => true, 'message' => $this->default_mail_result_message(true)); } else { $_POST['_wpcf7_mail_sent'] = array('id' => $id, 'ok' => false, 'message' => $this->default_mail_result_message(false)); } } else { $_POST['_wpcf7_validation_errors'] = array('id' => $id, 'messages' => $validation['reason']); } } } $regex = '/\[\s*contact-form\s+(\d+)(?:\s+.*?)?\s*\]/'; if (is_singular()) return preg_replace_callback($regex, array(&$this, 'the_content_filter_callback'), $content, 1); else return preg_replace($regex, '', $content); } function the_content_filter_callback($matches) { $contact_forms = $this->contact_forms(); $id = (int) $matches[1]; if (! ($cf = $contact_forms[$id])) return $matches[0]; if (isset($_POST['_wpcf7'])) { if ((int) $_POST['_wpcf7'] == $id) $_POST['_wpcf7_submitted'] = 1; else unset($_POST['_wpcf7_submitted']); } $cf = stripslashes_deep($cf); $form_content = $this->form_elements($cf['form']); $form = '