Changeset 82270 in spip-zone


Ignore:
Timestamp:
May 8, 2014, 6:28:00 AM (5 years ago)
Author:
kent1@…
Message:

Début de gros refactoring...

On passe en dev..

Version 1.0.0

Location:
_plugins_/archive/trunk
Files:
10 added
4 deleted
5 edited
1 copied
5 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/archive/trunk/archive_administrations.php

    r82268 r82270  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
    5 include_spip('inc/meta');
    6     function archive_upgrade($nom_meta_base_version,$version_cible){
    7         $current_version = 0.0;
     5/**
     6 * Installation/maj du plugin
     7 *
     8 * Crée les champs archive_date sur les articles et sur les rubriques
     9 *
     10 * @param string $nom_meta_base_version
     11 * @param string $version_cible
     12 */
     13function archive_upgrade($nom_meta_base_version,$version_cible){
     14
     15        $maj = array();
    816       
    9         //recupére les informations de plugin.xml
    10         //MaRRocK : Mise à jour pour du spip 2.1 car la fonction plugin_get_infos() n'existe plus.
    11         if(version_compare($GLOBALS['spip_version_code'],'15375','>=')) {
    12                 $get_infos = charger_fonction('get_infos','plugins');
    13                 $infos = $get_infos('archive');
    14         }
    15         /*else { //MaRRocK : Sinon appelle de la fonction presente dans les versions antérieures à spip 2
    16                 $infos = plugin_get_infos('archive');
    17         }       */
     17        $maj['create'] = array(
     18                array('maj_tables',array('spip_articles','spip_rubriques'))
     19        );
    1820       
    19         $version = $infos['version']; //MaRRocK : remise en place pour l'insertion de la valeur du champ "archive_version" dans la meta
    20         $version_base = $infos['version_base'];
    21    
    22     spip_log("upgrade","archive");
    23     spip_log("meta base version".$GLOBALS['meta'][$nom_meta_base_version],'archive');
    24     spip_log("version cible".$version_cible,'archive');
    25     spip_log("nom meta".$nom_meta_base_version,'archive');   
    26 
    27     //Changement de version ou premiere installation   
    28         if ((!isset($GLOBALS['meta'][$nom_meta_base_version]) )
    29                         OR (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
    30                 spip_log("maj","archive");
    31                 include_spip('base/archive');
    32                 include_spip('base/create');
    33                 maj_tables(array('spip_articles','spip_rubriques'));
    34 
    35                 ecrire_meta($nom_meta_base_version,$current_version=$version_base,'non');
    36                 ecrire_meta('archive_version',$version,'non'); //MaRRocK : remise en place pour l'insertion de la valeur du champ "archive_version" dans la meta
    37         }
    38        
    39         ecrire_metas();
     21        include_spip('base/upgrade');
     22        maj_plugin($nom_meta_base_version, $version_cible, $maj);
    4023}
    4124
     25/**
     26 * Désinstallation du plugin
     27 *
     28 * Supprime les champs archive_date des articles et des rubriques
     29 *
     30 * @param string $nom_meta_base_version
     31 */
    4232function archive_vider_tables($nom_meta_base_version) {
    43     sql_alter('TABLE spip_articles DROP archive');
    44     sql_alter('TABLE spip_articles DROP archive_date');
    45     sql_alter('TABLE spip_rubriques DROP archive');
    46     sql_alter('TABLE spip_rubriques DROP archive_date');       
     33        sql_alter('TABLE spip_articles DROP COLUMN archive_date');
     34        sql_alter('TABLE spip_rubriques DROP COLUMN archive_date');
     35        effacer_meta('archive');
    4736        effacer_meta($nom_meta_base_version);
    48         effacer_meta('archive_version'); //MaRRocK : remise en place pour l'insertion de la valeur du champ "archive_version" dans la meta
    4937}
    50 
    51 /*
    52 //configure la base spip et les metas
    53 function archive_install($action){
    54         //version en cours
    55         //recupére les informations de plugin.xml
    56         $infos = plugin_get_infos('archive');
    57         $archive_version = $infos['version'];
    58        
    59     switch ($action){
    60         case 'test':
    61            //Contrôle du plugin à chaque chargement de la page d'administration
    62            // doit retourner true si le plugin est proprement installé et à jour, false sinon
    63            if ((!isset($GLOBALS['meta']['archive_version'])) || version_compare($GLOBALS['meta']['archive_version'],$archive_version,"<")) {
    64                    //lance la mise à jour
    65                     //on sauve en meta la version spip
    66                     ecrire_meta('archive_version',$archive_version);
    67            } else {
    68                    //on est à jour
    69                    return true;
    70            }
    71         break;
    72         case 'install':
    73            //Appel de la fonction d'installation. Lors du clic sur l'icône depuis le panel.
    74            //quand le plugin est activé et test retourne false
    75            //return archive_installer($archive_version);
    76         break;
    77         case 'uninstall':
    78            //Appel de la fonction de suppression
    79            //quand l'utilisateur clickque sur "supprimer tout" (disponible si test retourne true)
    80            //return archive_uninstaller();
    81         break;
    82     }
    83 }
    84 */
    8538?>
  • _plugins_/archive/trunk/archive_fonctions.php

    r82268 r82270  
    11<?php
    2 // ajoute le critere {archive x}
    3 function critere_archive_dist($idb, &$boucles, $crit) {
     2
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION"))
     5        return;
     6
     7/**
     8 * Définition du critère {archive x} (pour compatibilité avec les anciennes versions)
     9 *
     10 * Ce critère est obsolète, il devrait être remplacé par {statut = archive}
     11 */
     12function critere_archive_dist($idb, &$boucles, $crit){
     13        spip_log('Utilisation du critère {archive...} devenu obsolète','spip.'._LOG_ERREUR);
     14
    415        $boucle = &$boucles[$idb];
    5         $id_table = $boucle->id_table;
    6         $marchive = $id_table .'.archive';
     16        $boucle -> modificateur['criteres']['archive'] = true;
    717
    8         $boucle->modificateur['criteres']['archive'] = true;
    9 
    10 //reduit le critére à la boucle articles uniquement
    11     if ($boucle->type_requete == 'articles') {
    12         spip_log('seulement','archive');
    13         //recherche la valeur de x dans {critere x}
    14         //si x vaut "seulement" alors on indique uniquement les articles archivés
    15         if ($crit->param[0][0]->texte == "seulement") {
    16                 $boucle->where[]= array("'='", "'$marchive'", "1");
    17             //sinon tous les articles sont retournés archivé ou non
    18             } else {
    19                 //ne fait rien
    20             }
    21     }
     18        //reduit le critére à la boucle articles uniquement
     19        if ($boucle -> type_requete == 'articles') {
     20                //recherche la valeur de x dans {critere x}
     21                //si x vaut "seulement" alors on indique uniquement les articles archivés
     22                if ($crit->param[0][0] -> texte == "seulement") {
     23                        $id_table = $boucle->id_table;
     24                        $marchive = $id_table . '.statut';
     25                        $boucle->where[] = array("'='", "'$marchive'", "archive");
     26                        //sinon tous les articles sont retournés archivé ou non
     27                }
     28        }
    2229}
    2330?>
  • _plugins_/archive/trunk/archive_pipelines.php

    r39686 r82270  
    44if (!defined("_ECRIRE_INC_VERSION")) return;
    55
    6 // Determine le comportement du plugin selon la page appelée
    7 function archive_execution($flux) {
    8         //determine la page demandée
    9         switch ($flux['args']['exec']) {
    10                 //la page articles est demandée
    11                 case "articles" :
    12                         //charge les fonctions necessaire
    13                         include_once('inc/archive_articles.php');
    14                         $id_article = $flux['args']['id_article'];
    15                         //recupere le complement d'affichage
    16                         $flux['data'] .= archive_ajout_option($id_article);
    17                         break;
    18                 default :
    19         }
    20         //retourne l'affichage complet
    21         return $flux;
    22 }
    23 
    24 // Modification de la requête des objets pour ne pas afficher les archives par défaut
     6// Modification de la requète des objets pour ne pas afficher les archives par défaut
    257function archive_pre_boucle($boucle){
    268        if ($boucle->type_requete == 'articles') {
    279                $id_table = $boucle->id_table;
    28                 $champ_archive = $id_table.'.archive';
    2910               
    30                 // Si le critere {archive} ou {tout} est absent on affiche uniquement les elements non archivé
    31                 if (!isset($boucle->modificateur['criteres']['archive']) &&
    32                         !isset($boucle->modificateur['tout']))
    33                 {
    34                         $boucle->where[]= array("'is'", "'$champ_archive'", "'null'");
    35                 }     
     11                // Si le critere {archive} ou {tout} est absent on affiche uniquement les elements non archivés
     12                if (!isset($boucle->modificateur['criteres']['archive']) && !isset($boucle->modificateur['tout']) && !isset($boucle->modificateur['statut'])){
     13                        $champ_archive = $id_table.'.statut';
     14                        $boucle->where[]= array("'!='", "'$champ_archive'", "'archive'");
     15                }
    3616        }
    3717        return $boucle;
     
    4525
    4626?>
    47 
    48 
  • _plugins_/archive/trunk/base/archive.php

    r27103 r82270  
    22if (!defined("_ECRIRE_INC_VERSION")) return;
    33
    4 function archive_declarer_tables_principales($tables_principales){
    5 
    6     $tables_principales['spip_articles']['field']['archive_date']= "datetime not null";
    7     $tables_principales['spip_articles']['field']['archive']= "BOOLEAN";   
    8    
    9     $tables_principales['spip_rubriques']['field']['archive_date']= "datetime not null";
    10     $tables_principales['spip_rubriques']['field']['archive']= "BOOLEAN";       
    11    
    12     return $tables_principales;
    13 };
     4/**
     5 * Insertion dans le pipeline declarer_tables_objets_sql (SPIP)
     6 *
     7 * Declarer le champ archive_date sur les articles et les rubriques et le statut archive
     8 *
     9 * @param array $tables
     10 *      La définition des objets SPIP
     11 * @return array
     12 *      La définition des objets SPIP modifiés
     13 */
     14function archive_declarer_tables_objets_sql($tables){
     15        $tables['spip_articles']['field']['archive_date'] = "datetime not null";
     16        $tables['spip_rubriques']['field']['archive_date'] = "datetime not null";
     17        return $tables;
     18}
    1419?>
  • _plugins_/archive/trunk/genie/archive_cron.php

    r18427 r82270  
    1 <?php 
     1<?php
    22
    3 function cron_archive_cron($t){
    4 // recupere les valeurs fixées avec CFG
    5  $jours = lire_config("archive/jours");
    6  $arch_rub = lire_config("archive/idrub");
    7  $arch_auto = lire_config("archive/act_archive");
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION")) return;
    85
    9 // teste si l'archivage automatique est activé
    10 if ( $arch_auto == "oui" ) {
    11  
    12 // s'il est activé, alors il archive les articles
    13 // de charque rubrique selectionnée
    14 
    15 foreach ($arch_rub as $num_rub) {
    16 
    17        $q="update spip_articles set archive_date=NOW(), archive=1 where
    18 FROM_UNIXTIME(UNIX_TIMESTAMP(date))<FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())-($jours*24*3600))AND id_rubrique = $num_rub" ;
    19        spip_query($q);
    20           }
    21 return 1;
    22 }
    23 else {
    24 
    25 // si l'archivage n'est pas activé, il ne fait rien
    26                 exit;
    27 }
     6function genie_archive_cron($t){
     7        // teste si l'archivage automatique est actif
     8        if (lire_config("archive/act_archive",'non') == "oui" && ($jours = lire_config("archive/jours",0)) != 0){
     9                // s'il est actif, alors il archive les articles
     10                // de chaque rubrique selectionnée
     11                $articles = sql_allfetsel('id_article','spip_articles','FROM_UNIXTIME(UNIX_TIMESTAMP(date))<FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())-($jours*24*3600)) AND '.sql_in('id_rubrique',lire_config("archive/idrub",array())));
     12                if(count($articles) > 0){
     13                        include_spip('action/editer_article');
     14                        foreach ($articles as $article) {
     15                                $id_article = $article['id_article'];
     16                                $modifs = array('archive_date'=>date(),'statut' => 'archive');
     17                                $modif = article_modifier($id_article,$modifs);
     18                        }
     19                }
     20        }
     21        return 1;
    2822}
    2923?>
  • _plugins_/archive/trunk/lang/archive_fr.php

    r18427 r82270  
    11<?php
    22
    3 /*
    4  * Plugin ARCHIVE pour SPIP
    5  * (c) jilou 2008, distribue sous licence GNU/GPL
    6  * Documentation et contact: http://www.spip-contrib.net/
    7  *
    8  */
     3// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
     4// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/archive/trunk/lang/
    95
    106if (!defined("_ECRIRE_INC_VERSION")) return;
    117
     8$GLOBALS[$GLOBALS['idx_lang']] = array(
    129
    13 $GLOBALS['i18n_archive_fr'] = array(
     10        //A
     11        'arch_auto' => 'Archivage automatique : ',
     12        'articles_archives' => 'Les articles archiv&eacute;s :',
     13       
     14        //C
     15        'choix_rubrique' => 'Choix de la rubrique &agrave; utiliser :',
     16       
     17        //C
     18        'doc_complete' => 'Documentation compl&eacute;te',
     19       
     20        //I
     21        'info_defaut_desc' => 'Vous pouvez d&eacute;finir ici les param&egrave;tres d\'archivage automatique',
     22       
     23        //J
     24        'jours_archive' => 'Archiver les articles de plus de :',
     25        'jours' => 'jour(s)',
     26       
     27        // L
     28        'legend_arch_auto' => 'Param&egrave;tres d\'archivage automatique',
     29       
     30        //N
     31        'non' => 'Non',
     32        'nom_plugin' => 'Le plugin Archive',
     33       
     34        //O
     35        'oui' => 'Oui',
     36       
     37        // R
     38        'rubriques_archiver' => 'Rubriques &agrave; archiver :',
     39        'rappel_utilisation' => 'Rappel sur comment l\'utiliser :',
     40       
     41        // T
     42        'titre_archive' => 'Le plugin Archive',
    1443
    15 // boutons validation
    16 'ok' => 'OK',
    17 'reset' => 'Effacer',
    18 'supprimer' => 'Supprimer',
    19 
    20 // textes cfg
    21 //A
    22 'arch_auto' => 'Archivage automatique : ',
    23 'articles_archives' => 'Les articles archiv&eacute;s :',
    24 
    25 //C
    26 'choix_rubrique' => 'Choix de la rubrique &agrave; utiliser :',
    27 
    28 //C
    29 'doc_complete' => 'Documentation compl&eacute;te',
    30 
    31 //I
    32 'info_defaut_desc' => 'Vous pouvez d&eacute;finir ici les param&egrave;tres d\'archivage automatique',
    33 
    34 //J
    35 'jours_archive' => 'Archiver les articles de plus de :',
    36 'jours' => 'jour(s)',
    37 
    38 // L
    39 'legend_arch_auto' => 'Param&egrave;tres d\'archivage automatique',
    40 
    41 //N
    42 'non' => 'Non',
    43 'nom_plugin' => 'Le plugin Archive',
    44 
    45 //O
    46 'oui' => 'Oui',
    47 
    48 // R
    49 'rubriques_archiver' => 'Rubriques &agrave; archiver :',
    50 'rappel_utilisation' => 'Rappel sur comment l\'utiliser :',
    51 
    52 //V
    53 'version' => 'Version en cours :'
     44        //V
     45        'version' => 'Version en cours :'
    5446
    5547);
  • _plugins_/archive/trunk/paquet.xml

    r82268 r82270  
    1 <plugin>
    2         <nom>Archive</nom>
    3         <version>0.81.0</version>
    4         <version_base>0.1</version_base>
    5         <prefix>archive</prefix>
    6 
    7         <etat>dev</etat>
    8         <auteur>[Camille Lafitte->http://km.azerttyu.net]</auteur>
    9         <licence>GNU/GPL</licence>
    10         <icon>images/archive-64.png</icon>
    11 
    12         <slogan>Ajouter le statut &#171; archive &#187; aux articles</slogan>
    13         <description>
    14 Ce plugin ajoute le statut <b>archive</b> aux articles.
    15 _ Pensez &#224; utiliser le crit&#232;re <b>{archive}</b> ou bien <b>archive seulement</b>
    16         </description>
    17        
    18         <lien>http://www.spip-contrib.net/Plugin-Archive</lien>
    19 
    20         <fonctions>public/archive_criteres.php</fonctions>
    21 
    22         <pipeline>
    23                 <nom>affiche_milieu</nom>
    24                 <action>execution</action>
    25                 <inclure>archive_pipelines.php</inclure>
    26         </pipeline>
    271        <pipeline>
    282        <nom>taches_generales_cron</nom>
    293        <inclure>archive_pipelines.php</inclure>
    304        </pipeline>
    31         <pipeline>
    32         <nom>pre_boucle</nom>
    33         <inclure>archive_pipelines.php</inclure>
    34         </pipeline>
     5</plugin>
     6<paquet
     7        prefix="archive"
     8        categorie="date"
     9        version="1.0.0"
     10        etat="dev"
     11        compatibilite="[3.0.0;3.0.*]"
     12        logo="prive/themes/spip/images/archive-32.png"
     13        schema="0.1.0"
     14        documentation="http://contrib.spip.net/Plugin-Archive"
     15>
    3516
    36         <install>base/archive_install.php</install>
    37     <pipeline>
    38         <nom>declarer_tables_principales</nom>
    39         <inclure>base/archive.php</inclure>
    40     </pipeline>
     17        <nom>Archive</nom>
     18        <!-- Un statut archive pour les objets -->
    4119
    42         <necessite id="SPIP" version="[1.9.0;2.1.99]" />
    43         <necessite id="cfg" version="[1.5.0;]" />
    44         <categorie>date</categorie>
    45 </plugin>
     20        <auteur lien="http://km.azerttyu.net">Camille Lafitte</auteur>
     21        <auteur lien="http://www.kent1.info">kent1</auteur>
     22
     23        <copyright>2008-2014</copyright>
     24
     25        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
     26
     27        <pipeline nom="declarer_tables_objets_sql" inclure="base/archive.php" />
     28        <pipeline nom="pre_boucle" inclure="archive_pipelines.php" />
     29        <pipeline nom="taches_generales_cron" inclure="archive_pipelines.php" />
     30</paquet>
  • _plugins_/archive/trunk/prive/squelettes/contenu/configurer_archive.html

    r82268 r82270  
    1 #CACHE{0}
    2 [(#REM) descriptif=
    3 <h2>Le Plugin Archive</h2>
    4 <p>Rappel sur comment l'utiliser :<br />
    5 <a href="http://www.spip-contrib.net/Plugin-archive" class="spip_out">Documentation compl&eacute;te</a>
    6 </p>]
    7 [(#REM) titre=configuration Plugin Archive]
    8 
    9 <p><:archive:version:> <?php echo $GLOBALS['meta']['archive_version'] ?> </p>
    10 
    11 <h3><:archive:arch_auto:></h3>
    12 <p><:archive:info_defaut_desc:></p>
    13 <form name="archivage_auto" method="post" action="#SELF"><div>[(#ENV{_cfg_}|form_hidden)]</div>
    14 
    15 <fieldset>
    16 <legend>
    17         <:archive:legend_arch_auto:>
    18 </legend>
    19 <p><:archive:arch_auto:>
    20 <label for="oui"><:archive:oui:></label>
    21 <input type="radio" name="act_archive" id="oui" value="oui" [(#CONFIG{archive/act_archive}|=={oui}|?{checked="checked",''})]/>
    22 <label for="non"><:archive:non:></label>
    23 <input type="radio" name="act_archive" value="non" id="non"  [(#CONFIG{archive/act_archive}|=={non}|?{checked="checked",''})]/>
    24 </p>
    25 <p><:archive:jours_archive:>
    26 <input type="text" name="jours" size="3" id="jours" value="#ENV{jours}"/>
    27 <label for="jours"><:archive:jours:></label>
    28 </p>
    29 <p><:archive:rubriques_archiver:></p>
    30     <BOUCLE_secteurs(RUBRIQUES) {racine} {par titre}>
    31 <label for="#ID_RUBRIQUE">#TITRE (#ID_RUBRIQUE) </label>
    32 <input type="checkbox" name="idrub[]" value="#ID_RUBRIQUE" id="#ID_RUBRIQUE"  [(#ID_RUBRIQUE|in_array{[(#CONFIG{archive/idrub,#ARRAY})]}|?{'checked="checked"'})]/><br />
    33 
    34       <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
    35 <label for="#ID_RUBRIQUE">#TITRE (#ID_RUBRIQUE)</label>
    36 <input type="checkbox" name="idrub[]" value="#ID_RUBRIQUE" id="#ID_RUBRIQUE"   [(#ID_RUBRIQUE|in_array{[(#CONFIG{archive/idrub,#ARRAY})]}|?{'checked="checked"'})]/><br />
    37 
    38    <BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques>
    39       </BOUCLE_rubriques>
    40     </BOUCLE_secteurs>
    41 <br />
    42 
    43 <input type="submit" name="_cfg_ok" value="<:archive:OK:>" />
    44 <input type="reset" value="<:archive:Reset:>" />
    45 <input type="submit" name="_cfg_delete" value="<:archive:Supprimer:>" />
    46 </fieldset>
    47 </form>
    48 <h3><:archive:articles_archives:></h3>
    49 [(#REM) determine les articles archivés]
    50 <BOUCLE_test(ARTICLES) {archive seulement}  {statut IN prop,prepa,publie,refuse,poubelle}>
    51         <B_rubrique>
    52                 <ul>
    53         <BOUCLE_rubrique(RUBRIQUES) {unique} {id_rubrique}>
    54                 <li>#TITRE</li>
    55                 <B_archive>
    56                         <ul>
    57                 <BOUCLE_archive(ARTICLES) {id_rubrique} {archive seulement} {statut IN prop,prepa,publie,refuse,poubelle}>
    58                         <li>
    59                                 <a href="?exec=articles&id_article=#ID_ARTICLE  "><strong>#TITRE</strong></a> -#STATUT- (archivé le [(#ARCHIVE_DATE|jour)]/[(#ARCHIVE_DATE|mois)]/[(#ARCHIVE_DATE|annee)])
    60                         </li>
    61                 </BOUCLE_archive>
    62                         </ul>
    63                 </B_archive>
    64         </BOUCLE_rubrique>
    65                 </ul>
    66         </B_rubrique>
    67 </BOUCLE_test>
     1[(#AUTORISER{configurer_archive}|sinon_interdire_acces)]
     2<h1 class="grostitre"><:archive:titre_archive:></h1>
     3<div class="ajax">#FORMULAIRE_CONFIGURER_ARCHIVE</div>
  • _plugins_/archive/trunk/public/archive_boucles.php

    r15591 r82270  
    11<?php
     2
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION")) return;
    25
    36//
     
    1518                        $boucle->where[]= array("'IS'", "'$marchive'", "'NULL'");
    1619                }
    17         } else {
    1820        }
    1921
Note: See TracChangeset for help on using the changeset viewer.