css_check = 0; } public static function get_instance( $new = false ) { if ( $new || null === self::$instance ) { self::$instance = new self(); } return self::$instance; } public static function vincentyGreatCircleDistance( $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000 ) { // convert from degrees to radians $latFrom = deg2rad( floatval( $latitudeFrom ) ); $lonFrom = deg2rad( floatval( $longitudeFrom ) ); $latTo = deg2rad( floatval( $latitudeTo ) ); $lonTo = deg2rad( floatval( $longitudeTo ) ); $lonDelta = $lonTo - $lonFrom; $a = pow( cos( $latTo ) * sin( $lonDelta ), 2 ) + pow( cos( $latFrom ) * sin( $latTo ) - sin( $latFrom ) * cos( $latTo ) * cos( $lonDelta ), 2 ); $b = sin( $latFrom ) * sin( $latTo ) + cos( $latFrom ) * cos( $latTo ) * cos( $lonDelta ); $angle = atan2( sqrt( $a ), $b ); return $angle * $earthRadius; } public static function object_to_array( $obj ) { //only process if it's an object or array being passed to the function if ( is_object( $obj ) || is_array( $obj ) ) { $ret = (array) $obj; foreach ( $ret as &$item ) { //recursively process EACH element regardless of type $item = self::object_to_array( $item ); } return $ret; } //otherwise (i.e. for scalar values) return without modification else { return $obj; } } public static function formatStoreAddress( $address ) { if ( is_array( $address ) && ! empty( $address ) ) { $o_address = isset( $address['address'] ) && ! empty( $address['address'] ) ? $address['address'] : ''; if ( isset( $address['city'] ) && ! empty( $address['city'] ) ) { $o_address .= empty( $o_address ) ? $address['city'] : ', ' . $address['city']; } if ( isset( $address['state'] ) && ! empty( $address['state'] ) ) { $o_address .= empty( $o_address ) ? $address['state'] : ', ' . $address['state']; } if ( isset( $address['country'] ) && ! empty( $address['country'] ) ) { $o_address .= empty( $o_address ) ? $address['country'] : ', ' . $address['country']; } return $o_address; } return ''; } public static function formatStoreOpening( $opening ) { if ( ! is_array( $opening ) || empty( $opening ) ) { return ''; } $same_day = ''; $same_time = 0; $time_duplicate = array_count_values( $opening ); foreach ( $time_duplicate as $t_key => $t_val ) { if ( $t_val < 5 ) { continue; } if ( $t_val == 7 ) { return [ [ '', self::formatBeautyTime( $t_key, true ) ] ]; } $change_time = false; $change_count = 0; foreach ( $opening as $o_key => $o_val ) { if ( $change_time === false ) { $change_time = $o_val; continue; } if ( $change_time != $o_val ) { $change_count ++; $change_time = $o_val; } } if ( $change_count <= 1 ) { $short_days = []; $short_day = []; $temp_time = ''; foreach ( $opening as $s_key => $s_val ) { if ( empty( $short_day ) ) { $short_day = [ self::formatDayName( $s_key ), self::formatBeautyTime( $s_val ) ]; $temp_time = $s_val; continue; } if ( $temp_time != $s_val ) { $short_days[] = $short_day; $short_day = [ self::formatDayName( $s_key ), self::formatBeautyTime( $s_val ) ]; $temp_time = $s_val; continue; } else { $short_day[0] = self::formatDayRange( $short_day[0], self::formatDayName( $s_key ) ); } if ( $s_key = 'sunday' && $change_count == 1 && count( $short_days ) == 1 ) { $short_days[] = $short_day; } } return $short_days; } } $regular_day = []; foreach ( $opening as $r_key => $r_val ) { $regular_day[] = [ self::formatDayName( $r_key ) . ':', self::formatBeautyTime( $r_val ) ]; } return $regular_day; } public static function splitStoreOpening( $opening ) { if ( ! is_array( $opening ) || empty( $opening ) ) { return ''; } $r_opening = []; $is_open_store = false; foreach ( $opening as $o_key => $o_val ) { $d_opening = []; $d_opening[0] = self::formatFullDayName( $o_key ); $split_part = explode( '-', $o_val ); if ( ! empty( $split_part ) && is_array( $split_part ) && 2 == count( $split_part ) ) { $d_opening[1] = $split_part[0]; $d_opening[2] = $split_part[1]; $is_open_store = true; } else { $d_opening[1] = $o_val; $is_open_store = false; } $r_opening[] = $d_opening; } if ( ! $is_open_store ) { return array( array( esc_html__( 'Close', '9map-map-multi-locations' ) ) ); } return $r_opening; } public static function formatBeautyTime( $time, $all_day = false ) { if ( empty( $time ) ) { if ( $all_day ) { return ''; } else { return esc_html__( 'Close', '9map-map-multi-locations' ); } } if ( ! strpos( $time, 'm' ) && ! strpos( $time, 'M' ) ) { return $time; } $split_part = explode( '-', $time ); $o_time = ''; foreach ( $split_part as $s_time ) { $hour_part = explode( ':', $s_time ); foreach ( $hour_part as $h_pos => $h_time ) { switch ( $h_pos ) { case 0: if ( 0 == strpos( $h_time, '0' ) ) { $o_time .= empty( $o_time ) ? substr( $h_time, 1, 1 ) : ' - ' . substr( $h_time, 1, 1 ); } else { $o_time .= empty( $o_time ) ? $h_time : ' - ' . $h_time; } break; case 1: if ( '00' != $h_time ) { $o_time .= ':' . $h_time; } break; case 2: $o_time .= $h_time; default: } } } return $o_time; } public static function formatDayName( $day ) { if ( empty( $day ) ) { return ''; } switch ( $day ) { case 'monday': return 'MON'; case 'tuesday': return 'TUS'; case 'wednesday': return 'WED'; case 'thursday': return 'THU'; case 'friday': return 'FRI'; case 'saturday': return 'SAR'; default: return 'SUN'; } } public static function formatFullDayName( $day ) { if ( empty( $day ) ) { return ''; } switch ( $day ) { case 'monday': return 'Monday'; case 'tuesday': return 'Tuesday'; case 'wednesday': return 'Wednesday'; case 'thursday': return 'Thursday'; case 'friday': return 'Friday'; case 'saturday': return 'Saturday'; default: return 'Sunday'; } } public static function formatDayRange( $day, $next ) { if ( empty( $day ) ) { return ''; } if ( strlen( $day ) > 3 ) { $day = substr( $day, 0, 3 ); } $day .= '-' . $next; return $day . ':'; } public static function getFormattedStores( $stores, $category, $location, $radius, $unit = 'km' ) { $o_stores = []; foreach ( $stores as $store ) { $store_category = get_the_terms( $store->ID, 'nimap_store_category' ); $format_category = []; if ( $store_category && is_array( $store_category ) && ! empty( $store_category ) ) { $exits_cat = false; foreach ( $store_category as $cat_data ) { if ( $category && $cat_data->term_id == $category ) { $exits_cat = true; } $format_category[ $cat_data->term_id ] = $cat_data->name; } if ( $category && ! $exits_cat ) { continue; } } $store_title = get_the_title( $store->ID ) ?: ''; $store_address = get_post_meta( $store->ID, 'nimap_store_address', true ) ?: ''; $store_address = maybe_unserialize( $store_address ); $s_distance = 0; if ( $store_address && is_array( $store_address ) ) { $s_distance = self::getStoreDistance( $store_address, $location, $unit ); if ( ! $radius || $s_distance < 0 || $s_distance > $radius ) { continue; } } $store_description = get_post_meta( $store->ID, 'nimap_store_description', true ) ?: ''; $store_information = get_post_meta( $store->ID, 'nimap_store_information', true ) ?: ''; $store_opening = get_post_meta( $store->ID, 'nimap_store_opening', true ) ?: ''; $store_image = get_post_meta( $store->ID, 'nimap_store_image', true ) ?: ''; $store_image = self::getStoreThumbnail( $store_image, $store_title ); $store_information = maybe_unserialize( $store_information ); $store_opening = maybe_unserialize( $store_opening ); $store_opening = self::formatStoreOpening( $store_opening ); $category_render = self::printCategory( $format_category ); $c_store = array( 'id' => $store->ID, 'title' => $store_title, 'address' => $store_address['address'], 'image' => $store_image['info'], 'city' => $store_address['city'], 'state' => isset( $store_address['state'] ) ? $store_address['state'] : '', 'country' => $store_address['country'], 'zip' => $store_address['zip'], 'phone' => $store_information['phone'], 'fax' => $store_information['fax'], 'website' => $store_information['website'], 'url' => $store_information['website'], 'custom' => $store_information['custom'], 'email' => $store_information['email'], 'description' => $store_description, 'opening' => self::printOpening( $store_opening ), 'category' => $category_render[0], 'category_r' => $category_render[1], 'lat' => $store_address['latitude'], 'lng' => $store_address['longitude'], 'distance' => $s_distance, ); $o_stores[] = $c_store; } return $o_stores; } public static function getStoreDistance( $store, $location, $unit ) { if ( empty( $store ) || ! is_array( $store ) || ! isset( $store['latitude'] ) || ! isset( $store['longitude'] ) || empty( $location ) || ! is_array( $location ) || ! isset( $location['lng'] ) || ! isset( $location['lat'] ) ) { return - 1; } $l_distance = (float) NIMAP_MULTI_LOCATOR_Function::vincentyGreatCircleDistance( $store['latitude'], $store['longitude'], $location['lat'], $location['lng'], $unit ); $f_distance = round( $l_distance, 2 ); return $f_distance; } public static function sortStoreResults( $stores, $sort = 'distance', $index = 0, $count = 99 ) { $d_sort = array_column( $stores, $sort ); array_multisort( $d_sort, SORT_ASC, $stores ); if ( $count && count( $stores ) > $count ) { $o_stores = array_slice( $stores, $index, $count ); } else { $o_stores = $stores; } return $o_stores; } public static function renderPagingResults( $stores_count, $current_page, $number_post ) { if ( $stores_count <= $number_post ) { return ''; } $total_page = $stores_count > $number_post ? $stores_count % $number_post == 0 ? intdiv( $stores_count, $number_post ) : intdiv( $stores_count, $number_post ) + 1 : 1; $o_html = ''; ob_start(); for ( $p = 1; $p <= $total_page; $p ++ ) { if ( $p == 1 || $p == $total_page ) { ?>
$current_page - 2 ) { ?>
...
$current_page + 2 ) { continue; } if ( $p < $current_page + 2 ) { ?>
...
$cat_name ) { // $f_category .= ''; $f_category .= '' . esc_html( $cat_name ) . ''; // $f_category .= ''; $raw_category .= $raw_category == '' ? $cat_name : ', ' . $cat_name; } return [ $f_category, $raw_category ]; } public static function printOpening( $format_opening, $formatted = false ) { $f_opening = ''; if ( ! $format_opening ) { $f_opening .= '' . esc_html( '' ) . ''; } foreach ( $format_opening as $open_day ) { $f_opening .= '
'; $f_opening .= '' . esc_html( $open_day[0] ) . ' '; if ( 3 == count( $open_day ) ) { $f_opening .= '' . esc_html( $open_day[1] ) . ''; $f_opening .= '–'; $f_opening .= '' . esc_html( $open_day[2] ) . ''; } elseif ( 2 == count( $open_day ) ) { if ( $open_day[1] == '' && $open_day[0] == '' ) { $f_opening = esc_html__( 'Close', '9map-map-multi-locations' ); } else { $f_opening .= '' . esc_html( $open_day[1] ) . ''; } } $f_opening .= empty( $f_opening ) ? '' : '
'; } return $f_opening; } public static function getStoreThumbnail( $image_id, $store_name, $size = array( 50, 50 ) ) { $attr = array( 'class' => 'nimap-store-thumb', 'alt' => $store_name ); $thumb = []; if ( ! empty( $image_id ) ) { $image_src = wp_get_attachment_image_src( $image_id, apply_filters( 'nimap_thumbnail_size', 'thumbnail' ) ); $image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true ); } else { // $image_src[0] = wc_placeholder_img_src( 'woocommerce_single' ); $image_src[0] = ''; $image_alt = esc_html__( 'Awaiting product image', '9map-map-multi-locations' ); } $no_image = empty( $image_src[0] ) ? ' nimap-store-no-image' : ''; $thumb['list'] = '' . $image_alt . ''; $thumb['info'] = '
' . $image_alt . '
'; return $thumb; } public static function registerGoogleMaps( $atts = array(), $locate = 'locator' ) { switch ( $locate ) { case 'list': case 'widget': case 'coordinate': $map_url = 'https://maps.googleapis.com/maps/api/js?libraries=places&loading=async&callback=nimapInitMap'; break; case 'setup': $map_url = 'https://maps.googleapis.com/maps/api/js?libraries=places,drawing&loading=async&callback=nimapInitMap'; break; default: $map_url = '//maps.googleapis.com/maps/api/js?libraries=places,drawing&loading=async&callback=nimapInitMap'; // $map_url = '//maps.googleapis.com/maps/api/js?libraries=places,markers,drawing&v=quarterly®ion=VN&language=VN&callback=nimapInitMap'; } // Set the API Key $api_key = $atts['general_api_key']; if ( $api_key ) { $map_url .= '&key=' . $api_key; } // Add the callback // $map_cb_func = isset( $atts['lib_callback'] ) ? $atts['lib_callback'] : 'nimap_cb_map'; // $map_url .= '&callback=' . $map_cb_func; // Set the map language $map_country = null; if ( isset( $atts['map_language'] ) && $atts['map_language'] ) { $map_country = $atts['map_language']; } else { $map_country = $atts['map_language'] ? $atts['map_language'] : 'en_US'; } // When we have a country // if ( $map_country ) { // $map_url .= '&language=' . $map_country; // } // Set the map region $map_region = null; if ( isset( $atts['map_region'] ) ) { $map_region = $atts['map_region']; } if ( $map_region ) { $map_url .= '®ion=' . $map_region; } // Register the Google Maps wp_register_script( 'nimap_google_maps', $map_url, array( 'jquery' ), NIMAP_VERSION, true ); // Enqueue the Google Maps wp_enqueue_script( 'nimap_google_maps' ); // $this->initBorlabsCookies(); //custom dynamic // $dynamic_lib = ''; // wp_add_inline_script( 'nimap_google_maps', $dynamic_lib, 'before' ); } public static function mapStyle( $layout_code, $custom_map_style = false ) { /// Get the map configuration switch ( $layout_code ) { // case '': case '-1': case 'default': case '0': return ''; break; case 'ultra-light-with-labels': return '[{"featureType":"water","elementType":"geometry","stylers":[{"color":"#e9e9e9"},{"lightness":17}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#f5f5f5"},{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffffff"},{"lightness":17}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#ffffff"},{"lightness":29},{"weight":0.2}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#ffffff"},{"lightness":18}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#ffffff"},{"lightness":16}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#f5f5f5"},{"lightness":21}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#dedede"},{"lightness":21}]},{"elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#ffffff"},{"lightness":16}]},{"elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#333333"},{"lightness":40}]},{"elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#f2f2f2"},{"lightness":19}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#fefefe"},{"lightness":20}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#fefefe"},{"lightness":17},{"weight":1.2}]}]'; break; case 'subtle-grayscale': return '[{"featureType":"administrative","elementType":"all","stylers":[{"saturation":"-100"}]},{"featureType":"administrative.province","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"landscape","elementType":"all","stylers":[{"saturation":-100},{"lightness":65},{"visibility":"on"}]},{"featureType":"poi","elementType":"all","stylers":[{"saturation":-100},{"lightness":"50"},{"visibility":"simplified"}]},{"featureType":"road","elementType":"all","stylers":[{"saturation":"-100"}]},{"featureType":"road.highway","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","elementType":"all","stylers":[{"lightness":"30"}]},{"featureType":"road.local","elementType":"all","stylers":[{"lightness":"40"}]},{"featureType":"transit","elementType":"all","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"water","elementType":"geometry","stylers":[{"hue":"#ffff00"},{"lightness":-25},{"saturation":-97}]},{"featureType":"water","elementType":"labels","stylers":[{"lightness":-25},{"saturation":-100}]}]'; break; case 'shades-of-grey': return '[{"featureType":"all","elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#000000"},{"lightness":40}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#000000"},{"lightness":16}]},{"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":20}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":17},{"weight":1.2}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":20}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":21}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":17}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":29},{"weight":0.2}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":18}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":16}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":19}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":17}]}]'; break; case 'blue-water': return '[{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"color":"#444444"}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2f2f2"}]},{"featureType":"poi","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"all","stylers":[{"saturation":-100},{"lightness":45}]},{"featureType":"road.highway","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"all","stylers":[{"color":"#46bcec"},{"visibility":"on"}]}]'; break; case 'wy': return '[{"featureType":"all","elementType":"geometry.fill","stylers":[{"weight":"2.00"}]},{"featureType":"all","elementType":"geometry.stroke","stylers":[{"color":"#9c9c9c"}]},{"featureType":"all","elementType":"labels.text","stylers":[{"visibility":"on"}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2f2f2"}]},{"featureType":"landscape","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"poi","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"all","stylers":[{"saturation":-100},{"lightness":45}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"color":"#eeeeee"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#7b7b7b"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]},{"featureType":"road.highway","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"all","stylers":[{"color":"#46bcec"},{"visibility":"on"}]},{"featureType":"water","elementType":"geometry.fill","stylers":[{"color":"#c8d7d4"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#070707"}]},{"featureType":"water","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]}]'; break; case 'vintage-old-golden-brown': return '[{"featureType":"all","elementType":"all","stylers":[{"color":"#ff7000"},{"lightness":"69"},{"saturation":"100"},{"weight":"1.17"},{"gamma":"2.04"}]},{"featureType":"all","elementType":"geometry","stylers":[{"color":"#cb8536"}]},{"featureType":"all","elementType":"labels","stylers":[{"color":"#ffb471"},{"lightness":"66"},{"saturation":"100"}]},{"featureType":"all","elementType":"labels.text.fill","stylers":[{"gamma":0.01},{"lightness":20}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"saturation":-31},{"lightness":-33},{"weight":2},{"gamma":0.8}]},{"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"landscape","elementType":"all","stylers":[{"lightness":"-8"},{"gamma":"0.98"},{"weight":"2.45"},{"saturation":"26"}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"lightness":30},{"saturation":30}]},{"featureType":"poi","elementType":"geometry","stylers":[{"saturation":20}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"lightness":20},{"saturation":-20}]},{"featureType":"road","elementType":"geometry","stylers":[{"lightness":10},{"saturation":-30}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"saturation":25},{"lightness":25}]},{"featureType":"water","elementType":"all","stylers":[{"lightness":-20},{"color":"#ecc080"}]}]'; break; case 'black-and-white': return '[{"featureType":"road","elementType":"labels","stylers":[{"visibility":"on"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"administrative","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"weight":1}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"weight":0.8}]},{"featureType":"landscape","stylers":[{"color":"#ffffff"}]},{"featureType":"water","stylers":[{"visibility":"off"}]},{"featureType":"transit","stylers":[{"visibility":"off"}]},{"elementType":"labels","stylers":[{"visibility":"off"}]},{"elementType":"labels.text","stylers":[{"visibility":"on"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#000000"}]},{"elementType":"labels.icon","stylers":[{"visibility":"on"}]}]'; break; case 'light-dream': return '[{"featureType":"landscape","stylers":[{"hue":"#FFBB00"},{"saturation":43.400000000000006},{"lightness":37.599999999999994},{"gamma":1}]},{"featureType":"road.highway","stylers":[{"hue":"#FFC200"},{"saturation":-61.8},{"lightness":45.599999999999994},{"gamma":1}]},{"featureType":"road.arterial","stylers":[{"hue":"#FF0300"},{"saturation":-100},{"lightness":51.19999999999999},{"gamma":1}]},{"featureType":"road.local","stylers":[{"hue":"#FF0300"},{"saturation":-100},{"lightness":52},{"gamma":1}]},{"featureType":"water","stylers":[{"hue":"#0078FF"},{"saturation":-13.200000000000003},{"lightness":2.4000000000000057},{"gamma":1}]},{"featureType":"poi","stylers":[{"hue":"#00FF6A"},{"saturation":-1.0989010989011234},{"lightness":11.200000000000017},{"gamma":1}]}]'; break; case 'blue-essence': return '[{"featureType":"landscape.natural","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#e0efef"}]},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"hue":"#1900ff"},{"color":"#c0e8e8"}]},{"featureType":"road","elementType":"geometry","stylers":[{"lightness":100},{"visibility":"simplified"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"visibility":"on"},{"lightness":700}]},{"featureType":"water","elementType":"all","stylers":[{"color":"#7dcdcd"}]}]'; break; //unsaturated browns case 'pale-dawn': return '[{"featureType":"administrative","elementType":"all","stylers":[{"visibility":"on"},{"lightness":33}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2e5d4"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#c5dac6"}]},{"featureType":"poi.park","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":20}]},{"featureType":"road","elementType":"all","stylers":[{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#c5c6c6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#e4d7c6"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#fbfaf7"}]},{"featureType":"water","elementType":"all","stylers":[{"visibility":"on"},{"color":"#acbcc9"}]}]'; break; case 'unsaturated-browns': return '[{"elementType":"geometry","stylers":[{"hue":"#ff4400"},{"saturation":-68},{"lightness":-4},{"gamma":0.72}]},{"featureType":"road","elementType":"labels.icon"},{"featureType":"landscape.man_made","elementType":"geometry","stylers":[{"hue":"#0077ff"},{"gamma":3.1}]},{"featureType":"water","stylers":[{"hue":"#00ccff"},{"gamma":0.44},{"saturation":-33}]},{"featureType":"poi.park","stylers":[{"hue":"#44ff00"},{"saturation":-23}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"hue":"#007fff"},{"gamma":0.77},{"saturation":65},{"lightness":99}]},{"featureType":"water","elementType":"labels.text.stroke","stylers":[{"gamma":0.11},{"weight":5.6},{"saturation":99},{"hue":"#0091ff"},{"lightness":-86}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"lightness":-48},{"hue":"#ff5e00"},{"gamma":1.2},{"saturation":-23}]},{"featureType":"transit","elementType":"labels.text.stroke","stylers":[{"saturation":-64},{"hue":"#ff9100"},{"lightness":16},{"gamma":0.47},{"weight":2.7}]}]'; break; case 'midnight-commander': return '[{"featureType":"all","elementType":"labels.text.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"color":"#000000"},{"lightness":13}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#000000"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#144b53"},{"lightness":14},{"weight":1.4}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#08304b"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#0c4152"},{"lightness":5}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#000000"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#0b434f"},{"lightness":25}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#000000"}]},{"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#0b3d51"},{"lightness":16}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#000000"}]},{"featureType":"transit","elementType":"all","stylers":[{"color":"#146474"}]},{"featureType":"water","elementType":"all","stylers":[{"color":"#021019"}]}]'; break; case 'light-monochrome': return '[{"featureType":"administrative.locality","elementType":"all","stylers":[{"hue":"#2c2e33"},{"saturation":7},{"lightness":19},{"visibility":"on"}]},{"featureType":"landscape","elementType":"all","stylers":[{"hue":"#ffffff"},{"saturation":-100},{"lightness":100},{"visibility":"simplified"}]},{"featureType":"poi","elementType":"all","stylers":[{"hue":"#ffffff"},{"saturation":-100},{"lightness":100},{"visibility":"off"}]},{"featureType":"road","elementType":"geometry","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":31},{"visibility":"simplified"}]},{"featureType":"road","elementType":"labels","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":31},{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"labels","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":-2},{"visibility":"simplified"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"hue":"#e9ebed"},{"saturation":-90},{"lightness":-8},{"visibility":"simplified"}]},{"featureType":"transit","elementType":"all","stylers":[{"hue":"#e9ebed"},{"saturation":10},{"lightness":69},{"visibility":"on"}]},{"featureType":"water","elementType":"all","stylers":[{"hue":"#e9ebed"},{"saturation":-78},{"lightness":67},{"visibility":"simplified"}]}]'; break; case 'light-gray': return '[{"featureType":"water","elementType":"geometry.fill","stylers":[{"color":"#d3d3d3"}]},{"featureType":"transit","stylers":[{"color":"#808080"},{"visibility":"off"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"visibility":"on"},{"color":"#b3b3b3"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#ffffff"},{"weight":1.8}]},{"featureType":"road.local","elementType":"geometry.stroke","stylers":[{"color":"#d7d7d7"}]},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#ebebeb"}]},{"featureType":"administrative","elementType":"geometry","stylers":[{"color":"#a7a7a7"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"landscape","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#efefef"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#696969"}]},{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"visibility":"on"},{"color":"#737373"}]},{"featureType":"poi","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#d6d6d6"}]},{"featureType":"road","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"color":"#dadada"}]}]'; break; case 'custom': if ( $custom_map_style ) { return $custom_map_style; } break; default: return '[{"featureType":"administrative","elementType":"all","stylers":[{"visibility":"on"},{"lightness":33}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2e5d4"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#c5dac6"}]},{"featureType":"poi.park","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":20}]},{"featureType":"road","elementType":"all","stylers":[{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#c5c6c6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#e4d7c6"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#fbfaf7"}]},{"featureType":"water","elementType":"all","stylers":[{"visibility":"on"},{"color":"#acbcc9"}]}]'; break; } return ''; } public function get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) { if ( ! empty( $args ) && is_array( $args ) ) { extract( $args ); } if ( empty( $template_path ) ) { $template_path = $default_path; } $located = $template_path . $template_name; if ( ! file_exists( $located ) ) { return; } include( $located ); } public function get_local_file_contents( $file_path, $file_name = '' ) { ob_start(); load_template( $file_path ); $contents = ob_get_clean(); return $contents; } public static function expanded_allowed_tags() { $my_allowed = wp_kses_allowed_html( 'post' ); $my_allowed['svg'] = array( 'xmlns' => array(), 'xml:space' => array(), 'width' => array(), 'height' => array(), 'style' => array(), 'viewBox' => array(), 'viewbox' => array(), 'xmlns:xlink' => array(), ); $my_allowed['g'] = array( 'class' => array(), 'id' => array(), 'style' => array(), ); $my_allowed['path'] = array( 'class' => array(), 'id' => array(), 'style' => array(), 'fill' => array(), 'fill-opacity' => array(), 'd' => array(), ); $my_allowed['select'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'type' => array(), 'data-attribute_name' => array(), 'data-show_option_none' => array(), ); $my_allowed['option'] = array( 'selected' => array(), 'value' => array(), ); $my_allowed['form'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'action' => array(), 'method' => array(), 'enctype' => array(), 'data' => array(), 'data-product_id' => array(), 'data-product_variations' => array(), ); $my_allowed['input'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'type' => array(), 'step' => array(), 'min' => array(), 'max' => array(), 'title' => array(), 'size' => array(), 'placeholder' => array(), 'inputmode' => array(), ); // $my_allowed['video'] = array( // 'class' => array(), // 'id' => array(), // 'name' => array(), // 'value' => array(), // 'src' => array(), // 'preload' => array(), // 'controls' => array(), // ); $my_allowed['source'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'src' => array(), 'type' => array(), ); $my_allowed['script'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'src' => array(), ); $my_allowed['iframe'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'src' => array(), 'loading' => array(), 'title' => array(), 'frameborder' => array(), 'allowfullscreen' => array(), ); return $my_allowed; } } } if ( ! function_exists( 'villatheme_include_folder' ) ) { function villatheme_include_folder( $path, $prefix = '', $ext = array( 'php' ) ) { /*Include all files in payment folder*/ if ( ! is_array( $ext ) ) { $ext = explode( ',', $ext ); $ext = array_map( 'trim', $ext ); } $sfiles = scandir( $path ); foreach ( $sfiles as $sfile ) { if ( $sfile != '.' && $sfile != '..' ) { if ( is_file( $path . "/" . $sfile ) ) { $ext_file = pathinfo( $path . "/" . $sfile ); $file_name = $ext_file['filename']; if ( $ext_file['extension'] ) { if ( in_array( $ext_file['extension'], $ext ) ) { $class = preg_replace( '/\W/i', '_', $prefix . ucfirst( $file_name ) ); if ( ! class_exists( $class ) ) { require_once $path . $sfile; if ( class_exists( $class ) ) { new $class(); } } } } } } } } } if ( ! function_exists( 'villatheme_json_decode' ) ) { function villatheme_json_decode( $json, $assoc = true, $depth = 512, $options = 2 ) { if ( function_exists( 'mb_convert_encoding' ) ) { $json = mb_convert_encoding( $json, 'UTF-8', 'UTF-8' ); } if ( ! is_string( $json ) ) { return $json; } return json_decode( $json, $assoc, $depth, $options ); } } if ( ! function_exists( 'villatheme_json_encode' ) ) { function villatheme_json_encode( $value, $options = 256, $depth = 512 ) { return wp_json_encode( $value, $options, $depth ); } } if ( ! function_exists( 'villatheme_sanitize_fields' ) ) { function villatheme_sanitize_fields( $data ) { if ( is_array( $data ) ) { return array_map( 'villatheme_sanitize_fields', $data ); } else { return is_scalar( $data ) ? sanitize_text_field( wp_unslash( $data ) ) : $data; } } } if ( ! function_exists( 'villatheme_sanitize_kses' ) ) { function villatheme_sanitize_kses( $data ) { if ( is_array( $data ) ) { return array_map( 'villatheme_sanitize_kses', $data ); } else { return is_scalar( $data ) ? wp_kses_post( wp_unslash( $data ) ) : $data; } } } if ( ! function_exists( 'nimap_sanitize_customizer' ) ) { function nimap_sanitize_customizer( $data ) { $data = villatheme_json_decode( wp_unslash( $data ) ); return villatheme_sanitize_kses( $data ); } } if ( ! function_exists( 'nimap_custom_product_tab_default' ) ) { function nimap_custom_product_tab_default( $key, $product_tab ) { } } if ( ! function_exists( 'nimap_sanitize_customizer' ) ) { function nimap_sanitize_customizer( $data ) { $data = villatheme_json_decode( wp_unslash( $data ) ); return villatheme_sanitize_kses( $data ); } } if ( ! function_exists( 'nimap_multiple_selected' ) ) { function nimap_multiple_selected( $value, $choice ) { if ( is_array( $choice ) ) { return in_array( $value, $choice ) ? 'selected="selected"' : ''; } else { return selected( $choice, $value, false ); } } }