function wpcf7_flamingo_before_send_mail($contactform) { if (!(class_exists('Flamingo_Contact') && class_exists('Flamingo_Inbound_Message'))) { return; } if (empty($contactform->posted_data) || !empty($contactform->skip_mail)) { 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']; } $posted_data = $contactform->posted_data; foreach ($posted_data as $key => $value) { if ('_' == substr($key, 0, 1) || in_array($key, $exclude_names)) { unset($posted_data[$key]); } } $email = isset($posted_data['your-email']) ? trim($posted_data['your-email']) : ''; $name = isset($posted_data['your-name']) ? trim($posted_data['your-name']) : ''; $subject = isset($posted_data['your-subject']) ? trim($posted_data['your-subject']) : ''; $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); } if (isset($contactform->akismet)) { $akismet = (array) $contactform->akismet; } Flamingo_Contact::add(array('email' => $email, 'name' => $name)); Flamingo_Inbound_Message::add(array('channel' => 'contact-form-7', 'subject' => $subject, 'from' => trim(sprintf('%s <%s>', $name, $email)), 'from_name' => $name, 'from_email' => $email, 'fields' => $posted_data, 'meta' => $meta, 'akismet' => $akismet)); }
function prepare_items() { $current_screen = get_current_screen(); $per_page = $this->get_items_per_page($current_screen->id . '_per_page'); $this->_column_headers = $this->get_column_info(); $args = array('posts_per_page' => $per_page, 'offset' => ($this->get_pagenum() - 1) * $per_page, 'orderby' => 'meta_value', 'order' => 'DESC', 'meta_key' => '_last_contacted'); if (!empty($_REQUEST['s'])) { $args['s'] = $_REQUEST['s']; } if (!empty($_REQUEST['orderby'])) { if ('email' == $_REQUEST['orderby']) { $args['meta_key'] = '_email'; } elseif ('name' == $_REQUEST['orderby']) { $args['meta_key'] = '_name'; } } if (!empty($_REQUEST['order']) && 'asc' == strtolower($_REQUEST['order'])) { $args['order'] = 'ASC'; } if (!empty($_REQUEST['contact_tag_id'])) { $args['contact_tag_id'] = explode(',', $_REQUEST['contact_tag_id']); } $this->items = Flamingo_Contact::find($args); $total_items = Flamingo_Contact::$found_items; $total_pages = ceil($total_items / $per_page); $this->set_pagination_args(array('total_items' => $total_items, 'total_pages' => $total_pages, 'per_page' => $per_page)); }
function wpcf7_flamingo_before_send_mail($contactform) { if (!(class_exists('Flamingo_Contact') && class_exists('Flamingo_Inbound_Message'))) { return; } if (empty($contactform->posted_data) || !empty($contactform->skip_mail)) { 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']; } $posted_data = $contactform->posted_data; foreach ($posted_data as $key => $value) { if ('_' == substr($key, 0, 1) || in_array($key, $exclude_names)) { unset($posted_data[$key]); } } $meta = array('remote_ip' => apply_filters('wpcf7_special_mail_tags', '', '_remote_ip'), 'url' => apply_filters('wpcf7_special_mail_tags', '', '_url'), 'date' => apply_filters('wpcf7_special_mail_tags', '', '_date'), 'time' => apply_filters('wpcf7_special_mail_tags', '', '_time'), 'post_id' => apply_filters('wpcf7_special_mail_tags', '', '_post_id'), 'post_name' => apply_filters('wpcf7_special_mail_tags', '', '_post_name'), 'post_title' => apply_filters('wpcf7_special_mail_tags', '', '_post_title'), 'post_url' => apply_filters('wpcf7_special_mail_tags', '', '_post_url'), 'post_author' => apply_filters('wpcf7_special_mail_tags', '', '_post_author'), 'post_author_email' => apply_filters('wpcf7_special_mail_tags', '', '_post_author_email')); $args = array('channel' => 'contact-form-7', 'fields' => $posted_data, 'meta' => $meta, 'email' => '', 'name' => '', 'from' => '', 'subject' => ''); if (!empty($posted_data['your-email'])) { $args['from_email'] = $args['email'] = trim($posted_data['your-email']); } if (!empty($posted_data['your-name'])) { $args['from_name'] = $args['name'] = trim($posted_data['your-name']); } if (!empty($posted_data['your-subject'])) { $args['subject'] = trim($posted_data['your-subject']); } $args['from'] = trim(sprintf('%s <%s>', $args['from_name'], $args['from_email'])); Flamingo_Contact::add($args); Flamingo_Inbound_Message::add($args); }
function flamingo_init() { /* L10N */ load_plugin_textdomain('flamingo', false, 'flamingo/languages'); /* Custom Post Types */ Flamingo_Contact::register_post_type(); Flamingo_Inbound_Message::register_post_type(); Flamingo_Outbound_Message::register_post_type(); do_action('flamingo_init'); }
function wpcf7_flamingo_submit($contactform, $result) { if (!class_exists('Flamingo_Contact') || !class_exists('Flamingo_Inbound_Message')) { return; } if ($contactform->in_demo_mode() || $contactform->is_true('do_not_store')) { 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']; } $exclude_names[] = 'g-recaptcha-response'; 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 flamingo_collect_contacts_from_comments() { $comments = get_comments(array('status' => 'approve', 'type' => 'comment', 'number' => 20)); foreach ($comments as $comment) { $email = $comment->comment_author_email; $name = $comment->comment_author; if (empty($email)) { continue; } Flamingo_Contact::add(array('email' => $email, 'name' => $name, 'channel' => 'comment')); } }
function flamingo_collect_contacts_from_users() { $users = get_users(array('number' => 20)); foreach ($users as $user) { $email = $user->user_email; $name = $user->display_name; if (empty($email)) { continue; } $props = array('first_name' => empty($user->first_name) ? '' : $user->first_name, 'last_name' => empty($user->last_name) ? '' : $user->last_name); Flamingo_Contact::add(array('email' => $email, 'name' => $name, 'props' => $props, 'channel' => 'user')); } }
public static function find($args = '') { $defaults = array('posts_per_page' => 10, 'offset' => 0, 'orderby' => 'ID', 'order' => 'ASC', 'meta_key' => '', 'meta_value' => '', 'post_status' => 'any', 'tax_query' => array(), 'contact_tag_id' => ''); $args = wp_parse_args($args, $defaults); $args['post_type'] = self::post_type; if (!empty($args['contact_tag_id'])) { $args['tax_query'][] = array('taxonomy' => self::contact_tag_taxonomy, 'terms' => $args['contact_tag_id'], 'field' => 'term_id'); } $q = new WP_Query(); $posts = $q->query($args); self::$found_items = $q->found_posts; $objs = array(); foreach ((array) $posts as $post) { $objs[] = new self($post); } return $objs; }
function flamingo_load_contact_admin() { $action = flamingo_current_action(); $redirect_to = admin_url('admin.php?page=flamingo'); if ('save' == $action && !empty($_REQUEST['post'])) { $post = new Flamingo_Contact($_REQUEST['post']); if (!empty($post)) { if (!current_user_can('flamingo_edit_contact', $post->id)) { wp_die(__('You are not allowed to edit this item.', 'flamingo')); } check_admin_referer('flamingo-update-contact_' . $post->id); $post->props = (array) $_POST['contact']; $post->name = trim($_POST['contact']['name']); $post->tags = !empty($_POST['tax_input'][Flamingo_Contact::contact_tag_taxonomy]) ? explode(',', $_POST['tax_input'][Flamingo_Contact::contact_tag_taxonomy]) : array(); $post->save(); $redirect_to = add_query_arg(array('action' => 'edit', 'post' => $post->id, 'message' => 'contactupdated'), $redirect_to); } wp_safe_redirect($redirect_to); exit; } if ('delete' == $action && !empty($_REQUEST['post'])) { if (!is_array($_REQUEST['post'])) { check_admin_referer('flamingo-delete-contact_' . $_REQUEST['post']); } else { check_admin_referer('bulk-posts'); } $deleted = 0; foreach ((array) $_REQUEST['post'] as $post) { $post = new Flamingo_Contact($post); if (empty($post)) { continue; } if (!current_user_can('flamingo_delete_contact', $post->id)) { wp_die(__('You are not allowed to delete this item.', 'flamingo')); } if (!$post->delete()) { wp_die(__('Error in deleting.', 'flamingo')); } $deleted += 1; } if (!empty($deleted)) { $redirect_to = add_query_arg(array('message' => 'contactdeleted'), $redirect_to); } wp_safe_redirect($redirect_to); exit; } if (!empty($_GET['export'])) { check_admin_referer('bulk-posts'); $sitename = sanitize_key(get_bloginfo('name')); $filename = (empty($sitename) ? '' : $sitename . '-') . sprintf('flamingo-contact-%s.csv', date('Y-m-d')); header('Content-Description: File Transfer'); header("Content-Disposition: attachment; filename={$filename}"); header('Content-Type: text/csv; charset=' . get_option('blog_charset')); $labels = array(__('Email', 'flamingo'), __('Full name', 'flamingo'), __('First name', 'flamingo'), __('Last name', 'flamingo')); echo flamingo_csv_row($labels); $args = array('posts_per_page' => -1, 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_key' => '_email'); if (!empty($_GET['s'])) { $args['s'] = $_GET['s']; } if (!empty($_GET['orderby'])) { if ('email' == $_GET['orderby']) { $args['meta_key'] = '_email'; } elseif ('name' == $_GET['orderby']) { $args['meta_key'] = '_name'; } } if (!empty($_GET['order']) && 'asc' == strtolower($_GET['order'])) { $args['order'] = 'ASC'; } if (!empty($_GET['contact_tag_id'])) { $args['contact_tag_id'] = explode(',', $_GET['contact_tag_id']); } $items = Flamingo_Contact::find($args); foreach ($items as $item) { $row = array($item->email, $item->get_prop('name'), $item->get_prop('first_name'), $item->get_prop('last_name')); echo "\r\n" . flamingo_csv_row($row); } exit; } if (!empty($_GET['sendmail']) && !empty($_REQUEST['contact_tag_id'])) { $redirect_to = admin_url('admin.php?page=flamingo_outbound'); $redirect_to = add_query_arg(array('action' => 'new', 'contact_tag_id' => absint($_REQUEST['contact_tag_id'])), $redirect_to); wp_safe_redirect($redirect_to); exit; } $post_id = !empty($_REQUEST['post']) ? $_REQUEST['post'] : ''; if (Flamingo_Contact::post_type == get_post_type($post_id)) { add_meta_box('submitdiv', __('Save', 'flamingo'), 'flamingo_contact_submit_meta_box', null, 'side', 'core'); add_meta_box('contacttagsdiv', __('Tags', 'flamingo'), 'flamingo_contact_tags_meta_box', null, 'side', 'core'); add_meta_box('contactnamediv', __('Name', 'flamingo'), 'flamingo_contact_name_meta_box', null, 'normal', 'core'); } else { if (!class_exists('Flamingo_Contacts_List_Table')) { require_once FLAMINGO_PLUGIN_DIR . '/admin/includes/class-contacts-list-table.php'; } $current_screen = get_current_screen(); add_filter('manage_' . $current_screen->id . '_columns', array('Flamingo_Contacts_List_Table', 'define_columns')); add_screen_option('per_page', array('label' => __('Contacts', 'flamingo'), 'default' => 20)); } }