/** * Get all tags around some location within some $radius. * * @param $lat * @param $lon * @param $radius * @return array */ public function getTagsAroundLocation($lat, $lon, $radius) { $locationModel = new LocationModel($this->db); $locations = $locationModel->getLocations($lat, $lon, $radius); $locationsIds = array(); foreach ($locations as $location) { $locationsIds[] = $location->getId(); } $tagIds = array(); $query = $this->db->prepare("SELECT tag_id FROM images WHERE location_id IN(" . implode(',', $locationsIds) . ")"); $query->setFetchMode(PDO::FETCH_ASSOC); $query->execute(); while ($row = $query->fetch()) { $tagId = $row['tag_id']; if (!in_array($tagId, $tagIds)) { $tagIds[] = $tagId; } } $tags = array(); $tagModel = new TagModel($this->db); foreach ($tagIds as $id) { $tag = $tagModel->getTagById($id); if ($tag != null) { $tags[] = $tag; } } return $tags; }