object-procs.tcl
Does not contain a contract.
- Location:
- /packages/acs-tcl/tcl/object-procs.tcl
Related Files
[ hide source ] | [ make this the default ]
File Contents
ad_library { Object support for ACS. @author Jon Salz (jsalz@arsdigita.com) @creation-date 11 Aug 2000 @cvs-id $Id: object-procs.tcl,v 1.16 2024/09/11 06:15:48 gustafn Exp $ } namespace eval acs_object {} ad_proc -private acs_lookup_magic_object_no_cache { name } { Non memoized version of acs_magic_object. @return the magic object's object ID @see acs_magic_object } { return [db_string magic_object_select {} ] } ad_proc -private -deprecated acs_lookup_magic_object { name } { Non memoized version of acs_magic_object. @return the magic object's object ID @see acs_magic_object } { return [util_memoize [list acs_lookup_magic_object_no_cache $name]] } ad_proc -public acs_magic_object { name } { Returns the object ID of a magic object. @param name the name of the magic object (as listed in the <code>acs_magic_objects</code> table). @return the object ID. @error if no object exists with that magic name. } { return [acs::per_thread_cache eval -key acs-tcl.acs_magic_object($name) { acs_lookup_magic_object_no_cache $name }] } ad_proc -public acs_object_name { object_id } { Returns the name of an object. } { return [db_string object_name_get { select acs_object.name(:object_id) from dual }] } ad_proc -public acs_object_type { object_id } { Returns the type of an object. } { return [db_string object_type_select { select object_type from acs_objects where object_id = :object_id } -default ""] } d_proc -public acs_object::get { {-object_id:required} {-array} {-element} } { Gets information about an acs_object. If called without "-element", it returns a dict containing object_id, package_id, object_type, context_id, security_inherit_p, creation_user, creation_date_ansi, creation_ip, last_modified_ansi, modifying_user, modifying_ip, tree_sortkey, object_name. If called with "-element" it returns the denoted element (similar to e.g. "party::get"). @param array An array in the caller's namespace into which the info should be delivered (upvared) @param element to be returned @param object_id for which the information should be retrieved @error when object_id does not exist } { if {[info exists array]} { upvar 1 $array row } db_1row select_object { select o.object_id, o.title, o.package_id, o.object_type, o.context_id, o.security_inherit_p, o.creation_user, to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date_ansi, o.creation_ip, to_char(o.last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi, o.modifying_user, o.modifying_ip, acs_object.name(o.object_id) as object_name from acs_objects o where o.object_id = :object_id } -column_array row if {[info exists element]} { return [dict get [array get row] $element] } else { return [array get row] } } d_proc -public acs_object::package_id { {-object_id:required} } { Gets the package_id of the object @author Malte Sussdorff (malte.sussdorff@cognovis.de) @creation-date 2006-08-10 @param object_id the object to get the package_id for @return package_id of the object. Empty string if the package_id is not stored } { return [util_memoize [list acs_object::package_id_not_cached -object_id $object_id]] } d_proc -private acs_object::package_id_not_cached { {-object_id:required} } { Gets the package_id of the object @author Malte Sussdorff (malte.sussdorff@cognovis.de) @creation-date 2006-08-10 @param object_id the object to get the package_id for @return package_id of the object. Empty string if the package_id is not stored } { return [db_string get_package_id {} -default ""] } d_proc -public acs_object::get_element { {-object_id:required} {-element:required} } { Gets a specific element from the info returned by acs_object::get. @param object_id the object to get data for @param element the field to return @return the value of the specified element @see acs_object::get } { return [acs_object::get -object_id $object_id -element $element] } d_proc -public acs_object::object_p { -id:required } { @author Jim Lynch (jim@jam.sessionsnet.org) @author Malte Sussdorff @creation-date 2007-01-26 @param id ID of the potential acs-object @return true if object whose id is $id exists } { return [db_string object_exists {} -default 0] } d_proc -private acs_object::is_type_p { -object_id:required -object_types:required -no_hierarchy:boolean } { Returns whether an object is of a given object type. @return boolean } { if { ![string is integer -strict $object_id] } { return 0 } set object [acs::per_request_cache eval \ -key acs-tcl.acs_object.is_type_p($object_id,$object_types,$no_hierarchy_p) { set object_type [acs_object_type $object_id] if {$object_type eq ""} { # Object was not found return 0 } elseif {$object_type in $object_types} { # Object is one of the types we look for return 1 } elseif {$no_hierarchy_p} { # Object is not one of the types we look # for and we were told to not look into # the hierarchy return 0 } else { # We expand the object type hierarchy and # see if one of our supertypes is a type # we look for foreach supertype [acs_object_type::supertypes -subtype $object_type] { if {$supertype in $object_types} { return 1 } } return 0 } }] } d_proc -public acs_object::set_context_id { {-object_id:required} {-context_id:required} } { Sets the context_id of the specified object. } { db_dml update_context_id {} } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: