PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/_core_/tags/spip-3.0.5/plugins/medias/medias_administrations.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 183 lines | 115 code | 14 blank | 54 comment | 9 complexity | 01f1b587379773404672291856c98439 MD5 | raw file
  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. * verifier et maj le statut des documents
  14. * @param bool $affiche
  15. * @return
  16. */
  17. function medias_check_statuts($affiche = false){
  18. $trouver_table = charger_fonction('trouver_table','base');
  19. $desc = $trouver_table('documents');
  20. # securite, si jamais on arrive ici avant un upgrade de base
  21. if (!isset($desc['field']['statut']))
  22. return;
  23. // utiliser sql_allfetsel pour clore la requete avant la mise a jour en base sur chaque doc (sqlite)
  24. // iterer par groupe de 100 pour ne pas exploser sur les grosses bases
  25. $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100"));
  26. while (count($docs)){
  27. include_spip('action/editer_document');
  28. foreach($docs as $id_document)
  29. // mettre a jour le statut si necessaire
  30. instituer_document($id_document);
  31. if ($affiche) echo " .";
  32. $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100"));
  33. }
  34. }
  35. /**
  36. * Mise a jour de la BDD
  37. * @param string $nom_meta_base_version
  38. * @param string $version_cible
  39. */
  40. function medias_upgrade($nom_meta_base_version,$version_cible){
  41. if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
  42. $trouver_table = charger_fonction('trouver_table','base');
  43. if ($desc = $trouver_table('spip_documents')
  44. AND !isset($desc['field']['statut']))
  45. ecrire_meta($nom_meta_base_version,'0.1.0');
  46. }
  47. $maj = array();
  48. $maj['create'] = array(
  49. array('maj_tables',array('spip_documents','spip_documents_liens','spip_types_documents')),
  50. array('creer_base_types_doc')
  51. );
  52. $maj['0.2.0'] = array(
  53. array('sql_alter',"TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"),
  54. );
  55. $maj['0.3.0'] = array(
  56. array('sql_alter',"TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
  57. );
  58. $maj['0.4.0'] = array(
  59. // recalculer tous les statuts en tenant compte de la date de publi des articles...
  60. array('medias_check_statuts',true),
  61. );
  62. $maj['0.5.0'] = array(
  63. array('sql_alter',"TABLE spip_documents ADD brise tinyint DEFAULT 0"),
  64. );
  65. $maj['0.6.0'] = array(
  66. array('sql_alter',"TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"),
  67. array('creer_base_types_doc','','media'),
  68. );
  69. $maj['0.7.0'] = array(
  70. array('sql_alter',"TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"),
  71. );
  72. $maj['0.10.0'] = array(
  73. array('sql_alter',"TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''"),
  74. );
  75. $maj['0.11.0'] = array(
  76. array('sql_alter',"TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"),
  77. );
  78. $maj['0.11.0'] = array(
  79. array('sql_alter',"TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"),
  80. );
  81. $maj['0.12.0'] = array(
  82. array('medias_maj_meta_documents'),
  83. );
  84. $maj['0.14.0'] = array(
  85. array('creer_base_types_doc','','media'),
  86. );
  87. $maj['0.15.0'] = array(
  88. array('creer_base_types_doc','','media'),
  89. );
  90. $maj['0.15.1'] = array(
  91. array('sql_alter',"TABLE spip_documents CHANGE taille taille bigint"),
  92. );
  93. $maj['0.16.0'] = array(
  94. array('creer_base_types_doc','','media'),
  95. );
  96. $maj['1.0.0'] = array(
  97. // on cree le champ en defaut '?' pour reperer les nouveaux a peupler
  98. array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
  99. array('medias_peuple_media_document', 'media'),
  100. // puis on retablit le bon defaut
  101. array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
  102. );
  103. $maj['1.0.1'] = array(
  104. // puis on retablit le bon defaut
  105. array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"),
  106. );
  107. $maj['1.1.0'] = array(
  108. array('sql_alter',"TABLE spip_documents_liens ADD id_objet (id_objet)"),
  109. array('sql_alter',"TABLE spip_documents_liens ADD objet (objet)"),
  110. );
  111. $maj['1.1.1'] = array(
  112. array('creer_base_types_doc'),
  113. );
  114. // reparer les media sur les file suite a upgrade rate depuis SPIP 2.x
  115. $maj['1.2.0'] = array(
  116. // on remet en ? tous les media=file
  117. array('sql_updateq',"spip_documents",array('media'=>'?'),"media='file'"),
  118. // et on repeuple
  119. array('medias_peuple_media_document'),
  120. );
  121. $maj['1.2.1'] = array(
  122. array('creer_base_types_doc'),
  123. );
  124. include_spip('base/upgrade');
  125. include_spip('base/medias');
  126. maj_plugin($nom_meta_base_version, $version_cible, $maj);
  127. medias_check_statuts();
  128. }
  129. /**
  130. * Maj des meta documents
  131. */
  132. function medias_maj_meta_documents(){
  133. $config = array();
  134. if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article']!=='non')
  135. $config[] = 'spip_articles';
  136. if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique']!=='non')
  137. $config[] = 'spip_rubriques';
  138. ecrire_meta('documents_objets',implode(',',$config));
  139. }
  140. function medias_peuple_media_document($champ_media="media_defaut"){
  141. $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
  142. while($row = sql_fetch($res)){
  143. // attention ici c'est encore le champ media, car on le renomme juste apres
  144. $media = sql_getfetsel($champ_media,'spip_types_documents','extension='.sql_quote($row['extension']));
  145. sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
  146. if (time() >= _TIME_OUT)
  147. return;
  148. }
  149. }
  150. /*
  151. function medias_install($action,$prefix,$version_cible){
  152. $version_base = $GLOBALS[$prefix."_base_version"];
  153. switch ($action){
  154. case 'test':
  155. # plus necessaire si pas de bug :p
  156. # medias_check_statuts();
  157. return (isset($GLOBALS['meta'][$prefix."_base_version"])
  158. AND version_compare($GLOBALS['meta'][$prefix."_base_version"],$version_cible,">="));
  159. break;
  160. case 'install':
  161. medias_upgrade('medias_base_version',$version_cible);
  162. break;
  163. case 'uninstall':
  164. # pas de deinstallation sur les documents pour le moment, trop dangereux
  165. # medias_vider_tables();
  166. break;
  167. }
  168. }
  169. */