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