diff --git a/.env.example b/.env.example
index 0af7cb7b8..10a8bdfab 100644
--- a/.env.example
+++ b/.env.example
@@ -110,3 +110,5 @@ SMARTY_FORCE_COMPILE=false
SMARTY_CACHE_DRIVER=file
FIREWALL_ENABLED=true
+
+IGDB_KEY=
diff --git a/Blacklight/Games.php b/Blacklight/Games.php
index ce7909fd2..31e964150 100755
--- a/Blacklight/Games.php
+++ b/Blacklight/Games.php
@@ -12,6 +12,7 @@ use DBorsatto\GiantBomb\Client;
use DBorsatto\GiantBomb\Config;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;
+use Messerli90\IGDB\Facades\IGDB;
class Games
{
@@ -544,9 +545,7 @@ class Games
if ($this->_gameResults->original_release_date !== '') {
$dateReleased = $this->_gameResults->original_release_date;
$date = $dateReleased !== null ? Carbon::createFromFormat('Y-m-d H:i:s', $dateReleased) : now();
- if ($date instanceof \DateTime) {
- $game['releasedate'] = (string) $date->format('Y-m-d');
- }
+ $game['releasedate'] = (string) $date->format('Y-m-d');
}
if ($this->_gameResults->deck !== '') {
@@ -565,6 +564,62 @@ class Games
}
}
+ if (env('IGDB_KEY') !== '') {
+ if ($steamGameID === false || $this->_gameResults === false) {
+ $bestMatch = false;
+ $this->_classUsed = 'IGDB';
+ $result = IGDB::searchGames($gameInfo['title']);
+ if (! empty($result)) {
+ foreach ($result as $res) {
+ similar_text(strtolower($gameInfo['title']), strtolower($res->name), $percent);
+ if ($percent >= self::GAME_MATCH_PERCENTAGE) {
+ $bestMatch = $res->id;
+ }
+ }
+ if ($bestMatch !== false) {
+ $this->_gameResults = IGDB::getGame($bestMatch, [
+ 'id',
+ 'name',
+ 'first_release_date',
+ 'aggregated_rating',
+ 'summary',
+ 'cover',
+ 'url',
+ 'screenshots',
+ 'publishers',
+ ]);
+
+ $publishers = [];
+ foreach ($this->_gameResults->publishers as $publisher) {
+
+ $publishers[] = IGDB::getCompany($publisher)->name;
+ }
+
+ $game = [
+ 'title' => $this->_gameResults->name,
+ 'asin' => $this->_gameResults->id,
+ 'review' => $this->_gameResults->summary ?? '',
+ 'coverurl' => 'https:'.$this->_gameResults->cover->url ?? '',
+ 'releasedate' => Carbon::createFromTimestamp(substr($this->_gameResults->first_release_date, 0, -3))->format('Y-m-d') ?? now()->format('Y-m-d'),
+ 'esrb' => round($this->_gameResults->aggregated_rating).'%' ?? 'Not Rated',
+ 'url' => $this->_gameResults->url ?? '',
+ 'backdropurl' => 'https:'.$this->_gameResults->screenshots[0]->url ?? '',
+ 'publisher' => ! empty($publishers) ? implode(',', $publishers) : 'Unknown',
+ ];
+ } else {
+ ColorCLI::doEcho(ColorCLI::notice('IGDB found no valid results'), true);
+
+ return false;
+ }
+ } else {
+ ColorCLI::doEcho(ColorCLI::notice('IGDB found no valid results'), true);
+
+ return false;
+ }
+ }
+
+ }
+
// Load genres.
$defaultGenres = $gen->loadGenres(Genres::GAME_TYPE);
diff --git a/Changelog b/Changelog
index bb54e5a3a..305992c3e 100755
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,5 @@
+2018-09-14 DariusIII
+ * Chg: Add IGDB for PC games lookup
2018-09-13 DariusIII
* Chg: Update tiny-mce to latest version
* Chg: Update jrean/laravel-user-verification to version 7.0.0
diff --git a/composer.json b/composer.json
index 5579d10f3..11c4a581e 100755
--- a/composer.json
+++ b/composer.json
@@ -151,6 +151,7 @@
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.6",
"mayconbordin/l5-fixtures": "dev-master",
+ "messerli90/igdb": "^1.0",
"monolog/monolog": "^1.22",
"nzedb/Git.php": "dev-master",
"php-http/guzzle6-adapter": "^1.1",
diff --git a/composer.lock b/composer.lock
index 47038e9e4..8cca69d03 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "9b5fcf01653d5163e9d17ea57e79cc2c",
+ "content-hash": "d7e790cca583e2d57488c9bf24bb12ee",
"packages": [
{
"name": "aharen/omdbapi",
@@ -257,7 +257,8 @@
"Gemfile.lock",
"*.md"
]
- }
+ },
+ "time": "2016-06-06T17:37:52+00:00"
},
{
"name": "bower-asset/autosize",
@@ -286,7 +287,8 @@
"form",
"textarea",
"ui"
- ]
+ ],
+ "time": "2017-05-19T15:36:30+00:00"
},
{
"name": "bower-asset/bootstrap",
@@ -335,7 +337,8 @@
"mobile-first",
"responsive",
"web"
- ]
+ ],
+ "time": "2016-07-25T15:51:55+00:00"
},
{
"name": "bower-asset/bootstrap-3.x",
@@ -384,7 +387,8 @@
"mobile-first",
"responsive",
"web"
- ]
+ ],
+ "time": "2016-07-25T15:51:55+00:00"
},
{
"name": "bower-asset/bootstrap-datepicker",
@@ -413,7 +417,8 @@
},
"license": [
"Apache-2.0"
- ]
+ ],
+ "time": "2016-08-05T09:50:13+00:00"
},
{
"name": "bower-asset/bootstrap-hover-dropdown",
@@ -443,7 +448,8 @@
"dropdowns",
"hover",
"twitter"
- ]
+ ],
+ "time": "2015-12-01T23:35:57+00:00"
},
{
"name": "bower-asset/bootstrap-progressbar",
@@ -477,7 +483,8 @@
},
"license": [
"MIT"
- ]
+ ],
+ "time": "2015-05-15T18:56:17+00:00"
},
{
"name": "bower-asset/bootswatch",
@@ -608,7 +615,8 @@
"modal",
"popup",
"ui"
- ]
+ ],
+ "time": "2016-05-10T22:21:33+00:00"
},
{
"name": "bower-asset/datatables",
@@ -723,7 +731,8 @@
"tests",
"examples"
]
- }
+ },
+ "time": "2015-01-26T21:19:01+00:00"
},
{
"name": "bower-asset/flexboxgrid",
@@ -759,7 +768,8 @@
"css",
"flexbox",
"grid"
- ]
+ ],
+ "time": "2016-08-14T16:43:18+00:00"
},
{
"name": "bower-asset/font-awesome",
@@ -804,7 +814,8 @@
"src",
"build.xml"
]
- }
+ },
+ "time": "2015-07-20T20:04:00+00:00"
},
{
"name": "bower-asset/icheck",
@@ -854,7 +865,8 @@
"replacement",
"skins",
"ui"
- ]
+ ],
+ "time": "2014-03-03T17:36:28+00:00"
},
{
"name": "bower-asset/jquery",
@@ -917,7 +929,8 @@
"javascript",
"jquery",
"library"
- ]
+ ],
+ "time": "2016-05-20T17:24:43+00:00"
},
{
"name": "bower-asset/jquery-3.2.x",
@@ -984,7 +997,8 @@
"scroll",
"scrolltop",
"scrolltotop"
- ]
+ ],
+ "time": "2017-08-31T15:51:29+00:00"
},
{
"name": "bower-asset/jquery-migrate-1.4.x",
@@ -1003,7 +1017,8 @@
"type": "bower-asset-library",
"extra": {
"bower-asset-main": "jquery-migrate.js"
- }
+ },
+ "time": "2016-04-15T06:38:34+00:00"
},
{
"name": "bower-asset/jquery-migrate-3.0.x",
@@ -1022,7 +1037,8 @@
"type": "bower-asset-library",
"extra": {
"bower-asset-main": "jquery-migrate.js"
- }
+ },
+ "time": "2016-06-10T14:28:59+00:00"
},
{
"name": "bower-asset/jquery.nicescroll",
@@ -1052,7 +1068,8 @@
"demo",
"package.json"
]
- }
+ },
+ "time": "2016-03-01T20:38:24+00:00"
},
{
"name": "bower-asset/material-design-iconic-font",
@@ -1091,7 +1108,8 @@
"font",
"icons",
"material"
- ]
+ ],
+ "time": "2015-11-08T04:50:28+00:00"
},
{
"name": "bower-asset/materialize",
@@ -1150,7 +1168,8 @@
"responsive",
"sass",
"ux"
- ]
+ ],
+ "time": "2017-04-15T01:39:28+00:00"
},
{
"name": "bower-asset/pace",
@@ -1196,7 +1215,8 @@
"progress",
"progress",
"spinner"
- ]
+ ],
+ "time": "2014-11-06T16:31:34+00:00"
},
{
"name": "bower-asset/pnotify",
@@ -1248,7 +1268,8 @@
"license": [
"Apache-2.0"
],
- "description": "JavaScript notification plugin."
+ "description": "JavaScript notification plugin.",
+ "time": "2017-07-31T21:50:29+00:00"
},
{
"name": "bower-asset/respond",
@@ -1272,7 +1293,8 @@
"test"
]
},
- "description": "Fast and lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)"
+ "description": "Fast and lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)",
+ "time": "2013-12-19T04:44:31+00:00"
},
{
"name": "bower-asset/responsive-tables-js",
@@ -1302,7 +1324,8 @@
"jquery",
"responsive",
"table"
- ]
+ ],
+ "time": "2015-10-08T14:18:04+00:00"
},
{
"name": "bower-asset/select2",
@@ -1370,7 +1393,8 @@
"scrolling",
"slimscroll",
"ui"
- ]
+ ],
+ "time": "2016-06-11T09:19:14+00:00"
},
{
"name": "bower-asset/tinymce-dist",
@@ -4311,6 +4335,54 @@
],
"time": "2018-01-18T09:07:50+00:00"
},
+ {
+ "name": "messerli90/igdb",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/messerli90/igdb.git",
+ "reference": "e93008753261e0c824589243916415eb5947baec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/messerli90/igdb/zipball/e93008753261e0c824589243916415eb5947baec",
+ "reference": "e93008753261e0c824589243916415eb5947baec",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "^6.3",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "illuminate/support": ">= 5.0",
+ "phpunit/phpunit": "~5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Messerli90\\IGDB\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Messerli",
+ "email": "michaelamesserli@gmail.com"
+ }
+ ],
+ "description": "Laravel PHP Facade/Wrapper for the IGDB API",
+ "keywords": [
+ "api",
+ "gaming",
+ "igdb",
+ "laravel",
+ "messerli90"
+ ],
+ "time": "2017-08-06T17:14:20+00:00"
+ },
{
"name": "monolog/monolog",
"version": "1.23.0",
diff --git a/config/app.php b/config/app.php
index 64b711d70..f8575fd3b 100644
--- a/config/app.php
+++ b/config/app.php
@@ -164,6 +164,7 @@ return [
Way\Generators\GeneratorsServiceProvider::class,
Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
Orangehill\Iseed\IseedServiceProvider::class,
+ Messerli90\IGDB\IGDBServiceProvider::class,
],
@@ -214,6 +215,7 @@ return [
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'UserVerification' => Jrean\UserVerification\Facades\UserVerification::class,
+ 'IGDB' => \Messerli90\IGDB\Facades\IGDB::class,
],
];
diff --git a/config/services.php b/config/services.php
index 4b5f04934..9b0ca1490 100644
--- a/config/services.php
+++ b/config/services.php
@@ -34,5 +34,9 @@ return [
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],
+ 'igdb' => [
+ 'key' => env('IGDB_KEY', ''),
+ 'url' => 'https://api-endpoint.igdb.com'
+]
];
diff --git a/resources/views/themes/Gentele/games.tpl b/resources/views/themes/Gentele/games.tpl
index 3cc461646..e0bac3c82 100755
--- a/resources/views/themes/Gentele/games.tpl
+++ b/resources/views/themes/Gentele/games.tpl
@@ -95,6 +95,13 @@
name="steam{$result->gamesinfo_id}"
title="View Steam page">
Steam{/if}
+ {if $result->classused == "IGDB"}
+ IGDB{/if}
{if $result->nfoid > 0}