diff --git a/Blacklight/NameFixer.php b/Blacklight/NameFixer.php index 9a9e87aa8..ad6817205 100755 --- a/Blacklight/NameFixer.php +++ b/Blacklight/NameFixer.php @@ -546,7 +546,7 @@ class NameFixer SELECT rel.id AS releases_id, rel.size AS relsize, rel.groups_id, rel.fromname, rel.categories_id, rel.name, rel.name AS textstring, rel.predb_id, rel.searchname, - HEX(ru.uniqueid) AS uid + ru.uniqueid AS uid FROM releases rel LEFT JOIN release_unique ru ON ru.releases_id = rel.id WHERE ru.releases_id IS NOT NULL @@ -562,7 +562,7 @@ class NameFixer SELECT rel.id AS releases_id, rel.size AS relsize, rel.groups_id, rel.fromname, rel.categories_id, rel.name, rel.name AS textstring, rel.predb_id, rel.searchname, - HEX(ru.uniqueid) AS uid + ru.uniqueid AS uid FROM releases rel LEFT JOIN release_unique ru ON ru.releases_id = rel.id WHERE ru.releases_id IS NOT NULL @@ -2072,7 +2072,7 @@ class NameFixer FROM releases r LEFT JOIN release_unique ru ON ru.releases_id = r.id WHERE ru.releases_id IS NOT NULL - AND ru.uniqueid = UNHEX({$this->pdo->quote($release->uid)}) + AND ru.uniqueid = {$this->pdo->quote($release->uid)} AND ru.releases_id != {$release->releases_id} AND (r.predb_id > 0 OR r.anidbid > 0 OR r.fromname = 'nonscene@Ef.net (EF)')" ); diff --git a/Blacklight/ReleaseExtra.php b/Blacklight/ReleaseExtra.php index 73098a405..69df7f400 100755 --- a/Blacklight/ReleaseExtra.php +++ b/Blacklight/ReleaseExtra.php @@ -150,7 +150,7 @@ class ReleaseExtra /* * MediaInfo Schema v1 (1.x - 7.99) - **/ + */ case 1: foreach ($arrXml['File']['track'] as $track) { if (isset($track['@attributes']['type'])) { @@ -161,8 +161,8 @@ class ReleaseExtra if (isset($track['Overall_bit_rate'])) { $overallBitRate = $track['Overall_bit_rate']; } - if (isset($track['Unique_ID']) && preg_match('/\(0x(?P[0-9a-f]{32})\)/i', $track['Unique_ID'], $matches)) { - $uniqueId = $matches['hash']; + if (isset($track['Unique_ID']) && preg_match('/(?P^\d+)/i', $track['Unique_ID'], $matches)) { + $uniqueId = $matches['uid']; $this->addUID($releaseID, $uniqueId); } } elseif ($track['@attributes']['type'] === 'Video') { @@ -257,7 +257,7 @@ class ReleaseExtra if ($type === 'General') { if (! empty($track['UniqueID']) && (int) $track['UniqueID'] !== 1) { - $uniqueId = bcdechex($track['UniqueID']); + $uniqueId = $track['UniqueID']; $this->addUID($releaseID, $uniqueId); } @@ -489,19 +489,19 @@ class ReleaseExtra } /** - * @param $releaseID - * @param $uniqueId + * @param int $releaseID + * @param string $uniqueId */ public function addUID($releaseID, $uniqueId): void { $dupecheck = ReleaseUnique::query()->where('releases_id', $releaseID)->orWhere([ 'releases_id' => $releaseID, - 'uniqueid' => sodium_hex2bin($uniqueId), + 'uniqueid' => $uniqueId, ])->first(['releases_id']); if ($dupecheck === null) { ReleaseUnique::query()->insert([ 'releases_id' => $releaseID, - 'uniqueid' => sodium_hex2bin($uniqueId), + 'uniqueid' => $uniqueId, ]); } } diff --git a/Changelog b/Changelog index 1ae2f5dd2..afa37021b 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-08-14 DariusIII + * Chg: Recreate release_unique table, alter classes for new table * Chg: Revert runCmd function * Chg: Update Utility class, use Symfony Process class in runCmd function, declare return types where needed * Chg: Update ReleaseExtra class to handle MediaInfo v18 type UniqueID, add helper function and update composer.json to require bcmath extension diff --git a/app/Models/ReleaseExtraFull.php b/app/Models/ReleaseExtraFull.php index cd16c859c..58cf13b38 100644 --- a/app/Models/ReleaseExtraFull.php +++ b/app/Models/ReleaseExtraFull.php @@ -46,7 +46,10 @@ class ReleaseExtraFull extends Model */ protected $primaryKey = 'releases_id'; - public function release() + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function release(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Release::class, 'releases_id'); } diff --git a/app/Models/ReleaseFile.php b/app/Models/ReleaseFile.php index 4fe74ffd6..71dab576d 100644 --- a/app/Models/ReleaseFile.php +++ b/app/Models/ReleaseFile.php @@ -43,7 +43,10 @@ class ReleaseFile extends Model */ protected $primaryKey = 'releases_id'; - public function release() + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function release(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Release::class, 'releases_id'); } diff --git a/build/nntmux.xml b/build/nntmux.xml index 8f3e967b1..cd9e53aba 100755 --- a/build/nntmux.xml +++ b/build/nntmux.xml @@ -16,8 +16,8 @@ - 353 - 353 + 354 + 354 diff --git a/database/migrations/2018_01_20_200038_create_release_unique_table.php b/database/migrations/2018_01_20_200038_create_release_unique_table.php index cd8b9f07d..0953d80fb 100644 --- a/database/migrations/2018_01_20_200038_create_release_unique_table.php +++ b/database/migrations/2018_01_20_200038_create_release_unique_table.php @@ -18,11 +18,10 @@ class CreateReleaseUniqueTable extends Migration { $table->charset = 'utf8'; $table->collation = 'utf8_unicode_ci'; $table->integer('releases_id')->unsigned()->comment('FK to releases.id.'); + $table->string('uniqueid')->comment('Unique_ID from mediainfo.'); + $table->primary(['releases_id', 'uniqueid'], 'ix_releases_id_uniqueid'); $table->foreign('releases_id', 'FK_ru_releases')->references('id')->on('releases')->onUpdate('CASCADE')->onDelete('CASCADE'); }); - - DB::unprepared("ALTER TABLE release_unique ADD COLUMN uniqueid BINARY(16) NOT NULL DEFAULT '0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0' COMMENT 'Unique_ID from mediainfo.'"); - DB::unprepared('ALTER TABLE release_unique ADD PRIMARY KEY (releases_id, uniqueid)'); } diff --git a/resources/db/patches/mysql/0354~release_unique.sql b/resources/db/patches/mysql/0354~release_unique.sql new file mode 100644 index 000000000..006d40351 --- /dev/null +++ b/resources/db/patches/mysql/0354~release_unique.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS release_unique; +CREATE TABLE release_unique ( + releases_id INT(11) UNSIGNED NOT NULL COMMENT 'FK to releases.id.', + uniqueid VARCHAR(100) DEFAULT '' COMMENT 'Unique_ID from mediainfo.', + PRIMARY KEY (releases_id, uniqueid) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8 + COLLATE = utf8_unicode_ci;