ption('permalink_structure' ) ) {
$url = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request)));
} else {
$url = preg_replace('%\/page/[0-9]+%', '', home_url(trailingslashit($wp->request)));
}
// WPR Filters
$url = add_query_arg( 'wprfilters', '', $url );
// Min/Max.
if ( isset( $_GET['min_price'] ) ) {
$url = add_query_arg( 'min_price', wc_clean( wp_unslash( $_GET['min_price'] ) ), $url );
}
if ( isset( $_GET['max_price'] ) ) {
$url = add_query_arg( 'max_price', wc_clean( wp_unslash( $_GET['max_price'] ) ), $url );
}
// Search
if ( isset( $_GET['psearch'] ) ) {
$url = add_query_arg( 'psearch', wp_unslash( $_GET['psearch'] ), $url );
}
// Rating
if ( isset( $_GET['filter_rating'] ) ) {
$url = add_query_arg( 'filter_rating', wp_unslash( $_GET['filter_rating'] ), $url );
}
// Categories
if ( isset( $_GET['filter_product_cat'] ) ) {
$url = add_query_arg( 'filter_product_cat', wp_unslash( $_GET['filter_product_cat'] ), $url );
}
// Tags
if ( isset( $_GET['filter_product_tag'] ) ) {
$url = add_query_arg( 'filter_product_tag', wp_unslash( $_GET['filter_product_tag'] ), $url );
}
// All current filters.
if ( $_chosen_attributes = WC()->query->get_layered_nav_chosen_attributes() ) { // phpcs:ignore Squiz.PHP.DisallowMultipleAssignments.FoundInControlStructure, WordPress.CodeAnalysis.AssignmentInCondition.Found
foreach ( $_chosen_attributes as $name => $data ) {
$filter_name = wc_attribute_taxonomy_slug( $name );
if ( ! empty( $data['terms'] ) ) {
$url = add_query_arg( 'filter_' . $filter_name, implode( ',', $data['terms'] ), $url );
}
if ( !empty($settings) ) {
if ( 'or' === $settings['tax_query_type'] || isset($_GET['query_type_' . $filter_name]) ) {
$url = add_query_arg( 'query_type_' . $filter_name, 'or', $url );
}
}
}
}
// Sorting
if ( isset( $_GET['orderby'] ) ) {
$url = add_query_arg( 'orderby', wp_unslash( $_GET['orderby'] ), $url );
}
// Fix URL
// $url = str_replace( '%2C', ',', $url );
return $url;
}
/**
** Get Available Custom Post Types or Taxonomies
*/
public static function get_custom_types_of( $query, $exclude_defaults = true ) {
// Taxonomies
if ( 'tax' === $query ) {
$custom_types = get_taxonomies( [ 'show_in_nav_menus' => true ], 'objects' );
// Post Types
} else {
$custom_types = get_post_types( [ 'show_in_nav_menus' => true ], 'objects' );
}
$custom_type_list = [];
foreach ( $custom_types as $key => $value ) {
if ( $exclude_defaults ) {
if ( $key != 'post' && $key != 'page' && $key != 'category' && $key != 'post_tag' ) {
$custom_type_list[ $key ] = $value->label;
}
} else {
$custom_type_list[ $key ] = $value->label;
}
}
return $custom_type_list;
}
/**
** Get Available WooCommerce Taxonomies
*/
public static function get_woo_taxonomies() {
$taxonomy_list = [];
foreach ( get_object_taxonomies( 'product' ) as $taxonomy_data ) {
$taxonomy = get_taxonomy( $taxonomy_data );
if( $taxonomy->show_ui ) {
$taxonomy_list[ $taxonomy_data ] = $taxonomy->label;
}
}
return $taxonomy_list;
}
/**
** Get All Users
*/
public static function get_users() {
$users = [];
if ( is_admin() ) {
foreach ( get_users() as $key => $user ) {
$users[$user->data->ID] = $user->data->user_nicename;
}
wp_reset_postdata();
}
return $users;
}
/**
** Get User Roles
*/
public static function get_user_roles() {
if ( ! function_exists( 'get_editable_roles' ) ) {
require_once ABSPATH . 'wp-admin/includes/user.php';
}
$r = [];
$editable_roles = array_reverse( get_editable_roles() );
$r['guest'] = esc_html__( 'Guest', 'wpr-addons' );
foreach ( $editable_roles as $role => $details ) {
$r[ $role ] = translate_user_role( $details['name'] );
}
return $r;
}
/**
** Get Terms of Taxonomy
*/
public static function get_terms_by_taxonomy( $slug ) {
if ( ( 'product_cat' === $slug || 'product_tag' === $slug ) && ! class_exists( 'WooCommerce' ) ) {
return;
}
$query = get_terms( $slug, [ 'hide_empty' => false, 'posts_per_page' => -1 ] );
$taxonomies = [];
foreach ( $query as $tax ) {
$taxonomies[$tax->term_id] = $tax->name;
}
wp_reset_postdata();
return $taxonomies;
}
/**
** Get Posts of Post Type
*/
public static function get_posts_by_post_type( $slug ) {
$posts = [];
if ( is_admin() ) {
$query = get_posts( [ 'post_type' => $slug, 'posts_per_page' => -1 ] );
foreach ( $query as $post ) {
$posts[$post->ID] = $post->post_title;
}
wp_reset_postdata();
}
return $posts;
}
/**
** Get Library Template ID
*/
public static function get_template_id( $slug ) {
$template = get_page_by_path( $slug, OBJECT, 'wpr_templates' );
return isset( $template->ID ) ? $template->ID : false;
}
/**
** Get Library Template Slug
*/
public static function get_template_slug( $data, $page, $post_id = '' ) {
if ( is_null($data) ) {
return;
}
$template = NULL;
// Find a Custom Condition
foreach( $data as $id => $conditions ) {
if ( in_array( $page .'/'. $post_id, $conditions) ) {
$template = $id;
} elseif ( in_array( $page .'/all', $conditions) && !in_array( $page .'/'. $post_id, $conditions) ) {
$template = $id;
} elseif ( in_array( $page, $conditions) && !in_array( $page .'/'. $post_id, $conditions) ) {
$template = $id;
}
}
// If a Custom NOT Found, use Global
if ( is_null($template) ) {
foreach( $data as $id => $conditions ) {
if ( in_array( 'global', $conditions) ) {
$template = $id;
}
}
}
// tmp remove after 2 months
$templates_loop = new \WP_Query([
'post_type' => 'wpr_templates',
'name' => $template,
'posts_per_page' => 1,
]);
if ( ! $templates_loop->have_posts() ) {
if ( defined('ICL_LANGUAGE_CODE') ) {
$original_post = get_page_by_path($template, OBJECT, 'wpr_templates');
if ( $original_post ) {
$original_post_id = $original_post->ID;
$language_code = ICL_LANGUAGE_CODE;
$translated_post_id = icl_object_id($original_post_id, 'wpr_templates', false, $language_code);
if ( $translated_post_id ) {
$translated_post = get_post($translated_post_id);
$translated_slug = $translated_post->post_name;
if ( $translated_slug ) {
$template = $translated_slug;
} else {
$template = null;
}
}
}
} else {
$template = null;
}
} else {
$template = $template;
}
return $template;
}
/**
** Get Elementor Template Type
*/
public static function get_elementor_template_type( $id ) {
$post_meta = get_post_meta($id);
$template_type = isset($post_meta['_elementor_template_type'][0]) ? $post_meta['_elementor_template_type'][0] : false;
return $template_type;
}
/**
** Get Royal Template Type
*/
public static function get_wpr_template_type( $id ) {
$post_meta = get_post_meta($id);
$template_type = isset($post_meta['_wpr_template_type'][0]) ? $post_meta['_wpr_template_type'][0] : false;
return $template_type;
}
/**
** Theme Builder Show Widgets on Spacific Pages
*/
public static function show_theme_buider_widget_on( $type ) {
global $post;
$display = false;
if ( Utilities::is_theme_builder_template() ) {
$template_type = Utilities::get_wpr_template_type(get_the_ID());
if ( $type === $template_type ) {
$display = true;
}
$conditions = json_decode(get_option('wpr_single_conditions'));
$front_page = Utilities::get_template_slug($conditions, 'single/front_page', get_the_ID());
$page_404 = Utilities::get_template_slug($conditions, 'single/page_404', get_the_ID());
if ( $post->post_name == $front_page || $post->post_name == $page_404 ) {
$display = false;
}
}
return $display;
}
/**
** Render Elementor Template
*/
public static function render_elementor_template( $slug ) {
$template_id = Utilities::get_template_id( $slug );
$get_elementor_content = \Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $template_id, false );
if ( '' === $get_elementor_content ) {
return;
}
// Render Elementor Template Content
echo ''. $get_elementor_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
** Theme Builder Template Check
*/
public static function is_theme_builder_template() {
$current_page = get_post(get_the_ID());
if ( $current_page ) {
return strpos($current_page->post_name, 'user-archive') !== false || strpos($current_page->post_name, 'user-single') !== false || strpos($current_page->post_name, 'user-product') !== false;
} else {
return false;
}
}
/**
** Blog Archive Page Check
*/
public static function is_blog_archive() {
$result = false;
$front_page = get_option( 'page_on_front' );
$posts_page = get_option( 'page_for_posts' );
if ( is_home() && '0' === $front_page && '0' === $posts_page || (intval($posts_page) === get_queried_object_id() && !is_404()) ) {
$result = true;
}
return $result;
}
/**
** Disable Extra Image Sizes
*/
public static function disable_extra_image_sizes( $new_sizes, $image_meta, $attachment_id ) {
$all_attachments = get_option( 'st_attachments', array() );
// If the cron job is already scheduled, bail.
if ( in_array( $attachment_id, $all_attachments, true ) ) {
return $new_sizes;
}
$all_attachments[] = $attachment_id;
update_option( 'st_attachments', $all_attachments, 'no' );
// Return blank array of sizes to not generate any sizes in this request.
return array();
}
/**
** Regenerate Extra Image Sizes
*/
public static function regenerate_extra_image_sizes() {
$all_attachments = get_option( 'st_attachments', array() );
if ( empty( $all_attachments ) ) {
return;
}
foreach ( $all_attachments as $attachment_id ) {
$file = get_attached_file( $attachment_id );
if ( false !== $file ) {
wp_generate_attachment_metadata( $attachment_id, $file );
}
}
update_option( 'st_attachments', array(), 'no' );
}
// Get Post Sharing Icon
public static function get_post_sharing_icon( $args = [] ) {
$args['url'] = esc_url($args['url']);
if ( 'facebook-f' === $args['network'] ) {
$sharing_url = 'https://www.facebook.com/sharer.php?u='. $args['url'];
$network_title = esc_html__( 'Facebook', 'wpr-addons' );
} elseif ( 'twitter' === $args['network'] ) {
$sharing_url = 'https://twitter.com/intent/tweet?url='. $args['url'];
$network_title = esc_html__( 'Twitter', 'wpr-addons' );
} elseif ( 'linkedin-in' === $args['network'] ) {
$sharing_url = 'https://www.linkedin.com/shareArticle?mini=true&url='. $args['url'] .'&title='. $args['title'] .'&summary='. $args['text'] .'&source='. $args['url'];
$network_title = esc_html__( 'LinkedIn', 'wpr-addons' );
} elseif ( 'pinterest-p' === $args['network'] ) {
// $sharing_url = 'https://www.pinterest.com/pin/find/?url='. $args['url'];
$sharing_url = 'https://www.pinterest.com/pin/create/button/?url='. $args['url'] .'&media='. $args['image'];
$network_title = esc_html__( 'Pinterest', 'wpr-addons' );
} elseif ( 'reddit' === $args['network'] ) {
$sharing_url = 'https://reddit.com/submit?url='. $args['url'] .'&title='. $args['title'];
$network_title = esc_html__( 'Reddit', 'wpr-addons' );
} elseif ( 'tumblr' === $args['network'] ) {
$sharing_url = 'https://tumblr.com/share/link?url='. $args['url'];
$network_title = esc_html__( 'Tumblr', 'wpr-addons' );
} elseif ( 'digg' === $args['network'] ) {
$sharing_url = 'https://digg.com/submit?url='. $args['url'];
$network_title = esc_html__( 'Digg', 'wpr-addons' );
} elseif ( 'xing' === $args['network'] ) {
$sharing_url = 'https://www.xing.com/app/user?op=share&url='. $args['url'];
$network_title = esc_html__( 'Xing', 'wpr-addons' );
} elseif ( 'stumbleupon' === $args['network'] ) {
$sharing_url = 'https://www.stumbleupon.com/submit?url='. $args['url'];
$network_title = esc_html__( 'StumpleUpon', 'wpr-addons' );
} elseif ( 'vk' === $args['network'] ) {
$sharing_url = 'https://vkontakte.ru/share.php?url='. $args['url'] .'&title='. $args['title'] .'&description='. wp_trim_words( $args['text'], 250 ) .'&image='. $args['image'] .'/';
$network_title = esc_html__( 'vKontakte', 'wpr-addons' );
} elseif ( 'odnoklassniki' === $args['network'] ) {
$sharing_url = 'http://odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl='. $args['url'];
$network_title = esc_html__( 'OdnoKlassniki', 'wpr-addons' );
} elseif ( 'get-pocket' === $args['network'] ) {
$sharing_url = 'https://getpocket.com/edit?url='. $args['url'];
$network_title = esc_html__( 'Pocket', 'wpr-addons' );
} elseif ( 'skype' === $args['network'] ) {
$sharing_url = 'https://web.skype.com/share?url='. $args['url'];
$network_title = esc_html__( 'Skype', 'wpr-addons' );
} elseif ( 'whatsapp' === $args['network'] ) {
if ( 'yes' === $args['show_whatsapp_title'] && 'yes' == $args['show_whatsapp_excerpt'] ) {
$sharing_url = 'https://api.whatsapp.com/send?text=*'. $args['title'] .'*%0a'. wp_strip_all_tags($args['text']) .'%0a'. $args['url'];
} else if ( 'yes' === $args['show_whatsapp_title'] ) {
$sharing_url = 'https://api.whatsapp.com/send?text=*'. $args['title'] .'*%0a'. $args['url'];
} else if ( 'yes' === $args['show_whatsapp_excerpt'] ) {
$sharing_url = 'https://api.whatsapp.com/send?text=*'. wp_strip_all_tags($args['text']) .'%0a'. $args['url'];
} else {
$sharing_url = 'https://api.whatsapp.com/send?text='. $args['url'];
}
$network_title = esc_html__( 'WhatsApp', 'wpr-addons' );
} elseif ( 'telegram' === $args['network'] ) {
$sharing_url = 'https://telegram.me/share/url?url='. $args['url'] .'&text='. $args['text'];
$network_title = esc_html__( 'Telegram', 'wpr-addons' );
} elseif ( 'delicious' === $args['network'] ) {
$sharing_url = 'https://del.icio.us/save?url='. $args['url'] .'&title={title}';
$network_title = esc_html__( 'Delicious', 'wpr-addons' );
} elseif ( 'envelope' === $args['network'] ) {
$sharing_url = 'mailto:?subject='. $args['title'] .'&body='. $args['url'];
$network_title = esc_html__( 'Email', 'wpr-addons' );
} elseif ( 'print' === $args['network'] ) {
$sharing_url = 'javascript:window.print()';
$network_title = esc_html__( 'Print', 'wpr-addons' );
} else {
$sharing_url = '';
$network_title = '';
}
$sharing_url = 'print' === $args['network'] ? $sharing_url : $sharing_url;
$output = '';
if ( '' !== $network_title ) {
$output .= '';
// Tooltip
$output .= 'yes' === $args['tooltip'] ? ''. esc_html( $network_title ) .'' : '';
// Category
if ( 'envelope' === $args['network'] || 'print' === $args['network'] ) {
$category = 'fas';
} else {
$category = 'fab';
}
// Icon
if ( 'yes' === $args['icons'] ) {
$output .= '';
}
// Label
if ( isset( $args['labels'] ) && 'yes' === $args['labels'] ) {
$label = isset( $args['custom_label'] ) && '' !== $args['custom_label'] ? $args['custom_label'] : $network_title;
$output .= ''. esc_html( $label ) .'';
}
$output .= '';
}
return $output;
}
/**
** Filter oEmbed Results
*/
public static function filter_oembed_results( $html ) {
// Filter
preg_match( '/<\/iframe>/isU', $html, $matches );
// Return URL
return $matches[1] .'&auto_play=true';
}
/**
** Get Post Custom Meta Keys
*/
public static function get_custom_meta_keys() { // needs ajaxifying
$data = [];
$options = [];
$merged_meta_keys = [];
$post_types = Utilities::get_custom_types_of( 'post', false );
foreach ( $post_types as $post_type_slug => $post_type_name ) {
$data[ $post_type_slug ] = [];
$posts = get_posts( [ 'post_type' => $post_type_slug, 'posts_per_page' => -1 ] );
foreach ( $posts as $key => $post ) {
$meta_keys = get_post_custom_keys( $post->ID );
if ( ! empty($meta_keys) ) {
for ( $i = 0; $i < count( $meta_keys ); $i++ ) {
if ( '_' !== substr( $meta_keys[$i], 0, 1 ) ) {
array_push( $data[$post_type_slug], $meta_keys[$i] );
}
}
}
}
$data[ $post_type_slug ] = array_unique( $data[ $post_type_slug ] );
}
foreach ( $data as $array ) {
$merged_meta_keys = array_unique( array_merge( $merged_meta_keys, $array ) );
}
// Rekey
$merged_meta_keys = array_values($merged_meta_keys);
for ( $i = 0; $i < count( $merged_meta_keys ); $i++ ) {
$options[ $merged_meta_keys[$i] ] = $merged_meta_keys[$i];
}
return [ $data, $options ];
}
/**
** Get Taxonomy Custom Meta Keys
*/
public static function get_custom_meta_keys_tax() { // needs ajaxifying
$data = [];
$options = [];
$merged_meta_keys = [];
$tax_types = Utilities::get_custom_types_of( 'tax', false );
foreach ( $tax_types as $taxonomy_slug => $post_type_name ) {
$data[ $taxonomy_slug ] = [];
$taxonomies = get_terms( $taxonomy_slug );
foreach ( $taxonomies as $key => $tax ) {
$meta_keys = get_term_meta( $tax->term_id );
$meta_keys = array_keys($meta_keys);
if ( ! empty($meta_keys) ) {
for ( $i = 0; $i < count( $meta_keys ); $i++ ) {
if ( '_' !== substr( $meta_keys[$i], 0, 1 ) ) {
array_push( $data[$taxonomy_slug], $meta_keys[$i] );
}
}
}
}
$data[ $taxonomy_slug ] = array_unique( $data[ $taxonomy_slug ] );
}
foreach ( $data as $array ) {
$merged_meta_keys = array_unique( array_merge( $merged_meta_keys, $array ) );
}
// Rekey
$merged_meta_keys = array_values($merged_meta_keys);
for ( $i = 0; $i < count( $merged_meta_keys ); $i++ ) {
$options[ $merged_meta_keys[$i] ] = $merged_meta_keys[$i];
}
return [ $data, $options ];
}
/**
** Get SVG Icons Array
*/
public static function get_svg_icons_array( $stack, $fa_icons ) {
$svg_icons = [];
if ( 'arrows' === $stack ) {
$svg_icons['svg-angle-1-left'] = esc_html__( 'Angle', 'wpr-addons' );
$svg_icons['svg-angle-2-left'] = esc_html__( 'Angle Bold', 'wpr-addons' );
$svg_icons['svg-angle-3-left'] = esc_html__( 'Angle Bold Round', 'wpr-addons' );
$svg_icons['svg-angle-4-left'] = esc_html__( 'Angle Plane', 'wpr-addons' );
$svg_icons['svg-arrow-1-left'] = esc_html__( 'Arrow', 'wpr-addons' );
$svg_icons['svg-arrow-2-left'] = esc_html__( 'Arrow Bold', 'wpr-addons' );
$svg_icons['svg-arrow-3-left'] = esc_html__( 'Arrow Bold Round', 'wpr-addons' );
$svg_icons['svg-arrow-4-left'] = esc_html__( 'Arrow Caret', 'wpr-addons' );
} elseif ( 'blockquote' === $stack ) {
$svg_icons['svg-blockquote-1'] = esc_html__( 'Blockquote Round', 'wpr-addons' );
$svg_icons['svg-blockquote-2'] = esc_html__( 'Blockquote ST', 'wpr-addons' );
$svg_icons['svg-blockquote-3'] = esc_html__( 'Blockquote BS', 'wpr-addons' );
$svg_icons['svg-blockquote-4'] = esc_html__( 'Blockquote Edges', 'wpr-addons' );
$svg_icons['svg-blockquote-5'] = esc_html__( 'Blockquote Quad', 'wpr-addons' );
} elseif ( 'sharing' === $stack ) {
// $svg_icons['svg-sharing-1'] = esc_html__( 'sharing 1', 'wpr-addons' );
// $svg_icons['svg-sharing-2'] = esc_html__( 'sharing 2', 'wpr-addons' );
}
// Merge FontAwesome and SVG icons
return array_merge( $fa_icons, $svg_icons );
}
/**
** Get SVG Icon
*/
public static function get_svg_icon( $icon, $dir ) {
$style_attr = '';
// Rotate Right
if ( 'right' === $dir ) {
$style_attr = 'style="transform: rotate(180deg); -webkit-transform: rotate(180deg);" ';
}
$icons = [
// Arrows
'svg-angle-1-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-angle-2-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-angle-3-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-angle-4-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-arrow-1-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-arrow-2-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-arrow-3-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'svg-arrow-4-left' => '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
// Blockquote
'svg-blockquote-1' => '',
'svg-blockquote-2' => '',
'svg-blockquote-3' => '',
'svg-blockquote-4' => '',
'svg-blockquote-5' => '',
// Sharing
'svg-sharing-1' => '',
'svg-sharing-2' => '',
];
return $icons[$icon];
}
/**
** Get WPR Icon
*/
public static function get_wpr_icon( $icon, $dir ) {
if ( false !== strpos( $icon, 'svg-' ) ) {
return Utilities::get_svg_icon( $icon, $dir );
} elseif ( false !== strpos( $icon, 'fa-' ) ) {
$dir = '' !== $dir ? '-'. $dir : '';
return wp_kses('', [
'i' => [
'class' => []
]
]);
} else {
return '';
}
}
/**
** Mailchimp AJAX Subscribe
*/
public static function ajax_mailchimp_subscribe() {
// API Key
$api_key = !empty(get_option('wpr_mailchimp_api_key')) && false != get_option('wpr_mailchimp_api_key') ? get_option('wpr_mailchimp_api_key') : ''; // GOGA
$api_key_sufix = explode( '-', $api_key )[1];
// List ID
$list_id = isset($_POST['listId']) ? sanitize_text_field(wp_unslash($_POST['listId'])) : '';
// Get Available Fileds (PHPCS - fields are sanitized later on input)
$available_fields = isset($_POST['fields']) ? $_POST['fields'] : []; // phpcs:ignore
wp_parse_str( $available_fields, $fields );
// Merge Additional Fields
$merge_fields = array(
'FNAME' => !empty( $fields['wpr_mailchimp_firstname'] ) ? sanitize_text_field($fields['wpr_mailchimp_firstname']) : '',
'LNAME' => !empty( $fields['wpr_mailchimp_lastname'] ) ? sanitize_text_field($fields['wpr_mailchimp_lastname']) : '',
'PHONE' => !empty ( $fields['wpr_mailchimp_phone_number'] ) ? sanitize_text_field($fields['wpr_mailchimp_phone_number']) : '',
);
// API URL
$api_url = 'https://'. $api_key_sufix .'.api.mailchimp.com/3.0/lists/'. $list_id .'/members/'. md5(strtolower(sanitize_text_field($fields['wpr_mailchimp_email'])));
// API Args
$api_args = [
'method' => 'PUT',
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'apikey '. $api_key,
],
'body' => json_encode([
'email_address' => sanitize_text_field($fields[ 'wpr_mailchimp_email' ]),
'status' => 'subscribed',
'merge_fields' => $merge_fields,
]),
];
// Send Request
$request = wp_remote_post( $api_url, $api_args );
if ( ! is_wp_error($request) ) {
$request = json_decode( wp_remote_retrieve_body($request) );
// Set Status
if ( ! empty($request) ) {
if ($request->status == 'subscribed') {
wp_send_json([ 'status' => 'subscribed' ]);
} else {
wp_send_json([ 'status' => $request->title ]);
}
}
}
}
/**
** Mailchimp - Get Lists
*/
public static function get_mailchimp_lists() {
$api_key = get_option('wpr_mailchimp_api_key', '');
$mailchimp_list = [
'def' => esc_html__( 'Select List', 'wpr-addons' )
];
if ( '' === $api_key ) {
return $mailchimp_list;
} else {
$url = 'https://'. substr( $api_key, strpos( $api_key, '-' ) + 1 ) .'.api.mailchimp.com/3.0/lists/';
$args = [ 'headers' => [ 'Authorization' => 'Basic ' . base64_encode( 'user:'. $api_key ) ] ];
$response = wp_remote_get( $url, $args );
$body = json_decode($response['body']);
if ( ! empty( $body->lists ) ) {
foreach ( $body->lists as $list ) {
$mailchimp_list[$list->id] = $list->name .' ('. $list->stats->member_count .')';
}
}
return $mailchimp_list;
}
}
// Needs further logic
public static function get_mailchimp_groups() {
$groups_array = ['def' => 'Select Group'];
foreach (self::get_mailchimp_lists() as $key => $value ) {
if ( 'def' === $key ) {
continue;
}
$audience = $key; // How to get settin
$api_key = get_option('wpr_mailchimp_api_key');
$url = 'https://'. substr( $api_key, strpos( $api_key, '-' ) + 1 ) .'.api.mailchimp.com/3.0/lists/'.$audience.'/interest-categories';
$args = [ 'headers' => [ 'Authorization' => 'Basic ' . base64_encode( 'user:'. $api_key ) ] ];
$response = wp_remote_get( $url, $args );
foreach ( json_decode($response['body'])->categories as $key => $value ) {
$group_name = $value->title;
$group_id = $value->id;
$url = 'https://'. substr( $api_key, strpos( $api_key, '-' ) + 1 ) .'.api.mailchimp.com/3.0/lists/'.$audience.'/interest-categories/'. $value->id .'/interests';
$args = [ 'headers' => [ 'Authorization' => 'Basic ' . base64_encode( 'user:'. $api_key ) ] ];
$response = wp_remote_get( $url, $args );
foreach (json_decode($response['body'])->interests as $key => $value ) {
// var_dump($group_name, $group_id);
// var_dump($group_name, $group_id, $value->id, $value->name);
$groups_array[$value->id] = $value->name;
}
}
}
return $groups_array;
}
/**
** WPR Animation Timings
*/
public static function wpr_animation_timings() {
$timing_functions = [
'ease-default' => 'Default',
'linear' => 'Linear',
'ease-in' => 'Ease In',
'ease-out' => 'Ease Out',
'pro-eio' => 'EI Out (Pro)',
'pro-eiqd' => 'EI Quad (Pro)',
'pro-eicb' => 'EI Cubic (Pro)',
'pro-eiqrt' => 'EI Quart (Pro)',
'pro-eiqnt' => 'EI Quint (Pro)',
'pro-eisn' => 'EI Sine (Pro)',
'pro-eiex' => 'EI Expo (Pro)',
'pro-eicr' => 'EI Circ (Pro)',
'pro-eibk' => 'EI Back (Pro)',
'pro-eoqd' => 'EO Quad (Pro)',
'pro-eocb' => 'EO Cubic (Pro)',
'pro-eoqrt' => 'EO Quart (Pro)',
'pro-eoqnt' => 'EO Quint (Pro)',
'pro-eosn' => 'EO Sine (Pro)',
'pro-eoex' => 'EO Expo (Pro)',
'pro-eocr' => 'EO Circ (Pro)',
'pro-eobk' => 'EO Back (Pro)',
'pro-eioqd' => 'EIO Quad (Pro)',
'pro-eiocb' => 'EIO Cubic (Pro)',
'pro-eioqrt' => 'EIO Quart (Pro)',
'pro-eioqnt' => 'EIO Quint (Pro)',
'pro-eiosn' => 'EIO Sine (Pro)',
'pro-eioex' => 'EIO Expo (Pro)',
'pro-eiocr' => 'EIO Circ (Pro)',
'pro-eiobk' => 'EIO Back (Pro)',
];
if ( wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION') ) {
$timing_functions = \WprAddonsPro\Includes\Controls\WPR_Control_Animations_Pro::wpr_animation_timings();
}
return $timing_functions;
}
public static function wpr_animation_timing_pro_conditions() {
return ['pro-eio','pro-eiqd','pro-eicb','pro-eiqrt','pro-eiqnt','pro-eisn','pro-eiex','pro-eicr','pro-eibk','pro-eoqd','pro-eocb','pro-eoqrt','pro-eoqnt','pro-eosn','pro-eoex','pro-eocr','pro-eobk','pro-eioqd','pro-eiocb','pro-eioqrt','pro-eioqnt','pro-eiosn','pro-eioex','pro-eiocr','pro-eiobk'];
}
/**
** WPR Library Button
*/
public static function wpr_library_buttons( $module, $controls_manager, $tutorial_url = '' ) {
if ( empty(get_option('wpr_wl_plugin_links')) ) {
if ( '' !== $tutorial_url ) {
$tutorial_link = ''. esc_html__( 'Watch Video Tutorial ', 'wpr-addons' ) .'';
} else {
$tutorial_link = '';
}
$module->add_control(
'wpr_library_buttons',
[
'raw' => ''. $tutorial_link,
'type' => $controls_manager,
]
);
}
}
/**
** Upgrade to Pro Notice
*/
public static function upgrade_pro_notice( $module, $controls_manager, $widget, $option, $condition = [] ) {
if ( wpr_fs()->can_use_premium_code() ) {
return;
}
$url = 'https://royal-elementor-addons.com/?ref=rea-plugin-panel-'. $widget .'-upgrade-pro#purchasepro';
$module->add_control(
$option .'_pro_notice',
[
'raw' => 'This option is available
in the Pro version and above.',
// 'raw' => 'This option is available
in the Pro version',
'type' => $controls_manager,
'content_classes' => 'wpr-pro-notice',
'condition' => [
$option => $condition,
]
]
);
}
public static function upgrade_expert_notice( $module, $controls_manager, $widget, $option, $condition = [] ) {
if ( wpr_fs()->is_plan( 'expert' ) ) {
return;
}
$url = 'https://royal-elementor-addons.com/?ref=rea-plugin-panel-'. $widget .'-upgrade-expert#purchasepro';
$module->add_control(
$option .'_expert_notice',
[
'raw' => 'This option is available
in the Expert version',
// 'raw' => 'This option is available
in the Pro version',
'type' => $controls_manager,
'content_classes' => 'wpr-pro-notice',
'condition' => [
$option => $condition,
]
]
);
}
/**
** Request Feature Section
*/
public static function wpr_add_section_request_feature( $module, $raw_html, $tab ) {
$module->start_controls_section(
'section_request_new_feature',
[
'label' => __( 'Request Feature', 'wpr-addons' ),
'tab' => $tab,
]
);
$module->add_control(
'request_new_feature',
[
'type' => $raw_html,
'raw' => __( 'Missing an Option, have a New Widget or any kind of Feature Idea? Please share it with us and lets discuss. Request New Feature ', 'wpr-addons' ),
]
);
$module->end_controls_section(); // End Controls Section
}
/**
** Pro Features List Section
*/
public static function pro_features_list_section( $module, $section, $type, $widget, $features ) {
if ( wpr_fs()->can_use_premium_code() ) {
return;
}
if ( '' === $section ) {
$module->start_controls_section(
'pro_features_section',
[
'label' => 'Pro Features ',
]
);
} else {
$module->start_controls_section(
'pro_features_section',
[
'label' => 'Pro Features ',
'tab' => $section,
]
);
}
$list_html = '';
for ($i=0; $i < count($features); $i++) {
$list_html .= ''. $features[$i] .'';
}
$module->add_control(
'pro_features_list',
[
'type' => $type,
'raw' => '
Get Pro version',
'content_classes' => 'wpr-pro-features-list',
]
);
$module->end_controls_section();
}
// Add two new functions for handling cookies
public function get_wishlist_from_cookie() {
if (isset($_COOKIE['wpr_wishlist'])) {
return json_decode(stripslashes($_COOKIE['wpr_wishlist']), true);
} else if ( isset($_COOKIE['wpr_wishlist_'. get_current_blog_id() .'']) ) {
return json_decode(stripslashes($_COOKIE['wpr_wishlist_'. get_current_blog_id() .'']), true);
}
return array();
}
// Client IP for form submission
public static function get_client_ip() {
$server_ip_keys = [
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'REMOTE_ADDR',
];
foreach ( $server_ip_keys as $key ) {
$value = self::_unstable_get_super_global_value( $_SERVER, $key );
if ( $value && filter_var( $value, FILTER_VALIDATE_IP ) ) {
return $value;
}
}
// Fallback local ip.
return '127.0.0.1';
}
// For get_client_ip
public static function _unstable_get_super_global_value( $super_global, $key ) {
if ( ! isset( $super_global[ $key ] ) ) {
return null;
}
if ( $_FILES === $super_global ) {
$super_global[ $key ]['name'] = sanitize_file_name( $super_global[ $key ]['name'] );
return $super_global[ $key ];
}
return wp_kses_post_deep( wp_unslash( $super_global[ $key ] ) );
}
/**
** Check for New Free Users
*/
public static function is_new_free_user() {
return !wpr_fs()->can_use_premium_code() && (intval(get_option('royal_elementor_addons_activation_time')) > 1649247746);
}
// public static function is_new_free_user2() {
// return !wpr_fs()->can_use_premium_code() && (intval(get_option('royal_elementor_addons_activation_time')) > 1670317149);
// }
// public static function is_old_pro_user_or_expert() {
// return wpr_fs()->is_plan( 'expert' ) || (wpr_fs()->is_plan( 'pro' ) && (intval(get_option('royal_elementor_addons_pro_activation_time')) < 1680264265));
// }
// public static function is_new_pro_user() {
// return wpr_fs()->is_plan( 'pro' ) && (intval(get_option('royal_elementor_addons_pro_activation_time')) > 1680264265);
// }
/**
** HTML Tags Whitelist
*/
public static function validate_html_tags_wl( $setting, $default, $tags_whitelist ) {
$value = $setting;
if ( ! in_array($value, $tags_whitelist) ) {
$value = $default;
}
return $value;
}
}