Changeset 1591115
- Timestamp:
- 02/07/2017 03:42:23 PM (9 years ago)
- Location:
- directory-builder
- Files:
-
- 6 edited
- 8 copied
-
tags/1.3.2 (copied) (copied from directory-builder/trunk)
-
tags/1.3.2/README.txt (copied) (copied from directory-builder/trunk/README.txt) (2 diffs)
-
tags/1.3.2/admin/class-db-functionality-admin.php (modified) (1 diff)
-
tags/1.3.2/admin/css/db-functionality-admin.css (copied) (copied from directory-builder/trunk/admin/css/db-functionality-admin.css)
-
tags/1.3.2/admin/js/db-functionality-admin.js (copied) (copied from directory-builder/trunk/admin/js/db-functionality-admin.js)
-
tags/1.3.2/directory-builder.php (copied) (copied from directory-builder/trunk/directory-builder.php) (22 diffs)
-
tags/1.3.2/includes/class-db-functionality-activator.php (copied) (copied from directory-builder/trunk/includes/class-db-functionality-activator.php)
-
tags/1.3.2/public/class-db-functionality-public.php (copied) (copied from directory-builder/trunk/public/class-db-functionality-public.php)
-
tags/1.3.2/public/js/db-functionality-public.js (modified) (4 diffs)
-
tags/1.3.2/template/search-listing-item.php (copied) (copied from directory-builder/trunk/template/search-listing-item.php)
-
trunk/README.txt (modified) (2 diffs)
-
trunk/admin/class-db-functionality-admin.php (modified) (1 diff)
-
trunk/directory-builder.php (modified) (22 diffs)
-
trunk/public/js/db-functionality-public.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
directory-builder/tags/1.3.2/README.txt
r1590048 r1591115 4 4 Requires at least: 4.5.3 5 5 Tested up to: 4.7.2 6 Stable tag: 1.3. 16 Stable tag: 1.3.2 7 7 License: GPLv2 or later 8 8 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 26 26 == Changelog == 27 27 28 = 1.3.2 = 29 * Improved search functionality 30 * Featured listing shown at the top of the search list 31 * Radio button issue while the value is shown at the search 32 28 33 = 1.3.1 = 29 34 * Fixed issues with custom fields -
directory-builder/tags/1.3.2/admin/class-db-functionality-admin.php
r1557657 r1591115 116 116 wp_enqueue_media(); 117 117 wp_enqueue_script( $this->db_func, plugin_dir_url( __FILE__ ) . 'js/db-functionality-admin.js', array( 'jquery' ), $this->version, false ); 118 118 119 119 120 } -
directory-builder/tags/1.3.2/directory-builder.php
r1590048 r1591115 17 17 * Plugin URI: https://cohhe.com/ 18 18 * Description: Directory builder provides listing functionality for your theme. 19 * Version: 1.3. 119 * Version: 1.3.2 20 20 * Author: Cohhe 21 21 * Author URI: https://cohhe.com/ … … 465 465 <h3 class="db-main-title">Custom field</h3> 466 466 </div> 467 <div class="db-field-row <?php echo(isset($field_settings['field_name'])&&$field_settings['field_name']!=''?'active':''); ?> clearfix"> 468 <label class="field-label">Field name <span class="db-required">*</span></label> 469 <div class="db-field-input"> 470 <input type="text" class="db-create-field-name" data-required="true" value="<?php echo(isset($field_settings['field_name'])?$field_settings['field_name']:''); ?>"> 471 <span class="field-description">Unique name only from letters a-z</span> 472 <span class="db-field-required">This field is required</span> 473 </div> 474 </div> 467 <?php if ( !in_array('delete', $disabled_settings) ) { ?> 468 <div class="db-field-row <?php echo(isset($field_settings['field_name'])&&$field_settings['field_name']!=''?'active':''); ?> clearfix"> 469 <label class="field-label">Field name <span class="db-required">*</span></label> 470 <div class="db-field-input"> 471 <input type="text" class="db-create-field-name" data-required="true" value="<?php echo(isset($field_settings['field_name'])?$field_settings['field_name']:''); ?>"> 472 <span class="field-description">Unique name only from letters a-z</span> 473 <span class="db-field-required">This field is required</span> 474 </div> 475 </div> 476 <?php } ?> 475 477 <div class="db-field-row <?php echo(isset($field_settings['admin_title'])&&$field_settings['admin_title']!=''?'active':''); ?> clearfix"> 476 478 <label class="field-label">Admin title</label> … … 578 580 </div> 579 581 </div> 582 <?php if ( isset( $field_settings['disabled'] ) ) { ?> 583 <input type="hidden" class="db-create-disabled" value="<?php echo $field_settings['disabled']; ?>"> 584 <?php } ?> 585 <?php if ( in_array('delete', $disabled_settings) ) { ?> 586 <input type="hidden" class="db-create-field-name" data-required="true" value="<?php echo(isset($field_settings['field_name'])?$field_settings['field_name']:''); ?>"> 587 <?php } ?> 580 588 <?php if ( $field_type == 'text' ) { ?> 581 589 <div class="db-field-row <?php echo(isset($field_settings['validation_pattern'])&&$field_settings['validation_pattern']!=''?'active':''); ?> clearfix"> … … 737 745 } else { 738 746 $save_query = $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'", field_active="'.$field_active.'", field_settings="'.$field_settings.'" WHERE ID="'.$field_id.'"'); 747 if ( $field_decoded_settings['field_name'] == 'listing_address' ) { 748 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_city\"%"'); 749 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_neighborhood\"%"'); 750 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_zip\"%"'); 751 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_state\"%"'); 752 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_country\"%"'); 753 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_address_lat\"%"'); 754 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_address_lng\"%"'); 755 } 739 756 } 740 757 … … 990 1007 jQuery('#listing_address_lat').val(this.getPosition().lat()); 991 1008 jQuery('#listing_address_lng').val(this.getPosition().lng()); 1009 jQuery('.db-set-address').addClass('dragged').click(); 992 1010 }); 993 1011 } … … 998 1016 <?php } ?> 999 1017 jQuery(document).on('click', '.db-set-address', function() { 1000 if ( jQuery('#listing_address_lat').val() != '' && jQuery('#listing_address_lng').val() != '' ) { 1001 var new_location = new google.maps.LatLng(jQuery('#listing_address_lat').val(), jQuery('#listing_address_lng').val()); 1002 $first_marker.setMap(null); 1003 var marker = new google.maps.Marker({ position: new_location, map: $map, draggable: true }); 1004 $first_marker = marker; 1005 db_add_dragend_event( $first_marker ); 1006 1007 $map.setCenter(new_location); 1018 var google_json_address; 1019 if ( !jQuery(this).hasClass('dragged') ) { 1020 google_json_address = encodeURIComponent( jQuery('#listing_address').val() ); 1008 1021 } else { 1009 $geocoder.geocode( { "address": jQuery('#listing_address').val() }, function(results, status) { 1010 if (status == google.maps.GeocoderStatus.OK) { 1011 $first_marker.setMap(null); 1012 var marker = new google.maps.Marker({ position: results[0].geometry.location, map: $map, draggable: true }); 1013 $first_marker = marker; 1014 db_add_dragend_event( $first_marker ); 1015 1016 jQuery('#listing_address_lat').val(results[0].geometry.location.lat()); 1017 jQuery('#listing_address_lng').val(results[0].geometry.location.lng()); 1018 1019 $map.setCenter(results[0].geometry.location); 1020 } else { 1021 alert('Your address couldn\'t be found'); 1022 } 1023 }); 1022 google_json_address = encodeURIComponent( jQuery('#listing_address_lat').val()+','+jQuery('#listing_address_lng').val() ); 1024 1023 } 1024 jQuery.get('https://maps.googleapis.com/maps/api/geocode/json?address='+google_json_address+'&key=<?php echo $main_settings['google_key']; ?>&language=en', function( data ) { 1025 if ( data.status == 'OK' ) { 1026 $first_marker.setMap(null); 1027 var marker = new google.maps.Marker({ position: data.results['0'].geometry.location, map: $map, draggable: true }); 1028 $first_marker = marker; 1029 db_add_dragend_event( $first_marker ); 1030 1031 jQuery('#listing_city, #listing_zip, #listing_neighborhood, #listing_state').val(''); 1032 jQuery.each(data.results['0'].address_components, function( index, address_comp ) { 1033 if( address_comp.types[0] == "locality" && address_comp.types[1] == "political" ) { 1034 jQuery('#listing_city').val( address_comp.long_name ); 1035 } 1036 1037 if( address_comp.types[0] == "country" && address_comp.types[1] == "political" ) { 1038 if ( jQuery('[name="listing_country"] option[value="'+address_comp.long_name+'"]').length ) { 1039 jQuery('[name="listing_country"]').val( address_comp.long_name ); 1040 } else { 1041 jQuery('[name="listing_country"]').append('<option value="'+address_comp.long_name+'">'+address_comp.long_name+'</option>').val( address_comp.long_name ); 1042 } 1043 } 1044 1045 if( address_comp.types[0] == "postal_code" ) { 1046 jQuery('#listing_zip').val( address_comp.long_name ); 1047 } 1048 1049 if ( address_comp.types[0] == "administrative_area_level_1" && address_comp.types[1] == "political" ) { 1050 jQuery('#listing_neighborhood').val( address_comp.long_name ); 1051 } 1052 1053 if ( address_comp.types[0] == "administrative_area_level_2" && address_comp.types[1] == "political" ) { 1054 jQuery('#listing_state').val( address_comp.long_name ); 1055 } 1056 }); 1057 1058 jQuery('#listing_address').val( data.results['0'].formatted_address ); 1059 1060 jQuery('#listing_address_lat').val(data.results['0'].geometry.location.lat); 1061 jQuery('#listing_address_lng').val(data.results['0'].geometry.location.lng); 1062 1063 $map.setCenter(data.results['0'].geometry.location); 1064 jQuery('.db-set-address').removeClass('dragged'); 1065 } else { 1066 alert('Your address couldn\'t be found'); 1067 } 1068 }); 1025 1069 }); 1026 1027 1028 1070 }); 1029 1071 </script> … … 1411 1453 if ( !empty($select_values) ) { 1412 1454 $output .= '<select class="'.$custom_class.'" name="'.$field_name.'">'; 1455 if ( !in_array($field_default, $select_values) ) { 1456 $select_values[] = $field_default; 1457 } 1413 1458 foreach ($select_values as $select_value) { 1414 1459 $select_data = explode(':', $select_value); … … 1434 1479 $output .= '<label class="db-field-row-label">'.$field_title.'</label>'; 1435 1480 } 1481 1482 $active_values = (isset($_GET[$field_name])?explode(',', sanitize_text_field($_GET[$field_name])):array()); 1483 $active_value_shown = $active_value_hidden = ''; 1484 if ( !empty($active_values) ) { 1485 $active_value_shown = implode(', ', $active_values); 1486 $active_value_hidden = implode(',', $active_values); 1487 } 1488 1436 1489 $output .= ' 1437 <input type="text" class="dt-custom-select" placeholder="'.$field_title.'" readonly>1438 <input type="hidden" class="'.$custom_class.'" name="'.$field_name.'" id="dt-search-search_category" >1490 <input type="text" class="dt-custom-select" placeholder="'.$field_title.'" value="'.$active_value_shown.'" readonly> 1491 <input type="hidden" class="'.$custom_class.'" name="'.$field_name.'" id="dt-search-search_category" value="'.$active_value_hidden.'"> 1439 1492 <div class="dt-custom-select-container">'; 1440 1493 $output .= ' … … 1444 1497 if ( !empty($select_values) ) { 1445 1498 foreach ($select_values as $select_value) { 1446 $select_data = explode(':', $select_value); 1447 $is_selected = ($select_data['0']==$field_default?' active':''); 1499 $select_data = explode( ':', $select_value ); 1500 $selected_values = explode( ',', $field_default ); 1501 $is_selected = (in_array($select_data['0'], $selected_values)?' active':''); 1448 1502 $output .= '<div class="dt-custom-select-item'.$is_selected.'" data-value="'.$select_data['0'].'">'.(isset($select_data['1'])?$select_data['1']:$select_data['0']).'</div>'; 1449 1503 } … … 1476 1530 $select_values = preg_split("/\\r\\n|\\r|\\n/", $select_options); 1477 1531 1478 $output .= '1479 <div class="db-field-row'.$field_required.' default-label">';1532 if ( !defined('WHITELAB_CUSTOM_SELECT') || is_admin() ) { 1533 $output .= '<div class="db-field-row'.$field_required.'">'; 1480 1534 if ( $field_title != '' ) { 1481 1535 $output .= '<label class="db-field-row-label">'.$field_title.'</label>'; 1482 1536 } 1483 1537 if ( !empty($select_values) ) { 1484 if ( $field_settings['multiselect_type'] == 'select' ) { 1485 $output .= '<select class="'.$custom_class.'" name="'.$field_name.'[]" multiple>'; 1486 if ( $field_default == '' ) { 1487 $field_default = array(); 1488 } 1489 foreach ($select_values as $select_value) { 1490 $select_data = explode(':', $select_value); 1491 $is_selected = (in_array($select_data['0'], $field_default)?' selected':''); 1492 $output .= '<option value="'.$select_data['0'].'"'.$is_selected.'>'.$select_data['1'].'</option>'; 1493 } 1494 $output .= '</select>'; 1495 } else if ( $field_settings['multiselect_type'] == 'checkbox' ) { 1496 foreach ($select_values as $select_value) { 1497 $select_data = explode(':', $select_value); 1498 $is_selected = (in_array($select_value, $field_default)?' checked':''); 1499 $output .= '<label class="db-'.$field_settings['multiselect_type'].'-label"><input type="'.$field_settings['multiselect_type'].'" name="'.$field_name.'[]" value="'.$select_data['0'].'"'.$is_selected.'>'.$select_data['1'].'<label>'; 1500 } 1538 $output .= '<select class="'.$custom_class.'" name="'.$field_name.'" multiple>'; 1539 foreach ($select_values as $select_value) { 1540 $select_data = explode(':', $select_value); 1541 $selected_values = explode( ',', $field_default ); 1542 1543 $is_selected = (in_array($select_data['0'], $selected_values)?' selected':''); 1544 $output .= '<option value="'.$select_data['0'].'"'.$is_selected.'>'.(isset($select_data['1'])?$select_data['1']:$select_data['0']).'</option>'; 1501 1545 } 1546 $output .= '</select>'; 1502 1547 } 1503 1548 if ( $field_description != '' || ( $field_settings['required'] == 'yes' && $field_required_message != '' ) ) { … … 1511 1556 $output .= '</div>'; 1512 1557 } 1558 } else { 1559 $output .= ' 1560 <div class="db-field-row'.$field_required.' custom-select">'; 1561 $active_values = (isset($_GET[$field_name])?explode(',', sanitize_text_field($_GET[$field_name])):array()); 1562 $active_value_shown = $active_value_hidden = ''; 1563 if ( !empty($active_values) ) { 1564 $active_value_shown = implode(', ', $active_values); 1565 $active_value_hidden = implode(',', $active_values); 1566 } 1567 1568 $output .= ' 1569 <input type="text" class="dt-custom-select" placeholder="'.$field_title.'" value="'.$active_value_shown.'" readonly> 1570 <input type="hidden" class="'.$custom_class.'" name="'.$field_name.'" id="dt-search-search_category" value="'.$active_value_hidden.'"> 1571 <div class="dt-custom-select-container">'; 1572 $output .= ' 1573 <div class="dt-custom-select-inner"> 1574 <div class="dt-custom-select-search"><input type="text" placeholder="'.__('Search', 'directory-builder').'"></div> 1575 <div class="dt-custom-select-items">'; 1576 if ( !empty($select_values) ) { 1577 foreach ($select_values as $select_value) { 1578 $select_data = explode( ':', $select_value ); 1579 $selected_values = explode( ',', $field_default ); 1580 $is_selected = (in_array($select_data['0'], $selected_values)?' active':''); 1581 $output .= '<div class="dt-custom-select-item'.$is_selected.'" data-value="'.$select_data['0'].'">'.(isset($select_data['1'])?$select_data['1']:$select_data['0']).'</div>'; 1582 } 1583 } 1584 $output .= ' 1585 </div> 1586 <div class="dt-custom-select-scrollbar-wrapper"> 1587 <span class="dt-custom-select-scrollbar"></span> 1588 </div> 1589 </div>'; 1590 $output .= ' 1591 </div>'; 1592 if ( $field_description != '' || ( $field_settings['required'] == 'yes' && $field_required_message != '' ) ) { 1593 $output .= '<div class="db-field-meta">'; 1594 if ( $field_description != '' ) { 1595 $output .= '<span class="db-field-row-description">'.$field_description.'</span>'; 1596 } 1597 if ( $field_settings['required'] == 'yes' && $field_required_message != '' ) { 1598 $output .= '<span class="db-field-row-required">'.$field_required_message.'</span>'; 1599 } 1600 $output .= '</div>'; 1601 } 1602 } 1513 1603 $output .= ' 1514 1604 </div>'; … … 1856 1946 $active_placeholder = ''; 1857 1947 if ( empty($active_categories) ) { 1858 $active_placeholder = __('Category', 'directory-builder');1948 $active_placeholder = ''; 1859 1949 } else { 1860 1950 foreach ($terms as $cat_data) { … … 1867 1957 $output .= ' 1868 1958 <div class="db-field-row db-search-categories custom-select"> 1869 <input type="text" class="dt-custom-select" placeholder="'. $active_placeholder.'" readonly>1959 <input type="text" class="dt-custom-select" placeholder="'.esc_html__( 'Category', 'directory-builder' ).'" value="'.$active_placeholder.'" readonly> 1870 1960 <input type="hidden" class="dt-custom-select-value" id="db-search-search_category" value="'.implode(',', $active_categories).'"> 1871 1961 <div class="dt-custom-select-container">'; … … 2006 2096 $field_list = db_get_active_fields(); 2007 2097 2098 if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) { 2099 $search_coordinates = db_get_coordinates( $search_terms['listing_address'] ); 2100 $search_coordinates = explode(',', $search_coordinates); 2101 } 2102 2008 2103 foreach ($search_listings as $listing_value) { 2009 2104 $custom_field_data = db_get_listing_custom_values($field_list, $listing_value->ID); … … 2012 2107 2013 2108 if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) { 2014 $ search_coordinates = db_get_coordinates( $search_terms['listing_address']);2015 $search_coordinates = explode(',', $search_coordinates); 2016 $db_search_distance = db_calculate_distance($listing_value['listing_address_lat'], $listing_value['listing_address_lng'], $search_coordinates['0'], $search_coordinates['1'], $main_settings['search_radius_value']);2017 2018 if ( $db_search_distance > intval($search_distance) ){2019 $ show_listing = false;2109 $db_search_distance = db_calculateDistanceFromLatLong($listing_value['listing_address_lat'], $listing_value['listing_address_lng'], $search_coordinates['0'], $search_coordinates['1'], $main_settings['search_radius_value']); 2110 2111 if ( intval($db_search_distance) > intval($search_distance) ) { 2112 $dist_show_listing = false; 2113 } else { 2114 $dist_show_listing = true; 2020 2115 } 2021 2022 2116 } 2023 2117 2024 2118 if ( !empty($search_terms) ) { 2025 2119 $matched_settings = 0; 2120 2026 2121 foreach ($search_terms as $search_key => $search_value) { 2122 2123 if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' && $search_key == 'listing_address' && $dist_show_listing ) { 2124 $matched_settings++; 2125 continue; 2126 } 2127 2027 2128 if ( $search_key == 'search_category' ) { 2028 2129 $searched_categories = explode(',', $search_terms['search_category']); … … 2043 2144 $matched_settings++; 2044 2145 } 2146 } else if ( $search_key == 'listing_country' ) { 2147 $searched_countries = explode(',', $search_value); 2148 foreach ($searched_countries as $country_value) { 2149 if ( strtolower($country_value) == strtolower($listing_value[$search_key]) ) { 2150 $show_listing = true; 2151 $matched_settings++; 2152 break; 2153 } else { 2154 $show_listing = false; 2155 } 2156 } 2045 2157 } else { 2046 2158 if ( strtolower($listing_value[$search_key]) != strtolower($search_value) ) { … … 2089 2201 } 2090 2202 } 2091 // $db_search_listing_data = array();2092 2203 } 2093 2204 } … … 2117 2228 2118 2229 if ($unit == 'km') { 2119 // return ($miles * 1.609344); 2120 return 0; 2230 return ($miles * 1.609344); 2121 2231 } else if ($unit == 'N') { 2122 2232 return ($miles * 0.8684); … … 2124 2234 return $miles; 2125 2235 } 2236 } 2237 2238 function db_getDistanceRadius( $uom = 'km' ) { 2239 // Use Haversine formula to calculate the great circle distance between two points identified by longitude and latitude 2240 switch ( strtolower( $uom ) ): 2241 case 'km': 2242 $earthMeanRadius = 6371.009; // km 2243 break; 2244 case 'm': 2245 case 'meters': 2246 $earthMeanRadius = 6371.009 * 1000; // km 2247 break; 2248 case 'miles': 2249 $earthMeanRadius = 3958.761; // miles 2250 break; 2251 case 'yards': 2252 case 'yds': 2253 $earthMeanRadius = 3958.761 * 1760; // yards 2254 break; 2255 case 'feet': 2256 case 'ft': 2257 $earthMeanRadius = 3958.761 * 1760 * 3; // feet 2258 break; 2259 case 'nm': 2260 $earthMeanRadius = 3440.069; // miles 2261 break; 2262 default: 2263 $earthMeanRadius = 3958.761; // miles 2264 break; 2265 endswitch; 2266 2267 return $earthMeanRadius; 2268 } 2269 2270 function db_calculateDistanceFromLatLong( $loc1_lat, $loc1_lng, $loc2_lat, $loc2_lng, $uom = 'km' ) { 2271 // Use Haversine formula to calculate the great circle distance between two points identified by longitude and latitude 2272 2273 $earthMeanRadius = db_getDistanceRadius( $uom ); 2274 2275 $deltaLatitude = deg2rad( (float) $loc2_lat - (float) $loc1_lat ); 2276 $deltaLongitude = deg2rad( (float) $loc2_lng - (float) $loc1_lng ); 2277 $a = sin( $deltaLatitude / 2 ) * sin( $deltaLatitude / 2 ) + 2278 cos( deg2rad( (float) $loc1_lat ) ) * cos( deg2rad( (float) $loc2_lat ) ) * 2279 sin( $deltaLongitude / 2 ) * sin( $deltaLongitude / 2 ); 2280 $c = 2 * atan2( sqrt( $a ), sqrt( 1 - $a ) ); 2281 $distance = $earthMeanRadius * $c; 2282 2283 return $distance; 2284 2126 2285 } 2127 2286 … … 2149 2308 if ( !empty($field_list) ) { 2150 2309 foreach ($field_list as $field_name) { 2151 $field_data[$field_name] = esc_attr( get_post_meta( $post_id, $field_name, true ) ); 2310 $custom_field_value = get_post_meta( $post_id, $field_name, true ); 2311 $field_data[$field_name] = ( !is_array( $custom_field_value ) ? sanitize_text_field( $custom_field_value ) : db_sanitize_array( $custom_field_value ) ); 2152 2312 if ( $field_name == 'listing_address' && $field_data[$field_name] == '' ) { 2153 2313 $field_data[$field_name] = 'London'; … … 2833 2993 foreach ($active_fields as $field_name => $field_title) { 2834 2994 if ( isset($listing_array[$field_name]) ) { 2835 echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'. $listing_array[$field_name].'</span></div>';2995 echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>'; 2836 2996 } 2837 2997 } … … 4753 4913 if ( $featured_status == 'No' ) { 4754 4914 if( ($key = array_search($listing_id, $featured_listings)) !== false ) { 4755 unset($featured_listings[$key]);4756 $featured_changed = true;4915 unset($featured_listings[$key]); 4916 $featured_changed = true; 4757 4917 } 4758 4918 } else if ( $featured_status == 'Yes' ) { -
directory-builder/tags/1.3.2/public/js/db-functionality-public.js
r1557657 r1591115 188 188 189 189 db_clear_markers(); 190 var merker_count = 0; 190 191 jQuery.each(parsed_search_data.marker_data, function(index, marker) { 191 192 db_set_search_markers($search_map, marker); 193 merker_count++; 192 194 }); 193 195 … … 260 262 261 263 $search_map.fitBounds(map_bounds); 262 // $search_map.setZoom(13); 264 if ( merker_count == 1 ) { 265 $search_map.setZoom(13); 266 } 263 267 264 268 db_set_isotope(); … … 319 323 date: '[data-date] parseInt', 320 324 rating: '[data-rating] parseInt', 325 featured: '[data-featured] parseInt' 321 326 }, 322 sortBy: 'name', 323 sortAscending: true, 327 sortBy: [ 'featured', 'name' ], 328 sortAscending: { 329 name: true, 330 date: false, 331 rating: false, 332 featured: true 333 }, 324 334 transitionDuration: '0.2s', 325 335 hiddenStyle: { … … 339 349 if ( sort_by_value == 'date' || sort_by_value == 'rating' ) { 340 350 $search_item_container.isotope({ 341 sortBy: sort_by_value, 342 sortAscending: false 351 sortBy: [ 'featured', sort_by_value ], 343 352 }); 344 353 } else { 345 354 $search_item_container.isotope({ 346 sortBy: sort_by_value, 347 sortAscending: true 355 sortBy: [ 'featured', sort_by_value ], 348 356 }); 349 357 } -
directory-builder/trunk/README.txt
r1590048 r1591115 4 4 Requires at least: 4.5.3 5 5 Tested up to: 4.7.2 6 Stable tag: 1.3. 16 Stable tag: 1.3.2 7 7 License: GPLv2 or later 8 8 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 26 26 == Changelog == 27 27 28 = 1.3.2 = 29 * Improved search functionality 30 * Featured listing shown at the top of the search list 31 * Radio button issue while the value is shown at the search 32 28 33 = 1.3.1 = 29 34 * Fixed issues with custom fields -
directory-builder/trunk/admin/class-db-functionality-admin.php
r1557657 r1591115 116 116 wp_enqueue_media(); 117 117 wp_enqueue_script( $this->db_func, plugin_dir_url( __FILE__ ) . 'js/db-functionality-admin.js', array( 'jquery' ), $this->version, false ); 118 118 119 119 120 } -
directory-builder/trunk/directory-builder.php
r1590048 r1591115 17 17 * Plugin URI: https://cohhe.com/ 18 18 * Description: Directory builder provides listing functionality for your theme. 19 * Version: 1.3. 119 * Version: 1.3.2 20 20 * Author: Cohhe 21 21 * Author URI: https://cohhe.com/ … … 465 465 <h3 class="db-main-title">Custom field</h3> 466 466 </div> 467 <div class="db-field-row <?php echo(isset($field_settings['field_name'])&&$field_settings['field_name']!=''?'active':''); ?> clearfix"> 468 <label class="field-label">Field name <span class="db-required">*</span></label> 469 <div class="db-field-input"> 470 <input type="text" class="db-create-field-name" data-required="true" value="<?php echo(isset($field_settings['field_name'])?$field_settings['field_name']:''); ?>"> 471 <span class="field-description">Unique name only from letters a-z</span> 472 <span class="db-field-required">This field is required</span> 473 </div> 474 </div> 467 <?php if ( !in_array('delete', $disabled_settings) ) { ?> 468 <div class="db-field-row <?php echo(isset($field_settings['field_name'])&&$field_settings['field_name']!=''?'active':''); ?> clearfix"> 469 <label class="field-label">Field name <span class="db-required">*</span></label> 470 <div class="db-field-input"> 471 <input type="text" class="db-create-field-name" data-required="true" value="<?php echo(isset($field_settings['field_name'])?$field_settings['field_name']:''); ?>"> 472 <span class="field-description">Unique name only from letters a-z</span> 473 <span class="db-field-required">This field is required</span> 474 </div> 475 </div> 476 <?php } ?> 475 477 <div class="db-field-row <?php echo(isset($field_settings['admin_title'])&&$field_settings['admin_title']!=''?'active':''); ?> clearfix"> 476 478 <label class="field-label">Admin title</label> … … 578 580 </div> 579 581 </div> 582 <?php if ( isset( $field_settings['disabled'] ) ) { ?> 583 <input type="hidden" class="db-create-disabled" value="<?php echo $field_settings['disabled']; ?>"> 584 <?php } ?> 585 <?php if ( in_array('delete', $disabled_settings) ) { ?> 586 <input type="hidden" class="db-create-field-name" data-required="true" value="<?php echo(isset($field_settings['field_name'])?$field_settings['field_name']:''); ?>"> 587 <?php } ?> 580 588 <?php if ( $field_type == 'text' ) { ?> 581 589 <div class="db-field-row <?php echo(isset($field_settings['validation_pattern'])&&$field_settings['validation_pattern']!=''?'active':''); ?> clearfix"> … … 737 745 } else { 738 746 $save_query = $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'", field_active="'.$field_active.'", field_settings="'.$field_settings.'" WHERE ID="'.$field_id.'"'); 747 if ( $field_decoded_settings['field_name'] == 'listing_address' ) { 748 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_city\"%"'); 749 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_neighborhood\"%"'); 750 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_zip\"%"'); 751 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_state\"%"'); 752 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_country\"%"'); 753 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_address_lat\"%"'); 754 $wpdb->query('UPDATE '.$wpdb->prefix.'directory_fields SET field_order="'.$field_order.'" WHERE field_settings LIKE "%\"field_name\":\"listing_address_lng\"%"'); 755 } 739 756 } 740 757 … … 990 1007 jQuery('#listing_address_lat').val(this.getPosition().lat()); 991 1008 jQuery('#listing_address_lng').val(this.getPosition().lng()); 1009 jQuery('.db-set-address').addClass('dragged').click(); 992 1010 }); 993 1011 } … … 998 1016 <?php } ?> 999 1017 jQuery(document).on('click', '.db-set-address', function() { 1000 if ( jQuery('#listing_address_lat').val() != '' && jQuery('#listing_address_lng').val() != '' ) { 1001 var new_location = new google.maps.LatLng(jQuery('#listing_address_lat').val(), jQuery('#listing_address_lng').val()); 1002 $first_marker.setMap(null); 1003 var marker = new google.maps.Marker({ position: new_location, map: $map, draggable: true }); 1004 $first_marker = marker; 1005 db_add_dragend_event( $first_marker ); 1006 1007 $map.setCenter(new_location); 1018 var google_json_address; 1019 if ( !jQuery(this).hasClass('dragged') ) { 1020 google_json_address = encodeURIComponent( jQuery('#listing_address').val() ); 1008 1021 } else { 1009 $geocoder.geocode( { "address": jQuery('#listing_address').val() }, function(results, status) { 1010 if (status == google.maps.GeocoderStatus.OK) { 1011 $first_marker.setMap(null); 1012 var marker = new google.maps.Marker({ position: results[0].geometry.location, map: $map, draggable: true }); 1013 $first_marker = marker; 1014 db_add_dragend_event( $first_marker ); 1015 1016 jQuery('#listing_address_lat').val(results[0].geometry.location.lat()); 1017 jQuery('#listing_address_lng').val(results[0].geometry.location.lng()); 1018 1019 $map.setCenter(results[0].geometry.location); 1020 } else { 1021 alert('Your address couldn\'t be found'); 1022 } 1023 }); 1022 google_json_address = encodeURIComponent( jQuery('#listing_address_lat').val()+','+jQuery('#listing_address_lng').val() ); 1024 1023 } 1024 jQuery.get('https://maps.googleapis.com/maps/api/geocode/json?address='+google_json_address+'&key=<?php echo $main_settings['google_key']; ?>&language=en', function( data ) { 1025 if ( data.status == 'OK' ) { 1026 $first_marker.setMap(null); 1027 var marker = new google.maps.Marker({ position: data.results['0'].geometry.location, map: $map, draggable: true }); 1028 $first_marker = marker; 1029 db_add_dragend_event( $first_marker ); 1030 1031 jQuery('#listing_city, #listing_zip, #listing_neighborhood, #listing_state').val(''); 1032 jQuery.each(data.results['0'].address_components, function( index, address_comp ) { 1033 if( address_comp.types[0] == "locality" && address_comp.types[1] == "political" ) { 1034 jQuery('#listing_city').val( address_comp.long_name ); 1035 } 1036 1037 if( address_comp.types[0] == "country" && address_comp.types[1] == "political" ) { 1038 if ( jQuery('[name="listing_country"] option[value="'+address_comp.long_name+'"]').length ) { 1039 jQuery('[name="listing_country"]').val( address_comp.long_name ); 1040 } else { 1041 jQuery('[name="listing_country"]').append('<option value="'+address_comp.long_name+'">'+address_comp.long_name+'</option>').val( address_comp.long_name ); 1042 } 1043 } 1044 1045 if( address_comp.types[0] == "postal_code" ) { 1046 jQuery('#listing_zip').val( address_comp.long_name ); 1047 } 1048 1049 if ( address_comp.types[0] == "administrative_area_level_1" && address_comp.types[1] == "political" ) { 1050 jQuery('#listing_neighborhood').val( address_comp.long_name ); 1051 } 1052 1053 if ( address_comp.types[0] == "administrative_area_level_2" && address_comp.types[1] == "political" ) { 1054 jQuery('#listing_state').val( address_comp.long_name ); 1055 } 1056 }); 1057 1058 jQuery('#listing_address').val( data.results['0'].formatted_address ); 1059 1060 jQuery('#listing_address_lat').val(data.results['0'].geometry.location.lat); 1061 jQuery('#listing_address_lng').val(data.results['0'].geometry.location.lng); 1062 1063 $map.setCenter(data.results['0'].geometry.location); 1064 jQuery('.db-set-address').removeClass('dragged'); 1065 } else { 1066 alert('Your address couldn\'t be found'); 1067 } 1068 }); 1025 1069 }); 1026 1027 1028 1070 }); 1029 1071 </script> … … 1411 1453 if ( !empty($select_values) ) { 1412 1454 $output .= '<select class="'.$custom_class.'" name="'.$field_name.'">'; 1455 if ( !in_array($field_default, $select_values) ) { 1456 $select_values[] = $field_default; 1457 } 1413 1458 foreach ($select_values as $select_value) { 1414 1459 $select_data = explode(':', $select_value); … … 1434 1479 $output .= '<label class="db-field-row-label">'.$field_title.'</label>'; 1435 1480 } 1481 1482 $active_values = (isset($_GET[$field_name])?explode(',', sanitize_text_field($_GET[$field_name])):array()); 1483 $active_value_shown = $active_value_hidden = ''; 1484 if ( !empty($active_values) ) { 1485 $active_value_shown = implode(', ', $active_values); 1486 $active_value_hidden = implode(',', $active_values); 1487 } 1488 1436 1489 $output .= ' 1437 <input type="text" class="dt-custom-select" placeholder="'.$field_title.'" readonly>1438 <input type="hidden" class="'.$custom_class.'" name="'.$field_name.'" id="dt-search-search_category" >1490 <input type="text" class="dt-custom-select" placeholder="'.$field_title.'" value="'.$active_value_shown.'" readonly> 1491 <input type="hidden" class="'.$custom_class.'" name="'.$field_name.'" id="dt-search-search_category" value="'.$active_value_hidden.'"> 1439 1492 <div class="dt-custom-select-container">'; 1440 1493 $output .= ' … … 1444 1497 if ( !empty($select_values) ) { 1445 1498 foreach ($select_values as $select_value) { 1446 $select_data = explode(':', $select_value); 1447 $is_selected = ($select_data['0']==$field_default?' active':''); 1499 $select_data = explode( ':', $select_value ); 1500 $selected_values = explode( ',', $field_default ); 1501 $is_selected = (in_array($select_data['0'], $selected_values)?' active':''); 1448 1502 $output .= '<div class="dt-custom-select-item'.$is_selected.'" data-value="'.$select_data['0'].'">'.(isset($select_data['1'])?$select_data['1']:$select_data['0']).'</div>'; 1449 1503 } … … 1476 1530 $select_values = preg_split("/\\r\\n|\\r|\\n/", $select_options); 1477 1531 1478 $output .= '1479 <div class="db-field-row'.$field_required.' default-label">';1532 if ( !defined('WHITELAB_CUSTOM_SELECT') || is_admin() ) { 1533 $output .= '<div class="db-field-row'.$field_required.'">'; 1480 1534 if ( $field_title != '' ) { 1481 1535 $output .= '<label class="db-field-row-label">'.$field_title.'</label>'; 1482 1536 } 1483 1537 if ( !empty($select_values) ) { 1484 if ( $field_settings['multiselect_type'] == 'select' ) { 1485 $output .= '<select class="'.$custom_class.'" name="'.$field_name.'[]" multiple>'; 1486 if ( $field_default == '' ) { 1487 $field_default = array(); 1488 } 1489 foreach ($select_values as $select_value) { 1490 $select_data = explode(':', $select_value); 1491 $is_selected = (in_array($select_data['0'], $field_default)?' selected':''); 1492 $output .= '<option value="'.$select_data['0'].'"'.$is_selected.'>'.$select_data['1'].'</option>'; 1493 } 1494 $output .= '</select>'; 1495 } else if ( $field_settings['multiselect_type'] == 'checkbox' ) { 1496 foreach ($select_values as $select_value) { 1497 $select_data = explode(':', $select_value); 1498 $is_selected = (in_array($select_value, $field_default)?' checked':''); 1499 $output .= '<label class="db-'.$field_settings['multiselect_type'].'-label"><input type="'.$field_settings['multiselect_type'].'" name="'.$field_name.'[]" value="'.$select_data['0'].'"'.$is_selected.'>'.$select_data['1'].'<label>'; 1500 } 1538 $output .= '<select class="'.$custom_class.'" name="'.$field_name.'" multiple>'; 1539 foreach ($select_values as $select_value) { 1540 $select_data = explode(':', $select_value); 1541 $selected_values = explode( ',', $field_default ); 1542 1543 $is_selected = (in_array($select_data['0'], $selected_values)?' selected':''); 1544 $output .= '<option value="'.$select_data['0'].'"'.$is_selected.'>'.(isset($select_data['1'])?$select_data['1']:$select_data['0']).'</option>'; 1501 1545 } 1546 $output .= '</select>'; 1502 1547 } 1503 1548 if ( $field_description != '' || ( $field_settings['required'] == 'yes' && $field_required_message != '' ) ) { … … 1511 1556 $output .= '</div>'; 1512 1557 } 1558 } else { 1559 $output .= ' 1560 <div class="db-field-row'.$field_required.' custom-select">'; 1561 $active_values = (isset($_GET[$field_name])?explode(',', sanitize_text_field($_GET[$field_name])):array()); 1562 $active_value_shown = $active_value_hidden = ''; 1563 if ( !empty($active_values) ) { 1564 $active_value_shown = implode(', ', $active_values); 1565 $active_value_hidden = implode(',', $active_values); 1566 } 1567 1568 $output .= ' 1569 <input type="text" class="dt-custom-select" placeholder="'.$field_title.'" value="'.$active_value_shown.'" readonly> 1570 <input type="hidden" class="'.$custom_class.'" name="'.$field_name.'" id="dt-search-search_category" value="'.$active_value_hidden.'"> 1571 <div class="dt-custom-select-container">'; 1572 $output .= ' 1573 <div class="dt-custom-select-inner"> 1574 <div class="dt-custom-select-search"><input type="text" placeholder="'.__('Search', 'directory-builder').'"></div> 1575 <div class="dt-custom-select-items">'; 1576 if ( !empty($select_values) ) { 1577 foreach ($select_values as $select_value) { 1578 $select_data = explode( ':', $select_value ); 1579 $selected_values = explode( ',', $field_default ); 1580 $is_selected = (in_array($select_data['0'], $selected_values)?' active':''); 1581 $output .= '<div class="dt-custom-select-item'.$is_selected.'" data-value="'.$select_data['0'].'">'.(isset($select_data['1'])?$select_data['1']:$select_data['0']).'</div>'; 1582 } 1583 } 1584 $output .= ' 1585 </div> 1586 <div class="dt-custom-select-scrollbar-wrapper"> 1587 <span class="dt-custom-select-scrollbar"></span> 1588 </div> 1589 </div>'; 1590 $output .= ' 1591 </div>'; 1592 if ( $field_description != '' || ( $field_settings['required'] == 'yes' && $field_required_message != '' ) ) { 1593 $output .= '<div class="db-field-meta">'; 1594 if ( $field_description != '' ) { 1595 $output .= '<span class="db-field-row-description">'.$field_description.'</span>'; 1596 } 1597 if ( $field_settings['required'] == 'yes' && $field_required_message != '' ) { 1598 $output .= '<span class="db-field-row-required">'.$field_required_message.'</span>'; 1599 } 1600 $output .= '</div>'; 1601 } 1602 } 1513 1603 $output .= ' 1514 1604 </div>'; … … 1856 1946 $active_placeholder = ''; 1857 1947 if ( empty($active_categories) ) { 1858 $active_placeholder = __('Category', 'directory-builder');1948 $active_placeholder = ''; 1859 1949 } else { 1860 1950 foreach ($terms as $cat_data) { … … 1867 1957 $output .= ' 1868 1958 <div class="db-field-row db-search-categories custom-select"> 1869 <input type="text" class="dt-custom-select" placeholder="'. $active_placeholder.'" readonly>1959 <input type="text" class="dt-custom-select" placeholder="'.esc_html__( 'Category', 'directory-builder' ).'" value="'.$active_placeholder.'" readonly> 1870 1960 <input type="hidden" class="dt-custom-select-value" id="db-search-search_category" value="'.implode(',', $active_categories).'"> 1871 1961 <div class="dt-custom-select-container">'; … … 2006 2096 $field_list = db_get_active_fields(); 2007 2097 2098 if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) { 2099 $search_coordinates = db_get_coordinates( $search_terms['listing_address'] ); 2100 $search_coordinates = explode(',', $search_coordinates); 2101 } 2102 2008 2103 foreach ($search_listings as $listing_value) { 2009 2104 $custom_field_data = db_get_listing_custom_values($field_list, $listing_value->ID); … … 2012 2107 2013 2108 if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) { 2014 $ search_coordinates = db_get_coordinates( $search_terms['listing_address']);2015 $search_coordinates = explode(',', $search_coordinates); 2016 $db_search_distance = db_calculate_distance($listing_value['listing_address_lat'], $listing_value['listing_address_lng'], $search_coordinates['0'], $search_coordinates['1'], $main_settings['search_radius_value']);2017 2018 if ( $db_search_distance > intval($search_distance) ){2019 $ show_listing = false;2109 $db_search_distance = db_calculateDistanceFromLatLong($listing_value['listing_address_lat'], $listing_value['listing_address_lng'], $search_coordinates['0'], $search_coordinates['1'], $main_settings['search_radius_value']); 2110 2111 if ( intval($db_search_distance) > intval($search_distance) ) { 2112 $dist_show_listing = false; 2113 } else { 2114 $dist_show_listing = true; 2020 2115 } 2021 2022 2116 } 2023 2117 2024 2118 if ( !empty($search_terms) ) { 2025 2119 $matched_settings = 0; 2120 2026 2121 foreach ($search_terms as $search_key => $search_value) { 2122 2123 if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' && $search_key == 'listing_address' && $dist_show_listing ) { 2124 $matched_settings++; 2125 continue; 2126 } 2127 2027 2128 if ( $search_key == 'search_category' ) { 2028 2129 $searched_categories = explode(',', $search_terms['search_category']); … … 2043 2144 $matched_settings++; 2044 2145 } 2146 } else if ( $search_key == 'listing_country' ) { 2147 $searched_countries = explode(',', $search_value); 2148 foreach ($searched_countries as $country_value) { 2149 if ( strtolower($country_value) == strtolower($listing_value[$search_key]) ) { 2150 $show_listing = true; 2151 $matched_settings++; 2152 break; 2153 } else { 2154 $show_listing = false; 2155 } 2156 } 2045 2157 } else { 2046 2158 if ( strtolower($listing_value[$search_key]) != strtolower($search_value) ) { … … 2089 2201 } 2090 2202 } 2091 // $db_search_listing_data = array();2092 2203 } 2093 2204 } … … 2117 2228 2118 2229 if ($unit == 'km') { 2119 // return ($miles * 1.609344); 2120 return 0; 2230 return ($miles * 1.609344); 2121 2231 } else if ($unit == 'N') { 2122 2232 return ($miles * 0.8684); … … 2124 2234 return $miles; 2125 2235 } 2236 } 2237 2238 function db_getDistanceRadius( $uom = 'km' ) { 2239 // Use Haversine formula to calculate the great circle distance between two points identified by longitude and latitude 2240 switch ( strtolower( $uom ) ): 2241 case 'km': 2242 $earthMeanRadius = 6371.009; // km 2243 break; 2244 case 'm': 2245 case 'meters': 2246 $earthMeanRadius = 6371.009 * 1000; // km 2247 break; 2248 case 'miles': 2249 $earthMeanRadius = 3958.761; // miles 2250 break; 2251 case 'yards': 2252 case 'yds': 2253 $earthMeanRadius = 3958.761 * 1760; // yards 2254 break; 2255 case 'feet': 2256 case 'ft': 2257 $earthMeanRadius = 3958.761 * 1760 * 3; // feet 2258 break; 2259 case 'nm': 2260 $earthMeanRadius = 3440.069; // miles 2261 break; 2262 default: 2263 $earthMeanRadius = 3958.761; // miles 2264 break; 2265 endswitch; 2266 2267 return $earthMeanRadius; 2268 } 2269 2270 function db_calculateDistanceFromLatLong( $loc1_lat, $loc1_lng, $loc2_lat, $loc2_lng, $uom = 'km' ) { 2271 // Use Haversine formula to calculate the great circle distance between two points identified by longitude and latitude 2272 2273 $earthMeanRadius = db_getDistanceRadius( $uom ); 2274 2275 $deltaLatitude = deg2rad( (float) $loc2_lat - (float) $loc1_lat ); 2276 $deltaLongitude = deg2rad( (float) $loc2_lng - (float) $loc1_lng ); 2277 $a = sin( $deltaLatitude / 2 ) * sin( $deltaLatitude / 2 ) + 2278 cos( deg2rad( (float) $loc1_lat ) ) * cos( deg2rad( (float) $loc2_lat ) ) * 2279 sin( $deltaLongitude / 2 ) * sin( $deltaLongitude / 2 ); 2280 $c = 2 * atan2( sqrt( $a ), sqrt( 1 - $a ) ); 2281 $distance = $earthMeanRadius * $c; 2282 2283 return $distance; 2284 2126 2285 } 2127 2286 … … 2149 2308 if ( !empty($field_list) ) { 2150 2309 foreach ($field_list as $field_name) { 2151 $field_data[$field_name] = esc_attr( get_post_meta( $post_id, $field_name, true ) ); 2310 $custom_field_value = get_post_meta( $post_id, $field_name, true ); 2311 $field_data[$field_name] = ( !is_array( $custom_field_value ) ? sanitize_text_field( $custom_field_value ) : db_sanitize_array( $custom_field_value ) ); 2152 2312 if ( $field_name == 'listing_address' && $field_data[$field_name] == '' ) { 2153 2313 $field_data[$field_name] = 'London'; … … 2833 2993 foreach ($active_fields as $field_name => $field_title) { 2834 2994 if ( isset($listing_array[$field_name]) ) { 2835 echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'. $listing_array[$field_name].'</span></div>';2995 echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>'; 2836 2996 } 2837 2997 } … … 4753 4913 if ( $featured_status == 'No' ) { 4754 4914 if( ($key = array_search($listing_id, $featured_listings)) !== false ) { 4755 unset($featured_listings[$key]);4756 $featured_changed = true;4915 unset($featured_listings[$key]); 4916 $featured_changed = true; 4757 4917 } 4758 4918 } else if ( $featured_status == 'Yes' ) { -
directory-builder/trunk/public/js/db-functionality-public.js
r1557657 r1591115 188 188 189 189 db_clear_markers(); 190 var merker_count = 0; 190 191 jQuery.each(parsed_search_data.marker_data, function(index, marker) { 191 192 db_set_search_markers($search_map, marker); 193 merker_count++; 192 194 }); 193 195 … … 260 262 261 263 $search_map.fitBounds(map_bounds); 262 // $search_map.setZoom(13); 264 if ( merker_count == 1 ) { 265 $search_map.setZoom(13); 266 } 263 267 264 268 db_set_isotope(); … … 319 323 date: '[data-date] parseInt', 320 324 rating: '[data-rating] parseInt', 325 featured: '[data-featured] parseInt' 321 326 }, 322 sortBy: 'name', 323 sortAscending: true, 327 sortBy: [ 'featured', 'name' ], 328 sortAscending: { 329 name: true, 330 date: false, 331 rating: false, 332 featured: true 333 }, 324 334 transitionDuration: '0.2s', 325 335 hiddenStyle: { … … 339 349 if ( sort_by_value == 'date' || sort_by_value == 'rating' ) { 340 350 $search_item_container.isotope({ 341 sortBy: sort_by_value, 342 sortAscending: false 351 sortBy: [ 'featured', sort_by_value ], 343 352 }); 344 353 } else { 345 354 $search_item_container.isotope({ 346 sortBy: sort_by_value, 347 sortAscending: true 355 sortBy: [ 'featured', sort_by_value ], 348 356 }); 349 357 }
Note: See TracChangeset
for help on using the changeset viewer.