#!/usr/local/bin/php -q $bsec) ? 1 : -1; } elseif (($adate == $bdate) && ($ahour == $bhour)) { return ($amin > $bmin) ? 1 : -1; } elseif (($adate == $bdate)) { return ($ahour > $bhour) ? 1 : -1; } return ($adate > $bdate) ? 1 : -1; } function sort_by_thread($a, $b) { $asub = strtolower($a[subject]); $bsub = strtolower($b[subject]); $asub = eregi_replace("re: ","",$asub); $bsub = eregi_replace("re: ","",$bsub); if (strnatcmp($asub,$bsub) == 0) { return 0; } if (strnatcmp($asub,$bsub) > 0) { return 1; } if (strnatcmp($asub,$bsub) < 0) { return -1; } } function sort_by_author($a, $b) { $afrom = strtolower($a[from]); $bfrom = strtolower($b[from]); if (strnatcmp($afrom,$bfrom) == 0 ){ return 0; } elseif (strnatcmp($afrom,$bfrom) > 0 ){ return 1; } elseif (strnatcmp($afrom,$bfrom) < 0 ){ return -1; } } $archive = $mailbox ? $mailbox : $file; # Grab the date from $archive and parse it to get year and month. /* $arch_date = substr(strchr($archive,"/"),1); $arch_year = substr($arch_date, 0,4); $arch_month = substr($arch_date, 4,6); */ $fp=fopen($archive,'r'); $contents=fread($fp,filesize($archive)); $messages=split("\nFrom ", $contents); fclose($fp); $i=0; foreach($messages as $value) { $index[$i][filename] = "$i.html"; # Grab received date from header. if($i == 0) { if(preg_match("/^\S+\s+\S+\s+(.+)/",$value,$match)) { $index[$i][date] = $match[1]; $start_date = $index[$i][date]; } } else { if(preg_match("/^[^\s]+\s+(.+)/",$value,$match)) { $index[$i][date] = $match[1]; $end_date = $index[$i][date]; } } # Grab subject from header. if(preg_match("/^Subject: (.*)$/m",$value,$match)){ $index[$i][subject] = $match[1]; } else { $index[$i][subject] = "NO SUBJECT"; } # Grab "From: " from header. if(preg_match("/^From: (.+)\S?(<(.+@.+\.?)>)/m",$value,$match)){ $index[$i][from]= eregi_replace("\"","",$match[1]); } elseif(preg_match("/^From: ?/m",$value,$match)){ $index[$i][from] = eregi_replace("\"","",$match[2]); } elseif(preg_match("/^From: )+(.+))>?/m",$value,$match)){ $index[$i][from] = "NONE"; } elseif(preg_match("/^From: (.*)$/m",$value,$match)){ $index[$i][from] = eregi_replace("\"","",$match[1]); } # Not doing refs or sent_date for now. 2001-04-28 /* # Grap any references from header. if(preg_match("/^References: ((<\S*>) .*)/m",$value,$match)){ $index[$i][ref_line]=$match[0]; $index[$i][refs]=$match[1]; $index[$i][first_ref]=$match[2]; } elseif(preg_match("/^References: (<.*>)/m",$value,$match)){ $index[$i][ref_line]=$match[0]; $index[$i][first_ref]=$match[1]; $index[$i][refs]=$match[1]; } # Grab "Date: " from header which is different from $index[$i]['date']. if(preg_match("/^Date: (.*)$/m",$value,$match)){ $index[$i][sent_date]=$match[0]; } */ $body=split("\n",$value); $blank= array_shift($body); while(!preg_match("/^$/",$blank)){ $blank = array_shift($body); } $index[$i][body] = join("\n",$body); $i++; } $size = sizeof($index); # Here we write each message out into a html page. usort($index,"sort_by_thread"); if(!is_dir($dir)) { if(!(mkdir($dir,0601))) { echo "Can't open $dir!"; exit; } echo "Making $dir directory.\n"; } echo "Writing messages.\n"; for ($i = 0; $i <= sizeof($index); $i++) { $morf = eregi_replace("re: ","",$index[$i][subject]); $next_morf = eregi_replace("re: ","",$index[$i+1][subject]); if ($next_morf == $morf) { $new_index[] = $index[$i]; } else { $new_index[] = $index[$i]; usort($new_index,"sort_by_date"); for ($k = 0; $k < sizeof($new_index); $k++) { $from = $new_index[$k][from]; $link = $new_index[$k][filename]; $when = $new_index[$k][date]; $sub = $new_index[$k][subject]; $body = $new_index[$k][body]; if (preg_match("/(.*).html/m",$link,$my_match)) $anchor = $my_match[1]; if(!($fp = fopen("$dir/$link","w"))) { echo "Can't open $link!"; exit; } else { fwrite($fp,"\n\n$sub\n\n\n"); fwrite($fp,"

$sub

"); fwrite($fp,"From: $from
Date: $when

"); if ($k + 1 < sizeof($new_index)) { $flag = 1; $next = $new_index[$k+1][from]; $date1 = $new_index[$k+1][date]; $link1 = $new_index[$k+1][filename]; fwrite($fp,"Next in Thread : "); fwrite($fp,"$next: $date1
\n"); } else { $flag = -1; fwrite($fp,"Next in Thread : End of Thread
\n"); } if ($k > 0 && $k < sizeof($new_index)) { $glaf = 1; $prev = $new_index[$k-1][from]; $date2 = $new_index[$k-1][date]; $link2 = $new_index[$k-1][filename]; fwrite($fp,"Previous in Thread : "); fwrite($fp,"$prev: $date2\n
\n"); } else { $glaf = -1; fwrite($fp,"Previous in Thread : Beginning of Thread
\n"); } fwrite($fp,"Messages sorted by: [ author ]"); fwrite($fp," [ date ] [ thread ]
\n"); fwrite($fp,"


$body

\n"); if ($flag > 0) { fwrite($fp,"Next in Thread : "); fwrite($fp,"$next: $date1
\n"); } elseif ($flag < 0) { fwrite($fp,"Next in Thread : End of Thread
\n"); } if ($glaf > 0) { fwrite($fp,"Previous in Thread : "); fwrite($fp,"$prev: $date2\n
\n"); } elseif ($glaf < 0) { fwrite($fp,"Previous in Thread : Beginning of Thread
\n"); } fwrite($fp,"Messages sorted by: [ author ]"); fwrite($fp," [ date ] [ thread ]
\n"); fwrite($fp,"

This archive generated by Mirphealy 0.8.\n"); fwrite($fp,"\n"); fclose($fp); } } unset($new_index); } } # Here we write out the date.html index page. usort($index,sort_by_date); if(!($fp = fopen("$dir/date.html","w"))){ echo "Can't open date.html."; exit; } echo "Creating date.html\n"; fwrite($fp,"\nArchives by Date\n"); fwrite($fp,"\n"); fwrite($fp,"

Archive by Date

\n\n"); fwrite($fp,"Starting: $start_date
\n"); fwrite($fp,"Ending: $end_date
\n"); fwrite($fp,"Messages: $size\n

\n

\n"); fwrite($fp,"Last message date: $end_date
\n"); fwrite($fp,"\n"); fwrite($fp,"

This archive generated by Mirphealy 0.8.\n"); fwrite($fp,"\n"); fclose($fp); # This is for thread.html. usort($index,sort_by_thread); if (!($fp = fopen("$dir/thread.html","w"))){ echo "Can't open thread.html!"; exit; } echo "Creating thread.html\n"; fwrite($fp,"\nArchive By Subject\n\n"); fwrite($fp,"

Archive By Subject

\n\n"); fwrite($fp,"Starting: $start_date
\n"); fwrite($fp,"Ending: $end_date
\n"); fwrite($fp,"No. of Messages: $size\n

\n

\n"); fwrite($fp,"
  • $what\n \n"); fwrite($fp,"\n"); fwrite($fp,"Last message date: $end_date
    \n"); fwrite($fp,"\n"); fwrite($fp,"

    This archive generated by Mirphealy 0.8.\n"); fwrite($fp,"\n"); fclose($fp); # Let's do it for authors! usort($index,"sort_by_author"); if (!($fp = fopen("$dir/author.html","w"))){ echo "Can't open author.html!"; exit; } echo "Creating author.html\n"; fwrite($fp,"Archive by Author\n"); fwrite($fp,"

    Archive By Author

    \n\n"); fwrite($fp,"Starting: $start_date
    \n"); fwrite($fp,"Ending: $end_date
    \n"); fwrite($fp,"No. of Messages: $size\n

    \n

    Last message date: $end_date
    \n"); fwrite($fp,"\n"); fwrite($fp,"

    This archive generated by Mirphealy 0.8.\n"); fwrite($fp,""); fclose($fp); if(!file_exists("$dir/index.html")){ echo "Copying thread.html to index.html\n"; copy("$dir/thread.html","$dir/index.html"); } ?>