source: spip-zone/_core_/plugins/urls_etendues/urls_administrations.php @ 93629

Last change on this file since 93629 was 93629, checked in by cedric@…, 5 years ago

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File size: 4.2 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2015                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17/**
18 * Installation/maj des tables urls
19 *
20 * @param string $nom_meta_base_version
21 * @param string $version_cible
22 */
23function urls_upgrade($nom_meta_base_version, $version_cible) {
24        // cas particulier :
25        // si plugin pas installe mais que la table existe
26        // considerer que c'est un upgrade depuis v 1.0.0
27        // pour gerer l'historique des installations SPIP <=2.1
28        if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {
29                $trouver_table = charger_fonction('trouver_table', 'base');
30                if ($desc = $trouver_table('spip_urls')
31                        AND isset($desc['exist']) AND $desc['exist']
32                        AND !isset($desc['field']['id_parent'])
33                ) {
34                        ecrire_meta($nom_meta_base_version, '1.0.0');
35                }
36                // si pas de table en base, on fera une simple creation de base
37        }
38
39        $maj = array();
40        $maj['create'] = array(
41                array('maj_tables', array('spip_urls')),
42        );
43        $maj['1.1.0'] = array(
44                array('sql_alter', "table spip_urls ADD id_parent bigint(21) DEFAULT '0' NOT NULL"),
45                array('sql_alter', "table spip_urls DROP PRIMARY KEY"),
46                array('sql_alter', "table spip_urls ADD PRIMARY KEY (id_parent, url)"),
47        );
48        $maj['1.1.1'] = array(
49                array('urls_migre_arbo_prefixes'),
50        );
51
52        $maj['1.1.2'] = array(
53                array('sql_alter', "table spip_urls ADD segments SMALLINT(3) DEFAULT '1' NOT NULL"),
54                array('urls_migre_urls_segments'),
55        );
56        $maj['1.1.3'] = array(
57                array('sql_alter', "table spip_urls ADD perma TINYINT(1) DEFAULT '0' NOT NULL"),
58        );
59        $maj['1.1.4'] = array(
60                array('sql_alter', "table spip_urls CHANGE `type` `type` varchar(25) DEFAULT 'article' NOT NULL"),
61        );
62
63        include_spip('base/upgrade');
64        maj_plugin($nom_meta_base_version, $version_cible, $maj);
65}
66
67function urls_migre_arbo_prefixes() {
68        $res = sql_select('*', 'spip_urls', "url REGEXP '\d+:\/\/'");
69        while ($row = sql_fetch($res)) {
70                $url = explode("://", $row['url']);
71                $set = array('id_parent' => intval(reset($url)), 'url' => end($url));
72                if (!sql_updateq('spip_urls', $set,
73                        "id_parent=" . intval($row['id_parent']) . " AND url=" . sql_quote($row['url']))
74                ) {
75                        if ($set['id_parent'] == 0
76                                AND sql_countsel('spip_urls',
77                                        "id_parent=" . intval($set['id_parent']) . " AND url=" . sql_quote($set['url']) . " AND type=" . sql_quote($row['type']) . " AND id_objet=" . sql_quote($row['id_objet']))
78                        ) {
79                                spip_log('suppression url doublon ' . var_export($row, 1), 'urls.' . _LOG_INFO_IMPORTANTE);
80                                sql_delete('spip_urls', "id_parent=" . intval($row['id_parent']) . " AND url=" . sql_quote($row['url']));
81                        } else {
82                                spip_log('Impossible de convertir url doublon ' . var_export($row, 1), 'urls.' . _LOG_ERREUR);
83                                echo "Impossible de convertir l'url " . $row['url'] . ". Verifiez manuellement dans spip_urls";
84                        }
85                }
86                if (time() >= _TIME_OUT) {
87                        sql_free($res);
88
89                        return;
90                }
91        }
92}
93
94function urls_migre_urls_segments() {
95        sql_updateq('spip_urls', array('segments' => 1), "segments<1 OR NOT(url REGEXP '\/')");
96        $res = sql_select('DISTINCT url', 'spip_urls', "url REGEXP '\/' AND segments=1");
97        while ($row = sql_fetch($res)) {
98                $segments = count(explode('/', $row['url']));
99                sql_updateq('spip_urls', array('segments' => $segments), "url=" . sql_quote($row['url']));
100                if (time() >= _TIME_OUT) {
101                        sql_free($res);
102
103                        return;
104                }
105        }
106}
107
108/**
109 * Desinstallation/suppression des tables urls
110 *
111 * @param string $nom_meta_base_version
112 */
113function urls_vider_tables($nom_meta_base_version) {
114        // repasser dans les urls par defaut
115        ecrire_meta('type_urls', 'page');
116        sql_drop_table("spip_urls");
117        effacer_meta($nom_meta_base_version);
118}
119
120?>
Note: See TracBrowser for help on using the repository browser.