/** * Dynamically replace the field tags with their labels/form field equivalents */ function afterFilter() { $output =& $this->output; $names = array(); $labels = array(); $select = array(); $cat_tag = false; $date_field = false; $cat_auto = Sanitize::getInt($this->params['module'], 'cat_auto'); $dir_id = $section_id = $cat_id = $criteria_id = ''; # Initialize FormHelper $Form = new FormHelper(); $CustomFields = new CustomFieldsHelper(); $CustomFields->Config =& $this->Config; # Process custom field tag attributes foreach ($this->fieldTags as $key => $value) { $var = explode('|', $value); if (!strstr($value, '_label')) { $names[$var[0]] = $value; } elseif (strstr($value, '_label')) { $labels[] = substr($value, 0, -6); } if ($value == 'category') { $cat_tag = true; /************************/ if (isset($var[1]) && $var[1] == 'm') { $category_select_type = ' multiple="multiple"'; } if (isset($var[2]) && (int) $var[2] > 0) { $category_select_size = ' size="' . $var[2] . '"'; } /************************/ } if (isset($var[1]) && strtolower($var[1]) == 'm') { $select[$var[0]] = 'selectmultiple'; } elseif (isset($var[1]) && strtolower($var[1]) == 's') { $select[$var[0]] = 'select'; } $select_size[$var[0]] = isset($var[2]) ? $var[2] : 5; # Check for category select list if ($var[0] == 'category') { if (isset($var[1]) && strtolower($var[1]) == 's') { $category_select_type = ' multiple="multiple"'; } if (isset($var[2]) && (int) $var[2] > 0) { $category_select_size = ' size="' . $var[2] . '"'; } } } # Get selected values from url $entry = array(); foreach ($this->params as $key => $value) { if (substr($key, 0, 3) == 'jr_') { $entry['Field']['pairs'][$key]['value'] = explode('_', $value); } // Add categories/sections } if (isset($this->params['tag'])) { $entry['Field']['pairs']['jr_' . $this->params['tag']['field']]['value'] = array($this->params['tag']['value']); } # Generate category list if tag found in view if ($cat_tag) { # Get module params before auto-detect $param_cat_id = Sanitize::getString($this->params['module'], 'cat_id'); $param_dir_id = Sanitize::getString($this->params['module'], 'dir_id'); $param_type_id = Sanitize::getString($this->params['module'], 'criteria_id'); # Category auto detect $ids = CommonController::_discoverIDs($this); if ($cat_auto) { extract($ids); } elseif ($this->cmsVersion != CMS_JOOMLA15) { isset($ids['cat_id']) and $cat_id = $ids['cat_id']; } if ($this->cmsVersion == CMS_JOOMLA15 && $section_id == '' && $cat_id != '') { $sql = "SELECT section FROM #__categories WHERE id IN (" . $cat_id . ")"; $this->_db->setQuery($sql); $section_id = $this->_db->loadResult(); } $cat_id != '' and $this->params['module']['cat_id'] = $cat_id; $cat_id == '' and $section_id != '' and $this->params['module']['section_id'] = $section_id; $cat_id == '' and $criteria_id != '' and $this->params['module']['criteria_id'] = $criteria_id; if ($this->cmsVersion == CMS_JOOMLA15) { $categorySelect = $this->Category->categoryTree($this->_user->gid, $this->params); } else { $options = array('disabled' => false, 'cat_id' => !empty($param_cat_id) && !$cat_auto ? $param_cat_id : ($cat_auto ? $cat_id : ''), 'parent_id' => !empty($param_cat_id) && !$cat_auto ? $param_cat_id : ($cat_auto ? $cat_id : ''), 'dir_id' => !empty($param_dir_id) && !$cat_auto ? $param_dir_id : ($cat_auto ? $dir_id : ''), 'type_id' => !empty($param_type_id) && !$cat_auto ? $param_type_id : ($cat_auto ? $criteria_id : '')); if ($cat_auto && empty($options['cat_id'])) { $options['level'] = 1; } $categories = $this->Category->getCategoryList($options); // Now get the parent and sibling categories if ($cat_auto && isset($categories[$cat_id]) && count($categories) == 1) { $options['cat_id'] = $options['parent_id'] = $categories[$cat_id]->parent_id; $categories = $this->Category->getCategoryList($options); } $categorySelect = $Form->select('data[categories]', array_merge(array(array('value' => null, 'text' => '- ' . __t("Select Category", true) . ' -')), $categories), $cat_id, array('class' => 'jrSelect')); } $output = str_replace('{' . $names['category'] . '}', $categorySelect, $output); } $fields = $this->Field->getFieldsArrayFromNames(array_keys($names), 'listing', $entry); # Replace label tags and change field type based on view atttributes if ($fields) { foreach ($fields as $key => $group) { foreach ($group['Fields'] as $name => $field) { if (isset($select[$name])) { $fields[$key]['Fields'][$name]['type'] = $select[$name]; $fields[$key]['Fields'][$name]['properties']['size'] = $select_size[$name]; } elseif ($fields[$key]['Fields'][$name]['type'] == 'textarea') { $fields[$key]['Fields'][$name]['type'] = 'text'; } if (in_array($name, $labels)) { $output = str_replace('{' . $name . '_label}', $field['title'], $output); } if ($field['type'] == 'date') { $date_field = true; } } } $search = true; $location = 'listing'; $CustomFields->form_id = Sanitize::getInt($this->params, 'module_id'); $formFields = $CustomFields->getFormFields($fields, $location, $search, __t("Select", true)); # Replace input tags foreach ($names as $key => $name) { if (isset($formFields["data[Field][Listing][{$key}]"])) { $output = str_replace('{' . $names[$key] . '}', $formFields["data[Field][Listing][{$key}]"], $output); } } # Load js and css if ($date_field) { $Html = ClassRegistry::getClass('HtmlHelper'); $Html->app = 'jreviews'; $Libraries = ClassRegistry::getClass('LibrariesHelper'); $Html->js(arrayFilter(array('jq.ui.core', 'jq.ui.datepicker'), $Libraries->js())); $Html->css(arrayFilter(array('jq.ui.core'), $Libraries->css()), false); ?> <script type="text/javascript">jreviews.datepicker();</script> <?php } } return $output; }
/** * Creates the json object used for map rendering * * @param array $results listings * @param mixed $fields custom fields, required when using the GeoMaps module * @param mixed $options mapUI options to override globals when using GeoMaps module */ function makeJsonObject(&$results, &$fields = array(), $options = array()) { $www_base = array_shift(pathinfo(WWW_ROOT)); // Required for thumbnail path $paths = array(S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . 'default' . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . 'default' . DS . 'theme_images' . DS); $path = fileExistsInPath(array('name' => '', 'suffix' => '', 'ext' => ''), $paths); App::import('Helper', array('html', 'routes', 'custom_fields', 'thumbnail')); $Html = new HtmlHelper(); $Routes = new RoutesHelper(); $CustomFields = new CustomFieldsHelper(); $Thumbnail = new ThumbnailHelper(); $Thumbnail->app = 'jreviews'; $Thumbnail->name = $this->c->name; $Thumbnail->action = $this->c->action; $Routes->Config = $CustomFields->Config = $Thumbnail->Config = $this->c->Config; $Routes->Access = $CustomFields->Access = $Thumbnail->Access = $this->c->Access; $Routes->Html = $CustomFields->Html = $Thumbnail->Html = $Html; $CustomFields->viewTheme = $Thumbnail->viewTheme =& $this->c->viewTheme; $CustomFields->viewSuffix =& $this->c->viewSuffix; // Check format of results because we may need to re-format and add fields for Geomaps module $first = current($results); if (!isset($first['Listing'])) { $results = $this->buildListingArray($results, $fields); } // PaidListings - remove unpaid info Configure::read('PaidListings') and PaidListingsComponent::processPaidData($results); $marker_icons = array(); $infowindow_data = array(); $i = 1; $map_counter = 0; $default_icon = $this->c->name == 'categories' ? 'numbered' : 'default'; if (!empty($results)) { $infowindow_fields = str_replace(" ", "", Sanitize::getString($this->c->Config, 'geomaps.infowindow_fields')); $infowindow_fields = $infowindow_fields != '' ? explode(",", $infowindow_fields) : array(); foreach ($results as $key => $result) { $results[$key] = $this->injectDistanceGroup($result); // Override global setting for map display in lists if at least one listing has map enabled // For it's listing type and has valid coordinates if ($this->c->name == 'categories' && isset($result['ListingType']) && Sanitize::getBool($result['ListingType']['config'], 'geomaps.enable_map_list', true)) { if (isset($result['Geomaps']) && abs($result['Geomaps']['lat']) > 0 && abs($result['Geomaps']['lon']) > 0) { $map_counter++; } } // Add menu id if not already there if (!isset($result['Listing']['menu_id'])) { $results[$key]['Listing']['menu_id'] = $this->c->Menu->getCategory(array('cat_id' => $result['Listing']['cat_id'], 'dir_id' => $result['Directory']['dir_id'], 'section_id' => isset($result['Listing']['section_id']) ? $result['Listing']['section_id'] : null, 'listing' => $result['Listing']['listing_id'])); } $listing_index = ($this->c->page - 1) * $this->c->limit + $i++; // Process and add icon info $icon = isset($result['Geomaps']) ? json_decode($result['Geomaps']['icon'], true) : array(); $results[$key]['Geomaps']['icon'] = ''; $icon_name = $default_icon; if (!empty($icon)) { $foundIcon = false; // Check if custom field assigned if ($icon['field'] != '' && substr($icon['field'], 0, 3) == 'jr_') { if (isset($result['Field']['pairs'][$icon['field']]) && isset($result['Field']['pairs'][$icon['field']]['image'][0])) { $icon_name = substr($result['Field']['pairs'][$icon['field']]['image'][0], 0, strpos($result['Field']['pairs'][$icon['field']]['image'][0], '.')); $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $result['Field']['pairs'][$icon['field']]['image'][0]; $foundIcon = true; } } elseif ($icon['cat'] != '' && !$foundIcon) { $icon_name = substr($icon['cat'], 0, strpos($icon['cat'], '.')); if ($icon_name != 'default') { $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $icon['cat']; } } } if (isset($result['Geomaps']) && $result['Geomaps']['lat'] != '' && $result['Geomaps']['lon'] != '' && $result['Geomaps']['lat'] != 0 && $result['Geomaps']['lon']) { # Create infowindow JSON object // start with standard fields $infowindow = array('id' => $result['Listing']['listing_id'], 'url' => str_replace(array($www_base, '&'), array('', '&'), $Routes->content('', $results[$key], array('return_url' => true))), 'index' => $listing_index, 'title' => $result['Listing']['title'], 'image' => str_replace($www_base, '', $Thumbnail->thumb($result, 0, array('tn_mode' => $this->c->Config->list_thumb_mode, 'location' => 'list', 'dimensions' => array($this->c->Config->list_image_resize), 'return_src' => 1))), 'featured' => $result['Listing']['featured'], 'rating_scale' => $this->c->Config->rating_scale, 'user_rating' => $result['Review']['user_rating'], 'user_rating_count' => $result['Review']['user_rating_count'], 'editor_rating' => $result['Review']['editor_rating'], 'editor_rating_count' => $result['Review']['editor_rating_count'], 'lat' => (double) $result['Geomaps']['lat'], 'lon' => (double) $result['Geomaps']['lon'], 'icon' => $icon_name); if (!empty($result['Field']['pairs'])) { # Limit fields will included in the payload json object $result['Field']['pairs'] = array_intersect_key($result['Field']['pairs'], array_flip($infowindow_fields)); foreach ($result['Field']['pairs'] as $name => $fieldArray) { $infowindow['field'][$name] = $CustomFields->field($name, $result); } } $infowindow_data['id' . $result['Listing']['listing_id']] = $infowindow; } } } $this->c->Config->{'geomaps.enable_map_list'} = $map_counter; $mapUI = array(); $zoom = ''; switch ($this->c->name) { case 'categories': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_list', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_list', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_list', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_list', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_list', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_list', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_list', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_list', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_list', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_list', 1); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_list', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'com_content': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_detail', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_detail', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_detail', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_detail', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_detail', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_detail', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_detail', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_detail', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_detail', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_detail', 1); $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_detail', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'module_geomaps': $maptypes = Sanitize::getString($options, 'ui_maptype', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_module', 'buttons') : Sanitize::getString($options, 'ui_maptype'); //buttons|menu|none $maptype_def = Sanitize::getString($options, 'ui_maptype_def', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_module', 'G_NORMAL_MAP') : Sanitize::getString($options, 'ui_maptype_def', 'G_NORMAL_MAP'); $map = Sanitize::getInt($options, 'ui_map', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.map_module', 1) : Sanitize::getBool($options, 'ui_map'); $hybrid = Sanitize::getInt($options, 'ui_hybrid', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_module', 1) : Sanitize::getBool($options, 'ui_hybrid'); $satellite = Sanitize::getInt($options, 'ui_satellite', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_module', 1) : Sanitize::getBool($options, 'ui_satellite'); $terrain = Sanitize::getInt($options, 'ui_terrain', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_module', 1) : Sanitize::getBool($options, 'ui_terrain'); $panzoom = Sanitize::getInt($options, 'ui_panzoom', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_module', 1) : Sanitize::getBool($options, 'ui_panzoom'); $scale = Sanitize::getInt($options, 'ui_scale', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_module', 0) : Sanitize::getBool($options, 'ui_scale'); $scrollwheel = Sanitize::getInt($options, 'ui_scrollwheel', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_module', 0) : Sanitize::getBool($options, 'ui_scrollwheel'); $doubleclick = Sanitize::getInt($options, 'ui_doubleclick', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_module', 1) : Sanitize::getBool($options, 'ui_doubleclick'); $mapUI['title']['trim'] = Sanitize::getInt($options, 'ui_trimtitle_module', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.trimtitle_module', 30) : Sanitize::getBool($options, 'ui_trimtitle_module'); $mapUI['title']['trimchars'] = Sanitize::getInt($options, 'ui_trimtitle_chars', 2) == '2' ? Sanitize::getInt($this->c->Config, 'geomaps.ui.trimtitle_chars', 30) : Sanitize::getInt($options, 'ui_trimtitle_chars'); if (Sanitize::getString($options, 'detail_view', 1)) { $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); } break; } switch ($maptypes) { case 'buttons': $mapUI['controls']['maptypecontrol'] = true; $mapUI['controls']['menumaptypecontrol'] = false; break; case 'menu': $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = true; break; default: $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = false; } $mapUI['maptypes']['def'] = $maptype_def; $mapUI['maptypes']['map'] = $map; $mapUI['maptypes']['hybrid'] = $hybrid; $mapUI['maptypes']['satellite'] = $satellite; $mapUI['maptypes']['terrain'] = $terrain; if ($panzoom) { $mapUI['controls']['smallzoomcontrol3d'] = true; $mapUI['controls']['largemapcontrol3d'] = true; } else { $mapUI['controls']['smallzoomcontrol3d'] = false; $mapUI['controls']['largemapcontrol3d'] = false; } $mapUI['controls']['scalecontrol'] = $scale; $mapUI['zoom']['scrollwheel'] = $scrollwheel; $mapUI['zoom']['doubleclick'] = $doubleclick; $mapUI['zoom']['start'] = $zoom; $mapUI['anchor']['x'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_x', 0); $mapUI['anchor']['y'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_y', 0); unset($Html, $Routes, $CustomFields, $Thumbnail); return json_encode(array('count' => count($infowindow_data), 'mapUI' => $mapUI, 'infowindow' => Sanitize::getString($this->c->Config, 'geomaps.infowindow', '_google'), 'icons' => $this->processIcons($marker_icons), 'payload' => $infowindow_data)); }
/** * Creates the json object used for map rendering * * @param array $results listings * @param mixed $fields custom fields, required when using the GeoMaps module * @param mixed $options mapUI options to override globals when using GeoMaps module */ function makeJsonObject(&$results, &$fields = array(), $options = array()) { $www_base = array_shift(pathinfo(WWW_ROOT)); // Required for thumbnail path $paths = array(S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . 'default' . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . 'default' . DS . 'theme_images' . DS); $path = fileExistsInPath(array('name' => '', 'suffix' => '', 'ext' => ''), $paths); App::import('Helper', array('html', 'routes', 'custom_fields', 'thumbnail')); $Html = new HtmlHelper(); $Routes = new RoutesHelper(); $CustomFields = new CustomFieldsHelper(); $Thumbnail = new ThumbnailHelper(); $Thumbnail->app = 'jreviews'; $Thumbnail->name = $this->c->name; $Thumbnail->action = $this->c->action; $Routes->Config = $CustomFields->Config = $Thumbnail->Config = $this->c->Config; $Routes->Access = $CustomFields->Access = $Thumbnail->Access = $this->c->Access; $Routes->Html = $CustomFields->Html = $Thumbnail->Html = $Html; $CustomFields->viewTheme = $Thumbnail->viewTheme =& $this->c->viewTheme; $CustomFields->viewSuffix =& $this->c->viewSuffix; // Check format of results because we may need to re-format and add fields for Geomaps module $first = current($results); if (!isset($first['Listing'])) { $results = $this->buildListingArray($results, $fields); } // PaidListings - remove unpaid info Configure::read('PaidListings') and PaidListingsComponent::processPaidData($results); $marker_icons = array(); $infowindow_data = array(); $i = 1; $default_icon = $this->c->name == 'categories' ? 'numbered' : 'default'; // make sure we only have the numeric part of the id from request when checking against listing ids $request_id = explode(':', JRequest::getVar('id')); $request_id = $request_id[0]; if (!empty($results)) { foreach ($results as $key => $result) { $results[$key] = $this->injectDistanceGroup($result); // Add menu id if not already there if (!isset($result['Listing']['menu_id'])) { $results[$key]['Listing']['menu_id'] = $this->c->Menu->getCategory($result['Listing']['cat_id'], $result['Listing']['section_id'], $result['Directory']['dir_id'], $result['Listing']['listing_id']); } // Added to support extra coordinates //$coords = $result["Field"]["groups"]["Location Info"]["Fields"]["jr_extracoords"]["value"][0]; //$xtracoords = $CustomFields->field('jr_extracoords', $listing, false, false); if (isset($result["Field"]["groups"]["Location Info"]) && isset($result["Field"]["groups"]["Location Info"]["Fields"]["jr_extracoords"])) { $coords = $result["Field"]["groups"]["Location Info"]["Fields"]["jr_extracoords"]["value"][0]; if ($coords) { $coords = json_decode($coords); $results[$key]["ExtraCoords"] = $coords; if (JRequest::getString("option") != "com_content") { $results[$key]["ExtraCoords"] = 0; } // HTGMOD } } elseif (isset($result["Field"]["pairs"]["jr_extracoords"])) { //detail page $coords = $result["Field"]["pairs"]["jr_extracoords"]["value"][0]; if ($coords) { $coords = json_decode($coords); $results[$key]["ExtraCoords"] = $coords; if ($results[$key]["Listing"]["listing_id"] != $request_id) { // "if the current listing_id in the loop == the listing_id being viewed on the detail page...." $results[$key]["ExtraCoords"] = 0; } } } $listing_index = ($this->c->page - 1) * $this->c->limit + $i++; // Process and add icon info $icon = isset($result['Geomaps']) ? json_decode($result['Geomaps']['icon'], true) : array(); $results[$key]['Geomaps']['icon'] = ''; $icon_name = $default_icon; if (!empty($icon)) { $foundIcon = false; // Check if custom field assigned if ($icon['field'] != '' && substr($icon['field'], 0, 3) == 'jr_') { if (isset($result['Field']['pairs'][$icon['field']]) && isset($result['Field']['pairs'][$icon['field']]['image'][0])) { $icon_name = substr($result['Field']['pairs'][$icon['field']]['image'][0], 0, strpos($result['Field']['pairs'][$icon['field']]['image'][0], '.')); $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $result['Field']['pairs'][$icon['field']]['image'][0]; $foundIcon = true; } } elseif ($icon['cat'] != '' && !$foundIcon) { $icon_name = substr($icon['cat'], 0, strpos($icon['cat'], '.')); if ($icon_name != 'default') { $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $icon['cat']; } } } if (isset($result['Geomaps']) && $result['Geomaps']['lat'] != '' && $result['Geomaps']['lon'] != '' && $result['Geomaps']['lat'] != 0 && $result['Geomaps']['lon']) { # Create infowindow JSON object // start with standard fields $infowindow = array('id' => $result['Listing']['listing_id'], 'url' => str_replace(array($www_base, '&'), array('', '&'), $Routes->content('', $results[$key], array('return_url' => true))), 'index' => $listing_index, 'title' => $result['Listing']['title'], 'image' => str_replace($www_base, '', $Thumbnail->thumb($result, 0, 'scale', 'list', array($this->c->Config->list_image_resize), array('return_src' => 1))), 'featured' => $result['Listing']['featured'], 'rating_scale' => $this->c->Config->rating_scale, 'user_rating' => $result['Review']['user_rating'], 'user_rating_count' => $result['Review']['user_rating_count'], 'editor_rating' => $result['Review']['editor_rating'], 'editor_rating_count' => $result['Review']['editor_rating_count'], 'lat' => (double) $result['Geomaps']['lat'], 'lon' => (double) $result['Geomaps']['lon'], 'icon' => $icon_name); // Added for Hooked $infowindow['criteria_id'] = $result['Criteria']['criteria_id']; if (isset($results[$key]["ExtraCoords"])) { $infowindow['extracoords'] = $results[$key]["ExtraCoords"]; } if (isset($results[$key]['Listing']['relations'])) { $infowindow['relations'] = $results[$key]['Listing']['relations']; } if ($results[$key]['Listing']['section_id'] != 1) { $infowindow['hascontent'] = 1; } else { if (isset($results[$key]['Listing']['summary']) && $results[$key]['Listing']['summary'] != '') { $infowindow['hascontent'] = 1; } else { $infowindow['hascontent'] = 0; } } if (!empty($result['Field']['pairs'])) { foreach ($result['Field']['pairs'] as $name => $fieldArray) { $infowindow['field'][$name] = $CustomFields->field($name, $result); } } $infowindow_data['id' . $result['Listing']['listing_id']] = $infowindow; } } } $mapUI = array(); $zoom = ''; switch ($this->c->name) { case 'categories': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_list', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_list', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_list', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_list', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_list', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_list', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_list', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_list', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_list', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_list', 1); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_list', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'com_content': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_detail', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_detail', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_detail', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_detail', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_detail', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_detail', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_detail', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_detail', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_detail', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_detail', 1); $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_detail', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'module_geomaps': $maptypes = Sanitize::getString($options, 'ui_maptype', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_module', 'buttons') : Sanitize::getString($options, 'ui_maptype'); //buttons|menu|none $maptype_def = Sanitize::getString($options, 'ui_maptype_def', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_module', 'G_NORMAL_MAP') : Sanitize::getString($options, 'ui_maptype_def', 'G_NORMAL_MAP'); $map = Sanitize::getInt($options, 'ui_map', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.map_module', 1) : Sanitize::getBool($options, 'ui_map'); $hybrid = Sanitize::getInt($options, 'ui_hybrid', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_module', 1) : Sanitize::getBool($options, 'ui_hybrid'); $satellite = Sanitize::getInt($options, 'ui_satellite', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_module', 1) : Sanitize::getBool($options, 'ui_satellite'); $terrain = Sanitize::getInt($options, 'ui_terrain', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_module', 1) : Sanitize::getBool($options, 'ui_terrain'); $panzoom = Sanitize::getInt($options, 'ui_panzoom', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_module', 1) : Sanitize::getBool($options, 'ui_panzoom'); $scale = Sanitize::getInt($options, 'ui_scale', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_module', 0) : Sanitize::getBool($options, 'ui_scale'); $scrollwheel = Sanitize::getInt($options, 'ui_scrollwheel', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_module', 0) : Sanitize::getBool($options, 'ui_scrollwheel'); $doubleclick = Sanitize::getInt($options, 'ui_doubleclick', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_module', 1) : Sanitize::getBool($options, 'ui_doubleclick'); $mapUI['title']['trim'] = Sanitize::getInt($options, 'ui_trimtitle_module', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.trimtitle_module', 30) : Sanitize::getBool($options, 'ui_trimtitle_module'); $mapUI['title']['trimchars'] = Sanitize::getInt($options, 'ui_trimtitle_chars', 2) == '2' ? Sanitize::getInt($this->c->Config, 'geomaps.ui.trimtitle_chars', 30) : Sanitize::getInt($options, 'ui_trimtitle_chars'); if (Sanitize::getString($options, 'detail_view', 1)) { $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); } break; } switch ($maptypes) { case 'buttons': $mapUI['controls']['maptypecontrol'] = true; $mapUI['controls']['menumaptypecontrol'] = false; break; case 'menu': $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = true; break; default: $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = false; } $mapUI['maptypes']['def'] = $maptype_def; $mapUI['maptypes']['map'] = $map; $mapUI['maptypes']['hybrid'] = $hybrid; $mapUI['maptypes']['satellite'] = $satellite; $mapUI['maptypes']['terrain'] = $terrain; if ($panzoom) { $mapUI['controls']['smallzoomcontrol3d'] = true; $mapUI['controls']['largemapcontrol3d'] = true; } else { $mapUI['controls']['smallzoomcontrol3d'] = false; $mapUI['controls']['largemapcontrol3d'] = false; } $mapUI['controls']['scalecontrol'] = $scale; $mapUI['zoom']['scrollwheel'] = $scrollwheel; $mapUI['zoom']['doubleclick'] = $doubleclick; $mapUI['zoom']['start'] = $zoom; $mapUI['anchor']['x'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_x', 0); $mapUI['anchor']['y'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_y', 0); unset($Html, $Routes, $CustomFields, $Thumbnail); return json_encode(array('count' => count($infowindow_data), 'mapUI' => $mapUI, 'infowindow' => Sanitize::getString($this->c->Config, 'geomaps.infowindow', '_google'), 'icons' => $this->processIcons($marker_icons), 'payload' => $infowindow_data)); }