/[suikacvs]/messaging/newsportal/newsportal.php
Suika

Diff of /messaging/newsportal/newsportal.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.20 by wakaba, Sat Dec 1 13:04:57 2001 UTC revision 1.31 by wakaba, Sun Dec 2 02:37:48 2001 UTC
# Line 56  class headerType { Line 56  class headerType {
56    var $answers;    var $answers;
57    var $isAnswer;    var $isAnswer;
58    var $username;    var $username;
59    var $user_agent;  //  var $user_agent;
60      var $field;
61    var $isReply;    var $isReply;
62  }  }
63    
# Line 448  function headerDecode($value) { Line 449  function headerDecode($value) {
449        $newvalue=headerDecode($newvalue);  // maybe there are more encoded        $newvalue=headerDecode($newvalue);  // maybe there are more encoded
450      return(mb_convert_encoding($newvalue, "EUC-JP", "auto"));      // parts      return(mb_convert_encoding($newvalue, "EUC-JP", "auto"));      // parts
451    } else {    } else {
452      if (eregi('".*"',$value)) {  // quoted-pair      return(mb_convert_encoding(decode_structured_body($value), "EUC-JP", "auto"));
       $newvalue=ereg_replace('(.*)"(.*)"(.*)',"\\1".decode_quoted_pair("\\2")."\\3",$value);  
       return(mb_convert_encoding($newvalue, "EUC-JP", "auto"));  
     } else {   // there wasn't anything encoded, return the original string  
       return(mb_convert_encoding($value, "EUC-JP", "auto"));  
     }  
453    }    }
454  }  }
455    
 function decode_quoted_pair($value) {  
       return(ereg_replace('\\\\(.)',"\\1",$value));  
 }  
   
456  function getTimestamp($value) {  function getTimestamp($value) {
457    $months=array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12);    $months=array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12);
458    $value=str_replace("  "," ",$value);    $value=str_replace("  "," ",$value);
# Line 488  function parse_header($hdr,$number="") { Line 480  function parse_header($hdr,$number="") {
480    $header = new headerType;    $header = new headerType;
481    $header->isAnswer=false;    $header->isAnswer=false;
482    for ($count=0;$count<count($hdr);$count++) {    for ($count=0;$count<count($hdr);$count++) {
483      $variable=substr($hdr[$count],0,strpos($hdr[$count]," "));      $variable=substr($hdr[$count],0,strpos($hdr[$count],":"));
484      $value=trim(substr($hdr[$count],strpos($hdr[$count]," ")+1));      $value=trim(substr($hdr[$count],strpos($hdr[$count],":")+1));
485        $header->field[strtolower($variable)][] = $value;
486        switch (strtolower($variable)) {        switch (strtolower($variable)) {
487          case "from:":          case "from":
488            $fromline=address_decode(headerDecode($value),"nirgendwo");            $fromline=address_decode(headerDecode($value),"nirgendwo");
489            if (!isset($fromline[0]["host"])) $fromline[0]["host"]="";            if (!isset($fromline[0]["host"])) $fromline[0]["host"]="";
490            $header->from=$fromline[0]["mailbox"]."@".$fromline[0]["host"];            $header->from=$fromline[0]["mailbox"]."@".$fromline[0]["host"];
# Line 502  function parse_header($hdr,$number="") { Line 495  function parse_header($hdr,$number="") {
495              $header->name=$fromline[0]["personal"];              $header->name=$fromline[0]["personal"];
496            }            }
497            break;            break;
498          case "message-id:":          case "message-id":
499            $header->id=$value;            $header->id=$value;
500            break;            break;
501          case "subject:":          case "subject":
502            $header->subject=headerDecode($value);            $header->subject = decode_unstructured_body($value);
503            break;            break;
504          case "newsgroups:":          case "newsgroups":
505            $header->newsgroups=$value;            $header->newsgroups=$value;
506            break;            break;
507          case "organization:":          case "organization":
508            $header->organization=$value;            $header->organization = decode_unstructured_body($value);
509            break;            break;
510          case "content-transfer-encoding:":          case "content-transfer-encoding":
511            $header->content_transfer_encoding=trim(strtolower($value));            $header->content_transfer_encoding=trim(strtolower($value));
512            break;            break;
513          case "content-type:":          case "content-type":
514            $header->content_type=array();            $header->content_type=array();
515            $subheader=split(";",$value);            $subheader=split(";",$value);
516            $header->content_type[0]=strtolower(trim($subheader[0]));            $header->content_type[0]=strtolower(trim($subheader[0]));
# Line 542  function parse_header($hdr,$number="") { Line 535  function parse_header($hdr,$number="") {
535              }              }
536            }            }
537            break;            break;
538          case "references:":          case "references":
539            $ref=ereg_replace("> *<", "> <", trim($value));            $ref=ereg_replace("> *<", "> <", trim($value));
540            while (strpos($ref,"> <") != false) {            while (strpos($ref,"> <") != false) {
541              $header->references[]=substr($ref,0,strpos($ref," "));              $header->references[]=substr($ref,0,strpos($ref," "));
# Line 550  function parse_header($hdr,$number="") { Line 543  function parse_header($hdr,$number="") {
543            }            }
544            $header->references[]=trim($ref);            $header->references[]=trim($ref);
545            break;            break;
546          case "date:":          case "date":
547            $header->date=getTimestamp(trim($value));            $header->date=getTimestamp(trim($value));
548            break;            break;
549          case "followup-to:":          case "followup-to":
550            $header->followup=trim($value);            $header->followup=trim($value);
551            break;            break;
552          case "x-newsreader:":  /*
553          case "x-mailer:":          case "x-newsreader":
554          case "user-agent:":          case "x-mailer":
555            $header->user_agent=trim(headerDecode($value));          case "user-agent":
556            break;            $header->user_agent= decode_structured_body($value);
         case "x-face:":  
 //          echo "<p>-".base64_decode($value)."-</p>";  
557            break;            break;
558    */
559        }        }
560    }    }
561    if (!isset($header->content_type[0]))    if (!isset($header->content_type[0]))
# Line 574  function parse_header($hdr,$number="") { Line 566  function parse_header($hdr,$number="") {
566    return $header;    return $header;
567  }  }
568    
569    function decode_unstructured_body ($body) {
570      $patterns = array (
571          "/(=\\?[^\\x00-\\x20()<>@,;:\\\"\\/\\[\\]?.=\\x7F]+\\?[BQ]\\?[^\\x00-\\x20\\x3F\\x7F]*\\?=)/ei",
572      );
573      $replace = array (
574          "mb_decode_mimeheader('\\1')",
575      );
576      return preg_replace ($patterns, $replace,
577                           mb_convert_encoding(fake_jisx0213($body), "EUC-JP", "auto"));
578    }
579    
580    function decode_structured_body ($body) {
581      $patterns = array (
582          "/\"((?:[^\"\\\\]+|\\\\.)*)\"/e",
583          "/\(((?:[^()\\\\]+|\\\\.|(?:\((?:[^()\\\\]+|\\\\.|(?:\((?:[^)\\\\]+|\\\\.\
584    )*\)))*\)))*)\)/e",
585      );
586      $replace = array (
587        "mb_convert_encoding(fake_jisx0213(decode_quoted_pair('\\1')),'EUC-JP','auto')",
588        "'('.mb_convert_encoding(fake_jisx0213(decode_quoted_pair('\\1')),
589                                 'EUC-JP','auto').')'",
590      );
591      return preg_replace ($patterns, $replace, $body);
592    }
593    
594    function decode_quoted_pair($value) {
595      $value = ereg_replace('\\\\(\\\\")', "\\1", $value);
596      return ereg_replace('\\\\(.)', "\\1", $value);
597    }
598    
599    function fake_jisx0213 ($value) {
600      $value = preg_replace ("/\\x1B\\\$\\(O/", "\x1B\\\$B", $value);
601      $value = preg_replace ("/\\x1B\\\$\\(P/", "\x1B\\\$(D", $value);
602      return $value;
603    }
604    
605  function decode_body($body,$encoding) {  function decode_body($body,$encoding) {
606    $bodyzeile="";    $bodyzeile="";
607    switch ($encoding) {    switch ($encoding) {
# Line 691  function parse_message($rawmessage) { Line 719  function parse_message($rawmessage) {
719  //      if ($body=="") $body=" ";  //      if ($body=="") $body=" ";
720  //    }  //    }
721      $body=decode_body($body,$message->header->content_transfer_encoding);      $body=decode_body($body,$message->header->content_transfer_encoding);
722      $message->body[0]=$body;      $message->body[0] = mb_convert_encoding($body, "EUC-JP", "auto");
723    }    }
724      if (!isset($message->header->content_type_charset))      if (!isset($message->header->content_type_charset))
725        $message->header->content_type_charset=array("ISO-8859-1");        $message->header->content_type_charset=array("ISO-8859-1");
# Line 1499  function show_header($head,$group) { Line 1527  function show_header($head,$group) {
1527      }      }
1528      echo "<br>";      echo "<br>";
1529    }    }
1530    /*
1531    if (isset($head->user_agent)) {    if (isset($head->user_agent)) {
1532      if ((isset($article_show["User-Agent"])) &&      if ((isset($article_show["User-Agent"])) &&
1533         ($article_show["User-Agent"])) {         ($article_show["User-Agent"])) {
# Line 1507  function show_header($head,$group) { Line 1536  function show_header($head,$group) {
1536        echo "<!-- User-Agent: ".htmlspecialchars($head->user_agent)." -->\n";        echo "<!-- User-Agent: ".htmlspecialchars($head->user_agent)." -->\n";
1537      }      }
1538    }    }
1539    */
1540      $fields = array ("x-moe", "x-brother", "x-syster", "x-wife",
1541                       "x-daughter", "x-respect",
1542                       "user-agent", "x-mailer", "x-newsreader",
1543                       "list-id", "x-uri", "x-mail-count", "keywords");
1544      for ($i = 0; $i < count($fields); $i++) {
1545        if (count($head->field[$fields[$i]])) {
1546          if ((isset($article_show[$fields[$i]])) && ($article_show[$fields[$i]])) {
1547            echo "<div class=\"field ".$fields[$i]."\"><span class=\"name\">"
1548                .$text_header[$fields[$i]]."</span> <span class=\"body\">"
1549                .htmlspecialchars(decode_structured_body(
1550                                    join(', ', $head->field[$fields[$i]])))
1551                ."</span></div>\n";
1552          }
1553        }
1554      }
1555      $fields = array ("x-weather", "x-copyright", "comments");
1556      for ($i = 0; $i < count($fields); $i++) {
1557        if (count($head->field[$fields[$i]])) {
1558          if ((isset($article_show[$fields[$i]])) && ($article_show[$fields[$i]])) {
1559            for ($j = 0; $j > count($head->field[$fields[$i]]); $j++) {
1560              echo "<div class=\"field ".$fields[$i]."\"><span class=\"name\">"
1561                  .$text_header[$fields[$i]]."</span> <span class=\"body\">"
1562                  .htmlspecialchars(decode_unstructured_body(
1563                                               $head->field[$fields[$i]][$j]))
1564                  ."</span></div>\n";
1565            }
1566          }
1567        }
1568      }
1569    if ((isset($attachment_show)) && ($attachment_show==true) &&    if ((isset($attachment_show)) && ($attachment_show==true) &&
1570        (isset($head->content_type[1]))) {        (isset($head->content_type[1]))) {
1571      echo $text_header["attachments"];      echo $text_header["attachments"];

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.31

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24