Projet

Général

Profil

Anomalie #619

Recherche avancée sur plusieurs champs dynamique de type choix

Ajouté par Johan Cwiklinski il y a plus de 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
Core
Version cible:
-
Début:
07/06/2013
Echéance:
% réalisé:

0%

Version utilisée:

Description

La requête construite est incorrecte dans les jointures requises pour les champs de type choix

Révisions associées

Révision fe7325f3
Ajouté par Johan Cwiklinski il y a plus de 4 ans

SQL error trying to search on multiple choice dynamic fields; fixes #619

Historique

#1 Mis à jour par Johan Cwiklinski il y a plus de 4 ans

  • Statut changé de Nouveau à In Progress

Le correctif (à priori) :

diff --git a/galette/lib/Galette/Repository/Members.php b/galette/lib/Galette/Repository/Members.php
index 861f98c..2b77b8b 100644
--- a/galette/lib/Galette/Repository/Members.php
+++ b/galette/lib/Galette/Repository/Members.php
@@ -622,8 +622,7 @@ class Members
                 }
             }

-
-            //check if tehre are dynamic fields for contributions in filter
+            //check if there are dynamic fields for contributions in filter
             $hasDfc = false;
             $hasCdfc = false;
             if ( $this->_filters instanceof AdvancedMembersList
@@ -668,9 +667,14 @@ class Members
                     $cdf_field .= '::text';
                 }
                 foreach ( $cdfs as $cdf ) {
+                    $rcdf_field = str_replace(
+                        'cdf.',
+                        'cdf' . $cdf . '.',
+                        $cdf_field
+                    );
                     $select->joinLeft(
-                        array('cdf' => DynamicFields::getFixedValuesTableName($cdf)),
-                        $cdf_field . '=df.field_val',
+                        array('cdf' . $cdf => DynamicFields::getFixedValuesTableName($cdf)),
+                        $rcdf_field . '=df.field_val',
                         array()
                     );
                 }
@@ -680,9 +684,14 @@ class Members
                     $cdf_field .= '::text';
                 }
                 foreach ( $cdfcs as $cdf ) {
+                    $rcdf_field = str_replace(
+                        'cdfc.',
+                        'cdfc' . $cdf . '.',
+                        $cdf_field
+                    );
                     $select->joinLeft(
-                        array('cdfc' => DynamicFields::getFixedValuesTableName($cdf)),
-                        $cdf_field . '=dfc.field_val',
+                        array('cdfc' . $cdf => DynamicFields::getFixedValuesTableName($cdf)),
+                        $rcdf_field . '=dfc.field_val',
                         array()
                     );
                 }
@@ -1198,7 +1207,7 @@ class Members

                         if ( is_array($cd) ) {
                             //dynamic choice spotted!
-                            $prefix = 'cdfc.';
+                            $prefix = 'cdfc' . $k . '.';
                             $qry = 'dfc.field_form = \'contrib\' AND ' .
                                 'dfc.field_id = ' . $k . ' AND ';
                             $field = 'id';
@@ -1267,7 +1276,8 @@ class Members
                         $prefix = 'a.';
                         if ( strpos($fs['field'], 'dync_') === 0 ) {
                             //dynamic choice spotted!
-                            $prefix = 'cdf.';
+                            $index = str_replace('dync_', '', $fs['field']);
+                            $prefix = 'cdf' . $index . '.';
                             $qry = 'df.field_form = \'adh\' AND df.field_id = ' .
                                 str_replace('dync_', '', $fs['field']) . ' AND ';
                             $fs['field'] = 'val';

#2 Mis à jour par Johan Cwiklinski il y a environ 4 ans

  • Statut changé de In Progress à Fermé

Formats disponibles : Atom PDF