From f994e3dd11147502a648f5c82394d5fb6f9c09df Mon Sep 17 00:00:00 2001 From: nicod_ Date: Thu, 22 Sep 2022 22:31:16 +0200 Subject: [PATCH] =?UTF-8?q?La=20v=C3=A9rification=20des=20options=20obliga?= =?UTF-8?q?toires=20ne=20fonctionnait=20pas=20vraiment,=20et=20bloquait=20?= =?UTF-8?q?l'ajout=20au=20panier=20d'un=20produit=20sans=20options=20Cherr?= =?UTF-8?q?y=20pick=205dd3948?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/panier_produit_options.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/formulaires/panier_produit_options.php b/formulaires/panier_produit_options.php index 35a7180..10882d9 100644 --- a/formulaires/panier_produit_options.php +++ b/formulaires/panier_produit_options.php @@ -25,10 +25,21 @@ function formulaires_panier_produit_options_charger_dist($id_produit) { function formulaires_panier_produit_options_verifier_dist($id_produit) { $erreurs = array(); - $groupes = sql_allfetsel('id_optionsgroupe, obligatoire', 'spip_optionsgroupes'); + if ($id_objet = intval(_request('id_produit'))) { + $objet = 'produit'; + } else { + $id_objet = intval(_request('id_objet')); + $objet = _request('objet'); + } + $groupes = sql_allfetsel('id_optionsgroupe, obligatoire', 'spip_optionsgroupes', 'obligatoire = 1'); foreach ($groupes as $groupe) { - if ($groupe['obligatoire'] && !_request('id_option' . $groupe['id_optionsgroupe'])) { - $erreurs['id_groupe'.$groupe['id_optionsgroupe']] = _T('optionsgroupe:erreur_groupe_obligatoire'); + $options_groupes = sql_allfetsel( + 'o.id_option', + 'spip_options o join spip_options_liens ol using(id_option)', + 'o.id_optionsgroupe = '.$groupe['id_optionsgroupe'].' and ol.objet = '.sql_quote($objet).' and ol.id_objet = '.$id_objet + ); + if ($options_groupes && !_request('id_option' . $groupe['id_optionsgroupe'])) { + $erreurs['id_groupe' . $groupe['id_optionsgroupe']] = _T('optionsgroupe:erreur_groupe_obligatoire'); } } @@ -52,12 +63,11 @@ function formulaires_panier_produit_options_traiter_dist($id_produit) { // On concatène pour passer les options à l'action remplir_panier. $options = join('|', array_filter($options)); - if($id_objet = _request('id_produit')) { - $id_objet= intval(_request('id_produit')); + if ($id_objet = intval(_request('id_produit'))) { $objet = 'produit'; } else { + $id_objet = intval(_request('id_objet')); $objet = _request('objet'); - $id_objet= intval(_request('id_objet')); } // On appelle l'action remplir_panier