'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; } } ?>