X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=banana%2Fnntpcore.inc.php;h=a1cc90fb7b713ee3da03382c66d81c30e0aaf1cb;hb=0e2d7b8ec9a5c194f6eeed5f13e7acb69dea9089;hp=5d8bc63c86bb55ef237a1d1af2fb4ffedd9cdede;hpb=ee472ac6b35ec8c21fbdcd641b6fa3fbef62fc4d;p=banana.git diff --git a/banana/nntpcore.inc.php b/banana/nntpcore.inc.php index 5d8bc63..a1cc90f 100644 --- a/banana/nntpcore.inc.php +++ b/banana/nntpcore.inc.php @@ -50,7 +50,7 @@ class BananaNNTPCore } $this->checkState(); - $this->posting = ($this->lastresultcode == '200'); + $this->posting = ($this->lastresultcode == '200'); if ($reader && $this->posting) { $this->execLine('MODE READER'); $this->posting = ($this->lastresultcode == '200'); @@ -79,7 +79,11 @@ class BananaNNTPCore public function lastError() { - return $this->lasterrortext; + if (!is_utf8($this->lasterrortext)) { + return utf8_encode($this->lasterrortext); + } else { + return $this->lasterrortext; + } } public function backtrace() @@ -94,11 +98,12 @@ class BananaNNTPCore # Socket functions /** get a line from server - * @return STRING + * @return STRING */ - private function getLine() + private function &getLine() { - return rtrim(@fgets($this->ns, 1200), "\r\n"); + $data = rtrim(@fgets($this->ns, 1200), "\r\n"); + return $data; } /** fetch data (and on delimitor) @@ -107,11 +112,13 @@ class BananaNNTPCore private function &fetchResult() { $array = Array(); - while (($result = $this->getLine()) != '.') { - $array[] = $result; + while (($result =& $this->getLine()) != '.') { + $array[] =& $result; } if ($this->debug && $this->bt) { - $this->bt[count($this->bt) - 1]['response'] = count($array); + $trace =& $this->bt[count($this->bt) - 1]; + $trace['response'] = count($array); + $trace['time'] = microtime(true) - $trace['start']; } return $array; } @@ -122,12 +129,12 @@ class BananaNNTPCore private function putLine($line, $format = false) { if ($format) { - $line = str_replace(array("\r", "\n"), '', $line); + $line = str_replace(array("\r", "\n"), '', $line); $line .= "\r\n"; } if ($this->debug) { $db_line = preg_replace('/PASS .*/', 'PASS *******', $line); - $this->bt[] = array('action' => $db_line, 'time' => microtime(true)); + $this->bt[] = array('action' => $db_line, 'start' => microtime(true)); } return @fputs($this->ns, $line, strlen($line)); } @@ -168,7 +175,7 @@ class BananaNNTPCore $this->lastresulttext = substr($result, 4); if ($this->debug && $this->bt) { $trace =& $this->bt[count($this->bt) - 1]; - $trace['time'] = microtime(true) - $trace['time']; + $trace['time'] = microtime(true) - $trace['start']; $trace['code'] = $this->lastresultcode; $trace['message'] = $this->lastresulttext; $trace['response'] = 0; @@ -191,7 +198,7 @@ class BananaNNTPCore * @param $pass INTEGER password * @return BOOLEAN true if authentication was successful */ - protected function authinfo($user, $pass) + public function authinfo($user, $pass) { if ($this->execLine("AUTHINFO USER $user", false)) { return $this->execline("AUTHINFO PASS $pass"); @@ -201,15 +208,15 @@ class BananaNNTPCore /** retrieves an article * MSGID is a numeric ID a shown in article's headers. MSGNUM is a - * server-dependent ID (see X-Ref on many servers) and retriving + * server-dependent ID (see X-Ref on many servers) and retriving * an article by this way will change the current article pointer. - * If an error occur, false is returned. + * If an error occur, false is returned. * @param $_msgid STRING MSGID or MSGNUM of article * @return ARRAY lines of the article * @see body * @see head */ - protected function article($msgid = "") + public function article($msgid = "") { if (!$this->execLine("ARTICLE $msgid")) { return false; @@ -220,9 +227,9 @@ class BananaNNTPCore /** post a message * if an error occur, false is returned * @param $_message STRING message to post - * @return STRING MSGID of article + * @return STRING MSGID of article */ - protected function post($message) + public function post($message) { if (!$this->execLine("POST ", false)) { return false; @@ -244,7 +251,7 @@ class BananaNNTPCore * @see article * @see head */ - protected function body($msgid = '') + public function body($msgid = '') { if ($this->execLine("BODY $msgid")) { return false; @@ -259,7 +266,7 @@ class BananaNNTPCore * @see article * @see body */ - protected function head($msgid = '') + public function head($msgid = '') { if (!$this->execLine("HEAD $msgid")) { return false; @@ -268,10 +275,10 @@ class BananaNNTPCore } /** set current group - * @param $_group STRING + * @param $_group STRING * @return ARRAY array : nb of articles in group, MSGNUM of first article, MSGNUM of last article, and group name */ - protected function group($group) + public function group($group) { if (!$this->execLine("GROUP $group")) { return false; @@ -287,7 +294,7 @@ class BananaNNTPCore * @return STRING MSGID of article * @see next */ - protected function last() + public function last() { if (!$this->execLine("LAST ")) { return false; @@ -303,7 +310,7 @@ class BananaNNTPCore * @see last */ - protected function next() + public function next() { if (!$this->execLine('NEXT ')) { return false; @@ -320,7 +327,7 @@ class BananaNNTPCore * @see article * @see body */ - protected function nntpstat($msgid) + public function nntpstat($msgid) { if (!$this->execLine("STAT $msgid")) { return false; @@ -351,7 +358,7 @@ class BananaNNTPCore * @return ARRAY group name => (MSGNUM of first article, MSGNUM of last article, NNTP flags) * @see newgroups */ - protected function listGroups() + public function listGroups() { if (!$this->execLine('LIST')) { return false; @@ -367,30 +374,30 @@ class BananaNNTPCore return gmdate("ymd His", $since) . ' GMT'; } - /** get information about recent newsgroups + /** get information about recent newsgroups * same as list, but information are limited to newgroups created after $_since * @param $_since INTEGER unix timestamp - * @param $_distributions STRING distributions + * @param $_distributions STRING distributions * @return ARRAY same format as liste * @see liste */ - protected function newgroups($since, $distributions = '') + public function newgroups($since, $distributions = '') { if (!($since = $this->formatDate($since))) { return false; } if (!$this->execLine("NEWGROUPS $since $distributions")) { return false; - } + } return $this->filterGroups(); } /** gets a list of new articles * @param $_since INTEGER unix timestamp - * @parma $_groups STRING pattern of intersting groups + * @parma $_groups STRING pattern of intersting groups * @return ARRAY MSGID of new articles */ - protected function newnews($groups = '*', $since = 0, $distributions = '') + public function newnews($groups = '*', $since = 0, $distributions = '') { if (!($since = $this->formatDate($since))) { return false; @@ -404,7 +411,7 @@ class BananaNNTPCore /** Tell the remote server that I am not a user client, but probably another news server * @return BOOLEAN true if sucessful */ - protected function slave() + public function slave() { return $this->execLine("SLAVE "); } @@ -412,9 +419,9 @@ class BananaNNTPCore /** implements IHAVE method * @param $_msgid STRING MSGID of article * @param $_message STRING article - * @return BOOLEAN + * @return BOOLEAN */ - protected function ihave($msgid, $message = false) + public function ihave($msgid, $message = false) { if (!$this->execLine("IHAVE $msgid ")) { return false; @@ -424,7 +431,7 @@ class BananaNNTPCore /** closes connection to server */ - protected function quit() + public function quit() { $this->execLine('QUIT'); fclose($this->ns); @@ -435,10 +442,10 @@ class BananaNNTPCore # NNTP Extensions [RFC 2980] /** Returns the date on the remote server - * @return INTEGER timestamp + * @return INTEGER timestamp */ - protected function date() + public function date() { if (!$this->execLine('DATE ', false)) { return false; @@ -454,7 +461,7 @@ class BananaNNTPCore * @return ARRAY group name => description */ - protected function xgtitle($pattern = '*') + public function xgtitle($pattern = '*') { if (!$this->execLine("XGTITLE $pattern ")) { return false; @@ -462,7 +469,7 @@ class BananaNNTPCore $array =& $this->fetchResult(); $groups = array(); foreach ($array as &$result) { - list($group, $desc) = split("[ \t]", $result, 2); + @list($group, $desc) = preg_split('/[ \t]/', $result, 2); $groups[$group] = $desc; } return $groups; @@ -470,10 +477,10 @@ class BananaNNTPCore /** obtain the header field $hdr for all the messages specified * @param $_hdr STRING name of the header (eg: 'From') - * @param $_range STRING range of articles + * @param $_range STRING range of articles * @return ARRAY MSGNUM => header value */ - protected function xhdr($hdr, $first = null, $last = null) + public function xhdr($hdr, $first = null, $last = null) { if (is_null($first) && is_null($last)) { $range = ""; @@ -494,11 +501,11 @@ class BananaNNTPCore /** obtain the header field $_hdr matching $_pat for all the messages specified * @param $_hdr STRING name of the header (eg: 'From') - * @param $_range STRING range of articles + * @param $_range STRING range of articles * @param $_pat STRING pattern * @return ARRAY MSGNUM => header value */ - protected function xpat($_hdr, $_range, $_pat) + public function xpat($_hdr, $_range, $_pat) { if (!$this->execLine("XPAT $hdr $range $pat")) { return false; @@ -513,5 +520,5 @@ class BananaNNTPCore } } -// vim:set et sw=4 sts=4 ts=4 enc=utf-8: +// vim:set et sw=4 sts=4 ts=4 enc=utf-8: ?>