log->header("SELECT title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, g.name FROM " . $table . " p LEFT OUTER JOIN groups g ON p.groupid = g.id INTO OUTFILE '" . $path . "' FIELDS TERMINATED BY '\\t\\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\\r\\n';n"); $pdo->queryDirect("SELECT title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, g.name FROM " . $table . " p LEFT OUTER JOIN groups g ON p.groupid = g.id INTO OUTFILE '" . $path . "' FIELDS TERMINATED BY '\t\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\r\n'"); } else if (isset($argv[1]) && ($argv[1] == 'local' || $argv[1] == 'remote') && isset($argv[2]) && is_file($argv[2])) { if (!preg_match('/^\//', $path)) { $path = require_once getcwd() . '/' . $argv[2]; } if (isset($argv[3])) { $table = $argv[3]; } else { $table = 'prehash'; } // Truncate prehash_imports to clear any old data $pdo->queryDirect("TRUNCATE TABLE prehash_imports"); // Import file into prehash_imports if ($argv[1] == 'remote') { echo $pdo->log->header("LOAD DATA LOCAL INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\\t\\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\\r\\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname);"); $pdo->queryDirect("LOAD DATA LOCAL INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\t\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\r\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname)"); } else { echo $pdo->log->header("LOAD DATA INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\\t\\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\\r\\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname);"); $pdo->queryDirect("LOAD DATA INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\t\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\r\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname)"); } // Remove any titles where length <=8 echo $pdo->log->info("Deleting any records where title <=8 from Temporary Table"); $pdo->queryDirect("DELETE FROM prehash_imports WHERE LENGTH(title) <= 8"); // Add any groups that do not currently exist $sqlAddGroups = <<queryDirect($sqlAddGroups); // Drop triggers on prehash echo $pdo->log->info("Dropping predb_hashes triggers"); $pdo->queryDirect("DROP TRIGGER IF EXISTS insert_hashes"); $pdo->queryDirect("DROP TRIGGER IF EXISTS update_hashes"); // Insert and update table $sqlInsert = << 0, t.nuked, prehash.nuked), prehash.nukereason = IF(t.nuked > 0, t.nukereason, prehash.nukereason), prehash.category = IF(prehash.category IS NULL, t.category, prehash.category), prehash.requestid = IF(prehash.requestid = 0, t.requestid, prehash.requestid), prehash.groupid = IF(g.id IS NOT NULL, g.id, 0); SQL_INSERT; echo $pdo->log->primary($sqlInsert); $pdo->queryDirect($sqlInsert); // Add hashes echo $pdo->log->info("Adding predb_hashes entries"); $pdo->queryDirect("INSERT IGNORE INTO predb_hashes (pre_id, hashes) (SELECT id, CONCAT_WS(',', MD5(title), MD5(MD5(title)), SHA1(title)) FROM prehash)"); // Re-add triggers on prehash echo $pdo->log->info("Adding predb_hashes triggers"); $pdo->exec("CREATE TRIGGER insert_hashes AFTER INSERT ON prehash FOR EACH ROW BEGIN INSERT INTO predb_hashes (pre_id, hashes) VALUES (NEW.id, CONCAT_WS(',', MD5(NEW.title), MD5(MD5(NEW.title)), SHA1(NEW.title))); END;"); $pdo->exec("CREATE TRIGGER update_hashes AFTER UPDATE ON prehash FOR EACH ROW BEGIN IF NEW.title != OLD.title THEN UPDATE predb_hashes SET hashes = CONCAT_WS(',', MD5(NEW.title), MD5(MD5(NEW.title)), SHA1(NEW.title)) WHERE pre_id = OLD.id; END IF; END;"); $pdo->queryDirect("TRUNCATE TABLE prehash_imports"); } else { exit($pdo->log->error("\nThis script can export or import a prehash dump file. You may use the full path, or a relative path.\n" . "For importing, the script insert new rows and update existing matched rows. For databases not on the local system, use remote, else use local.\n" . "For exporting, the path must be writeable by mysql, any existing file[predb_dump.csv] will be overwritten.\n\n" . "php dump_predb.php export /path/to/write/to ...: To export.\n" . "php dump_predb.php [remote | local] /path/to/filename ...: To import.\n")); }