Changeset 118995 in spip-zone


Ignore:
Timestamp:
Dec 11, 2019, 1:14:14 PM (18 months ago)
Author:
rastapopoulos@…
Message:

Changement de la signature des fonctions de prix. Le troisième argument deviant un tableau d'options plus générique. On garde la compatibilité avec l'ancienne signature, en continant de prendre les arrondis et serveurs passés.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/prix/trunk/inc/prix.php

    r118994 r118995  
    77 * Permet d'obtenir le prix HT d'un objet SPIP. C'est le résultat de cette fonction qui est utilisée pour calculer le prix TTC.
    88 *
    9  * @param string $objet Le type de l'objet
    10  * @param int $id_objet L'identifiant de l'objet
     9 * @param string $objet
     10 *   Le type de l'objet
     11 * @param int $id_objet
     12 *   L'identifiant de l'objet
     13 * @param array $options
     14 *   Tableau d'options
     15 *   - arrondi
     16 *   - serveur
     17 *   ou un entier pour l'arrondi pour compat avec l'ancienne signature
     18 * @param string $serveur
     19 *   Déprécié. Autre base distante.
    1120 * @return float Retourne le prix HT de l'objet sinon 0
    1221 */
    13 function inc_prix_ht_dist($objet, $id_objet, $arrondi = 2, $serveur = ''){
     22function inc_prix_ht_dist($objet, $id_objet, $options = array(), $serveur = ''){
    1423        $prix_ht = 0;
     24       
     25        // Compatibilité avec l'ancienne signature
     26        if (is_int($options)) {
     27                $options = array(
     28                        'arrondi' => $options,
     29                        'serveur' => $serveur,
     30                );
     31        }
     32        // Options par défaut
     33        $options_defaut = array(
     34                'arrondi' => 2,
     35                'serveur' => '',
     36        );
     37        // On fusionne avec les défauts
     38        $options = array_merge($options_defaut, $options);
    1539       
    1640        // Cherchons d'abord si l'objet existe bien
     
    2044                and include_spip('base/connect_sql')
    2145                and $objet = objet_type($objet)
    22                 and $table_sql = table_objet_sql($objet, $serveur)
    23                 and $cle_objet = id_table_objet($objet, $serveur)
    24                 and $ligne = sql_fetsel('*', $table_sql, "$cle_objet = $id_objet",'','','','',$serveur)
     46                and $table_sql = table_objet_sql($objet, $options['serveur'])
     47                and $cle_objet = id_table_objet($objet, $options['serveur'])
     48                and $ligne = sql_fetsel('*', $table_sql, "$cle_objet = $id_objet", '', '', '', '', $options['serveur'])
    2549        ){
    2650                // Existe-t-il une fonction précise pour le prix HT de ce type d'objet : prix_<objet>_ht() dans prix/<objet>.php
     
    5377       
    5478        // Si on demande un arrondi, on le fait
    55         if ($arrondi) {
    56                 $prix_ht = round($prix_ht, $arrondi);
     79        if ($options['arrondi']) {
     80                $prix_ht = round($prix_ht, $options['arrondi']);
    5781        }
    5882       
     
    6387 * Permet d'obtenir le prix final TTC d'un objet SPIP quel qu'il soit.
    6488 *
    65  * @param string $objet Le type de l'objet
    66  * @param int $id_objet L'identifiant de l'objet
     89 * @param string $objet
     90 *   Le type de l'objet
     91 * @param int $id_objet
     92 *   L'identifiant de l'objet
     93 * @param array $options
     94 *   Tableau d'options
     95 *   - arrondi
     96 *   - serveur
     97 *   ou un entier pour l'arrondi pour compat avec l'ancienne signature
     98 * @param string $serveur
     99 *   Déprécié. Autre base distante.
    67100 * @return float Retourne le prix TTC de l'objet sinon 0
    68101 */
    69 function inc_prix_dist($objet, $id_objet, $arrondi = 2, $serveur = ''){
     102function inc_prix_dist($objet, $id_objet, $options = array(), $serveur = ''){
    70103        include_spip('base/connect_sql');
     104       
     105        // Compatibilité avec l'ancienne signature
     106        if (is_int($options)) {
     107                $options = array(
     108                        'arrondi' => $options,
     109                        'serveur' => $serveur,
     110                );
     111        }
     112        // Options par défaut
     113        $options_defaut = array(
     114                'arrondi' => 2,
     115                'serveur' => '',
     116        );
     117        // On fusionne avec les défauts
     118        $options = array_merge($options_defaut, $options);
    71119       
    72120        // On va d'abord chercher le prix HT. On délègue le test de présence de l'objet dans cette fonction.
    73121        $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
    74122        $objet = objet_type($objet);
    75         $prix = $prix_ht = $fonction_prix_ht($objet, $id_objet, 0, $serveur);
     123        $prix = $prix_ht = $fonction_prix_ht($objet, $id_objet, 0, $options['serveur']);
    76124        $taxes = array();
    77125       
     
    104152       
    105153        // Si on demande un arrondi, on le fait
    106         if ($arrondi) {
    107                 $prix = round($prix, $arrondi);
     154        if ($options['arrondi']) {
     155                $prix = round($prix, $options['arrondi']);
    108156        }
    109157       
Note: See TracChangeset for help on using the changeset viewer.