Projet

Général

Profil

Anomalie #4760

\Dcp\AttributeValue::setTypedArrayValue corromp Doc::_oldvalue

Ajouté par Matthieu Codron il y a environ 7 ans. Mis à jour il y a environ 7 ans.

Statut:
Intégré
Priorité:
Normal
Assigné à:
-
Version cible:
Début:
06/05/2014
Echéance:
% réalisé:

100%

Temps estimé:
Version source:
Solution proposée:
Principaux fichiers impactés:
Complexité:
Contrôle:
Thème:
Socle technique
Régression:
Non
Jalons:

Description

lors de l'utilisation de Doc::setAttributeValue pour un array, les méthodes internes font plusieurs setValue. Suite à cela, la variable Doc::_oldvalue est donc erronée. Il faudrait sauver dans oldvalue l'état lors de l'appel, puis désactiver le suivi des oldvalues.

Exemple de reproduction:

Soit un tableau array contenant les colonnes | col_a | col_b | col_c |

ses valeurs sont | foo | bar | baz |

lors de l'appel à

        $this->setAttributeValue(
            "bug_array",
            Array(
                Array(
                    "col_a" => "foo",
                    "col_b" => "bar",
                    "col_c" => "baz" 
                )
            )
        );

        $this->setAttributeValue(
            "bug_array",
            Array(
                Array(
                    "col_a" => "FOO",
                    "col_b" => "BAR",
                    "col_c" => "BAZ" 
                )
            )
        );
        error_log(var_export($this->getOldValues(), true));

on devrait obtenir array("col_a" => "foo", "col_b" => "bar", "col_c" => "baz")

mais on obtient

array (\n  'col_a' => '',\n  'col_b' => '',\n  'col_c' => '',\n)

ce qui est le résultat des affectations suite au clearValue.


Demandes liées

Copié vers Core - Anomalie #4761: \Dcp\AttributeValue::setTypedArrayValue corromp Doc::_oldvalueIntégré06/05/2014

Historique

#1 Mis à jour par Matthieu Codron il y a environ 7 ans

  • Description mis à jour (diff)

#2 Mis à jour par Matthieu Codron il y a environ 7 ans

  • Description mis à jour (diff)

#3 Mis à jour par Matthieu Codron il y a environ 7 ans

  • Description mis à jour (diff)

#4 Mis à jour par Marc Claverie il y a environ 7 ans

  • Version cible mis à 3.2.15
  • Version source mis à 3.2.14

#5 Mis à jour par Éric Brison il y a environ 7 ans

  • Description mis à jour (diff)

#6 Mis à jour par Éric Brison il y a environ 7 ans

  • Statut changé de Nouveau à Intégré
  • % réalisé changé de 0 à 100

Appliqué par commit dynacase-core|commit:ea101e5e02d5737faa8fa0977b3d3bddd4111d44.

Formats disponibles : Atom PDF