SetHookSeesAllUsers

Descrizione

Specifica se l'hook corrente visualizza tutti gli utenti o solo gli utenti che l'utente corrente può visualizzare.

Consente agli sviluppatori di schemi di controllare la visibilità hook per gli utenti su un hook in base all'hook. La funzione di impostazione specifica la visibilità solo per la durata dell'hook in esecuzione correntemente.

L'impostazione del metodo su True (1) specifica che l'hook corrente visualizza tutti gli utenti quando esegue una query. Il valore False (0) indica che l'hook corrente visualizza solo gli utenti per cui l'utente corrente è autorizzato (in base al reale privilegio utente dell'utente per la sessione) quando esegue una query. Per i livelli funzione 5 e 6, il valore predefinito per queste proprietà è True (1). Per il livello funzione 7, i valori predefiniti sono False (0).

Ad esempio, se il funzionamento predefinito per l'hook è di non visualizzare tutti gli utenti, la riga seguente
  • non ha alcun effetto
    $session->SetHookSeesAllUsers(0);
  • garantisce che l'hook visualizzi tutti gli utenti
    $session->SetHookSeesAllUsers(1);

Le proprietà HOOKS_SEE_ALL_USERS e HOOKS_SEE_ALL_RECORDS del database principale consentono agli sviluppatori di schemi di configurare la visibilità predefinita per tutti gli hook nei relativi database. Per i livelli funzione 5 e 6, il valore predefinito per queste proprietà è True (1). Per il livello funzione 7, i valori predefiniti sono False (0). Consultare le pagine di riferimento CLI per informazioni relative ai comandi CLI.

Nell'esempio seguente il campo assegnato all'utente popola il relativo elenco di selezioni con un hook che elenca solo gli utenti nei gruppi dell'utente corrente:
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;
}
Nota: questo metodo è stato reso disponibile nella versione 7.1.

Sintassi

VBScript

user_restr = session.SetHookSeesAllUsers set_vis 

Perl

session->SetHookSeesAllUsers(set_vis); 
Identificativo
Descrizione
session
L'oggetto Session che rappresenta la sessione di accesso al database corrente.
set_vis
Un valore booleano che specifica se l'hook corrente visualizza tutti gli utenti o solo gli utenti che l'utente corrente può visualizzare. Il valore True specifica che l'hook corrente visualizza tutti gli utenti quando esegue una query di utente. Il valore False specifica che l'hook corrente può visualizzare solo gli utenti per cui l'utente corrente è autorizzato quando esegue una query di utente.
Valore di ritorno
Nessuno

Esempi

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

Feedback