/** * Construct a new query * @param array $query An array of search type and query option pairs * @return ElggList */ public function setSearchQuery($query = array()) { if (!is_array($query)) { return $this; } foreach ($query as $type => $options) { try { $listQuery = new ElggListQuery($type, $options); $this->options = $listQuery->sqlGetOptions($this->options); } catch (Exception $e) { elgg_log($e->getMessage(), 'ERROR'); } } return $this; }
/** * Join coordinates metadata * @param string $msvlat Join name for latitude metadata value * @param string $msvlong Join name for longitude metadata value * @param string $mdlat Join name for latitude metadata row * @param string $mdlong Join name for longitude metadata row * @return ElggMap */ private function sqlJoinCoordinates($msvlat = 'msvlat', $msvlong = 'msvlong', $mdlat = 'mdlat', $mdlong = 'mdlong') { $dbprefix = elgg_get_config('dbprefix'); $map = ElggListQuery::getMetaMap(array('geo:lat', 'geo:long')); $msvlat = sanitize_string($msvlat); $msvlong = sanitize_string($msvlong); $mdlat = sanitize_string($mdlat); $mdlong = sanitize_string($mdlong); $this->options['joins'][$mdlat] = "JOIN {$dbprefix}metadata {$mdlat} on e.guid = {$mdlat}.entity_guid AND {$mdlat}.name_id = {$map['geo:lat']}"; $this->options['joins'][$msvlat] = "JOIN {$dbprefix}metastrings {$msvlat} on {$mdlat}.value_id = {$msvlat}.id"; $this->options['joins'][$mdlong] = "JOIN {$dbprefix}metadata {$mdlong} on e.guid = {$mdlong}.entity_guid AND {$mdlong}.name_id = {$map['geo:long']}"; $this->options['joins'][$msvlong] = "JOIN {$dbprefix}metastrings {$msvlong} ON {$mdlong}.value_id = {$msvlong}.id"; return $this; }