1,5 → 1,5 |
<?php |
// $Id: ezmlm-listinfo.php,v 1.6 2008-11-19 09:28:46 aperonnet Exp $ |
// $Id: ezmlm-listinfo.php,v 1.3 2007/04/19 15:34:35 neiluj Exp $ |
// |
// ezmlm-listinfo.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
11,11 → 11,11 |
class ezmlm_listinfo extends ezmlm_php { |
|
function ezmlm_listinfo () { |
return is_dir($this->listdir.'/archive/0') ; |
//return is_dir($this->listdir.'/archive/0') ; |
} |
function display() { |
|
if (!is_dir($this->listdir.'/archive/0')) { // On teste si il y a au moins un message, cad le répertoire 0 |
|
if (!is_dir($this->listdir.'/archive/0')) { // On teste si il y a au moins un message, cad le r�pertoire 0 |
echo $this->listdir.'/archive/0' ; |
|
return false ; |
46,7 → 46,7 |
} |
|
|
function show_recentmsgs($title = "Messages récents") { |
function show_recentmsgs($title = "Messages r�cents") { |
|
if (!is_dir($this->listdir.'/archive/0')) return false; |
|
112,10 → 112,8 |
return $html; |
} |
|
function show_month ($month) { |
// Le nom du fichier est annéemois ex 200501 pour janvier 2005 |
|
// le html est vide au début |
// month = yyyymm |
function show_month ($month) { |
$html = '' ; |
|
// on ouvre chaque fichier en lecture |
122,51 → 120,40 |
if(!file_exists($this->listdir . '/archive/threads/' . $month)) { |
return false ; |
} |
$fd = file_get_contents($this->listdir . '/archive/threads/' . $month, 'r'); |
$fichier = explode ("\n", $fd) ; |
// on récupère la première ligne |
$premiere_ligne = $fichier[0] ; |
$derniere_ligne = $fichier[count($fichier)-2]; |
|
|
preg_match ('/[0-9]+/', $premiere_ligne, $match) ; |
$numero_premier_mail = $match[0] ; |
|
preg_match ('/[0-9]+/', $derniere_ligne, $match1) ; |
$numero_dernier_mail = $match1[0] ; |
|
// On cherche le répertoire du premier mail |
|
$repertoire_premier_mail = (int) ($numero_premier_mail / 100) ; |
|
// petite verification de coherence |
if ($numero_premier_mail > $numero_dernier_mail) { |
$temp = $numero_premier_mail; |
$numero_premier_mail = $numero_dernier_mail ; |
$numero_dernier_mail = $temp; |
} |
$numeros_mails_mois = $this->calculerNumMessagesDansMois($month); |
|
$html .= '<table class="table_cadre">'."\n"; |
$html .= '<tr><th class="col1">Num</th><th>De</th><th>Sujet</th><th>Date</th></tr>'."\n"; |
$ctc = 0; |
|
$class = array ('ligne_paire', 'ligne_impaire') ; |
|
if(count($numeros_mails_mois) > 0) { |
$repertoire_premier_mail = (int) ($numeros_mails_mois[0] / 100) ; |
} |
|
for ($i = $numero_premier_mail, $compteur = $numero_premier_mail ; $compteur <= $numero_dernier_mail; $i++, $compteur++) { |
foreach ($numeros_mails_mois as $num_message) { |
|
$i = $num_message; |
|
if ($i > 99) { |
$multiplicateur = (int) ($i / 100) ; |
// pour les nails > 99, on retranche n fois 100, ex 256 => 56 cad 256 - 2 * 100 |
// pour les mails > 99, on retranche n fois 100, ex 256 => 56 cad 256 - 2 * 100 |
$i = $i - $multiplicateur * 100 ; |
} |
|
if ($i < 10) $num_message = '0'.$i ; else $num_message = $i ; |
if (file_exists($this->listdir.'/archive/'.$repertoire_premier_mail.'/'.$num_message)) { |
$mimeDecode = new Mail_mimeDecode(file_get_contents ($this->listdir.'/archive/'.$repertoire_premier_mail.'/'.$num_message)) ; |
$mailDecode = $mimeDecode->decode() ; |
|
if ($i == 99) { |
$repertoire_premier_mail++; |
$i = -1; |
} |
|
$html .= '<tr class="'.$class[$ctc].'">'."\n"; |
$html .= '<tr class="'.$class[$ctc].'">'."\n"; |
$html .= '<td>'.($repertoire_premier_mail != 0 ? $repertoire_premier_mail : '').$num_message.'</td><td>'; |
$hash = $this->makehash($mailDecode->headers['from']); |
|
191,7 → 178,67 |
} |
} |
$html .= '</table>'."\n"; |
|
return $html; |
} |
|
private function calculerNumMessagesDansMois($mois) { |
|
/* Pour le calcul du nombre de message par mois |
* 1 => ouvrir fichier /archive/threads/yyyymm qui contient les sujets abordés dans le mois |
* 2 => pour chaque ligne: |
* a => extraire l'id du du premier message (1er nombre de la ligne) |
* b => extraire l'id du sujet et ouvrir le fichier concerné dans /archive/subjects/ |
* b1 => pour chaque ligne du fichier des sujets extraire les id des messages concernés |
* s'ils sont dans le mois demandé |
*/ |
|
// étape 1 |
$fd = file_get_contents($this->listdir . '/archive/threads/'.$mois, 'r'); |
$fichier = explode ("\n", $fd) ; |
|
$premiere_ligne = $fichier[0] ; |
|
$nb_lignes_fichier = count($fichier); |
|
$lignes_messages = array(); |
|
preg_match ('/[0-9]+/', $premiere_ligne, $match) ; |
$numero_premier_mail = $match[0] ; |
|
$lignes_messages[$numero_premier_mail] = $numero_premier_mail; |
|
// étape 2 |
foreach($fichier as $ligne) { |
|
if(trim($ligne == '')) { continue ;} |
|
// étape 2 a |
$ligne_tableau = explode(' ', $ligne); |
$num_mail_sujet = explode(':',$ligne_tableau[0]); |
$num_sujet = $num_mail_sujet[1]; |
|
// étape 2 b |
$fd_sujet = file_get_contents($this->listdir.'/archive/subjects/'.substr($num_sujet,0,2).'/'.substr($num_sujet,2,strlen($num_sujet) - 1), 'r'); |
$premiere_ligne = true; |
|
$fichier_sujet = explode ("\n", $fd_sujet) ; |
foreach($fichier_sujet as $ligne_sujet) { |
if($premiere_ligne || trim($ligne_sujet) == '') {$premiere_ligne = false; continue; } |
|
// étape 2 b b1 |
$ligne_tableau_sujet = explode(':', $ligne_sujet); |
$num_mail = $ligne_tableau_sujet[0]; |
$mois_ligne = $ligne_tableau_sujet[1]; |
if($mois_ligne == $mois) { |
$lignes_messages[$num_mail] = $num_mail; |
} |
} |
} |
|
// Tri sur les id de message pour les avoir par ordre d'arrivée |
asort($lignes_messages); |
return $lignes_messages; |
} |
} |
?> |