/[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.9 by wakaba, Sat Dec 1 12:28:31 2001 UTC revision 1.26 by wakaba, Sun Dec 2 00:08:29 2001 UTC
# Line 448  function headerDecode($value) { Line 448  function headerDecode($value) {
448        $newvalue=headerDecode($newvalue);  // maybe there are more encoded        $newvalue=headerDecode($newvalue);  // maybe there are more encoded
449      return(mb_convert_encoding($newvalue, "EUC-JP", "auto"));      // parts      return(mb_convert_encoding($newvalue, "EUC-JP", "auto"));      // parts
450    } else {    } else {
451      if (eregi('".*"',$value)) {  // quoted-printable decoding      return(mb_convert_encoding(decode_structured_body($value), "EUC-JP", "auto"));
       $result1=eregi_replace('(.*)"(.*)"(.*)','\1',$value);  
       $result2=eregi_replace('(.*)"(.*)"(.*)','\2',$value);  
       $result3=eregi_replace('(.*)"(.*)"(.*)','\3',$value);  
       $result2=eregi_replace('\\(.)','AIUEO\1',$result2);  
       $result2=eregi_replace('\\(.)','AIUEO\1',$result2);  
       $result2=eregi_replace('(.)','AIUEO\1',$result2);  
       $newvalue=$result1.'"'.$result2.'"'.$result3;  
       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"));  
     }  
452    }    }
453  }  }
454    
# Line 508  function parse_header($hdr,$number="") { Line 497  function parse_header($hdr,$number="") {
497            $header->id=$value;            $header->id=$value;
498            break;            break;
499          case "subject:":          case "subject:":
500            $header->subject=headerDecode($value);            $header->subject = decode_unstructured_body($value);
501            break;            break;
502          case "newsgroups:":          case "newsgroups:":
503            $header->newsgroups=$value;            $header->newsgroups=$value;
# Line 561  function parse_header($hdr,$number="") { Line 550  function parse_header($hdr,$number="") {
550          case "x-newsreader:":          case "x-newsreader:":
551          case "x-mailer:":          case "x-mailer:":
552          case "user-agent:":          case "user-agent:":
553            $header->user_agent=trim($value);            $header->user_agent=trim(decode_structured_body($value));
554            break;            break;
555          case "x-face:":          case "x-face:":
556  //          echo "<p>-".base64_decode($value)."-</p>";  //          echo "<p>-".base64_decode($value)."-</p>";
# Line 576  function parse_header($hdr,$number="") { Line 565  function parse_header($hdr,$number="") {
565    return $header;    return $header;
566  }  }
567    
568    function decode_unstructured_body ($body) {
569      $patterns = array (
570          "/(=\\?[^\\x00-\\x20()<>@,;:\\\\\"/\\[\\]?.=\\x7F]+\\?[BQ]\\?[^\\x00-\\x20\\x3F\\x7F]*\\?=)/ei",
571      );
572      $replace = array (
573          "mb_decode_mimeheader('\\1')",
574      );
575      return preg_replace ($patterns, $replace, $body);
576    }
577    
578    function decode_structured_body ($body) {
579      $patterns = array (
580          "/\"((?:[^\"\\\\]+|\\\\.)*)\"/e",
581          "/\(((?:[^()\\\\]+|\\\\.|(?:\((?:[^()\\\\]+|\\\\.|(?:\((?:[^)\\\\]+|\\\\.\
582    )*\)))*\)))*)\)/e",
583      );
584      $replace = array (
585          "mb_convert_encoding(decode_quoted_pair('\\1'), 'EUC-JP', 'auto')",
586          "'('.mb_convert_encoding(decode_quoted_pair('\\1'), 'EUC-JP', 'auto').')'",
587      );
588      return preg_replace ($patterns, $replace, $body);
589    }
590    
591    function decode_quoted_pair($value) {
592      $value = ereg_replace('\\\\(\\\\")', "\\1", $value);
593      return ereg_replace('\\\\(.)', "\\1", $value);
594    }
595    
596  function decode_body($body,$encoding) {  function decode_body($body,$encoding) {
597    $bodyzeile="";    $bodyzeile="";
598    switch ($encoding) {    switch ($encoding) {
# Line 693  function parse_message($rawmessage) { Line 710  function parse_message($rawmessage) {
710  //      if ($body=="") $body=" ";  //      if ($body=="") $body=" ";
711  //    }  //    }
712      $body=decode_body($body,$message->header->content_transfer_encoding);      $body=decode_body($body,$message->header->content_transfer_encoding);
713      $message->body[0]=$body;      $message->body[0] = mb_convert_encoding($body, "EUC-JP", "auto");
714    }    }
715      if (!isset($message->header->content_type_charset))      if (!isset($message->header->content_type_charset))
716        $message->header->content_type_charset=array("ISO-8859-1");        $message->header->content_type_charset=array("ISO-8859-1");
# Line 765  function read_message($id,$bodynum=0,$gr Line 782  function read_message($id,$bodynum=0,$gr
782        return false;        return false;
783      $rawmessage=array();      $rawmessage=array();
784      $line=lieszeile($ns);      $line=lieszeile($ns);
785   $line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP");   #$line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP");
786      while(strcmp($line,".") != 0) {      while(strcmp($line,".") != 0) {
787        $rawmessage[]=$line;        $rawmessage[]=$line;
788        $line=lieszeile($ns);        $line=lieszeile($ns);
789   $line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP");   #$line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP");
790      }      }
791      $message=parse_message($rawmessage);      $message=parse_message($rawmessage);
792      if (ereg('^[0-9]+$',$id)) $message->header->number=$id;      if (ereg('^[0-9]+$',$id)) $message->header->number=$id;

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.26

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24