PageRenderTime 60ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/spip/ecrire/maj/v019.php

https://github.com/eyeswebcrea/espace-couture-sittler.fr
PHP | 475 lines | 345 code | 66 blank | 64 comment | 25 complexity | 2e9924ef9ee193a4e176c2bfd3ba55ee MD5 | raw file
Possible License(s): LGPL-2.1, GPL-3.0
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2011 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined('_ECRIRE_INC_VERSION')) return;
  12. /*--------------------------------------------------------------------- */
  13. /* Nouvelle gestion des MAJ (par tableau) */
  14. /*--------------------------------------------------------------------- */
  15. // on la fait coincider retroactivement avec l'etat de la 1.9.2
  16. // => l'index numerique entier est la * par 1000 (resultat < SVN c'est ok)
  17. // FLV est incrustable, la MAJ precedente l'avait oublie
  18. $GLOBALS['maj'][1931] = array(
  19. array('spip_query', "UPDATE spip_types_documents SET `inclus`='embed' WHERE `extension`='flv'")
  20. );
  21. // Ajout de spip_forum.date_thread, et on essaie de le remplir
  22. // a coup de table temporaire (est-ce autorise partout... sinon
  23. // tant pis, ca ne marchera que pour les forums recemment modifies)
  24. $GLOBALS['maj'][1932] = array(
  25. array('sql_alter', "TABLE spip_forum ADD `date_thread` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
  26. array('sql_alter', "TABLE spip_forum ADD INDEX `date_thread` (`date_thread`)"),
  27. array('spip_query', "DROP TABLE IF EXISTS spip_tmp"),
  28. array('spip_query', "CREATE TABLE spip_tmp SELECT `id_thread`,MAX(`date_heure`) AS dt FROM spip_forum GROUP BY `id_thread`"),
  29. array('sql_alter', "TABLE spip_tmp ADD INDEX `p` (`id_thread`)"),
  30. array('spip_query', "UPDATE spip_forum AS F JOIN spip_tmp AS T ON F.id_thread=T.id_thread SET F.date_thread=T.dt"),
  31. array('spip_query', "DROP TABLE spip_tmp"),
  32. );
  33. // Retrait de _DIR_IMG dans le champ fichier de la table des doc
  34. function maj_1_934 () {
  35. // attention, en cas de mutualisation _DIR_IMG contient quelque chose comme sites/urldusite/IMG/
  36. // essayons en ne prenant que le dernier segment
  37. $dir_img = basename(_DIR_IMG).'/';
  38. $res = spip_query("SELECT fichier FROM spip_documents WHERE fichier LIKE " . _q($dir_img . '%') . " LIMIT 0,1");
  39. if (!$row = spip_fetch_array($res)){
  40. //Ęsinon on essaye avec le chemin complet
  41. // il faut donc verifier qu'on a bien le bon nom de repertoire
  42. $dir_img = substr(_DIR_IMG,strlen(_DIR_RACINE));
  43. }
  44. $n = strlen($dir_img) + 1;
  45. spip_query("UPDATE spip_documents SET `fichier`=substring(fichier,$n) WHERE `fichier` LIKE " . _q($dir_img . '%'));
  46. }
  47. $GLOBALS['maj'][1934] = array(array('maj_1_934'));
  48. function maj_1_935 () {
  49. include_spip('inc/texte');
  50. foreach(array('article'=>'id_article','rubrique'=>'id_rubrique','breve'=>'id_breve') as $type => $id_table_objet){
  51. $table_objet = "$type"."s";
  52. $chapo = $type=='article' ? ",a.chapo":"";
  53. $res = spip_query("SELECT a.$id_table_objet,a.texte $chapo FROM spip_documents_$table_objet AS d JOIN spip_$table_objet AS a ON a.$id_table_objet=d.$id_table_objet GROUP BY $id_table_objet");
  54. while ($row = sql_fetch($res)){
  55. $GLOBALS['doublons_documents_inclus'] = array();
  56. traiter_modeles(($chapo?$row['chapo']:"").$row['texte'],true); // detecter les doublons
  57. if (count($GLOBALS['doublons_documents_inclus'])){
  58. $id = $row[$id_table_objet];
  59. $liste = "(".implode(",$id,'oui'),(",$GLOBALS['doublons_documents_inclus']).",$id,'oui')";
  60. spip_query("REPLACE INTO spip_documents_$table_objet (`id_document`,`$id_table_objet`,`vu`) VALUES $liste");
  61. }
  62. }
  63. }
  64. }
  65. $GLOBALS['maj'][1935] = array(
  66. array('sql_alter', "TABLE spip_documents_articles ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
  67. array('sql_alter', "TABLE spip_documents_rubriques ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
  68. array('sql_alter', "TABLE spip_documents_breves ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
  69. array('maj_1_935')
  70. );
  71. // http://doc.spip.org/@convertir_un_champ_blob_en_text
  72. function convertir_un_champ_blob_en_text($table,$champ,$type){
  73. // precaution : definir le charset par defaut de la table, car c'est lui qui prevaut
  74. // et il faut qu'il corresponde au charset de la connexion qui est celui
  75. // dans lequel on a ecrit le champ en blob
  76. if ($charset = sql_getfetsel('@@character_set_connection')){
  77. sql_alter("TABLE $table DEFAULT CHARACTER SET ".$charset);
  78. }
  79. $res = spip_query("SHOW FULL COLUMNS FROM $table LIKE '$champ'");
  80. if ($row = sql_fetch($res)){
  81. if (strtolower($row['Type'])!=strtolower($type)) {
  82. $default = $row['Default']?(" DEFAULT ".sql_quote($row['Default'])):"";
  83. $notnull = ($row['Null']=='YES')?"":" NOT NULL";
  84. sql_alter("TABLE $table CHANGE $champ $champ $type $default $notnull");
  85. }
  86. }
  87. }
  88. $GLOBALS['maj'][1937] = array(
  89. // convertir les champs blob des tables spip en champs texte
  90. array('convertir_un_champ_blob_en_text',"spip_articles","texte","LONGTEXT"),
  91. array('convertir_un_champ_blob_en_text',"spip_articles","extra","LONGTEXT"),
  92. array('convertir_un_champ_blob_en_text',"spip_auteurs","extra","LONGTEXT"),
  93. array('convertir_un_champ_blob_en_text',"spip_breves","texte","LONGTEXT"),
  94. array('convertir_un_champ_blob_en_text',"spip_breves","extra","LONGTEXT"),
  95. array('convertir_un_champ_blob_en_text',"spip_messages","texte","LONGTEXT"),
  96. array('convertir_un_champ_blob_en_text',"spip_mots","texte","LONGTEXT"),
  97. array('convertir_un_champ_blob_en_text',"spip_mots","extra","LONGTEXT"),
  98. array('convertir_un_champ_blob_en_text',"spip_groupes_mots","texte","LONGTEXT"),
  99. array('convertir_un_champ_blob_en_text',"spip_rubriques","texte","LONGTEXT"),
  100. array('convertir_un_champ_blob_en_text',"spip_rubriques","extra","LONGTEXT"),
  101. array('convertir_un_champ_blob_en_text',"spip_syndic","nom_site","LONGTEXT"),
  102. array('convertir_un_champ_blob_en_text',"spip_syndic","descriptif","TEXT"),
  103. array('convertir_un_champ_blob_en_text',"spip_syndic","extra","LONGTEXT"),
  104. array('convertir_un_champ_blob_en_text',"spip_syndic_articles","descriptif","LONGTEXT"),
  105. array('convertir_un_champ_blob_en_text',"spip_petitions","texte","LONGTEXT"),
  106. array('convertir_un_champ_blob_en_text',"spip_ortho_cache","suggest","TEXT"),
  107. );
  108. function maj_1_938 () {
  109. $res = sql_select('extension','spip_documents',"extension='' OR extension is NULL");
  110. if ($n = sql_count($res)) {
  111. $repli = false;
  112. // verifier que la colonne id_type est toujours la (update post 1.938)
  113. $desc = sql_showtable('spip_documents');
  114. if (!$desc OR !isset($desc['field']['id_type']))
  115. $repli = true;
  116. $s = sql_select('extension'.($repli?'':',id_type'),'spip_types_documents');
  117. while ($t = sql_fetch($s)) {
  118. if (isset($t['id_type']))
  119. spip_query("UPDATE spip_documents SET `extension`="._q($t['extension']) ." WHERE `id_type`="._q($t['id_type']));
  120. else
  121. spip_query("UPDATE spip_documents SET `extension`="._q($t['extension']) ." WHERE fichier LIKE "._q("%." . $t['extension']));
  122. }
  123. $res = sql_select('extension','spip_documents',"extension='' OR extension is NULL");
  124. if ($n = sql_count($res))
  125. spip_log("Table spip_documents : Colonne extension incomplete : $n lignes vides");
  126. }
  127. }
  128. $GLOBALS['maj'][1938] = array(
  129. // Des champs NULL a l'installation
  130. // Ajouter un champ extension aux spip_documents, et le
  131. // remplir avec les valeurs ad hoc
  132. array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "),
  133. array('sql_alter', "TABLE spip_documents ADD INDEX `extension` (`extension`)"),
  134. array('maj_1_938'),
  135. array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"),
  136. ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY
  137. array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL ") ,
  138. array('sql_alter', "TABLE spip_types_documents DROP PRIMARY KEY"),
  139. array('sql_alter', "TABLE spip_types_documents DROP `id_type`"),
  140. array('sql_alter', "TABLE spip_types_documents DROP INDEX `extension`"),
  141. ## recreer la PRIMARY KEY sur spip_types_documents.extension
  142. array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)"),
  143. );
  144. $GLOBALS['maj'][1939] = array(
  145. array('sql_alter', "TABLE spip_visites CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
  146. array('sql_alter', "TABLE spip_visites_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
  147. array('sql_alter', "TABLE spip_referers CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
  148. array('sql_alter', "TABLE spip_referers CHANGE `visites_jour` `visites_jour` INT UNSIGNED DEFAULT '0' NOT NULL"),
  149. array('sql_alter', "TABLE spip_referers CHANGE `visites_veille` `visites_veille` INT UNSIGNED DEFAULT '0' NOT NULL"),
  150. array('sql_alter', "TABLE spip_referers_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL")
  151. );
  152. $GLOBALS['maj'][1940] = array(
  153. array('spip_query', "DROP TABLE spip_caches"),
  154. );
  155. $GLOBALS['maj'][1941] = array(
  156. array('spip_query', "UPDATE spip_meta SET `valeur` = '' WHERE `nom`='preview' AND `valeur`='non' "),
  157. array('spip_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,1comite,' WHERE `nom`='preview' AND `valeur`='1comite' "),
  158. array('spip_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,' WHERE `nom`='preview' AND `valeur`='oui' "),
  159. );
  160. $GLOBALS['maj'][1942] = array(
  161. array('sql_alter', "TABLE spip_auteurs CHANGE `statut` `statut` varchar(255) DEFAULT '0' NOT NULL"),
  162. array('sql_alter', "TABLE spip_breves CHANGE `statut` `statut` varchar(6) DEFAULT '0' NOT NULL"),
  163. array('sql_alter', "TABLE spip_messages CHANGE `statut` `statut` varchar(6) DEFAULT '0' NOT NULL"),
  164. array('sql_alter', "TABLE spip_rubriques CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
  165. array('sql_alter', "TABLE spip_rubriques CHANGE `statut_tmp` `statut_tmp` varchar(10) DEFAULT '0' NOT NULL"),
  166. array('sql_alter', "TABLE spip_syndic CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
  167. array('sql_alter', "TABLE spip_syndic_articles CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
  168. array('sql_alter', "TABLE spip_forum CHANGE `statut` `statut` varchar(8) DEFAULT '0' NOT NULL"),
  169. array('sql_alter', "TABLE spip_signatures CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL")
  170. );
  171. // suppression de l'indexation dans la version standard
  172. $GLOBALS['maj'][1943] = array(
  173. array('sql_alter', "TABLE spip_articles DROP KEY `idx`"),
  174. array('sql_alter', "TABLE spip_articles DROP `idx`"),
  175. array('sql_alter', "TABLE spip_auteurs DROP KEY `idx`"),
  176. array('sql_alter', "TABLE spip_auteurs DROP `idx`"),
  177. array('sql_alter', "TABLE spip_breves DROP KEY `idx`"),
  178. array('sql_alter', "TABLE spip_breves DROP `idx`"),
  179. array('sql_alter', "TABLE spip_mots DROP KEY `idx`"),
  180. array('sql_alter', "TABLE spip_mots DROP `idx`"),
  181. array('sql_alter', "TABLE spip_rubriques DROP KEY `idx`"),
  182. array('sql_alter', "TABLE spip_rubriques DROP `idx`"),
  183. # array('sql_alter', "TABLE spip_documents DROP KEY `idx`"),
  184. array('sql_alter', "TABLE spip_documents DROP `idx`"),
  185. array('sql_alter', "TABLE spip_syndic DROP KEY `idx`"),
  186. array('sql_alter', "TABLE spip_syndic DROP `idx`"),
  187. array('sql_alter', "TABLE spip_forum DROP KEY `idx`"),
  188. array('sql_alter', "TABLE spip_forum DROP `idx`"),
  189. array('sql_alter', "TABLE spip_signatures DROP KEY `idx`"),
  190. array('sql_alter', "TABLE spip_signatures DROP `idx`"),
  191. array('spip_query', "DROP TABLE spip_index"),
  192. array('spip_query', "DROP TABLE spip_index_dico"),
  193. );
  194. $GLOBALS['maj'][1944] = array(
  195. array('sql_alter', "TABLE spip_documents CHANGE `taille` `taille` integer"),
  196. array('sql_alter', "TABLE spip_documents CHANGE `largeur` `largeur` integer"),
  197. array('sql_alter', "TABLE spip_documents CHANGE `hauteur` `hauteur` integer")
  198. );
  199. $GLOBALS['maj'][1945] = array(
  200. array('sql_alter', "TABLE spip_petitions CHANGE `email_unique` `email_unique` CHAR (3) DEFAULT '' NOT NULL"),
  201. array('sql_alter', "TABLE spip_petitions CHANGE `site_obli` `site_obli` CHAR (3) DEFAULT '' NOT NULL"),
  202. array('sql_alter', "TABLE spip_petitions CHANGE `site_unique` `site_unique` CHAR (3) DEFAULT '' NOT NULL"),
  203. array('sql_alter', "TABLE spip_petitions CHANGE `message` `message` CHAR (3) DEFAULT '' NOT NULL"),
  204. array('sql_alter', "TABLE spip_petitions CHANGE `texte` `texte` LONGTEXT DEFAULT '' NOT NULL"),
  205. array('sql_alter', "TABLE spip_articles CHANGE `surtitre` `surtitre` text DEFAULT '' NOT NULL"),
  206. array('sql_alter', "TABLE spip_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  207. array('sql_alter', "TABLE spip_articles CHANGE `soustitre` `soustitre` text DEFAULT '' NOT NULL"),
  208. array('sql_alter', "TABLE spip_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  209. array('sql_alter', "TABLE spip_articles CHANGE `chapo` `chapo` mediumtext DEFAULT '' NOT NULL"),
  210. array('sql_alter', "TABLE spip_articles CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
  211. array('sql_alter', "TABLE spip_articles CHANGE `ps` `ps` mediumtext DEFAULT '' NOT NULL"),
  212. array('sql_alter', "TABLE spip_articles CHANGE `accepter_forum` `accepter_forum` CHAR(3) DEFAULT '' NOT NULL"),
  213. array('sql_alter', "TABLE spip_articles CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"),
  214. array('sql_alter', "TABLE spip_articles CHANGE `url_site` `url_site` VARCHAR(255) DEFAULT '' NOT NULL"),
  215. array('sql_alter', "TABLE spip_articles CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
  216. array('sql_alter', "TABLE spip_auteurs CHANGE `nom` `nom` text DEFAULT '' NOT NULL"),
  217. array('sql_alter', "TABLE spip_auteurs CHANGE `bio` `bio` text DEFAULT '' NOT NULL"),
  218. array('sql_alter', "TABLE spip_auteurs CHANGE `email` `email` tinytext DEFAULT '' NOT NULL"),
  219. array('sql_alter', "TABLE spip_auteurs CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"),
  220. array('sql_alter', "TABLE spip_auteurs CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
  221. array('sql_alter', "TABLE spip_auteurs CHANGE `pass` `pass` tinytext DEFAULT '' NOT NULL"),
  222. array('sql_alter', "TABLE spip_auteurs CHANGE `low_sec` `low_sec` tinytext DEFAULT '' NOT NULL"),
  223. array('sql_alter', "TABLE spip_auteurs CHANGE `pgp` `pgp` TEXT DEFAULT '' NOT NULL"),
  224. array('sql_alter', "TABLE spip_auteurs CHANGE `htpass` `htpass` tinytext DEFAULT '' NOT NULL"),
  225. array('sql_alter', "TABLE spip_breves CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  226. array('sql_alter', "TABLE spip_breves CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
  227. array('sql_alter', "TABLE spip_breves CHANGE `lien_titre` `lien_titre` text DEFAULT '' NOT NULL"),
  228. array('sql_alter', "TABLE spip_breves CHANGE `lien_url` `lien_url` text DEFAULT '' NOT NULL"),
  229. array('sql_alter', "TABLE spip_messages CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  230. array('sql_alter', "TABLE spip_messages CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
  231. array('sql_alter', "TABLE spip_messages CHANGE `type` `type` varchar(6) DEFAULT '' NOT NULL"),
  232. array('sql_alter', "TABLE spip_messages CHANGE `rv` `rv` varchar(3) DEFAULT '' NOT NULL"),
  233. array('sql_alter', "TABLE spip_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  234. array('sql_alter', "TABLE spip_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  235. array('sql_alter', "TABLE spip_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
  236. array('sql_alter', "TABLE spip_mots CHANGE `type` `type` text DEFAULT '' NOT NULL"),
  237. array('sql_alter', "TABLE spip_mots CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
  238. array('sql_alter', "TABLE spip_groupes_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  239. array('sql_alter', "TABLE spip_groupes_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  240. array('sql_alter', "TABLE spip_groupes_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
  241. array('sql_alter', "TABLE spip_groupes_mots CHANGE `unseul` `unseul` varchar(3) DEFAULT '' NOT NULL"),
  242. array('sql_alter', "TABLE spip_groupes_mots CHANGE `obligatoire` `obligatoire` varchar(3) DEFAULT '' NOT NULL"),
  243. array('sql_alter', "TABLE spip_groupes_mots CHANGE `articles` `articles` varchar(3) DEFAULT '' NOT NULL"),
  244. array('sql_alter', "TABLE spip_groupes_mots CHANGE `breves` `breves` varchar(3) DEFAULT '' NOT NULL"),
  245. array('sql_alter', "TABLE spip_groupes_mots CHANGE `rubriques` `rubriques` varchar(3) DEFAULT '' NOT NULL"),
  246. array('sql_alter', "TABLE spip_groupes_mots CHANGE `syndic` `syndic` varchar(3) DEFAULT '' NOT NULL"),
  247. array('sql_alter', "TABLE spip_groupes_mots CHANGE `minirezo` `minirezo` varchar(3) DEFAULT '' NOT NULL"),
  248. array('sql_alter', "TABLE spip_groupes_mots CHANGE `comite` `comite` varchar(3) DEFAULT '' NOT NULL"),
  249. array('sql_alter', "TABLE spip_groupes_mots CHANGE `forum` `forum` varchar(3) DEFAULT '' NOT NULL"),
  250. array('sql_alter', "TABLE spip_rubriques CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  251. array('sql_alter', "TABLE spip_rubriques CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  252. array('sql_alter', "TABLE spip_rubriques CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
  253. array('sql_alter', "TABLE spip_rubriques CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
  254. array('sql_alter', "TABLE spip_documents CHANGE `extension` `extension` VARCHAR(10) DEFAULT '' NOT NULL"),
  255. array('sql_alter', "TABLE spip_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  256. array('sql_alter', "TABLE spip_documents CHANGE `date` `date` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
  257. array('sql_alter', "TABLE spip_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  258. array('sql_alter', "TABLE spip_documents CHANGE `fichier` `fichier` varchar(255) DEFAULT '' NOT NULL"),
  259. array('sql_alter', "TABLE spip_types_documents CHANGE `extension` `extension` varchar(10) DEFAULT '' NOT NULL"),
  260. array('sql_alter', "TABLE spip_types_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  261. array('sql_alter', "TABLE spip_types_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  262. array('sql_alter', "TABLE spip_types_documents CHANGE `mime_type` `mime_type` varchar(100) DEFAULT '' NOT NULL"),
  263. array('sql_alter', "TABLE spip_syndic CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
  264. array('sql_alter', "TABLE spip_syndic CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
  265. array('sql_alter', "TABLE spip_syndic CHANGE `url_syndic` `url_syndic` text DEFAULT '' NOT NULL"),
  266. array('sql_alter', "TABLE spip_syndic CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  267. array('sql_alter', "TABLE spip_syndic CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
  268. array('sql_alter', "TABLE spip_syndic CHANGE `syndication` `syndication` VARCHAR(3) DEFAULT '' NOT NULL"),
  269. array('sql_alter', "TABLE spip_syndic_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  270. array('sql_alter', "TABLE spip_syndic_articles CHANGE `url` `url` VARCHAR(255) DEFAULT '' NOT NULL"),
  271. array('sql_alter', "TABLE spip_syndic_articles CHANGE `lesauteurs` `lesauteurs` text DEFAULT '' NOT NULL"),
  272. array('sql_alter', "TABLE spip_syndic_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
  273. array('sql_alter', "TABLE spip_forum CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
  274. array('sql_alter', "TABLE spip_forum CHANGE `texte` `texte` mediumtext DEFAULT '' NOT NULL"),
  275. array('sql_alter', "TABLE spip_forum CHANGE `auteur` `auteur` text DEFAULT '' NOT NULL"),
  276. array('sql_alter', "TABLE spip_forum CHANGE `email_auteur` `email_auteur` text DEFAULT '' NOT NULL"),
  277. array('sql_alter', "TABLE spip_forum CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
  278. array('sql_alter', "TABLE spip_forum CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
  279. array('sql_alter', "TABLE spip_forum CHANGE `ip` `ip` varchar(16) DEFAULT '' NOT NULL"),
  280. array('sql_alter', "TABLE spip_signatures CHANGE `nom_email` `nom_email` text DEFAULT '' NOT NULL"),
  281. array('sql_alter', "TABLE spip_signatures CHANGE `ad_email` `ad_email` text DEFAULT '' NOT NULL"),
  282. array('sql_alter', "TABLE spip_signatures CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
  283. array('sql_alter', "TABLE spip_signatures CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
  284. array('sql_alter', "TABLE spip_signatures CHANGE `message` `message` mediumtext DEFAULT '' NOT NULL")
  285. );
  286. $GLOBALS['maj'][1946] = array(
  287. array('sql_alter', "TABLE spip_forum DROP INDEX `id_parent`"),
  288. array('sql_alter', "TABLE spip_forum DROP INDEX `id_article`"),
  289. array('sql_alter', "TABLE spip_forum DROP INDEX `id_breve`"),
  290. array('sql_alter', "TABLE spip_forum DROP INDEX `id_syndic`"),
  291. array('sql_alter', "TABLE spip_forum DROP INDEX `id_rubrique`"),
  292. array('sql_alter', "TABLE spip_forum DROP INDEX `date_thread`"),
  293. array('sql_alter', "TABLE spip_forum DROP INDEX `statut`"),
  294. array('sql_alter', "TABLE spip_forum ADD INDEX `optimal` (`statut`,`id_parent`,`id_article`,`date_heure`,`id_breve`,`id_syndic`,`id_rubrique`)")
  295. );
  296. $GLOBALS['maj'][1947] = array(
  297. array('sql_alter', "TABLE spip_articles DROP INDEX `url_site`"),
  298. array('sql_alter', "TABLE spip_articles DROP INDEX `date_modif`"),
  299. array('sql_alter', "TABLE spip_auteurs DROP INDEX `lang`")
  300. );
  301. // mauvaise manip
  302. $GLOBALS['maj'][1949] = array(
  303. array('sql_alter', "TABLE spip_versions DROP INDEX `date`"),
  304. array('sql_alter', "TABLE spip_versions DROP INDEX `id_auteur`")
  305. );
  306. function maj_1_950($installee) {
  307. // oubli de gerer le prefixe lors l'introduction de l'abstraction
  308. // => Relancer les MAJ concernees si la version dont on part les avait fait
  309. if ($installee >= 1.946) serie_alter('950a', $GLOBALS['maj'][1946]);
  310. if ($installee >= 1.947) serie_alter('950b', $GLOBALS['maj'][1947]);
  311. if ($installee >= 1.949) @serie_alter('950c', $GLOBALS['maj'][1949]);
  312. global $tables_auxiliaires;
  313. include_spip('base/auxiliaires');
  314. $v = $tables_auxiliaires[$k='spip_urls'];
  315. sql_create($k, $v['field'], $v['key'], false, false);
  316. foreach(array('article'=>'id_article',
  317. 'rubrique'=>'id_rubrique',
  318. 'breve'=>'id_breve',
  319. 'auteur' => 'id_auteur',
  320. 'mot' => 'id_mot',
  321. 'syndic' => 'id_syndic') as $type => $id_objet){
  322. $table = ($type == 'syndic') ? $type : ($type ."s");
  323. $date = ($type == 'breve') ? 'date_heure' :
  324. (($type == 'auteur') ? 'maj' :
  325. (($type == 'mot') ? 'maj' : 'date'));
  326. $q = @sql_select("url_propre AS url, $id_objet AS id_objet, '$type' AS type, $date as date", "spip_$table", "url_propre<>''");
  327. if (!$q) return; // anormal, mais ne pas boucler en erreur
  328. while ($r = sql_fetch($q)) sql_replace('spip_urls', $r);
  329. spip_log("table $table : " . sql_count($q) . " urls propres copiees");
  330. sql_alter("TABLE spip_$table DROP INDEX `url_propre`");
  331. sql_alter("TABLE spip_$table DROP `url_propre`");
  332. }
  333. }
  334. // Donner a la fonction ci-dessus le numero de version installee
  335. // AVANT que la mise a jour ait commencee
  336. $GLOBALS['maj'][1950] = array(array('maj_1_950', $GLOBALS['meta']['version_installee'] ));
  337. // Erreur dans maj_1_948():
  338. // // http://trac.rezo.net/trac/spip/changeset/10194
  339. // // Gestion du verrou SQL par PHP
  340. $GLOBALS['maj'][1951] = array(
  341. array('sql_alter', "TABLE spip_versions CHANGE `id_version` `id_version` bigint(21) DEFAULT 0 NOT NULL")
  342. );
  343. // Transformation des documents :
  344. // - image => mode=image
  345. // - vignette => mode=vignette
  346. function maj_1_952() {
  347. $ok = sql_alter("TABLE spip_documents CHANGE `mode` `mode` enum('vignette','image','document') DEFAULT NULL");
  348. if($ok) {
  349. $s = sql_select("v.id_document as id_document", "spip_documents as d join spip_documents as v ON d.id_vignette=v.id_document");
  350. $vignettes = array();
  351. while ($t = sql_fetch($s))
  352. $vignettes[] = intval($t['id_document']);
  353. $ok &= spip_query("UPDATE spip_documents SET `mode`='image' WHERE `mode`='vignette'");
  354. $ok &= spip_query("UPDATE spip_documents SET `mode`='vignette' WHERE `mode`='image' AND ".sql_in('id_document', $vignettes));
  355. }
  356. if (!$ok) die('echec sur maj_1_952()');
  357. }
  358. $GLOBALS['maj'][1952] = array(array('maj_1_952'));
  359. $GLOBALS['maj'][1953] = array(array('upgrade_types_documents'));
  360. $GLOBALS['maj'][1954] = array(
  361. //pas de psd en <img>
  362. array('spip_query', "UPDATE spip_types_documents SET `inclus`='non' WHERE `extension`='psd'"),
  363. //ajout csv
  364. array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('csv', 'CSV')"),
  365. array('spip_query', "UPDATE spip_types_documents SET `mime_type`='text/csv' WHERE `extension`='csv'"),
  366. //ajout mkv
  367. array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mkv', 'Matroska Video', 'embed')"),
  368. array('spip_query', "UPDATE spip_types_documents SET `mime_type`='video/x-mkv' WHERE `extension`='mkv'"),
  369. //ajout mka
  370. array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mka', 'Matroska Audio', 'embed')"),
  371. array('spip_query', "UPDATE spip_types_documents SET `mime_type`='audio/x-mka' WHERE `extension`='mka'"),
  372. //ajout kml
  373. array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kml', 'Keyhole Markup Language')"),
  374. array('spip_query', "UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kml+xml' WHERE `extension`='kml'"),
  375. //ajout kmz
  376. array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kmz', 'Google Earth Placemark File')"),
  377. array('spip_query', "UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kmz' WHERE `extension`='kmz'")
  378. );
  379. if ($GLOBALS['meta']['version_installee'] > 1.950)
  380. // 1.950 lisait un bug dans auxiliaires.php corrige a present
  381. $GLOBALS['maj'][1955] = array(
  382. array('sql_alter', "TABLE spip_urls CHANGE `maj` date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL")
  383. );
  384. // la mise a jour vers 1.938 contient une erreur
  385. // il faut supprimer l'autoincrement avant de supprimer la PRIMARY KEY
  386. $GLOBALS['maj'][1938] = array(
  387. # creer un champ plus informatif, et son index
  388. array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "),
  389. # recopier l'ancien champ dans le nouveau
  390. array('maj_1_938'),
  391. # supprimer l'ancien champ et son index
  392. array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"),
  393. ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY
  394. array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL ") ,
  395. # le champ id_type devient superflu
  396. array('sql_alter', "TABLE spip_types_documents DROP `id_type`"),
  397. array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)")
  398. );
  399. // PG veut une valeur par defaut a l'insertion
  400. // http://trac.rezo.net/trac/spip/changeset/10482
  401. $GLOBALS['maj'][1957] = array(
  402. array('sql_alter', "TABLE spip_mots CHANGE `id_groupe` `id_groupe` bigint(21) DEFAULT 0 NOT NULL"),
  403. array('sql_alter', "TABLE spip_documents CHANGE `mode` `mode` ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL")
  404. );
  405. // Ce champ est inutile et provoque une erreur a l'insertion qui l'oublie
  406. $GLOBALS['maj'][1958] = array(
  407. array('sql_alter', "TABLE spip_referers_articles DROP date")
  408. );
  409. ?>