'0'));
// ecrire la version pour ne plus passer la
ecrire_meta($nom_meta_base_version,$current_version="0.3",'non');
}
if (version_compare($current_version,'0.4','<')){
// recalculer tous les statuts en tenant compte de la date de publi des articles...
$res = sql_select('id_document','spip_documents',"statut='0'");
include_spip('action/editer_document');
while ($row = sql_fetch($res))
instituer_document($row['id_document']);
ecrire_meta($nom_meta_base_version,$current_version="0.4",'non');
}
if (version_compare($current_version,'0.5','<')){
// ajouter un champ
sql_alter("TABLE spip_documents ADD brise tinyint DEFAULT 0");
// vider le cache des descriptions de tables
$trouver_table = charger_fonction('trouver_table','base');
$trouver_table(false);
ecrire_meta($nom_meta_base_version,$current_version="0.5",'non');
}
if (version_compare($current_version,'0.6','<')){
sql_alter("TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL");
medias_check_type_media();
ecrire_meta($nom_meta_base_version,$current_version="0.6",'non');
}
if (version_compare($current_version,'0.7','<')){
sql_alter("TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL");
ecrire_meta($nom_meta_base_version,$current_version="0.7",'non');
}
if (version_compare($current_version,'0.8','<')){
// reset des statut='0' pour forcer un recalcul de tous les statuts
sql_updateq('spip_documents',array("statut"=>'0'));
ecrire_meta($nom_meta_base_version,$current_version="0.8",'non');
}
// version 0.9 n'avait pas DEFAULT '' sur le champ fichier
if (version_compare($current_version,'0.10','<')){
// Augmentation de la taille du champ fichier pour permettre les URL longues
sql_alter("TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''");
ecrire_meta($nom_meta_base_version,$current_version="0.10",'non');
}
if (version_compare($current_version,'0.11','<')){
// Passage du mode en varchar
sql_alter("TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL");
ecrire_meta($nom_meta_base_version,$current_version="0.11",'non');
}
if (version_compare($current_version,'0.12','<')){
/**
* On change le champs taille en bigint pour avoir des tailles de documents en base > 2Go
*/
sql_alter("TABLE spip_documents CHANGE `taille` `taille` bigint");
ecrire_meta($nom_meta_base_version,$current_version="0.12",'non');
}
// la version SPIP 3 a en v 0.14 une màj nécessaire à l'upgrade réussie. A résoudre si on passe en 0.14 ici...
}
medias_check_statuts();
medias_check_type_media();
}
function medias_check_type_media(){
include_spip('base/abstract_sql');
// mettre a jour les bonnes valeurs
// les cas evidents
sql_updateq('spip_types_documents',array('media'=>'image'),"mime_type REGEXP '^image/'");
sql_updateq('spip_types_documents',array('media'=>'audio'),"mime_type REGEXP '^audio/'");
sql_updateq('spip_types_documents',array('media'=>'video'),"mime_type REGEXP '^video/'");
// les cas particuliers ...
sql_updateq('spip_types_documents',array('media'=>'video'),"mime_type='application/ogg' OR mime_type='application/x-shockwave-flash'");
sql_updateq('spip_types_documents',array('media'=>'image'),"mime_type='application/illustrator'");
sql_updateq('spip_types_documents',array('media'=>'video'),"mime_type='application/mp4'");
// le plugin Vidéo(s) et toutes ses vidéos "distantes" sont des medias de type video
sql_updateq('spip_types_documents',array('media'=>'video'),"extension REGEXP '^dist_'");
}
function medias_check_statuts(){
$trouver_table = charger_fonction('trouver_table','base');
$desc = $trouver_table('documents');
if (!isset($desc['field']['statut']))
return;
$docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'"));
if (count($docs)){
include_spip('action/editer_document');
foreach($docs as $id_document)
// mettre a jour le statut si necessaire
instituer_document($id_document);
}
}
function medias_install($action,$prefix,$version_cible){
$version_base = $GLOBALS[$prefix."_base_version"];
switch ($action){
case 'test':
medias_check_statuts();
medias_check_type_media();
return (isset($GLOBALS['meta'][$prefix."_base_version"])
AND version_compare($GLOBALS['meta'][$prefix."_base_version"],$version_cible,">="));
break;
case 'install':
medias_upgrade('medias_base_version',$version_cible);
break;
case 'uninstall':
//medias_vider_tables();
break;
}
}
?>