#!/usr/local/bin/perl -w use Pg; $db="linuxman"; # Current date and time ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $gendate=sprintf "%04d-%02d-%02d, %02dh%02d",1900+$year,$mon+1,$mday,$hour,$min; # Months'names @mois=("","janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"); # Connect to db $conn = Pg::connectdb("dbname=$db"); die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status; print "connected to $db\n"; # Sort the entries $result = $conn->exec("SELECT year,month FROM articles GROUP BY year,month ORDER BY year"); die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus; $num = $result->ntuples; print "$num months\n"; for ($i=0;$i<$num;$i++){ $tab[$i][0]=$result->getvalue($i,0); $tab[$i][1]=$result->getvalue($i,1); print "$tab[$i][0], $tab[$i][1]\n"; } # Create the files for ($i=0;$i<$num;$i++){ create($i); } # Create index.html $filename="index.html"; open(FD, ">$filename") or die "can not open $filename"; print FD " Warly's Linux Story

Warly's Linux Story

Chronologie

\n"; for ($i=0;$i<$num;$i++){ $an=$tab[$i][0]; $mois=$tab[$i][1]; my($str)= sprintf "%04d%02d",$an,$mois; print FD "
$mois[$mois] $an\n"; } print FD "

\n

Index des mots clés

Divers  0-9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z 

\n"; $result = $conn->exec("SELECT year,month,day,num,keyword FROM articles ORDER BY keyword"); die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus; $num_mots_cles = $result->ntuples; print "$num_mots_cles mots clés\n"; print FD "\n"; @lettres = ("Divers","0-9","AÀÁÂÄ","B","CÇ","D","EÈÉÊË","F","G","H","IÎÏ","J","K","L","M","N","OÔÖ","P","Q","R","S","T","UÙÛÜ","V","W","X","Y","Z","\\W"); @alphabet = ("\\W","\\d","aàâä","b","cç","d","eéèêêë","f","g","h","iîï","j","k","l","m","n","oôö","p","q","r","s","t","uûüù","v","w","x","yÿ","z"); $j=0; for ($i=0;$i<27;$i++){ print "Generating $lettres[$i] and $lettres[$i+1]\n"; print FD "\n"; } print FD "

$lettres[$i++]

$lettres[$i]

\n"; if ($j < $num_mots_cles){ $mot = $result->getvalue($j,4); while ($mot =~ /^[\/]*[$alphabet[$i-1]].*/i){ $file = sprintf "%04d%02d/%04d%02d.html#%04d%02d%02d-%d",$result->getvalue($j,0),$result->getvalue($j,1),$result->getvalue($j,0),$result->getvalue($j,1),$result->getvalue($j,0),$result->getvalue($j,1),$result->getvalue($j,2),$result->getvalue($j,3); encode($mot); print FD "
$mot\n"; $j++; if ($j >= $num_mots_cles) { last; } $mot = $result->getvalue($j,4); } } print FD "

\n"; if ($j < $num_mots_cles){ $mot = $result->getvalue($j,4); while ($mot =~ /^[\/]*[$alphabet[$i]].*/i){ $file = sprintf "%04d%02d/%04d%02d.html#%04d%02d%02d-%d",$result->getvalue($j,0),$result->getvalue($j,1),$result->getvalue($j,0),$result->getvalue($j,1),$result->getvalue($j,0),$result->getvalue($j,1),$result->getvalue($j,2),$result->getvalue($j,3); encode($mot); print FD "
$mot\n"; $j++; if ($j >= $num_mots_cles) { last; } $mot = $result->getvalue($j,4); } } print FD "

Warly Home Page

Linux-France Home Page

Un grand merci à Fabrice qui corrige et normalise mes pages web et me donne de nombreuses bonnes idées.

\"Valid

Generated $gendate   Mail

"; exit(0); sub create { my($i)= @_; $an=$tab[$i][0]; $mois=$tab[$i][1]; $pref = sprintf "%04d%02d",$an,$mois; print "create $pref/$pref.html\n"; mkdir("$pref", 0755); $filename="$pref/$pref.html"; open(FD, ">$filename") or die "can not open $filename"; print FD " Linuxman - $mois[$mois] $an
Linuxman - $mois[$mois] $an


INDEX\n"; if ($i>0) { $s = sprintf "%04d%02d",$tab[$i-1][0],$tab[$i-1][1]; print FD "

Mois précédent

\n"; } if (($i+1)<@tab) { $s = sprintf "%04d%02d",$tab[$i+1][0],$tab[$i+1][1]; print FD "

Mois suivant

\n"; } $result = $conn->exec("SELECT day FROM articles WHERE year = $an AND month = $mois GROUP BY day ORDER BY day"); die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus; $n_day = $result->ntuples; print "$n_day day for $mois[$mois] $an\n"; print FD "

\n"; for ($j=0;$j<$n_day;$j++){ $jour[$j]=$result->getvalue($j,0); $tag = sprintf "%04d%02d%02d",$an,$mois,$jour[$j]; print FD "
$jour[$j] $mois $an\n"; } print FD "

\n"; for ($j=0;$j<$n_day;$j++){ $r_data = $conn->exec("SELECT num FROM articles WHERE year = $an AND month = $mois AND day = $jour[$j] GROUP BY num"); die $conn->errorMessage unless PGRES_TUPLES_OK eq $r_data->resultStatus; $n_art = $r_data->ntuples; print "$n_art articles for $jour[$j] $mois[$mois] $an\n"; $tag = sprintf "%04d%02d%02d",$an,$mois,$jour[$j]; print FD "

 $jour[$j] $mois $an
\n"; for ($k=0;$k<$n_art;$k++){ $numero = $k+1; print FD "

Mots Clés : "; $r_data = $conn->exec("SELECT keyword,article FROM articles WHERE year = $an AND month = $mois AND day = $jour[$j] AND num = $numero"); die $conn->errorMessage unless PGRES_TUPLES_OK eq $r_data->resultStatus; $l=0; for ($l=0;$l<($r_data->ntuples-1);$l++){ $str = $r_data->getvalue($l,0); print FD "$str, "; } $str = $r_data->getvalue($l,0); print FD "$str."; print FD "

\n"; $r_com = $conn->exec("BEGIN"); die $conn->errorMessage unless PGRES_COMMAND_OK eq $r_com->resultStatus; $str = $r_data->getvalue(0,1); $ofd = $conn->lo_open($str,0644); die $conn->errorMessage unless $ofd != -1; while ($conn->lo_read($ofd,$str,1024)){ print FD "$str"; } $r_com = $result = $conn->exec("END"); die $conn->errorMessage unless PGRES_COMMAND_OK eq $r_com->resultStatus; print FD "\n\"haut\n"; } } if (($i+1)<@tab) { $s = sprintf "%04d%02d",$tab[$i+1][0],$tab[$i+1][1]; print FD "

Mois suivant

\n"; } print FD "

\"Valid

HOME   Generated $gendate   Mail

"; # Create the attachments if they do not exist $result = $conn->exec("SELECT name,attachment FROM attachments WHERE year = $an AND month = $mois"); die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus; $n_file = $result->ntuples; for ($j=0;$j<$result->ntuples;$j++){ $name = $result->getvalue($j,0); if ( ! -e "$name") { $res = $conn->exec("BEGIN"); die $conn->errorMessage unless PGRES_COMMAND_OK eq $res->resultStatus; die $conn->errorMessage unless 1 == $conn->lo_export($result->getvalue($j,1), "$pref/$name"); $res = $conn->exec("END"); die $conn->errorMessage unless PGRES_COMMAND_OK eq $res->resultStatus; } } } sub encode{ my($s)=@_; $s=~ s/(\s| )\s/  /g; $s=~ s/é/é/g; $s=~ s/É/É/g; $s=~ s/è/è/g; $s=~ s/È/È/g; $s=~ s/ê/ê/g; $s=~ s/Ê/Ê/g; $s=~ s/ë/ë/g; $s=~ s/Ë/Ë/g; $s=~ s/à/à/g; $s=~ s/À/À/g; $s=~ s/â/â/g; $s=~ s/Â/Â/g; $s=~ s/ä/ä/g; $s=~ s/Ä/Ä/g; $s=~ s/ù/ù/g; $s=~ s/Ù/Ù/g; $s=~ s/û/û/g; $s=~ s/Û/Û/g; $s=~ s/ü/ü/g; $s=~ s/Ü/Ü/g; $s=~ s/ô/ô/g; $s=~ s/Ô/Ô/g; $s=~ s/ö/ö/g; $s=~ s/Ö/Ö/g; $s=~ s/ï/ï/g; $s=~ s/Ï/Ï/g; $s=~ s/î/î/g; $s=~ s/Î/Î/g; $s=~ s/ç/ç/g; $s=~ s/Ç/Ç/g; $s=~ s/£/£/g; return $s; }