relation-procs.tcl

Helpers for dealing with relations

Location:
packages/acs-subsite/tcl/relation-procs.tcl
Created:
Sun Dec 10 16:46:11 2000
Author:
mbryzek@arsdigita.com
CVS Identification:
$Id: relation-procs.tcl,v 1.20.2.2 2019/05/16 09:27:52 gustafn Exp $

Procedures in this file

Detailed information

relation::get_id (public)

 relation::get_id -object_id_one object_id_one \
    -object_id_two object_id_two [ -rel_type rel_type ]

Find the rel_id of the relation matching the given object_id_one, object_id_two, and rel_type.

Switches:
-object_id_one
(required)
-object_id_two
(required)
-rel_type
(defaults to "membership_rel") (optional)
Returns:
rel_id of the found acs_rel, or the empty string if none existed.

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_relation_procs acs_subsite_relation_procs (test acs-subsite) relation::get_id relation::get_id test_acs_subsite_relation_procs->relation::get_id db_string db_string (public) relation::get_id->db_string group::admin_p group::admin_p (public) group::admin_p->relation::get_id packages/acs-subsite/www/group-leave.tcl packages/acs-subsite/ www/group-leave.tcl packages/acs-subsite/www/group-leave.tcl->relation::get_id

Testcases:
acs_subsite_relation_procs

relation::get_object_one (public)

 relation::get_object_one -object_id_two object_id_two \
    [ -rel_type rel_type ] [ -multiple ]

Return the object_id of object one if a relation of rel_type exists between the supplied object_id_two and it.

Switches:
-object_id_two
(required)
-rel_type
(defaults to "membership_rel") (optional)
-multiple
(boolean) (optional)

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_relation_procs acs_subsite_relation_procs (test acs-subsite) relation::get_object_one relation::get_object_one test_acs_subsite_relation_procs->relation::get_object_one test_category_tree_procs category_tree_procs (test categories) test_category_tree_procs->relation::get_object_one db_list db_list (public) relation::get_object_one->db_list db_string db_string (public) relation::get_object_one->db_string relation::get_objects relation::get_objects (public) relation::get_objects->relation::get_object_one

Testcases:
acs_subsite_relation_procs, category_tree_procs

relation::get_object_two (public)

 relation::get_object_two -object_id_one object_id_one \
    [ -rel_type rel_type ] [ -multiple ]

Return the object_id of object two if a relation of rel_type exists between the supplied object_id_one and it.

Switches:
-object_id_one
(required)
-rel_type
(defaults to "membership_rel") (optional)
-multiple
(boolean) (optional)

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_relation_procs acs_subsite_relation_procs (test acs-subsite) relation::get_object_two relation::get_object_two test_acs_subsite_relation_procs->relation::get_object_two db_list db_list (public) relation::get_object_two->db_list db_string db_string (public) relation::get_object_two->db_string relation::get_objects relation::get_objects (public) relation::get_objects->relation::get_object_two

Testcases:
acs_subsite_relation_procs

relation::get_objects (public)

 relation::get_objects [ -object_id_one object_id_one ] \
    [ -object_id_two object_id_two ] [ -rel_type rel_type ]

Return the list of object_ids if a relation of rel_type exists between the supplied object_id and it.

Switches:
-object_id_one
(optional)
-object_id_two
(optional)
-rel_type
(defaults to "membership_rel") (optional)

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_relation_procs acs_subsite_relation_procs (test acs-subsite) relation::get_objects relation::get_objects test_acs_subsite_relation_procs->relation::get_objects _ _ (public) relation::get_objects->_ ad_return_error ad_return_error (public) relation::get_objects->ad_return_error ad_script_abort ad_script_abort (public) relation::get_objects->ad_script_abort relation::get_object_one relation::get_object_one (public) relation::get_objects->relation::get_object_one relation::get_object_two relation::get_object_two (public) relation::get_objects->relation::get_object_two

Testcases:
acs_subsite_relation_procs

relation_add (public)

 relation_add [ -form_id form_id ] [ -extra_vars extra_vars ] \
    [ -variable_prefix variable_prefix ] \
    [ -creation_user creation_user ] [ -creation_ip creation_ip ] \
    [ -member_state member_state ] rel_type object_id_one \
    object_id_two

Creates a new relation of the specified type between the two objects. Throws an error if the new relation violates a relational constraint.

Switches:
-form_id
(optional)
The form id from templating form system
-extra_vars
(optional)
An ns_set of extra variables
-variable_prefix
(optional)
Only form elements that begin with the specified prefix will be processed.
-creation_user
(optional)
The user who is creating the relation
-creation_ip
(optional)
-member_state
(optional)
Only used for membership_relations. See column membership_rels.member_state for more info.
Parameters:
rel_type
object_id_one
object_id_two
Returns:
The rel_id of the new relation
Authors:
Michael Bryzek <mbryzek@arsdigita.com>
Ben Adida <ben@openforce.net>
Created:
1/5/2001

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_check_composite_group acs_subsite_check_composite_group (test acs-subsite) relation_add relation_add test_acs_subsite_check_composite_group->relation_add test_acs_subsite_expose_bug_775 acs_subsite_expose_bug_775 (test acs-subsite) test_acs_subsite_expose_bug_775->relation_add test_acs_subsite_rel_segment_new acs_subsite_rel_segment_new (test acs-subsite) test_acs_subsite_rel_segment_new->relation_add test_acs_subsite_relation_procs acs_subsite_relation_procs (test acs-subsite) test_acs_subsite_relation_procs->relation_add db_string db_string (public) relation_add->db_string db_transaction db_transaction (public) relation_add->db_transaction package_instantiate_object package_instantiate_object (public) relation_add->package_instantiate_object group::add_member group::add_member (public) group::add_member->relation_add install::xml::action::relation-add install::xml::action::relation-add (public) install::xml::action::relation-add->relation_add packages/acs-subsite/www/admin/groups/new.tcl packages/acs-subsite/ www/admin/groups/new.tcl packages/acs-subsite/www/admin/groups/new.tcl->relation_add packages/acs-subsite/www/admin/parties/new.tcl packages/acs-subsite/ www/admin/parties/new.tcl packages/acs-subsite/www/admin/parties/new.tcl->relation_add packages/acs-subsite/www/admin/users/new.tcl packages/acs-subsite/ www/admin/users/new.tcl packages/acs-subsite/www/admin/users/new.tcl->relation_add

Testcases:
acs_subsite_expose_bug_775, acs_subsite_check_composite_group, acs_subsite_relation_procs, acs_subsite_rel_segment_new

relation_permission_p (public, deprecated)

 relation_permission_p [ -user_id user_id ] [ -privilege privilege ] \
    rel_id
Deprecated. Invoking this procedure generates a warning.

Wrapper for ad_permission_p that lets us default to read permission Deprecated: just another wrapper for permission::permission_p

Switches:
-user_id
(optional)
-privilege
(defaults to "read") (optional)
Parameters:
rel_id
Author:
Michael Bryzek <mbryzek@arsdigita.com>
Created:
12/2000
See Also:

Partial Call Graph (max 5 caller/called nodes):
%3 ad_log_deprecated ad_log_deprecated (public) permission::permission_p permission::permission_p (public) relation_permission_p relation_permission_p relation_permission_p->ad_log_deprecated relation_permission_p->permission::permission_p

Testcases:
No testcase defined.

relation_remove (public)

 relation_remove [ rel_id ]

Removes the specified relation. Throws an error if we violate a relational constraint by removing this relation.

Parameters:
rel_id (optional)
Returns:
1 if we delete anything. 0 otherwise (e.g. when the relation was already deleted)
Author:
Michael Bryzek <mbryzek@arsdigita.com>
Created:
1/5/2001

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_relation_procs acs_subsite_relation_procs (test acs-subsite) relation_remove relation_remove test_acs_subsite_relation_procs->relation_remove db_0or1row db_0or1row (public) relation_remove->db_0or1row db_exec_plsql db_exec_plsql (public) relation_remove->db_exec_plsql relation_segment_has_dependent relation_segment_has_dependent (public) relation_remove->relation_segment_has_dependent acs_user::demote_user acs_user::demote_user (public) acs_user::demote_user->relation_remove application_link::delete_links application_link::delete_links (public) application_link::delete_links->relation_remove group::remove_member group::remove_member (public) group::remove_member->relation_remove packages/acs-subsite/www/admin/groups/rel-type-remove-2.tcl packages/acs-subsite/ www/admin/groups/rel-type-remove-2.tcl packages/acs-subsite/www/admin/groups/rel-type-remove-2.tcl->relation_remove packages/acs-subsite/www/admin/rel-types/delete-2.tcl packages/acs-subsite/ www/admin/rel-types/delete-2.tcl packages/acs-subsite/www/admin/rel-types/delete-2.tcl->relation_remove

Testcases:
acs_subsite_relation_procs

relation_required_segments_multirow (public)

 relation_required_segments_multirow \
    [ -datasource_name datasource_name ] [ -group_id group_id ] \
    [ -rel_type rel_type ] [ -rel_side rel_side ]

Sets up a multirow datasource. Also returns a list containing the most essential information.

Switches:
-datasource_name
(optional)
-group_id
(optional)
-rel_type
(defaults to "membership_rel") (optional)
-rel_side
(defaults to "two") (optional)

Partial Call Graph (max 5 caller/called nodes):
%3 packages/acs-subsite/www/admin/parties/new.tcl packages/acs-subsite/ www/admin/parties/new.tcl relation_required_segments_multirow relation_required_segments_multirow packages/acs-subsite/www/admin/parties/new.tcl->relation_required_segments_multirow packages/acs-subsite/www/register/user-join.tcl packages/acs-subsite/ www/register/user-join.tcl packages/acs-subsite/www/register/user-join.tcl->relation_required_segments_multirow ad_urlencode ad_urlencode (public) relation_required_segments_multirow->ad_urlencode application_group::group_id_from_package_id application_group::group_id_from_package_id (public) relation_required_segments_multirow->application_group::group_id_from_package_id db_foreach db_foreach (public) relation_required_segments_multirow->db_foreach template::multirow template::multirow (public) relation_required_segments_multirow->template::multirow

Testcases:
No testcase defined.

relation_segment_has_dependent (public)

 relation_segment_has_dependent [ -rel_id rel_id ] \
    [ -segment_id segment_id ] [ -party_id party_id ]

Returns 1 if the specified segment/party combination has a dependent (meaning a constraint would be violated if we removed this relation). 0 otherwise. Either rel_id or segment_id and party_id must be specified. rel_id takes precedence.

Switches:
-rel_id
(optional)
-segment_id
(optional)
-party_id
(optional)
Author:
Michael Bryzek <mbryzek@arsdigita.com>
Created:
12/2000

Partial Call Graph (max 5 caller/called nodes):
%3 packages/acs-subsite/www/admin/relations/remove.tcl packages/acs-subsite/ www/admin/relations/remove.tcl relation_segment_has_dependent relation_segment_has_dependent packages/acs-subsite/www/admin/relations/remove.tcl->relation_segment_has_dependent relation_remove relation_remove (public) relation_remove->relation_segment_has_dependent db_0or1row db_0or1row (public) relation_segment_has_dependent->db_0or1row db_string db_string (public) relation_segment_has_dependent->db_string

Testcases:
No testcase defined.

relation_type_is_valid_to_group_p (public)

 relation_type_is_valid_to_group_p [ -group_id group_id ] rel_type

Returns 1 if group $group_id allows elements through a relation of type $rel_type, or 0 otherwise. If there are no relational constraints that prevent $group_id from being on side one of a relation of type $rel_type, then 1 is returned.

Switches:
-group_id
(optional)
- if unspecified, then we use [application_group::group_id_from_package_id]
Parameters:
rel_type
Author:
Oumi Mehrotra <oumi@arsdigita.com>
Created:
2000-02-07

Partial Call Graph (max 5 caller/called nodes):
%3 packages/acs-subsite/www/admin/relations/add.tcl packages/acs-subsite/ www/admin/relations/add.tcl relation_type_is_valid_to_group_p relation_type_is_valid_to_group_p packages/acs-subsite/www/admin/relations/add.tcl->relation_type_is_valid_to_group_p packages/acs-subsite/www/register/user-join.tcl packages/acs-subsite/ www/register/user-join.tcl packages/acs-subsite/www/register/user-join.tcl->relation_type_is_valid_to_group_p application_group::group_id_from_package_id application_group::group_id_from_package_id (public) relation_type_is_valid_to_group_p->application_group::group_id_from_package_id db_string db_string (public) relation_type_is_valid_to_group_p->db_string

Testcases:
No testcase defined.

relation_types_valid_to_group_multirow (public)

 relation_types_valid_to_group_multirow \
    [ -datasource_name datasource_name ] [ -start_with start_with ] \
    [ -group_id group_id ]

creates multirow datasource containing relationship types starting with the $start_with relationship type. The datasource has columns that are identical to the party::types_allowed_in_group_multirow, which is why the columns are broadly named "object_*" instead of "rel_*". A common template can be used for generating select widgets etc. for both this datasource and the party::types_allowed_in_groups_multirow datasource. All subtypes of $start_with are returned, but the "valid_p" column in the datasource indicates whether the type is a valid one for $group_id. If -group_id is not specified or is specified null, then the current application_group will be used (determined from [application_group::group_id_from_package_id]). Includes fields that are useful for presentation in a hierarchical select widget:

  • object_type
  • object_type_enc - encoded object type
  • indent - an HTML indentation string
  • pretty_name - pretty name of object type

Switches:
-datasource_name
(defaults to "object_types") (optional)
-start_with
(defaults to "acs_rel") (optional)
-group_id
(optional)
- if unspecified, then [application_group::group_id_from_package_id] is used.
Author:
Oumi Mehrotra <oumi@arsdigita.com>
Created:
2000-02-07

Partial Call Graph (max 5 caller/called nodes):
%3 packages/acs-subsite/www/admin/relations/add.tcl packages/acs-subsite/ www/admin/relations/add.tcl relation_types_valid_to_group_multirow relation_types_valid_to_group_multirow packages/acs-subsite/www/admin/relations/add.tcl->relation_types_valid_to_group_multirow ad_urlencode ad_urlencode (public) relation_types_valid_to_group_multirow->ad_urlencode application_group::group_id_from_package_id application_group::group_id_from_package_id (public) relation_types_valid_to_group_multirow->application_group::group_id_from_package_id db_foreach db_foreach (public) relation_types_valid_to_group_multirow->db_foreach template::multirow template::multirow (public) relation_types_valid_to_group_multirow->template::multirow

Testcases:
No testcase defined.
[ show source ]