Changeset 96283 in spip-zone for _plugins_/medias_dereferencer/branches


Ignore:
Timestamp:
Mar 28, 2016, 11:00:16 PM (5 years ago)
Author:
teddy.spip@…
Message:

Impoortation dans la branche des dernières modifications du trunk/

Location:
_plugins_/medias_dereferencer/branches/v1
Files:
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/medias_dereferencer/branches/v1

  • _plugins_/medias_dereferencer/branches/v1/formulaires/configurer_medias_dereferencer.html

    r95637 r96283  
    1818                                defaut=non})]
    1919
    20                         [(#SAISIE{radio, htaccess,
    21                                 label=<:medias_dereferencer:htaccess_label:>,
    22                                 explication=<:medias_dereferencer:htaccess_explication:>,
    23                                 datas=#ARRAY{
    24                                         oui,<:medias_dereferencer:lier_document_choix_oui:>,
    25                                         non,<:medias_dereferencer:lier_document_choix_non:>},
    26                                 defaut=non})]
     20                        <[(#DIV|sinon{li}) class="fieldset"]>
     21                                <fieldset>
     22                                        <legend><:medias_dereferencer:htaccess_legend:></legend>
    2723
    28                         [(#SAISIE{textarea, adresse_ip,
    29                                 label=<:medias_dereferencer:adresse_ip_label:>,
    30                                 explication=<:medias_dereferencer:adresse_ip_explication:>,
    31                                 rows=5})]
     24                                <[(#VAL{ul}|saisie_balise_structure_formulaire)] class="editer-groupe">
     25
     26                                        [(#SAISIE{radio, apache,
     27                                                label=<:medias_dereferencer:apache_label:>,
     28                                                explication=<:medias_dereferencer:apache_explication:>,
     29                                                datas=#ARRAY{
     30                                                        oui,<:medias_dereferencer:lier_document_choix_oui:>,
     31                                                        non,<:medias_dereferencer:lier_document_choix_non:>},
     32                                                defaut=non})]
     33
     34                                        [(#SAISIE{radio, htaccess,
     35                                                label=<:medias_dereferencer:htaccess_label:>,
     36                                                explication=<:medias_dereferencer:htaccess_explication:>,
     37                                                datas=#ARRAY{
     38                                                        oui,<:medias_dereferencer:lier_document_choix_oui:>,
     39                                                        non,<:medias_dereferencer:lier_document_choix_non:>},
     40                                                defaut=non})]
     41
     42                                        [(#SAISIE{textarea, adresse_ip,
     43                                                label=<:medias_dereferencer:adresse_ip_label:>,
     44                                                explication=<:medias_dereferencer:adresse_ip_explication:>,
     45                                                rows=5})]
     46                                </[(#VAL{ul}|saisie_balise_structure_formulaire)]>
     47                                </fieldset>
     48                        </[(#DIV|sinon{li})]>
    3249
    3350                </[(#VAL{ul}|saisie_balise_structure_formulaire)]>
  • _plugins_/medias_dereferencer/branches/v1/genie/medias_dereferencer.php

    r95645 r96283  
    66 * @plugin     Déréférencer les médias
    77 *
    8  * @copyright  2015
     8 * @copyright  2015-2016
    99 * @author     Teddy Payet
    1010 * @licence    GNU/GPL
  • _plugins_/medias_dereferencer/branches/v1/genie/medias_dereferencer_htaccess.php

    r95645 r96283  
    66 * @plugin     Déréférencer les médias
    77 *
    8  * @copyright  2015
     8 * @copyright  2015-2016
    99 * @author     Teddy Payet
    1010 * @licence    GNU/GPL
  • _plugins_/medias_dereferencer/branches/v1/genie/medias_dereferencer_vu.php

    r95645 r96283  
    66 * @plugin     Déréférencer les médias
    77 *
    8  * @copyright  2015
     8 * @copyright  2015-2016
    99 * @author     Teddy Payet
    1010 * @licence    GNU/GPL
  • _plugins_/medias_dereferencer/branches/v1/inclure/medias_htaccess.html

    r95637 r96283  
    22<BOUCLE_disallow (DOCUMENTS) {statut='prepa'} {extension?} {par fichier}>
    33<Files [(#ENV{extension}|?{[(#FICHIER**|replace{#ENV{extension}/,''})],[(#FICHIER**)]})]>
     4[(#CONFIG{medias_dereferencer/apache}|=={oui}|?{"
     5    Require all denied"[
     6(#VAL|md_adresses_allow)],"
    47    Order Deny,Allow
    5     Deny from all[
    6 (#VAL|md_adresses_allow)]
     8    Deny from all"[
     9(#VAL|md_adresses_allow)]})]
    710</Files>
    811</BOUCLE_disallow>
  • _plugins_/medias_dereferencer/branches/v1/lang/medias_dereferencer_fr.php

    r95645 r96283  
    1212        'adresse_ip_explication' => 'Si vous avez activé la création du fichier <code>.htaccess</code> dans le répertoire <code>IMG/</code>, vous pouvez renseigner ci-dessous la liste des adresses IP qui pourront consulter les documents physiques.<br/><strong>Veuillez saisir les adresses IP séparées par un point-virgule ";"</strong>',
    1313        'adresse_ip_label' => 'Liste des adresses IP autorisées',
     14        'apache_explication' => 'Avez-vous une version d\'Apache supérieure ou égale à 2.4 ?',
     15        'apache_label' => 'Version d\'Apache',
    1416
    1517        // C
     
    2224        'htaccess_explication' => 'Désirez-vous interdire la consultation des documents non-publiés ? Si oui, une tâche de fond créera un fichier <code>.htaccess</code> dans le répertoire <code>IMG/</code> du site contenant tous les fichiers non consultables.',
    2325        'htaccess_label' => 'Créer le fichier <em>.htaccess</em>',
     26        'htaccess_legend' => 'Fichier <em>.htaccess</em>',
    2427
    2528        // L
  • _plugins_/medias_dereferencer/branches/v1/medias_dereferencer_autorisations.php

    r95645 r96283  
    44 *
    55 * @plugin     Déréférencer les médias
    6  * @copyright  2015
     6 * @copyright  2015-2016
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
  • _plugins_/medias_dereferencer/branches/v1/medias_dereferencer_fonctions.php

    r95637 r96283  
    66 * @plugin     Déréférencer les médias
    77 *
    8  * @copyright  2015
     8 * @copyright  2015-2016
    99 * @author     Teddy Payet
    1010 * @licence    GNU/GPL
     
    1818 *
    1919 * @return array
    20  *         Tableau avec pour clé le nom de la table.
     20 *               Tableau avec pour clé le nom de la table.
    2121 */
    2222function medias_lister_champs_texte() {
     
    2929                // Donc, on ne prend pas les tables telles que spip_visites, spip_referers, etc.
    3030                // C'est une sécurité.
    31                 $id_primary_double = preg_match('/,/',
    32                         $valeur['key']['PRIMARY KEY']); // l'id_primary doit faire référence à un seul champ
     31                $id_primary_double = preg_match('/,/', $valeur['key']['PRIMARY KEY']); // l'id_primary doit faire référence à un seul champ
    3332                if (in_array($table, $lister_tables_principales) and $id_primary_double == 0) {
    3433                        $champs_texte[$table]['id_primary'] = $valeur['key']['PRIMARY KEY'];
     
    7069                        $statut_requete = ', statut';
    7170                }
    72                 $resultats = sql_allfetsel($champs['id_primary'] . ' as id_primary, CONCAT(' . $champs['texte'] . ') as texte_tmp' . $statut_requete,
    73                         $table);
     71                $resultats = sql_allfetsel($champs['id_primary'] . ' as id_primary, CONCAT(' . $champs['texte'] . ') as texte_tmp' . $statut_requete, $table);
    7472                foreach ($resultats as $resultat => $value) {
    7573                        // On recherche les raccourcis typographiques
     
    146144                // Sélectionner tous les documents publiés liés à des objets non publiés
    147145                // ***
    148                 $documents = sql_allfetsel('id_document,statut', 'spip_documents',
    149                         "statut IN ('publie') AND id_document IN (SELECT DISTINCT id_document FROM spip_documents_liens WHERE objet='" . $objet_lie . "' AND id_objet IN (SELECT " . id_table_objet($objet_lie) . ' FROM ' . table_objet_sql($objet_lie) . " WHERE statut NOT IN ('publie')))");
     146                $documents = sql_allfetsel('id_document,statut', 'spip_documents', "statut IN ('publie') AND id_document IN (SELECT DISTINCT id_document FROM spip_documents_liens WHERE objet='" . $objet_lie . "' AND id_objet IN (SELECT " . id_table_objet($objet_lie) . ' FROM ' . table_objet_sql($objet_lie) . " WHERE statut NOT IN ('publie')))");
    150147                if (is_array($documents) and count($documents) > 0) {
    151148                        foreach ($documents as $document) {
    152                                 if (sql_updateq('spip_documents', array('statut' => 'prepa'),
    153                                         'id_document=' . $document['id_document'])) {
     149                                if (sql_updateq('spip_documents', array('statut' => 'prepa'), 'id_document=' . $document['id_document'])) {
    154150                                        $message_log[] = 'Le statut du document #' . $document['id_document'] . ' lié à l\'objet ' . $objet_lie . ' a bien été mis à jour avec le statut \'' . $document['statut'] . '\'';
    155151                                }
     
    207203                                if (sql_updateq('spip_documents_liens', array(
    208204                                        'vu' => $document['vu'],
    209                                 ),
    210                                         'id_document=' . sql_quote($document['id_document']) . ' AND id_objet=' . sql_quote($document['id_objet']) . ' AND objet=' . sql_quote($document['objet']) . ' AND vu NOT IN (' . sql_quote($document['vu']) . ')')) {
     205                                ), 'id_document=' . sql_quote($document['id_document']) . ' AND id_objet=' . sql_quote($document['id_objet']) . ' AND objet=' . sql_quote($document['objet']) . ' AND vu NOT IN (' . sql_quote($document['vu']) . ')')) {
    211206                                        $message_log[] = 'Le lien entre le document #' . $document['id_document'] . ' et l\'objet ' . $document['objet'] . ' #' . $document['id_objet'] . ' a bien été mis à jour avec la vu \'' . $document['vu'] . '\'';
    212207                                }
    213208                                // et on met à jour le statut dudit document si le statut est différent uniquement.
    214                                 if (sql_updateq('spip_documents', array('statut' => $document['statut']),
    215                                         'id_document=' . sql_quote($document['id_document']) . ' AND statut NOT IN (' . sql_quote($document['statut']) . ')')) {
     209                                if (sql_updateq('spip_documents', array('statut' => $document['statut']), 'id_document=' . sql_quote($document['id_document']) . ' AND statut NOT IN (' . sql_quote($document['statut']) . ')')) {
    216210                                        $message_log[] = 'Le statut du document #' . $document['id_document'] . ' lié à l\'objet ' . $document['objet'] . ' #' . $document['id_objet'] . ' a bien été mis à jour avec le statut \'' . $document['statut'] . '\'';
    217211                                }
     
    235229                                }
    236230                                // et on met à jour le statut dudit document si le statut est différent uniquement.
    237                                 if (sql_updateq('spip_documents', array('statut' => $document['statut']),
    238                                         'id_document=' . sql_quote($document['id_document']) . ' AND statut NOT IN (' . sql_quote($document['statut']) . ')')) {
     231                                if (sql_updateq('spip_documents', array('statut' => $document['statut']), 'id_document=' . sql_quote($document['id_document']) . ' AND statut NOT IN (' . sql_quote($document['statut']) . ')')) {
    239232                                        $message_log[] = 'Le statut du document #' . $document['id_document'] . ' lié à l\'objet ' . $document['objet'] . ' #' . $document['id_objet'] . ' a bien été mis à jour avec le statut \'' . $document['statut'] . '\'';
    240233                                }
     
    276269        }
    277270
    278         /**
     271        /*
    279272         * On sélectionne les extensions des documents avec un statut en prepa,
    280273         * pour ne pas être trop gourmand en écriture sur le serveur.
     
    285278                        if (is_readable(_DIR_IMG . $extension['extension'])) {
    286279                                $medias_htaccess = recuperer_fond('inclure/medias_htaccess', $extension);
    287                                 if (function_exists('fopen')
    288                                         and $ht = fopen(_DIR_IMG . $extension['extension'] . '/' . _ACCESS_FILE_NAME, "w")
    289                                 ) {
     280                                if (function_exists('fopen') and $ht = fopen(_DIR_IMG . $extension['extension'] . '/' . _ACCESS_FILE_NAME, 'w')) {
    290281                                        fputs($ht, $medias_htaccess);
    291282                                        fclose($ht);
    292283                                        @chmod(_DIR_IMG . $extension['extension'] . '/' . _ACCESS_FILE_NAME, _SPIP_CHMOD & 0666);
    293                                         $message_log[] = "Le fichier " . _ACCESS_FILE_NAME . " pour " . _DIR_IMG . $extension['extension'] . " a été créé. " . date_format(date_create(),
    294                                                         'Y-m-d H:i:s');
     284                                        $message_log[] = 'Le fichier ' . _ACCESS_FILE_NAME . ' pour ' . _DIR_IMG . $extension['extension'] . ' a été créé. ' . date_format(date_create(), 'Y-m-d H:i:s');
    295285                                } else {
    296                                         $message_log[] = "Le fichier " . _ACCESS_FILE_NAME . " pour " . _DIR_IMG . $extension['extension'] . " n'a pu être créé. "
    297                                                 . date_format(date_create(), 'Y-m-d H:i:s');
    298                                 }
    299                         }
    300                 }
    301         }
    302 
    303         /**
     286                                        $message_log[] = 'Le fichier ' . _ACCESS_FILE_NAME . ' pour ' . _DIR_IMG . $extension['extension'] . " n'a pu être créé. " . date_format(date_create(), 'Y-m-d H:i:s');
     287                                }
     288                        }
     289                }
     290        }
     291
     292        /*
    304293         * Par défaut, le message de log a 4 entrées. Voir en début de la présente fonction.
    305294         */
    306295        if (count($message_log) == 4) {
    307                 $message_log[] = 'Aucun fichier ' . _ACCESS_FILE_NAME . " n'a été créé. "
    308                         . date_format(date_create(), 'Y-m-d H:i:s');
     296                $message_log[] = 'Aucun fichier ' . _ACCESS_FILE_NAME . " n'a été créé. " . date_format(date_create(), 'Y-m-d H:i:s');
    309297        }
    310298        // on met l'heure de fin de la procédure dans le message de log
     
    337325        }
    338326
    339         /**
     327        /*
    340328         * On recherche les extensions des documents sans distinction de statut des documents.
    341329         */
     
    345333                        if (is_readable(_DIR_IMG . $extension['extension'])) {
    346334                                spip_unlink(_DIR_IMG . $extension['extension'] . '/' . _ACCESS_FILE_NAME);
    347                                 $message_log[] = "Le fichier " . _ACCESS_FILE_NAME . " pour " . _DIR_IMG . $extension['extension'] . " a été supprimé avec succès.";
    348                         }
    349                 }
    350         }
    351 
     335                                $message_log[] = 'Le fichier ' . _ACCESS_FILE_NAME . ' pour ' . _DIR_IMG . $extension['extension'] . ' a été supprimé avec succès.';
     336                        }
     337                }
     338        }
    352339
    353340        // Par défaut, le message de log a 4 entrées. Voir en début de la présente fonction.
    354341        if (count($message_log) == 4) {
    355                 $message_log[] = 'Aucun fichier ' . _ACCESS_FILE_NAME . " n'a été supprimé. "
    356                         . date_format(date_create(), 'Y-m-d H:i:s');
     342                $message_log[] = 'Aucun fichier ' . _ACCESS_FILE_NAME . " n'a été supprimé. " . date_format(date_create(), 'Y-m-d H:i:s');
    357343        }
    358344        // on met l'heure de fin de la procédure dans le message de log
     
    367353
    368354        return false;
    369 
    370355}
    371356
     
    373358        include_spip('inc/config');
    374359        $config_md = lire_config('medias_dereferencer');
    375         $config_md = $config_md['adresse_ip'];
    376         if (empty($config_md)) {
     360        $directive = 'Allow from';
     361        if (isset($config_md['adresse_ip']) and empty($config_md['adresse_ip'])) {
    377362                return false;
    378363        }
    379         if (!is_array($config_md)) {
    380                 $config_md = explode(';', $config_md);
    381         }
    382         $config_md = array_filter($config_md);
    383         $string = "    Allow from " . implode("\n    Allow from ", $config_md);
     364        if (!is_array($config_md['adresse_ip'])) {
     365                $config_md['adresse_ip'] = explode(';', $config_md['adresse_ip']);
     366        }
     367        if (isset($config_md['apache']) and $config_md['apache'] === 'oui') {
     368                $directive = 'Require not ip';
     369        }
     370        $config_md['adresse_ip'] = array_filter($config_md['adresse_ip']);
     371        $string = "    $directive " . implode("\n    $directive ", $config_md['adresse_ip']);
    384372
    385373        return $string;
  • _plugins_/medias_dereferencer/branches/v1/medias_dereferencer_options.php

    r95185 r96283  
    44 *
    55 * @plugin     Déréférencer les médias
    6  * @copyright  2015
     6 * @copyright  2015-2016
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
  • _plugins_/medias_dereferencer/branches/v1/medias_dereferencer_pipelines.php

    r95637 r96283  
    66 * @plugin     Déréférencer les médias
    77 *
    8  * @copyright  2015
     8 * @copyright  2015-2016
    99 * @author     Teddy Payet
    1010 * @licence    GNU/GPL
     
    2525        $taches['medias_dereferencer_vu'] = 24 * 3600; // toutes les 24h
    2626        if (defined('_DUREE_CACHE_DEFAUT')) {
    27                 $taches['medias_dereferencer_htaccess'] = _DUREE_CACHE_DEFAUT; // toutes les 24h
     27                $taches['medias_dereferencer_htaccess'] = _DUREE_CACHE_DEFAUT; // On utilise le cache par défaut défini dans SPIP.
    2828        } else {
    2929                $taches['medias_dereferencer_htaccess'] = 24 * 3600; // toutes les 24h
  • _plugins_/medias_dereferencer/branches/v1/paquet.xml

    r95649 r96283  
    22        prefix="medias_dereferencer"
    33        categorie="statistique"
    4         version="1.2.1"
     4        version="1.2.3"
    55        etat="test"
    66        compatibilite="[3.0.9;3.1.*]"
    77        logo="prive/themes/spip/images/medias_dereferencer-64.png"
    88        documentation=""
     9        schema="1.0.0"
    910>
    1011        <nom>Déréférencer les médias</nom>
     
    1415        <licence>GNU/GPL</licence>
    1516
     17        <necessite nom="saisies" compatibilite="[2.5.29;]" />
     18
    1619        <pipeline nom="autoriser" inclure="medias_dereferencer_autorisations.php" />
    1720        <pipeline nom="taches_generales_cron" inclure="medias_dereferencer_pipelines.php" />
Note: See TracChangeset for help on using the changeset viewer.