before_filter :check_database_writable, :only => [:create, :edit, :delete]
before_filter :check_api_readable, :only => [:api_details, :api_data]
before_filter :check_api_writable, :only => [:api_create]
+ before_filter :require_allow_read_gpx, :only => [:api_details, :api_data]
+ before_filter :require_allow_write_gpx, :only => [:api_create]
# Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.).
# target_user - if set, specifies the user to fetch traces for. if not set will fetch all traces
# 4 - user's traces, not logged in as that user = all user's public traces
if target_user.nil? # all traces
if @user
- conditions = ["(gpx_files.visibility <> 'private' OR gpx_files.user_id = ?)", @user.id] #1
+ conditions = ["(gpx_files.visibility in ('public', 'identifiable') OR gpx_files.user_id = ?)", @user.id] #1
else
- conditions = ["gpx_files.visibility <> 'private'"] #2
+ conditions = ["gpx_files.visibility in ('public', 'identifiable')"] #2
end
else
if @user and @user == target_user
conditions = ["gpx_files.user_id = ?", @user.id] #3 (check vs user id, so no join + can't pick up non-public traces by changing name)
else
- conditions = ["gpx_files.visibility <> 'private' AND gpx_files.user_id = ?", target_user.id] #4
+ conditions = ["gpx_files.visibility in ('public', 'identifiable') AND gpx_files.user_id = ?", target_user.id] #4
end
end
end
def georss
- conditions = ["gpx_files.visibility <> 'private'"]
+ conditions = ["gpx_files.visibility in ('public', 'identifiable')"]
if params[:display_name]
conditions[0] += " AND users.display_name = ?"
if request.post?
tags = params[:tags] || ""
description = params[:description] || ""
- visibility = params[:visibility] || false
+ visibility = params[:visibility]
- if params[:public] && !visibility
- visibility = "public"
+ if visibility.nil?
+ if params[:public] && params[:public].to_i.nonzero?
+ visibility = "public"
+ else
+ visibility = "private"
+ end
end
-
+
if params[:file].respond_to?(:read)
do_create(params[:file], tags, description, visibility)