| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- <?php
- function wpcf7_plugin_path( $path = '' ) {
- return path_join( WPCF7_PLUGIN_DIR, trim( $path, '/' ) );
- }
- function wpcf7_plugin_url( $path = '' ) {
- $url = plugins_url( $path, WPCF7_PLUGIN );
- if ( is_ssl()
- and 'http:' == substr( $url, 0, 5 ) ) {
- $url = 'https:' . substr( $url, 5 );
- }
- return $url;
- }
- function wpcf7_upload_dir( $type = false ) {
- $uploads = wp_get_upload_dir();
- $uploads = apply_filters( 'wpcf7_upload_dir', array(
- 'dir' => $uploads['basedir'],
- 'url' => $uploads['baseurl'],
- ) );
- if ( 'dir' == $type ) {
- return $uploads['dir'];
- } if ( 'url' == $type ) {
- return $uploads['url'];
- }
- return $uploads;
- }
- function wpcf7_verify_nonce( $nonce, $action = 'wp_rest' ) {
- return wp_verify_nonce( $nonce, $action );
- }
- function wpcf7_create_nonce( $action = 'wp_rest' ) {
- return wp_create_nonce( $action );
- }
- function wpcf7_blacklist_check( $target ) {
- $mod_keys = trim( get_option( 'blacklist_keys' ) );
- if ( empty( $mod_keys ) ) {
- return false;
- }
- $words = explode( "\n", $mod_keys );
- foreach ( (array) $words as $word ) {
- $word = trim( $word );
- if ( empty( $word )
- or 256 < strlen( $word ) ) {
- continue;
- }
- $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) );
- if ( preg_match( $pattern, $target ) ) {
- return true;
- }
- }
- return false;
- }
- function wpcf7_array_flatten( $input ) {
- if ( ! is_array( $input ) ) {
- return array( $input );
- }
- $output = array();
- foreach ( $input as $value ) {
- $output = array_merge( $output, wpcf7_array_flatten( $value ) );
- }
- return $output;
- }
- function wpcf7_flat_join( $input ) {
- $input = wpcf7_array_flatten( $input );
- $output = array();
- foreach ( (array) $input as $value ) {
- $output[] = trim( (string) $value );
- }
- return implode( ', ', $output );
- }
- function wpcf7_support_html5() {
- return (bool) apply_filters( 'wpcf7_support_html5', true );
- }
- function wpcf7_support_html5_fallback() {
- return (bool) apply_filters( 'wpcf7_support_html5_fallback', false );
- }
- function wpcf7_use_really_simple_captcha() {
- return apply_filters( 'wpcf7_use_really_simple_captcha',
- WPCF7_USE_REALLY_SIMPLE_CAPTCHA );
- }
- function wpcf7_validate_configuration() {
- return apply_filters( 'wpcf7_validate_configuration',
- WPCF7_VALIDATE_CONFIGURATION );
- }
- function wpcf7_autop_or_not() {
- return (bool) apply_filters( 'wpcf7_autop_or_not', WPCF7_AUTOP );
- }
- function wpcf7_load_js() {
- return apply_filters( 'wpcf7_load_js', WPCF7_LOAD_JS );
- }
- function wpcf7_load_css() {
- return apply_filters( 'wpcf7_load_css', WPCF7_LOAD_CSS );
- }
- function wpcf7_format_atts( $atts ) {
- $html = '';
- $prioritized_atts = array( 'type', 'name', 'value' );
- foreach ( $prioritized_atts as $att ) {
- if ( isset( $atts[$att] ) ) {
- $value = trim( $atts[$att] );
- $html .= sprintf( ' %s="%s"', $att, esc_attr( $value ) );
- unset( $atts[$att] );
- }
- }
- foreach ( $atts as $key => $value ) {
- $key = strtolower( trim( $key ) );
- if ( ! preg_match( '/^[a-z_:][a-z_:.0-9-]*$/', $key ) ) {
- continue;
- }
- $value = trim( $value );
- if ( '' !== $value ) {
- $html .= sprintf( ' %s="%s"', $key, esc_attr( $value ) );
- }
- }
- $html = trim( $html );
- return $html;
- }
- function wpcf7_link( $url, $anchor_text, $args = '' ) {
- $defaults = array(
- 'id' => '',
- 'class' => '',
- );
- $args = wp_parse_args( $args, $defaults );
- $args = array_intersect_key( $args, $defaults );
- $atts = wpcf7_format_atts( $args );
- $link = sprintf( '<a href="%1$s"%3$s>%2$s</a>',
- esc_url( $url ),
- esc_html( $anchor_text ),
- $atts ? ( ' ' . $atts ) : '' );
- return $link;
- }
- function wpcf7_get_request_uri() {
- static $request_uri = '';
- if ( empty( $request_uri ) ) {
- $request_uri = add_query_arg( array() );
- }
- return esc_url_raw( $request_uri );
- }
- function wpcf7_register_post_types() {
- if ( class_exists( 'WPCF7_ContactForm' ) ) {
- WPCF7_ContactForm::register_post_type();
- return true;
- } else {
- return false;
- }
- }
- function wpcf7_version( $args = '' ) {
- $defaults = array(
- 'limit' => -1,
- 'only_major' => false,
- );
- $args = wp_parse_args( $args, $defaults );
- if ( $args['only_major'] ) {
- $args['limit'] = 2;
- }
- $args['limit'] = (int) $args['limit'];
- $ver = WPCF7_VERSION;
- $ver = strtr( $ver, '_-+', '...' );
- $ver = preg_replace( '/[^0-9.]+/', ".$0.", $ver );
- $ver = preg_replace( '/[.]+/', ".", $ver );
- $ver = trim( $ver, '.' );
- $ver = explode( '.', $ver );
- if ( -1 < $args['limit'] ) {
- $ver = array_slice( $ver, 0, $args['limit'] );
- }
- $ver = implode( '.', $ver );
- return $ver;
- }
- function wpcf7_version_grep( $version, array $input ) {
- $pattern = '/^' . preg_quote( (string) $version, '/' ) . '(?:\.|$)/';
- return preg_grep( $pattern, $input );
- }
- function wpcf7_enctype_value( $enctype ) {
- $enctype = trim( $enctype );
- if ( empty( $enctype ) ) {
- return '';
- }
- $valid_enctypes = array(
- 'application/x-www-form-urlencoded',
- 'multipart/form-data',
- 'text/plain',
- );
- if ( in_array( $enctype, $valid_enctypes ) ) {
- return $enctype;
- }
- $pattern = '%^enctype="(' . implode( '|', $valid_enctypes ) . ')"$%';
- if ( preg_match( $pattern, $enctype, $matches ) ) {
- return $matches[1]; // for back-compat
- }
- return '';
- }
- function wpcf7_rmdir_p( $dir ) {
- if ( is_file( $dir ) ) {
- $file = $dir;
- if ( @unlink( $file ) ) {
- return true;
- }
- $stat = stat( $file );
- if ( @chmod( $file, $stat['mode'] | 0200 ) ) { // add write for owner
- if ( @unlink( $file ) ) {
- return true;
- }
- @chmod( $file, $stat['mode'] );
- }
- return false;
- }
- if ( ! is_dir( $dir ) ) {
- return false;
- }
- if ( $handle = opendir( $dir ) ) {
- while ( false !== ( $file = readdir( $handle ) ) ) {
- if ( $file == "."
- or $file == ".." ) {
- continue;
- }
- wpcf7_rmdir_p( path_join( $dir, $file ) );
- }
- closedir( $handle );
- }
- if ( false !== ( $files = scandir( $dir ) )
- and ! array_diff( $files, array( '.', '..' ) ) ) {
- return rmdir( $dir );
- }
- return false;
- }
- /* From _http_build_query in wp-includes/functions.php */
- function wpcf7_build_query( $args, $key = '' ) {
- $sep = '&';
- $ret = array();
- foreach ( (array) $args as $k => $v ) {
- $k = urlencode( $k );
- if ( ! empty( $key ) ) {
- $k = $key . '%5B' . $k . '%5D';
- }
- if ( null === $v ) {
- continue;
- } elseif ( false === $v ) {
- $v = '0';
- }
- if ( is_array( $v ) or is_object( $v ) ) {
- array_push( $ret, wpcf7_build_query( $v, $k ) );
- } else {
- array_push( $ret, $k . '=' . urlencode( $v ) );
- }
- }
- return implode( $sep, $ret );
- }
- /**
- * Returns the number of code units in a string.
- *
- * @see http://www.w3.org/TR/html5/infrastructure.html#code-unit-length
- *
- * @return int|bool The number of code units, or false if mb_convert_encoding is not available.
- */
- function wpcf7_count_code_units( $string ) {
- static $use_mb = null;
- if ( is_null( $use_mb ) ) {
- $use_mb = function_exists( 'mb_convert_encoding' );
- }
- if ( ! $use_mb ) {
- return false;
- }
- $string = (string) $string;
- $string = str_replace( "\r\n", "\n", $string );
- $encoding = mb_detect_encoding( $string, mb_detect_order(), true );
- if ( $encoding ) {
- $string = mb_convert_encoding( $string, 'UTF-16', $encoding );
- } else {
- $string = mb_convert_encoding( $string, 'UTF-16', 'UTF-8' );
- }
- $byte_count = mb_strlen( $string, '8bit' );
- return floor( $byte_count / 2 );
- }
- function wpcf7_is_localhost() {
- $server_name = strtolower( $_SERVER['SERVER_NAME'] );
- return in_array( $server_name, array( 'localhost', '127.0.0.1' ) );
- }
- function wpcf7_deprecated_function( $function, $version, $replacement ) {
- $trigger_error = apply_filters( 'deprecated_function_trigger_error', true );
- if ( WP_DEBUG and $trigger_error ) {
- if ( function_exists( '__' ) ) {
- trigger_error( sprintf( __( '%1$s is <strong>deprecated</strong> since Contact Form 7 version %2$s! Use %3$s instead.', 'contact-form-7' ), $function, $version, $replacement ) );
- } else {
- trigger_error( sprintf( '%1$s is <strong>deprecated</strong> since Contact Form 7 version %2$s! Use %3$s instead.', $function, $version, $replacement ) );
- }
- }
- }
- function wpcf7_log_remote_request( $url, $request, $response ) {
- $log = sprintf(
- /* translators: 1: response code, 2: message, 3: body, 4: URL */
- __( 'HTTP Response: %1$s %2$s %3$s from %4$s', 'contact-form-7' ),
- (int) wp_remote_retrieve_response_code( $response ),
- wp_remote_retrieve_response_message( $response ),
- wp_remote_retrieve_body( $response ),
- $url
- );
- $log = apply_filters( 'wpcf7_log_remote_request',
- $log, $url, $request, $response
- );
- if ( $log ) {
- trigger_error( $log );
- }
- }
- function wpcf7_anonymize_ip_addr( $ip_addr ) {
- if ( ! function_exists( 'inet_ntop' )
- or ! function_exists( 'inet_pton' ) ) {
- return $ip_addr;
- }
- $packed = inet_pton( $ip_addr );
- if ( false === $packed ) {
- return $ip_addr;
- }
- if ( 4 == strlen( $packed ) ) { // IPv4
- $mask = '255.255.255.0';
- } elseif ( 16 == strlen( $packed ) ) { // IPv6
- $mask = 'ffff:ffff:ffff:0000:0000:0000:0000:0000';
- } else {
- return $ip_addr;
- }
- return inet_ntop( $packed & inet_pton( $mask ) );
- }
- function wpcf7_is_file_path_in_content_dir( $path ) {
- if ( 0 === strpos( realpath( $path ), realpath( WP_CONTENT_DIR ) ) ) {
- return true;
- }
- if ( defined( 'UPLOADS' )
- and 0 === strpos( realpath( $path ), realpath( ABSPATH . UPLOADS ) ) ) {
- return true;
- }
- return false;
- }
|