From 6d929661f21e118bfc32c7bd054eecba88caba91 Mon Sep 17 00:00:00 2001 From: Darko Date: Thu, 13 Aug 2015 10:06:41 +0200 Subject: [PATCH] Change nzb_guid to binary(16), rename releasecomment table to release_comments. --- misc/testing/DB/populate_nzb_guid.php | 2 +- misc/testing/DB/resetdb.php | 2 +- newznab/build/newznab.xml | 4 +- newznab/controllers/NZB.php | 2 +- newznab/controllers/ReleaseComments.php | 26 ++++----- newznab/controllers/Releases.php | 2 +- newznab/controllers/Sharing.php | 57 ++++++++++++------- newznab/controllers/SpotNab.php | 38 ++++++------- resources/db/patches/0175~releases.sql | 12 ++++ .../db/patches/0176~release_comments.sql | 12 ++++ www/admin/ajax.php | 2 +- www/admin/ajax_sharing_settings.php | 2 +- 12 files changed, 101 insertions(+), 60 deletions(-) create mode 100644 resources/db/patches/0175~releases.sql create mode 100644 resources/db/patches/0176~release_comments.sql diff --git a/misc/testing/DB/populate_nzb_guid.php b/misc/testing/DB/populate_nzb_guid.php index f4ca374bf..544204e2c 100644 --- a/misc/testing/DB/populate_nzb_guid.php +++ b/misc/testing/DB/populate_nzb_guid.php @@ -75,7 +75,7 @@ function create_guids($live, $delete = false) $segment = $file->segments->segment; $nzb_guid = md5($segment); - $pdo->queryExec("UPDATE releases set nzb_guid = " . $pdo->escapestring($nzb_guid) . " WHERE id = " . $relrec["id"]); + $pdo->queryExec("UPDATE releases set nzb_guid = UNHEX(" . $pdo->escapestring($nzb_guid) . ") WHERE id = " . $relrec["id"]); $relcount++; $consoletools->overWritePrimary("Created: [" . $deleted . "] " . $consoletools->percentString($reccnt, $total) . " Time:" . $consoletools->convertTimer(TIME() - $timestart)); break; diff --git a/misc/testing/DB/resetdb.php b/misc/testing/DB/resetdb.php index 550770f4e..78400586d 100644 --- a/misc/testing/DB/resetdb.php +++ b/misc/testing/DB/resetdb.php @@ -30,7 +30,7 @@ $pdo->queryExec("UPDATE groups SET first_record = 0, first_record_postdate = NUL echo $pdo->log->primary("Reseting all groups completed."); $arr = [ - "tvrage", "releasenfo", "releasecomment", 'sharing', 'sharing_sites', + "tvrage", "releasenfo", "release_comments", 'sharing', 'sharing_sites', "usercart", "usermovies", "userseries", "movieinfo", "musicinfo", "releasefiles", "releaseaudio", "releasesubs", "releasevideo", "releaseextrafull", "parts", "partrepair", "binaries", "collections", "releases", "spotnabsources" diff --git a/newznab/build/newznab.xml b/newznab/build/newznab.xml index 253a266f4..5053e15df 100644 --- a/newznab/build/newznab.xml +++ b/newznab/build/newznab.xml @@ -2,8 +2,8 @@ - 174 - 174 + 176 + 176 0.4.1 diff --git a/newznab/controllers/NZB.php b/newznab/controllers/NZB.php index 491f7558e..97682ef65 100644 --- a/newznab/controllers/NZB.php +++ b/newznab/controllers/NZB.php @@ -241,7 +241,7 @@ class NZB UPDATE releases SET nzbstatus = %d %s WHERE id = %d; DELETE FROM %s WHERE releaseid = %d', NZB::NZB_ADDED, - ($nzb_guid === '' ? '' : ', nzb_guid = ' . $this->pdo->escapestring(md5($nzb_guid))), + ($nzb_guid === '' ? '' : ', nzb_guid = UNHEX( ' . $this->pdo->escapestring(md5($nzb_guid)) . ' )'), $relID, $this->_tableNames['cName'], $relID ) ); diff --git a/newznab/controllers/ReleaseComments.php b/newznab/controllers/ReleaseComments.php index 12dc74b80..eea8e0a25 100644 --- a/newznab/controllers/ReleaseComments.php +++ b/newznab/controllers/ReleaseComments.php @@ -27,7 +27,7 @@ class ReleaseComments */ public function getCommentById($id) { - return $this->pdo->queryOneRow(sprintf("SELECT * FROM releasecomment WHERE id = %d", $id)); + return $this->pdo->queryOneRow(sprintf("SELECT * FROM release_comments WHERE id = %d", $id)); } /** @@ -35,7 +35,7 @@ class ReleaseComments */ public function getCommentsByGid($gid) { - return $this->pdo->query(sprintf("SELECT rc.id, text, createddate, sourceid, CASE WHEN sourceid = 0 THEN (SELECT username FROM users WHERE id = userid) ELSE username END AS username, CASE WHEN sourceid = 0 THEN (SELECT role FROM users WHERE id = userid) ELSE '-1' END AS role, CASE WHEN sourceid =0 THEN (SELECT r.name AS rolename FROM users AS u LEFT JOIN userroles AS r ON r.id = u.role WHERE u.id = userid) ELSE (SELECT description AS rolename FROM spotnabsources WHERE id = sourceid) END AS rolename FROM releasecomment rc WHERE isvisible = 1 AND gid = %s AND (userid IN (SELECT id FROM users) OR rc.username IS NOT NULL) ORDER BY createddate DESC LIMIT 100", $this->pdo->escapeString($gid))); + return $this->pdo->query(sprintf("SELECT rc.id, text, createddate, sourceid, CASE WHEN sourceid = 0 THEN (SELECT username FROM users WHERE id = userid) ELSE username END AS username, CASE WHEN sourceid = 0 THEN (SELECT role FROM users WHERE id = userid) ELSE '-1' END AS role, CASE WHEN sourceid =0 THEN (SELECT r.name AS rolename FROM users AS u LEFT JOIN userroles AS r ON r.id = u.role WHERE u.id = userid) ELSE (SELECT description AS rolename FROM spotnabsources WHERE id = sourceid) END AS rolename FROM release_comments rc WHERE isvisible = 1 AND gid = %s AND (userid IN (SELECT id FROM users) OR rc.username IS NOT NULL) ORDER BY createddate DESC LIMIT 100", $this->pdo->escapeString($gid))); } /** @@ -43,7 +43,7 @@ class ReleaseComments */ public function getCommentsByGuid($guid) { - return $this->pdo->query(sprintf("SELECT rc.id, text, createddate, sourceid, CASE WHEN sourceid = 0 THEN (SELECT username FROM users WHERE id = userid) ELSE username END AS username FROM releasecomment rc LEFT JOIN releases r ON r.gid = rc.gid WHERE isvisible = 1 AND guid = %s AND (userid IN (SELECT id FROM users) OR rc.username IS NOT NULL) ORDER BY createddate DESC LIMIT 100", $this->pdo->escapeString($guid))); + return $this->pdo->query(sprintf("SELECT rc.id, text, createddate, sourceid, CASE WHEN sourceid = 0 THEN (SELECT username FROM users WHERE id = userid) ELSE username END AS username FROM release_comments rc LEFT JOIN releases r ON r.gid = rc.gid WHERE isvisible = 1 AND guid = %s AND (userid IN (SELECT id FROM users) OR rc.username IS NOT NULL) ORDER BY createddate DESC LIMIT 100", $this->pdo->escapeString($guid))); } /** @@ -64,7 +64,7 @@ class ReleaseComments } } - $q = "SELECT count(id) AS num FROM releasecomment"; + $q = "SELECT count(id) AS num FROM release_comments"; $clause = []; if($refdate !== Null) $clause[] = "createddate >= '$refdate'"; @@ -93,7 +93,7 @@ class ReleaseComments $res = $this->getCommentById($id); if ($res) { - $this->pdo->queryExec(sprintf("update releasecomment SET isvisible = 0 WHERE id = %d", $id)); + $this->pdo->queryExec(sprintf("update release_comments SET isvisible = 0 WHERE id = %d", $id)); $this->updateReleaseCommentCount($res["gid"]); } } @@ -106,7 +106,7 @@ class ReleaseComments $res = $this->getCommentById($id); if ($res) { - $this->pdo->queryExec(sprintf("DELETE rc.* FROM releasecomment rc JOIN releases r ON r.gid = rc.gid WHERE r.id = %d", $id)); + $this->pdo->queryExec(sprintf("DELETE rc.* FROM release_comments rc JOIN releases r ON r.gid = rc.gid WHERE r.id = %d", $id)); $this->updateReleaseCommentCount($res["gid"]); } } @@ -129,7 +129,7 @@ class ReleaseComments } /** - * Add a releasecomment row. + * Add a release_comments row. */ public function addComment($id, $gid, $text, $userid, $host) { @@ -139,13 +139,13 @@ class ReleaseComments if ($this->pdo->getSetting('storeuserips') != "1") $host = ""; - $comid = $this->pdo->queryInsert(sprintf("INSERT INTO releasecomment (releaseid, gid, text, userid, createddate, host) VALUES (%d, %s, %s, %d, now(), %s)", $id, $this->pdo->escapeString($gid), $this->pdo->escapeString($text), $userid, $this->pdo->escapeString($host))); + $comid = $this->pdo->queryInsert(sprintf("INSERT INTO release_comments (releaseid, gid, text, userid, createddate, host) VALUES (%d, %s, %s, %d, now(), %s)", $id, $this->pdo->escapeString($gid), $this->pdo->escapeString($text), $userid, $this->pdo->escapeString($host))); $this->updateReleaseCommentCount($gid); return $comid; } /** - * Get releasecomment rows by limit. + * Get release_comments rows by limit. */ public function getCommentsRange($start, $num) { @@ -154,7 +154,7 @@ class ReleaseComments else $limit = " LIMIT ".$start.",".$num; - $sql = "SELECT rc.id, userid, guid, text, createddate, sourceid, CASE WHEN sourceID = 0 THEN (SELECT username FROM users WHERE id = userid) ELSE username END AS username, CASE WHEN sourceid = 0 THEN (SELECT role FROM users WHERE id = userid) ELSE '-1' END AS role, CASE WHEN sourceid =0 THEN (SELECT r.name AS rolename FROM users AS u LEFT JOIN userroles AS r ON r.id = u.role WHERE u.id = userid) ELSE (SELECT description AS rolename FROM spotnabsources WHERE id = sourceid) END AS rolename FROM releasecomment rc LEFT JOIN releases r ON r.gid = rc.gid WHERE isvisible = 1 AND (userid IN (SELECT id FROM users) OR rc.username IS NOT NULL) ORDER BY createddate DESC ".$limit; + $sql = "SELECT rc.id, userid, guid, text, createddate, sourceid, CASE WHEN sourceID = 0 THEN (SELECT username FROM users WHERE id = userid) ELSE username END AS username, CASE WHEN sourceid = 0 THEN (SELECT role FROM users WHERE id = userid) ELSE '-1' END AS role, CASE WHEN sourceid =0 THEN (SELECT r.name AS rolename FROM users AS u LEFT JOIN userroles AS r ON r.id = u.role WHERE u.id = userid) ELSE (SELECT description AS rolename FROM spotnabsources WHERE id = sourceid) END AS rolename FROM release_comments rc LEFT JOIN releases r ON r.gid = rc.gid WHERE isvisible = 1 AND (userid IN (SELECT id FROM users) OR rc.username IS NOT NULL) ORDER BY createddate DESC ".$limit; return $this->pdo->query($sql); } @@ -164,7 +164,7 @@ class ReleaseComments public function updateReleaseCommentCount($gid) { $this->pdo->queryExec(sprintf("update releases - SET comments = (SELECT count(id) FROM releasecomment WHERE releasecomment.gid = releases.gid AND isvisible = 1) + SET comments = (SELECT count(id) FROM release_comments WHERE release_comments.gid = releases.gid AND isvisible = 1) WHERE releases.gid = %s", $this->pdo->escapeString($gid) )); } @@ -173,7 +173,7 @@ class ReleaseComments */ public function getCommentCountForUser($uid) { - $res = $this->pdo->queryOneRow(sprintf("SELECT count(id) AS num FROM releasecomment WHERE userid = %d AND isvisible = 1", $uid)); + $res = $this->pdo->queryOneRow(sprintf("SELECT count(id) AS num FROM release_comments WHERE userid = %d AND isvisible = 1", $uid)); return $res["num"]; } @@ -187,6 +187,6 @@ class ReleaseComments else $limit = " LIMIT ".$start.",".$num; - return $this->pdo->query(sprintf("SELECT releasecomment.*, r.guid, r.searchname, users.username FROM releasecomment INNER JOIN releases r ON r.id = releasecomment.releaseid LEFT OUTER JOIN users ON users.id = releasecomment.userid WHERE userid = %d ORDER BY releasecomment.createddate DESC ".$limit, $uid)); + return $this->pdo->query(sprintf("SELECT release_comments.*, r.guid, r.searchname, users.username FROM release_comments INNER JOIN releases r ON r.id = release_comments.releaseid LEFT OUTER JOIN users ON users.id = release_comments.userid WHERE userid = %d ORDER BY release_comments.createddate DESC ".$limit, $uid)); } } diff --git a/newznab/controllers/Releases.php b/newznab/controllers/Releases.php index ed7aaf17a..ebceaf971 100644 --- a/newznab/controllers/Releases.php +++ b/newznab/controllers/Releases.php @@ -734,7 +734,7 @@ class Releases DELETE r, rn, rc, uc, rf, ra, rs, rv, re FROM releases r LEFT OUTER JOIN releasenfo rn ON rn.releaseid = r.id - LEFT OUTER JOIN releasecomment rc ON rc.releaseid = r.id + LEFT OUTER JOIN release_comments rc ON rc.releaseid = r.id LEFT OUTER JOIN usercart uc ON uc.releaseid = r.id LEFT OUTER JOIN releasefiles rf ON rf.releaseid = r.id LEFT OUTER JOIN releaseaudio ra ON ra.releaseid = r.id diff --git a/newznab/controllers/Sharing.php b/newznab/controllers/Sharing.php index b63daf7b6..21c7a02d7 100644 --- a/newznab/controllers/Sharing.php +++ b/newznab/controllers/Sharing.php @@ -37,7 +37,7 @@ Class Sharing * max_pull Max articles to download per run. * * ------------------------------------------- - * releasecomments table (modifications) + * release_comments table (modifications) * ------------------------------------------- * shared Has this comment been shared or have we received it from another site. (0 not shared, 1 shared, 2 received) * shareid Unique identifier to know if we already have the comment or not. @@ -170,8 +170,8 @@ Class Sharing // Get all comments that we have not posted yet. $newComments = $this->pdo->query( sprintf( - 'SELECT rc.text, rc.id, %s, u.username, r.nzb_guid - FROM releasecomment rc + 'SELECT rc.text, rc.id, %s, u.username, HEX(r.nzb_guid) AS nzb_guid + FROM release_comments rc INNER JOIN users u ON rc.userid = u.id INNER JOIN releases r on rc.releaseid = r.id WHERE (rc.shared = 0 or issynced = 1) LIMIT %d', @@ -208,7 +208,7 @@ Class Sharing $newComments = $this->pdo->query( sprintf( 'SELECT id, text, UNIX_TIMESTAMP(createddate) AS unix_time, - username, nzb_guid FROM releasecomment + username, nzb_guid FROM release_comments WHERE issynced = 1 AND shared = 1 AND shareid IS NULL ORDER BY id DESC' ) @@ -244,7 +244,7 @@ Class Sharing $sid = sha1($row['unix_time'] . $row['text'] . $row['nzb_guid']); // Check if the comment is already shared. - $check = $this->pdo->queryOneRow(sprintf('SELECT id FROM releasecomment WHERE shareid = %s', $this->pdo->escapeString($sid))); + $check = $this->pdo->queryOneRow(sprintf('SELECT id FROM release_comments WHERE shareid = %s', $this->pdo->escapeString($sid))); if ($check === false) { // Example of a subject. @@ -272,7 +272,7 @@ Class Sharing // Update DB to say we posted the article. $this->pdo->queryExec( sprintf(' - UPDATE releasecomment + UPDATE release_comments SET shared = 1, shareid = %s WHERE id = %d', $this->pdo->escapeString($sid), @@ -285,38 +285,55 @@ Class Sharing } } else { // Update the DB to say it's shared. - $this->pdo->queryExec(sprintf('UPDATE releasecomment SET shared = 1 WHERE id = %d', $row['id'])); + $this->pdo->queryExec(sprintf('UPDATE release_comments SET shared = 1 WHERE id = %d', $row['id'])); } } /** * Match added comments to releases. + * + * @access protected */ protected function matchComments() { $res = $this->pdo->query(' - SELECT r.id, r.nzb_guid - FROM releases r - INNER JOIN releasecomment rc ON rc.nzb_guid = r.nzb_guid + SELECT r.id + FROM release_comments rc + INNER JOIN releases r USING (nzb_guid) WHERE rc.releaseid = 0' ); - $found = count($res); if ($found > 0) { foreach ($res as $row) { $this->pdo->queryExec( - sprintf( - "UPDATE releasecomment SET releaseid = %d WHERE nzb_guid = %s", + sprintf(" + UPDATE release_comments rc + INNER JOIN releases r USING (nzb_guid) + SET rc.releaseid = %d, r.comments = r.comments + 1 + WHERE r.id = %d + AND rc.releaseid = 0", $row['id'], - $this->pdo->escapeString($row['nzb_guid']) + $row['id'] ) ); - $this->pdo->queryExec(sprintf('UPDATE releases SET comments = comments + 1 WHERE id = %d', $row['id'])); } - - echo '(Sharing) Matched ' . $found . ' comments.' . PHP_EOL; - + if (NN_ECHOCLI) { + echo "(Sharing) Matched $found comments." . PHP_EOL; + } } + + // Update first time seen. + $this->pdo->queryExec( + sprintf(" + UPDATE sharing_sites ss + INNER JOIN release_comments rc ON rc.siteid = ss.site_guid + SET ss.first_time = rc.createddate + WHERE rc.createddate > '2005-01-01' + GROUP BY rc.siteid + ORDER BY rc.createddate ASC + " + ) + ); } /** @@ -404,7 +421,7 @@ Class Sharing // Check if we already have the comment. $check = $this->pdo->queryOneRow( - sprintf('SELECT id FROM releasecomment WHERE shareid = %s', + sprintf('SELECT id FROM release_comments WHERE shareid = %s', $this->pdo->escapeString($matches['sid']) ) ); @@ -532,7 +549,7 @@ Class Sharing // Insert the comment. if ($this->pdo->queryExec( sprintf(' - INSERT IGNORE INTO releasecomment + INSERT IGNORE INTO release_comments (text, createddate, issynced, shareid, cid, gid, nzb_guid, siteid, username, userid, releaseid, shared, host, sourceID) VALUES (%s, %s, 1, %s, %s, %s, %s, %s, %s, 0, 0, 2, "", 999)', $this->pdo->escapeString($body['BODY']), diff --git a/newznab/controllers/SpotNab.php b/newznab/controllers/SpotNab.php index 91ac6a6dd..3bb5181a5 100644 --- a/newznab/controllers/SpotNab.php +++ b/newznab/controllers/SpotNab.php @@ -276,14 +276,14 @@ class SpotNab { // this is to address people who do not wish to hold on to // comments they do not have a release for... Makes sense :) $offset = 0; - $sql = "SELECT DISTINCT(gid) as gid FROM releasecomment " + $sql = "SELECT DISTINCT(gid) as gid FROM release_comments " ."WHERE releaseid = 0 " ."AND createddate < NOW() - INTERVAL $max_days DAY " ."ORDER BY createddate " ."LIMIT %d,%d"; $sql_rel = "SELECT gid FROM releases WHERE gid IN ('%s') "; - $sql_del = "DELETE FROM releasecomment WHERE gid IN ('%s')"; + $sql_del = "DELETE FROM release_comments WHERE gid IN ('%s')"; $total_delcnt = 0; $db = new Settings(); while(1) @@ -958,20 +958,20 @@ class SpotNab { } # Batch update for comment table - /*$usql = 'UPDATE releasecomment, releases ' - .'SET releasecomment.gid = releases.gid, ' - .'releasecomment.nzb_guid = releases.nzb_guid ' - .'WHERE releases.id = releasecomment.releaseid ' - .'AND releasecomment.gid IS NULL ' - .'AND releasecomment.nzb_guid = "" ' + /*$usql = 'UPDATE release_comments, releases ' + .'SET release_comments.gid = releases.gid, ' + .'release_comments.nzb_guid = releases.nzb_guid ' + .'WHERE releases.id = release_comments.releaseid ' + .'AND release_comments.gid IS NULL ' + .'AND release_comments.nzb_guid = "" ' .'AND releases.nzb_guid IS NOT NULL ' .'AND releases.gid IS NOT NULL ';*/ - $affected = $db->queryExec(sprintf('UPDATE releasecomment, releases SET releasecomment.gid = releases.gid, - releasecomment.nzb_guid = releases.nzb_guid - WHERE releases.id = releasecomment.releaseid - AND releasecomment.gid IS NULL - AND releasecomment.nzb_guid = "" + $affected = $db->queryExec(sprintf('UPDATE release_comments, releases SET release_comments.gid = releases.gid, + release_comments.nzb_guid = releases.nzb_guid + WHERE releases.id = release_comments.releaseid + AND release_comments.gid IS NULL + AND release_comments.nzb_guid = "" AND releases.nzb_guid IS NOT NULL AND releases.gid IS NOT NULL ' ) @@ -1299,14 +1299,14 @@ class SpotNab { $rc = new ReleaseComments(); // Comments - $sql_new_cmt = "INSERT INTO releasecomment (". + $sql_new_cmt = "INSERT INTO release_comments (". "id, sourceid, username, userid, gid, cid, isvisible, ". "releaseid, `text`, createddate, issynced, nzb_guid) VALUES (". "NULL, %d, %s, 0, %s, %s, %d, 0, %s, %s, 1, %s)"; - $sql_upd_cmt = "UPDATE releasecomment SET ". + $sql_upd_cmt = "UPDATE release_comments SET ". "isvisible = %d, `text` = %s". "WHERE sourceid = %d AND gid = %s AND cid = %s AND nzb_guid = %s"; - $sql_fnd_cmt = "SELECT count(id) as cnt FROM releasecomment ". + $sql_fnd_cmt = "SELECT count(id) as cnt FROM release_comments ". "WHERE sourceid = %d AND gid = %s AND cid = %s"; // Sync Times @@ -1829,7 +1829,7 @@ class SpotNab { $message['comments'] = $data['comments']; $db = new Settings(); - $sql = sprintf("UPDATE releasecomment " + $sql = sprintf("UPDATE release_comments " ."SET issynced = 1 WHERE id IN (%s)", implode(",", $data['ids'])); @@ -2182,7 +2182,7 @@ class SpotNab { // Now we fetch for any new posts since reference point $sql = sprintf("SELECT r.gid, rc.id, rc.text, u.username, " ."rc.isvisible, rc.createddate, rc.host " - ."FROM releasecomment rc " + ."FROM release_comments rc " ."JOIN releases r ON r.id = rc.releaseid AND rc.releaseid != 0 " ."JOIN users u ON rc.userid = u.id AND rc.userid != 0 " ."WHERE r.gid IS NOT NULL " @@ -2423,7 +2423,7 @@ class SpotNab { { $db = new Settings(); return $db->query("SELECT id, lastupdate,lastbroadcast, active, description, " - ."(SELECT count(id) from releasecomment where sourceid = s.id)" + ."(SELECT count(id) from release_comments where sourceid = s.id)" ." AS comments FROM spotnabsources s"); } diff --git a/resources/db/patches/0175~releases.sql b/resources/db/patches/0175~releases.sql new file mode 100644 index 000000000..fb40495e7 --- /dev/null +++ b/resources/db/patches/0175~releases.sql @@ -0,0 +1,12 @@ +# This patch will create a temp table like releases +# Then it will alter the nzb_guid column to be BINARY(16) +# It will insert all data from releases into the temp table while unhexing nzb_guid +# Drop old releases table +# Rename new releases temp table to releases + +CREATE TABLE releases_tmp LIKE releases; +ALTER TABLE releases_tmp MODIFY nzb_guid BINARY(16) NULL; +INSERT INTO releases_tmp (SELECT id, gid, name, searchname, totalpart, groupid, size, postdate, adddate, updatedate, guid, fromname, completion, categoryid, regexid, rageid, tvdbid, seriesfull, season, episode, tvtitle, tvairdate, imdbid, episodeinfoid, xxxinfo_id, musicinfoid, consoleinfoid, gamesinfo_id, bookinfoid, anidbid, reqid, releasenfoid, preid, prehashid, grabs, comments, passwordstatus, rarinnerfilecount, haspreview, nfostatus, jpgstatus, videostatus, audiostatus, dehashstatus, reqidstatus, UNHEX(nzb_guid), nzbstatus, iscategorized, isrenamed, ishashed, isrequestid, proc_pp, proc_sorter, proc_par2, proc_nfo, proc_files FROM releases); + +DROP TABLE releases; +ALTER TABLE releases_tmp RENAME releases; \ No newline at end of file diff --git a/resources/db/patches/0176~release_comments.sql b/resources/db/patches/0176~release_comments.sql new file mode 100644 index 000000000..0e92a1b10 --- /dev/null +++ b/resources/db/patches/0176~release_comments.sql @@ -0,0 +1,12 @@ +# This patch will create a temp table like releasecomment +# Then it will alter the nzb_guid column to be BINARY(16) +# It will insert all data from releasecomment into the temp table while unhexing nzb_guid +# Drop old releasecomment table +# Rename new release_comments temp table to release_comments + +CREATE TABLE release_comments_tmp LIKE releasecomment; +ALTER TABLE release_comments_tmp MODIFY nzb_guid BINARY(16) NOT NULL DEFAULT '0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'; +INSERT INTO release_comments_tmp (SELECT id, sourceid, gid, cid, releaseid, text, isvisible, issynced, username, userid, createddate, host, shared, shareid, siteid, UNHEX(nzb_guid), text_hash FROM releasecomment); + +DROP TABLE releasecomment; +ALTER TABLE release_comments_tmp RENAME release_comments; \ No newline at end of file diff --git a/www/admin/ajax.php b/www/admin/ajax.php index a2c24457a..f0cd655e9 100644 --- a/www/admin/ajax.php +++ b/www/admin/ajax.php @@ -103,7 +103,7 @@ switch($_GET['action']) { if ($guid === false) { print 'Error purging site ' . $_GET['purge_site'] . '!'; } else { - $ids = $admin->settings->query(sprintf('SELECT id FROM releasecomment WHERE siteid = %s', $admin->settings->escapeString($guid['site_guid']))); + $ids = $admin->settings->query(sprintf('SELECT id FROM release_comments WHERE siteid = %s', $admin->settings->escapeString($guid['site_guid']))); $total = count($ids); if ($total > 0) { $rc = new ReleaseComments($admin->settings); diff --git a/www/admin/ajax_sharing_settings.php b/www/admin/ajax_sharing_settings.php index fec342120..f9596ad34 100644 --- a/www/admin/ajax_sharing_settings.php +++ b/www/admin/ajax_sharing_settings.php @@ -85,7 +85,7 @@ else if (isset($_GET['purge_site'])) { if ($guid === false) { print 'Error purging site ' . $_GET['purge_site'] . '!'; } else { - $ids = $db->query(sprintf('SELECT id FROM releasecomment WHERE siteid = %s', $db->escapeString($guid['site_guid']))); + $ids = $db->query(sprintf('SELECT id FROM release_comments WHERE siteid = %s', $db->escapeString($guid['site_guid']))); $total = count($ids); if ($total > 0) { $rc = new ReleaseComments();