[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / medias / medias_administrations.php
index 149c044..d7dba54 100644 (file)
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 /**
  * verifier et maj le statut des documents
+ *
  * @param bool $affiche
  * @return
  */
-function medias_check_statuts($affiche = false){
-       $trouver_table = charger_fonction('trouver_table','base');
+function medias_check_statuts($affiche = false) {
+       $trouver_table = charger_fonction('trouver_table', 'base');
        $desc = $trouver_table('documents');
        # securite, si jamais on arrive ici avant un upgrade de base
-       if (!isset($desc['field']['statut']))
+       if (!isset($desc['field']['statut'])) {
                return;
+       }
 
        // utiliser sql_allfetsel pour clore la requete avant la mise a jour en base sur chaque doc (sqlite)
        // iterer par groupe de 100 pour ne pas exploser sur les grosses bases
-       $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100"));
-       while (count($docs)){
+       $docs = array_map('reset', sql_allfetsel('id_document', 'spip_documents', "statut='0'", '', '', '0,100'));
+       while (count($docs)) {
                include_spip('action/editer_document');
-               foreach($docs as $id_document)
+               foreach ($docs as $id_document) {
                        // mettre a jour le statut si necessaire
                        instituer_document($id_document);
-               if ($affiche) echo " .";
-         $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100"));
+               }
+               if ($affiche) {
+                       echo ' .';
+               }
+               $docs = array_map('reset', sql_allfetsel('id_document', 'spip_documents', "statut='0'", '', '', '0,100'));
        }
 }
 
 /**
  * Mise a jour de la BDD
+ *
  * @param string $nom_meta_base_version
  * @param string $version_cible
  */
-function medias_upgrade($nom_meta_base_version,$version_cible){
+function medias_upgrade($nom_meta_base_version, $version_cible) {
 
        // ne pas installer tant qu'on est pas a jour sur version base SPIP
        // cas typique d'un upgrade qui commence par suppression de connect.php
        // SPIP lance la maj des plugins lors de la connexion, alors que l'upgrade SPIP
        // a pas encore ete joue : ca casse cet upgrade quand on migre depuis un tres vieux SPIP
        if (isset($GLOBALS['meta']['version_installee'])
-               AND ($GLOBALS['spip_version_base'] != (str_replace(',','.',$GLOBALS['meta']['version_installee']))))
+               and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
+       ) {
                return;
+       }
 
-       if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
-               $trouver_table = charger_fonction('trouver_table','base');
+       if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {
+               $trouver_table = charger_fonction('trouver_table', 'base');
                if ($desc = $trouver_table('spip_documents')
-                 AND !isset($desc['field']['statut']))
-                       ecrire_meta($nom_meta_base_version,'0.1.0');
+                       and !isset($desc['field']['statut'])
+               ) {
+                       ecrire_meta($nom_meta_base_version, '0.1.0');
+               }
        }
 
        $maj = array();
        $maj['create'] = array(
-               array('maj_tables',array('spip_documents','spip_documents_liens','spip_types_documents')),
+               array('maj_tables', array('spip_documents', 'spip_documents_liens', 'spip_types_documents')),
                array('creer_base_types_doc')
        );
        $maj['0.2.0'] = array(
-               array('sql_alter',"TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"),
        );
        $maj['0.3.0'] = array(
-               array('sql_alter',"TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
        );
        $maj['0.4.0'] = array(
                // recalculer tous les statuts en tenant compte de la date de publi des articles...
-               array('medias_check_statuts',true),
+               array('medias_check_statuts', true),
        );
        $maj['0.5.0'] = array(
-               array('sql_alter',"TABLE spip_documents ADD brise tinyint DEFAULT 0"),
+               array('sql_alter', 'TABLE spip_documents ADD brise tinyint DEFAULT 0'),
        );
        $maj['0.6.0'] = array(
-               array('sql_alter',"TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"),
-               array('creer_base_types_doc','','media'),
+               array('sql_alter', "TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"),
+               array('creer_base_types_doc', '', 'media'),
        );
        $maj['0.7.0'] = array(
-               array('sql_alter',"TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"),
        );
        $maj['0.10.0'] = array(
-               array('sql_alter',"TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''"),
+               array('sql_alter', "TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''"),
        );
        $maj['0.11.0'] = array(
-               array('sql_alter',"TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"),
        );
        $maj['0.14.0'] = array(
                array('medias_maj_meta_documents'),
-               array('creer_base_types_doc','','media'),
+               array('creer_base_types_doc', '', 'media'),
        );
        $maj['0.15.0'] = array(
-               array('creer_base_types_doc','','media'),
+               array('creer_base_types_doc', '', 'media'),
        );
        $maj['0.15.1'] = array(
-               array('sql_alter',"TABLE spip_documents CHANGE taille taille bigint"),
+               array('sql_alter', 'TABLE spip_documents CHANGE taille taille bigint'),
        );
        $maj['0.16.0'] = array(
-               array('creer_base_types_doc','','media'),
+               array('creer_base_types_doc', '', 'media'),
        );
 
        $maj['1.0.0'] = array(
                // on cree le champ en defaut '?' pour reperer les nouveaux a peupler
-               array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
                array('medias_peuple_media_document', 'media'),
                // puis on retablit le bon defaut
-               array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
        );
        $maj['1.0.1'] = array(
                // puis on retablit le bon defaut
-               array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"),
+               array('sql_alter', "TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"),
        );
 
        $maj['1.1.0'] = array(
-               array('sql_alter',"TABLE spip_documents_liens ADD INDEX id_objet (id_objet)"),
-               array('sql_alter',"TABLE spip_documents_liens ADD INDEX objet (objet)"),
+               array('sql_alter', 'TABLE spip_documents_liens ADD INDEX id_objet (id_objet)'),
+               array('sql_alter', 'TABLE spip_documents_liens ADD INDEX objet (objet)'),
        );
        $maj['1.1.1'] = array(
                array('creer_base_types_doc'),
@@ -126,7 +138,7 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
        // reparer les media sur les file suite a upgrade rate depuis SPIP 2.x
        $maj['1.2.0'] = array(
                // on remet en ? tous les media=file
-               array('sql_updateq',"spip_documents",array('media'=>'?'),"media='file'"),
+               array('sql_updateq', 'spip_documents', array('media' => '?'), "media='file'"),
                // et on repeuple
                array('medias_peuple_media_document'),
        );
@@ -137,9 +149,9 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
                // ajout de mbtiles
                array('creer_base_types_doc'),
                // reparer les clauses DEFAULT manquantes de maniere reccurente sur cette table
-               array('sql_alter',"TABLE spip_documents CHANGE extension extension VARCHAR(10) DEFAULT '' NOT NULL"),
-               array('sql_alter',"TABLE spip_documents CHANGE credits credits varchar(255) DEFAULT '' NOT NULL"),
-               array('sql_alter',"TABLE spip_documents CHANGE statut statut varchar(10) DEFAULT '0' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents CHANGE extension extension VARCHAR(10) DEFAULT '' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents CHANGE credits credits varchar(255) DEFAULT '' NOT NULL"),
+               array('sql_alter', "TABLE spip_documents CHANGE statut statut varchar(10) DEFAULT '0' NOT NULL"),
        );
        $maj['1.2.4'] = array(
                // ajout de tar
@@ -150,51 +162,76 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
                array('creer_base_types_doc')
        );
        $maj['1.2.6'] = array(
-               // ajout du champ titre pour json cf oubli dans https://zone.spip.org/trac/spip-zone/changeset/80059
-               array("sql_updateq","spip_types_documents",array('titre'=>'JSON'),"extension='json'"),
+               // ajout de md (markdown)
+               array('creer_base_types_doc')
        );
        $maj['1.2.7'] = array(
-       array('medias_maj_date_publication_documents'),
-       array('medias_check_statuts', true)
+               // ajout de ics + vcf
+               array('creer_base_types_doc')
+       );
+       $maj['1.3.0'] = array(
+               // ajout de rang_lien
+               array('maj_tables', 'spip_documents_liens'),
+       );
+       $maj['1.3.1'] = array(
+               // plus de place dans les crédits
+               array('sql_alter', "TABLE spip_documents CHANGE credits credits text DEFAULT '' NOT NULL"),
+       );
+       $maj['1.3.2'] = array(
+               // buggons en 2038 plutôt qu'en 2018'
+               array('medias_check_statuts', true),
+       );
+       $maj['1.3.4'] = array(
+               // 1.3.2 et 1.3.3 n'étaient pas suffisants grml'
+               array('medias_maj_date_publication_documents'),
+               array('medias_check_statuts', true)
+       );
+       $maj['1.3.5'] = array(
+               // ajout de duree
+               array('maj_tables', 'spip_documents'),
        );
        include_spip('base/upgrade');
        include_spip('base/medias');
        maj_plugin($nom_meta_base_version, $version_cible, $maj);
 
-       medias_check_statuts();
 }
 
 /**
  * Maj des meta documents
  */
-function medias_maj_meta_documents(){
+function medias_maj_meta_documents() {
        $config = array();
-       if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article']!=='non')
+       if (isset($GLOBALS['meta']['documents_article']) and $GLOBALS['meta']['documents_article'] !== 'non') {
                $config[] = 'spip_articles';
-       if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique']!=='non')
+       }
+       if (isset($GLOBALS['meta']['documents_rubrique']) and $GLOBALS['meta']['documents_rubrique'] !== 'non') {
                $config[] = 'spip_rubriques';
-       ecrire_meta('documents_objets',implode(',',$config));
+       }
+       ecrire_meta('documents_objets', implode(',', $config));
 }
 
-function medias_peuple_media_document($champ_media="media_defaut"){
-       $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
-       while($row = sql_fetch($res)){
+function medias_peuple_media_document($champ_media = 'media_defaut') {
+       $res = sql_select('DISTINCT extension', 'spip_documents', 'media=' . sql_quote('?'));
+       while ($row = sql_fetch($res)) {
                // attention ici c'est encore le champ media, car on le renomme juste apres
-               $media = sql_getfetsel($champ_media,'spip_types_documents','extension='.sql_quote($row['extension']));
-               sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
-               if (time() >= _TIME_OUT)
+               $media = sql_getfetsel($champ_media, 'spip_types_documents', 'extension=' . sql_quote($row['extension']));
+               sql_updateq('spip_documents', array('media' => $media), 'media=' . sql_quote('?') . ' AND extension=' . sql_quote($row['extension']));
+               if (time() >= _TIME_OUT) {
                        return;
+               }
        }
 }
 
-/** 
+/**
  * Maj des date de publication des documents cf ticket #3329, z104221
  */
 function medias_maj_date_publication_documents() {
        sql_update('spip_documents', array('statut' => '0'), 'date_publication > ' . sql_quote('2017-01-01 00:00:00'));
+       sql_update('spip_documents', array('statut' => '0'), 'date_publication = ' . sql_quote('1970-01-01 01:33:58'));
 }
+
 /*
-function medias_install($action,$prefix,$version_cible){
+function medias_install($action, $prefix, $version_cible){
        $version_base = $GLOBALS[$prefix."_base_version"];
        switch ($action){
                case 'test':