Browse Source

Renommages pour y voir plus clair entre options de produits et options du panier

TODO : reprendre les modifs faites sur inc/prix.php du plugin Prix
master
nicod_ 6 days ago
parent
commit
7f660e4417
  1. 4
      action/commandes_paniers.php
  2. 12
      action/produit_panier.php
  3. 18
      action/remplir_panier.php
  4. 20
      formulaires/panier_options.php
  5. 20
      formulaires/panier_produit_options.php
  6. 8
      optionsproduits_fonctions.php
  7. 14
      prix_option/produit.php

4
action/commandes_paniers.php

@ -158,8 +158,8 @@ function panier2commande_remplir_commande($id_commande, $id_panier, $append = tr
$libelle_option = '';
if ($emplette['options']) {
$options = explode('_', trim($emplette['options'],'_'));
foreach ($options as $option) {
$options_produit = explode('_', trim($emplette['options'],'_'));
foreach ($options_produit as $option) {
$titre_option = sql_fetsel(
'titre, titre_groupe',
'spip_options left join spip_optionsgroupes using(id_optionsgroupe)',

12
action/produit_panier.php

@ -14,17 +14,17 @@ function action_produit_panier_dist() {
$quantite = intval(_request('quantite'));
$negatif = intval(_request('negatif'));
// On reçoit des options en POST sous la forme id_option
// On reçoit des options de produit en POST sous la forme id_option
// ou id_optionX où X est l'id du groupe d'options.
$options = array(_request('id_option'));
$options_produit = array(_request('id_option'));
$groupes = sql_allfetsel('id_optionsgroupe', 'spip_optionsgroupes');
foreach ($groupes as $groupe) {
if ($id_option = _request('id_option' . $groupe['id_optionsgroupe'])) {
$options[] = $id_option;
$options_produit[] = $id_option;
}
}
// On concatène pour passer les options à l'action remplir_panier.
$options = implode('_', array_filter($options));
// On concatène pour passer les options de produit à l'action remplir_panier.
$options_produit = implode('_', array_filter($options_produit));
if ($id_objet = _request('id_produit')) {
$id_objet = intval(_request('id_produit'));
@ -37,6 +37,6 @@ function action_produit_panier_dist() {
// On appelle l'action remplir_panier
$remplir_panier = charger_fonction('remplir_panier', 'action');
return $remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options);
return $remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options_produit);
}

18
action/remplir_panier.php

@ -20,11 +20,11 @@ function action_remplir_panier_dist($arg = null) {
}
// On récupère les infos de l'argument
@list($objet, $id_objet, $quantite, $negatif, $options) = explode('-', $arg);
@list($objet, $id_objet, $quantite, $negatif, $options_produit) = explode('-', $arg);
// éviter un cas tordu qui insère un 0 comme valeur d'option (et qui duplique donc les produits dans le panier)
if(!$options || $options==='0'){
$options = '';
if(!$options_produit || $options_produit==='0'){
$options_produit = '';
}
$paniers_arrondir_quantite = charger_fonction('paniers_arrondir_quantite', 'inc');
@ -88,7 +88,7 @@ function action_remplir_panier_dist($arg = null) {
'id_panier = '.intval($id_panier),
'objet = '.sql_quote($objet),
'id_objet = '.intval($id_objet),
'options = ' . sql_quote($options),
'options = ' . sql_quote($options_produit),
)
);
$quantite_deja = $paniers_arrondir_quantite($quantite_deja, $objet, $id_objet);
@ -113,21 +113,21 @@ function action_remplir_panier_dist($arg = null) {
if ($cumul_quantite <= 0) {
sql_delete(
'spip_paniers_liens',
'id_panier = ' . intval($id_panier) . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . intval($id_objet) . ' and options = ' . sql_quote($options)
'id_panier = ' . intval($id_panier) . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . intval($id_objet) . ' and options = ' . sql_quote($options_produit)
);
//Sinon on met à jour
} else {
sql_updateq(
'spip_paniers_liens',
array('quantite' => $cumul_quantite),
'id_panier = ' . intval($id_panier) . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . intval($id_objet) . ' and options = ' . sql_quote($options)
'id_panier = ' . intval($id_panier) . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . intval($id_objet) . ' and options = ' . sql_quote($options_produit)
);
}
// Sinon on crée le lien
} else {
sql_delete(
'spip_paniers_liens',
'id_panier = ' . intval($id_panier) . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . intval($id_objet) . ' and options = ' . sql_quote($options)
'id_panier = ' . intval($id_panier) . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . intval($id_objet) . ' and options = ' . sql_quote($options_produit)
);
$id_panier_lien = sql_insertq(
'spip_paniers_liens',
@ -136,7 +136,7 @@ function action_remplir_panier_dist($arg = null) {
'objet' => $objet,
'id_objet' => $id_objet,
'quantite' => $quantite,
'options' => $options,
'options' => $options_produit,
)
);
}
@ -156,7 +156,7 @@ function action_remplir_panier_dist($arg = null) {
'id_objet' => $id_objet,
'quantite' => $quantite,
'negatif' => $negatif,
'options' => $options,
'options' => $options_produit,
);
if (isset($id_panier_lien)) {
$args_pipeline['id_panier_lien'] = $id_panier_lien;

20
formulaires/panier_options.php

@ -17,17 +17,17 @@ function formulaires_panier_options_charger_dist($objet, $id_objet) {
$valeurs['prix_ht'] = $fonction_prix_ht($objet, $id_objet, 6);
$valeurs['prix'] = $fonction_prix($objet, $id_objet, 6);
// On transmet les options reçues au formulaire sous forme concaténee
// On transmet les options de produits reçues au formulaire sous forme concaténee
// pour qu'il les réaffiche comme cochées, mais on ne lui transmet pas les
// id_options reçues pour qu'il ne les remette pas dans #ACTION_FORMULAIRE
$options = array();
$options_produit = array();
foreach ($_REQUEST as $key => $value) {
if ($value && strpos($key, 'id_option') !== false) {
set_request($key, '');
$options[] = intval($value);
$options_produit[] = intval($value);
}
}
$valeurs['options'] = implode('_', array_filter($options));
$valeurs['options'] = implode('_', array_filter($options_produit));
return $valeurs;
}
@ -50,20 +50,20 @@ function formulaires_panier_options_traiter_dist($id_objet) {
$id_objet = intval(_request('id_objet'));
$quantite = intval(_request('quantite'));
$negatif = intval(_request('negatif'));
$options = array(_request('id_option'));
$options_produit = array(_request('id_option'));
// On reçoit des options en POST sous la forme id_option
// On reçoit des options de produits en POST sous la forme id_option
// ou id_optionX où X est l'id du groupe d'options.
$groupes = sql_allfetsel('id_optionsgroupe', 'spip_optionsgroupes');
foreach ($groupes as $groupe) {
if ($id_option = _request('id_option' . $groupe['id_optionsgroupe'])) {
$options[] = $id_option;
$options_produit[] = $id_option;
}
}
// On concatène pour passer les options à l'action remplir_panier.
$options = implode('_', array_filter($options));
// On concatène pour passer les options de produits à l'action remplir_panier.
$options_produit = implode('_', array_filter($options_produit));
// On appelle l'action remplir_panier
$remplir_panier = charger_fonction('remplir_panier', 'action');
$remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options);
$remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options_produit);
}

20
formulaires/panier_produit_options.php

@ -8,17 +8,17 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function formulaires_panier_produit_options_charger_dist($id_produit) {
$valeurs = array('id_produit' => $id_produit);
// On transmet les options reçues au formaulaire sous forme concaténee
// On transmet les options de produits reçues au formaulaire sous forme concaténee
// pour qu'il les réaffiche comme cochées, mais on ne lui transmet pas les
// id_options reçues pour qu'il ne les remette pas dans #ACTION_FORMULAIRE
$options = array();
$options_produit = array();
foreach ($_REQUEST as $key => $value) {
if ($value && strpos($key, 'id_option') !== false) {
set_request($key, '');
$options[] = intval($value);
$options_produit[] = intval($value);
}
}
$valeurs['options'] = implode('_', $options);
$valeurs['options'] = implode('_', $options_produit);
return $valeurs;
}
@ -51,17 +51,17 @@ function formulaires_panier_produit_options_traiter_dist($id_produit) {
$quantite = intval(_request('quantite'));
$negatif = intval(_request('negatif'));
// On reçoit des options en POST sous la forme id_option
// On reçoit des options de produits en POST sous la forme id_option
// ou id_optionX où X est l'id du groupe d'options.
$options = array(_request('id_option'));
$options_produit = array(_request('id_option'));
$groupes = sql_allfetsel('id_optionsgroupe', 'spip_optionsgroupes');
foreach ($groupes as $groupe) {
if ($id_option = _request('id_option' . $groupe['id_optionsgroupe'])) {
$options[] = $id_option;
$options_produit[] = $id_option;
}
}
// On concatène pour passer les options à l'action remplir_panier.
$options = implode('_', array_filter($options));
// On concatène pour passer les options de produits à l'action remplir_panier.
$options_produit = implode('_', array_filter($options_produit));
if ($id_objet = intval(_request('id_produit'))) {
$objet = 'produit';
@ -72,6 +72,6 @@ function formulaires_panier_produit_options_traiter_dist($id_produit) {
// On appelle l'action remplir_panier
$remplir_panier = charger_fonction('remplir_panier', 'action');
$remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options);
$remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options_produit);
}

8
optionsproduits_fonctions.php

@ -64,9 +64,9 @@ function balise_PRIX_OPTION_dist($p) {
}
// Un filtre pour obtenir le poids final d'un objet
function poids_final_objet($id_objet, $type_objet, $options = null) {
function poids_final_objet($id_objet, $type_objet, $options_produit = null) {
static $cache;
$hash = md5(json_encode(array($id_objet, $type_objet, $options)));
$hash = md5(json_encode(array($id_objet, $type_objet, $options_produit)));
if (isset($cache[$hash])) {
return $cache[$hash];
}
@ -75,8 +75,8 @@ function poids_final_objet($id_objet, $type_objet, $options = null) {
if (!$poids_objet) {
$poids_objet = generer_info_entite($id_objet, $type_objet, 'weight');
}
$options = explode('_', trim($options, '_'));
foreach ($options as $option) {
$options_produit = explode('_', trim($options_produit, '_'));
foreach ($options_produit as $option) {
$poids_objet += sql_getfetsel(
'poids_option_objet',
'spip_options_liens',

14
prix_option/produit.php

@ -16,26 +16,24 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @return mixed
*/
function prix_option_produit_ht($objet, $id_objet, $options, $ligne) {
if(isset($options['options'])) {
$options = $options['options'];
}
if (is_string($options)) {
$options = explode('_', trim($options, '_'));
$options_produit = isset($options['options']) ?: $options;
if (is_string($options_produit)) {
$options_produit = explode('_', trim($options_produit, '_'));
}
static $cache;
$hash = md5(json_encode(array($objet, $id_objet, $options, $ligne)));
$hash = md5(json_encode(array($objet, $id_objet, $options_produit, $ligne)));
if (isset($cache[$hash])) {
return $cache[$hash];
}
$prix_ht = $ligne['prix_ht'];
foreach ($options as $option) {
foreach ($options_produit as $option_produit) {
$prix_ht += sql_getfetsel(
'prix_option_objet',
'spip_options_liens',
array(
'id_option = ' . intval($option),
'id_option = ' . intval($option_produit),
'objet = ' . sql_quote($objet),
'id_objet = ' . intval($id_objet),
)

Loading…
Cancel
Save