Changeset 110312 in spip-zone


Ignore:
Timestamp:
May 19, 2018, 6:09:13 AM (5 months ago)
Author:
abelass@…
Message:

installation correcte

Location:
_plugins_/prix_objets/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/prix_objets/trunk/base/prix_objets.php

    r110294 r110312  
    11<?php
    2 if (!defined("_ECRIRE_INC_VERSION")) return;
     2if (! defined("_ECRIRE_INC_VERSION"))
     3        return;
    34
    4 function prix_objets_declarer_tables_interfaces($tables_interfaces){
     5function prix_objets_declarer_tables_interfaces($tables_interfaces) {
     6        $tables_interfaces['table_des_tables']['prix_objets'] = 'prix_objets';
    57
    6                 $tables_interfaces['table_des_tables']['prix_objets'] = 'prix_objets';
    7 
    8                 return $tables_interfaces;
     8        return $tables_interfaces;
    99}
    1010
    11 function prix_objets_declarer_tables_principales($tables_principales){
     11function prix_objets_declarer_tables_principales($tables_principales) {
    1212        $spip_prix_objets = array(
    13                 "id_prix_objet"         => "bigint(21) NOT NULL",
     13                "id_prix_objet" => "bigint(21) NOT NULL",
     14                "id_prix_objet_source" => "bigint(21) NOT NULL",
    1415                'objet' => 'varchar(25) not null default ""',
    15                 "id_objet"      => "bigint(21) NOT NULL",
    16                 "titre"   => "varchar(255)  DEFAULT '' NOT NULL",
    17                 "reference"   => "varchar(255)  DEFAULT '' NOT NULL",
    18                 "code_devise"   => "varchar(3) NOT NULL",
    19                 "prix_ht"               => "decimal(15,2) NOT NULL DEFAULT '0.00'",
    20                 "prix"       => "decimal(15,2) NOT NULL DEFAULT '0.00'",
    21                 "taxe"   => "varchar(10)  DEFAULT '' NOT NULL",
     16                "id_objet" => "bigint(21) NOT NULL",
     17                "titre" => "varchar(255)  DEFAULT '' NOT NULL",
     18                "reference" => "varchar(255)  DEFAULT '' NOT NULL",
     19                "code_devise" => "varchar(3) NOT NULL",
     20                "prix_ht" => "decimal(15,2) NOT NULL DEFAULT '0.00'",
     21                "prix" => "decimal(15,2) NOT NULL DEFAULT '0.00'",
     22                "taxe" => "varchar(10)  DEFAULT '' NOT NULL",
    2223                'extension' => 'varchar(50) not null default ""',
    23                 "id_extension"  => "bigint(21) NOT NULL",
    24                 );
     24                "id_extension" => "bigint(21) NOT NULL"
     25        );
    2526
    2627        $spip_prix_objets_key = array(
    27                 "PRIMARY KEY"   => "id_prix_objet",
    28                 "KEY id_objet"  => "id_objet,objet,id_extension,extension",
    29                 );
     28                "PRIMARY KEY" => "id_prix_objet",
     29                "KEY id_objet" => "id_prix_objet_source,id_objet,objet,id_extension,extension"
     30        );
    3031
    3132        $spip_prix_objets_join = array(
    32                 "id_prix_objet" => "id_prix_objet",
    33                 "id_objet"      => "id_objet",
    34                 "id_objet"      => "id_article",
    35                 );
     33                "id_prix_objet" => "id_prix_objet",
     34                "id_objet" => "id_objet",
     35                "id_objet" => "id_article"
     36        );
    3637
    3738        $tables_principales['spip_prix_objets'] = array(
     
    4445}
    4546
     47/**
     48 * Actualise la bd
     49 *
     50 * @param string $version_cible
     51 *              la version de la bd
     52 */
    4653function po_upgrade($version_cible) {
    4754
    4855        // Remplace les champs "id_EXTENSION" par id_extension extension.
    49         if ($version_cible == '2.0.3') {
     56        if ($version_cible == '2.0.0') {
    5057                $trouver_table = charger_fonction('trouver_table', 'base');
    5158                $table = 'spip_prix_objets';
    5259                $decription_table = $trouver_table($table);
    5360                include_spip('inc/prix_objets');
    54                 $extensions_declaration = prix_objets_extensions_declaration();
    55                 $objets = array_keys($extensions_declaration);
    5661
    57                 foreach ($objets as $objet) {
    58                         if ($identifiant_extension = id_table_objet($objet) and
    59                                 isset($decription_table['field'][$identifiant_extension])
    60                                 ) {
    61                                         $sql = sql_select($identifiant_extension . ',id_prix_objet', 'spip_prix_objets', $identifiant_extension . '>0');
     62                $extensions = array(
     63                        'declinaison',
     64                        'po_periode'
     65                );
    6266
    63                                         while ($data = sql_fetch($sql)) {
    64                                                 sql_updateq(
    65                                                         'spip_prix_objets',
     67                foreach ($extensions as $extension) {
     68                        if ($identifiant_extension = id_table_objet($extension) and
     69                                        isset($decription_table['field'][$identifiant_extension])) {
     70                                $sql = sql_select('*', 'spip_prix_objets',
     71                                                $identifiant_extension . '>0');
     72
     73                                while ($data = sql_fetch($sql)) {
     74                                        sql_insertq('spip_prix_objets',
    6675                                                        array(
    67                                                                 'extension' => $objet,
     76                                                                'id_prix_objet_source' => $data['id_prix_objet'],
     77                                                                'extension' => $extension,
    6878                                                                'id_extension' => $data[$identifiant_extension],
    69                                                         ),
    70                                                         'id_prix_objet=' . $data['id_prix_objet']
    71                                                 );
    72                                         }
    73                                         sql_alter("TABLE $table DROP COLUMN  $identifiant_extension");
     79                                                                'objet' => $data['objet'],
     80                                                                'id_objet' => $data['id_objet'],
     81                                                                'titre' => extraire_multi(
     82                                                                                supprimer_numero(
     83                                                                                                generer_info_entite(
     84                                                                                                                $data[$identifiant_extension],
     85                                                                                                                $extension, 'titre', '*'))),
     86                                                                'prix' => $data['prix_ht']
     87                                                        ));
    7488                                }
     89                                sql_alter("TABLE $table DROP COLUMN  $identifiant_extension");
     90                        }
    7591                }
    76 
    7792        }
    7893}
  • _plugins_/prix_objets/trunk/formulaires/prix.php

    r110295 r110312  
    2828
    2929        if ($id_objet) {
    30                 $d = sql_select('*', 'spip_prix_objets', 'id_objet IN(' . $id_objet . ') AND objet =' . sql_quote($objet));
     30                $d = sql_select(
     31                        '*',
     32                        'spip_prix_objets',
     33                        'id_prix_objet_source = 0 AND id_objet IN(' . $id_objet . ') AND objet =' . sql_quote($objet)
     34                );
    3135        }
    3236
     
    5660        // Inclure les extensions.
    5761        $valeurs['_saisies_extras'] = prix_objets_extensions_declaration($valeurs);
    58         $trouver_table = charger_fonction('trouver_table', 'base');
    59         $decription_table = $trouver_table($table);
    60         $extensions = array();
     62        $extensions = array_keys($valeurs['_saisies_extras']);
    6163        $saisies = array();
    6264
     
    6567                foreach (saisies_lister_par_nom($s) as $nom => $definition) {
    6668                        $valeurs[$nom] = _request($nom);
    67                         $objet = $definition['objet'];
    68                         $extensions[] = $objet;
    69 
    70                         // Assurer que un champ d'identifiant de l'extension existe, sinon l'ajouter.
    71                         if ($identifiant_extension = id_table_objet($objet) and
    72                                         !isset($decription_table['field'][$identifiant_extension])
    73                                         ) {
    74                                 sql_alter("TABLE $table ADD $identifiant_extension bigint(21) NOT NULL");
    75 
    76                                 // Vide le chache des déscriptions des tables.
    77                                 $trouver_table('');
    78                         }
    7969                }
    8070        }
     
    8272        // Déclarer les extensions
    8373        if (count($extensions) > 0) {
    84                 $saisie = array(
     74
     75                $valeurs['extensions'] = _request('extensions');
     76
     77                $valeurs['_saisies_extras'] = array_merge(
     78                        $saisies,
     79                        array(
    8580                                array(
    86                                 'saisie' => 'hidden',
    87                                 'options' => array(
    88                                         'nom' => 'extensions',
    89                                         'defaut' => implode(',', $extensions),
     81                                        'saisie' => 'hidden',
     82                                        'options' => array(
     83                                                'nom' => 'extensions',
     84                                                'defaut' => implode(',', $extensions),
     85                                        )
    9086                                )
    9187                        )
    9288                );
    93                 $valeurs['extensions'] = _request('extensions');
    94 
    95                 $valeurs['_saisies_extras'] = array_merge($saisies, $saisie);
    9689        }
    9790
     
    128121        }
    129122
     123        // Les infos des extensions
    130124        $titre_secondaire = array();
    131125        $valeurs_extensions = array();
     
    133127                if ($id_extension = _request('id_prix_extension_' . $extension)) {
    134128                        if (!is_array($id_extension)) {
    135                                 $titre = extraire_multi(
     129                                $titre_secondaire = extraire_multi(
    136130                                        supprimer_numero(
    137131                                                generer_info_entite(
     
    142136                                                )
    143137                                        );
    144                                 $titre_secondaire[] = $titre;
     138                                $titres_secondaires[] = $titre_secondaire;
    145139                                $valeurs_extensions[] = array(
    146                                         'titre' => $titre,
     140                                        'objet' => $objet,
     141                                        'id_objet' => $id_objet,
     142                                        'titre' => $titre_secondaire,
    147143                                        'extension' => $extension,
    148144                                        'id_extension' => $id_extension
     
    151147                        else {
    152148                                foreach ($id_extension as $id) {
    153                                         $titre = extraire_multi(
     149                                        $titre_secondaire = extraire_multi(
    154150                                                supprimer_numero(
    155151                                                        generer_info_entite(
     
    160156                                                        )
    161157                                                );
    162                                         $titre_secondaire[] = $titre;
     158                                        $titres_secondaires[] = $titre_secondaire;
    163159                                        $valeurs_extensions[] = array(
    164                                                 'titre' => $titre,
     160                                                'objet' => $objet,
     161                                                'id_objet' => $id_objet,
     162                                                'titre' => $titre_secondaire,
    165163                                                'extension' => $extension,
    166164                                                'id_extension' => $id
     
    171169        }
    172170
    173                 $titre_secondaire = implode(' / ', $titre_secondaire);
    174 
    175                 if ($titre_secondaire) {
    176                         $titre = $titre . ' - ' . $titre_secondaire;
     171        $titres_secondaires = implode(' / ', $titres_secondaires);
     172
     173        if ($titres_secondaires) {
     174                $titre = $titre . ' - ' . $titres_secondaires;
    177175                }
    178176
     
    188186                );
    189187
    190         if ($ttc = _request('taxes_inclus'))
     188        if ($ttc = _request('taxes_inclus')) {
    191189                $valeurs['prix'] = $prix;
    192         else
     190        }
     191        else {
    193192                $valeurs['prix_ht'] = $prix;
    194 
    195         $result = sql_insertq('spip_prix_objets', $valeurs);
     193        }
     194
     195        // Enregistrement du prix
     196        $id_prix_objet = sql_insertq('spip_prix_objets', $valeurs);
     197
     198        // Enregistrement des extensions
     199        foreach($valeurs_extensions as $valeur_extension) {
     200                $valeur_extension['id_prix_objet_source'] = $id_prix_objet;
     201                sql_insertq('spip_prix_objets', $valeur_extension);
     202        }
    196203
    197204        // Ivalider le cache
     
    201208        return $valeur['message_ok'] = true;
    202209}
    203 
    204 ?>
  • _plugins_/prix_objets/trunk/paquet.xml

    r110294 r110312  
    22        prefix="prix_objets"
    33        categorie="edition"
    4         version="2.0.0"
     4        version="2.0.1"
    55        etat="stable"
    66        compatibilite="[3.0.5;3.2.*]"
    77        logo="prive/themes/spip/images/prix_objets-64.png"
    88        documentation="https://contrib.spip.net/Prix-Objets"
    9         schema="2.0.3"
     9        schema="2.0.0"
    1010>
    1111
  • _plugins_/prix_objets/trunk/prix_objets_administrations.php

    r110294 r110312  
    6262                array('sql_alter','TABLE spip_prix_objets CHANGE prix_ht prix_ht decimal(15,2) NOT NULL DEFAULT "0.00"'),
    6363        );
    64         $maj['2.0.3']  = array(
     64        $maj['2.0.0']  = array(
    6565                array('maj_tables', array('spip_prix_objets')),
    66                 array('sql_alter','TABLE spip_prix_objets ADD INDEX `id_objet` (`objet,id_extension,extension`)'),
     66                array('sql_alter','TABLE spip_prix_objets DROP INDEX id_objet'),
     67                array('sql_alter','TABLE spip_prix_objets ADD INDEX `id_objet` (`id_objet`,`id_prix_objet_source`,`objet`,`id_extension`,`extension`)'),
    6768                array('po_upgrade',$version_cible),
    6869        );
Note: See TracChangeset for help on using the changeset viewer.