2015-12-13 04:42:28 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App;
|
|
|
|
|
2016-04-02 13:16:09 +00:00
|
|
|
use Exception;
|
2015-12-27 14:06:10 +00:00
|
|
|
use GuzzleHttp\Client;
|
2015-12-13 04:42:28 +00:00
|
|
|
use Illuminate\Foundation\Application as IlluminateApplication;
|
|
|
|
use InvalidArgumentException;
|
2015-12-27 14:06:10 +00:00
|
|
|
use Log;
|
2015-12-13 04:42:28 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Extends \Illuminate\Foundation\Application to override some defaults.
|
|
|
|
*/
|
|
|
|
class Application extends IlluminateApplication
|
|
|
|
{
|
2015-12-28 01:47:32 +00:00
|
|
|
/**
|
|
|
|
* Current Koel version. Must start with a v, and is synced with git tags/releases.
|
|
|
|
*
|
|
|
|
* @link https://github.com/phanan/koel/releases
|
|
|
|
*/
|
2017-04-15 13:01:49 +00:00
|
|
|
const KOEL_VERSION = 'v3.6.1';
|
2015-12-27 14:06:10 +00:00
|
|
|
|
2015-12-13 06:29:32 +00:00
|
|
|
/**
|
|
|
|
* We have merged public path and base path.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function publicPath()
|
|
|
|
{
|
|
|
|
return $this->basePath;
|
|
|
|
}
|
|
|
|
|
2015-12-13 04:42:28 +00:00
|
|
|
/**
|
|
|
|
* Loads a revision'ed asset file, making use of gulp-rev
|
|
|
|
* This is a copycat of L5's Elixir, but catered to our directory structure.
|
|
|
|
*
|
|
|
|
* @param string $file
|
2016-01-28 05:35:51 +00:00
|
|
|
* @param string $manifestFile
|
2015-12-13 04:42:28 +00:00
|
|
|
*
|
2016-08-16 15:12:11 +00:00
|
|
|
* @throws \InvalidArgumentException
|
2016-08-16 15:12:35 +00:00
|
|
|
*
|
|
|
|
* @return string
|
2015-12-13 04:42:28 +00:00
|
|
|
*/
|
2016-01-28 05:35:51 +00:00
|
|
|
public function rev($file, $manifestFile = null)
|
2015-12-13 04:42:28 +00:00
|
|
|
{
|
|
|
|
static $manifest = null;
|
|
|
|
|
2017-02-14 06:53:02 +00:00
|
|
|
$manifestFile = $manifestFile ?: public_path('public/mix-manifest.json');
|
2016-01-28 05:35:51 +00:00
|
|
|
|
2016-08-16 15:12:11 +00:00
|
|
|
if ($manifest === null) {
|
2016-01-28 05:35:51 +00:00
|
|
|
$manifest = json_decode(file_get_contents($manifestFile), true);
|
2015-12-13 04:42:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (isset($manifest[$file])) {
|
2017-02-14 06:53:02 +00:00
|
|
|
return file_exists(public_path('public/hot'))
|
|
|
|
? "http://localhost:8080{$manifest[$file]}"
|
|
|
|
: $this->staticUrl("public{$manifest[$file]}");
|
2015-12-13 04:42:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
|
|
|
|
}
|
2015-12-27 14:06:10 +00:00
|
|
|
|
2016-01-28 05:35:51 +00:00
|
|
|
/**
|
2016-02-09 00:33:21 +00:00
|
|
|
* Get a URL for static file requests.
|
2016-01-28 05:35:51 +00:00
|
|
|
* If this installation of Koel has a CDN_URL configured, use it as the base.
|
2016-03-14 02:36:03 +00:00
|
|
|
* Otherwise, just use a full URL to the asset.
|
2016-01-28 05:35:51 +00:00
|
|
|
*
|
2016-02-03 15:39:15 +00:00
|
|
|
* @param string $name The additional resource name/path.
|
2016-02-09 00:33:21 +00:00
|
|
|
*
|
2016-01-28 05:35:51 +00:00
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function staticUrl($name = null)
|
|
|
|
{
|
2016-08-21 15:19:03 +00:00
|
|
|
$cdnUrl = trim(config('koel.cdn.url'), '/ ');
|
2016-03-14 02:36:03 +00:00
|
|
|
|
|
|
|
return $cdnUrl ? $cdnUrl.'/'.trim(ltrim($name, '/')) : trim(asset($name));
|
2016-01-28 05:35:51 +00:00
|
|
|
}
|
|
|
|
|
2015-12-27 14:06:10 +00:00
|
|
|
/**
|
2016-08-16 15:12:11 +00:00
|
|
|
* Get the latest version number of Koel from GitHub.
|
2016-02-03 15:39:15 +00:00
|
|
|
*
|
|
|
|
* @param Client $client
|
|
|
|
*
|
2015-12-27 14:06:10 +00:00
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getLatestVersion(Client $client = null)
|
|
|
|
{
|
2016-12-12 02:43:14 +00:00
|
|
|
if ($v = cache('latestKoelVersion')) {
|
2015-12-27 14:06:10 +00:00
|
|
|
return $v;
|
|
|
|
}
|
|
|
|
|
2016-07-31 03:43:01 +00:00
|
|
|
$client = $client ?: new Client();
|
|
|
|
|
2015-12-27 14:06:10 +00:00
|
|
|
try {
|
|
|
|
$v = json_decode($client->get('https://api.github.com/repos/phanan/koel/tags')->getBody())[0]->name;
|
2016-07-31 03:38:01 +00:00
|
|
|
// Cache for one day
|
2016-12-12 02:43:14 +00:00
|
|
|
cache(['latestKoelVersion' => $v], 1 * 24 * 60);
|
2015-12-27 14:06:10 +00:00
|
|
|
|
|
|
|
return $v;
|
2016-04-02 13:16:09 +00:00
|
|
|
} catch (Exception $e) {
|
2015-12-27 14:06:10 +00:00
|
|
|
Log::error($e);
|
|
|
|
|
2016-12-09 08:23:40 +00:00
|
|
|
return self::KOEL_VERSION;
|
2015-12-27 14:06:10 +00:00
|
|
|
}
|
|
|
|
}
|
2015-12-13 04:42:28 +00:00
|
|
|
}
|