SetHookSeesAllUsers

説明

現在のフックがすべてのユーザーを表示するか、現在のユーザーが表示を許可されているユーザーのみを表示するかを指定します。

スキーマ開発者がユーザーに対するフックの可視性をフックごとに制御できるようにします。Set 関数は、現在実行中のフックのみの期間中の可視性を指定します。

このメソッドを True (1) に設定すると、現在のフックがクエリーの実行時にすべてのユーザーを表示することが指定されます。False (0) は、現在のフックが、現在のユーザーがクエリーの実行時に (セッション中のユーザーの実際のユーザー権限に基づいて) 表示を許可されているユーザーのみを表示することを意味します。機能レベル 5 および 6 では、 これらのプロパティのデフォルト値は True (1) です。機能レベル 7 では、デフォルト値は False (0) です。

例えば、フックのデフォルトの動作が、すべてのユーザーを表示するわけではないというものである場合は、次の行のようになります。
  • 何の影響も及ぼさない
    $session->SetHookSeesAllUsers(0);
  • フックが必ずすべてのユーザーを表示する
    $session->SetHookSeesAllUsers(1);

スキーマ開発者は、HOOKS_SEE_ALL_USERS および HOOKS_SEE_ALL_RECORDS マスター データベースのプロパティを使用することにより、使用中のデータベース内のすべてのフックにデフォルトの可視性を構成できます。機能レベル 5 および 6 では、 これらのプロパティのデフォルト値は True (1) です。機能レベル 7 では、デフォルト値は False (0) です。CLI コマンドについては、CLI のリファレンス ページを参照してください。

以下の例では、[ユーザーへの割り当て (assigned to user)] フィールドの選択リストに、現在のユーザーのグループ内のユーザーのみをリストするフックを取り込みます。
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;
}
注: このメソッドは、バージョン 7.1 で使用可能になります。

構文

VBScript

user_restr = session.SetHookSeesAllUsers set_vis 

Perl

session->SetHookSeesAllUsers(set_vis); 
識別子
説明
session
現在のデータベース アクセス セッションを表す Session オブジェクト。
set_vis
現在のフックがすべてのユーザーを表示するか、現在のユーザーが表示を許可されているユーザーのみを表示するかを指定する Boolean。True は、現在のフックがユーザー クエリーの実行時にすべてのユーザーを表示することを指定します。False は、現在のフックが、ユーザー クエリーの実行時に現在のユーザーが表示を許可されているユーザーのみを表示できることを指定します。
戻り値
なし

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;
}

フィードバック