Current Path : /storage/v11800/lifespanstoresnew/public_html/wp-content/plugins/mailchimp-for-wp/includes/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/lifespanstoresnew/public_html/wp-content/plugins/mailchimp-for-wp/includes/class-dynamic-content-tags.php |
<?php
/**
* Class MC4WP_Dynamic_Content_Tags
*
* @access private
* @ignore
*/
abstract class MC4WP_Dynamic_Content_Tags {
/**
* @var string The escape function for replacement values.
*/
protected $escape_function = null;
/**
* @var array Array of registered dynamic content tags
*/
protected $tags = array();
/**
* Register template tags
*/
protected function register() {
// Global tags can go here
$this->tags['cookie'] = array(
'description' => sprintf( __( 'Data from a cookie.', 'mailchimp-for-wp' ) ),
'callback' => array( $this, 'get_cookie' ),
'example' => "cookie name='my_cookie' default='Default Value'",
);
$this->tags['email'] = array(
'description' => __( 'The email address of the current visitor (if known).', 'mailchimp-for-wp' ),
'callback' => array( $this, 'get_email' ),
);
$this->tags['current_url'] = array(
'description' => __( 'The URL of the page.', 'mailchimp-for-wp' ),
'callback' => 'mc4wp_get_request_url',
);
$this->tags['current_path'] = array(
'description' => __( 'The path of the page.', 'mailchimp-for-wp' ),
'callback' => 'mc4wp_get_request_path',
);
$this->tags['date'] = array(
'description' => sprintf( __( 'The current date. Example: %s.', 'mailchimp-for-wp' ), '<strong>' . gmdate( 'Y/m/d', time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ) . '</strong>' ),
'replacement' => gmdate( 'Y/m/d', time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
);
$this->tags['time'] = array(
'description' => sprintf( __( 'The current time. Example: %s.', 'mailchimp-for-wp' ), '<strong>' . gmdate( 'H:i:s', time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ) . '</strong>' ),
'replacement' => gmdate( 'H:i:s', time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
);
$this->tags['language'] = array(
'description' => sprintf( __( 'The site\'s language. Example: %s.', 'mailchimp-for-wp' ), '<strong>' . get_locale() . '</strong>' ),
'callback' => 'get_locale',
);
$this->tags['ip'] = array(
'description' => sprintf( __( 'The visitor\'s IP address. Example: %s.', 'mailchimp-for-wp' ), '<strong>' . mc4wp_get_request_ip_address() . '</strong>' ),
'callback' => 'mc4wp_get_request_ip_address',
);
$this->tags['user'] = array(
'description' => sprintf( __( 'The property of the currently logged-in user.', 'mailchimp-for-wp' ) ),
'callback' => array( $this, 'get_user_property' ),
'example' => "user property='user_email'",
);
$this->tags['post'] = array(
'description' => sprintf( __( 'Property of the current page or post.', 'mailchimp-for-wp' ) ),
'callback' => array( $this, 'get_post_property' ),
'example' => "post property='ID'",
);
}
/**
* @return array
*/
public function all() {
if ( $this->tags === array() ) {
$this->register();
}
return $this->tags;
}
/**
* @param array $matches
*
* @return string
*/
protected function replace_tag( array $matches ) {
$tags = $this->all();
$tag = $matches[1];
if ( isset( $tags[ $tag ] ) ) {
$config = $tags[ $tag ];
$replacement = '';
if ( isset( $config['replacement'] ) ) {
$replacement = $config['replacement'];
} elseif ( isset( $config['callback'] ) ) {
// parse attributes
$attributes = array();
if ( isset( $matches[2] ) ) {
$attribute_string = $matches[2];
$attributes = shortcode_parse_atts( $attribute_string );
}
// call function
$replacement = call_user_func( $config['callback'], $attributes );
}
if ( is_callable( $this->escape_function ) ) {
$replacement = call_user_func( $this->escape_function, $replacement );
}
return $replacement;
}
// default to not replacing it
return $matches[0];
}
/**
* @param string $string The string containing dynamic content tags.
* @param string $escape_function Escape mode for the replacement value. Leave empty for no escaping.
* @return string
*/
protected function replace( $string, $escape_function = '' ) {
$this->escape_function = $escape_function;
// replace strings like this: {tagname attr="value"}
$string = preg_replace_callback( '/\{(\w+)(\ +(?:(?!\{)[^}\n])+)*\}/', array( $this, 'replace_tag' ), $string );
// call again to take care of nested variables
$string = preg_replace_callback( '/\{(\w+)(\ +(?:(?!\{)[^}\n])+)*\}/', array( $this, 'replace_tag' ), $string );
return $string;
}
/**
* @param string $string
*
* @return string
*/
protected function replace_in_html( $string ) {
return $this->replace( $string, 'esc_html' );
}
/**
* @param string $string
*
* @return string
*/
protected function replace_in_attributes( $string ) {
return $this->replace( $string, 'esc_attr' );
}
/**
* @param string $string
*
* @return string
*/
protected function replace_in_url( $string ) {
return $this->replace( $string, 'urlencode' );
}
/**
* Gets data variable from cookie.
*
* @param array $args
*
* @return string
*/
protected function get_cookie( $args = array() ) {
if ( empty( $args['name'] ) ) {
return '';
}
$name = $args['name'];
$default = isset( $args['default'] ) ? $args['default'] : '';
if ( isset( $_COOKIE[ $name ] ) ) {
return esc_html( stripslashes( $_COOKIE[ $name ] ) );
}
return $default;
}
/*
* Get property of currently logged-in user
*
* @param array $args
*
* @return string
*/
protected function get_user_property( $args = array() ) {
$property = empty( $args['property'] ) ? 'user_email' : $args['property'];
$default = isset( $args['default'] ) ? $args['default'] : '';
$user = wp_get_current_user();
if ( $user instanceof WP_User && isset( $user->{$property} ) ) {
return esc_html( $user->{$property} );
}
return $default;
}
/*
* Get property of viewed post
*
* @param array $args
*
* @return string
*/
protected function get_post_property( $args = array() ) {
global $post;
$property = empty( $args['property'] ) ? 'ID' : $args['property'];
$default = isset( $args['default'] ) ? $args['default'] : '';
if ( $post instanceof WP_Post && isset( $post->{$property} ) ) {
return $post->{$property};
}
return $default;
}
/**
* @return string
*/
protected function get_email() {
if ( ! empty( $_REQUEST['EMAIL'] ) ) {
return $_REQUEST['EMAIL'];
}
// then , try logged-in user
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
return $user->user_email;
}
// TODO: Read from cookie? Or add $_COOKIE support to {data} tag?
return '';
}
}