Ignore:
Timestamp:
May 25, 2018, 5:05:26 PM (3 years ago)
Author:
abelass@…
Message:

encore le merge, ça devrait être bon maintenant

Location:
_plugins_/prix_objets/branches/v1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/prix_objets/branches/v1

  • _plugins_/prix_objets/branches/v1/prix_objets_fonctions.php

    r110047 r110381  
    392392        return $devise_defaut;
    393393}
     394
     395/**
     396 * Donne le prix pour un objet
     397 *
     398 * @param string $objet
     399 *              Objet dont on cherche le prix
     400 * @param string $id_objet
     401 *              Identifiant de l'objet dont on cherche le prix
     402 * @param array $contexte
     403 *              Les variables de l'environnement.
     404 * @param array $options
     405 *
     406 * @return string
     407 *          Le prix applicable.
     408 */
     409function prix_par_objet($objet, $id_objet, $contexte, $type = 'prix_ht', $options = array()) {
     410        $prix = 0;
     411
     412        if ($type == 'prix_ht') {
     413                $fonction_prix = charger_fonction('ht', 'inc/prix');
     414        }
     415        else {
     416                $fonction_prix = charger_fonction('prix', 'inc');
     417        }
     418
     419        $prix_source = sql_select(
     420                        'id_prix_objet',
     421                        'spip_prix_objets',
     422                        'id_prix_objet_source=0 AND objet LIKE ' . sql_quote($objet) . ' AND id_objet=' . $id_objet,
     423                        '',
     424                        array('rang_lien', 'titre', 'prix_ht')
     425                );
     426
     427        // On parcours les extension pour chaque prix principal.
     428        while ($data_source = sql_fetch($prix_source)) {
     429                $id_prix_objet = $data_source['id_prix_objet'];
     430                $extensions = sql_select(
     431                                'extension,id_extension,titre',
     432                                'spip_prix_objets',
     433                                'id_prix_objet_source=' . $id_prix_objet);
     434                $applicables = array();
     435                $i = 0;
     436                while ($data_extension = sql_fetch($extensions)) {
     437                        $i++;
     438
     439                        if($extension = charger_fonction($data_extension['extension'], 'prix_objet/', TRUE)) {
     440                                if ($extension($data_extension['id_extension'], $contexte)) {
     441                                        $applicables[] = 1;
     442                                }
     443                        }
     444                        else {
     445                                $applicables[] = 1;
     446                        }
     447                }
     448
     449                // On choisit le premier prix applicable.
     450                if (count($applicables) == $i) {
     451                        $prix =$fonction_prix('prix_objet', $id_prix_objet);
     452                        break;
     453                }
     454        }
     455
     456
     457        // Permettre d'intervenir sur le prix
     458        return pipeline('prix_par_objet', array(
     459                        'data' => $prix,
     460                        'args' => array(
     461                                'objet' => $objet,
     462                                'id_objet' => $id_objet,
     463                                'contexte' => $contexte,
     464                                'type' => $type,
     465                                'options' => $options,
     466                        )
     467                )
     468        );
     469}
Note: See TracChangeset for help on using the changeset viewer.