[STUDIO] Champ "date de mise à jour"

Bonjour,

Nous avons amélioré notre module Compte pour y ajouter un onglet décomposé en panneau.

Chaque panneau porte sur une thématique particulière et est composé de plusieurs champs.

Notre besoin:

Si un utilisateur modifie un champ du panneau "Thématique xx", nous aimerions que la date du jour alimente en automatique le champ calculé "Date de mise à jour de la Thématique xx"

Je ne trouve pas la bonne formule.

Est-ce possible?

Merci pour votre aide.

Delphine.

Parents
  • Si j'ai bien compris la situation, vous avez, par example:

    panneau ThématiqueA, avec  champ_1, champ_2, champ_3, date_mise_a_jour_A

    et panneau ThématiqueB, avec  champ_4, champ_5, champ_6, date_mise_a_jour_B

    Si je modifie champ_1, 2 ou 3 vous voulez mettre à jour l'horodatage date_mise_a_jour_A 

    Si je modified champ_4, 5 ou 6 vous voulez mettre à jour l'horodatage date_mise_a_jour_B

    Je ne sais pas comment vous pouvez identifier les champs dans chaque panneau par programme, mais si le champs ne changent pas trop souvent vous pouvez utilizer un logic_hook avec des listes codées en dur. 

    Dans le before_save logic_hook, vous pouvez récoupérer une list des champs qui ont changé, voir si l'un des champs de chacun des panneaux a changé et mettre à jour l'horodatage de la Thématique correspondant, comme ça:

          $changes = $bean->db->getDataChanges($bean);
          $changed_fields = array_keys($changes);
          
          $panelA = array ("champ_1", "champ_2", "champ_3);
          $panelB = array ("champ_4", "champ_5", "champ_6);
          
          if(count(array_intersect($changed_fields, $panelA)) > 0){
            // au moins un des champs panelA a été modifié
            //fixe l'horodatage pour le panelA
          }
          if(count(array_intersect($changed_fields, $panelB)) > 0){
            // au moins un des champs panelB a été modifié
            //fixe l'horodatage pour le panelB
          }


    Pardonnez, et s'il vous plait corrigez, mon français. Slight smile

    FrancescaS

Reply
  • Si j'ai bien compris la situation, vous avez, par example:

    panneau ThématiqueA, avec  champ_1, champ_2, champ_3, date_mise_a_jour_A

    et panneau ThématiqueB, avec  champ_4, champ_5, champ_6, date_mise_a_jour_B

    Si je modifie champ_1, 2 ou 3 vous voulez mettre à jour l'horodatage date_mise_a_jour_A 

    Si je modified champ_4, 5 ou 6 vous voulez mettre à jour l'horodatage date_mise_a_jour_B

    Je ne sais pas comment vous pouvez identifier les champs dans chaque panneau par programme, mais si le champs ne changent pas trop souvent vous pouvez utilizer un logic_hook avec des listes codées en dur. 

    Dans le before_save logic_hook, vous pouvez récoupérer une list des champs qui ont changé, voir si l'un des champs de chacun des panneaux a changé et mettre à jour l'horodatage de la Thématique correspondant, comme ça:

          $changes = $bean->db->getDataChanges($bean);
          $changed_fields = array_keys($changes);
          
          $panelA = array ("champ_1", "champ_2", "champ_3);
          $panelB = array ("champ_4", "champ_5", "champ_6);
          
          if(count(array_intersect($changed_fields, $panelA)) > 0){
            // au moins un des champs panelA a été modifié
            //fixe l'horodatage pour le panelA
          }
          if(count(array_intersect($changed_fields, $panelB)) > 0){
            // au moins un des champs panelB a été modifié
            //fixe l'horodatage pour le panelB
          }


    Pardonnez, et s'il vous plait corrigez, mon français. Slight smile

    FrancescaS

Children