mirror of
https://github.com/Poniverse/Pony.fm.git
synced 2024-11-25 22:47:59 +01:00
Don't want to lose these files
This commit is contained in:
parent
1617b605f6
commit
84f6064a1b
12 changed files with 442 additions and 125 deletions
|
@ -7,6 +7,7 @@
|
||||||
use Commands\UploadTrackCommand;
|
use Commands\UploadTrackCommand;
|
||||||
use Cover;
|
use Cover;
|
||||||
use Entities\Image;
|
use Entities\Image;
|
||||||
|
use Entities\News;
|
||||||
use Entities\Track;
|
use Entities\Track;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Input;
|
use Illuminate\Support\Facades\Input;
|
||||||
|
@ -30,6 +31,7 @@
|
||||||
|
|
||||||
return Response::json([
|
return Response::json([
|
||||||
'recent_tracks' => $recentTracks,
|
'recent_tracks' => $recentTracks,
|
||||||
'popular_tracks' => Track::popular(30, Auth::check() && Auth::user()->can_see_explicit_content)], 200);
|
'popular_tracks' => Track::popular(30, Auth::check() && Auth::user()->can_see_explicit_content),
|
||||||
|
'news' => News::getNews(0, 10)], 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
|
class CreateNewsTable extends Migration {
|
||||||
|
public function up() {
|
||||||
|
Schema::create('news', function($table){
|
||||||
|
$table->increments('id');
|
||||||
|
$table->integer('user_id')->unsigned()->index();
|
||||||
|
$table->string('post_hash', 32)->index();
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down() {
|
||||||
|
Schema::drop('news');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -40,7 +40,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
App::error(function($exception) {
|
App::error(function($exception) {
|
||||||
return Response::view('errors.500', array(), 404);
|
// return Response::view('errors.500', array(), 404);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
59
app/models/Entities/News.php
Normal file
59
app/models/Entities/News.php
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Entities;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use SimplePie;
|
||||||
|
|
||||||
|
class News extends \Eloquent {
|
||||||
|
public static function getNews($start = 0, $end = 4) {
|
||||||
|
$feed = new SimplePie();
|
||||||
|
$feed->cache = false;
|
||||||
|
$feed->set_feed_url('http://mlpforums.com/blog/rss/404-ponyfm-development-blog/');
|
||||||
|
$feed->init();
|
||||||
|
$feed->handle_content_type();
|
||||||
|
|
||||||
|
$posts = $feed->get_items($start, $end);
|
||||||
|
$postHashes = [];
|
||||||
|
|
||||||
|
foreach ($posts as $post) {
|
||||||
|
$postHashes[] = self::calculateHash($post->get_permalink());
|
||||||
|
}
|
||||||
|
|
||||||
|
$seenRecords = self::where('user_id', '=', Auth::user()->id)->whereIn('post_hash', $postHashes)->get();
|
||||||
|
$seenHashes = [];
|
||||||
|
|
||||||
|
foreach ($seenRecords as $record) {
|
||||||
|
$seenHashes[$record->post_hash] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$postsReturn = [];
|
||||||
|
|
||||||
|
// This date is around when the last blog post was posted as of now.
|
||||||
|
// I put in a cutoff so that blog posts made before this update is pushed are always marked as 'read'
|
||||||
|
$readCutoffDate = mktime(null, null, null, 4, 28, 2013);
|
||||||
|
|
||||||
|
foreach ($posts as $post) {
|
||||||
|
$autoRead = $post->get_date('U') < $readCutoffDate;
|
||||||
|
$postsReturn[] = [
|
||||||
|
'post' => [
|
||||||
|
'title' => $post->get_title(),
|
||||||
|
'date' => $post->get_date('j F Y g:i a'),
|
||||||
|
'url' => $post->get_permalink()
|
||||||
|
],
|
||||||
|
'read' => $autoRead || isset($seenHashes[self::calculateHash($post->get_permalink())])];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $postsReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function markPostAsRead($postUrl) {
|
||||||
|
$postHash = self::calculateHash($postUrl);
|
||||||
|
$news = News::create(['user_id' => Auth::user()->id, 'post_hash' => $postHash]);
|
||||||
|
$news->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function calculateHash($postPermalink) {
|
||||||
|
return md5($postPermalink);
|
||||||
|
}
|
||||||
|
}
|
|
@ -183,7 +183,7 @@ class Container implements ArrayAccess
|
||||||
if (is_null($dependency)) {
|
if (is_null($dependency)) {
|
||||||
$dependencies[] = $this->resolveNonClass($parameter);
|
$dependencies[] = $this->resolveNonClass($parameter);
|
||||||
} else {
|
} else {
|
||||||
$dependencies[] = $this->make($dependency->name);
|
$dependencies[] = $this->resolveClass($parameter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (array) $dependencies;
|
return (array) $dependencies;
|
||||||
|
@ -197,6 +197,18 @@ class Container implements ArrayAccess
|
||||||
throw new BindingResolutionException($message);
|
throw new BindingResolutionException($message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
protected function resolveClass(ReflectionParameter $parameter)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return $this->make($parameter->getClass()->name);
|
||||||
|
} catch (BindingResolutionException $e) {
|
||||||
|
if ($parameter->isOptional()) {
|
||||||
|
return $parameter->getDefaultValue();
|
||||||
|
} else {
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public function resolving(Closure $callback)
|
public function resolving(Closure $callback)
|
||||||
{
|
{
|
||||||
$this->resolvingCallbacks[] = $callback;
|
$this->resolvingCallbacks[] = $callback;
|
||||||
|
@ -290,7 +302,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
use Symfony\Component\HttpFoundation\RedirectResponse as SymfonyRedirect;
|
use Symfony\Component\HttpFoundation\RedirectResponse as SymfonyRedirect;
|
||||||
class Application extends Container implements HttpKernelInterface, ResponsePreparerInterface
|
class Application extends Container implements HttpKernelInterface, ResponsePreparerInterface
|
||||||
{
|
{
|
||||||
const VERSION = '4.0.2';
|
const VERSION = '4.0.6';
|
||||||
protected $booted = false;
|
protected $booted = false;
|
||||||
protected $bootingCallbacks = array();
|
protected $bootingCallbacks = array();
|
||||||
protected $bootedCallbacks = array();
|
protected $bootedCallbacks = array();
|
||||||
|
@ -298,6 +310,7 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep
|
||||||
protected $serviceProviders = array();
|
protected $serviceProviders = array();
|
||||||
protected $loadedProviders = array();
|
protected $loadedProviders = array();
|
||||||
protected $deferredServices = array();
|
protected $deferredServices = array();
|
||||||
|
protected static $requestClass = 'Illuminate\\Http\\Request';
|
||||||
public function __construct(Request $request = null)
|
public function __construct(Request $request = null)
|
||||||
{
|
{
|
||||||
$this['request'] = $this->createRequest($request);
|
$this['request'] = $this->createRequest($request);
|
||||||
|
@ -307,12 +320,13 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep
|
||||||
}
|
}
|
||||||
protected function createRequest(Request $request = null)
|
protected function createRequest(Request $request = null)
|
||||||
{
|
{
|
||||||
return $request ?: Request::createFromGlobals();
|
return $request ?: static::onRequest('createFromGlobals');
|
||||||
}
|
}
|
||||||
public function setRequestForConsoleEnvironment()
|
public function setRequestForConsoleEnvironment()
|
||||||
{
|
{
|
||||||
$url = $this['config']->get('app.url', 'http://localhost');
|
$url = $this['config']->get('app.url', 'http://localhost');
|
||||||
$this->instance('request', Request::create($url, 'GET', array(), array(), array(), $_SERVER));
|
$parameters = array($url, 'GET', array(), array(), array(), $_SERVER);
|
||||||
|
$this->instance('request', static::onRequest('create', $parameters));
|
||||||
}
|
}
|
||||||
public function redirectIfTrailingSlash()
|
public function redirectIfTrailingSlash()
|
||||||
{
|
{
|
||||||
|
@ -476,10 +490,11 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep
|
||||||
{
|
{
|
||||||
if ($this->isDownForMaintenance()) {
|
if ($this->isDownForMaintenance()) {
|
||||||
$response = $this['events']->until('illuminate.app.down');
|
$response = $this['events']->until('illuminate.app.down');
|
||||||
return $this->prepareResponse($response, $request);
|
if (!is_null($response)) {
|
||||||
} else {
|
return $this->prepareResponse($response, $request);
|
||||||
return $this['router']->dispatch($this->prepareRequest($request));
|
}
|
||||||
}
|
}
|
||||||
|
return $this['router']->dispatch($this->prepareRequest($request));
|
||||||
}
|
}
|
||||||
public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
|
public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
|
||||||
{
|
{
|
||||||
|
@ -553,7 +568,7 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep
|
||||||
{
|
{
|
||||||
$this['exception']->error($callback);
|
$this['exception']->error($callback);
|
||||||
}
|
}
|
||||||
public function pushError(Closure $closure)
|
public function pushError(Closure $callback)
|
||||||
{
|
{
|
||||||
$this['exception']->pushError($callback);
|
$this['exception']->pushError($callback);
|
||||||
}
|
}
|
||||||
|
@ -586,6 +601,17 @@ class Application extends Container implements HttpKernelInterface, ResponsePrep
|
||||||
{
|
{
|
||||||
$this->deferredServices = $services;
|
$this->deferredServices = $services;
|
||||||
}
|
}
|
||||||
|
public static function requestClass($class = null)
|
||||||
|
{
|
||||||
|
if (!is_null($class)) {
|
||||||
|
static::$requestClass = $class;
|
||||||
|
}
|
||||||
|
return static::$requestClass;
|
||||||
|
}
|
||||||
|
public static function onRequest($method, $parameters = array())
|
||||||
|
{
|
||||||
|
return forward_static_call_array(array(static::requestClass(), $method), $parameters);
|
||||||
|
}
|
||||||
public function __get($key)
|
public function __get($key)
|
||||||
{
|
{
|
||||||
return $this[$key];
|
return $this[$key];
|
||||||
|
@ -665,7 +691,7 @@ class Request extends \Symfony\Component\HttpFoundation\Request
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (is_array($this->input($key))) {
|
if (is_bool($this->input($key)) or is_array($this->input($key))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return trim((string) $this->input($key)) !== '';
|
return trim((string) $this->input($key)) !== '';
|
||||||
|
@ -782,6 +808,15 @@ class Request extends \Symfony\Component\HttpFoundation\Request
|
||||||
$acceptable = $this->getAcceptableContentTypes();
|
$acceptable = $this->getAcceptableContentTypes();
|
||||||
return isset($acceptable[0]) and $acceptable[0] == 'application/json';
|
return isset($acceptable[0]) and $acceptable[0] == 'application/json';
|
||||||
}
|
}
|
||||||
|
public function format($default = 'html')
|
||||||
|
{
|
||||||
|
foreach ($this->getAcceptableContentTypes() as $type) {
|
||||||
|
if ($format = $this->getFormat($type)) {
|
||||||
|
return $format;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
public function getSessionStore()
|
public function getSessionStore()
|
||||||
{
|
{
|
||||||
if (!isset($this->sessionStore)) {
|
if (!isset($this->sessionStore)) {
|
||||||
|
@ -808,6 +843,8 @@ class Request
|
||||||
const HEADER_CLIENT_PROTO = 'client_proto';
|
const HEADER_CLIENT_PROTO = 'client_proto';
|
||||||
const HEADER_CLIENT_PORT = 'client_port';
|
const HEADER_CLIENT_PORT = 'client_port';
|
||||||
protected static $trustedProxies = array();
|
protected static $trustedProxies = array();
|
||||||
|
protected static $trustedHostPatterns = array();
|
||||||
|
protected static $trustedHosts = array();
|
||||||
protected static $trustedHeaders = array(self::HEADER_CLIENT_IP => 'X_FORWARDED_FOR', self::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST', self::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO', self::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT');
|
protected static $trustedHeaders = array(self::HEADER_CLIENT_IP => 'X_FORWARDED_FOR', self::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST', self::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO', self::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT');
|
||||||
protected static $httpMethodParameterOverride = false;
|
protected static $httpMethodParameterOverride = false;
|
||||||
public $attributes;
|
public $attributes;
|
||||||
|
@ -952,6 +989,9 @@ class Request
|
||||||
$dup->basePath = null;
|
$dup->basePath = null;
|
||||||
$dup->method = null;
|
$dup->method = null;
|
||||||
$dup->format = null;
|
$dup->format = null;
|
||||||
|
if (!$dup->get('_format')) {
|
||||||
|
$dup->setRequestFormat($this->getRequestFormat());
|
||||||
|
}
|
||||||
return $dup;
|
return $dup;
|
||||||
}
|
}
|
||||||
public function __clone()
|
public function __clone()
|
||||||
|
@ -1000,6 +1040,17 @@ class Request
|
||||||
{
|
{
|
||||||
return self::$trustedProxies;
|
return self::$trustedProxies;
|
||||||
}
|
}
|
||||||
|
public static function setTrustedHosts(array $hostPatterns)
|
||||||
|
{
|
||||||
|
self::$trustedHostPatterns = array_map(function ($hostPattern) {
|
||||||
|
return sprintf('{%s}i', str_replace('}', '\\}', $hostPattern));
|
||||||
|
}, $hostPatterns);
|
||||||
|
self::$trustedHosts = array();
|
||||||
|
}
|
||||||
|
public static function getTrustedHosts()
|
||||||
|
{
|
||||||
|
return self::$trustedHostPatterns;
|
||||||
|
}
|
||||||
public static function setTrustedHeaderName($key, $value)
|
public static function setTrustedHeaderName($key, $value)
|
||||||
{
|
{
|
||||||
if (!array_key_exists($key, self::$trustedHeaders)) {
|
if (!array_key_exists($key, self::$trustedHeaders)) {
|
||||||
|
@ -1199,7 +1250,19 @@ class Request
|
||||||
}
|
}
|
||||||
$host = strtolower(preg_replace('/:\\d+$/', '', trim($host)));
|
$host = strtolower(preg_replace('/:\\d+$/', '', trim($host)));
|
||||||
if ($host && !preg_match('/^\\[?(?:[a-zA-Z0-9-:\\]_]+\\.?)+$/', $host)) {
|
if ($host && !preg_match('/^\\[?(?:[a-zA-Z0-9-:\\]_]+\\.?)+$/', $host)) {
|
||||||
throw new \UnexpectedValueException('Invalid Host');
|
throw new \UnexpectedValueException('Invalid Host "' . $host . '"');
|
||||||
|
}
|
||||||
|
if (count(self::$trustedHostPatterns) > 0) {
|
||||||
|
if (in_array($host, self::$trustedHosts)) {
|
||||||
|
return $host;
|
||||||
|
}
|
||||||
|
foreach (self::$trustedHostPatterns as $pattern) {
|
||||||
|
if (preg_match($pattern, $host)) {
|
||||||
|
self::$trustedHosts[] = $host;
|
||||||
|
return $host;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new \UnexpectedValueException('Untrusted Host "' . $host . '"');
|
||||||
}
|
}
|
||||||
return $host;
|
return $host;
|
||||||
}
|
}
|
||||||
|
@ -2152,7 +2215,18 @@ class NativeSessionStorage implements SessionStorageInterface
|
||||||
if ($destroy) {
|
if ($destroy) {
|
||||||
$this->metadataBag->stampNew();
|
$this->metadataBag->stampNew();
|
||||||
}
|
}
|
||||||
return session_regenerate_id($destroy);
|
$ret = session_regenerate_id($destroy);
|
||||||
|
if ('files' === $this->getSaveHandler()->getSaveHandlerName()) {
|
||||||
|
session_write_close();
|
||||||
|
if (isset($_SESSION)) {
|
||||||
|
$backup = $_SESSION;
|
||||||
|
session_start();
|
||||||
|
$_SESSION = $backup;
|
||||||
|
} else {
|
||||||
|
session_start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
}
|
}
|
||||||
public function save()
|
public function save()
|
||||||
{
|
{
|
||||||
|
@ -3067,7 +3141,7 @@ abstract class ServiceProvider
|
||||||
}
|
}
|
||||||
protected function getClassChain(ReflectionClass $reflect)
|
protected function getClassChain(ReflectionClass $reflect)
|
||||||
{
|
{
|
||||||
$lastName = null;
|
$classes = array();
|
||||||
while ($reflect !== false) {
|
while ($reflect !== false) {
|
||||||
$classes[] = $reflect;
|
$classes[] = $reflect;
|
||||||
$reflect = $reflect->getParentClass();
|
$reflect = $reflect->getParentClass();
|
||||||
|
@ -3081,9 +3155,9 @@ abstract class ServiceProvider
|
||||||
}
|
}
|
||||||
return $namespace;
|
return $namespace;
|
||||||
}
|
}
|
||||||
public function commands()
|
public function commands($commands)
|
||||||
{
|
{
|
||||||
$commands = func_get_args();
|
$commands = is_array($commands) ? $commands : func_get_args();
|
||||||
$events = $this->app['events'];
|
$events = $this->app['events'];
|
||||||
$events->listen('artisan.start', function ($artisan) use($commands) {
|
$events->listen('artisan.start', function ($artisan) use($commands) {
|
||||||
$artisan->resolveCommands($commands);
|
$artisan->resolveCommands($commands);
|
||||||
|
@ -3398,6 +3472,10 @@ class Str
|
||||||
}
|
}
|
||||||
return rtrim($matches[0]) . $end;
|
return rtrim($matches[0]) . $end;
|
||||||
}
|
}
|
||||||
|
public static function parseCallback($callback, $default)
|
||||||
|
{
|
||||||
|
return static::contains($callback, '@') ? explode('@', $callback, 2) : array($callback, $default);
|
||||||
|
}
|
||||||
public static function plural($value, $count = 2)
|
public static function plural($value, $count = 2)
|
||||||
{
|
{
|
||||||
return Pluralizer::plural($value, $count);
|
return Pluralizer::plural($value, $count);
|
||||||
|
@ -3522,6 +3600,9 @@ class ErrorHandler
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ($this->displayErrors && error_reporting() & $level && $this->level & $level) {
|
if ($this->displayErrors && error_reporting() & $level && $this->level & $level) {
|
||||||
|
if (!class_exists('Symfony\\Component\\Debug\\Exception\\ContextErrorException')) {
|
||||||
|
require 'F:\\Nelson\\My Documents - Personal\\Visual Studio 2010\\Projects\\Poniverse\\spa.pony.fm\\vendor\\symfony\\debug\\Symfony\\Component\\Debug' . '/Exception/ContextErrorException.php';
|
||||||
|
}
|
||||||
throw new ContextErrorException(sprintf('%s: %s in %s line %d', isset($this->levels[$level]) ? $this->levels[$level] : $level, $message, $file, $line), 0, $level, $file, $line, $context);
|
throw new ContextErrorException(sprintf('%s: %s in %s line %d', isset($this->levels[$level]) ? $this->levels[$level] : $level, $message, $file, $line), 0, $level, $file, $line, $context);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -3582,7 +3663,7 @@ class Repository extends NamespacedItemResolver implements ArrayAccess
|
||||||
public function has($key)
|
public function has($key)
|
||||||
{
|
{
|
||||||
$default = microtime(true);
|
$default = microtime(true);
|
||||||
return $this->get($key, $default) != $default;
|
return $this->get($key, $default) !== $default;
|
||||||
}
|
}
|
||||||
public function hasGroup($key)
|
public function hasGroup($key)
|
||||||
{
|
{
|
||||||
|
@ -3923,7 +4004,7 @@ class Filesystem
|
||||||
}
|
}
|
||||||
public function lastModified($path)
|
public function lastModified($path)
|
||||||
{
|
{
|
||||||
return filemtime(realpath($path));
|
return filemtime($path);
|
||||||
}
|
}
|
||||||
public function isDirectory($directory)
|
public function isDirectory($directory)
|
||||||
{
|
{
|
||||||
|
@ -3959,7 +4040,7 @@ class Filesystem
|
||||||
{
|
{
|
||||||
$directories = array();
|
$directories = array();
|
||||||
foreach (Finder::create()->in($directory)->directories()->depth(0) as $dir) {
|
foreach (Finder::create()->in($directory)->directories()->depth(0) as $dir) {
|
||||||
$directories[] = $dir->getRealPath();
|
$directories[] = $dir->getPathname();
|
||||||
}
|
}
|
||||||
return $directories;
|
return $directories;
|
||||||
}
|
}
|
||||||
|
@ -3980,12 +4061,12 @@ class Filesystem
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
$target = $destination . '/' . $item->getBasename();
|
$target = $destination . '/' . $item->getBasename();
|
||||||
if ($item->isDir()) {
|
if ($item->isDir()) {
|
||||||
$path = $item->getRealPath();
|
$path = $item->getPathname();
|
||||||
if (!$this->copyDirectory($path, $target, $options)) {
|
if (!$this->copyDirectory($path, $target, $options)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!$this->copy($item->getRealPath(), $target)) {
|
if (!$this->copy($item->getPathname(), $target)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4000,9 +4081,9 @@ class Filesystem
|
||||||
$items = new FilesystemIterator($directory);
|
$items = new FilesystemIterator($directory);
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
if ($item->isDir()) {
|
if ($item->isDir()) {
|
||||||
$this->deleteDirectory($item->getRealPath());
|
$this->deleteDirectory($item->getPathname());
|
||||||
} else {
|
} else {
|
||||||
$this->delete($item->getRealPath());
|
$this->delete($item->getPathname());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$preserve) {
|
if (!$preserve) {
|
||||||
|
@ -4248,8 +4329,7 @@ class SessionServiceProvider extends ServiceProvider
|
||||||
}
|
}
|
||||||
protected function registerSessionEvents()
|
protected function registerSessionEvents()
|
||||||
{
|
{
|
||||||
$app = $this->app;
|
$config = $this->app['config']['session'];
|
||||||
$config = $app['config']['session'];
|
|
||||||
if (!is_null($config['driver'])) {
|
if (!is_null($config['driver'])) {
|
||||||
$this->registerBootingEvent();
|
$this->registerBootingEvent();
|
||||||
$this->registerCloseEvent();
|
$this->registerCloseEvent();
|
||||||
|
@ -4257,8 +4337,7 @@ class SessionServiceProvider extends ServiceProvider
|
||||||
}
|
}
|
||||||
protected function registerBootingEvent()
|
protected function registerBootingEvent()
|
||||||
{
|
{
|
||||||
$app = $this->app;
|
$this->app->booting(function ($app) {
|
||||||
$this->app->booting(function ($app) use($app) {
|
|
||||||
$app['session']->start();
|
$app['session']->start();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -4286,7 +4365,7 @@ class SessionServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
$config = $this->app['config']['session'];
|
$config = $this->app['config']['session'];
|
||||||
$expire = $this->getExpireTime($config);
|
$expire = $this->getExpireTime($config);
|
||||||
setcookie($config['cookie'], session_id(), $expire, $config['path'], $config['domain']);
|
setcookie($config['cookie'], session_id(), $expire, $config['path'], $config['domain'], false, true);
|
||||||
}
|
}
|
||||||
protected function getExpireTime($config)
|
protected function getExpireTime($config)
|
||||||
{
|
{
|
||||||
|
@ -4829,21 +4908,21 @@ class Router
|
||||||
$this->patternFilters[$pattern][] = compact('name', 'methods');
|
$this->patternFilters[$pattern][] = compact('name', 'methods');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function findPatternFilters(Request $request)
|
public function findPatternFilters($method, $path)
|
||||||
{
|
{
|
||||||
$results = array();
|
$results = array();
|
||||||
foreach ($this->patternFilters as $pattern => $filters) {
|
foreach ($this->patternFilters as $pattern => $filters) {
|
||||||
if (str_is('/' . $pattern, $request->getPathInfo())) {
|
if (str_is('/' . $pattern, $path)) {
|
||||||
$merge = $this->filterPatternsByMethod($request, $filters);
|
$merge = $this->filterPatternsByMethod($method, $filters);
|
||||||
$results = array_merge($results, $merge);
|
$results = array_merge($results, $merge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
protected function filterPatternsByMethod(Request $request, $filters)
|
protected function filterPatternsByMethod($method, $filters)
|
||||||
{
|
{
|
||||||
$results = array();
|
$results = array();
|
||||||
$method = strtolower($request->getMethod());
|
$method = strtolower($method);
|
||||||
foreach ($filters as $filter) {
|
foreach ($filters as $filter) {
|
||||||
if (is_null($filter['methods']) or in_array($method, $filter['methods'])) {
|
if (is_null($filter['methods']) or in_array($method, $filter['methods'])) {
|
||||||
$results[] = $filter['name'];
|
$results[] = $filter['name'];
|
||||||
|
@ -5154,7 +5233,7 @@ class Dispatcher
|
||||||
protected $sorted = array();
|
protected $sorted = array();
|
||||||
public function __construct(Container $container = null)
|
public function __construct(Container $container = null)
|
||||||
{
|
{
|
||||||
$this->container = $container;
|
$this->container = $container ?: new Container();
|
||||||
}
|
}
|
||||||
public function listen($event, $listener, $priority = 0)
|
public function listen($event, $listener, $priority = 0)
|
||||||
{
|
{
|
||||||
|
@ -5166,7 +5245,7 @@ class Dispatcher
|
||||||
}
|
}
|
||||||
protected function setupWildcardListen($event, $listener, $priority)
|
protected function setupWildcardListen($event, $listener, $priority)
|
||||||
{
|
{
|
||||||
$this->wildcards[$event][] = $listener;
|
$this->wildcards[$event][] = $this->makeListener($listener);
|
||||||
}
|
}
|
||||||
public function hasListeners($eventName)
|
public function hasListeners($eventName)
|
||||||
{
|
{
|
||||||
|
@ -5300,6 +5379,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
protected $relations = array();
|
protected $relations = array();
|
||||||
protected $hidden = array();
|
protected $hidden = array();
|
||||||
protected $visible = array();
|
protected $visible = array();
|
||||||
|
protected $appends = array();
|
||||||
protected $fillable = array();
|
protected $fillable = array();
|
||||||
protected $guarded = array('*');
|
protected $guarded = array('*');
|
||||||
protected $touches = array();
|
protected $touches = array();
|
||||||
|
@ -5376,6 +5456,10 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
$model->save();
|
$model->save();
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
public static function query()
|
||||||
|
{
|
||||||
|
return with(new static())->newQuery();
|
||||||
|
}
|
||||||
public static function on($connection = null)
|
public static function on($connection = null)
|
||||||
{
|
{
|
||||||
$instance = new static();
|
$instance = new static();
|
||||||
|
@ -5526,7 +5610,8 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
{
|
{
|
||||||
$query = $this->newQuery()->where($this->getKeyName(), $this->getKey());
|
$query = $this->newQuery()->where($this->getKeyName(), $this->getKey());
|
||||||
if ($this->softDelete) {
|
if ($this->softDelete) {
|
||||||
$query->update(array(static::DELETED_AT => new DateTime()));
|
$this->{static::DELETED_AT} = $time = $this->freshTimestamp();
|
||||||
|
$query->update(array(static::DELETED_AT => $this->fromDateTime($time)));
|
||||||
} else {
|
} else {
|
||||||
$query->delete();
|
$query->delete();
|
||||||
}
|
}
|
||||||
|
@ -5534,8 +5619,13 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
public function restore()
|
public function restore()
|
||||||
{
|
{
|
||||||
if ($this->softDelete) {
|
if ($this->softDelete) {
|
||||||
|
if ($this->fireModelEvent('restoring') === false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$this->{static::DELETED_AT} = null;
|
$this->{static::DELETED_AT} = null;
|
||||||
return $this->save();
|
$result = $this->save();
|
||||||
|
$this->fireModelEvent('restored', false);
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static function saving($callback)
|
public static function saving($callback)
|
||||||
|
@ -5570,6 +5660,14 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
{
|
{
|
||||||
static::registerModelEvent('deleted', $callback);
|
static::registerModelEvent('deleted', $callback);
|
||||||
}
|
}
|
||||||
|
public static function restoring($callback)
|
||||||
|
{
|
||||||
|
static::registerModelEvent('restoring', $callback);
|
||||||
|
}
|
||||||
|
public static function restored($callback)
|
||||||
|
{
|
||||||
|
static::registerModelEvent('restored', $callback);
|
||||||
|
}
|
||||||
public static function flushEventListeners()
|
public static function flushEventListeners()
|
||||||
{
|
{
|
||||||
if (!isset(static::$dispatcher)) {
|
if (!isset(static::$dispatcher)) {
|
||||||
|
@ -5589,7 +5687,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
}
|
}
|
||||||
public function getObservableEvents()
|
public function getObservableEvents()
|
||||||
{
|
{
|
||||||
return array('creating', 'created', 'updating', 'updated', 'deleting', 'deleted', 'saving', 'saved');
|
return array('creating', 'created', 'updating', 'updated', 'deleting', 'deleted', 'saving', 'saved', 'restoring', 'restored');
|
||||||
}
|
}
|
||||||
protected function increment($column, $amount = 1)
|
protected function increment($column, $amount = 1)
|
||||||
{
|
{
|
||||||
|
@ -5758,6 +5856,10 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
{
|
{
|
||||||
return new DateTime();
|
return new DateTime();
|
||||||
}
|
}
|
||||||
|
public function freshTimestampString()
|
||||||
|
{
|
||||||
|
return $this->fromDateTime($this->freshTimestamp());
|
||||||
|
}
|
||||||
public function newQuery($excludeDeleted = true)
|
public function newQuery($excludeDeleted = true)
|
||||||
{
|
{
|
||||||
$builder = new Builder($this->newBaseQueryBuilder());
|
$builder = new Builder($this->newBaseQueryBuilder());
|
||||||
|
@ -5800,7 +5902,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
if (isset($this->table)) {
|
if (isset($this->table)) {
|
||||||
return $this->table;
|
return $this->table;
|
||||||
}
|
}
|
||||||
return str_replace('\\', '', snake_case(str_plural(get_class($this))));
|
return str_replace('\\', '', snake_case(str_plural(class_basename($this))));
|
||||||
}
|
}
|
||||||
public function setTable($table)
|
public function setTable($table)
|
||||||
{
|
{
|
||||||
|
@ -5860,6 +5962,10 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
{
|
{
|
||||||
$this->visible = $visible;
|
$this->visible = $visible;
|
||||||
}
|
}
|
||||||
|
public function setAppends(array $appends)
|
||||||
|
{
|
||||||
|
$this->appends = $appends;
|
||||||
|
}
|
||||||
public function getFillable()
|
public function getFillable()
|
||||||
{
|
{
|
||||||
return $this->fillable;
|
return $this->fillable;
|
||||||
|
@ -5941,26 +6047,26 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
}
|
}
|
||||||
public function attributesToArray()
|
public function attributesToArray()
|
||||||
{
|
{
|
||||||
$attributes = $this->getAccessibleAttributes();
|
$attributes = $this->getArrayableAttributes();
|
||||||
foreach ($this->getMutatedAttributes() as $key) {
|
foreach ($this->getMutatedAttributes() as $key) {
|
||||||
if (!array_key_exists($key, $attributes)) {
|
if (!array_key_exists($key, $attributes)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$attributes[$key] = $this->mutateAttribute($key, $attributes[$key]);
|
$attributes[$key] = $this->mutateAttribute($key, $attributes[$key]);
|
||||||
}
|
}
|
||||||
|
foreach ($this->appends as $key) {
|
||||||
|
$attributes[$key] = $this->mutateAttribute($key, null);
|
||||||
|
}
|
||||||
return $attributes;
|
return $attributes;
|
||||||
}
|
}
|
||||||
protected function getAccessibleAttributes()
|
protected function getArrayableAttributes()
|
||||||
{
|
{
|
||||||
if (count($this->visible) > 0) {
|
return $this->getArrayableItems($this->attributes);
|
||||||
return array_intersect_key($this->attributes, array_flip($this->visible));
|
|
||||||
}
|
|
||||||
return array_diff_key($this->attributes, array_flip($this->hidden));
|
|
||||||
}
|
}
|
||||||
public function relationsToArray()
|
public function relationsToArray()
|
||||||
{
|
{
|
||||||
$attributes = array();
|
$attributes = array();
|
||||||
foreach ($this->relations as $key => $value) {
|
foreach ($this->getArrayableRelations() as $key => $value) {
|
||||||
if (in_array($key, $this->hidden)) {
|
if (in_array($key, $this->hidden)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -5972,12 +6078,23 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
if (static::$snakeAttributes) {
|
if (static::$snakeAttributes) {
|
||||||
$key = snake_case($key);
|
$key = snake_case($key);
|
||||||
}
|
}
|
||||||
if (isset($relation)) {
|
if (isset($relation) or is_null($value)) {
|
||||||
$attributes[$key] = $relation;
|
$attributes[$key] = $relation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $attributes;
|
return $attributes;
|
||||||
}
|
}
|
||||||
|
protected function getArrayableRelations()
|
||||||
|
{
|
||||||
|
return $this->getArrayableItems($this->relations);
|
||||||
|
}
|
||||||
|
protected function getArrayableItems(array $values)
|
||||||
|
{
|
||||||
|
if (count($this->visible) > 0) {
|
||||||
|
return array_intersect_key($values, array_flip($this->visible));
|
||||||
|
}
|
||||||
|
return array_diff_key($values, array_flip($this->hidden));
|
||||||
|
}
|
||||||
public function getAttribute($key)
|
public function getAttribute($key)
|
||||||
{
|
{
|
||||||
$inAttributes = array_key_exists($key, $this->attributes);
|
$inAttributes = array_key_exists($key, $this->attributes);
|
||||||
|
@ -6039,7 +6156,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
{
|
{
|
||||||
return array(static::CREATED_AT, static::UPDATED_AT, static::DELETED_AT);
|
return array(static::CREATED_AT, static::UPDATED_AT, static::DELETED_AT);
|
||||||
}
|
}
|
||||||
protected function fromDateTime($value)
|
public function fromDateTime($value)
|
||||||
{
|
{
|
||||||
$format = $this->getDateFormat();
|
$format = $this->getDateFormat();
|
||||||
if ($value instanceof DateTime) {
|
if ($value instanceof DateTime) {
|
||||||
|
@ -6109,6 +6226,10 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
}
|
}
|
||||||
return $dirty;
|
return $dirty;
|
||||||
}
|
}
|
||||||
|
public function getRelations()
|
||||||
|
{
|
||||||
|
return $this->relations;
|
||||||
|
}
|
||||||
public function getRelation($relation)
|
public function getRelation($relation)
|
||||||
{
|
{
|
||||||
return $this->relations[$relation];
|
return $this->relations[$relation];
|
||||||
|
@ -6134,6 +6255,7 @@ abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterfa
|
||||||
public function setConnection($name)
|
public function setConnection($name)
|
||||||
{
|
{
|
||||||
$this->connection = $name;
|
$this->connection = $name;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
public static function resolveConnection($connection = null)
|
public static function resolveConnection($connection = null)
|
||||||
{
|
{
|
||||||
|
@ -6256,6 +6378,7 @@ class DatabaseManager implements ConnectionResolverInterface
|
||||||
}
|
}
|
||||||
public function reconnect($name = null)
|
public function reconnect($name = null)
|
||||||
{
|
{
|
||||||
|
$name = $name ?: $this->getDefaultConnection();
|
||||||
unset($this->connections[$name]);
|
unset($this->connections[$name]);
|
||||||
return $this->connection($name);
|
return $this->connection($name);
|
||||||
}
|
}
|
||||||
|
@ -6265,6 +6388,10 @@ class DatabaseManager implements ConnectionResolverInterface
|
||||||
if (isset($this->extensions[$name])) {
|
if (isset($this->extensions[$name])) {
|
||||||
return call_user_func($this->extensions[$name], $config);
|
return call_user_func($this->extensions[$name], $config);
|
||||||
}
|
}
|
||||||
|
$driver = $config['driver'];
|
||||||
|
if (isset($this->extensions[$driver])) {
|
||||||
|
return call_user_func($this->extensions[$driver], $config);
|
||||||
|
}
|
||||||
return $this->factory->make($config, $name);
|
return $this->factory->make($config, $name);
|
||||||
}
|
}
|
||||||
protected function prepare(Connection $connection)
|
protected function prepare(Connection $connection)
|
||||||
|
@ -6409,7 +6536,7 @@ class Store extends SymfonySession
|
||||||
{
|
{
|
||||||
return array_get($this->all(), $name, $default);
|
return array_get($this->all(), $name, $default);
|
||||||
}
|
}
|
||||||
public function hasOldInput($key)
|
public function hasOldInput($key = null)
|
||||||
{
|
{
|
||||||
return !is_null($this->getOldInput($key));
|
return !is_null($this->getOldInput($key));
|
||||||
}
|
}
|
||||||
|
@ -6543,13 +6670,18 @@ class SessionManager extends Manager
|
||||||
}
|
}
|
||||||
protected function createRedisDriver()
|
protected function createRedisDriver()
|
||||||
{
|
{
|
||||||
return $this->createCacheBased('redis');
|
$handler = $this->createCacheHandler('redis');
|
||||||
|
$handler->getCache()->getStore()->setConnection($this->app['config']['session.connection']);
|
||||||
|
return $this->buildSession($handler);
|
||||||
}
|
}
|
||||||
protected function createCacheBased($driver)
|
protected function createCacheBased($driver)
|
||||||
|
{
|
||||||
|
return $this->buildSession($this->createCacheHandler($driver));
|
||||||
|
}
|
||||||
|
protected function createCacheHandler($driver)
|
||||||
{
|
{
|
||||||
$minutes = $this->app['config']['session.lifetime'];
|
$minutes = $this->app['config']['session.lifetime'];
|
||||||
$handler = new CacheBasedSessionHandler($this->app['cache']->driver($driver), $minutes);
|
return new CacheBasedSessionHandler($this->app['cache']->driver($driver), $minutes);
|
||||||
return $this->buildSession($handler);
|
|
||||||
}
|
}
|
||||||
protected function buildSession($handler)
|
protected function buildSession($handler)
|
||||||
{
|
{
|
||||||
|
@ -6728,11 +6860,15 @@ class Encrypter
|
||||||
if (!$payload or $this->invalidPayload($payload)) {
|
if (!$payload or $this->invalidPayload($payload)) {
|
||||||
throw new DecryptException('Invalid data.');
|
throw new DecryptException('Invalid data.');
|
||||||
}
|
}
|
||||||
if ($payload['mac'] !== $this->hash($payload['iv'], $payload['value'])) {
|
if (!$this->validMac($payload)) {
|
||||||
throw new DecryptException('MAC is invalid.');
|
throw new DecryptException('MAC is invalid.');
|
||||||
}
|
}
|
||||||
return $payload;
|
return $payload;
|
||||||
}
|
}
|
||||||
|
protected function validMac(array $payload)
|
||||||
|
{
|
||||||
|
return $payload['mac'] == $this->hash($payload['iv'], $payload['value']);
|
||||||
|
}
|
||||||
protected function hash($iv, $value)
|
protected function hash($iv, $value)
|
||||||
{
|
{
|
||||||
return hash_hmac('sha256', $iv . $value, $this->key);
|
return hash_hmac('sha256', $iv . $value, $this->key);
|
||||||
|
@ -6915,6 +7051,7 @@ class Logger implements LoggerInterface
|
||||||
const CRITICAL = 500;
|
const CRITICAL = 500;
|
||||||
const ALERT = 550;
|
const ALERT = 550;
|
||||||
const EMERGENCY = 600;
|
const EMERGENCY = 600;
|
||||||
|
const API = 1;
|
||||||
protected static $levels = array(100 => 'DEBUG', 200 => 'INFO', 250 => 'NOTICE', 300 => 'WARNING', 400 => 'ERROR', 500 => 'CRITICAL', 550 => 'ALERT', 600 => 'EMERGENCY');
|
protected static $levels = array(100 => 'DEBUG', 200 => 'INFO', 250 => 'NOTICE', 300 => 'WARNING', 400 => 'ERROR', 500 => 'CRITICAL', 550 => 'ALERT', 600 => 'EMERGENCY');
|
||||||
protected static $timezone;
|
protected static $timezone;
|
||||||
protected $name;
|
protected $name;
|
||||||
|
@ -7141,6 +7278,7 @@ abstract class AbstractHandler implements HandlerInterface
|
||||||
throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), ' . var_export($callback, true) . ' given');
|
throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), ' . var_export($callback, true) . ' given');
|
||||||
}
|
}
|
||||||
array_unshift($this->processors, $callback);
|
array_unshift($this->processors, $callback);
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
public function popProcessor()
|
public function popProcessor()
|
||||||
{
|
{
|
||||||
|
@ -7152,6 +7290,7 @@ abstract class AbstractHandler implements HandlerInterface
|
||||||
public function setFormatter(FormatterInterface $formatter)
|
public function setFormatter(FormatterInterface $formatter)
|
||||||
{
|
{
|
||||||
$this->formatter = $formatter;
|
$this->formatter = $formatter;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
public function getFormatter()
|
public function getFormatter()
|
||||||
{
|
{
|
||||||
|
@ -7163,6 +7302,7 @@ abstract class AbstractHandler implements HandlerInterface
|
||||||
public function setLevel($level)
|
public function setLevel($level)
|
||||||
{
|
{
|
||||||
$this->level = $level;
|
$this->level = $level;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
public function getLevel()
|
public function getLevel()
|
||||||
{
|
{
|
||||||
|
@ -7171,6 +7311,7 @@ abstract class AbstractHandler implements HandlerInterface
|
||||||
public function setBubble($bubble)
|
public function setBubble($bubble)
|
||||||
{
|
{
|
||||||
$this->bubble = $bubble;
|
$this->bubble = $bubble;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
public function getBubble()
|
public function getBubble()
|
||||||
{
|
{
|
||||||
|
@ -7303,18 +7444,16 @@ class RotatingFileHandler extends StreamHandler
|
||||||
if (!empty($fileInfo['extension'])) {
|
if (!empty($fileInfo['extension'])) {
|
||||||
$glob .= '.' . $fileInfo['extension'];
|
$glob .= '.' . $fileInfo['extension'];
|
||||||
}
|
}
|
||||||
$iterator = new \GlobIterator($glob);
|
$logFiles = glob($glob);
|
||||||
$count = $iterator->count();
|
if ($this->maxFiles >= count($logFiles)) {
|
||||||
if ($this->maxFiles >= $count) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$array = iterator_to_array($iterator);
|
usort($logFiles, function ($a, $b) {
|
||||||
usort($array, function ($a, $b) {
|
return strcmp($b, $a);
|
||||||
return strcmp($b->getFilename(), $a->getFilename());
|
|
||||||
});
|
});
|
||||||
foreach (array_slice($array, $this->maxFiles) as $file) {
|
foreach (array_slice($logFiles, $this->maxFiles) as $file) {
|
||||||
if ($file->isWritable()) {
|
if (is_writable($file)) {
|
||||||
unlink($file->getRealPath());
|
unlink($file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7819,7 +7958,8 @@ class Route extends BaseRoute
|
||||||
protected function getAllBeforeFilters(Request $request)
|
protected function getAllBeforeFilters(Request $request)
|
||||||
{
|
{
|
||||||
$before = $this->getBeforeFilters();
|
$before = $this->getBeforeFilters();
|
||||||
return array_merge($before, $this->router->findPatternFilters($request));
|
$patterns = $this->router->findPatternFilters($request->getMethod(), $request->getPathInfo());
|
||||||
|
return array_merge($before, $patterns);
|
||||||
}
|
}
|
||||||
protected function callAfterFilters(Request $request, $response)
|
protected function callAfterFilters(Request $request, $response)
|
||||||
{
|
{
|
||||||
|
@ -7935,7 +8075,7 @@ class Route extends BaseRoute
|
||||||
}
|
}
|
||||||
public function setBeforeFilters($value)
|
public function setBeforeFilters($value)
|
||||||
{
|
{
|
||||||
$filters = is_string($value) ? explode('|', $value) : (array) $value;
|
$filters = $this->parseFilterValue($value);
|
||||||
$this->setOption('_before', array_merge($this->getBeforeFilters(), $filters));
|
$this->setOption('_before', array_merge($this->getBeforeFilters(), $filters));
|
||||||
}
|
}
|
||||||
public function getAfterFilters()
|
public function getAfterFilters()
|
||||||
|
@ -7944,9 +8084,17 @@ class Route extends BaseRoute
|
||||||
}
|
}
|
||||||
public function setAfterFilters($value)
|
public function setAfterFilters($value)
|
||||||
{
|
{
|
||||||
$filters = is_string($value) ? explode('|', $value) : (array) $value;
|
$filters = $this->parseFilterValue($value);
|
||||||
$this->setOption('_after', array_merge($this->getAfterFilters(), $filters));
|
$this->setOption('_after', array_merge($this->getAfterFilters(), $filters));
|
||||||
}
|
}
|
||||||
|
protected function parseFilterValue($value)
|
||||||
|
{
|
||||||
|
$results = array();
|
||||||
|
foreach ((array) $value as $filters) {
|
||||||
|
$results = array_merge($results, explode('|', $filters));
|
||||||
|
}
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
public function setParameters($parameters)
|
public function setParameters($parameters)
|
||||||
{
|
{
|
||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
|
@ -8109,7 +8257,8 @@ class Environment
|
||||||
{
|
{
|
||||||
$path = $this->finder->find($view);
|
$path = $this->finder->find($view);
|
||||||
$data = array_merge($mergeData, $this->parseData($data));
|
$data = array_merge($mergeData, $this->parseData($data));
|
||||||
return new View($this, $this->getEngineFromPath($path), $view, $path, $data);
|
$this->callCreator($view = new View($this, $this->getEngineFromPath($path), $view, $path, $data));
|
||||||
|
return $view;
|
||||||
}
|
}
|
||||||
protected function parseData($data)
|
protected function parseData($data)
|
||||||
{
|
{
|
||||||
|
@ -8170,47 +8319,64 @@ class Environment
|
||||||
$this->share($innerKey, $innerValue);
|
$this->share($innerKey, $innerValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public function creator($views, $callback)
|
||||||
|
{
|
||||||
|
$creators = array();
|
||||||
|
foreach ((array) $views as $view) {
|
||||||
|
$creators[] = $this->addViewEvent($view, $callback, 'creating: ');
|
||||||
|
}
|
||||||
|
return $creators;
|
||||||
|
}
|
||||||
public function composer($views, $callback)
|
public function composer($views, $callback)
|
||||||
{
|
{
|
||||||
$composers = array();
|
$composers = array();
|
||||||
foreach ((array) $views as $view) {
|
foreach ((array) $views as $view) {
|
||||||
$composers[] = $this->addComposer($view, $callback);
|
$composers[] = $this->addViewEvent($view, $callback);
|
||||||
}
|
}
|
||||||
return $composers;
|
return $composers;
|
||||||
}
|
}
|
||||||
protected function addComposer($view, $callback)
|
protected function addViewEvent($view, $callback, $prefix = 'composing: ')
|
||||||
{
|
{
|
||||||
if ($callback instanceof Closure) {
|
if ($callback instanceof Closure) {
|
||||||
$this->events->listen('composing: ' . $view, $callback);
|
$this->events->listen($prefix . $view, $callback);
|
||||||
return $callback;
|
return $callback;
|
||||||
} elseif (is_string($callback)) {
|
} elseif (is_string($callback)) {
|
||||||
return $this->addClassComposer($view, $callback);
|
return $this->addClassEvent($view, $callback, $prefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected function addClassComposer($view, $class)
|
protected function addClassEvent($view, $class, $prefix)
|
||||||
{
|
{
|
||||||
$name = 'composing: ' . $view;
|
$name = $prefix . $view;
|
||||||
$callback = $this->buildClassComposerCallback($class);
|
$callback = $this->buildClassEventCallback($class, $prefix);
|
||||||
$this->events->listen($name, $callback);
|
$this->events->listen($name, $callback);
|
||||||
return $callback;
|
return $callback;
|
||||||
}
|
}
|
||||||
protected function buildClassComposerCallback($class)
|
protected function buildClassEventCallback($class, $prefix)
|
||||||
{
|
{
|
||||||
$container = $this->container;
|
$container = $this->container;
|
||||||
list($class, $method) = $this->parseClassComposer($class);
|
list($class, $method) = $this->parseClassEvent($class, $prefix);
|
||||||
return function () use($class, $method, $container) {
|
return function () use($class, $method, $container) {
|
||||||
$callable = array($container->make($class), $method);
|
$callable = array($container->make($class), $method);
|
||||||
return call_user_func_array($callable, func_get_args());
|
return call_user_func_array($callable, func_get_args());
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
protected function parseClassComposer($class)
|
protected function parseClassEvent($class, $prefix)
|
||||||
{
|
{
|
||||||
return str_contains($class, '@') ? explode('@', $class) : array($class, 'compose');
|
if (str_contains($class, '@')) {
|
||||||
|
return explode('@', $class);
|
||||||
|
} else {
|
||||||
|
$method = str_contains($prefix, 'composing') ? 'compose' : 'create';
|
||||||
|
return array($class, $method);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public function callComposer(View $view)
|
public function callComposer(View $view)
|
||||||
{
|
{
|
||||||
$this->events->fire('composing: ' . $view->getName(), array($view));
|
$this->events->fire('composing: ' . $view->getName(), array($view));
|
||||||
}
|
}
|
||||||
|
public function callCreator(View $view)
|
||||||
|
{
|
||||||
|
$this->events->fire('creating: ' . $view->getName(), array($view));
|
||||||
|
}
|
||||||
public function startSection($section, $content = '')
|
public function startSection($section, $content = '')
|
||||||
{
|
{
|
||||||
if ($content === '') {
|
if ($content === '') {
|
||||||
|
@ -8246,9 +8412,9 @@ class Environment
|
||||||
$this->sections[$section] = $content;
|
$this->sections[$section] = $content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function yieldContent($section)
|
public function yieldContent($section, $default = '')
|
||||||
{
|
{
|
||||||
return isset($this->sections[$section]) ? $this->sections[$section] : '';
|
return isset($this->sections[$section]) ? $this->sections[$section] : $default;
|
||||||
}
|
}
|
||||||
public function flushSections()
|
public function flushSections()
|
||||||
{
|
{
|
||||||
|
@ -8300,6 +8466,10 @@ class Environment
|
||||||
{
|
{
|
||||||
return $this->events;
|
return $this->events;
|
||||||
}
|
}
|
||||||
|
public function setDispatcher(Dispatcher $events)
|
||||||
|
{
|
||||||
|
$this->events = $events;
|
||||||
|
}
|
||||||
public function getContainer()
|
public function getContainer()
|
||||||
{
|
{
|
||||||
return $this->container;
|
return $this->container;
|
||||||
|
@ -8414,6 +8584,11 @@ class MessageBag implements ArrayableInterface, Countable, JsonableInterface, Me
|
||||||
public function setFormat($format = ':message')
|
public function setFormat($format = ':message')
|
||||||
{
|
{
|
||||||
$this->format = $format;
|
$this->format = $format;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
public function isEmpty()
|
||||||
|
{
|
||||||
|
return !$this->any();
|
||||||
}
|
}
|
||||||
public function any()
|
public function any()
|
||||||
{
|
{
|
||||||
|
@ -9119,8 +9294,16 @@ class Response
|
||||||
$obStatus = ob_get_status(1);
|
$obStatus = ob_get_status(1);
|
||||||
while (($level = ob_get_level()) > 0 && $level !== $previous) {
|
while (($level = ob_get_level()) > 0 && $level !== $previous) {
|
||||||
$previous = $level;
|
$previous = $level;
|
||||||
if ($obStatus[$level - 1] && isset($obStatus[$level - 1]['del']) && $obStatus[$level - 1]['del']) {
|
if ($obStatus[$level - 1]) {
|
||||||
ob_end_flush();
|
if (version_compare(PHP_VERSION, '5.4', '>=')) {
|
||||||
|
if (isset($obStatus[$level - 1]['flags']) && $obStatus[$level - 1]['flags'] & PHP_OUTPUT_HANDLER_REMOVABLE) {
|
||||||
|
ob_end_flush();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isset($obStatus[$level - 1]['del']) && $obStatus[$level - 1]['del']) {
|
||||||
|
ob_end_flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
flush();
|
flush();
|
||||||
|
@ -9837,15 +10020,18 @@ class Run
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$output = ob_get_clean();
|
$output = ob_get_clean();
|
||||||
if ($this->allowQuit()) {
|
if ($this->writeToOutput()) {
|
||||||
echo $output;
|
if ($handlerResponse == Handler::QUIT && $this->allowQuit()) {
|
||||||
die;
|
while (ob_get_level() > 0) {
|
||||||
} else {
|
ob_end_clean();
|
||||||
if ($this->writeToOutput()) {
|
}
|
||||||
echo $output;
|
|
||||||
}
|
}
|
||||||
return $output;
|
echo $output;
|
||||||
}
|
}
|
||||||
|
if ($handlerResponse == Handler::QUIT && $this->allowQuit()) {
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
}
|
}
|
||||||
public function handleError($level, $message, $file = null, $line = null)
|
public function handleError($level, $message, $file = null, $line = null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
"require": {
|
"require": {
|
||||||
"laravel/framework": "4.0.*",
|
"laravel/framework": "4.0.*",
|
||||||
"kriswallsmith/assetic": "1.2.*@dev",
|
"kriswallsmith/assetic": "1.2.*@dev",
|
||||||
"codescale/ffmpeg-php": "2.7.0"
|
"codescale/ffmpeg-php": "2.7.0",
|
||||||
|
"simplepie/simplepie": "1.3.1"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"classmap": [
|
"classmap": [
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
$bundle->setTargetPath($filePath);
|
$bundle->setTargetPath($filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
$bundle = new AssetCache($bundle, new FilesystemCache("$cacheDirectory/scripts"));
|
// $bundle = new AssetCache($bundle, new FilesystemCache("$cacheDirectory/scripts"));
|
||||||
} else if ($_GET['type'] == 'less') {
|
} else if ($_GET['type'] == 'less') {
|
||||||
header('Content-Type: text/css');
|
header('Content-Type: text/css');
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,10 @@ angular.module('ponyfm').controller "dashboard", [
|
||||||
($scope, dashboard) ->
|
($scope, dashboard) ->
|
||||||
$scope.recentTracks = null
|
$scope.recentTracks = null
|
||||||
$scope.popularTracks = null
|
$scope.popularTracks = null
|
||||||
|
$scope.news = null
|
||||||
|
|
||||||
dashboard.refresh().done (res) ->
|
dashboard.refresh().done (res) ->
|
||||||
$scope.recentTracks = res.recent_tracks
|
$scope.recentTracks = res.recent_tracks
|
||||||
$scope.popularTracks = res.popular_tracks
|
$scope.popularTracks = res.popular_tracks
|
||||||
|
$scope.news = res.news
|
||||||
]
|
]
|
|
@ -342,7 +342,7 @@ html {
|
||||||
|
|
||||||
line-height: normal;
|
line-height: normal;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 5px 0px;
|
padding: 5px 0px;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
@ -384,6 +384,10 @@ html {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.artist {
|
||||||
|
.ellipsis();
|
||||||
|
}
|
||||||
|
|
||||||
.artist, .stats, .genre, .stats-expanded {
|
.artist, .stats, .genre, .stats-expanded {
|
||||||
color: #777;
|
color: #777;
|
||||||
font-size: 80%;
|
font-size: 80%;
|
||||||
|
|
|
@ -1,13 +1,49 @@
|
||||||
@import-once "base/bootstrap/bootstrap";
|
@import-once "base/bootstrap/bootstrap";
|
||||||
|
|
||||||
|
.dashboard {
|
||||||
|
h1 {
|
||||||
|
background: @pfm-purple;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 10pt;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 0px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1300px) and (min-width: 720px) {
|
||||||
|
html .dashboard {
|
||||||
|
.recent-tracks {
|
||||||
|
width: 50%;
|
||||||
|
|
||||||
|
.tracks-listing > li:nth-child(1n+15) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.popular-tracks {
|
||||||
|
width: 50%;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news {
|
||||||
|
width: 50%;
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.recent-tracks {
|
.recent-tracks {
|
||||||
h1 {
|
h1 {
|
||||||
a {
|
a {
|
||||||
|
color: #fff;
|
||||||
display: block;
|
display: block;
|
||||||
float: right;
|
float: right;
|
||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
|
background: darken(@pfm-purple, 20%);
|
||||||
margin-top: 8px;
|
margin: -5px;
|
||||||
|
margin-left: 0px;
|
||||||
|
padding: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,8 +52,19 @@
|
||||||
section {
|
section {
|
||||||
.box-sizing(border-box);
|
.box-sizing(border-box);
|
||||||
|
|
||||||
float: left;
|
|
||||||
width: 50%;
|
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-tracks {
|
||||||
|
width: 37.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popular-tracks {
|
||||||
|
width: 37.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news {
|
||||||
|
width: 25%;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,20 +1,28 @@
|
||||||
<div class="dashboard stretch-to-bottom">
|
<div class="dashboard stretch-to-bottom">
|
||||||
<section class="recent-tracks">
|
<section class="recent-tracks">
|
||||||
<div>
|
<h1>
|
||||||
<h1>
|
<a href="/tracks"><i class="icon-music"></i> see more</a>
|
||||||
<a href="/tracks"><i class="icon-music"></i> see more</a>
|
The Newest Tunes
|
||||||
The Newest Tunes
|
</h1>
|
||||||
</h1>
|
<pfm-tracks-list tracks="recentTracks" class="two-columns"></pfm-tracks-list>
|
||||||
<pfm-tracks-list tracks="recentTracks" class="two-columns"></pfm-tracks-list>
|
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="popular-tracks">
|
<section class="popular-tracks">
|
||||||
<div>
|
<h1>
|
||||||
<h1>
|
What's Popular Today
|
||||||
What's Popular Today
|
</h1>
|
||||||
</h1>
|
<pfm-tracks-list tracks="popularTracks" class="two-columns"></pfm-tracks-list>
|
||||||
<pfm-tracks-list tracks="popularTracks" class="two-columns"></pfm-tracks-list>
|
</section>
|
||||||
</div>
|
|
||||||
|
<section class="news">
|
||||||
|
<h1>Pony.fm News</h1>
|
||||||
|
<ul>
|
||||||
|
<li ng-repeat="post in news">
|
||||||
|
<a href="{{post.url}}">
|
||||||
|
{{post.title}}
|
||||||
|
<em>{{post.date}}</em>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
|
@ -33,6 +33,7 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/event-loop" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/react/event-loop" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/socket" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/react/socket" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/stream" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/react/stream" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/simplepie/simplepie" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/browser-kit" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/browser-kit" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
|
||||||
|
@ -66,14 +67,7 @@
|
||||||
<root url="file://$MODULE_DIR$/vendor/psr/log" />
|
<root url="file://$MODULE_DIR$/vendor/psr/log" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/filp/whoops" />
|
<root url="file://$MODULE_DIR$/vendor/filp/whoops" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
<root url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/react/socket" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/react/stream" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/react/event-loop" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/cboden/ratchet" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/http" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/common" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/parser" />
|
<root url="file://$MODULE_DIR$/vendor/guzzle/parser" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/stream" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
|
<root url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/predis/predis" />
|
<root url="file://$MODULE_DIR$/vendor/predis/predis" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/laravel/framework" />
|
<root url="file://$MODULE_DIR$/vendor/laravel/framework" />
|
||||||
|
@ -100,9 +94,9 @@
|
||||||
<root url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
|
<root url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/doctrine/collections" />
|
<root url="file://$MODULE_DIR$/vendor/doctrine/collections" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/codescale/ffmpeg-php" />
|
<root url="file://$MODULE_DIR$/vendor/codescale/ffmpeg-php" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/evenement/evenement" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/ircmaxell/password-compat" />
|
<root url="file://$MODULE_DIR$/vendor/ircmaxell/password-compat" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/patchwork/utf8" />
|
<root url="file://$MODULE_DIR$/vendor/patchwork/utf8" />
|
||||||
|
<root url="file://$MODULE_DIR$/vendor/simplepie/simplepie" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
<root url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/kriswallsmith/assetic" />
|
<root url="file://$MODULE_DIR$/vendor/kriswallsmith/assetic" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/classpreloader/classpreloader" />
|
<root url="file://$MODULE_DIR$/vendor/classpreloader/classpreloader" />
|
||||||
|
@ -112,14 +106,7 @@
|
||||||
<root url="file://$MODULE_DIR$/vendor/psr/log" />
|
<root url="file://$MODULE_DIR$/vendor/psr/log" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/filp/whoops" />
|
<root url="file://$MODULE_DIR$/vendor/filp/whoops" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
<root url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/react/socket" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/react/stream" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/react/event-loop" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/cboden/ratchet" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/http" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/common" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/parser" />
|
<root url="file://$MODULE_DIR$/vendor/guzzle/parser" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/guzzle/stream" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
|
<root url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/predis/predis" />
|
<root url="file://$MODULE_DIR$/vendor/predis/predis" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/laravel/framework" />
|
<root url="file://$MODULE_DIR$/vendor/laravel/framework" />
|
||||||
|
@ -146,9 +133,9 @@
|
||||||
<root url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
|
<root url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/doctrine/collections" />
|
<root url="file://$MODULE_DIR$/vendor/doctrine/collections" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/codescale/ffmpeg-php" />
|
<root url="file://$MODULE_DIR$/vendor/codescale/ffmpeg-php" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/evenement/evenement" />
|
|
||||||
<root url="file://$MODULE_DIR$/vendor/ircmaxell/password-compat" />
|
<root url="file://$MODULE_DIR$/vendor/ircmaxell/password-compat" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/patchwork/utf8" />
|
<root url="file://$MODULE_DIR$/vendor/patchwork/utf8" />
|
||||||
|
<root url="file://$MODULE_DIR$/vendor/simplepie/simplepie" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
<root url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/kriswallsmith/assetic" />
|
<root url="file://$MODULE_DIR$/vendor/kriswallsmith/assetic" />
|
||||||
<root url="file://$MODULE_DIR$/vendor/classpreloader/classpreloader" />
|
<root url="file://$MODULE_DIR$/vendor/classpreloader/classpreloader" />
|
||||||
|
|
Loading…
Reference in a new issue