X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=banana%2FNetNNTP.inc.php;h=42bb2a76321fcd044a298c2a84f147c12579c935;hb=4f6a209a2860106ca809828e73c5da9b3401242a;hp=13e574abea97024bfbe3008183928652828e1080;hpb=39816f8b637dbd80dc1a64f1a04adb4f3cf24a9f;p=banana.git diff --git a/banana/NetNNTP.inc.php b/banana/NetNNTP.inc.php index 13e574a..42bb2a7 100644 --- a/banana/NetNNTP.inc.php +++ b/banana/NetNNTP.inc.php @@ -305,6 +305,29 @@ class nntp return ($this->posting); } + /** retreive the group list + * @return ARRAY group name => (MSGNUM of first article, MSGNUM of last article, NNTP flags) + * @see newgroups, liste + */ + function _grouplist() + { + global $banana; + + if (substr($this->gline(), 0, 1)!="2") { + return false; + } + $result = $this->gline(); + $array = Array(); + while ($result != ".") { + preg_match("/([^ ]+) (\d+) (\d+) (.)/", $result, $regs); + if (!isset($banana->grp_pattern) || preg_match('@'.$banana->grp_pattern.'@', $regs[1])) { + $array[$regs[1]] = array(intval($regs[2]), intval($regs[3]), intval($regs[4])); + } + $result = $this->gline(); + } + return $array; + } + /** gets information about all active newsgroups * @return ARRAY group name => (MSGNUM of first article, MSGNUM of last article, NNTP flags) * @see newgroups @@ -313,15 +336,7 @@ class nntp function liste() { $this->pline("LIST\r\n"); - if (substr($this->gline(), 0, 1)!="2") return false; - $result = $this->gline(); - $array = Array(); - while ($result != ".") { - preg_match("/([^ ]+) (\d+) (\d+) (.)/", $result, $regs); - $array[$regs[1]] = array(intval($regs[2]), intval($regs[3]), intval($regs[4])); - $result = $this->gline(); - } - return $array; + return $this->_grouplist(); } /** get information about recent newsgroups @@ -338,17 +353,7 @@ class nntp $distributions = preg_replace("/(\r|\n)/", "", $_distributions); $this->pline("NEWGROUPS ".gmdate("ymd His", $_since) ." GMT $distributions\r\n"); - if (substr($this->gline(), 0, 1)!="2") { - return false; - } - $result = $this->gline(); - $array = array(); - while ($result != ".") { - preg_match("/([^ ]+) (\d+) (\d+) (.)/", $result, $regs); - $array[$regs[1]] = array(intval($regs[2]), intval($regs[3]), intval($regs[4])); - $result = $this->gline(); - } - return $array; + return $this->_grouplist(); } /** gets a list of new articles