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' => '
'. esc_html__( 'Widget Preview', 'wpr-addons' ) .' '. esc_html__( 'Predefined Styles', 'wpr-addons' ) .'
'. $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; } }