headers = new headers($_nntp,$_id); if (!$this->headers) { $this = false; return false; } $this->body = join("\n",$nntp->body($_id)); if ((isset($this->headers->contentencoding)) && (preg_match("/base64/",$this->headers->contentencoding))) { $this->body = base64_decode($this->body); } if ((isset($this->headers->contentencoding)) && (preg_match("/quoted-printable/",$this->headers->contentencoding))) { $this->body = quoted_printable_decode($this->body); } if (!$this->body) { $this = false; return false; } } } /** class for headers */ class Headers { /** MSGNUM : *local* spool id */ var $nb; // numéro du post /** MSGID : Message-ID */ var $msgid; // Message-ID /** From header */ var $from; // From /** Name (if present in From header) */ var $name; /** Mail (in From header) */ var $mail; /** Subject header */ var $subject; // Subject /** Newsgroup¨ header */ var $newsgroups; // Newsgroups /** Followup-To header */ var $followup; /** Content-Type header */ var $contenttype; /** Content-Transfer-Encoding header */ var $contentencoding; /** Date header */ var $date; /** Organization header */ var $organization; /** References header */ var $references; /** constructor * @param $_nntp RESOURCE handle to NNTP socket * @param $_id STRING MSGNUM or MSGID */ function headers(&$_nntp,$_id) { global $news; $hdrs = $_nntp->head($_id); if (!$hdrs) { $this = false; return false; } // parse headers foreach ($hdrs as $line) { if (preg_match("/^[\t\r ]+/",$line)) { $line = ($lasthdr=="X-Face"?"":" ").ltrim($line); if (in_array($lasthdr,array_keys($news['head']))) $this->{$news['head'][$lasthdr]} .= $line; } else { list($hdr,$val) = split(":[ \t\r]*",$line,2); if (in_array($hdr,array_keys($news['head']))) $this->{$news['head'][$hdr]} = $val; $lasthdr = $hdr; } } // decode headers foreach ($news['hdecode'] as $hdr) { if (isset($this->$hdr)) { $this->$hdr = headerDecode($this->$hdr); } } // sets name and mail $this->name = $this->from; $this->mail = $this->from; if (preg_match("/(.*)<(.*)@(.*)>/",$val,$match)) { $this->name = str_replace("\"","",trim($match[1])); $this->mail = $match[2]."@".$match[3]; } if (preg_match("/([\w\.]+)@([\w\.]+) \((.*)\)/",$val,$match)) { $this->name = trim($match[3]); $this->mail = $match[1]."@".$match[2]; } $this->nb=$id; $retour->numerr=0; } } ?>