function getBinary($binaryId, $isNfo = false) { $db = new DB(); $bin = new Binaries(); $binary = $bin->getById($binaryId); if (!$binary) { return false; } $summary = $this->selectGroup($binary['groupname']); $message = $dec = ''; if (PEAR::isError($summary)) { echo $summary->getMessage(); return false; } $resparts = $db->query(sprintf("SELECT size, partnumber, messageID FROM parts WHERE binaryID = %d ORDER BY partnumber", $binaryId)); if (sizeof($resparts) > 1 && $isNfo === true) { echo 'NFO is more than 1 part, skipping. '; return false; } foreach ($resparts as $part) { $messageID = '<' . $part['messageID'] . '>'; $body = $this->getBody($messageID, true); if (PEAR::isError($body)) { echo 'Error fetching part number ' . $part['messageID'] . ' in ' . $binary['groupname'] . ' (Server response: ' . $body->getMessage() . ')'; return false; } $dec = $this->decodeYenc($body); if (!$dec) { echo "Yenc decode failure"; return false; } $message .= $dec; } return $message; }
/** * Retrieve all NNTP messages associated with a binaries.ID */ function getBinary($binaryId, $isNfo = false) { $db = new DB(); $bin = new Binaries(); $binary = $bin->getById($binaryId); if (!$binary) { printf("NntpPrc: Unable to locate binary: %s\n", $binaryId); return false; } $summary = $this->selectGroup($binary['groupname']); $message = $dec = ''; if ($this->isError($summary)) { echo "NntpPrc : " . substr($summary->getMessage(), 0, 100) . "\n"; return false; } $resparts = $db->query(sprintf("SELECT size, partnumber, messageID FROM parts WHERE binaryID = %d ORDER BY partnumber", $binaryId)); // // Dont attempt to download nfos which are larger than one part. // if (sizeof($resparts) > 1 && $isNfo === true) { //echo 'NntpPrc : Error Nfo is too large... skipping.\n'; return false; } foreach ($resparts as $part) { $messageID = '<' . $part['messageID'] . '>'; $body = $this->getBody($messageID, true); if ($this->isError($body)) { //echo 'NntpPrc : Error fetching part number '.$part['messageID'].' in '.$binary['groupname'].' (Server response: '. $body->getMessage().')'; return false; } $dec = $this->decodeYenc($body); if (!$dec) { printf("NntpPrc: Unable to decode body of binary: %s\n", $binaryId); // // Yenc decode failed // return false; } $message .= $dec; } return $message; }