Index: openacs-4/packages/courses/tcl/course-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/courses/tcl/course-procs.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/courses/tcl/course-procs.tcl 2 Feb 2005 23:01:00 -0000 1.2 +++ openacs-4/packages/courses/tcl/course-procs.tcl 3 Feb 2005 22:41:27 -0000 1.3 @@ -2,7 +2,8 @@ Tcl API for course_catalog store and manipulation - @author Miguel Marin (miguelmarin@viaro.net) Viaro Networks (www.viaro.net) + @author Miguel Marin (miguelmarin@viaro.net) + @Viaro Networks (href=www.viaro.net>www.viaro.net) } namespace eval course_catalog {} @@ -24,10 +25,18 @@ if { [string equal $parent_id ""] } { set parent_id [course_catalog::get_folder_id] } - return [db_string get_item_from_name { } ] } +ad_proc -public course_catalog::get_creation_user { + -object_id:required +} { + Returns the creation_user of the object_id, returns -1 otherwise + @object_id@ +} { + return [db_string get_creation_user { } -default -1] +} + ad_proc -private course_catalog::set_live { -name:required -revision_id:required @@ -56,7 +65,7 @@ } -ad_proc -public course_catalog::add_relation { +ad_proc -private course_catalog::add_relation { -course_id:required -class_id:required } { @@ -67,7 +76,7 @@ db_exec_plsql add_relation { } } -ad_proc -public course_catalog::has_relation { +ad_proc -private course_catalog::has_relation { -course_id:required } { Returns the class_id of dotlrn_class_instance related to course_id, returns 0 otherwise. @@ -76,7 +85,7 @@ return [db_string has_relation { } -default 0] } -ad_proc -public course_catalog::has_relation_rel_id { +ad_proc -private course_catalog::has_relation_rel_id { -course_id:required } { Returns the class_id of dotlrn_class_instance related to course_id, returns 0 otherwise. @@ -86,11 +95,11 @@ } -ad_proc -public course_catalog::check_live_latest { +ad_proc -private course_catalog::check_live_latest { -revision_id:required } { - Deletes the row of course_catalog table and cr_revisions table where revision_id = @course_id@ - @revision_id The id of the revision in cr_items + Checks if @revision_id@ is the live revision or the latest revision in cr_items + @revision_id@ } { set live [db_string check_live { } -default 0] set latest [db_string check_latest { } -default 0] @@ -101,7 +110,7 @@ } } -ad_proc -public course_catalog::delete_row { +ad_proc -private course_catalog::delete_row { -course_id:required } { Deletes the row of course_catalog table and cr_revisions table where revision_id = @course_id@ @@ -116,7 +125,7 @@ } } -ad_proc -public course_catalog::delete_relation { +ad_proc -private course_catalog::delete_relation { -course_id:required } { Deletes the relation of course_catalog and dotrln class @@ -126,4 +135,46 @@ if { ![string equal $rel_id "0"] } { db_exec_plsql remove_relation { } } +} + +ad_proc -private course_catalog::grant_permissions { + -party_id:required + -object_id:required + -creation_user:required +} { + Gives admin permission to @party_id@ over @object_id@ and over all assessment_id created + by @creation_user@ + @party_id@ The user_id to give permissions + @object_id@ The course_id that the @party_id@ will have permissions on + @creation_user@ The user_id of the user that creates the course_id +} { + permission::grant -party_id $party_id -object_id $object_id -privilege "admin" + set asm_package_id [apm_package_id_from_key assessment] + + db_foreach assessment { } { + if {[permission::permission_p -party_id $creation_user -object_id $assessment_id -privilege "admin"] == 1} { + permission::grant -party_id $party_id -object_id $assessment_id -privilege "admin" + } + } +} + +ad_proc -private course_catalog::revoke_permissions { + -party_id:required + -object_id:required + -creation_user:required +} { + Revokes admin permission to @party_id@ over @object_id@ and over all assessment_id created + by @creation_user@ + @party_id@ The user_id to revoke permissions + @object_id@ The course_id over wich @party_id@ has permissions on + @creation_user@ The user_id of the user that creates the course_id +} { + permission::revoke -party_id $party_id -object_id $object_id -privilege "admin" + set asm_package_id [apm_package_id_from_key assessment] + + db_foreach assessment { } { + if { [permission::permission_p -party_id $creation_user -object_id $assessment_id -privilege admin] == 1 } { + permission::revoke -party_id $party_id -object_id $assessment_id -privilege "admin" + } + } } \ No newline at end of file