<?php function wpcf7_contact_form( $id ) { return WPCF7_ContactForm::get_instance( $id ); } function wpcf7_get_contact_form_by_old_id( $old_id ) { global $wpdb; $q = "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_old_cf7_unit_id'" . $wpdb->prepare( " AND meta_value = %d", $old_id ); if ( $new_id = $wpdb->get_var( $q ) ) { return wpcf7_contact_form( $new_id ); } } function wpcf7_get_contact_form_by_title( $title ) { $page = get_page_by_title( $title, OBJECT, WPCF7_ContactForm::post_type ); if ( $page ) { return wpcf7_contact_form( $page->ID ); } return null; } function wpcf7_get_current_contact_form() { if ( $current = WPCF7_ContactForm::get_current() ) { return $current; } } function wpcf7_is_posted() { if ( ! $contact_form = wpcf7_get_current_contact_form() ) { return false; } return $contact_form->is_posted(); } function wpcf7_get_hangover( $name, $default = null ) { if ( ! wpcf7_is_posted() ) { return $default; } $submission = WPCF7_Submission::get_instance(); if ( ! $submission or $submission->is( 'mail_sent' ) ) { return $default; } return isset( $_POST[$name] ) ? wp_unslash( $_POST[$name] ) : $default; } function wpcf7_get_validation_error( $name ) { if ( ! $contact_form = wpcf7_get_current_contact_form() ) { return ''; } return $contact_form->validation_error( $name ); } function wpcf7_get_validation_error_reference( $name ) { $contact_form = wpcf7_get_current_contact_form(); if ( $contact_form and $contact_form->validation_error( $name ) ) { return sprintf( '%1$s-ve-%2$s', $contact_form->unit_tag(), $name ); } } function wpcf7_get_message( $status ) { if ( ! $contact_form = wpcf7_get_current_contact_form() ) { return ''; } return $contact_form->message( $status ); } function wpcf7_form_controls_class( $type, $default = '' ) { $type = trim( $type ); $default = array_filter( explode( ' ', $default ) ); $classes = array_merge( array( 'wpcf7-form-control' ), $default ); $typebase = rtrim( $type, '*' ); $required = ( '*' == substr( $type, -1 ) ); $classes[] = 'wpcf7-' . $typebase; if ( $required ) { $classes[] = 'wpcf7-validates-as-required'; } $classes = array_unique( $classes ); return implode( ' ', $classes ); } function wpcf7_contact_form_tag_func( $atts, $content = null, $code = '' ) { if ( is_feed() ) { return '[contact-form-7]'; } if ( 'contact-form-7' == $code ) { $atts = shortcode_atts( array( 'id' => 0, 'title' => '', 'html_id' => '', 'html_name' => '', 'html_class' => '', 'output' => 'form', ), $atts, 'wpcf7' ); $id = (int) $atts['id']; $title = trim( $atts['title'] ); if ( ! $contact_form = wpcf7_contact_form( $id ) ) { $contact_form = wpcf7_get_contact_form_by_title( $title ); } } else { if ( is_string( $atts ) ) { $atts = explode( ' ', $atts, 2 ); } $id = (int) array_shift( $atts ); $contact_form = wpcf7_get_contact_form_by_old_id( $id ); } if ( ! $contact_form ) { return sprintf( '[contact-form-7 404 "%s"]', esc_html( __( 'Not Found', 'contact-form-7' ) ) ); } return $contact_form->form_html( $atts ); } function wpcf7_save_contact_form( $args = '', $context = 'save' ) { $args = wp_parse_args( $args, array( 'id' => -1, 'title' => null, 'locale' => null, 'form' => null, 'mail' => null, 'mail_2' => null, 'messages' => null, 'additional_settings' => null, ) ); $args = wp_unslash( $args ); $args['id'] = (int) $args['id']; if ( -1 == $args['id'] ) { $contact_form = WPCF7_ContactForm::get_template(); } else { $contact_form = wpcf7_contact_form( $args['id'] ); } if ( empty( $contact_form ) ) { return false; } if ( null !== $args['title'] ) { $contact_form->set_title( $args['title'] ); } if ( null !== $args['locale'] ) { $contact_form->set_locale( $args['locale'] ); } $properties = array(); if ( null !== $args['form'] ) { $properties['form'] = wpcf7_sanitize_form( $args['form'] ); } if ( null !== $args['mail'] ) { $properties['mail'] = wpcf7_sanitize_mail( $args['mail'] ); $properties['mail']['active'] = true; } if ( null !== $args['mail_2'] ) { $properties['mail_2'] = wpcf7_sanitize_mail( $args['mail_2'] ); } if ( null !== $args['messages'] ) { $properties['messages'] = wpcf7_sanitize_messages( $args['messages'] ); } if ( null !== $args['additional_settings'] ) { $properties['additional_settings'] = wpcf7_sanitize_additional_settings( $args['additional_settings'] ); } $contact_form->set_properties( $properties ); do_action( 'wpcf7_save_contact_form', $contact_form, $args, $context ); if ( 'save' == $context ) { $contact_form->save(); } return $contact_form; } function wpcf7_sanitize_form( $input, $default = '' ) { if ( null === $input ) { return $default; } $output = trim( $input ); if ( ! current_user_can( 'unfiltered_html' ) ) { $output = wpcf7_kses( $output, 'form' ); } return $output; } function wpcf7_sanitize_mail( $input, $defaults = array() ) { $input = wp_parse_args( $input, array( 'active' => false, 'subject' => '', 'sender' => '', 'recipient' => '', 'body' => '', 'additional_headers' => '', 'attachments' => '', 'use_html' => false, 'exclude_blank' => false, ) ); $input = wp_parse_args( $input, $defaults ); $output = array(); $output['active'] = (bool) $input['active']; $output['subject'] = trim( $input['subject'] ); $output['sender'] = trim( $input['sender'] ); $output['recipient'] = trim( $input['recipient'] ); $output['body'] = trim( $input['body'] ); if ( ! current_user_can( 'unfiltered_html' ) ) { $output['body'] = wpcf7_kses( $output['body'], 'mail' ); } $output['additional_headers'] = ''; $headers = str_replace( "\r\n", "\n", $input['additional_headers'] ); $headers = explode( "\n", $headers ); foreach ( $headers as $header ) { $header = trim( $header ); if ( '' !== $header ) { $output['additional_headers'] .= $header . "\n"; } } $output['additional_headers'] = trim( $output['additional_headers'] ); $output['attachments'] = trim( $input['attachments'] ); $output['use_html'] = (bool) $input['use_html']; $output['exclude_blank'] = (bool) $input['exclude_blank']; return $output; } function wpcf7_sanitize_messages( $input, $defaults = array() ) { $output = array(); foreach ( wpcf7_messages() as $key => $val ) { if ( isset( $input[$key] ) ) { $output[$key] = trim( $input[$key] ); } elseif ( isset( $defaults[$key] ) ) { $output[$key] = $defaults[$key]; } } return $output; } function wpcf7_sanitize_additional_settings( $input, $default = '' ) { if ( null === $input ) { return $default; } $output = trim( $input ); return $output; }