/** * Used for release edit page on site. * * @param int $ID * @param string $name * @param string $searchName * @param string $fromName * @param int $categoryID * @param int $parts * @param int $grabs * @param int $size * @param string $postedDate * @param string $addedDate * @param int $rageID * @param string $seriesFull * @param string $season * @param string $episode * @param int $imDbID * @param int $aniDbID */ public function update($ID, $name, $searchName, $fromName, $categoryID, $parts, $grabs, $size, $postedDate, $addedDate, $rageID, $seriesFull, $season, $episode, $imDbID, $aniDbID) { $this->pdo->queryExec(sprintf('UPDATE releases SET name = %s, searchname = %s, fromname = %s, categoryid = %d, totalpart = %d, grabs = %d, size = %s, postdate = %s, adddate = %s, rageid = %d, seriesfull = %s, season = %s, episode = %s, imdbid = %d, anidbid = %d WHERE id = %d', $this->pdo->escapeString($name), $this->pdo->escapeString($searchName), $this->pdo->escapeString($fromName), $categoryID, $parts, $grabs, $this->pdo->escapeString($size), $this->pdo->escapeString($postedDate), $this->pdo->escapeString($addedDate), $rageID, $this->pdo->escapeString($seriesFull), $this->pdo->escapeString($season), $this->pdo->escapeString($episode), $imDbID, $aniDbID, $ID)); $this->sphinxSearch->updateRelease($ID, $this->pdo); }
/** * Update the release with the new information. * * @param array $release * @param string $name * @param string $method * @param boolean $echo * @param string $type * @param int $nameStatus * @param int $show * @param int $preId */ public function updateRelease($release, $name, $method, $echo, $type, $nameStatus, $show, $preId = 0) { if ($this->relid !== $release['releaseid']) { $releaseCleaning = new ReleaseCleaning($this->pdo); $newName = $releaseCleaning->fixerCleaner($name); if (strtolower($newName) != strtolower($release["searchname"])) { $this->matched = true; $this->relid = $release["releaseid"]; $determinedCategory = $this->category->determineCategory($release['group_id'], $newName); if ($type === "PAR2, ") { $newName = ucwords($newName); if (preg_match('/(.+?)\\.[a-z0-9]{2,3}(PAR2)?$/i', $name, $match)) { $newName = $match[1]; } } $this->fixed++; $newName = explode("\\", $newName); $newName = preg_replace(['/^[-=_\\.:\\s]+/', '/[-=_\\.:\\s]+$/'], '', $newName[0]); if ($this->echooutput === true && $show === 1) { $groupName = $this->_groups->getByNameByID($release['group_id']); $oldCatName = $this->category->getNameByID($release['categoryid']); $newCatName = $this->category->getNameByID($determinedCategory); if ($type === "PAR2, ") { echo PHP_EOL; } echo $this->pdo->log->headerOver("\nNew name: ") . $this->pdo->log->primary(substr($newName, 0, 255)) . $this->pdo->log->headerOver("Old name: ") . $this->pdo->log->primary($release["searchname"]) . $this->pdo->log->headerOver("Use name: ") . $this->pdo->log->primary($release["name"]) . $this->pdo->log->headerOver("New cat: ") . $this->pdo->log->primary($newCatName) . $this->pdo->log->headerOver("Old cat: ") . $this->pdo->log->primary($oldCatName) . $this->pdo->log->headerOver("Group: ") . $this->pdo->log->primary($groupName) . $this->pdo->log->headerOver("Method: ") . $this->pdo->log->primary($type . $method) . $this->pdo->log->headerOver("ReleaseID: ") . $this->pdo->log->primary($release["releaseid"]); if (isset($release['filename']) && $release['filename'] != "") { echo $this->pdo->log->headerOver("Filename: ") . $this->pdo->log->primary($release["filename"]); } if ($type !== "PAR2, ") { echo "\n"; } } $newTitle = $this->pdo->escapeString(substr($newName, 0, 255)); if ($echo == true) { if ($nameStatus == 1) { $status = ''; switch ($type) { case "NFO, ": $status = "isrenamed = 1, iscategorized = 1, proc_nfo = 1,"; break; case "PAR2, ": $status = "isrenamed = 1, iscategorized = 1, proc_par2 = 1,"; break; case "Filenames, ": case "file matched source: ": $status = "isrenamed = 1, iscategorized = 1, proc_files = 1,"; break; case "SHA1, ": case "MD5, ": $status = "isrenamed = 1, iscategorized = 1, dehashstatus = 1,"; break; case "PreDB FT Exact, ": $status = "isrenamed = 1, iscategorized = 1,"; break; case "sorter ": $status = "isrenamed = 1, iscategorized = 1, proc_sorter = 1,"; break; } $this->pdo->queryExec(sprintf(' UPDATE releases SET videos_id = 0, tv_episodes_id = 0, imdbid = NULL, musicinfoid = NULL, consoleinfoid = NULL, bookinfoid = NULL, anidbid = NULL, preid = %d, searchname = %s, %s categoryid = %d WHERE id = %d', $preId, $newTitle, $status, $determinedCategory, $release['releaseid'])); $this->sphinx->updateRelease($release['releaseid'], $this->pdo); } else { $newTitle = $this->pdo->escapeString(substr($newName, 0, 255)); $this->pdo->queryExec(sprintf(' UPDATE releases SET videos_id = 0, tv_episodes_id = 0, imdbid = NULL, musicinfoid = NULL, consoleinfoid = NULL, bookinfoid = NULL, anidbid = NULL, preid = %d, searchname = %s, iscategorized = 1, categoryid = %d WHERE id = %d', $preId, $newTitle, $determinedCategory, $release['releaseid'])); $this->sphinx->updateRelease($release['releaseid'], $this->pdo); } } } } $this->done = true; }
} $rename = false; if ($argv[3] === 'true') { $rename = true; } $pdo = new Settings(); $group = $pdo->queryOneRow(sprintf('SELECT id FROM groups WHERE name = %s', $pdo->escapeString($argv[1]))); if ($group === false) { exit('No group with name ' . $argv[1] . ' found in the database.'); } $releases = $pdo->query(sprintf('SELECT name, searchname, fromname, size, id FROM releases WHERE group_id = %d %s ORDER BY postdate LIMIT %d', $group['id'], $category, $argv[2])); if (count($releases) === 0) { exit('No releases found in your database for group ' . $argv[1] . PHP_EOL); } $RC = new ReleaseCleaning($pdo); $sphinx = new SphinxSearch(); foreach ($releases as $release) { $newName = $RC->releaseCleaner($release['name'], $release['fromname'], $release['size'], $argv[1]); if (is_array($newName)) { $newName = $newName['cleansubject']; } if ($newName !== $release['searchname']) { echo 'Old name: ' . $release['searchname'] . PHP_EOL; echo 'New name: ' . $newName . PHP_EOL . PHP_EOL; if ($rename === true) { $newName = $pdo->escapeString($newName); $pdo->queryExec(sprintf('UPDATE releases SET searchname = %s WHERE id = %d', $newName, $release['id'])); $sphinx->updateRelease($release['id']); } } }
if (isset($argv[1]) && $argv[1] == "full") { $res = $pdo->query("SELECT releases.id, releases.name, releases.fromname, releases.size, groups.name AS gname FROM releases INNER JOIN groups ON releases.group_id = groups.id"); if (count($res) > 0) { echo $pdo->log->header("Going to recreate all search names, recategorize them and fix the names with namefixer, this can take a while."); $done = 0; $timestart = time(); $consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]); $rc = new ReleaseCleaning($pdo); foreach ($res as $row) { $newname = $rc->releaseCleaner($row['name'], $row['fromname'], $row['size'], $row['gname']); if (is_array($newname)) { $newname = $newname['cleansubject']; } $newname = $pdo->escapeString($newname); $pdo->queryExec(sprintf("UPDATE releases SET searchname = %s WHERE id = %d", $newname, $row['id'])); $sphinx->updateRelease($row['id']); $done++; $consoletools->overWritePrimary("Renaming:" . $consoletools->percentString($done, count($res))); } $timenc = $consoletools->convertTime(time() - $timestart); echo $pdo->log->primary("\n" . $done . " releases renamed in " . $timenc . ".\nNow the releases will be recategorized."); $releases = new ProcessReleases(['Settings' => $pdo, 'ConsoleTools' => $consoletools, 'ReleaseCleaning' => $rc]); $releases->resetCategorize(); $categorized = $releases->categorizeRelease("name", ""); $timecat = $consoletools->convertTime(time() - $timestart); echo $pdo->log->primary("\nFinished categorizing " . $categorized . " releases in " . $timecat . ".\nFinally, the releases will be fixed using the NFO/filenames."); $namefixer = new NameFixer(['Settings' => $pdo, 'ConsoleTools' => $consoletools]); $namefixer->fixNamesWithNfo(2, 1, 1, 1, $show); $namefixer->fixNamesWithFiles(2, 1, 1, 1, $show); $timetotal = $consoletools->convertTime(time() - $timestart); echo $pdo->log->header("\nFinished recreating search names / recategorizing / refixing names in " . $timetotal);
/** * Delete release files for a release ID. * * @param int $id The release ID. * * @return mixed */ public function delete($id) { $res = $this->pdo->queryExec(sprintf("DELETE FROM release_files WHERE releaseid = %d", $id)); $this->sphinxSearch->updateRelease($id, $this->pdo); return $res; }