File "flamingo.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/contact-form-7/modules/flamingo.php
File size: 7.75 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

add_action('wpcf7_submit', 'wpcf7_flamingo_submit', 10, 2);
function wpcf7_flamingo_submit($contact_form, $result)
{
    if (!class_exists('Flamingo_Contact') or !class_exists('Flamingo_Inbound_Message')) {
        return;
    }
    if ($contact_form->in_demo_mode()) {
        return;
    }
    $cases = (array) apply_filters('wpcf7_flamingo_submit_if', array('spam', 'mail_sent', 'mail_failed'));
    if (empty($result['status']) or !in_array($result['status'], $cases)) {
        return;
    }
    $submission = WPCF7_Submission::get_instance();
    if (!$submission or !($posted_data = $submission->get_posted_data())) {
        return;
    }
    if ($submission->get_meta('do_not_store')) {
        return;
    }
    $email = wpcf7_flamingo_get_value('email', $contact_form);
    $name = wpcf7_flamingo_get_value('name', $contact_form);
    $subject = wpcf7_flamingo_get_value('subject', $contact_form);
    $meta = array();
    $special_mail_tags = array('serial_number', 'remote_ip', 'user_agent', 'url', 'date', 'time', 'post_id', 'post_name', 'post_title', 'post_url', 'post_author', 'post_author_email', 'site_title', 'site_description', 'site_url', 'site_admin_email', 'user_login', 'user_email', 'user_display_name');
    foreach ($special_mail_tags as $smt) {
        $tagname = sprintf('_%s', $smt);
        $mail_tag = new WPCF7_MailTag(sprintf('[%s]', $tagname), $tagname, '');
        $meta[$smt] = apply_filters('wpcf7_special_mail_tags', null, $tagname, false, $mail_tag);
    }
    $akismet = isset($submission->akismet) ? (array) $submission->akismet : null;
    $timestamp = $submission->get_meta('timestamp');
    if ($timestamp and $datetime = date_create('@' . $timestamp)) {
        $datetime->setTimezone(wp_timezone());
        $last_contacted = $datetime->format('Y-m-d H:i:s');
    } else {
        $last_contacted = '0000-00-00 00:00:00';
    }
    if ('mail_sent' == $result['status']) {
        $flamingo_contact = Flamingo_Contact::add(array('email' => $email, 'name' => $name, 'last_contacted' => $last_contacted));
    }
    $post_meta = get_post_meta($contact_form->id(), '_flamingo', true);
    $channel_id = isset($post_meta['channel']) ? (int) $post_meta['channel'] : wpcf7_flamingo_add_channel($contact_form->name(), $contact_form->title());
    if ($channel_id) {
        if (!isset($post_meta['channel']) or $post_meta['channel'] !== $channel_id) {
            $post_meta = empty($post_meta) ? array() : (array) $post_meta;
            $post_meta = array_merge($post_meta, array('channel' => $channel_id));
            update_post_meta($contact_form->id(), '_flamingo', $post_meta);
        }
        $channel = get_term($channel_id, Flamingo_Inbound_Message::channel_taxonomy);
        if (!$channel or is_wp_error($channel)) {
            $channel = 'contact-form-7';
        } else {
            $channel = $channel->slug;
        }
    } else {
        $channel = 'contact-form-7';
    }
    $args = array('channel' => $channel, 'status' => $submission->get_status(), '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'], 'consent' => $submission->collect_consent(), 'timestamp' => $timestamp, 'posted_data_hash' => $submission->get_posted_data_hash());
    if ($args['spam']) {
        $args['spam_log'] = $submission->get_spam_log();
    }
    if (isset($submission->recaptcha)) {
        $args['recaptcha'] = $submission->recaptcha;
    }
    $args = apply_filters('wpcf7_flamingo_inbound_message_parameters', $args);
    $flamingo_inbound = Flamingo_Inbound_Message::add($args);
    if (empty($flamingo_contact)) {
        $flamingo_contact_id = 0;
    } elseif (method_exists($flamingo_contact, 'id')) {
        $flamingo_contact_id = $flamingo_contact->id();
    } else {
        $flamingo_contact_id = $flamingo_contact->id;
    }
    if (empty($flamingo_inbound)) {
        $flamingo_inbound_id = 0;
    } elseif (method_exists($flamingo_inbound, 'id')) {
        $flamingo_inbound_id = $flamingo_inbound->id();
    } else {
        $flamingo_inbound_id = $flamingo_inbound->id;
    }
    $result += array('flamingo_contact_id' => absint($flamingo_contact_id), 'flamingo_inbound_id' => absint($flamingo_inbound_id));
    do_action('wpcf7_after_flamingo', $result);
}
function wpcf7_flamingo_get_value($field, $contact_form)
{
    if (empty($field) or empty($contact_form)) {
        return false;
    }
    $value = '';
    if (in_array($field, array('email', 'name', 'subject'))) {
        $template = $contact_form->pref('flamingo_' . $field);
        if (null === $template) {
            $template = sprintf('[your-%s]', $field);
        } else {
            $template = trim(wpcf7_strip_quote($template));
        }
        $value = wpcf7_mail_replace_tags($template);
    }
    $value = apply_filters('wpcf7_flamingo_get_value', $value, $field, $contact_form);
    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)) {
        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'];
}
add_action('wpcf7_after_update', 'wpcf7_flamingo_update_channel', 10, 1);
function wpcf7_flamingo_update_channel($contact_form)
{
    if (!class_exists('Flamingo_Inbound_Message')) {
        return false;
    }
    $post_meta = get_post_meta($contact_form->id(), '_flamingo', true);
    $channel = isset($post_meta['channel']) ? get_term($post_meta['channel'], Flamingo_Inbound_Message::channel_taxonomy) : get_term_by('slug', $contact_form->name(), Flamingo_Inbound_Message::channel_taxonomy);
    if (!$channel or is_wp_error($channel)) {
        return;
    }
    if ($channel->name !== wp_unslash($contact_form->title())) {
        wp_update_term($channel->term_id, Flamingo_Inbound_Message::channel_taxonomy, array('name' => $contact_form->title(), 'slug' => $contact_form->name(), 'parent' => $channel->parent));
    }
}
add_filter('wpcf7_special_mail_tags', 'wpcf7_flamingo_serial_number', 10, 4);
function wpcf7_flamingo_serial_number($output, $name, $html, $mail_tag = null)
{
    if (!$mail_tag instanceof WPCF7_MailTag) {
        wpcf7_doing_it_wrong(sprintf('%s()', __FUNCTION__), __('The fourth parameter ($mail_tag) must be an instance of the WPCF7_MailTag class.', 'contact-form-7'), '5.2.2');
    }
    if ('_serial_number' != $name) {
        return $output;
    }
    if (!class_exists('Flamingo_Inbound_Message') or !method_exists('Flamingo_Inbound_Message', 'count')) {
        return $output;
    }
    if (!($contact_form = WPCF7_ContactForm::get_current())) {
        return $output;
    }
    $post_meta = get_post_meta($contact_form->id(), '_flamingo', true);
    $channel_id = isset($post_meta['channel']) ? (int) $post_meta['channel'] : wpcf7_flamingo_add_channel($contact_form->name(), $contact_form->title());
    if ($channel_id) {
        return 1 + (int) Flamingo_Inbound_Message::count(array('channel_id' => $channel_id));
    }
    return 0;
}