source: spip-zone/_plugins_/date_creation/trunk/datecreation_administrations.php @ 108458

Last change on this file since 108458 was 108458, checked in by nicolas.dorigny@…, 3 years ago

Un plugin qui ajoute une date de création sur tous les objets SPIP, et qui insère la date à la création d'un objet.

  • Property svn:executable set to *
File size: 2.9 KB
Line 
1<?php
2/**
3 * Fichier gérant l'installation et désinstallation du plugin Date de création
4 *
5 * @plugin     Date de création
6 * @copyright  2018
7 * @author     nicod_
8 * @licence    GNU/GPL
9 * @package    SPIP\Datecreation\Installation
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16include_spip('inc/meta');
17include_spip('inc/config');
18
19/**
20 * Declaration des tables principales
21 * Déclare le champ date_creation sur les tables d'objets qui en disposent
22 *
23 * @param array $tables_principales
24 *
25 * @return array
26 */
27function datecreation_declarer_tables_principales($tables_principales) {
28        $tables = unserialize(lire_config('datecreation/objets'));
29        if (is_array($tables)) {
30                foreach ($tables as $table) {
31                        $tables_principales[$table]['field']['date_creation'] = 'datetime DEFAULT "0000-00-00 00:00:00" NOT NULL';
32                }
33        }
34
35        return $tables_principales;
36}
37
38/**
39 * Fonction d'installation et de mise à jour du plugin Date de création.
40 *
41 * @param string $nom_meta_base_version
42 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
43 * @param string $version_cible
44 *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
45 *
46 * @return void
47 **/
48function datecreation_upgrade($nom_meta_base_version, $version_cible) {
49        datecreation_creer_champs_date_creation();
50
51        include_spip('base/upgrade');
52        maj_plugin($nom_meta_base_version, $version_cible, array());
53}
54
55/**
56 * Créer un champ date_creation dans les tables d'objets qui n'en ont pas encore un.
57 *
58 * @return array Liste des tables ayant un champ date_creation
59 */
60function datecreation_creer_champs_date_creation() {
61        include_spip('base/abstract_sql');
62        $tables        = array();
63        $tables_objets = lister_tables_objets_sql();
64        foreach ($tables_objets as $table => $desc) {
65                $champs_table = sql_showtable($table);
66                if (!isset($champs_table['field']['date_creation'])) {
67                        $sql = 'TABLE ' . $table . ' ADD date_creation datetime DEFAULT "0000-00-00 00:00:00" NOT NULL';
68                        sql_alter($sql);
69                        spip_log('ALTER ' . $sql, 'date_creation');
70                        $tables[] = $table;
71                } else if (strpos($champs_table['field']['date_creation'], 'datetime') !== false) {
72                        $tables[] = $table;
73                }
74        }
75        ecrire_config('datecreation/objets', serialize($tables));
76
77        return $tables;
78}
79
80/**
81 * Fonction de désinstallation du plugin Date de création.
82 * Supprime les champs date_creation des tables d'objets.
83 *
84 * @param string $nom_meta_base_version
85 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
86 *
87 * @return void
88 **/
89function datecreation_vider_tables($nom_meta_base_version) {
90        include_spip('base/abstract_sql');
91        $tables = unserialize(lire_config('datecreation/objets'));
92        if (is_array($tables)) {
93                foreach ($tables as $table) {
94                        $sql = 'TABLE ' . $table . ' DROP date_creation';
95                        sql_alter($sql);
96                        spip_log('ALTER ' . $sql, 'date_creation');
97                }
98        }
99        effacer_meta($nom_meta_base_version);
100        effacer_meta('datecreation');
101}
Note: See TracBrowser for help on using the repository browser.