Index: openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html,v diff -u -r1.40 -r1.41 --- openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html 16 Feb 2005 00:21:03 -0000 1.40 +++ openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html 4 Jun 2006 00:45:24 -0000 1.41 @@ -1,4 +1,5 @@ -Programming with AOLserver

Programming with AOLserver

By Michael Yoon, Jon Salz and Lars Pind.

+ +Programming with AOLserver

Programming with AOLserver

By Michael Yoon, Jon Salz and Lars Pind.

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

The global command

@@ -23,7 +24,7 @@ interpreter) between HTTP requests. If it didn't, that would affect (and complicate) our use of script-global variables dramatically, which would then be better described as thread-global variables. Given -AOLserver's behaviour, however, "script-global" is a more +AOLserver's behaviour, however, "script-global" is a more appropriate term.

Threads and Scheduled Procedures

ns_schedule_proc and ad_schedule_proc each take a -thread flag to cause a scheduled procedure to run @@ -81,26 +82,26 @@ ad_proc ad_get_user_info { user_id } { db_1row user_info { select first_names, last_name, email from users where user_id = :user_id } return [list \ - name "$first_names $last_name" \ + name "$first_names $last_name" \ email $email \ - namelink "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>" \ - emaillink "<a href=\"mailto:$email\">$email</a>"] + namelink "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>" \ + emaillink "<a href=\"mailto:$email\">$email</a>"] } array set user_info [ad_get_user_info $user_id] -doc_body_append "$user_info(namelink) ($user_info(emaillink))" +doc_body_append "$user_info(namelink) ($user_info(emaillink))"

You could also have done this by using an array internally and using array get:

 
 ad_proc ad_get_user_info { user_id } {
     db_1row user_info { select first_names, last_name, email from users where user_id = :user_id }
-    set user_info(name) "$first_names $last_name"
+    set user_info(name) "$first_names $last_name"
     set user_info(email) $email
-    set user_info(namelink) "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>"
-    set user_info(emaillink) "<a href=\"mailto:$email\">$email</a>"
+    set user_info(namelink) "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>"
+    set user_info(emaillink) "<a href=\"mailto:$email\">$email</a>"
     return [array get user_info]
 }
 
@@ -125,15 +126,15 @@
 } {
     upvar $array user_info
     db_1row user_info { select first_names, last_name, email from users where user_id = :user_id }
-    set user_info(name) "$first_names $last_name"
+    set user_info(name) "$first_names $last_name"
     set user_info(email) $email
-    set user_info(namelink) "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>"
-    set user_info(emaillink) "<a href=\"mailto:$email\">$email</a>"
+    set user_info(namelink) "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>"
+    set user_info(emaillink) "<a href=\"mailto:$email\">$email</a>"
 }
 
 ad_get_user_info -array user_info $user_id
 
-doc_body_append "$user_info(namelink) ($user_info(emaillink))"
+doc_body_append "$user_info(namelink) ($user_info(emaillink))"
 
 

We prefer pass-by-value over pass-by-reference. Pass-by-reference makes the code harder to read and debug, because changing a value in one place has @@ -157,16 +158,16 @@ user_id } { db_1row user_info { select first_names, last_name, email from users where user_id = :user_id } - ns_set put $set name "$first_names $last_name" + ns_set put $set name "$first_names $last_name" ns_set put $set email $email - ns_set put $set namelink "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>" - ns_set put $set emaillink "<a href=\"mailto:$email\">$email</a>" + ns_set put $set namelink "<a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\">$first_names $last_name</a>" + ns_set put $set emaillink "<a href=\"mailto:$email\">$email</a>" } set user_info [ns_set create] ad_get_user_info -set $user_info $user_id -doc_body_append "[ns_set get $user_info namelink] ([ns_set get $user_info emaillink])" +doc_body_append "[ns_set get $user_info namelink] ([ns_set get $user_info emaillink])"

We don't recommend ns_set as a general mechanism for passing @@ -179,12 +180,12 @@ # ns_set variant set size [ns_set size $myset] for { set i 0 } { $i < $size } { incr i } { - puts "[ns_set key $myset $i] = [ns_set value $myset $i]" + puts "[ns_set key $myset $i] = [ns_set value $myset $i]" } # array variant foreach name [array names myarray] { - puts "$myarray($name) = $myarray($name)" + puts "$myarray($name) = $myarray($name)" }