FROM releases r WHERE r.guid %s AND r.nzbstatus = 1 AND r.proc_par2 = 0 AND r.preid = 0 ORDER BY r.postdate ASC LIMIT %s', $pdo->likeString($guidChar, false, true), $maxperrun)); if ($releases instanceof Traversable) { $nntp = new NNTP(['Settings' => $pdo]); if (($pdo->getSetting('alternate_nntp') == '1' ? $nntp->doConnect(true, true) : $nntp->doConnect()) !== true) { exit($pdo->log->error("Unable to connect to usenet.")); } $Nfo = new Nfo(['Settings' => $pdo, 'Echo' => true]); $nzbcontents = new NZBContents(array('Echo' => true, 'NNTP' => $nntp, 'Nfo' => $Nfo, 'Settings' => $pdo, 'PostProcess' => new PostProcess(['Settings' => $pdo, 'Nfo' => $Nfo, 'NameFixer' => $namefixer]))); foreach ($releases as $release) { $res = $nzbcontents->checkPAR2($release['guid'], $release['releaseid'], $release['group_id'], 1, 1); if ($res === false) { echo '.'; } } } break; case $pieces[0] === 'miscsorter' && isset($guidChar) && isset($maxperrun) && is_numeric($maxperrun): $releases = $pdo->queryDirect(sprintf(' SELECT r.id AS releaseid FROM releases r WHERE r.guid %s AND r.nzbstatus = 1 AND r.nfostatus = 1 AND r.proc_sorter = 0 AND r.isrenamed = 0 AND r.preid = 0 ORDER BY r.postdate DESC
$db->queryExec(sprintf("UPDATE releases SET dehashstatus = %d - 1 WHERE id = %d", $res['dehashstatus'], $res['releaseid'])); echo '.'; } } } } else { if (isset($pieces[1]) && $pieces[0] == 'par2') { $nntp = new NNTP(); if ($nntp->doConnect() === false) { exit($c->error("Unable to connect to usenet.")); } $relID = $pieces[1]; $guid = $pieces[2]; $groupID = $pieces[3]; $nzbcontents = new NZBContents(array('echo' => true, 'nntp' => $nntp, 'nfo' => new Info(), 'db' => $db, 'pp' => new PProcess(['Settings' => $pdo, 'Nfo' => $Nfo, 'NameFixer' => $namefixer]))); $res = $nzbcontents->checkPAR2($guid, $relID, $groupID, 1, 1); if ($res === false) { echo '.'; } $nntp->doQuit(); } else { if (isset($pieces[1]) && $pieces[0] == 'predbft') { $pre = $pieces[1]; if ($res = $db->queryOneRow(sprintf('SELECT id AS preid, title, source, searched FROM prehash ' . 'WHERE id = %d', $pre))) { $namefixer->done = $namefixer->matched = false; $ftmatched = $searched = 0; $ftmatched = $namefixer->matchPredbFT($res, 1, 1, true, 1); if ($ftmatched > 0) { $searched = 1; } elseif ($ftmatched < 0) { $searched = -6;
/** * Attempts to fix release names using the Par2 File. * * @param int $time 1: 24 hours, 2: no time limit * @param int $echo 1: change the name, anything else: preview of what could have been changed. * @param int $cats 1: other categories, 2: all categories * @param $nameStatus * @param $show * @param NNTP $nntp */ public function fixNamesWithPar2($time, $echo, $cats, $nameStatus, $show, $nntp) { $this->_echoStartMessage($time, 'par2 files'); if ($cats === 3) { $query = sprintf(' SELECT rel.id AS releaseid, rel.guid, rel.groupid FROM releases rel WHERE nzbstatus = %d AND prehashid = 0', Enzebe::NZB_ADDED); $cats = 2; } else { $query = sprintf(' SELECT rel.id AS releaseid, rel.guid, rel.groupid FROM releases rel WHERE (isrenamed = %d OR rel.categoryid = %d) AND proc_par2 = %d', self::IS_RENAMED_NONE, Category::CAT_MISC_OTHER, self::PROC_PAR2_NONE); } $releases = $this->_getReleases($time, $cats, $query); if ($releases instanceof Traversable && $releases !== false) { $total = $releases->rowCount(); if ($total > 0) { $this->_totalReleases = $total; echo $this->pdo->log->primary(number_format($total) . ' releases to process.'); $Nfo = new Nfo(['Echo' => $this->echooutput, 'Settings' => $this->pdo]); $nzbContents = new NZBContents(['Echo' => $this->echooutput, 'NNTP' => $nntp, 'Nfo' => $Nfo, 'Settings' => $this->pdo, 'PostProcess' => new PostProcess(['Settings' => $this->pdo, 'Nfo' => $Nfo])]); foreach ($releases as $release) { if ($nzbContents->checkPAR2($release['guid'], $release['releaseid'], $release['groupid'], $nameStatus, $show) === true) { $this->fixed++; } $this->checked++; $this->_echoRenamed($show); } $this->_echoFoundCount($echo, ' files'); } else { echo $this->pdo->log->alternate('Nothing to fix.'); } } }