SetHookSeesAllUsers
Description
Specifies whether the current hook sees all users or only the users that the current user is allowed to see.
Allows schema developers to control hook visibility for users on a hook by hook basis. The Set function specifies the visibility for the duration of the currently executing hook only.
Setting the method to True (1) specifies that the current hook sees all users when it executes a query. False (0) means the current hook only sees users the current user is allowed to see (based on the actual user privilege of the user for the session) when it executes a query. For Feature Levels 5 and 6, the default value for these properties is True (1). For Feature Level 7 the default values are False (0).
- has no impact
$session->SetHookSeesAllUsers(0);
- ensures that the hook sees all users
$session->SetHookSeesAllUsers(1);
The HOOKS_SEE_ALL_USERS and HOOKS_SEE_ALL_RECORDS master database properties allow schema developers to configure the default visibility for all hooks in their database. For Feature Levels 5 and 6, the default value for these properties is True (1). For Feature Level 7 the default values are False (0). See the CLI reference pages for information on CLI commands.
sub AssignedTo_ChoiceList {
my($fieldname) = @_;
my @choices;
my $session = $entity->GetSession();
$session->SetHookSeesAllUsers(0);
my $queryDefObj = $session->BuildQuery("users");
$queryDefObj->BuildField("login_name");
my $resultSetObj = $session->BuildResultSet($queryDefObj);
$resultSetObj->Execute();
while ($resultSetObj->MoveNext() == $CQPerlExt::CQ_SUCCESS) {
push(@choices,$resultSetObj->GetColumnValue(1));
}
return @choices;
}
Syntax
VBScript
user_restr = session.SetHookSeesAllUsers set_vis
Perl
session->SetHookSeesAllUsers(set_vis);
- Identifier
- Description
- session
- The Session object that represents the current database-access session.
- set_vis
- A Boolean that specifies whether the current hook sees all users or only the users that the current user is allowed to see. True specifies that the current hook sees all users when it executes a user query. False specifies that the current hook can only see users the current user is allowed to see when it executes a user query.
- Return value
- None
Examples
VBScript
sub project_ChoiceList(fieldname, choices)
' fieldname As String
' choices As Object
' record type name is Defect
' field name is project
set session = GetSession
dim curHooksSeesAllUsers
' Store current session "Context"
curHookSeesAllUsers = session.GetHookSeesAllUsers()
' set session context to "User Context"
session.SetHookSeesAllUsers(0)
set querydef = session.BuildQuery("project")
querydef.BuildField("name")
set resultset = session.BuildResultSet(querydef)
resultset.Execute
status =resultset.MoveNext
Do While status = AD_SUCCESS
choices.AddItem resultSetObj.GetColumnValue(1)
Loop
' revert to original session "Context"
session.SetHookSeesAllUsers( curHookSeesAllUsers )
End Sub
Perl
sub project_ChoiceList
{
my($fieldname) = @_;
my @choices;
# $fieldname as string scalar
# @choices as string array
# record type name is Defect
# field name is Project
# start building a query of the users
my $session = $entity->GetSession();
my ($curHooksSeesAllUsers);
# store current "Context"
$curHooksSeesAllUsers=$session->GetHookSeesAllUsers();
# set to "User Context"
$session->SetHookSeesAllUsers(0);
my ($queryDefObj, $resultSetObj);
$queryDefObj = $session->BuildQuery("Project");
# have the query return the desired
# field of the user object(s)
$queryDefObj->BuildField("Name");
$resultSetObj = $session->BuildResultSet($queryDefObj);
# run it
$resultSetObj->Execute();
# add each value in the returned column to the choicelist
while
($resultSetObj->MoveNext() == $CQPerlExt::CQ_SUCCESS) {
push(@choices,$resultSetObj->GetColumnValue(1));
}
# revert to original session "Context"
$session->SetHookSeesAllUsers($curHooksSeesAllUsers);
return @choices;
}