Browse Source

une option pour effacer regulièrement les evenements passés depuis une certaine date, pour mieux s'y retrouver dans l'interface d'admin, en prenant en compte les répetitions

svn/attic/branches/ICAL-X-PROPERTIES/119183
maieul@maieul.net 1 year ago
parent
commit
a92c874ef8
5 changed files with 57 additions and 1 deletions
  1. +1
    -0
      .gitattributes
  2. +15
    -0
      formulaires/configurer_agenda.html
  3. +36
    -0
      genie/agenda_effacer_evenements_passes.php
  4. +3
    -0
      lang/configureragenda_fr.php
  5. +2
    -1
      paquet.xml

+ 1
- 0
.gitattributes View File

@ -21,6 +21,7 @@ formulaires/migrer_agenda.html -text
formulaires/migrer_agenda.php -text
formulaires/participer_evenement.html -text
formulaires/participer_evenement.php -text
genie/agenda_effacer_evenements_passes.php -text
inc/agenda_filtres.php -text
inc/date_gestion.php -text
inc/un-evenement-ical.html -text


+ 15
- 0
formulaires/configurer_agenda.html View File

@ -110,6 +110,21 @@
</ul>
</fieldset>
</li>
<li class="fieldset">
<fieldset>
<legend><:configureragenda:legend_nettoyage_agenda:></legend>
<ul>
#SET{name,effacer_evenements_passes}#SET{obli,''}[(#SET{defaut,''})]#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<p class="explication">[(#GET{fl}|concat{':explication_',#GET{name}}|_T)]</p>
<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
</ul>
</fieldset>
</li>
</ul>
[(#REM) ajouter les saisies supplémentaires : extra et autre, à cet endroit ]


+ 36
- 0
genie/agenda_effacer_evenements_passes.php View File

@ -0,0 +1,36 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Effacer régulièrement les évènements obsolètes.
* Si l'évènement possède une répetition, prendre l'évènement récent qui dépasse cette répetition
**/
function genie_agenda_effacer_evenements_passes($t) {
// Est-ce qu'il faut effacer des choses
$config = intval(lire_config('agenda/effacer_evenements_passes'));
spip_log($config, 'agenda'._LOG_INFO_IMPORTANTE);
if ($config < 1) {
return '';
}
// Rechercher tous les évènements passés
$res = sql_select('id_evenement, date_fin', 'spip_evenements', "date_fin < NOW() - INTERVAL $config DAY");
while ($row = sql_fetch($res)) {
$id_evenement = $row['id_evenement'];
$date_fin = $row['date_fin'];
// Rechercher la première occurence d'une répetition de cet événement qui ne soit pas encore passée
$premier_occurence_repetition = sql_getfetsel('id_evenement', 'spip_evenements', "date_fin >= NOW() - INTERVAL $config DAY AND id_evenement_source = $id_evenement",'','date_debut ASC', '0,1');
if ($premier_occurence_repetition) {
sql_updateq('spip_evenements', array('id_evenement_source' => $premier_occurence_repetition), 'id_evenement_source='.$id_evenement);
sql_updateq('spip_evenements', array('id_evenement_source' => ''), 'id_evenement='.$premier_occurence_repetition);
spip_log("Répetition de l'évènement $id_evenement remplacées par des répetitions de l'évènement $premier_occurence_repetition, plus récent", 'agenda'._LOG_INFO_IMPORTANTE);
}
sql_delete('spip_evenements', 'id_evenement='.$id_evenement);
spip_log("Effacement de l'évènement $id_evenement passés depuis plus de $config jours (date de fin : $date_fin)", 'agenda'._LOG_INFO_IMPORTANTE);
}
}

+ 3
- 0
lang/configureragenda_fr.php View File

@ -7,6 +7,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
$GLOBALS[$GLOBALS['idx_lang']] = array(
'label_effacer_evenements_passes' => 'Effacer automatiquement les évènement passés',
'explication_effacer_evenements_passes' => 'Mettre le nombre de jour après lequel un évènement passés est automatiquement effacés (0 ou nombre négatif pour désactiver)',
// L
'label_affichage_debut' => 'Début de la liste',
'label_affichage_debut_date_jour' => 'Date du jour',
@ -27,6 +29,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'label_url_evenement_article' => 'sur la page de l’article associé',
'label_url_evenement_evenement' => 'sur une page dédiée pour chaque événement',
'legend_presentation_agenda' => 'Présentation de l’agenda',
'legend_nettoyage_agenda' => 'Nettoyage régulier de l\'agenda',
// T
'titre_configuration' => 'Affichage de l’Agenda'


+ 2
- 1
paquet.xml View File

@ -1,7 +1,7 @@
<paquet
prefix="agenda"
categorie="date"
version="3.32.2"
version="3.33.0"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="prive/themes/spip/images/evenement-32.png"
@ -54,6 +54,7 @@
<utilise nom="pages" compatibilite="[1.3.10;[" />
<necessite nom="calendriermini" compatibilite="[2.3.7;[" />
<genie nom="effacer_evenements_passes" periode="86400" />
<menu nom="evenements" titre="agenda:evenements" parent="menu_edition" icone="images/evenement-16.png" />
<menu nom="evenement_creer" titre="agenda:creer_evenement" parent="outils_rapides" action="evenement_edit" icone="images/evenement-new-16.png" />


Loading…
Cancel
Save