Viewing file: flamingo.php (4.09 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** ** Module for Flamingo plugin. ** http://wordpress.org/extend/plugins/flamingo/ **/
add_action( 'wpcf7_submit', 'wpcf7_flamingo_submit', 10, 2 );
function wpcf7_flamingo_submit( $contactform, $result ) { if ( ! class_exists( 'Flamingo_Contact' ) || ! class_exists( 'Flamingo_Inbound_Message' ) ) { return; }
if ( $contactform->in_demo_mode() ) { return; }
$cases = (array) apply_filters( 'wpcf7_flamingo_submit_if', array( 'spam', 'mail_sent', 'mail_failed' ) );
if ( empty( $result['status'] ) || ! in_array( $result['status'], $cases ) ) { return; }
$submission = WPCF7_Submission::get_instance();
if ( ! $submission || ! $posted_data = $submission->get_posted_data() ) { return; }
$fields_senseless = $contactform->form_scan_shortcode( array( 'type' => array( 'captchar', 'quiz', 'acceptance' ) ) );
$exclude_names = array();
foreach ( $fields_senseless as $tag ) { $exclude_names[] = $tag['name']; }
foreach ( $posted_data as $key => $value ) { if ( '_' == substr( $key, 0, 1 ) || in_array( $key, $exclude_names ) ) { unset( $posted_data[$key] ); } }
$email = wpcf7_flamingo_get_value( 'email', $contactform ); $name = wpcf7_flamingo_get_value( 'name', $contactform ); $subject = wpcf7_flamingo_get_value( 'subject', $contactform );
$meta = array();
$special_mail_tags = array( 'remote_ip', 'user_agent', 'url', 'date', 'time', 'post_id', 'post_name', 'post_title', 'post_url', 'post_author', 'post_author_email' );
foreach ( $special_mail_tags as $smt ) { $meta[$smt] = apply_filters( 'wpcf7_special_mail_tags', '', '_' . $smt, false ); }
$akismet = isset( $submission->akismet ) ? (array) $submission->akismet : null;
if ( 'mail_sent' == $result['status'] ) { Flamingo_Contact::add( array( 'email' => $email, 'name' => $name ) ); }
$channel_id = wpcf7_flamingo_add_channel( $contactform->name(), $contactform->title() );
if ( $channel_id ) { $channel = get_term( $channel_id, Flamingo_Inbound_Message::channel_taxonomy );
if ( ! $channel || is_wp_error( $channel ) ) { $channel = 'contact-form-7'; } else { $channel = $channel->slug; } } else { $channel = 'contact-form-7'; }
$args = array( 'channel' => $channel, 'subject' => $subject, 'from' => trim( sprintf( '%s <%s>', $name, $email ) ), 'from_name' => $name, 'from_email' => $email, 'fields' => $posted_data, 'meta' => $meta, 'akismet' => $akismet, 'spam' => ( 'spam' == $result['status'] ) );
Flamingo_Inbound_Message::add( $args ); }
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; }
function wpcf7_flamingo_add_channel( $slug, $name = '' ) { if ( ! class_exists( 'Flamingo_Inbound_Message' ) ) return false;
$parent = term_exists( 'contact-form-7', Flamingo_Inbound_Message::channel_taxonomy );
if ( ! $parent ) { $parent = wp_insert_term( __( 'Contact Form 7', 'contact-form-7' ), Flamingo_Inbound_Message::channel_taxonomy, array( 'slug' => 'contact-form-7' ) );
if ( is_wp_error( $parent ) ) { return false; } }
$parent = (int) $parent['term_id'];
if ( ! is_taxonomy_hierarchical( Flamingo_Inbound_Message::channel_taxonomy ) ) { // backward compat for Flamingo 1.0.4 and lower return $parent; }
if ( empty( $name ) ) { $name = $slug; }
$channel = term_exists( $slug, Flamingo_Inbound_Message::channel_taxonomy, $parent );
if ( ! $channel ) { $channel = wp_insert_term( $name, Flamingo_Inbound_Message::channel_taxonomy, array( 'slug' => $slug, 'parent' => $parent ) );
if ( is_wp_error( $channel ) ) { return false; } }
return (int) $channel['term_id']; }
?>
|