Changeset 93629 in spip-zone for _core_/plugins/urls_etendues/urls_administrations.php
- Timestamp:
- Dec 13, 2015, 11:58:52 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_core_/plugins/urls_etendues/urls_administrations.php
r93092 r93629 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 17 /** … … 19 21 * @param string $version_cible 20 22 */ 21 function urls_upgrade($nom_meta_base_version, $version_cible) {23 function urls_upgrade($nom_meta_base_version, $version_cible) { 22 24 // cas particulier : 23 25 // si plugin pas installe mais que la table existe 24 26 // considerer que c'est un upgrade depuis v 1.0.0 25 27 // pour gerer l'historique des installations SPIP <=2.1 26 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {27 $trouver_table = charger_fonction('trouver_table', 'base');28 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { 29 $trouver_table = charger_fonction('trouver_table', 'base'); 28 30 if ($desc = $trouver_table('spip_urls') 29 AND isset($desc['exist']) AND $desc['exist'] 30 AND !isset($desc['field']['id_parent'])){ 31 ecrire_meta($nom_meta_base_version,'1.0.0'); 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'); 32 35 } 33 36 // si pas de table en base, on fera une simple creation de base … … 36 39 $maj = array(); 37 40 $maj['create'] = array( 38 array('maj_tables', array('spip_urls')),41 array('maj_tables', array('spip_urls')), 39 42 ); 40 43 $maj['1.1.0'] = array( 41 array('sql_alter', "table spip_urls ADD id_parent bigint(21) DEFAULT '0' NOT NULL"),42 array('sql_alter', "table spip_urls DROP PRIMARY KEY"),43 array('sql_alter', "table spip_urls ADD PRIMARY KEY (id_parent, url)"),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)"), 44 47 ); 45 48 $maj['1.1.1'] = array( … … 48 51 49 52 $maj['1.1.2'] = array( 50 array('sql_alter', "table spip_urls ADD segments SMALLINT(3) DEFAULT '1' NOT NULL"),53 array('sql_alter', "table spip_urls ADD segments SMALLINT(3) DEFAULT '1' NOT NULL"), 51 54 array('urls_migre_urls_segments'), 52 55 ); 53 56 $maj['1.1.3'] = array( 54 array('sql_alter', "table spip_urls ADD perma TINYINT(1) DEFAULT '0' NOT NULL"),57 array('sql_alter', "table spip_urls ADD perma TINYINT(1) DEFAULT '0' NOT NULL"), 55 58 ); 56 59 $maj['1.1.4'] = array( 57 array('sql_alter', "table spip_urls CHANGE `type` `type` varchar(25) DEFAULT 'article' NOT NULL"),60 array('sql_alter', "table spip_urls CHANGE `type` `type` varchar(25) DEFAULT 'article' NOT NULL"), 58 61 ); 59 62 … … 62 65 } 63 66 64 function urls_migre_arbo_prefixes(){ 65 $res = sql_select('*','spip_urls',"url REGEXP '\d+:\/\/'"); 66 while($row = sql_fetch($res)){ 67 $url = explode("://",$row['url']); 68 $set = array('id_parent'=>intval(reset($url)),'url'=>end($url)); 69 if (!sql_updateq('spip_urls',$set,"id_parent=".intval($row['id_parent'])." AND url=".sql_quote($row['url']))){ 70 if ($set['id_parent']==0 71 AND sql_countsel('spip_urls',"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']))){ 72 spip_log('suppression url doublon '.var_export($row,1),'urls.'._LOG_INFO_IMPORTANTE); 73 sql_delete('spip_urls',"id_parent=".intval($row['id_parent'])." AND url=".sql_quote($row['url'])); 74 } 75 else { 76 spip_log('Impossible de convertir url doublon '.var_export($row,1),'urls.'._LOG_ERREUR); 77 echo "Impossible de convertir l'url ".$row['url'].". Verifiez manuellement dans spip_urls"; 67 function 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"; 78 84 } 79 85 } 80 if (time() >= _TIME_OUT) {86 if (time() >= _TIME_OUT) { 81 87 sql_free($res); 88 82 89 return; 83 90 } … … 85 92 } 86 93 87 function urls_migre_urls_segments() {88 sql_updateq('spip_urls', array('segments'=>1),"segments<1 OR NOT(url REGEXP '\/')");89 $res = sql_select('DISTINCT url', 'spip_urls',"url REGEXP '\/' AND segments=1");90 while ($row = sql_fetch($res)){91 $segments = count(explode('/', $row['url']));92 sql_updateq('spip_urls', array('segments'=>$segments),"url=".sql_quote($row['url']));93 if (time() >= _TIME_OUT) {94 function 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) { 94 101 sql_free($res); 102 95 103 return; 96 104 } … … 105 113 function urls_vider_tables($nom_meta_base_version) { 106 114 // repasser dans les urls par defaut 107 ecrire_meta('type_urls', 'page');115 ecrire_meta('type_urls', 'page'); 108 116 sql_drop_table("spip_urls"); 109 117 effacer_meta($nom_meta_base_version);
Note: See TracChangeset
for help on using the changeset viewer.