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.