home *** CD-ROM | disk | FTP | other *** search
/ Neil's C++ Stuff / 2002-11-php_neilstuff_com.zip / _qam.php < prev    next >
PHP Script  |  2001-02-27  |  5KB  |  229 lines

  1. <?
  2.     global $page, $srcfile, $qsi;
  3.  
  4.     $qsi = (int)$qsi;
  5.     $yr = (int)substr($page->id, 0, 4);
  6.     $mn = (int)substr($page->id, 4, 2);
  7.  
  8.     if ($mn == 1)
  9.         $month = 'January';
  10.     else if ($mn == 2)
  11.         $month = 'February';
  12.     else if ($mn == 3)
  13.         $month = 'March';
  14.     else if ($mn == 4)
  15.         $month = 'April';
  16.     else if ($mn == 5)
  17.         $month = 'May';
  18.     else if ($mn == 6)
  19.         $month = 'June';
  20.     else if ($mn == 7)
  21.         $month = 'July';
  22.     else if ($mn == 8)
  23.         $month = 'August';
  24.     else if ($mn == 9)
  25.         $month = 'September';
  26.     else if ($mn == 10)
  27.         $month = 'October';
  28.     else if ($mn == 11)
  29.         $month = 'November';
  30.     else
  31.         $month = 'December';
  32.  
  33.     $title = $month . ' ' . $yr . ' Mail';
  34.  
  35. class Message
  36. {
  37.     var $iDay, $iHour, $iMinute;
  38.     var $sSubject;
  39.     var $sFrom;
  40.     var $sDate;
  41.  
  42.     var $aText;
  43.     var $aType;
  44.     var $iLen;
  45.  
  46.     function Message()
  47.     {
  48.         $this->aText = array();
  49.         $this->aType = array();
  50.         $this->iLen = 0;
  51.     }
  52. }
  53.  
  54.     $fp = @fopen($srcfile, "r");
  55.     if ($fp == false || $fp == null)
  56.     {
  57.         echo('Could not find mail archive for ' . $month . ' ' . $yr);
  58.         exit;
  59.     }
  60.     
  61.     $i = -1;
  62.     $stat = -1;
  63.     $msg = array();
  64.  
  65.     while (feof($fp) == false)
  66.     {
  67.         $line = fgets($fp, 4096);
  68.  
  69.         if (substr($line,0,2) == '_[')
  70.         {
  71.             if ($stat == 3)
  72.             {
  73.                 $msg[$i]->iLen++;
  74.             }
  75.  
  76.             $i++;
  77.             $stat = 0;
  78.             $msg[$i] = new Message;
  79.             if ($line[2] == '0')
  80.                 $msg[$i]->iDay = (int)$line[3];
  81.             else
  82.                 $msg[$i]->iDay = (int)substr($line,2,2);
  83.  
  84.             if ($line[5] == '0')
  85.                 $msg[$i]->iHour = (int)$line[6];
  86.             else
  87.                 $msg[$i]->iHour = (int)substr($line,5,2);
  88.  
  89.             if ($line[8] == '0')
  90.                 $msg[$i]->iMinute = (int)$line[9];
  91.             else
  92.                 $msg[$i]->iMinute = (int)substr($line,8,2);
  93.  
  94.             $m =& $msg[$i];
  95.  
  96.             $m->sDate = $month . ' ' . $m->iDay;
  97.  
  98.             if ($m->iDay == 1 || $m->iDay == 21 || $m->iDay == 31)
  99.                 $m->sDate .= 'st';
  100.             else if ($m->iDay == 2 || $m->iDay == 22)
  101.                 $m->sDate .= 'nd';
  102.             else if ($m->iDay == 3 || $m->iDay == 23)
  103.                 $m->sDate .= 'rd';
  104.             else
  105.                 $m->sDate .= 'th';
  106.  
  107.             $m->sDate .= ', ' . $yr . ' / ';
  108.             if ($m->iHour > 12)
  109.                 $m->sDate .= ($m->iHour-12);
  110.             else
  111.                 $m->sDate .= $m->iHour;
  112.             $m->sDate .= ':';
  113.             if ($m->iMinute < 10)
  114.                 $m->sDate .= '0';
  115.             $m->sDate .= $m->iMinute;
  116.             if ($m->iHour > 12)
  117.                 $m->sDate .= 'pm';
  118.             else
  119.                 $m->sDate .= 'am';
  120.  
  121.             unset($m);
  122.         }
  123.         else if ($stat == 0)
  124.         {
  125.             $msg[$i]->sFrom = $line;
  126.             $stat = 1;
  127.         }
  128.         else if ($stat == 1)
  129.         {
  130.             $msg[$i]->sSubject = $line;
  131.             $stat = 2;
  132.         }
  133.         else if ($stat == 2 && substr($line,0,5) == '--q--')
  134.         {
  135.             $txt = '';
  136.             $stat = 3;
  137.             $msg[$i]->aType[$msg[$i]->iLen] = 'q';
  138.             $msg[$i]->aText[$msg[$i]->iLen] = '';
  139.         }
  140.         else if ($stat == 2 && substr($line,0,5) == '--a--')
  141.         {
  142.             $txt = '';
  143.             $stat = 3;
  144.             $msg[$i]->aType[$msg[$i]->iLen] = 'a';
  145.             $msg[$i]->aText[$msg[$i]->iLen] = '';
  146.         }
  147.         else if ($stat == 3)
  148.         {
  149.             if (substr($line,0,5) == '--a--')
  150.             {
  151.                 $msg[$i]->iLen++;
  152.                 $msg[$i]->aType[$msg[$i]->iLen] = 'a';
  153.                 $msg[$i]->aText[$msg[$i]->iLen] = '';
  154.             }
  155.             else if (substr($line,0,5) == '--q--')
  156.             {
  157.                 $msg[$i]->iLen++;
  158.                 $msg[$i]->aType[$msg[$i]->iLen] = 'q';
  159.                 $msg[$i]->aText[$msg[$i]->iLen] = '';
  160.             }
  161.             else
  162.             {
  163.                 $msg[$i]->aText[$msg[$i]->iLen] .= str_replace('  ', '  ', str_replace('    ', '    ', htmlspecialchars($line))) . '<BR>';
  164.             }
  165.         }
  166.         //else
  167.         //{
  168.         //    echo('ignoring "' . $line . '" (' . $stat . ')<BR>');
  169.         //}
  170.     }
  171.  
  172.     fclose($fp);
  173.  
  174.     echo('All "conversations" are broken into single blocks.  The date shown is when I first received an email.  The messages of the people writing me are in bold (i.e. "questions") and my answers are in plain text.<BR><BR>');
  175.  
  176.     echo('<UL>');
  177.  
  178.     if ($qsi > count($msg))
  179.         $qsi = 0;
  180.     $max = $qsi + 10;
  181.     if ($max > count($msg))
  182.         $max = count($msg);
  183.  
  184.     for ($i = 0; $i < $qsi; $i += 10)
  185.     {
  186.         echo('<LI><A HREF="' . me() . '&qsi=' . $i . '">Page ' . (($i/10)+1) . '</A>');
  187.     }
  188.  
  189.     for ($i = $qsi; $i < $max; $i++)
  190.     {
  191.         $m =& $msg[$i];
  192.  
  193.         echo('<LI>' . $m->sDate . ' <A HREF="#' . $m->iDay . '.' . $m->iHour . '.' . $m->iMinute . '">' . $m->sSubject . '</A>');
  194.  
  195.         unset($m);
  196.     }
  197.  
  198.     for ($i = $qsi + 10; $i < count($msg); $i += 10)
  199.     {
  200.         echo('<LI><A HREF="' . me() . '&qsi=' . $i . '">Page ' . (($i/10)+1) . '</A>');
  201.     }
  202.  
  203.     echo('</UL>');
  204.  
  205.     for ($i = $qsi; $i < $max; $i++)
  206.     {
  207.         $m =& $msg[$i];
  208.  
  209.         echo('<A NAME="' . $m->iDay . '.' . $m->iHour . '.' . $m->iMinute . '"></A><TABLE BGCOLOR=C0C0C0 BORDER=2 WIDTH=100% CELLSPACING=0 CELLPADDING=2><TR><TD COLSPAN=3 BGCOLOR=7F7FFF ALIGN=CENTER><FONT FACE="Primer Print" COLOR=000000 SIZE=+3><B>' . $m->sSubject . '</B></FONT></TD></TR>');
  210.  
  211.         for ($x = 0; $x < count($m->aType); $x++)
  212.         {
  213.             if ($m->aType[$x] == 'q')
  214.             {
  215.                 echo('<TR><TD BGCOLOR=C0C0C0 COLSPAN=3 ALIGN=LEFT><CODE><B>' . $m->aText[$x] . '</B></CODE></TD></TR>');
  216.             }
  217.             else
  218.             {
  219.                 echo('<TR><TD BGCOLOR=C0C0C0 COLSPAN=3 ALIGN=LEFT><CODE>' . $m->aText[$x] . '</CODE></TD></TR>');
  220.             }
  221.         }
  222.  
  223.         echo('<TR><TD ALIGN=CENTER BGCOLOR=C0C0C0>' . rndilnk() . '</TD><TD ALIGN=LEFT WIDTH=100% BGCOLOR=C0C0C0><FONT FACE="MS Sans Serif, Arial" SIZE=-2>' . $m->sDate . '</FONT></TD><TD ALIGN=RIGHT BGCOLOR=C0C0C0><IMG SRC="gfx/table/cornpull.gif"></TD></TR></TABLE><BR>');
  224.  
  225.         unset($m);
  226.     }
  227.  
  228. ?>
  229.