' . 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 ( defined('WPR_ADDONS_PRO_VERSION') && wpr_fs()->can_use_premium_code() ) {
$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 ( defined('WPR_ADDONS_PRO_VERSION') && 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 ( defined('WPR_ADDONS_PRO_VERSION') && 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 ( defined('WPR_ADDONS_PRO_VERSION') && 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 (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && (intval(get_option('royal_elementor_addons_activation_time')) > 1649247746);
}
// public static function is_new_free_user2() {
// return (!defined('WPR_ADDONS_PRO_VERSION') || !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(strtolower($value), $tags_whitelist) ) {
$value = $default;
}
return $value;
}
public static function get_all_breakpoints( $type = 'assoc' ) {
$devices = array(
'desktop' => __( 'Desktop', 'elementor' ),
);
if (
class_exists( '\Elementor\Plugin' ) &&
isset( \Elementor\Plugin::$instance->breakpoints ) &&
method_exists( \Elementor\Plugin::$instance->breakpoints, 'get_active_breakpoints' )
) {
$active_breakpoints = \Elementor\Plugin::$instance->breakpoints->get_active_breakpoints();
if ( is_array( $active_breakpoints ) ) {
foreach ( $active_breakpoints as $key => $breakpoint ) {
if ( 'desktop' === $key ) {
continue;
}
$label = '';
if ( is_object( $breakpoint ) && method_exists( $breakpoint, 'get_label' ) ) {
$label = $breakpoint->get_label();
}
if ( '' === $label ) {
$label = ucwords( str_replace( '_', ' ', $key ) );
}
$devices[ $key ] = $label;
}
}
}
if ( ! isset( $devices['tablet'] ) ) {
$devices['tablet'] = __( 'Tablet', 'elementor' );
}
if ( ! isset( $devices['mobile'] ) ) {
$devices['mobile'] = __( 'Mobile', 'elementor' );
}
$order = array(
'widescreen',
'desktop',
'laptop',
'tablet_extra',
'tablet',
'mobile_extra',
'mobile',
);
$ordered_devices = array();
foreach ( $order as $breakpoint_key ) {
if ( isset( $devices[ $breakpoint_key ] ) ) {
$ordered_devices[ $breakpoint_key ] = $devices[ $breakpoint_key ];
}
}
foreach ( $devices as $breakpoint_key => $label ) {
if ( ! isset( $ordered_devices[ $breakpoint_key ] ) ) {
$ordered_devices[ $breakpoint_key ] = $label;
}
}
return ( 'keys' === $type ) ? array_keys( $ordered_devices ) : $ordered_devices;
}
}