diff --git a/Blacklight/Movie.php b/Blacklight/Movie.php index a0d200014..e0a04b3ef 100755 --- a/Blacklight/Movie.php +++ b/Blacklight/Movie.php @@ -212,7 +212,7 @@ class Movie */ public function getMovieInfo($imdbId) { - return MovieInfo::query()->where('imdbid', str_pad($imdbId, 7, '0', STR_PAD_LEFT))->first(); + return MovieInfo::query()->where('imdbid', str_pad($imdbId, 8, '0', STR_PAD_LEFT))->first(); } /** @@ -596,16 +596,16 @@ class Movie } // Check TMDB for IMDB info. - $tmdb = $this->fetchTMDBProperties(str_pad($imdbId, 7, '0', STR_PAD_LEFT)); + $tmdb = $this->fetchTMDBProperties(str_pad($imdbId, 8, '0', STR_PAD_LEFT)); // Check IMDB for movie info. - $imdb = $this->fetchIMDBProperties(str_pad($imdbId, 7, '0', STR_PAD_LEFT)); + $imdb = $this->fetchIMDBProperties(str_pad($imdbId, 8, '0', STR_PAD_LEFT)); // Check TRAKT for movie info - $trakt = $this->fetchTraktTVProperties(str_pad($imdbId, 7, '0', STR_PAD_LEFT)); + $trakt = $this->fetchTraktTVProperties(str_pad($imdbId, 8, '0', STR_PAD_LEFT)); // Check OMDb for movie info - $omdb = $this->fetchOmdbAPIProperties(str_pad($imdbId, 7, '0', STR_PAD_LEFT)); + $omdb = $this->fetchOmdbAPIProperties(str_pad($imdbId, 8, '0', STR_PAD_LEFT)); // Check iTunes for movie info as last resort (iTunes do not provide all the info we need) @@ -616,40 +616,40 @@ class Movie } // Check FanArt.tv for cover and background images. - $fanart = $this->fetchFanartTVProperties(str_pad($imdbId, 7, '0', STR_PAD_LEFT)); + $fanart = $this->fetchFanartTVProperties(str_pad($imdbId, 8, '0', STR_PAD_LEFT)); $mov = []; $mov['cover'] = $mov['backdrop'] = $mov['banner'] = 0; $mov['type'] = $mov['director'] = $mov['actors'] = $mov['language'] = ''; - $mov['imdbid'] = str_pad($imdbId, 7, '0', STR_PAD_LEFT); + $mov['imdbid'] = str_pad($imdbId, 8, '0', STR_PAD_LEFT); $mov['tmdbid'] = (! isset($tmdb['tmdbid']) || $tmdb['tmdbid'] === '') ? 0 : $tmdb['tmdbid']; $mov['traktid'] = (! isset($trakt['id']) || $trakt['id'] === '') ? 0 : $trakt['id']; // Prefer Fanart.tv cover over TMDB,TMDB over IMDB,IMDB over OMDB and OMDB over iTunes. if (! empty($fanart['cover'])) { - $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-cover', $fanart['cover'], $this->imgSavePath); + $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-cover', $fanart['cover'], $this->imgSavePath); } elseif (! empty($tmdb['cover'])) { - $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-cover', $tmdb['cover'], $this->imgSavePath); + $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-cover', $tmdb['cover'], $this->imgSavePath); } elseif (! empty($imdb['cover'])) { - $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-cover', $imdb['cover'], $this->imgSavePath); + $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-cover', $imdb['cover'], $this->imgSavePath); } elseif (! empty($omdb['cover'])) { - $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-cover', $omdb['cover'], $this->imgSavePath); + $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-cover', $omdb['cover'], $this->imgSavePath); } elseif (! empty($iTunes['cover'])) { - $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-cover', $iTunes['cover'], $this->imgSavePath); + $mov['cover'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-cover', $iTunes['cover'], $this->imgSavePath); } // Backdrops. if (! empty($fanart['backdrop'])) { - $mov['backdrop'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-backdrop', $fanart['backdrop'], $this->imgSavePath, 1920, 1024); + $mov['backdrop'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-backdrop', $fanart['backdrop'], $this->imgSavePath, 1920, 1024); } elseif (! empty($tmdb['backdrop'])) { - $mov['backdrop'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-backdrop', $tmdb['backdrop'], $this->imgSavePath, 1920, 1024); + $mov['backdrop'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-backdrop', $tmdb['backdrop'], $this->imgSavePath, 1920, 1024); } // Banner if (! empty($fanart['banner'])) { - $mov['banner'] = $this->releaseImage->saveImage(str_pad($imdbId, 7, '0', STR_PAD_LEFT).'-banner', $fanart['banner'], $this->imgSavePath); + $mov['banner'] = $this->releaseImage->saveImage(str_pad($imdbId, 8, '0', STR_PAD_LEFT).'-banner', $fanart['banner'], $this->imgSavePath); } // RottenTomatoes rating from OmdbAPI @@ -1100,7 +1100,7 @@ class Movie $movieInfoId = MovieInfo::query()->where('imdbid', $imdbID)->first(['id']); - Release::query()->where('id', $id)->update(['imdbid' => str_pad($imdbID, 7, '0', STR_PAD_LEFT), 'movieinfo_id' => $movieInfoId !== null ? $movieInfoId['id'] : null]); + Release::query()->where('id', $id)->update(['imdbid' => str_pad($imdbID, 8, '0', STR_PAD_LEFT), 'movieinfo_id' => $movieInfoId !== null ? $movieInfoId['id'] : null]); // If set, scan for imdb info. if ($processImdb === 1) { @@ -1112,7 +1112,7 @@ class Movie } elseif ($info === true) { $movieInfoId = MovieInfo::query()->where('imdbid', $imdbID)->first(['id']); - Release::query()->where('id', $id)->update(['imdbid' => str_pad($imdbID, 7, '0', STR_PAD_LEFT), 'movieinfo_id' => $movieInfoId !== null ? $movieInfoId['id'] : null]); + Release::query()->where('id', $id)->update(['imdbid' => str_pad($imdbID, 8, '0', STR_PAD_LEFT), 'movieinfo_id' => $movieInfoId !== null ? $movieInfoId['id'] : null]); } } } diff --git a/Blacklight/Releases.php b/Blacklight/Releases.php index f874f995e..bd452600d 100755 --- a/Blacklight/Releases.php +++ b/Blacklight/Releases.php @@ -1164,7 +1164,7 @@ class Releases extends Release $this->showPasswords(), (! empty($searchResult) ? 'AND r.id IN ('.implode(',', $searchResult).')' : ''), ! empty($tags) ? " AND tt.tag_name IN ('".implode("','", $tags)."')" : '', - ($imDbId !== -1 && is_numeric($imDbId)) ? sprintf(' AND m.imdbid = %d ', str_pad($imDbId, 7, '0', STR_PAD_LEFT)) : '', + ($imDbId !== -1 && is_numeric($imDbId)) ? sprintf(' AND m.imdbid = %d ', str_pad($imDbId, 8, '0', STR_PAD_LEFT)) : '', ($tmDbId !== -1 && is_numeric($tmDbId)) ? sprintf(' AND m.tmdbid = %d ', $tmDbId) : '', ($traktId !== -1 && is_numeric($traktId)) ? sprintf(' AND m.traktid = %d ', $traktId) : '', ! empty($excludedCategories) ? sprintf('AND r.categories_id NOT IN('.implode(',', $excludedCategories).')') : '', diff --git a/Blacklight/http/XML_Response.php b/Blacklight/http/XML_Response.php index b95c33c8a..bb33569d7 100755 --- a/Blacklight/http/XML_Response.php +++ b/Blacklight/http/XML_Response.php @@ -479,7 +479,7 @@ class XML_Response $this->writeZedAttr('tvmazeid', $this->release->tvmaze); } if (isset($this->release->imdb) && $this->release->imdb > 0) { - $this->writeZedAttr('imdbid', str_pad($this->release->imdb, 7, '0', STR_PAD_LEFT)); + $this->writeZedAttr('imdbid', str_pad($this->release->imdb, 8, '0', STR_PAD_LEFT)); } if (isset($this->release->tmdb) && $this->release->tmdb > 0) { $this->writeZedAttr('tmdbid', $this->release->tmdb); diff --git a/Changelog b/Changelog index ac8270304..ccbef1739 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,7 @@ 2019-04-04 DariusIII + * Chg: Update laravel/framework (v5.8.9 => v5.8.10) + * Chg: Add migrations and update themes for new imdbid length + * Chg: Update releases, movieinfo and user_movies migrations imdbid column definition to be string(varchar in mysql) due to changes in imdbid numbering * Chg: Add nntmux shell command script to shorten typing (ie ./nntmux nntmux:all in place of php artisan nntmux:all command) 2019-04-03 DariusIII * Chg: Update tmux install script to install Tmux version 2.9 diff --git a/app/Http/Controllers/Admin/MovieController.php b/app/Http/Controllers/Admin/MovieController.php index 53586eed1..7fbfd2678 100644 --- a/app/Http/Controllers/Admin/MovieController.php +++ b/app/Http/Controllers/Admin/MovieController.php @@ -46,7 +46,7 @@ class MovieController extends BasePageController $meta_title = $title = 'Movie Add'; - $id = str_pad($request->input('id'), 7, '0', STR_PAD_LEFT); + $id = str_pad($request->input('id'), 8, '0', STR_PAD_LEFT); if ($request->has('id') && \strlen($id) === 7) { $movCheck = $movie->getMovieInfo($id); diff --git a/app/Http/Controllers/MyMoviesController.php b/app/Http/Controllers/MyMoviesController.php index ace96c441..bdfab0fa8 100644 --- a/app/Http/Controllers/MyMoviesController.php +++ b/app/Http/Controllers/MyMoviesController.php @@ -59,7 +59,7 @@ class MyMoviesController extends BasePageController if ($action === 'doadd') { $category = ($request->has('category') && \is_array($request->input('category')) && ! empty($request->input('category'))) ? $request->input('category') : []; - UserMovie::addMovie($this->userdata->id, str_pad($imdbid, 7, '0', STR_PAD_LEFT), $category); + UserMovie::addMovie($this->userdata->id, str_pad($imdbid, 8, '0', STR_PAD_LEFT), $category); if ($request->has('from')) { return redirect($request->input('from')); } diff --git a/composer.lock b/composer.lock index 7c914b4f9..f072ebcfa 100644 --- a/composer.lock +++ b/composer.lock @@ -2486,16 +2486,16 @@ }, { "name": "laravel/framework", - "version": "v5.8.9", + "version": "v5.8.10", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "2455d21938e9072e5a8ecef64ae162a1825d336b" + "reference": "505325b4577968750e622d7a5a271cf8785a7a1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/2455d21938e9072e5a8ecef64ae162a1825d336b", - "reference": "2455d21938e9072e5a8ecef64ae162a1825d336b", + "url": "https://api.github.com/repos/laravel/framework/zipball/505325b4577968750e622d7a5a271cf8785a7a1a", + "reference": "505325b4577968750e622d7a5a271cf8785a7a1a", "shasum": "" }, "require": { @@ -2629,7 +2629,7 @@ "framework", "laravel" ], - "time": "2019-04-02T14:11:17+00:00" + "time": "2019-04-04T13:39:49+00:00" }, { "name": "laravel/horizon", @@ -11887,16 +11887,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "06b6ce404ee574e9c1787fb67bb9980ca4387c34" + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/06b6ce404ee574e9c1787fb67bb9980ca4387c34", - "reference": "06b6ce404ee574e9c1787fb67bb9980ca4387c34", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", "shasum": "" }, "require": { @@ -11923,7 +11923,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-04-03T18:37:40+00:00" + "time": "2019-04-04T09:56:43+00:00" }, { "name": "webmozart/assert", diff --git a/database/migrations/2018_01_20_195528_create_releases_table.php b/database/migrations/2018_01_20_195528_create_releases_table.php index 6527fd24f..73440298f 100644 --- a/database/migrations/2018_01_20_195528_create_releases_table.php +++ b/database/migrations/2018_01_20_195528_create_releases_table.php @@ -34,7 +34,7 @@ class CreateReleasesTable extends Migration $table->integer('categories_id')->default(10); $table->integer('videos_id')->unsigned()->default(0)->index('ix_releases_videos_id')->comment('FK to videos.id of the parent series.'); $table->integer('tv_episodes_id')->default(0)->index('ix_releases_tv_episodes_id')->comment('FK to tv_episodes.id for the episode.'); - $table->string('imdbid', 15)->nullable()->index('ix_releases_imdbid'); + $table->string('imdbid')->index('ix_releases_imdbid'); $table->integer('xxxinfo_id')->default(0)->index('ix_releases_xxxinfo_id'); $table->integer('musicinfo_id')->nullable()->comment('FK to musicinfo.id'); $table->integer('consoleinfo_id')->nullable()->index('ix_releases_consoleinfo_id')->comment('FK to consoleinfo.id'); diff --git a/database/migrations/2018_01_20_195822_create_movieinfo_table.php b/database/migrations/2018_01_20_195822_create_movieinfo_table.php index dbdce3446..cab2ebfcb 100644 --- a/database/migrations/2018_01_20_195822_create_movieinfo_table.php +++ b/database/migrations/2018_01_20_195822_create_movieinfo_table.php @@ -18,7 +18,7 @@ class CreateMovieinfoTable extends Migration $table->charset = 'utf8'; $table->collation = 'utf8_unicode_ci'; $table->increments('id'); - $table->integer('imdbid')->unsigned()->unique('ix_movieinfo_imdbid'); + $table->string('imdbid')->unique('ix_movieinfo_imdbid'); $table->integer('tmdbid')->unsigned()->default(0); $table->integer('traktid')->unsigned()->default(0); $table->string('title')->default('')->index('ix_movieinfo_title'); diff --git a/database/migrations/2018_01_20_200318_create_user_movies_table.php b/database/migrations/2018_01_20_200318_create_user_movies_table.php index 30bdf09a8..9fa8faeff 100644 --- a/database/migrations/2018_01_20_200318_create_user_movies_table.php +++ b/database/migrations/2018_01_20_200318_create_user_movies_table.php @@ -19,7 +19,7 @@ class CreateUserMoviesTable extends Migration $table->collation = 'utf8_unicode_ci'; $table->increments('id'); $table->integer('users_id')->unsigned(); - $table->integer('imdbid')->unsigned()->nullable(); + $table->string('imdbid')->nullable(); $table->string('categories', 64)->nullable()->comment('List of categories for user movies'); $table->timestamps(); $table->index(['users_id','imdbid'], 'ix_usermovies_userid'); diff --git a/database/migrations/2019_04_04_130055_update_releases_table.php b/database/migrations/2019_04_04_130055_update_releases_table.php new file mode 100644 index 000000000..c6d631cc9 --- /dev/null +++ b/database/migrations/2019_04_04_130055_update_releases_table.php @@ -0,0 +1,32 @@ +string('imdbid', 100)->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('releases', function (Blueprint $table) { + $table->unsignedMediumInteger('imdbid')->nullable()->change(); + }); + } +} diff --git a/database/migrations/2019_04_04_150842_update_movieinfo_table.php b/database/migrations/2019_04_04_150842_update_movieinfo_table.php new file mode 100644 index 000000000..97585607e --- /dev/null +++ b/database/migrations/2019_04_04_150842_update_movieinfo_table.php @@ -0,0 +1,32 @@ +string('imdbid', 100)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('movieinfo', function (Blueprint $table) { + $table->unsignedMediumInteger('imdbid')->change(); + }); + } +} diff --git a/database/migrations/2019_04_04_152238_update_user_movies_table.php b/database/migrations/2019_04_04_152238_update_user_movies_table.php new file mode 100644 index 000000000..c73c8c435 --- /dev/null +++ b/database/migrations/2019_04_04_152238_update_user_movies_table.php @@ -0,0 +1,32 @@ +string('imdbid', 100)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('user_movies', function (Blueprint $table) { + $table->unsignedMediumInteger('imdbid')->change(); + }); + } +} diff --git a/misc/testing/DB/add_movieinfo_id.php b/misc/testing/DB/add_movieinfo_id.php index d4c4e4a9d..1a083eec4 100644 --- a/misc/testing/DB/add_movieinfo_id.php +++ b/misc/testing/DB/add_movieinfo_id.php @@ -27,7 +27,7 @@ $count = $sql->count(); echo 'Copying '.$count.' imdbid values'.PHP_EOL; foreach ($sql as $movie) { - DB::table('movie_temp')->insert(['releases_id' => $movie['id'], 'imdbid' => str_pad($movie['imdbid'], 7, '0', STR_PAD_LEFT)]); + DB::table('movie_temp')->insert(['releases_id' => $movie['id'], 'imdbid' => str_pad($movie['imdbid'], 8, '0', STR_PAD_LEFT)]); echo '.'; } diff --git a/resources/views/themes/Gentele/movies.tpl b/resources/views/themes/Gentele/movies.tpl index ccf40907a..3258225ae 100755 --- a/resources/views/themes/Gentele/movies.tpl +++ b/resources/views/themes/Gentele/movies.tpl @@ -92,21 +92,21 @@ {assign var="mhaspreview" value=","|explode:$result->grp_haspreview} {foreach $msplits as $m} {if $m@first} - {$result->title|escape: {if !empty($mfailed[$m@index])} {/if} IMDB TRAKT {if (!empty($result->tmdbid))} Group - Add + Add
{$result->title|escape:"htmlall"} + href="{$smarty.const.WWW_TOP}/Movies?imdb={str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}">{$result->title|escape:"htmlall"}
{if $result->genre != ''} Genre: {$result->genre}, {/if}
@@ -183,7 +183,7 @@ {/if} {if !empty($cpurl) && !empty($cpapi)} grp_haspreview} {foreach $msplits as $m} {if $m@first} - {$result->title|escape: {if !empty($mfailed[$m@index])} {/if} IMDB TRAKT {if (!empty($result->tmdbid))} Group - Add + Add
{$result->title|escape:"htmlall"} + href="{$smarty.const.WWW_TOP}/Movies?imdb={str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}">{$result->title|escape:"htmlall"}
{if $result->genre != ''} Genre: {$result->genre}, {/if}
@@ -328,7 +328,7 @@ {/if} {if !empty($cpurl) && !empty($cpapi)} Nfo {/if} {if $result->imdbid > 0} - Cover {/if} {if $result->haspreview == 1 && $userdata->can('preview') == true} diff --git a/resources/views/themes/Gentele/viewmoviefull.tpl b/resources/views/themes/Gentele/viewmoviefull.tpl index 629d032bf..2a5233f5c 100755 --- a/resources/views/themes/Gentele/viewmoviefull.tpl +++ b/resources/views/themes/Gentele/viewmoviefull.tpl @@ -16,7 +16,7 @@ {if $result->cover == 1} {$result->title|escape: + src="{$smarty.const.WWW_TOP}/covers/movies/{str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}-cover.jpg"/> {else} {$result->title|escape:{$result->title|escape:"htmlall"} ({$result->year}) IMDB + href="{$site->dereferrer_link}http://www.imdb.com/title/tt{str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}/" + name="imdb{str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}" title="View IMDB page">IMDB TRAKT + href="{$site->dereferrer_link}http://trakt.tv/search/imdb/tt{str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}/" + name="trakt{str_pad($result->imdbid, 8, '0', STR_PAD_LEFT)}" title="View Trakt page" rel="trakt">TRAKT {if (!empty($result->tmdbid))}
{if $movie && $release.videos_id <= 0 && $movie.cover == 1} - {$movie.title|escape: