13.6.3.8 Doc::disableEditControl()

Cette méthode permet aux méthodes de modification de ne pas tenir compte du droit de modification.

13.6.3.8.1 Description

void disableEditControl (  )

Les méthodes suivantes ne vérifient plus le droit de modification (edit) :

La méthode de vérification de modification Doc::canEdit() ne vérifie plus le droit edit, mais continue à vérifier les verrous.

13.6.3.8.1.1 Avertissements

Les appels successifs à disableEditControl se cumulent. Ainsi, si une méthode fait appel à disableEditControl et n'appelle pas enableEditControl, toutes les méthodes qui se déclenchent ensuite outrepasseront les privilèges de l'utilisateur. Aussi, à moins de vouloir explicitement ce comportement, tout appel à disableEditControl doit être suivi d'un appel à enableEditControl avant que la fonction ne retourne, même en cas de retour anticipé à cause d'une erreur. Notamment, le code suivant laisse les contrôles désactivés :

$doc = new_Doc("", 1000);
$doc->disableEditControl();
$doc->disableEditControl();
$doc->enableEditControl();

Cette inhibition de contrôle des droits ne contrôle pas la contrainte d'accès liée à la visibilité I.

13.6.3.8.2 Liste des paramètres

Aucun.

13.6.3.8.3 Valeur de retour

void.

13.6.3.8.4 Erreurs / Exceptions

Aucune.

13.6.3.8.5 Historique

Aucun.

13.6.3.8.6 Exemples

L'utilisateur courant n'a pas le droit edit sur le document n°1420.

13.6.3.8.6.1 Sans suspension de contrôle de droit

require_once("FDL/Class.Doc.php");
$doc = new_doc("", "1420");
if ($doc->isAlive()){
    $err1 = $doc->setValue(\Dcp\AttributeIdentifiers\Zoo_animal::an_nom,"Gastor");  
    $err2 = $doc->store();
    printf( "Erreur : [1:%s] - [2:%s]\n", $err1, $err2);
} else {
    printf("Document non trouvé\n");
}

Résultat :

Erreur : [1:Pas de privilège edit pour le document Théodor [1420]] - [2:]

Attention, la méthode Doc::store() ne retourne pas d'erreur dans ce cas, car l'affectation n'a pas eu lieu et comme aucune modification n'a été détectée, l'enregistrement en base de données n'a pas eu lieu.

13.6.3.8.6.2 Avec suspension de contrôle de droit sur l'affectation

require_once("FDL/Class.Doc.php");
$doc = new_doc("", "1420");
if ($doc->isAlive()){
    $doc->disableEditControl();
    $err1=$doc->setValue(\Dcp\AttributeIdentifiers\Zoo_animal::an_nom,"Gastor");  
    $doc->enableEditControl();
    $err2=$doc->store();
    printf( "Erreur : [1:%s] - [2:%s]\n", $err1, $err2);
} else {
    printf("Document non trouvé\n");
}

Résultat :

Erreur : [1:] - [2:Pas de privilège edit pour le document Théodor [1420]]

13.6.3.8.6.3 Avec suspension complète de contrôle de droit

require_once("FDL/Class.Doc.php");
$doc = new_doc("", "1420");
if ($doc->isAlive()) 
    $doc->disableEditControl();
    $err1=$doc->setValue(\Dcp\AttributeIdentifiers\Zoo_animal::an_nom,"Gastor");  
    $err2=$doc->store();
    $doc->enableEditControl();
    printf( "Erreur : [1:%s] - [2:%s]\n", $err1, $err2);
} else {
    printf("Document non trouvé\n");
}

Résultat :

Erreur : [1:] - [2:]

L'affectation ainsi que l'enregistrement ont bien pu être réalisés.

13.6.3.8.7 Notes

Aucune.

13.6.3.8.8 Voir aussi

×