bboard_get_topic_info

one of the documented procedures in this installation of the ACS
Usage:
bboard_get_topic_info
What it does:
Find info about a topic. if {[exists_and_not_null topic_id]} { validate_integer "topic_id" $topic_id }
Defined in: /web/philip/tcl/bboard-defs.tcl

Source code:


    uplevel { 
	if {!([exists_and_not_null topic_id] && ![catch {set selection [ns_db 1row $db "select t.*,  u.email as maintainer_email, u.first_names || ' ' || u.last_name as maintainer_name, primary_maintainer_id
	from bboard_topics t, users u
	where topic_id=$topic_id
	and t.primary_maintainer_id = u.user_id"]} errmsg])
	&& !([exists_and_not_null topic] && ![catch {set selection [ns_db 1row $db
	"select t.*, u.email as maintainer_email, u.first_names || ' ' ||
	u.last_name as maintainer_name, primary_maintainer_id
	from bboard_topics t, users u
	where topic = '[DoubleApos $topic]'
	and t.primary_maintainer_id = u.user_id"]} errmsg]) } {
	    # Note that we didn't use QQtopic above because some
	    # of the pages in bboard call set_form_variables
	    # (instead of set_the_usual_form_variables)
	    # which does not set a QQ variable
	    bboard_return_cannot_find_topic_page
	    return -1
	}    
	set_variables_after_query
	set user_id [ad_verify_and_get_user_id]
	# Check read-access of this topic
	if {[string compare $read_access "any"] == 0} {
	    # Any user can view this topic
	    return 1
	} elseif {[string compare $read_access "public"] == 0} {
	    # "public" means user must be logged in to read this topic
	    if {$user_id == 0} { 
		ad_returnredirect /register?return_url=[ns_urlencode "[bboard_hardwired_url_stub]admin-home?[export_url_vars topic_id]"]
		return -1
	    } else {
		return 1
	    }
	} elseif {[string compare $read_access "group"] == 0} {
	    
	    # "group" means the user must belong to one of the topic's groups.
	    # branimir 2000-02-04
	    
	    # lars 2000-04-27: first we check the group associated with the topic
	    if {[ad_user_group_member $db $group_id $user_id]} {
		ns_db flush $db
		return 1
	    } 

	    # Check if user belongs to any of topic's groups in adminstration_info
	    if {[ad_permission_p $db bboard $topic_id "" $user_id]} {
		ns_db flush $db
		return 1
	    } else {
		# Well, the user isn't in any of the topic's groups. But.. 
		# If they are site admin group member, let's let them in anyway. 
		# default to group is private (read_access = group)
	       if {[ad_administration_group_member $db "site_wide" "" $user_id]} {
		   # user is site admin, let them look at the bboard
		   return 1
	       } else {
		   ns_return 200 text/html "[bboard_header "Unauthorized"]
   <h2>Unauthorized</h2>
		   <hr>
		   
		   You are either not logged into <A href=\"[ad_url]\">[ad_system_name]</a>
		   or not authorized to view the $topic forum.

		   [bboard_footer]"
		   return -1
	       }
	   }
       }
   }


philg@mit.edu