+ def rss
+ # Figure out the bbox
+ bbox = params['bbox']
+
+ if bbox and bbox.count(',') == 3
+ bbox = bbox.split(',')
+ @min_lon, @min_lat, @max_lon, @max_lat = sanitise_boundaries(bbox)
+ else
+ @min_lon = -180.0
+ @min_lat = -90.0
+ @max_lon = 180.0
+ @max_lat = 90.0
+ end
+
+ limit = getLimit
+ conditions = closedCondition
+ conditions = cond_merge conditions, [OSM.sql_for_area_no_quadtile(@min_lat, @min_lon, @max_lat, @max_lon)]
+
+ check_boundaries(@min_lon, @min_lat, @max_lon, @max_lat, :false)
+
+ @comments = MapBugComment.find(:all, :limit => limit, :order => "date_created DESC", :joins => :map_bug, :include => :map_bug, :conditions => conditions)
+ render :template => 'map_bugs/rss.rss'
+ end
+
+ def read
+ @bug = MapBug.find(params['id'])
+ raise OSM::APINotFoundError unless @bug
+ raise OSM::APIAlreadyDeletedError unless @bug.visible
+
+ respond_to do |format|
+ format.rss
+ format.xml
+ format.json { render :json => @bug.to_json(:methods => [:lat, :lon], :only => [:id, :status, :date_created], :include => { :map_bug_comment => { :only => [:commenter_name, :date_created, :comment]}}) }
+ format.gpx
+ end
+ end
+
+ def delete
+ bug = MapBug.find(params['id'])
+ raise OSM::APINotFoundError unless @bug
+ raise OSM::APIAlreadyDeletedError unless @bug.visible
+
+ MapBug.transaction do
+ bug.status = "hidden"
+ bug.save
+ add_comment(bug,:nil,name,"hidden")
+ end
+
+ render :text => "ok\n", :content_type => "text/html"
+ end
+
+ def search
+ raise OSM::APIBadUserInput.new("No query string was given") unless params['q']
+ limit = getLimit
+ conditions = closedCondition
+ conditions = cond_merge conditions, ['map_bug_comment.comment ~ ?', params['q']]