structure branches / trunk

activite_editoriale1
maieul@maieul.net 12 years ago
commit 05d6bfd2fd

15
.gitattributes vendored

@ -0,0 +1,15 @@
* text=auto !eol
/activite_editoriale.png -text
/activite_editoriale_fonctions.php -text
/activite_editoriale_pipelines.php -text
base/activite_editoriale.php -text
base/activite_editoriale_install.php -text
fonds/articles_notag.html -text
fonds/cfg_activite_editoriale.html -text
genie/activite_editoriale_alerte.php -text
inclure/maj_branche.html -text
inclure/maj_rubrique.html -text
lang/activite_editoriale_fr.php -text
/plugin.xml -text
prive/exec/activite_editoriale.html -text
prive/exec/activite_editoriale_rubrique.html -text

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,11 @@
<?php
function age_rubrique($date_str) {
/*
$date = new DateTime();
$age = $date->diff(new DateTime($date_str));
return $age->d;
*/
return intval((time() - strtotime($date_str)) / (60 * 60 * 24));
}
?>

@ -0,0 +1,6 @@
<?php
function activite_editoriale_taches_generales_cron($taches_generales) {
$taches_generales['activite_editoriale_alerte'] = 24*3600; // tous les jours
return $taches_generales;
}

@ -0,0 +1,28 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
function activite_editoriale_declarer_champs_extras($champs = array()){
$champs[] = new ChampExtra(array(
'table' => 'rubriques', // sur quelle table ?
'champ' => 'extras_delai', // nom sql
'label' => 'activite_editoriale:delai', // chaine de langue 'mon_plug:mon_label'
'precisions' => 'activite_editoriale:delai_precisions', // precisions sur le champ
'obligatoire' => false, // 'true', 'false' ou ''
'rechercher' => false, // 'false', 'true' ou directement la valeur de ponderation (de 1 a 8 generalement)
'type' => 'ligne', // type de saisie
'sql' => "tinytext NOT NULL DEFAULT ''", // declaration sql
));
$champs[] = new ChampExtra(array(
'table' => 'rubriques', // sur quelle table ?
'champ' => 'extras_identifiants', // nom sql
'label' => 'activite_editoriale:identifiants', // chaine de langue 'mon_plug:mon_label'
'precisions' => 'activite_editoriale:identifiants_precisions', // precisions sur le champ
'obligatoire' => false, // 'true', 'false' ou ''
'rechercher' => false, // 'false', 'true' ou directement la valeur de ponderation (de 1 a 8 generalement)
'type' => 'ligne', // type de saisie
'sql' => "tinytext NOT NULL DEFAULT ''", // declaration sql
));
return $champs;
}
?>

@ -0,0 +1,16 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/cextras_gerer');
include_spip('base/activite_editoriale');
function activite_editoriale_upgrade($nom_meta_base_version,$version_cible){
$champs = activite_editoriale_declarer_champs_extras();
installer_champs_extras($champs, $nom_meta_base_version, $version_cible);
}
function activite_editoriale_vider_tables($nom_meta_base_version) {
$champs = activite_editoriale_declarer_champs_extras();
desinstaller_champs_extras($champs, $nom_meta_base_version);
}
?>

@ -0,0 +1,23 @@
<B_row>
<table>
<thead>
<tr>
<th><:activite_editoriale:id_article:></th>
<th><:activite_editoriale:titre_article:></th>
<th><:activite_editoriale:redacteurs:></th>
<th><:activite_editoriale:date:></th>
</tr>
</thead>
<tbody>
<BOUCLE_row(POUR){tableau #ENV{liste}}>
<tr>
<BOUCLE_col(POUR){tableau #VALEUR}>
<td>#VALEUR</td>
</BOUCLE_col>
</tr>
</BOUCLE_row>
</tbody>
</table>
</B_row>

@ -0,0 +1,20 @@
<div class="formulaire_spip">
<!-- titre=<:activite_editoriale:cfg:> -->
<form action="#SELF" method="post">
[<div>(#ENV{_cfg_}|form_hidden)</div>]
<ul>
<li>
<label for="champ"><:activite_editoriale:cfg_champ:></label>
<select name="champ" id="champ">
<option value="maj_rubrique" [(#ENV{champ}|=={maj_rubrique}|oui) selected="selected"]><:activite_editoriale:cfg_maj_rubrique:></option>
<option value="date_modif_branche" [(#ENV{champ}|=={date_modif_branche}|oui) selected="selected"]><:activite_editoriale:cfg_date_modif_branche:></option>
<option value="date_modif_rubrique" [(#ENV{champ}|=={date_modif_rubrique}|oui) selected="selected"]><:activite_editoriale:cfg_date_modif_rubrique:></option>
</select>
</li>
<p class="boutons">
<input type="submit" name="_cfg_ok" value="<:OK:>" />
</p>
</form>
</div>

@ -0,0 +1,106 @@
<?php
function genie_activite_editoriale_alerte_dist() {
if (function_exists('lire_config')){
$config_champ = lire_config('activite_editoriale/champ','maj_rubrique');
}
switch ($config_champ){
case 'maj_rubrique':
activite_tester_maj_rubrique();
break;
case 'date_modif_branche':
activite_tester_date_modif_branche();
break;
case 'date_modif_rubrique':
activite_tester_date_modif_rubrique();
break;
}
return 0;
}
function activite_tester_maj_rubrique(){
if ($rubLists = sql_select("*", "spip_rubriques", "`extras_delai` != '' and TO_DAYS(NOW()) - TO_DAYS(maj) >= `extras_delai`")) {
while($list = sql_fetch($rubLists)) {
activite_editoriale_envoyer_mail($list);
}
}
}
function activite_tester_date_modif_branche(){
if ($rubLists = sql_select(array('id_rubrique','extras_delai','extras_identifiants','titre'), "spip_rubriques", "`extras_delai` != ''")){
include_spip('inc/utils');
while($list = sql_fetch($rubLists)){
$date_modif = trim(recuperer_fond('inclure/maj_rubrique',array('id_rubrique'=>$list['id_rubrique'])));
if (age_rubrique($date_modif)>$list['extras_delai']){
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list);
//echo "s;";
}
}
}
}
function activite_tester_date_modif_rubrique(){
if ($rubLists = sql_select(array('id_rubrique','extras_delai','extras_identifiants','titre'), "spip_rubriques", "`extras_delai` != ''")){
include_spip('inc/utils');
while($list = sql_fetch($rubLists)){
$date_modif = trim(recuperer_fond('inclure/maj_rubrique',array('id_rubrique'=>$list['id_rubrique'])));
if (age_rubrique($date_modif)>$list['extras_delai']){
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list);
}
}
}
}
function activite_editoriale_envoyer_mail($list){
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
$subject = _T('activite_editoriale:rubrique_doit_maj');
include_spip('activite_editoriale_fonctions');
$url = $GLOBALS['meta']['adresse_site'].'/ecrire/?exec=naviguer&id_rubrique='.$list['id_rubrique'];
$body = _T('activite_editoriale:rubrique_pas_maj',array('titre'=>$list['titre'],'jours'=>age_rubrique($list['maj'])))."\n\n";
$body = $body._T('activite_editoriale:gestionnaire')."\n\n";
$body = $body.$url;
if ($auteurLists = sql_select("*", "spip_auteurs", "id_auteur in (".$list['extras_identifiants'].")")) {
while($auteurs = sql_fetch($auteurLists)) {
var_dump($auteurs);
$to = $auteurs['email'];
if ($envoyer_mail($to, $subject, $body)) {
spip_log("Message envoyé à".$to, "activite_editoriale");
} else {
spip_log("Message n'a pu être envoyé à ".$to, "activite_editoriale");
}
}
}
$to = '';
foreach (explode(',',activite_editoriale_emails($list['extras_identifiants'])) as $to){
if ($to!=''){
if ($envoyer_mail($to, $subject, $body)) {
spip_log("Message envoyé à".$to, "activite_editoriale");
} else {
spip_log("Message n'a pu être envoyé à ".$to, "activite_editoriale");
}
}
}
}
function activite_editoriale_emails($champ){
$champ = ','.str_replace(' ','',$champ).',';
$champ = preg_replace('#,[0-9]*,#',',',$champ);
return $champ;
}
?>

@ -0,0 +1,3 @@
<BOUCLE_articles(ARTICLES){branche}{tout}{!par date_modif}{0,1}>#SET{article,#DATE_MODIF}</BOUCLE_articles>
<BOUCLE_breves(BREVES){branche}{tout}{!par maj}{0,1}>#SET{breves,#MAJ}</BOUCLE_breves>
[(#GET{article}|max{#GET{breves}})]

@ -0,0 +1,3 @@
<BOUCLE_articles(ARTICLES){id_rubrique}{tout}{!par date_modif}{0,1}>#SET{article,#DATE_MODIF}</BOUCLE_articles>
<BOUCLE_breves(BREVES){id_rubrique}{tout}{!par maj}{0,1}>#SET{breves,#MAJ}</BOUCLE_breves>
[(#GET{article}|max{#GET{breves}})]

@ -0,0 +1,76 @@
<?php
$GLOBALS[$GLOBALS['idx_lang']] = array(
//A
'activite_editoriale' =>'Activité éditoriale',
'activite_editoriale_statistiques' => 'Activité éditoriales: statistiques de publication',
'au' => ' au ',
'apartirde' => 'À partir du ',
'activer_stats' => 'Activer les stats des rubriques',
'activer_mots_cles' => 'Liste des articles sans mots-clés',
'activer_stat_oui' => 'Oui',
'activer_stat_non' => 'Non',
//D
'delai' => 'D&eacute;lai',
'delai_precisions' => '(en nombre de jours)',
'derniere_maj' => 'Dernière MàJ',
'du' => 'Du ',
'detail_mots_cles' => 'Articles sans mot-clé',
'date' => 'Date',
//E
'editer' => 'Éditer l\'article',
//G
'gestionnaire' => 'Vous êtes identifié comme un gestionnaire de la rubrique',
//I
'identifiants' => 'Identifiants ou email des auteurs &agrave; alerter',
'identifiants_precisions' => '(s&eacute;par&eacute;s par des ",")',
'icone_statistics' => 'Voir les statistiques de la rubrique',
'icone_mots_cles' => 'Voir le détail',
'id_article' => 'ID de l\'article',
//J
'jours' => 'jour(s)',
'jusqua' => 'Jusqu\'au',
//N
'nb_art_secteur' => 'Nb d\'articles publiés dans le secteur',
'nb_art_branche' => 'Nb d\'articles publiés dans la branche',
'nb_art_total' => 'Nb d\'articles publiés total',
'nb_total_notag' => 'Nb d\'articles publiés sans mot-clé',
'nb_articles' => 'Nombre d\'articles',
'nb_rubriques' => 'Nombre de rubriques',
'nb_total_articles' => 'Nombre total d\'article',
'nb_total_rubriques' => 'Nombre total de rubriques',
//P
'periode' => 'Période',
//R
'responsables' => 'Responsables',
'rubriques_a_suivre' => 'Rubriques à suivre',
'rubrique_doit_maj' => 'Une rubrique doit être mise a jour',
'rubrique_pas_maj' => 'Attention, la rubrique “ @titre@ ” n\'a pas été mise à jour depuis @jours@ jours',
'rubriques_pas_a_jour' => 'Rubriques n\'ayant pas été mises à jour à temps',
'redacteurs' => 'Rédacteurs',
'rubrique' => 'RUBRIQUE: ',
//S
'secteur' => 'Secteur:',
//T
'top_auteurs' => 'Top des auteurs',
'toutelaperiode' => 'Toute la période',
'titre_article' => 'Titre de l\'article',
//CFG
'cfg' => 'Configurer le plugin Activité éditoriale',
'cfg_champ' => 'Quel est le champ analysé pour savoir la MAJ ?',
'cfg_maj_rubrique' => 'Le champ MAJ de la rubrique',
'cfg_date_modif_branche' => 'Le champ DATE_MODIF des articles (breves) de la branche',
'cfg_date_modif_rubrique' => 'Le champ DATE_MODIF des articles (breves) de la rubrique'
);

@ -0,0 +1,82 @@
<plugin>
<nom>Activit&#233; &#233;ditoriale</nom>
<slogan>Un site, c'est bien ! Un site &#224; jour, c'est mieux !</slogan>
<auteur>[St&#233;phanie Caron de Clever Age->http://www.clever-age.com/], [Ma&#239;eul ROUQUETTE (am&#233;lioration)->http://www.maieul.net]</auteur>
<licence>GNU/GPL</licence>
<version>1.0.0</version>
<version_base>0.1</version_base>
<description>Ce plugin a pour objectif de compl&#233;ter les fonctionnalit&#233;s de suivi de l'activit&#233; &#233;ditoriale de SPIP.
Sont d&#233;j&#224; propos&#233;s :
-* l'ajout de deux champs aux rubriques pour indiquer un d&#233;lai en jour au del&#224; duquel elle doivent &#234;tre aliment&#233;es, ainsi que les personnes &#224; pr&#233;venir
-* des alertes par e-mail selon ces deux param&#232;tres
-* un tableau de bord pr&#233;sentant les m&#234;mes informations
</description>
<lien>http://www.spip-contrib.net/Activite-editoriale</lien>
<etat>stable</etat>
<icon>activite_editoriale.png</icon>
<prefix>activite_editoriale</prefix>
<install>base/activite_editoriale_install.php</install>
<pipeline>
<nom>declarer_champs_extras</nom>
<inclure>base/activite_editoriale.php</inclure>
</pipeline>
<pipeline>
<nom>taches_generales_cron</nom>
<inclure>activite_editoriale_pipelines.php</inclure>
</pipeline>
<fonctions>activite_editoriale_fonctions.php</fonctions>
<bouton id='activite_editoriale' parent='naviguer'>
<titre>activite_editoriale:activite_editoriale</titre>
<icone>activite_editoriale.png</icone>
</bouton>
<bouton id='activite_editoriale2' parent='bando_publication'>
<titre>activite_editoriale:activite_editoriale</titre>
<icone>activite_editoriale.png</icone>
<url>activite_editoriale</url>
</bouton>
<categorie>edition</categorie>
<necessite id="SPIP" version='[2.0.0;2.1.99]' />
<necessite id="cextras" version="[1.0.0;]" />
<necessite id='spip_bonux' version='[1.9.1;]' />
<necessite id='cfg' version='[1.9.1;]' />
</plugin>
<plugin spip='[3.0.0-dev;3.0.99]'>
<nom>Activit&#233; &#233;ditoriale</nom>
<slogan>Un site, c'est bien ! Un site &#224; jour, c'est mieux !</slogan>
<auteur>[St&#233;phanie Caron de Clever Age->http://www.clever-age.com/], [Maïeul ROUQUETTE (am&#233;lioration)->http://www.maieul.net]</auteur>
<licence>GNU/GPL</licence>
<version>1.0.0</version>
<version_base>0.1</version_base>
<description>Ce plugin a pour objectif de compl&#233;ter les fonctionnalit&#233;s de suivi de l'activit&#233; &#233;ditoriale de SPIP.
Sont d&#233;j&#224; propos&#233;s :
-* l'ajout de deux champs aux rubriques pour indiquer un d&#233;lai en jour au dela duquel elle doivent &#234;tre aliment&#233;es, ainsi que les personnes &#224; pr&#233;venir
-* des alertes par e-mail selon ces deux param&#232;tres
-* un tableau de bord pr&#233;sentant les m&#234;mes informations
</description>
<lien>http://www.spip-contrib.net/Activite-editoriale</lien>
<etat>stable</etat>
<bouton id='activite_editoriale' parent='bando_publication'>
<titre>activite_editoriale:activite_editoriale</titre>
<icone>images/16.png</icone>
<url>activite_editoriale</url>
</bouton>
<icon>activite_editoriale.png</icon>
<prefix>activite_editoriale</prefix>
<necessite id="cextras" version="[1.0.0;]" />
<install>base/activite_editoriale_install.php</install>
<pipeline>
<nom>declarer_champs_extras</nom>
<inclure>base/activite_editoriale.php</inclure>
</pipeline>
<pipeline>
<nom>taches_generales_cron</nom>
<inclure>activite_editoriale_pipelines.php</inclure>
</pipeline>
<fonctions>activite_editoriale_fonctions.php</fonctions>
<categorie>edition</categorie>
<necessite id='cfg' version='[1.9.1;]' />
</plugin>

@ -0,0 +1,83 @@
#CACHE{0}
<h1><:activite_editoriale:activite_editoriale:></h1>
<div>
<h2><:activite_editoriale:rubriques_pas_a_jour:></h2>
<div class='cadre cadre-liste' style='margin-top: 20px;'>
<table width='100%' cellpadding='2' cellspacing='0' border='0'>
<thead>
<tr>
<th><:rubrique:></th>
<th><:activite_editoriale:responsables:></th>
<th><:activite_editoriale:delai:></th>
<th><:activite_editoriale:derniere_maj:></th>
</tr>
</thead>
<tbody>
<BOUCLE_rubriques(RUBRIQUES){tout}{par maj}>
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={maj_rubrique}|oui)
#SET{maj,#MAJ}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_branche}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_branche}{id_rubrique}}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_rubrique}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_rubrique}{id_rubrique}}
]
[(#EXTRAS_DELAI|!={''}|oui)
[(#GET{maj}|age_rubrique|>={#EXTRAS_DELAI}|oui)
<INCLURE{fond=prive/exec/activite_editoriale_rubrique}{id_rubrique}{maj=#GET{maj}}>
]
]
</BOUCLE_rubriques>
</tbody>
</table>
</div>
</div>
<div>
<h2><:activite_editoriale:rubriques_a_suivre:></h2>
<div class='cadre cadre-liste' style='margin-top: 20px;'>
<table width='100%' cellpadding='2' cellspacing='0' border='0'>
<thead>
<tr>
<th><:rubrique:></th>
<th><:activite_editoriale:responsables:></th>
<th><:activite_editoriale:delai:></th>
<th><:activite_editoriale:derniere_maj:></th>
</tr>
</thead>
<tbody>
<BOUCLE_rubriques2(RUBRIQUES){tout}{par maj}>
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={maj_rubrique}|oui)
#SET{maj,#MAJ}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_branche}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_branche}{id_rubrique}}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_rubrique}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_rubrique}{id_rubrique}}
]
[(#EXTRAS_DELAI|!={''}|oui)
[(#GET{maj}|age_rubrique|<{#EXTRAS_DELAI}|oui)
<INCLURE{fond=prive/exec/activite_editoriale_rubrique}{id_rubrique}{maj=#GET{maj}}>
]
]
</BOUCLE_rubriques2>
</tbody>
</table>
</div>
</div>
<!--#navigation-->
<!--/#navigation-->
<!--#extra-->
<!--/#extra-->

@ -0,0 +1,11 @@
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{tout}>
<tr class='tr_liste'>
<td><a href='#URL_ECRIRE{naviguer,id_rubrique=#ID_RUBRIQUE}' dir='ltr'>#TITRE</a></td>
<td>
#SET{liste_auteur, #EXTRAS_IDENTIFIANTS|explode{','}}
<BOUCLE_auteurs(AUTEURS) {id_auteur IN #GET{liste_auteur}}{tout}{", "}><a href='#URL_ECRIRE{auteur_infos,id_auteur=#ID_AUTEUR}'>#NOM</a></BOUCLE_auteurs>
</td>
<td style="text-align: right">#EXTRAS_DELAI <:activite_editoriale:jours:></td>
<td style="text-align: right">[(#ENV{maj}|affdate)]</td>
</tr>
</BOUCLE_rubrique>
Loading…
Cancel
Save