Documentation sur le logiciel SYMPA

Ceci est une ancienne révision du document !


list_dernier_message.pl

#!/usr/bin/perl -w
#
# mysql_liste-sans-abonne.pl
#
# Catherine.Balleydier@inpg.fr
#
# maj : 03/10/16
#
########################################################################
# 
#   recherche des derniers messages pour toutes les listes sur tous les robots
#
########################################################################
#
use strict;
use warnings;
use Term::ReadKey;
use Time::Local;
use Term::ReadKey;
use lib '/home/sympa/bin';
use Language;
use File::Copy;

my $REProbot = "/home/sympa/list_data/" ;
my $REP ;
my $robot ;
my $fichier ;
my @CONFIG ;
my @liste ;
my $entree ;
my $last_message;
my $fich_count ;
my $date_last ;

#
#  fichier resultat
#
my $RESUL = "/usr/local/SCRIPTS/sympa/RESUL/dernier-message\.csv" ;
open (FICH, ">$RESUL") ||die "probleme fichier";
#
#  lister les robots  du repertoire /home/sympa/list_data
#
opendir(DIR, $REProbot) || die "Impossible de lire $REProbot : $!\n";
my @robots = grep { /^[^\.]/ && -r "$REProbot/$_" } readdir(DIR);
closedir(DIR);

#
# traiter pour chaque robot
#
ETIQ : foreach $robot (@robots)
{
  if ( $robot =~ /blacklist/ ) { next ETIQ ;}
  $REP = "$REProbot"."$robot"."/";
#
#  lister le contenu du repertoire /home/sympa/list_data/robot
#
  opendir(DIR, $REP) || die "Impossible de lire $REP : $!\n";
  @liste = grep { /^[^\.]/ && -r "$REP/$_" } readdir(DIR);
  closedir(DIR);

#
# traiter pour chaque liste le fichier msg_count
#
  foreach $entree (@liste)
  {


#  -----------------------------------------
#          date du dernier message
#
    print FICH "$robot".";"."$entree".";";
    $last_message = 0;
    $fich_count =  "$REP"."$entree"."/msg_count" ;

    if (open COUNT, $fich_count)
    {
      while (<COUNT>)
      {
        $last_message = $1 if (/^(\d+)\s/ && ($1 > $last_message));
      }
      close COUNT;
      $date_last = gettext_strftime "%Y %m %d", localtime($last_message*86400) ;
      print FICH "$date_last\n";
    }
    else
    {
      print FICH " AUCUN MESSAGE \n" ;
    }
  }
}
close (FICH) ;