13.6.3.20 Doc::getOldRawValue()

Récupère la valeur précédente d'un attribut.

13.6.3.20.1 Description

string getOldRawValue ( string $idAttribute )

Récupère la valeur précédent l'appel aux méthodes de modification de valeurs d'attributs. Si la valeur précédente est inchangée suite à l'appel d'une méthode de modification, la méthode retournera le booléen false.

Les principales méthodes de modification de valeurs sont :

13.6.3.20.1.1 Avertissements

Cette méthode ne récupère que les valeurs changées que sur un objet. Si on instancie deux fois le même document, alors les modifications de l'un ne sont pas répercutées sur l'autre. Si l'attribut n'a pas encore été modifié la valeur de retour est false (après une création). Les enregistrements de valeurs modifiés sont remis à zéro lors d'une révision (Doc::revise).

13.6.3.20.2 Liste des paramètres

(string) info
Identifiant de l'attribut

13.6.3.20.3 Valeur de retour

La valeur de retour indique la valeur brute précédente à la modification.

setValue getRawValue getOldValue
"vert" "vert" false
"jaune" "jaune" "vert"
"bleu" "bleu" "jaune"
"bleu" "bleu" "jaune"
" " null "bleu"

Si la valeur n'a pas encore été changée, le retour est le booléen false. Si l'identifiant de l'attribut n'existe pas le retour est aussi false.

13.6.3.20.4 Erreurs / Exceptions

Aucune.

13.6.3.20.5 Historique

Cette méthode était anciennement nommée getOldValue.

13.6.3.20.6 Exemples

13.6.3.20.6.1 Évolution du retour de getOldRawValue

Le document de l'exemple a son attribut my_numberone initialisé à -3.

use \Dcp\AttributeIdentifiers\MyFamily as Attributes\MyFamily;
 
function printOldValue(Doc $doc) {
    printf( '         Valeur :');
    var_dump($doc->getRawValue(Attributes\MyFamily::my_numberone));
    printf( 'Ancienne Valeur :');
    var_dump($doc->getOldRawValue(Attributes\MyFamily::my_numberone));
    printf( "#---------------------\n");
}
 
function updateValue(Doc $doc, $newValue){
    if(null === $newValue){
        printf('  efface valeur :null');
        $doc->clearValue(Attributes\MyFamily::my_numberone, $newValue);
    } else {
        printf('     maj valeur :');
        var_dump($newValue);
        $doc->setValue(Attributes\MyFamily::my_numberone, $newValue);
    }
}
 
/** @var \Dcp\Family\MyFamily */
$myDoc = new_Doc("", "MY_DOCUMENT");
if ($myDoc->isAlive()) {
    printOldValue($myDoc);
 
    updateValue($myDoc, 34);
    printOldValue($myDoc);
 
    updateValue($myDoc, 35);
    printOldValue($myDoc);
 
    updateValue($myDoc, 35);
    printOldValue($myDoc);
 
    updateValue($myDoc, null);
    printOldValue($myDoc);
 
    updateValue($myDoc, 35);
    printOldValue($myDoc);
}
 

Le résultat :

         Valeur :string(2) "-3"
Ancienne Valeur :bool(false)
#---------------------
     maj valeur :int(34)
         Valeur :string(2) "34"
Ancienne Valeur :string(2) "-3"
#---------------------
     maj valeur :int(35)
         Valeur :string(2) "35"
Ancienne Valeur :string(2) "34"
#---------------------
     maj valeur :int(35)
         Valeur :string(2) "35"
Ancienne Valeur :string(2) "34"
#---------------------
  efface valeur :null
         Valeur :string(0) ""
Ancienne Valeur :string(2) "35"
#---------------------
     maj valeur :int(35)
         Valeur :string(2) "35"
Ancienne Valeur :string(0) ""
#---------------------

13.6.3.20.6.2 Utilisation dans un post-traitement

Mise à jour conditionnelle d'un attribut. L'attribut my_countchange enregistre le nombre de fois que l'attribut my_numberone a été changé.

Soit la famille suivante :

BEGIN Ma famille MYFAMILY
CLASS My\MyFamily
// idattr idframe label T A type ord vis phpfunc
ATTR MY_IDENTIFICATION Identification N N frame 10 W
ATTR MY_NUMBERONE MY_IDENTIFICATION nombre 1 Y N int 20 W
ATTR MY_COUTCHANGE MY_IDENTIFICATION nombre de changement N N int 30 R
END

Avec la classe :

namespace My;
use \Dcp\AttributeIdentifiers\MyFamily as MyAttributes;
 
class MyFamily extends \Dcp\Family\Document
{
    protected function setMyCountChange() {
        $err='';
        $oldValue=$this->getOldRawValue(MyAttributes::my_countchange);
        if ($oldValue !== false) {
            $cc=$this->getAttributeValue(MyAttributes::my_countchange);
            $err=$this->setAttributeValue(MyAttributes::my_countchange, $cc+1);
        }
        return $err;
    }
    public function postStore()
    {
        return $this->setMyCountChange();
    }
}

13.6.3.20.7 Notes

Dans le cas des attribut multi-valués, il est possible d'utiliser la méthode `Doc::rawValueToArray() pour avoir les différentes valeurs.

13.6.3.20.8 Voir aussi

×
nouveauté