Changeset 81373 in spip-zone


Ignore:
Timestamp:
Mar 14, 2014, 1:47:58 PM (5 years ago)
Author:
magegahell@…
Message:

Compatibilité Accès Restreint (on espère).
Formulaires d'exemples plus "SPIP" niveau sémantique.

Location:
_plugins_/alertes/trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/alertes/trunk/alertes/corps-email-alerte.html

    r81232 r81373  
    11[(#HTTP_HEADER{Content-type: text/html[; charset=(#CHARSET)]})]
    22#CACHE{0}
    3 <B_article>
    43[(#REM)
    54        Exemple basique de corps d'email d'une alerte envoyée.
     
    109        Surcharger-le par le votre dans squelettes/alertes/corps-email-alerte.html
    1110]
     11<BOUCLE_si_acces_restreint(CONDITION){si #PLUGIN{accesrestreint}}>
     12[(#REM) Accès restreint nous force à l'ajout d'un critère tout_voir, car le CRON n'est pas un auteur ayant accès aux articles apparement...]
     13<BOUCLE_article_r(ARTICLES){tout_voir}{id_article}{0,1}>
     14        <h2 style="font-size:16px; margin:0 0 0.5em;color:#ff9000; line-height: 1.05em;">
     15                <a href="[(#URL_ARTICLE|abs_url)]" style="color:#ff9000;">[(#TITRE|textebrut)]</a>
     16        </h2>
     17        [<h3 style="color:#616161; margin:0 0 0.5em;font-size:14px;"><a href="[(#URL_ARTICLE|abs_url)]" style="color:#616161;">(#SOUSTITRE|textebrut)</a></h3>]
     18        [<div style="color:#616161; margin:0 0 0.5em;font-size:12px;">(#INTRODUCTION|couper{150})</div>]
     19</BOUCLE_article_r>
     20</BOUCLE_si_acces_restreint>
     21<B_article>
     22[(#REM) Boucle normale, sans Accès restreint]
    1223<BOUCLE_article(ARTICLES){id_article}{0,1}>
    1324        <h2 style="font-size:16px; margin:0 0 0.5em;color:#ff9000; line-height: 1.05em;">
     
    1829</BOUCLE_article>
    1930</B_article>
     31<//B_si_acces_restreint>
  • _plugins_/alertes/trunk/alertes/sujet-email-alerte.html

    r81197 r81373  
    1010        Surcharger-le par le votre dans squelettes/alertes/sujet-email-alerte.html
    1111]
    12 <:alertes:news_on{nom_site_spip=#NOM_SITE_SPIP}:> <BOUCLE_art(ARTICLES){id_article}>[(#TITRE|textebrut)]</BOUCLE_art>
     12<:alertes:news_on{nom_site_spip=#NOM_SITE_SPIP}:> <BOUCLE_si_acces_restreint(CONDITION){si #PLUGIN{accesrestreint}}><BOUCLE_art_r(ARTICLES){tout_voir}{id_article}>[(#TITRE|textebrut)]</BOUCLE_art_r></BOUCLE_si_acces_restreint><BOUCLE_art(ARTICLES){id_article}>[(#TITRE|textebrut)]</BOUCLE_art><//B_si_acces_restreint>
  • _plugins_/alertes/trunk/alertes_pipelines.php

    r81197 r81373  
    3232        //Récuperation de la configuration
    3333        $a = @unserialize($GLOBALS['meta']['config_alertes']);
     34        //Est-ce que Accès restreint est activé ?
     35        $plugins = @unserialize($GLOBALS['meta']['plugin']);
     36        if(is_array($plugins['ACCESRESTREINT'])){
     37                $acces_restreint = true;
     38        }else{
     39                $acces_restreint = false;
     40        }
    3441        //Publication d'article : à ajouter aux alertes des abonnés
    35         if ($quoi=='instituerarticle' AND $options['statut'] == 'publie' AND is_array($a)){;
     42        if ($quoi=='instituerarticle' AND $options['statut'] == 'publie' AND is_array($a)){
    3643                //Seulement si alertes actives
    3744                if($a['activer_alertes'] == 'oui'){
     
    5057                                                        while($v = sql_fetch($verif)){
    5158                                                                if( ($v['email'])&&($v['id_auteur']) ){
    52                                                                         //Email, on stocke pour envoi
    53                                                                         $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     59                                                                        if($acces_restreint == true){           
     60                                                                                $article_accessible = false; // On bloque de base puis on vérifie
     61                                                                                //Recuperation des zones de l'auteur
     62                                                                                if($zones = sql_select("id_zone", "spip_zones_liens", "id_objet = ".$abonne['id_auteur']." AND objet='auteur'")){
     63                                                                                        while($z = sql_fetch($zones)){
     64                                                                                                //Pour chacunes des zones de l'auteur, on regarde si l'article est dans une des rubriques auxquelles il a accès
     65                                                                                                if($restrict = sql_select("*","spip_articles AS art, spip_zones_liens AS zo","id_zone = ".$z['id_zone']." AND zo.objet='rubrique' AND art.id_article = ".$id_article." AND art.id_rubrique = zo.id_objet")){
     66                                                                                                        while($r = sql_fetch($restrict)){
     67                                                                                                                $article_accessible = true; //Dès qu'on a une zone accessible, on passe à true
     68                                                                                                        }
     69                                                                                                }
     70                                                                                        }
     71                                                                                }
     72                                                                        }else{
     73                                                                                $article_accessible = true; // Sans accès restreint, c'est bon de base.
     74                                                                        }
     75                                                                        //Email, on stocke pour envoi, ssi l'article n'est pas restreint pour cet auteur
     76                                                                        if($article_accessible == true){
     77                                                                                $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     78                                                                        }
    5479                                                                }
    5580                                                                if( (!$v['email'])||($v['email'] == '') ){
     
    82107                                                        while($v = sql_fetch($verif)){
    83108                                                                if( ($v['email'])&&($v['id_auteur']) ){
    84                                                                         //Email, on stocke pour envoi
    85                                                                         $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     109                                                                        if($acces_restreint == true){           
     110                                                                                $article_accessible = false; // On bloque de base puis on vérifie
     111                                                                                //Recuperation des zones de l'auteur
     112                                                                                if($zones = sql_select("id_zone", "spip_zones_liens", "id_objet = ".$abonne['id_auteur']." AND objet='auteur'")){
     113                                                                                        while($z = sql_fetch($zones)){
     114                                                                                                //Pour chacunes des zones de l'auteur, on regarde si l'article est dans une des rubriques auxquelles il a accès
     115                                                                                                if($restrict = sql_select("*","spip_articles AS art, spip_zones_liens AS zo","id_zone = ".$z['id_zone']." AND zo.objet='rubrique' AND art.id_article = ".$id_article." AND art.id_rubrique = zo.id_objet")){
     116                                                                                                        while($r = sql_fetch($restrict)){
     117                                                                                                                $article_accessible = true; //Dès qu'on a une zone accessible, on passe à true
     118                                                                                                        }
     119                                                                                                }
     120                                                                                        }
     121                                                                                }
     122                                                                        }else{
     123                                                                                $article_accessible = true; // Sans accès restreint, c'est bon de base.
     124                                                                        }
     125                                                                        //Email, on stocke pour envoi, ssi l'article n'est pas restreint pour cet auteur
     126                                                                        if($article_accessible == true){
     127                                                                                $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     128                                                                        }
    86129                                                                }
    87130                                                                if( (!$v['email'])||($v['email'] == '') ){
     
    114157                                                        while($v = sql_fetch($verif)){
    115158                                                                if( ($v['email'])&&($v['id_auteur']) ){
    116                                                                         //Email, on stocke pour envoi
    117                                                                         $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     159                                                                        if($acces_restreint == true){           
     160                                                                                $article_accessible = false; // On bloque de base puis on vérifie
     161                                                                                //Recuperation des zones de l'auteur
     162                                                                                if($zones = sql_select("id_zone", "spip_zones_liens", "id_objet = ".$abonne['id_auteur']." AND objet='auteur'")){
     163                                                                                        while($z = sql_fetch($zones)){
     164                                                                                                //Pour chacunes des zones de l'auteur, on regarde si l'article est dans une des rubriques auxquelles il a accès
     165                                                                                                if($restrict = sql_select("*","spip_articles AS art, spip_zones_liens AS zo","id_zone = ".$z['id_zone']." AND zo.objet='rubrique' AND art.id_article = ".$id_article." AND art.id_rubrique = zo.id_objet")){
     166                                                                                                        while($r = sql_fetch($restrict)){
     167                                                                                                                $article_accessible = true; //Dès qu'on a une zone accessible, on passe à true
     168                                                                                                        }
     169                                                                                                }
     170                                                                                        }
     171                                                                                }
     172                                                                        }else{
     173                                                                                $article_accessible = true; // Sans accès restreint, c'est bon de base.
     174                                                                        }
     175                                                                        //Email, on stocke pour envoi, ssi l'article n'est pas restreint pour cet auteur
     176                                                                        if($article_accessible == true){
     177                                                                                $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     178                                                                        }
    118179                                                                }
    119180                                                                if( (!$v['email'])||($v['email'] == '') ){
     
    146207                                                        while($v = sql_fetch($verif)){
    147208                                                                if( ($v['email'])&&($v['id_auteur']) ){
    148                                                                         //Email, on stocke pour envoi
    149                                                                         $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     209                                                                        if($acces_restreint == true){           
     210                                                                                $article_accessible = false; // On bloque de base puis on vérifie
     211                                                                                //Recuperation des zones de l'auteur
     212                                                                                if($zones = sql_select("id_zone", "spip_zones_liens", "id_objet = ".$abonne['id_auteur']." AND objet='auteur'")){
     213                                                                                        while($z = sql_fetch($zones)){
     214                                                                                                //Pour chacunes des zones de l'auteur, on regarde si l'article est dans une des rubriques auxquelles il a accès
     215                                                                                                if($restrict = sql_select("*","spip_articles AS art, spip_zones_liens AS zo","id_zone = ".$z['id_zone']." AND zo.objet='rubrique' AND art.id_article = ".$id_article." AND art.id_rubrique = zo.id_objet")){
     216                                                                                                        while($r = sql_fetch($restrict)){
     217                                                                                                                $article_accessible = true; //Dès qu'on a une zone accessible, on passe à true
     218                                                                                                        }
     219                                                                                                }
     220                                                                                        }
     221                                                                                }
     222                                                                        }else{
     223                                                                                $article_accessible = true; // Sans accès restreint, c'est bon de base.
     224                                                                        }
     225                                                                        //Email, on stocke pour envoi, ssi l'article n'est pas restreint pour cet auteur
     226                                                                        if($article_accessible == true){
     227                                                                                $emails[$v['id_auteur']] = $v['email']; //A voir si ça évite les doublons
     228                                                                        }
    150229                                                                }
    151230                                                                if( (!$v['email'])||($v['email'] == '') ){
  • _plugins_/alertes/trunk/css/alertes.css

    r81197 r81373  
    33 * Distribué sous licence GPL
    44 *
    5  * CSS reprise du plugin Mes favoris (version 32px) de Olivier Sallou, Cedric Morin.
     5 * CSS en partie reprise du plugin Mes favoris (version 32px) de Olivier Sallou, Cedric Morin.
    66 */
    77.formulaire_alerte{float:right;}
     
    1616.formulaire_alerte form button.retirer_alertes span {visibility:hidden;}
    1717.formulaire_alerte form button.retirer_favori:hover span {visibility:visible;}
     18
     19.formulaire_alertes_email .choix {display:block;margin-right:8px;float:left;}
  • _plugins_/alertes/trunk/formulaires/alertes_email.html

    r81197 r81373  
    11[(#REM)
    22        Formulaire d'enregistrement des abonnements.
    3         Assez basique et en table (et oui). Nous vous recommandons de réaliser le votre à partir de cet exemple et de le surcharger dans squelettes/formulaires/
     3        Nous vous recommandons de réaliser le votre à partir de cet exemple et de le surcharger dans squelettes/formulaires/
    44]
     5
     6[(#REM) Compatibilité Accès restreint : proposer les rubriques restreintes auxquelles l'auteur a accès]
     7<BOUCLE_si_acces_restreint(CONDITION){si #PLUGIN{accesrestreint}}>
     8<BOUCLE_zones(spip_zones_liens){id_objet=#SESSION{id_auteur}}{objet=auteur}>
     9        #SET{rubriques_restreintes,#ARRAY}
     10        <BOUCLE_rubriques_zones(spip_zones_liens){id_zone=#ID_ZONE}{objet=rubrique}>
     11                #SET{rubriques_restreintes, #GET{rubriques_restreintes}|push{#ID_OBJET}}
     12        </BOUCLE_rubriques_zones>
     13</BOUCLE_zones>
     14</BOUCLE_si_acces_restreint>
     15
    516<div class="formulaire_spip formulaire_alertes_email">
    617        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     
    920                <div>
    1021                #ACTION_FORMULAIRE{#ENV{action}}
     22                <ul>
     23                [(#REM) Abonnement aux secteurs]
     24                <B_alertes_secteurs>
     25                <li class="fieldset">
     26                        <fieldset>
     27                                <h3 class="legend"><:alertes:abo_sectors:></h3>
     28                                <ul>
     29                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{secteurs}}
     30                                        <li class="editer_secteurs[ (#GET{erreurs}|oui)erreur]">
     31                                        <BOUCLE_alertes_secteurs(RUBRIQUES){tout}{racine}{id_secteur IN #CONFIG{config_alertes/secteurs}|to_array}>     
     32                                        [(#REM) Accès restreint, on propose la rubrique que si elle est dans celles auquelles a accès l'auteur]                                 
     33                                        <BOUCLE_si_acces_restreint_sec(CONDITION){si #PLUGIN{accesrestreint}}>
     34                                                        <BOUCLE_si_restreint2(CONDITION){si #GET{rubriques_restreintes}|find{#ID_RUBRIQUE}|oui}>       
     35                                                        <div class="choix">
     36                                                                <input type="checkbox" class="checkbox" name="secteurs[]" id="secteur-#ID_RUBRIQUE" value="#ID_RUBRIQUE"[ (#ENV{secteurs}|find{#ID_RUBRIQUE}|oui)checked="checked"]/>
     37                                                                <label for="secteur-#ID_RUBRIQUE">#TITRE</label>
     38                                                        </div>                                                                 
     39                                                        </BOUCLE_si_restreint2>                                                                 
     40                                        </BOUCLE_si_acces_restreint_sec>
     41                                        [(#REM) Pas d'accès restreint, on propose la rubrique]
     42                                        <div class="choix">
     43                                                <input type="checkbox" class="checkbox" name="secteurs[]" id="secteur-#ID_RUBRIQUE" value="#ID_RUBRIQUE"[ (#ENV{secteurs}|find{#ID_RUBRIQUE}|oui)checked="checked"]/>
     44                                                <label for="secteur-#ID_RUBRIQUE">#TITRE</label>
     45                                        </div>
     46                                        <//B_si_acces_restreint_sec>
     47                                        </BOUCLE_alertes_secteurs>
     48                                        </li>
     49                                </ul>
     50                        </fieldset>
     51                </li>
     52                </B_alertes_secteurs>
    1153               
    12                 <B_alertes_mots>
    13                 <h3><:alertes:abo_keywords:><h3>
    14 
    15                 <table class="fields-cols">                                             
    16 
    17                 <BOUCLE_alertes_mots(MOTS){tout}{id_groupe IN #CONFIG{config_alertes/groupes}|to_array}>
    18                 [(#COMPTEUR_BOUCLE|alterner{'<tr>','','','',''})]
    19                 <td>
    20                         <input type="checkbox" class="checkbox" name="mots[]" id="mot-#ID_MOT" value="#ID_MOT"[ (#ENV{mots}|find{#ID_MOT}|oui)checked="checked"]/>
    21                         <label for="mot-#ID_MOT">#TITRE</label>
    22                 </td>
    23                 [(#COMPTEUR_BOUCLE|alterner{'','','','','</tr>'})]
    24                 </BOUCLE_alertes_mots>
    25                 [(#TOTAL_BOUCLE|modulo{5}|=={0}|?{'','</tr>'})]
    26                 </table>
    27                 </B_alertes_mots>
    28                
     54                [(#REM) Abonnements aux rubriques spécifiques]
    2955                <B_alertes_rubriques>
    30                 <h3><:alertes:abo_topics:></h3>
    31                 <table class="fields-cols">                                             
    32 
    33                 <BOUCLE_alertes_rubriques(RUBRIQUES){tout}{id_rubrique IN #CONFIG{config_alertes/rubriques}|to_array}>
    34                 [(#COMPTEUR_BOUCLE|alterner{'<tr>','','','',''})]
    35                 <td>
    36                         <input type="checkbox" class="checkbox" name="rubriques[]" id="rubrique-#ID_RUBRIQUE" value="#ID_RUBRIQUE"[ (#ENV{rubriques}|find{#ID_RUBRIQUE}|oui)checked="checked"]/>
    37                         <label for="rubrique-#ID_RUBRIQUE">#TITRE</label>
    38                 </td>
    39                 [(#COMPTEUR_BOUCLE|alterner{'','','','','</tr>'})]
    40                 </BOUCLE_alertes_rubriques>
    41                 [(#TOTAL_BOUCLE|modulo{5}|=={0}|?{'','</tr>'})]
    42                 </table>
     56                <li class="fieldset">
     57                        <fieldset>
     58                                <h3 class="legend"><:alertes:abo_topics:></h3>
     59                                <ul>
     60                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{rubriques}}
     61                                        <li class="editer_rubriques[ (#GET{erreurs}|oui)erreur]">
     62                                        <BOUCLE_alertes_rubriques(RUBRIQUES){tout}{id_rubrique IN #CONFIG{config_alertes/rubriques}|to_array}>
     63                                                [(#REM) Accès restreint, on propose la rubrique que si elle est dans celles auquelles a accès l'auteur]
     64                                                <BOUCLE_si_acces_restreint_rub(CONDITION){si #PLUGIN{accesrestreint}}>
     65                                                        <BOUCLE_si_restreint1(CONDITION){si #GET{rubriques_restreintes}|find{#ID_RUBRIQUE}|oui}>       
     66                                                        <div class="choix">
     67                                                                <input type="checkbox" class="checkbox" name="rubriques[]" id="rubrique-#ID_RUBRIQUE" value="#ID_RUBRIQUE"[ (#ENV{rubriques}|find{#ID_RUBRIQUE}|oui)checked="checked"]/>
     68                                                                <label for="rubrique-#ID_RUBRIQUE">#TITRE</label>
     69                                                        </div>                                                         
     70                                                        </BOUCLE_si_restreint1>                                         
     71                                                </BOUCLE_si_acces_restreint_rub>
     72                                                [(#REM) Pas d'accès restreint, on propose la rubrique]
     73                                                <div class="choix">
     74                                                        <input type="checkbox" class="checkbox" name="rubriques[]" id="rubrique-#ID_RUBRIQUE" value="#ID_RUBRIQUE"[ (#ENV{rubriques}|find{#ID_RUBRIQUE}|oui)checked="checked"]/>
     75                                                        <label for="rubrique-#ID_RUBRIQUE">#TITRE</label>
     76                                                </div>
     77                                                <//B_si_acces_restreint_rub>
     78                                        </BOUCLE_alertes_rubriques>
     79                                        </li>
     80                                </ul>
     81                        </fieldset>
     82                </li>
    4383                </B_alertes_rubriques>
    4484               
    45                 <B_alertes_secteurs>
    46                 <h3><:alertes:abo_sectors:></h3>
    47                 <table class="fields-cols">             
    48                 <BOUCLE_alertes_secteurs(RUBRIQUES){tout}{racine}{id_secteur IN #CONFIG{config_alertes/secteurs}|to_array}>
    49                 [(#COMPTEUR_BOUCLE|alterner{'<tr>','','','',''})]
    50                 <td>
    51                         <input type="checkbox" class="checkbox" name="secteurs[]" id="secteur-#ID_RUBRIQUE" value="#ID_RUBRIQUE"[ (#ENV{secteurs}|find{#ID_RUBRIQUE}|oui)checked="checked"]/>
    52                         <label for="secteur-#ID_RUBRIQUE">#TITRE</label>
    53                 </td>
    54                 [(#COMPTEUR_BOUCLE|alterner{'','','','','</tr>'})]
    55                 </BOUCLE_alertes_secteurs>
    56                 [(#TOTAL_BOUCLE|modulo{5}|=={0}|?{'','</tr>'})]
    57                 </table>
    58                 </B_alertes_secteurs>
     85                [(#REM) Abonnements aux mots-clès, par groupes de mots autorisés]
     86                <B_groupes_mots>
     87                        <li><h3 class="legend"><:alertes:abo_keywords:></h3></li>
     88                        <BOUCLE_groupes_mots(GROUPES_MOTS){tout}{id_groupe IN #CONFIG{config_alertes/groupes}|to_array}>
     89                        <B_mots>
     90                        <li class="fieldset">
     91                                <fieldset>
     92                                        <h4 class="legend">#TITRE</h4>
     93                                        <ul>
     94                                                #SET{erreurs,#ENV**{erreurs}|table_valeur{mots}}
     95                                                <li class="editer_mots[ (#GET{erreurs}|oui)erreur]">
     96                                                        <BOUCLE_mots(MOTS){tout}{id_groupe}>
     97                                                        <div class="choix">
     98                                                                <input type="checkbox" class="checkbox" name="mots[]" id="mot-#ID_MOT" value="#ID_MOT"[ (#ENV{mots}|find{#ID_MOT}|oui)checked="checked"]/>
     99                                                                <label for="mot-#ID_MOT">#TITRE</label>
     100                                                        </div>
     101                                                        </BOUCLE_mots>
     102                                                </li>
     103                                        </ul>
     104                                </fieldset>
     105                        </li>
     106                        </B_mots>                       
     107                        </BOUCLE_groupes_mots>
     108                </B_groupes_mots>
    59109               
     110                [(#REM) Abonnements aux auteurs]
    60111                <B_alertes_auteurs>
    61                 <h3><:alertes:abo_authors:></h3>
    62                 <table class="fields-cols">             
    63                 <BOUCLE_alertes_auteurs(AUTEURS){tout}{id_auteur IN #CONFIG{config_alertes/auteurs}|to_array}>
    64                 [(#COMPTEUR_BOUCLE|alterner{'<tr>','','','',''})]
    65                 <td>
    66                         <input type="checkbox" class="checkbox" name="auteurs[]" id="auteur-#ID_AUTEUR" value="#ID_AUTEUR"[ (#ENV{auteurs}|find{#ID_AUTEUR}|oui)checked="checked"]/>
    67                         <label for="auteur-#ID_AUTEUR">[(#NOM|sinon{#LOGIN})]</label>
    68                 </td>
    69                 [(#COMPTEUR_BOUCLE|alterner{'','','','','</tr>'})]
    70                 </BOUCLE_alertes_auteurs>
    71                 [(#TOTAL_BOUCLE|modulo{5}|=={0}|?{'','</tr>'})]
    72                 </table>
     112                <li class="fieldset">
     113                        <fieldset>
     114                                <h3 class="legend"><:alertes:abo_authors:></h3>
     115                                <ul>
     116                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{auteurs}}
     117                                        <li class="editer_auteurs">
     118                                                <BOUCLE_alertes_auteurs(AUTEURS){tout}{id_auteur IN #CONFIG{config_alertes/auteurs}|to_array}>
     119                                                <div class="choix">
     120                                                        <input type="checkbox" class="checkbox" name="auteurs[]" id="auteur-#ID_AUTEUR" value="#ID_AUTEUR"[ (#ENV{auteurs}|find{#ID_AUTEUR}|oui)checked="checked"]/>
     121                                                        <label for="auteur-#ID_AUTEUR">[(#NOM|sinon{#LOGIN})]</label>
     122                                                </div>
     123                                                </BOUCLE_alertes_auteurs>
     124                                        </li>
     125                                </ul>
     126                        </fieldset>
     127                </li>
    73128                </B_alertes_auteurs>
    74129               
     130                </ul>
    75131                <p class="boutons"><input type="submit" name="submit" class="submit" value="<:pass_ok:>" /></p>
    76132                </div>
  • _plugins_/alertes/trunk/formulaires/configurer_alertes.html

    r81197 r81373  
    99                <div>
    1010                        #ACTION_FORMULAIRE{#ENV{action}}
    11                         <ul>
    12                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{activer_alertes}}
    13                                 <li class="editer_activer_alertes obligatoire[ (#GET{erreurs}|oui)erreur]">
    14                                         <h3 class="label"><:alertes:alerts_activation:></h3>
    15                                         <div class="choix">
    16                                                 <input type='radio' class="radio" name='activer_alertes' value='non' id='activer_alertes_non'[ (#ENV{activer_alertes}|!={oui}|oui)checked="checked"] />
    17                                                 <label for='activer_alertes_non'><:alertes:no:></label>
    18                                         </div>
    19                                         <div class="choix">
    20                                                 <input type='radio' class="radio" name='activer_alertes' value='oui' id='activer_alertes_oui'[ (#ENV{activer_alertes}|=={oui}|oui)checked="checked"] />
    21                                                 <label for='activer_alertes_oui'><:alertes:yes:></label>
    22                                         </div>                                 
    23                                 </li>
    24                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{mode_envoi}}
    25                                 <li class="editer_mode_envoi obligatoire[ (#GET{erreurs}|oui)erreur]">
    26                                         <h3 class="label"><:alertes:sending_method:></h3>
    27                                         <div class="choix">
    28                                                 <input type='radio' class="radio" name='mode_envoi' value='direct' id='mode_envoi_direct'[ (#ENV{mode_envoi}|!={cron}|oui)checked="checked"] />
    29                                                 <label for='mode_envoi_direct'><:alertes:send_directly:></label><span><:alertes:except_post_dated:></span>
    30                                         </div>
    31                                         <div class="choix">
    32                                                 <input type='radio' class="radio" name='mode_envoi' value='cron' id='mode_envoi_cron'[ (#ENV{mode_envoi}|=={cron}|oui)checked="checked"] />
    33                                                 <label for='mode_envoi_cron'><:alertes:send_by_cron:></label>
    34                                         </div>                                 
    35                                 </li>
    36                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{intervalle_cron}}
    37                                 <li class="editer_intervalle_cron obligatoire[ (#GET{erreurs}|oui)erreur]">
    38                                         <label for="intervalle_cron"><:alertes:intervalle_cron:></label>
    39                                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    40                                         <input type='text' name='intervalle_cron' id='intervalle_cron' value="#ENV{intervalle_cron}" />                         
    41                                 </li>   
    42                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{nb_mails}}
    43                                 <li class="editer_nb_mails obligatoire[ (#GET{erreurs}|oui)erreur]">
    44                                         <label for="nb_mails"><:alertes:nb_mails:></label>
    45                                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    46                                         <input type='text' name='nb_mails' id='nb_mails' value="#ENV{nb_mails}" />                             
    47                                 </li>                                   
    48                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{groupes}}
    49                                 <li class="editer_groupes[ (#GET{erreurs}|oui)erreur]">
    50                                         <label for="groupes"><:alertes:id_keyword_groups:> <:alertes:separated_by_comma:></label>
    51                                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    52                                         <input type='text' name='groupes' id='groupes' value="#ENV{groupes}" />
    53                                 </li>
    54                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{secteurs}}
    55                                 <li class="editer_secteurs[ (#GET{erreurs}|oui)erreur]">
    56                                         <label for="secteurs"><:alertes:id_sectors:> <:alertes:separated_by_comma:></label>
    57                                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    58                                         <input type='text' name='secteurs' id='secteurs' value="#ENV{secteurs}" />
    59                                 </li>
    60                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{rubriques}}
    61                                 <li class="editer_rubriques[ (#GET{erreurs}|oui)erreur]">
    62                                         <label for="rubriques"><:alertes:id_topics:> <:alertes:separated_by_comma:></label>
    63                                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    64                                         <input type='text' name='rubriques' id='rubriques' value="#ENV{rubriques}" />
    65                                 </li>
    66                                 #SET{erreurs,#ENV**{erreurs}|table_valeur{auteurs}}
    67                                 <li class="editer_auteurs[ (#GET{erreurs}|oui)erreur]">
    68                                         <label for="auteurs"><:alertes:id_authors:> <:alertes:separated_by_comma:></label>
    69                                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    70                                         <input type='text' name='auteurs' id='auteurs' value="#ENV{auteurs}" />
    71                                 </li>
    72                         </ul>
     11                        <fieldset>
     12                                <legend><:alertes:global_configuration:></legend>
     13                                <ul>
     14                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{activer_alertes}}
     15                                        <li class="editer_activer_alertes obligatoire[ (#GET{erreurs}|oui)erreur]">
     16                                                <h3 class="label"><:alertes:alerts_activation:></h3>
     17                                                <div class="choix">
     18                                                        <input type='radio' class="radio" name='activer_alertes' value='non' id='activer_alertes_non'[ (#ENV{activer_alertes}|!={oui}|oui)checked="checked"] />
     19                                                        <label for='activer_alertes_non'><:alertes:no:></label>
     20                                                </div>
     21                                                <div class="choix">
     22                                                        <input type='radio' class="radio" name='activer_alertes' value='oui' id='activer_alertes_oui'[ (#ENV{activer_alertes}|=={oui}|oui)checked="checked"] />
     23                                                        <label for='activer_alertes_oui'><:alertes:yes:></label>
     24                                                </div>                                 
     25                                        </li>
     26                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{mode_envoi}}
     27                                        <li class="editer_mode_envoi obligatoire[ (#GET{erreurs}|oui)erreur]">
     28                                                <h3 class="label"><:alertes:sending_method:></h3>
     29                                                <div class="choix">
     30                                                        <input type='radio' class="radio" name='mode_envoi' value='direct' id='mode_envoi_direct'[ (#ENV{mode_envoi}|!={cron}|oui)checked="checked"] />
     31                                                        <label for='mode_envoi_direct'><:alertes:send_directly:></label><span><:alertes:except_post_dated:></span>
     32                                                </div>
     33                                                <div class="choix">
     34                                                        <input type='radio' class="radio" name='mode_envoi' value='cron' id='mode_envoi_cron'[ (#ENV{mode_envoi}|=={cron}|oui)checked="checked"] />
     35                                                        <label for='mode_envoi_cron'><:alertes:send_by_cron:></label>
     36                                                </div>                                 
     37                                        </li>
     38                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{intervalle_cron}}
     39                                        <li class="editer_intervalle_cron obligatoire[ (#GET{erreurs}|oui)erreur]">
     40                                                <label for="intervalle_cron"><:alertes:intervalle_cron:></label>
     41                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     42                                                <input type='text' name='intervalle_cron' id='intervalle_cron' value="#ENV{intervalle_cron}" />                         
     43                                        </li>   
     44                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{nb_mails}}
     45                                        <li class="editer_nb_mails obligatoire[ (#GET{erreurs}|oui)erreur]">
     46                                                <label for="nb_mails"><:alertes:nb_mails:></label>
     47                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     48                                                <input type='text' name='nb_mails' id='nb_mails' value="#ENV{nb_mails}" />                             
     49                                        </li>
     50                                </ul>
     51                        </fieldset>
     52                        <fieldset>
     53                                <legend><:alertes:possible_subscription:></legend>
     54                                <ul>
     55                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{secteurs}}
     56                                        <li class="editer_secteurs[ (#GET{erreurs}|oui)erreur]">
     57                                                <label for="secteurs"><:alertes:id_sectors:> <:alertes:separated_by_comma:></label>
     58                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     59                                                <input type='text' name='secteurs' id='secteurs' value="#ENV{secteurs}" />
     60                                        </li>           
     61                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{rubriques}}
     62                                        <li class="editer_rubriques[ (#GET{erreurs}|oui)erreur]">
     63                                                <label for="rubriques"><:alertes:id_topics:> <:alertes:separated_by_comma:></label>
     64                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     65                                                <input type='text' name='rubriques' id='rubriques' value="#ENV{rubriques}" />
     66                                        </li>                           
     67                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{groupes}}
     68                                        <li class="editer_groupes[ (#GET{erreurs}|oui)erreur]">
     69                                                <label for="groupes"><:alertes:id_keyword_groups:> <:alertes:separated_by_comma:></label>
     70                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     71                                                <input type='text' name='groupes' id='groupes' value="#ENV{groupes}" />
     72                                        </li>
     73                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{auteurs}}
     74                                        <li class="editer_auteurs[ (#GET{erreurs}|oui)erreur]">
     75                                                <label for="auteurs"><:alertes:id_authors:> <:alertes:separated_by_comma:></label>
     76                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     77                                                <input type='text' name='auteurs' id='auteurs' value="#ENV{auteurs}" />
     78                                        </li>
     79                                </ul>
     80                        </fieldset>
    7381                        <p class="boutons"><input type="submit" class="submit" value="<:pass_ok:>" /></p>
    7482                </div>
  • _plugins_/alertes/trunk/genie/alertes.php

    r81197 r81373  
    1010
    1111function genie_alertes_dist($time) {
     12        spip_log('Lacement du cron', 'alertes'._LOG_ERREUR);
    1213        include_spip('base/abstract_sql');
    1314        $now = date('Y-m-d H:i:s');
    1415        //Récupération de la configuration
    1516        $a = @unserialize($GLOBALS['meta']['config_alertes']);
     17        //Est-ce que Accès restreint est activé ?
     18        $plugins = @unserialize($GLOBALS['meta']['plugin']);
     19        if(is_array($plugins['ACCESRESTREINT'])){
     20                $acces_restreint = true;
     21        }else{
     22                $acces_restreint = false;
     23        }
    1624        $limit = "0, ".intval($a['nb_mails']);
    1725        $nb_max = sql_countsel("id_alerte_cron", "spip_alertes_cron","date_pour_envoi <= '".$now."'"); //Nombres total d'alerte à traité, donc de mail à envoyer.
     
    1927        if($nb_max > intval($a['nb_mails'])){
    2028                $time = - intval($a['nb_mails']); //Si j'ai bien compris, temps en seconde avant de relancer la tâche non-terminée.
     29                spip_log('Le temps sera fixe a '.$time, 'alertes'._LOG_ERREUR);
    2130        }
    2231        //Parcours des alertes demandées, qui ne doivent pas être dans le futur
     
    2433                include_spip('classes/facteur'); //dépendance Facteur
    2534                $envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
     35                spip_log('Il y a des resultats', 'alertes'._LOG_ERREUR);
    2636                //Envoi des emails d'alertes
    2737                while ($res = sql_fetch($resultats)) {
    2838                        $id_article = $res['id_objet']; //Pour l'instant ça ne gère que les articles
    2939                        $id_auteur = $res['id_auteur'];
     40                        $article_accessible = true;
     41                        spip_log('Pour '.$id_article.' on a auteur '.$id_auteur.' qui est abo', 'alertes'._LOG_ERREUR);
    3042                        //On récupere l'email de l'auteur concerné
    3143                        if($auteur = sql_select('id_auteur,email','spip_auteurs','id_auteur = '.intval($id_auteur)) ){
     44                                spip_log('Il y a des abonnes : '.$id_auteur, 'alertes'._LOG_ERREUR);
    3245                                while ($aut = sql_fetch($auteur)) {
    3346                                        //Evidemment, il faut l'email du membre.
     
    3851                                                $statut = $art['statut'];
    3952                                        }
    40                                         if( ($email)&&($statut == 'publie') ){
     53                                        //Si accès restreint : vérifions que l'article n'est pas dans une zone limité pour l'auteur;
     54                                        if($acces_restreint == true){   
     55                                                $article_accessible = false; //On repasse à false par défaut
     56                                                spip_log('Il y a acces restreint', 'alertes'._LOG_ERREUR);
     57                                                //Recuperation des zones de l'auteur
     58                                                if($zones = sql_select("id_zone", "spip_zones_liens", "id_objet = ".intval($id_auteur)." AND objet='auteur'")){
     59                                                        while($z = sql_fetch($zones)){
     60                                                                //Pour chacunes des zones de l'auteur, on regarde si l'article n'est pas dans une des rubriques restreinte
     61                                                                if($restrict = sql_select("*","spip_articles AS art, spip_zones_liens AS zo","id_zone = ".$z['id_zone']." AND zo.objet='rubrique' AND art.id_article = ".intval($id_article)." AND art.id_rubrique = zo.id_objet")){
     62                                                                        while($r = sql_fetch($restrict)){
     63                                                                                $article_accessible = true; //Dès qu'on a une zone accessible, on passe à true
     64                                                                                spip_log('mais on est dans une zone accessible pour '.$id_article, 'alertes'._LOG_ERREUR);
     65                                                                        }
     66                                                                }
     67                                                        }
     68                                                }
     69                                        }
     70                                        if( ($email)&&($statut == 'publie')&&($article_accessible == true) ){
     71                                                spip_log('On build le mail pour '.$id_article, 'alertes'._LOG_ERREUR);
    4172                                                //On build le mail à partir de templates
    4273                                                $header_email = recuperer_fond("alertes/header-email-alerte",  array('id_article' => $id_article,'id_auteur' => $id_auteur));
     
    4677                                                //On n'envoie que si on a un contenu (présumé dans le corps du mail)
    4778                                                if($corps_email){
     79                                                        spip_log('On prepare l\'envoi', 'alertes'._LOG_ERREUR);
    4880                                                        //Envoi email via Facteur
    4981                                                        $html = $header_email.$corps_email.$footer_email;
     
    5688                                                                //Email envoyé, on retire l'alerte-cron et on log.
    5789                                                                $del = sql_delete('spip_alertes_cron', 'id_alerte_cron = ' . intval($res['id_alerte_cron']));
    58                                                                 spip_log('Email correctement envoyer a '.$email, 'alertes'._LOG_INFO);
     90                                                                spip_log('Email correctement envoyer a '.$email, 'alertes'._LOG_ERREUR);
    5991                                                        }else{
    6092                                                                //Email non envoyé. On log.
    6193                                                                spip_log('Echec de l\'envoie d\'email a '.$email, 'alertes'._LOG_ERREUR);
    6294                                                        }
     95                                                }else{
     96                                                        spip_log('On n\'a pas de contenu pour '.$id_article, 'alertes'._LOG_ERREUR);
    6397                                                }
    6498                                        }else{
    65                                                 //Auteur sans email ou article non-publié/inexistant
     99                                                spip_log('Pas d\'email pour '.$id_auteur.' ou'.$id_article.'non publie ou article inaccessible', 'alertes'._LOG_ERREUR);
     100                                                //Auteur sans email ou article non-publié/inexistant/restreint
    66101                                                if($statut != 'publie'){
    67102                                                        //Article non publie, l'alerte n'a pas lieu d'être nulle part
  • _plugins_/alertes/trunk/lang/alertes_fr.php

    r81236 r81373  
    1818        // G
    1919        'generic_error' => 'Une erreur est pr&eacute;sente dans votre saisie',
     20        'global_configuration' => 'Configuration des m&eacute;canismes d\'alertes',
    2021        // I
    2122        'intervalle_cron' => 'Intervalle de passage du pseudo-CRON SPIP (en minutes)',
     
    2829        'nb_mails' => 'Nombre d\'emails d\'alertes envoy&eacute;es en un lot (CRON uniquement)',
    2930        'news_on' => 'Nouveauté sur @nom_site_spip@ :',
     31        //P
     32        'possible_subscription' => 'Configuration des abonnements disponibles',
    3033        // R
    3134        'remove' => 'Retirer',
  • _plugins_/alertes/trunk/paquet.xml

    r81236 r81373  
    22        prefix="alertes"
    33        categorie="communication"
    4         version="1.0.11"
     4        version="1.1.0"
    55        schema="1.0.1" 
    66        etat="test"
    77        compatibilite="[3.0.0 ;3.0.*]"
    88        logo="prive/themes/spip/images/alertes-128.png"
     9        documentation="http://www.kokmoka.com/plugins-spip-alertes/"
    910>
    1011        <nom>Alertes</nom>
  • _plugins_/alertes/trunk/todo.txt

    r81197 r81373  
    1 Plugin Alertes : A faire au 05/03/2014
     1Plugin Alertes : A faire au 13/03/2014
    22
    33- Rendre plus "sexy" les formulaires de configurations, de choix d'abonnements et les exemples d'email envoyé.
     
    55- Tester les cas extrèmes et la charge.
    66- Voir s'il est possible d'appliquer le système à d'autres objets éditoriaux : les brèves par exemple.
    7 - Rédiger la documentation.
Note: See TracChangeset for help on using the changeset viewer.