diff --git a/_ide_helper.php b/_ide_helper.php index 1d73874a..5eaaec9c 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -3,7 +3,7 @@ /** * A helper file for Laravel 5, to provide autocomplete information to your IDE - * Generated for Laravel 5.6.39 on 2019-11-23 16:24:18. + * Generated for Laravel 5.8.36 on 2020-01-05 03:12:08. * * This file should not be included in your code, only analyzed by your IDE! * @@ -16,7 +16,7 @@ namespace Illuminate\Support\Facades { /** * * - * @see \Illuminate\Foundation\Application + * @see \Illuminate\Contracts\Foundation\Application */ class App { @@ -35,7 +35,7 @@ namespace Illuminate\Support\Facades { /** * Run the given array of bootstrap classes. * - * @param array $bootstrappers + * @param string[] $bootstrappers * @return void * @static */ @@ -114,7 +114,7 @@ namespace Illuminate\Support\Facades { /** * Get the path to the application "app" directory. * - * @param string $path Optionally, a path to append to the app path + * @param string $path * @return string * @static */ @@ -124,6 +124,19 @@ namespace Illuminate\Support\Facades { return $instance->path($path); } + /** + * Set the application directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ + public static function useAppPath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useAppPath($path); + } + /** * Get the base path of the Laravel installation. * @@ -316,13 +329,14 @@ namespace Illuminate\Support\Facades { /** * Get or check the current application environment. * + * @param string|array $environments * @return string|bool * @static */ - public static function environment() + public static function environment($environments = null) { /** @var \Illuminate\Foundation\Application $instance */ - return $instance->environment(); + return $instance->environment($environments); } /** @@ -337,6 +351,18 @@ namespace Illuminate\Support\Facades { return $instance->isLocal(); } + /** + * Determine if application is in production environment. + * + * @return bool + * @static + */ + public static function isProduction() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isProduction(); + } + /** * Detect the application's current environment. * @@ -390,15 +416,14 @@ namespace Illuminate\Support\Facades { * Register a service provider with the application. * * @param \Illuminate\Support\ServiceProvider|string $provider - * @param array $options * @param bool $force * @return \Illuminate\Support\ServiceProvider * @static */ - public static function register($provider, $options = array(), $force = false) + public static function register($provider, $force = false) { /** @var \Illuminate\Foundation\Application $instance */ - return $instance->register($provider, $options, $force); + return $instance->register($provider, $force); } /** @@ -489,7 +514,7 @@ namespace Illuminate\Support\Facades { * @return mixed * @static */ - public static function make($abstract, $parameters = array()) + public static function make($abstract, $parameters = []) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->make($abstract, $parameters); @@ -537,7 +562,7 @@ namespace Illuminate\Support\Facades { /** * Register a new boot listener. * - * @param mixed $callback + * @param callable $callback * @return void * @static */ @@ -550,7 +575,7 @@ namespace Illuminate\Support\Facades { /** * Register a new "booted" listener. * - * @param mixed $callback + * @param callable $callback * @return void * @static */ @@ -655,6 +680,30 @@ namespace Illuminate\Support\Facades { return $instance->getCachedRoutesPath(); } + /** + * Determine if the application events are cached. + * + * @return bool + * @static + */ + public static function eventsAreCached() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->eventsAreCached(); + } + + /** + * Get the path to the events cache file. + * + * @return string + * @static + */ + public static function getCachedEventsPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getCachedEventsPath(); + } + /** * Determine if the application is currently down for maintenance. * @@ -677,7 +726,7 @@ namespace Illuminate\Support\Facades { * @throws \Symfony\Component\HttpKernel\Exception\HttpException * @static */ - public static function abort($code, $message = '', $headers = array()) + public static function abort($code, $message = '', $headers = []) { /** @var \Illuminate\Foundation\Application $instance */ $instance->abort($code, $message, $headers); @@ -686,7 +735,7 @@ namespace Illuminate\Support\Facades { /** * Register a terminating callback with the application. * - * @param \Closure $callback + * @param callable|string $callback * @return \Illuminate\Foundation\Application * @static */ @@ -862,7 +911,7 @@ namespace Illuminate\Support\Facades { /** * Define a contextual binding. * - * @param string $concrete + * @param array|string $concrete * @return \Illuminate\Contracts\Container\ContextualBindingBuilder * @static */ @@ -1091,7 +1140,7 @@ namespace Illuminate\Support\Facades { * Resolve all of the bindings for a given tag. * * @param string $tag - * @return array + * @return \Illuminate\Container\iterable * @static */ public static function tagged($tag) @@ -1107,6 +1156,7 @@ namespace Illuminate\Support\Facades { * @param string $abstract * @param string $alias * @return void + * @throws \LogicException * @static */ public static function alias($abstract, $alias) @@ -1155,7 +1205,7 @@ namespace Illuminate\Support\Facades { * @return \Closure * @static */ - public static function wrap($callback, $parameters = array()) + public static function wrap($callback, $parameters = []) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ @@ -1171,7 +1221,7 @@ namespace Illuminate\Support\Facades { * @return mixed * @static */ - public static function call($callback, $parameters = array(), $defaultMethod = null) + public static function call($callback, $parameters = [], $defaultMethod = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ @@ -1200,7 +1250,7 @@ namespace Illuminate\Support\Facades { * @return mixed * @static */ - public static function makeWith($abstract, $parameters = array()) + public static function makeWith($abstract, $parameters = []) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ @@ -1286,7 +1336,6 @@ namespace Illuminate\Support\Facades { * * @param string $abstract * @return string - * @throws \LogicException * @static */ public static function getAlias($abstract) @@ -1338,7 +1387,7 @@ namespace Illuminate\Support\Facades { } /** - * Set the globally available instance of the container. + * Get the globally available instance of the container. * * @return static * @static @@ -1432,7 +1481,7 @@ namespace Illuminate\Support\Facades { * Run the console application. * * @param \Symfony\Component\Console\Input\InputInterface $input - * @param \Symfony\Component\Console\Output\OutputInterface $output + * @param \Symfony\Component\Console\Output\OutputInterface|null $output * @return int * @static */ @@ -1492,11 +1541,12 @@ namespace Illuminate\Support\Facades { * * @param string $command * @param array $parameters - * @param \Symfony\Component\Console\Output\OutputInterface $outputBuffer + * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer * @return int + * @throws \Symfony\Component\Console\Exception\CommandNotFoundException * @static */ - public static function call($command, $parameters = array(), $outputBuffer = null) + public static function call($command, $parameters = [], $outputBuffer = null) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ @@ -1511,7 +1561,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Foundation\Bus\PendingDispatch * @static */ - public static function queue($command, $parameters = array()) + public static function queue($command, $parameters = []) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ @@ -1586,7 +1636,7 @@ namespace Illuminate\Support\Facades { /** * Attempt to get the guard from the local cache. * - * @param string $name + * @param string|null $name * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard * @static */ @@ -1786,7 +1836,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function once($credentials = array()) + public static function once($credentials = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->once($credentials); @@ -1812,7 +1862,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function validate($credentials = array()) + public static function validate($credentials = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->validate($credentials); @@ -1826,7 +1876,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\Response|null * @static */ - public static function basic($field = 'email', $extraConditions = array()) + public static function basic($field = 'email', $extraConditions = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->basic($field, $extraConditions); @@ -1840,7 +1890,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\Response|null * @static */ - public static function onceBasic($field = 'email', $extraConditions = array()) + public static function onceBasic($field = 'email', $extraConditions = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->onceBasic($field, $extraConditions); @@ -1854,7 +1904,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function attempt($credentials = array(), $remember = false) + public static function attempt($credentials = [], $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->attempt($credentials, $remember); @@ -2091,7 +2141,7 @@ namespace Illuminate\Support\Facades { } /** - * Determine if the current user is authenticated. + * Determine if current user is authenticated. If not, throw an exception. * * @return \App\Http\Models\User * @throws \Illuminate\Auth\AuthenticationException @@ -2181,13 +2231,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Auth\SessionGuard::mixin($mixin); + \Illuminate\Auth\SessionGuard::mixin($mixin, $replace); } /** @@ -2214,7 +2265,7 @@ namespace Illuminate\Support\Facades { /** * Compile the view at the given path. * - * @param string $path + * @param string|null $path * @return void * @static */ @@ -2332,7 +2383,7 @@ namespace Illuminate\Support\Facades { * Register a component alias directive. * * @param string $path - * @param string $alias + * @param string|null $alias * @return void * @static */ @@ -2346,7 +2397,7 @@ namespace Illuminate\Support\Facades { * Register an include alias directive. * * @param string $path - * @param string $alias + * @param string|null $alias * @return void * @static */ @@ -2446,19 +2497,6 @@ namespace Illuminate\Support\Facades { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->isExpired($path); } - - /** - * Compile the default values for the echo statement. - * - * @param string $value - * @return string - * @static - */ - public static function compileEchoDefaults($value) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->compileEchoDefaults($value); - } } @@ -2526,7 +2564,7 @@ namespace Illuminate\Support\Facades { /** * Get a driver instance. * - * @param string $driver + * @param string|null $driver * @return mixed * @static */ @@ -2756,7 +2794,7 @@ namespace Illuminate\Support\Facades { class Cache { /** - * Get a cache store instance by name. + * Get a cache store instance by name, wrapped in a repository. * * @param string|null $name * @return \Illuminate\Contracts\Cache\Repository @@ -2772,7 +2810,7 @@ namespace Illuminate\Support\Facades { * Get a cache driver instance. * * @param string|null $driver - * @return mixed + * @return \Illuminate\Contracts\Cache\Repository * @static */ public static function driver($driver = null) @@ -2819,6 +2857,19 @@ namespace Illuminate\Support\Facades { $instance->setDefaultDriver($name); } + /** + * Unset the given driver instances. + * + * @param array|string|null $name + * @return \Illuminate\Cache\CacheManager + * @static + */ + public static function forgetDriver($name = null) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->forgetDriver($name); + } + /** * Register a custom driver creator Closure. * @@ -2846,6 +2897,19 @@ namespace Illuminate\Support\Facades { return $instance->has($key); } + /** + * Determine if an item doesn't exist in the cache. + * + * @param string $key + * @return bool + * @static + */ + public static function missing($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->missing($key); + } + /** * Retrieve an item from the cache by key. * @@ -2911,14 +2975,14 @@ namespace Illuminate\Support\Facades { * * @param string $key * @param mixed $value - * @param \DateTimeInterface|\DateInterval|float|int|null $minutes - * @return void + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool * @static */ - public static function put($key, $value, $minutes = null) + public static function put($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ - $instance->put($key, $value, $minutes); + return $instance->put($key, $value, $ttl); } /** @@ -2941,17 +3005,17 @@ namespace Illuminate\Support\Facades { } /** - * Store multiple items in the cache for a given number of minutes. + * Store multiple items in the cache for a given number of seconds. * * @param array $values - * @param \DateTimeInterface|\DateInterval|float|int $minutes - * @return void + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool * @static */ - public static function putMany($values, $minutes) + public static function putMany($values, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ - $instance->putMany($values, $minutes); + return $instance->putMany($values, $ttl); } /** @@ -2978,14 +3042,14 @@ namespace Illuminate\Support\Facades { * * @param string $key * @param mixed $value - * @param \DateTimeInterface|\DateInterval|float|int $minutes + * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool * @static */ - public static function add($key, $value, $minutes) + public static function add($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ - return $instance->add($key, $value, $minutes); + return $instance->add($key, $value, $ttl); } /** @@ -3021,32 +3085,32 @@ namespace Illuminate\Support\Facades { * * @param string $key * @param mixed $value - * @return void + * @return bool * @static */ public static function forever($key, $value) { /** @var \Illuminate\Cache\Repository $instance */ - $instance->forever($key, $value); + return $instance->forever($key, $value); } /** - * Get an item from the cache, or store the default value. + * Get an item from the cache, or execute the given Closure and store the result. * * @param string $key - * @param \DateTimeInterface|\DateInterval|float|int $minutes + * @param \DateTimeInterface|\DateInterval|int|null $ttl * @param \Closure $callback * @return mixed * @static */ - public static function remember($key, $minutes, $callback) + public static function remember($key, $ttl, $callback) { /** @var \Illuminate\Cache\Repository $instance */ - return $instance->remember($key, $minutes, $callback); + return $instance->remember($key, $ttl, $callback); } /** - * Get an item from the cache, or store the default value forever. + * Get an item from the cache, or execute the given Closure and store the result forever. * * @param string $key * @param \Closure $callback @@ -3060,7 +3124,7 @@ namespace Illuminate\Support\Facades { } /** - * Get an item from the cache, or store the default value forever. + * Get an item from the cache, or execute the given Closure and store the result forever. * * @param string $key * @param \Closure $callback @@ -3146,7 +3210,7 @@ namespace Illuminate\Support\Facades { /** * Get the default cache time. * - * @return float|int + * @return int * @static */ public static function getDefaultCacheTime() @@ -3156,16 +3220,16 @@ namespace Illuminate\Support\Facades { } /** - * Set the default cache time in minutes. + * Set the default cache time in seconds. * - * @param float|int $minutes + * @param int|null $seconds * @return \Illuminate\Cache\Repository * @static */ - public static function setDefaultCacheTime($minutes) + public static function setDefaultCacheTime($seconds) { /** @var \Illuminate\Cache\Repository $instance */ - return $instance->setDefaultCacheTime($minutes); + return $instance->setDefaultCacheTime($seconds); } /** @@ -3263,13 +3327,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Cache\Repository::mixin($mixin); + \Illuminate\Cache\Repository::mixin($mixin, $replace); } /** @@ -3518,8 +3583,8 @@ namespace Illuminate\Support\Facades { * @param string $name * @param string $value * @param int $minutes - * @param string $path - * @param string $domain + * @param string|null $path + * @param string|null $domain * @param bool|null $secure * @param bool $httpOnly * @param bool $raw @@ -3538,8 +3603,8 @@ namespace Illuminate\Support\Facades { * * @param string $name * @param string $value - * @param string $path - * @param string $domain + * @param string|null $path + * @param string|null $domain * @param bool|null $secure * @param bool $httpOnly * @param bool $raw @@ -3557,8 +3622,8 @@ namespace Illuminate\Support\Facades { * Expire the given cookie. * * @param string $name - * @param string $path - * @param string $domain + * @param string|null $path + * @param string|null $domain * @return \Symfony\Component\HttpFoundation\Cookie * @static */ @@ -3627,7 +3692,7 @@ namespace Illuminate\Support\Facades { * @param string $path * @param string $domain * @param bool $secure - * @param string $sameSite + * @param string|null $sameSite * @return \Illuminate\Cookie\CookieJar * @static */ @@ -3648,6 +3713,45 @@ namespace Illuminate\Support\Facades { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->getQueuedCookies(); } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Cookie\CookieJar::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Cookie\CookieJar::hasMacro($name); + } } @@ -3703,6 +3807,7 @@ namespace Illuminate\Support\Facades { * * @param string $value * @return string + * @throws \Illuminate\Contracts\Encryption\EncryptException * @static */ public static function encryptString($value) @@ -3714,7 +3819,7 @@ namespace Illuminate\Support\Facades { /** * Decrypt the given value. * - * @param mixed $payload + * @param string $payload * @param bool $unserialize * @return mixed * @throws \Illuminate\Contracts\Encryption\DecryptException @@ -3731,6 +3836,7 @@ namespace Illuminate\Support\Facades { * * @param string $payload * @return string + * @throws \Illuminate\Contracts\Encryption\DecryptException * @static */ public static function decryptString($payload) @@ -3764,7 +3870,7 @@ namespace Illuminate\Support\Facades { /** * Get a database connection instance. * - * @param string $name + * @param string|null $name * @return \Illuminate\Database\Connection * @static */ @@ -3777,7 +3883,7 @@ namespace Illuminate\Support\Facades { /** * Disconnect from the given database and remove from local cache. * - * @param string $name + * @param string|null $name * @return void * @static */ @@ -3790,7 +3896,7 @@ namespace Illuminate\Support\Facades { /** * Disconnect from the given database. * - * @param string $name + * @param string|null $name * @return void * @static */ @@ -3803,7 +3909,7 @@ namespace Illuminate\Support\Facades { /** * Reconnect to the given database. * - * @param string $name + * @param string|null $name * @return \Illuminate\Database\Connection * @static */ @@ -3888,6 +3994,19 @@ namespace Illuminate\Support\Facades { return $instance->getConnections(); } + /** + * Set the database reconnector callback. + * + * @param callable $reconnector + * @return void + * @static + */ + public static function setReconnector($reconnector) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->setReconnector($reconnector); + } + /** * Get a schema builder instance for the connection. * @@ -3989,7 +4108,7 @@ namespace Illuminate\Support\Facades { * @return mixed * @static */ - public static function selectOne($query, $bindings = array(), $useReadPdo = true) + public static function selectOne($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4004,7 +4123,7 @@ namespace Illuminate\Support\Facades { * @return array * @static */ - public static function selectFromWriteConnection($query, $bindings = array()) + public static function selectFromWriteConnection($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4020,7 +4139,7 @@ namespace Illuminate\Support\Facades { * @return array * @static */ - public static function select($query, $bindings = array(), $useReadPdo = true) + public static function select($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4036,7 +4155,7 @@ namespace Illuminate\Support\Facades { * @return \Generator * @static */ - public static function cursor($query, $bindings = array(), $useReadPdo = true) + public static function cursor($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4051,7 +4170,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function insert($query, $bindings = array()) + public static function insert($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4066,7 +4185,7 @@ namespace Illuminate\Support\Facades { * @return int * @static */ - public static function update($query, $bindings = array()) + public static function update($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4081,7 +4200,7 @@ namespace Illuminate\Support\Facades { * @return int * @static */ - public static function delete($query, $bindings = array()) + public static function delete($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4096,7 +4215,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function statement($query, $bindings = array()) + public static function statement($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4111,7 +4230,7 @@ namespace Illuminate\Support\Facades { * @return int * @static */ - public static function affectingStatement($query, $bindings = array()) + public static function affectingStatement($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ @@ -4326,20 +4445,6 @@ namespace Illuminate\Support\Facades { return $instance->setReadPdo($pdo); } - /** - * Set the reconnect instance on the connection. - * - * @param callable $reconnector - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setReconnector($reconnector) - { - //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setReconnector($reconnector); - } - /** * Get the database connection name. * @@ -4397,14 +4502,14 @@ namespace Illuminate\Support\Facades { * Set the query grammar used by the connection. * * @param \Illuminate\Database\Query\Grammars\Grammar $grammar - * @return void + * @return \Illuminate\Database\MySqlConnection * @static */ public static function setQueryGrammar($grammar) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->setQueryGrammar($grammar); + return $instance->setQueryGrammar($grammar); } /** @@ -4424,14 +4529,14 @@ namespace Illuminate\Support\Facades { * Set the schema grammar used by the connection. * * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return void + * @return \Illuminate\Database\MySqlConnection * @static */ public static function setSchemaGrammar($grammar) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->setSchemaGrammar($grammar); + return $instance->setSchemaGrammar($grammar); } /** @@ -4451,14 +4556,14 @@ namespace Illuminate\Support\Facades { * Set the query post processor used by the connection. * * @param \Illuminate\Database\Query\Processors\Processor $processor - * @return void + * @return \Illuminate\Database\MySqlConnection * @static */ public static function setPostProcessor($processor) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->setPostProcessor($processor); + return $instance->setPostProcessor($processor); } /** @@ -4478,14 +4583,14 @@ namespace Illuminate\Support\Facades { * Set the event dispatcher instance on the connection. * * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void + * @return \Illuminate\Database\MySqlConnection * @static */ public static function setEventDispatcher($events) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->setEventDispatcher($events); + return $instance->setEventDispatcher($events); } /** @@ -4502,7 +4607,7 @@ namespace Illuminate\Support\Facades { } /** - * Determine if the connection in a "dry run". + * Determine if the connection is in a "dry run". * * @return bool * @static @@ -4596,7 +4701,7 @@ namespace Illuminate\Support\Facades { * Set the name of the connected database. * * @param string $database - * @return string + * @return \Illuminate\Database\MySqlConnection * @static */ public static function setDatabaseName($database) @@ -4623,14 +4728,14 @@ namespace Illuminate\Support\Facades { * Set the table prefix in use by the connection. * * @param string $prefix - * @return void + * @return \Illuminate\Database\MySqlConnection * @static */ public static function setTablePrefix($prefix) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->setTablePrefix($prefix); + return $instance->setTablePrefix($prefix); } /** @@ -4789,7 +4894,7 @@ namespace Illuminate\Support\Facades { * @return void * @static */ - public static function push($event, $payload = array()) + public static function push($event, $payload = []) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->push($event, $payload); @@ -4829,7 +4934,7 @@ namespace Illuminate\Support\Facades { * @return array|null * @static */ - public static function until($event, $payload = array()) + public static function until($event, $payload = []) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->until($event, $payload); @@ -4844,22 +4949,7 @@ namespace Illuminate\Support\Facades { * @return array|null * @static */ - public static function fire($event, $payload = array(), $halt = false) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->fire($event, $payload, $halt); - } - - /** - * Fire an event and call the listeners. - * - * @param string|object $event - * @param mixed $payload - * @param bool $halt - * @return array|null - * @static - */ - public static function dispatch($event, $payload = array(), $halt = false) + public static function dispatch($event, $payload = [], $halt = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->dispatch($event, $payload, $halt); @@ -5109,7 +5199,7 @@ namespace Illuminate\Support\Facades { * @param string $path * @param string $contents * @param bool $lock - * @return int + * @return int|bool * @static */ public static function put($path, $contents, $lock = false) @@ -5118,6 +5208,20 @@ namespace Illuminate\Support\Facades { return $instance->put($path, $contents, $lock); } + /** + * Write the contents of a file, replacing it atomically if it already exists. + * + * @param string $path + * @param string $content + * @return void + * @static + */ + public static function replace($path, $content) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->replace($path, $content); + } + /** * Prepend to a file. * @@ -5150,7 +5254,7 @@ namespace Illuminate\Support\Facades { * Get or set UNIX mode of a file or directory. * * @param string $path - * @param int $mode + * @param int|null $mode * @return mixed * @static */ @@ -5462,7 +5566,7 @@ namespace Illuminate\Support\Facades { * * @param string $directory * @param string $destination - * @param int $options + * @param int|null $options * @return bool * @static */ @@ -5531,13 +5635,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Filesystem\Filesystem::mixin($mixin); + \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); } /** @@ -5652,7 +5757,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function allows($ability, $arguments = array()) + public static function allows($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->allows($ability, $arguments); @@ -5666,7 +5771,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function denies($ability, $arguments = array()) + public static function denies($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->denies($ability, $arguments); @@ -5680,7 +5785,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function check($abilities, $arguments = array()) + public static function check($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->check($abilities, $arguments); @@ -5694,12 +5799,26 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function any($abilities, $arguments = array()) + public static function any($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->any($abilities, $arguments); } + /** + * Determine if all of the given abilities should be denied for the current user. + * + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments + * @return bool + * @static + */ + public static function none($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->none($abilities, $arguments); + } + /** * Determine if the given ability should be granted for the current user. * @@ -5709,12 +5828,26 @@ namespace Illuminate\Support\Facades { * @throws \Illuminate\Auth\Access\AuthorizationException * @static */ - public static function authorize($ability, $arguments = array()) + public static function authorize($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->authorize($ability, $arguments); } + /** + * Get the raw result from the authorization callback. + * + * @param string $ability + * @param array|mixed $arguments + * @return mixed + * @static + */ + public static function raw($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->raw($ability, $arguments); + } + /** * Get a policy instance for a given class. * @@ -5728,11 +5861,25 @@ namespace Illuminate\Support\Facades { return $instance->getPolicyFor($class); } + /** + * Specify a callback to be used to guess policy names. + * + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function guessPolicyNamesUsing($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->guessPolicyNamesUsing($callback); + } + /** * Build a policy class instance of the given type. * * @param object|string $class * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException * @static */ public static function resolvePolicy($class) @@ -5800,7 +5947,7 @@ namespace Illuminate\Support\Facades { } /** - * Create an instance of the Argon2 hash Driver. + * Create an instance of the Argon2i hash Driver. * * @return \Illuminate\Hashing\ArgonHasher * @static @@ -5811,6 +5958,18 @@ namespace Illuminate\Support\Facades { return $instance->createArgonDriver(); } + /** + * Create an instance of the Argon2id hash Driver. + * + * @return \Illuminate\Hashing\Argon2IdHasher + * @static + */ + public static function createArgon2idDriver() + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createArgon2idDriver(); + } + /** * Get information about the given hashed value. * @@ -5832,7 +5991,7 @@ namespace Illuminate\Support\Facades { * @return string * @static */ - public static function make($value, $options = array()) + public static function make($value, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->make($value, $options); @@ -5847,7 +6006,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function check($value, $hashedValue, $options = array()) + public static function check($value, $hashedValue, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->check($value, $hashedValue, $options); @@ -5861,7 +6020,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function needsRehash($hashedValue, $options = array()) + public static function needsRehash($hashedValue, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->needsRehash($hashedValue, $options); @@ -5965,11 +6124,11 @@ namespace Illuminate\Support\Facades { * * @param string $key * @param array $replace - * @param string $locale - * @return string|array|null + * @param string|null $locale + * @return string|array * @static */ - public static function trans($key, $replace = array(), $locale = null) + public static function trans($key, $replace = [], $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->trans($key, $replace, $locale); @@ -5982,10 +6141,10 @@ namespace Illuminate\Support\Facades { * @param array $replace * @param string|null $locale * @param bool $fallback - * @return string|array|null + * @return string|array * @static */ - public static function get($key, $replace = array(), $locale = null, $fallback = true) + public static function get($key, $replace = [], $locale = null, $fallback = true) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->get($key, $replace, $locale, $fallback); @@ -5996,11 +6155,11 @@ namespace Illuminate\Support\Facades { * * @param string $key * @param array $replace - * @param string $locale - * @return string|array|null + * @param string|null $locale + * @return string|array * @static */ - public static function getFromJson($key, $replace = array(), $locale = null) + public static function getFromJson($key, $replace = [], $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getFromJson($key, $replace, $locale); @@ -6012,11 +6171,11 @@ namespace Illuminate\Support\Facades { * @param string $key * @param int|array|\Countable $number * @param array $replace - * @param string $locale + * @param string|null $locale * @return string * @static */ - public static function transChoice($key, $number, $replace = array(), $locale = null) + public static function transChoice($key, $number, $replace = [], $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->transChoice($key, $number, $replace, $locale); @@ -6028,11 +6187,11 @@ namespace Illuminate\Support\Facades { * @param string $key * @param int|array|\Countable $number * @param array $replace - * @param string $locale + * @param string|null $locale * @return string * @static */ - public static function choice($key, $number, $replace = array(), $locale = null) + public static function choice($key, $number, $replace = [], $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->choice($key, $number, $replace, $locale); @@ -6252,13 +6411,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Translation\Translator::mixin($mixin); + \Illuminate\Translation\Translator::mixin($mixin, $replace); } /** @@ -6290,7 +6450,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function debug($message, $context = array()) + public static function debug($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addDebug($message, $context); @@ -6304,7 +6464,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function info($message, $context = array()) + public static function info($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addInfo($message, $context); @@ -6318,7 +6478,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function notice($message, $context = array()) + public static function notice($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addNotice($message, $context); @@ -6332,7 +6492,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function warning($message, $context = array()) + public static function warning($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addWarning($message, $context); @@ -6346,7 +6506,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function error($message, $context = array()) + public static function error($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addError($message, $context); @@ -6360,7 +6520,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function critical($message, $context = array()) + public static function critical($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addCritical($message, $context); @@ -6374,7 +6534,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function alert($message, $context = array()) + public static function alert($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addAlert($message, $context); @@ -6388,7 +6548,7 @@ namespace Illuminate\Support\Facades { * @return bool Whether the record has been processed * @static */ - public static function emergency($message, $context = array()) + public static function emergency($message, $context = []) { /** @var \Monolog\Logger $instance */ return $instance->addEmergency($message, $context); @@ -6482,7 +6642,7 @@ namespace Illuminate\Support\Facades { * @return void * @static */ - public static function log($level, $message, $context = array()) + public static function log($level, $message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->log($level, $message, $context); @@ -6494,6 +6654,7 @@ namespace Illuminate\Support\Facades { * * * @see \Illuminate\Mail\Mailer + * @see \Illuminate\Support\Testing\Fakes\MailFake */ class Mail { @@ -6552,6 +6713,19 @@ namespace Illuminate\Support\Facades { return $instance->to($users); } + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + * @static + */ + public static function cc($users) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->cc($users); + } + /** * Begin the process of mailing a mailable class instance. * @@ -6580,7 +6754,7 @@ namespace Illuminate\Support\Facades { } /** - * Send a new message when only a raw text part. + * Send a new message with only a raw text part. * * @param string $text * @param mixed $callback @@ -6594,7 +6768,7 @@ namespace Illuminate\Support\Facades { } /** - * Send a new message when only a plain part. + * Send a new message with only a plain part. * * @param string $view * @param array $data @@ -6616,7 +6790,7 @@ namespace Illuminate\Support\Facades { * @return string * @static */ - public static function render($view, $data = array()) + public static function render($view, $data = []) { /** @var \Illuminate\Mail\Mailer $instance */ return $instance->render($view, $data); @@ -6625,13 +6799,13 @@ namespace Illuminate\Support\Facades { /** * Send a new message using a view. * - * @param string|array|\Illuminate\Mail\MailableContract $view + * @param string|array|\Illuminate\Contracts\Mail\Mailable $view * @param array $data - * @param \Closure|string $callback + * @param \Closure|string|null $callback * @return void * @static */ - public static function send($view, $data = array(), $callback = null) + public static function send($view, $data = [], $callback = null) { /** @var \Illuminate\Mail\Mailer $instance */ $instance->send($view, $data, $callback); @@ -6640,9 +6814,10 @@ namespace Illuminate\Support\Facades { /** * Queue a new e-mail message for sending. * - * @param string|array|\Illuminate\Mail\MailableContract $view + * @param \Illuminate\Contracts\Mail\Mailable $view * @param string|null $queue * @return mixed + * @throws \InvalidArgumentException * @static */ public static function queue($view, $queue = null) @@ -6655,7 +6830,7 @@ namespace Illuminate\Support\Facades { * Queue a new e-mail message for sending on the given queue. * * @param string $queue - * @param string|array $view + * @param \Illuminate\Contracts\Mail\Mailable $view * @return mixed * @static */ @@ -6671,7 +6846,7 @@ namespace Illuminate\Support\Facades { * This method didn't match rest of framework's "onQueue" phrasing. Added "onQueue". * * @param string $queue - * @param string|array $view + * @param \Illuminate\Contracts\Mail\Mailable $view * @return mixed * @static */ @@ -6685,9 +6860,10 @@ namespace Illuminate\Support\Facades { * Queue a new e-mail message for sending after (n) seconds. * * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|array|\Illuminate\Mail\MailableContract $view + * @param \Illuminate\Contracts\Mail\Mailable $view * @param string|null $queue * @return mixed + * @throws \InvalidArgumentException * @static */ public static function later($delay, $view, $queue = null) @@ -6701,7 +6877,7 @@ namespace Illuminate\Support\Facades { * * @param string $queue * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|array $view + * @param \Illuminate\Contracts\Mail\Mailable $view * @return mixed * @static */ @@ -6712,15 +6888,15 @@ namespace Illuminate\Support\Facades { } /** - * Get the view factory instance. + * Get the array of failed recipients. * - * @return \Illuminate\Contracts\View\Factory + * @return array * @static */ - public static function getViewFactory() + public static function failures() { /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->getViewFactory(); + return $instance->failures(); } /** @@ -6736,15 +6912,15 @@ namespace Illuminate\Support\Facades { } /** - * Get the array of failed recipients. + * Get the view factory instance. * - * @return array + * @return \Illuminate\Contracts\View\Factory * @static */ - public static function failures() + public static function getViewFactory() { /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->failures(); + return $instance->getViewFactory(); } /** @@ -6790,13 +6966,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Mail\Mailer::mixin($mixin); + \Illuminate\Mail\Mailer::mixin($mixin, $replace); } /** @@ -7033,6 +7210,19 @@ namespace Illuminate\Support\Facades { $instance->deliverVia($channel); } + /** + * Set the locale of notifications. + * + * @param string $locale + * @return \Illuminate\Notifications\ChannelManager + * @static + */ + public static function locale($locale) + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->locale($locale); + } + /** * Get a driver instance. * @@ -7175,6 +7365,45 @@ namespace Illuminate\Support\Facades { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->hasSent($notifiable, $notification); } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); + } } @@ -7318,7 +7547,7 @@ namespace Illuminate\Support\Facades { /** * Determine if the driver is connected. * - * @param string $name + * @param string|null $name * @return bool * @static */ @@ -7331,7 +7560,7 @@ namespace Illuminate\Support\Facades { /** * Resolve a queue connection instance. * - * @param string $name + * @param string|null $name * @return \Illuminate\Contracts\Queue\Queue * @static */ @@ -7397,7 +7626,7 @@ namespace Illuminate\Support\Facades { /** * Get the full name for the given connection. * - * @param string $connection + * @param string|null $connection * @return string * @static */ @@ -7457,7 +7686,7 @@ namespace Illuminate\Support\Facades { * @return void * @static */ - public static function assertPushedWithChain($job, $expectedChain = array(), $callback = null) + public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertPushedWithChain($job, $expectedChain, $callback); @@ -7519,7 +7748,7 @@ namespace Illuminate\Support\Facades { /** * Get the size of the queue. * - * @param string $queue + * @param string|null $queue * @return int * @static */ @@ -7534,7 +7763,7 @@ namespace Illuminate\Support\Facades { * * @param string $job * @param mixed $data - * @param string $queue + * @param string|null $queue * @return mixed * @static */ @@ -7548,12 +7777,12 @@ namespace Illuminate\Support\Facades { * Push a raw payload onto the queue. * * @param string $payload - * @param string $queue + * @param string|null $queue * @param array $options * @return mixed * @static */ - public static function pushRaw($payload, $queue = null, $options = array()) + public static function pushRaw($payload, $queue = null, $options = []) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->pushRaw($payload, $queue, $options); @@ -7562,10 +7791,10 @@ namespace Illuminate\Support\Facades { /** * Push a new job onto the queue after a delay. * - * @param \DateTime|int $delay + * @param \DateTimeInterface|\DateInterval|int $delay * @param string $job * @param mixed $data - * @param string $queue + * @param string|null $queue * @return mixed * @static */ @@ -7594,7 +7823,7 @@ namespace Illuminate\Support\Facades { * Push a new job onto the queue after a delay. * * @param string $queue - * @param \DateTime|int $delay + * @param \DateTimeInterface|\DateInterval|int $delay * @param string $job * @param mixed $data * @return mixed @@ -7609,7 +7838,7 @@ namespace Illuminate\Support\Facades { /** * Pop the next job off of the queue. * - * @param string $queue + * @param string|null $queue * @return \Illuminate\Contracts\Queue\Job|null * @static */ @@ -7624,7 +7853,7 @@ namespace Illuminate\Support\Facades { * * @param array $jobs * @param mixed $data - * @param string $queue + * @param string|null $queue * @return mixed * @static */ @@ -7634,6 +7863,18 @@ namespace Illuminate\Support\Facades { return $instance->bulk($jobs, $data, $queue); } + /** + * Get the jobs that have been pushed. + * + * @return array + * @static + */ + public static function pushedJobs() + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushedJobs(); + } + /** * Get the connection name for the queue. * @@ -7714,6 +7955,20 @@ namespace Illuminate\Support\Facades { return $instance->getDatabase(); } + /** + * Get the retry delay for an object-based queue handler. + * + * @param mixed $job + * @return mixed + * @static + */ + public static function getJobRetryDelay($job) + { + //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobRetryDelay($job); + } + /** * Get the expiration timestamp for an object-based queue handler. * @@ -7728,6 +7983,19 @@ namespace Illuminate\Support\Facades { return $instance->getJobExpiration($job); } + /** + * Register a callback to be executed when creating job payloads. + * + * @param callable $callback + * @return void + * @static + */ + public static function createPayloadUsing($callback) + { + //Method inherited from \Illuminate\Queue\Queue + \Illuminate\Queue\DatabaseQueue::createPayloadUsing($callback); + } + /** * Set the IoC container instance. * @@ -7773,7 +8041,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function back($status = 302, $headers = array(), $fallback = false) + public static function back($status = 302, $headers = [], $fallback = false) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->back($status, $headers, $fallback); @@ -7787,7 +8055,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function refresh($status = 302, $headers = array()) + public static function refresh($status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->refresh($status, $headers); @@ -7799,11 +8067,11 @@ namespace Illuminate\Support\Facades { * @param string $path * @param int $status * @param array $headers - * @param bool $secure + * @param bool|null $secure * @return \Illuminate\Http\RedirectResponse * @static */ - public static function guest($path, $status = 302, $headers = array(), $secure = null) + public static function guest($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->guest($path, $status, $headers, $secure); @@ -7815,27 +8083,40 @@ namespace Illuminate\Support\Facades { * @param string $default * @param int $status * @param array $headers - * @param bool $secure + * @param bool|null $secure * @return \Illuminate\Http\RedirectResponse * @static */ - public static function intended($default = '/', $status = 302, $headers = array(), $secure = null) + public static function intended($default = '/', $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->intended($default, $status, $headers, $secure); } + /** + * Set the intended url. + * + * @param string $url + * @return void + * @static + */ + public static function setIntendedUrl($url) + { + /** @var \Illuminate\Routing\Redirector $instance */ + $instance->setIntendedUrl($url); + } + /** * Create a new redirect response to the given path. * * @param string $path * @param int $status * @param array $headers - * @param bool $secure + * @param bool|null $secure * @return \Illuminate\Http\RedirectResponse * @static */ - public static function to($path, $status = 302, $headers = array(), $secure = null) + public static function to($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->to($path, $status, $headers, $secure); @@ -7850,7 +8131,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function away($path, $status = 302, $headers = array()) + public static function away($path, $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->away($path, $status, $headers); @@ -7865,7 +8146,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function secure($path, $status = 302, $headers = array()) + public static function secure($path, $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->secure($path, $status, $headers); @@ -7881,7 +8162,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function route($route, $parameters = array(), $status = 302, $headers = array()) + public static function route($route, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->route($route, $parameters, $status, $headers); @@ -7890,14 +8171,14 @@ namespace Illuminate\Support\Facades { /** * Create a new redirect response to a controller action. * - * @param string $action + * @param string|array $action * @param mixed $parameters * @param int $status * @param array $headers * @return \Illuminate\Http\RedirectResponse * @static */ - public static function action($action, $parameters = array(), $status = 302, $headers = array()) + public static function action($action, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->action($action, $parameters, $status, $headers); @@ -7945,13 +8226,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Routing\Redirector::mixin($mixin); + \Illuminate\Routing\Redirector::mixin($mixin, $replace); } /** @@ -8014,6 +8296,57 @@ namespace Illuminate\Support\Facades { /** @var \Illuminate\Redis\RedisManager $instance */ return $instance->connections(); } + + /** + * Enable the firing of Redis command events. + * + * @return void + * @static + */ + public static function enableEvents() + { + /** @var \Illuminate\Redis\RedisManager $instance */ + $instance->enableEvents(); + } + + /** + * Disable the firing of Redis command events. + * + * @return void + * @static + */ + public static function disableEvents() + { + /** @var \Illuminate\Redis\RedisManager $instance */ + $instance->disableEvents(); + } + + /** + * Set the default driver. + * + * @param string $driver + * @return void + * @static + */ + public static function setDriver($driver) + { + /** @var \Illuminate\Redis\RedisManager $instance */ + $instance->setDriver($driver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Redis\RedisManager + * @static + */ + public static function extend($driver, $callback) + { + /** @var \Illuminate\Redis\RedisManager $instance */ + return $instance->extend($driver, $callback); + } } @@ -8221,6 +8554,18 @@ namespace Illuminate\Support\Facades { return $instance->pjax(); } + /** + * Determine if the request is the result of an prefetch call. + * + * @return bool + * @static + */ + public static function prefetch() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->prefetch(); + } + /** * Determine if the request is over HTTPS. * @@ -8236,7 +8581,7 @@ namespace Illuminate\Support\Facades { /** * Get the client IP address. * - * @return string + * @return string|null * @static */ public static function ip() @@ -8314,7 +8659,7 @@ namespace Illuminate\Support\Facades { /** * Get the JSON payload for the request. * - * @param string $key + * @param string|null $key * @param mixed $default * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed * @static @@ -8342,7 +8687,7 @@ namespace Illuminate\Support\Facades { * Create an Illuminate request from a Symfony instance. * * @param \Symfony\Component\HttpFoundation\Request $request - * @return \Illuminate\Http\Request + * @return static * @static */ public static function createFromBase($request) @@ -8423,13 +8768,14 @@ namespace Illuminate\Support\Facades { * Get the route handling the request. * * @param string|null $param + * @param mixed $default * @return \Illuminate\Routing\Route|object|string * @static */ - public static function route($param = null) + public static function route($param = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->route($param); + return $instance->route($param, $default); } /** @@ -8587,7 +8933,7 @@ namespace Illuminate\Support\Facades { * @param string|resource|null $content The raw body data * @static */ - public static function initialize($query = array(), $request = array(), $attributes = array(), $cookies = array(), $files = array(), $server = array(), $content = null) + public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ @@ -8622,7 +8968,7 @@ namespace Illuminate\Support\Facades { * @return static * @static */ - public static function create($uri, $method = 'GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $content = null) + public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); @@ -8664,7 +9010,7 @@ namespace Illuminate\Support\Facades { * * You should only list the reverse proxies that you manage directly. * - * @param array $proxies A list of trusted proxies + * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies * @throws \InvalidArgumentException When $trustedHeaderSet is invalid * @static @@ -8804,9 +9150,8 @@ namespace Illuminate\Support\Facades { } /** - * Sets the Session. + * * - * @param \Symfony\Component\HttpFoundation\SessionInterface $session The Session * @static */ public static function setSession($session) @@ -9281,6 +9626,7 @@ namespace Illuminate\Support\Facades { * * _format request attribute * * $default * + * @see getPreferredFormat * @param string|null $default The default format * @return string|null The request format * @static @@ -9485,10 +9831,25 @@ namespace Illuminate\Support\Facades { return $instance->isNoCache(); } + /** + * Gets the preferred format for the response by inspecting, in the following order: + * * the request format set using setRequestFormat + * * the values of the Accept HTTP header + * * the content type of the body of the request. + * + * @static + */ + public static function getPreferredFormat($default = 'html') + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getPreferredFormat($default); + } + /** * Returns the preferred language. * - * @param array $locales An array of ordered available locales + * @param string[] $locales An array of ordered available locales * @return string|null The preferred locale * @static */ @@ -9711,7 +10072,7 @@ namespace Illuminate\Support\Facades { /** * Retrieve an old input item. * - * @param string $key + * @param string|null $key * @param string|array|null $default * @return string|array * @static @@ -9775,9 +10136,9 @@ namespace Illuminate\Support\Facades { /** * Retrieve a server variable from the request. * - * @param string $key + * @param string|null $key * @param string|array|null $default - * @return string|array + * @return string|array|null * @static */ public static function server($key = null, $default = null) @@ -9802,9 +10163,9 @@ namespace Illuminate\Support\Facades { /** * Retrieve a header from the request. * - * @param string $key + * @param string|null $key * @param string|array|null $default - * @return string|array + * @return string|array|null * @static */ public static function header($key = null, $default = null) @@ -9905,7 +10266,7 @@ namespace Illuminate\Support\Facades { /** * Get all of the input and files for the request. * - * @param array|mixed $keys + * @param array|mixed|null $keys * @return array * @static */ @@ -9958,9 +10319,9 @@ namespace Illuminate\Support\Facades { /** * Retrieve a query string item from the request. * - * @param string $key + * @param string|null $key * @param string|array|null $default - * @return string|array + * @return string|array|null * @static */ public static function query($key = null, $default = null) @@ -9972,9 +10333,9 @@ namespace Illuminate\Support\Facades { /** * Retrieve a request payload item from the request. * - * @param string $key + * @param string|null $key * @param string|array|null $default - * @return string|array + * @return string|array|null * @static */ public static function post($key = null, $default = null) @@ -9999,9 +10360,9 @@ namespace Illuminate\Support\Facades { /** * Retrieve a cookie from the request. * - * @param string $key + * @param string|null $key * @param string|array|null $default - * @return string|array + * @return string|array|null * @static */ public static function cookie($key = null, $default = null) @@ -10038,9 +10399,9 @@ namespace Illuminate\Support\Facades { /** * Retrieve a file from the request. * - * @param string $key + * @param string|null $key * @param mixed $default - * @return \Illuminate\Http\UploadedFile|array|null + * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null * @static */ public static function file($key = null, $default = null) @@ -10066,13 +10427,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Http\Request::mixin($mixin); + \Illuminate\Http\Request::mixin($mixin, $replace); } /** @@ -10102,9 +10464,9 @@ namespace Illuminate\Support\Facades { * * @static */ - public static function hasValidSignature() + public static function hasValidSignature($absolute = true) { - return \Illuminate\Http\Request::hasValidSignature(); + return \Illuminate\Http\Request::hasValidSignature($absolute); } } @@ -10117,7 +10479,7 @@ namespace Illuminate\Support\Facades { class Response { /** - * Return a new response from the application. + * Create a new response instance. * * @param string $content * @param int $status @@ -10125,14 +10487,28 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\Response * @static */ - public static function make($content = '', $status = 200, $headers = array()) + public static function make($content = '', $status = 200, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->make($content, $status, $headers); } /** - * Return a new view response from the application. + * Create a new "no content" response. + * + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response + * @static + */ + public static function noContent($status = 204, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->noContent($status, $headers); + } + + /** + * Create a new response for a given view. * * @param string $view * @param array $data @@ -10141,14 +10517,14 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\Response * @static */ - public static function view($view, $data = array(), $status = 200, $headers = array()) + public static function view($view, $data = [], $status = 200, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->view($view, $data, $status, $headers); } /** - * Return a new JSON response from the application. + * Create a new JSON response instance. * * @param mixed $data * @param int $status @@ -10157,14 +10533,14 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\JsonResponse * @static */ - public static function json($data = array(), $status = 200, $headers = array(), $options = 0) + public static function json($data = [], $status = 200, $headers = [], $options = 0) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->json($data, $status, $headers, $options); } /** - * Return a new JSONP response from the application. + * Create a new JSONP response instance. * * @param string $callback * @param mixed $data @@ -10174,14 +10550,14 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\JsonResponse * @static */ - public static function jsonp($callback, $data = array(), $status = 200, $headers = array(), $options = 0) + public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->jsonp($callback, $data, $status, $headers, $options); } /** - * Return a new streamed response from the application. + * Create a new streamed response instance. * * @param \Closure $callback * @param int $status @@ -10189,14 +10565,14 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static */ - public static function stream($callback, $status = 200, $headers = array()) + public static function stream($callback, $status = 200, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->stream($callback, $status, $headers); } /** - * Return a new streamed response as a file download from the application. + * Create a new streamed response instance as a file download. * * @param \Closure $callback * @param string|null $name @@ -10205,7 +10581,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static */ - public static function streamDownload($callback, $name = null, $headers = array(), $disposition = 'attachment') + public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->streamDownload($callback, $name, $headers, $disposition); @@ -10221,7 +10597,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static */ - public static function download($file, $name = null, $headers = array(), $disposition = 'attachment') + public static function download($file, $name = null, $headers = [], $disposition = 'attachment') { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->download($file, $name, $headers, $disposition); @@ -10235,7 +10611,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static */ - public static function file($file, $headers = array()) + public static function file($file, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->file($file, $headers); @@ -10251,7 +10627,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function redirectTo($path, $status = 302, $headers = array(), $secure = null) + public static function redirectTo($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectTo($path, $status, $headers, $secure); @@ -10267,7 +10643,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function redirectToRoute($route, $parameters = array(), $status = 302, $headers = array()) + public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectToRoute($route, $parameters, $status, $headers); @@ -10283,7 +10659,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function redirectToAction($action, $parameters = array(), $status = 302, $headers = array()) + public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectToAction($action, $parameters, $status, $headers); @@ -10299,7 +10675,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function redirectGuest($path, $status = 302, $headers = array(), $secure = null) + public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectGuest($path, $status, $headers, $secure); @@ -10315,7 +10691,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Http\RedirectResponse * @static */ - public static function redirectToIntended($default = '/', $status = 302, $headers = array(), $secure = null) + public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectToIntended($default, $status, $headers, $secure); @@ -10338,13 +10714,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Routing\ResponseFactory::mixin($mixin); + \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); } /** @@ -10379,7 +10756,7 @@ namespace Illuminate\Support\Facades { * Register a new GET route with the router. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10393,7 +10770,7 @@ namespace Illuminate\Support\Facades { * Register a new POST route with the router. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10407,7 +10784,7 @@ namespace Illuminate\Support\Facades { * Register a new PUT route with the router. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10421,7 +10798,7 @@ namespace Illuminate\Support\Facades { * Register a new PATCH route with the router. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10435,7 +10812,7 @@ namespace Illuminate\Support\Facades { * Register a new DELETE route with the router. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10449,7 +10826,7 @@ namespace Illuminate\Support\Facades { * Register a new OPTIONS route with the router. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10463,7 +10840,7 @@ namespace Illuminate\Support\Facades { * Register a new route responding to all verbs. * * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10476,7 +10853,7 @@ namespace Illuminate\Support\Facades { /** * Register a new Fallback route with the router. * - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10495,12 +10872,26 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Routing\Route * @static */ - public static function redirect($uri, $destination, $status = 301) + public static function redirect($uri, $destination, $status = 302) { /** @var \Illuminate\Routing\Router $instance */ return $instance->redirect($uri, $destination, $status); } + /** + * Create a permanent redirect from one URI to another. + * + * @param string $uri + * @param string $destination + * @return \Illuminate\Routing\Route + * @static + */ + public static function permanentRedirect($uri, $destination) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->permanentRedirect($uri, $destination); + } + /** * Register a new route that returns a view. * @@ -10510,7 +10901,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Routing\Route * @static */ - public static function view($uri, $view, $data = array()) + public static function view($uri, $view, $data = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->view($uri, $view, $data); @@ -10521,7 +10912,7 @@ namespace Illuminate\Support\Facades { * * @param array|string $methods * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10535,13 +10926,14 @@ namespace Illuminate\Support\Facades { * Register an array of resource controllers. * * @param array $resources + * @param array $options * @return void * @static */ - public static function resources($resources) + public static function resources($resources, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - $instance->resources($resources); + $instance->resources($resources, $options); } /** @@ -10553,7 +10945,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Routing\PendingResourceRegistration * @static */ - public static function resource($name, $controller, $options = array()) + public static function resource($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->resource($name, $controller, $options); @@ -10563,13 +10955,14 @@ namespace Illuminate\Support\Facades { * Register an array of API resource controllers. * * @param array $resources + * @param array $options * @return void * @static */ - public static function apiResources($resources) + public static function apiResources($resources, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - $instance->apiResources($resources); + $instance->apiResources($resources, $options); } /** @@ -10581,7 +10974,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Routing\PendingResourceRegistration * @static */ - public static function apiResource($name, $controller, $options = array()) + public static function apiResource($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->apiResource($name, $controller, $options); @@ -10631,7 +11024,7 @@ namespace Illuminate\Support\Facades { * * @param array|string $methods * @param string $uri - * @param \Closure|array|string|null $action + * @param \Closure|array|string|callable|null $action * @return \Illuminate\Routing\Route * @static */ @@ -10645,7 +11038,7 @@ namespace Illuminate\Support\Facades { * Return the response returned by the given route. * * @param string $name - * @return mixed + * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse * @static */ public static function respondWithRoute($name) @@ -10671,7 +11064,7 @@ namespace Illuminate\Support\Facades { * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request - * @return mixed + * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse * @static */ public static function dispatchToRoute($request) @@ -10725,6 +11118,7 @@ namespace Illuminate\Support\Facades { * * @param \Illuminate\Routing\Route $route * @return \Illuminate\Routing\Route + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ public static function substituteBindings($route) @@ -10738,6 +11132,7 @@ namespace Illuminate\Support\Facades { * * @param \Illuminate\Routing\Route $route * @return void + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ public static function substituteImplicitBindings($route) @@ -10877,7 +11272,6 @@ namespace Illuminate\Support\Facades { * @param string $class * @param \Closure|null $callback * @return void - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ public static function model($key, $class, $callback = null) @@ -10966,7 +11360,7 @@ namespace Illuminate\Support\Facades { * Get a route parameter for the current route. * * @param string $key - * @param string $default + * @param string|null $default * @return mixed * @static */ @@ -11003,7 +11397,7 @@ namespace Illuminate\Support\Facades { /** * Get the currently dispatched route instance. * - * @return \Illuminate\Routing\Route + * @return \Illuminate\Routing\Route|null * @static */ public static function current() @@ -11104,13 +11498,38 @@ namespace Illuminate\Support\Facades { /** * Register the typical authentication routes for an application. * + * @param array $options * @return void * @static */ - public static function auth() + public static function auth($options = []) { /** @var \Illuminate\Routing\Router $instance */ - $instance->auth(); + $instance->auth($options); + } + + /** + * Register the typical reset password routes for an application. + * + * @return void + * @static + */ + public static function resetPassword() + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->resetPassword(); + } + + /** + * Register the typical email verification routes for an application. + * + * @return void + * @static + */ + public static function emailVerification() + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->emailVerification(); } /** @@ -11133,7 +11552,7 @@ namespace Illuminate\Support\Facades { * @return void * @static */ - public static function resourceParameters($parameters = array()) + public static function resourceParameters($parameters = []) { /** @var \Illuminate\Routing\Router $instance */ $instance->resourceParameters($parameters); @@ -11146,7 +11565,7 @@ namespace Illuminate\Support\Facades { * @return array|null * @static */ - public static function resourceVerbs($verbs = array()) + public static function resourceVerbs($verbs = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->resourceVerbs($verbs); @@ -11194,13 +11613,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Routing\Router::mixin($mixin); + \Illuminate\Routing\Router::mixin($mixin, $replace); } /** @@ -11405,6 +11825,20 @@ namespace Illuminate\Support\Facades { $instance->dropIfExists($table); } + /** + * Drop all types from the database. + * + * @return void + * @throws \LogicException + * @static + */ + public static function dropAllTypes() + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllTypes(); + } + /** * Rename a table on the schema. * @@ -11446,6 +11880,23 @@ namespace Illuminate\Support\Facades { return $instance->disableForeignKeyConstraints(); } + /** + * Register a custom Doctrine mapping type. + * + * @param string $class + * @param string $name + * @param string $type + * @return void + * @throws \Doctrine\DBAL\DBALException + * @static + */ + public static function registerCustomDoctrineType($class, $name, $type) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->registerCustomDoctrineType($class, $name, $type); + } + /** * Get the database connection instance. * @@ -11592,13 +12043,13 @@ namespace Illuminate\Support\Facades { /** * Save the session data to storage. * - * @return bool + * @return void * @static */ public static function save() { /** @var \Illuminate\Session\Store $instance */ - return $instance->save(); + $instance->save(); } /** @@ -11625,6 +12076,19 @@ namespace Illuminate\Support\Facades { return $instance->all(); } + /** + * Get a subset of the session data. + * + * @param array $keys + * @return array + * @static + */ + public static function only($keys) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->only($keys); + } + /** * Checks if a key exists. * @@ -11669,7 +12133,7 @@ namespace Illuminate\Support\Facades { * Get the value of a given key and then forget it. * * @param string $key - * @param string $default + * @param string|null $default * @return mixed * @static */ @@ -11682,7 +12146,7 @@ namespace Illuminate\Support\Facades { /** * Determine if the session contains old input. * - * @param string $key + * @param string|null $key * @return bool * @static */ @@ -11695,7 +12159,7 @@ namespace Illuminate\Support\Facades { /** * Get the requested item from the flashed input array. * - * @param string $key + * @param string|null $key * @param mixed $default * @return mixed * @static @@ -12117,7 +12581,7 @@ namespace Illuminate\Support\Facades { /** * Get a filesystem instance. * - * @param string $name + * @param string|null $name * @return \Illuminate\Filesystem\FilesystemAdapter * @static */ @@ -12130,7 +12594,7 @@ namespace Illuminate\Support\Facades { /** * Get a filesystem instance. * - * @param string $name + * @param string|null $name * @return \Illuminate\Filesystem\FilesystemAdapter * @static */ @@ -12285,27 +12749,27 @@ namespace Illuminate\Support\Facades { /** * Assert that the given file exists. * - * @param string $path - * @return void + * @param string|array $path + * @return \Illuminate\Filesystem\FilesystemAdapter * @static */ public static function assertExists($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - $instance->assertExists($path); + return $instance->assertExists($path); } /** * Assert that the given file does not exist. * - * @param string $path - * @return void + * @param string|array $path + * @return \Illuminate\Filesystem\FilesystemAdapter * @static */ public static function assertMissing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - $instance->assertMissing($path); + return $instance->assertMissing($path); } /** @@ -12358,7 +12822,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static */ - public static function response($path, $name = null, $headers = array(), $disposition = 'inline') + public static function response($path, $name = null, $headers = [], $disposition = 'inline') { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->response($path, $name, $headers, $disposition); @@ -12373,7 +12837,7 @@ namespace Illuminate\Support\Facades { * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static */ - public static function download($path, $name = null, $headers = array()) + public static function download($path, $name = null, $headers = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->download($path, $name, $headers); @@ -12388,7 +12852,7 @@ namespace Illuminate\Support\Facades { * @return bool * @static */ - public static function put($path, $contents, $options = array()) + public static function put($path, $contents, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->put($path, $contents, $options); @@ -12403,7 +12867,7 @@ namespace Illuminate\Support\Facades { * @return string|false * @static */ - public static function putFile($path, $file, $options = array()) + public static function putFile($path, $file, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->putFile($path, $file, $options); @@ -12419,7 +12883,7 @@ namespace Illuminate\Support\Facades { * @return string|false * @static */ - public static function putFileAs($path, $file, $name, $options = array()) + public static function putFileAs($path, $file, $name, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->putFileAs($path, $file, $name, $options); @@ -12443,13 +12907,13 @@ namespace Illuminate\Support\Facades { * * @param string $path * @param string $visibility - * @return void + * @return bool * @static */ public static function setVisibility($path, $visibility) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - $instance->setVisibility($path, $visibility); + return $instance->setVisibility($path, $visibility); } /** @@ -12458,7 +12922,7 @@ namespace Illuminate\Support\Facades { * @param string $path * @param string $data * @param string $separator - * @return int + * @return bool * @static */ public static function prepend($path, $data, $separator = '') @@ -12473,7 +12937,7 @@ namespace Illuminate\Support\Facades { * @param string $path * @param string $data * @param string $separator - * @return int + * @return bool * @static */ public static function append($path, $data, $separator = '') @@ -12567,6 +13031,7 @@ namespace Illuminate\Support\Facades { * * @param string $path * @return string + * @throws \RuntimeException * @static */ public static function url($path) @@ -12575,6 +13040,37 @@ namespace Illuminate\Support\Facades { return $instance->url($path); } + /** + * Get a resource to read the file. + * + * @param string $path + * @return resource|null The path resource or null on failure. + * @throws FileNotFoundException + * @static + */ + public static function readStream($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->readStream($path); + } + + /** + * Write a new file using a stream. + * + * @param string $path + * @param resource $resource + * @param array $options + * @return bool + * @throws \InvalidArgumentException If $resource is not a file handle. + * @throws FileExistsException + * @static + */ + public static function writeStream($path, $resource, $options = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->writeStream($path, $resource, $options); + } + /** * Get a temporary URL for the file at the given path. * @@ -12582,9 +13078,10 @@ namespace Illuminate\Support\Facades { * @param \DateTimeInterface $expiration * @param array $options * @return string + * @throws \RuntimeException * @static */ - public static function temporaryUrl($path, $expiration, $options = array()) + public static function temporaryUrl($path, $expiration, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->temporaryUrl($path, $expiration, $options); @@ -12781,7 +13278,7 @@ namespace Illuminate\Support\Facades { * @return string * @static */ - public static function to($path, $extra = array(), $secure = null) + public static function to($path, $extra = [], $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->to($path, $extra, $secure); @@ -12795,7 +13292,7 @@ namespace Illuminate\Support\Facades { * @return string * @static */ - public static function secure($path, $parameters = array()) + public static function secure($path, $parameters = []) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->secure($path, $parameters); @@ -12850,7 +13347,7 @@ namespace Illuminate\Support\Facades { * @return string * @static */ - public static function formatScheme($secure) + public static function formatScheme($secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatScheme($secure); @@ -12861,42 +13358,45 @@ namespace Illuminate\Support\Facades { * * @param string $name * @param array $parameters - * @param \DateTimeInterface|int $expiration + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param bool $absolute * @return string * @static */ - public static function signedRoute($name, $parameters = array(), $expiration = null) + public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->signedRoute($name, $parameters, $expiration); + return $instance->signedRoute($name, $parameters, $expiration, $absolute); } /** * Create a temporary signed route URL for a named route. * * @param string $name - * @param \DateTimeInterface|int $expiration + * @param \DateTimeInterface|\DateInterval|int $expiration * @param array $parameters + * @param bool $absolute * @return string * @static */ - public static function temporarySignedRoute($name, $expiration, $parameters = array()) + public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->temporarySignedRoute($name, $expiration, $parameters); + return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); } /** * Determine if the given request has a valid signature. * * @param \Illuminate\Http\Request $request + * @param bool $absolute * @return bool * @static */ - public static function hasValidSignature($request) + public static function hasValidSignature($request, $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasValidSignature($request); + return $instance->hasValidSignature($request, $absolute); } /** @@ -12909,7 +13409,7 @@ namespace Illuminate\Support\Facades { * @throws \InvalidArgumentException * @static */ - public static function route($name, $parameters = array(), $absolute = true) + public static function route($name, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->route($name, $parameters, $absolute); @@ -12918,14 +13418,14 @@ namespace Illuminate\Support\Facades { /** * Get the URL to a controller action. * - * @param string $action + * @param string|array $action * @param mixed $parameters * @param bool $absolute * @return string * @throws \InvalidArgumentException * @static */ - public static function action($action, $parameters = array(), $absolute = true) + public static function action($action, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->action($action, $parameters, $absolute); @@ -12948,7 +13448,7 @@ namespace Illuminate\Support\Facades { * Get the base URL for the request. * * @param string $scheme - * @param string $root + * @param string|null $root * @return string * @static */ @@ -12963,13 +13463,14 @@ namespace Illuminate\Support\Facades { * * @param string $root * @param string $path + * @param \Illuminate\Routing\Route|null $route * @return string * @static */ - public static function format($root, $path) + public static function format($root, $path, $route = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->format($root, $path); + return $instance->format($root, $path, $route); } /** @@ -13013,14 +13514,14 @@ namespace Illuminate\Support\Facades { /** * Force the scheme for URLs. * - * @param string $schema + * @param string $scheme * @return void * @static */ - public static function forceScheme($schema) + public static function forceScheme($scheme) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->forceScheme($schema); + $instance->forceScheme($scheme); } /** @@ -13168,13 +13669,14 @@ namespace Illuminate\Support\Facades { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Routing\UrlGenerator::mixin($mixin); + \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); } /** @@ -13208,7 +13710,7 @@ namespace Illuminate\Support\Facades { * @return \Illuminate\Validation\Validator * @static */ - public static function make($data, $rules, $messages = array(), $customAttributes = array()) + public static function make($data, $rules, $messages = [], $customAttributes = []) { /** @var \Illuminate\Validation\Factory $instance */ return $instance->make($data, $rules, $messages, $customAttributes); @@ -13225,7 +13727,7 @@ namespace Illuminate\Support\Facades { * @throws \Illuminate\Validation\ValidationException * @static */ - public static function validate($data, $rules, $messages = array(), $customAttributes = array()) + public static function validate($data, $rules, $messages = [], $customAttributes = []) { /** @var \Illuminate\Validation\Factory $instance */ return $instance->validate($data, $rules, $messages, $customAttributes); @@ -13236,7 +13738,7 @@ namespace Illuminate\Support\Facades { * * @param string $rule * @param \Closure|string $extension - * @param string $message + * @param string|null $message * @return void * @static */ @@ -13251,7 +13753,7 @@ namespace Illuminate\Support\Facades { * * @param string $rule * @param \Closure|string $extension - * @param string $message + * @param string|null $message * @return void * @static */ @@ -13266,7 +13768,7 @@ namespace Illuminate\Support\Facades { * * @param string $rule * @param \Closure|string $extension - * @param string $message + * @param string|null $message * @return void * @static */ @@ -13353,12 +13855,12 @@ namespace Illuminate\Support\Facades { * Get the evaluated view contents for the given view. * * @param string $path - * @param array $data + * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData * @return \Illuminate\Contracts\View\View * @static */ - public static function file($path, $data = array(), $mergeData = array()) + public static function file($path, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->file($path, $data, $mergeData); @@ -13368,12 +13870,12 @@ namespace Illuminate\Support\Facades { * Get the evaluated view contents for the given view. * * @param string $view - * @param array $data + * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData * @return \Illuminate\Contracts\View\View * @static */ - public static function make($view, $data = array(), $mergeData = array()) + public static function make($view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->make($view, $data, $mergeData); @@ -13383,13 +13885,13 @@ namespace Illuminate\Support\Facades { * Get the first view that actually exists from the given list. * * @param array $views - * @param array $data + * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData * @return \Illuminate\Contracts\View\View * @throws \InvalidArgumentException * @static */ - public static function first($views, $data = array(), $mergeData = array()) + public static function first($views, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->first($views, $data, $mergeData); @@ -13400,12 +13902,12 @@ namespace Illuminate\Support\Facades { * * @param bool $condition * @param string $view - * @param array $data + * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData * @return string * @static */ - public static function renderWhen($condition, $view, $data = array(), $mergeData = array()) + public static function renderWhen($condition, $view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->renderWhen($condition, $view, $data, $mergeData); @@ -13458,7 +13960,7 @@ namespace Illuminate\Support\Facades { * Add a piece of shared data to the environment. * * @param array|string $key - * @param mixed $value + * @param mixed|null $value * @return mixed * @static */ @@ -13564,7 +14066,7 @@ namespace Illuminate\Support\Facades { * * @param string $extension * @param string $engine - * @param \Closure $resolver + * @param \Closure|null $resolver * @return void * @static */ @@ -13735,6 +14237,45 @@ namespace Illuminate\Support\Facades { return $instance->getShared(); } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\View\Factory::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\View\Factory::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\View\Factory::hasMacro($name); + } + /** * Start a component rendering process. * @@ -13743,12 +14284,26 @@ namespace Illuminate\Support\Facades { * @return void * @static */ - public static function startComponent($name, $data = array()) + public static function startComponent($name, $data = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startComponent($name, $data); } + /** + * Get the first view that actually exists from the given list, and start a component. + * + * @param array $names + * @param array $data + * @return void + * @static + */ + public static function startComponentFirst($names, $data = []) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startComponentFirst($names, $data); + } + /** * Render the current component. * @@ -13964,7 +14519,7 @@ namespace Illuminate\Support\Facades { * Get the contents of a section. * * @param string $name - * @param string $default + * @param string|null $default * @return mixed * @static */ @@ -14146,7 +14701,7 @@ namespace Illuminate\Support\Facades { * @return void * @static */ - public static function startTranslation($replacements = array()) + public static function startTranslation($replacements = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startTranslation($replacements); @@ -14244,7 +14799,7 @@ namespace Barryvdh\Debugbar { * @throws \ErrorException * @static */ - public static function handleError($level, $message, $file = '', $line = 0, $context = array()) + public static function handleError($level, $message, $file = '', $line = 0, $context = []) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->handleError($level, $message, $file, $line, $context); @@ -14787,8 +15342,9 @@ namespace Mews\Captcha\Facades { * Create captcha image * * @param string $config - * @param boolean $api - * @return \Mews\Captcha\ImageManager->response + * @param bool $api + * @return array|mixed + * @throws Exception * @static */ public static function create($config = 'default', $api = false) @@ -14800,7 +15356,7 @@ namespace Mews\Captcha\Facades { /** * Captcha check * - * @param $value + * @param string $value * @return bool * @static */ @@ -14813,7 +15369,8 @@ namespace Mews\Captcha\Facades { /** * Captcha check * - * @param $value + * @param string $value + * @param string $key * @return bool * @static */ @@ -14826,11 +15383,11 @@ namespace Mews\Captcha\Facades { /** * Generate captcha image source * - * @param null $config + * @param string $config * @return string * @static */ - public static function src($config = null) + public static function src($config = 'default') { /** @var \Mews\Captcha\Captcha $instance */ return $instance->src($config); @@ -14839,13 +15396,12 @@ namespace Mews\Captcha\Facades { /** * Generate captcha image html tag * - * @param null $config - * @param array $attrs HTML attributes supplied to the image tag where key is the attribute - * and the value is the attribute value + * @param string $config + * @param array $attrs $attrs -> HTML attributes supplied to the image tag where key is the attribute and the value is the attribute value * @return string * @static */ - public static function img($config = null, $attrs = array()) + public static function img($config = 'default', $attrs = []) { /** @var \Mews\Captcha\Captcha $instance */ return $instance->img($config, $attrs); @@ -15619,7 +16175,7 @@ namespace Misechow\NoCaptcha\Facades { * @return string * @static */ - public static function display($attributes = array()) + public static function display($attributes = []) { /** @var \Misechow\NoCaptcha\NoCaptcha $instance */ return $instance->display($attributes); @@ -15631,7 +16187,7 @@ namespace Misechow\NoCaptcha\Facades { * @see display() * @static */ - public static function displayWidget($attributes = array()) + public static function displayWidget($attributes = []) { /** @var \Misechow\NoCaptcha\NoCaptcha $instance */ return $instance->displayWidget($attributes); @@ -15646,7 +16202,7 @@ namespace Misechow\NoCaptcha\Facades { * @return string * @static */ - public static function displaySubmit($formIdentifier, $text = 'submit', $attributes = array()) + public static function displaySubmit($formIdentifier, $text = 'submit', $attributes = []) { /** @var \Misechow\NoCaptcha\NoCaptcha $instance */ return $instance->displaySubmit($formIdentifier, $text, $attributes); @@ -15728,7 +16284,7 @@ namespace Intervention\Image\Facades { * @return self * @static */ - public static function configure($config = array()) + public static function configure($config = []) { /** @var \Intervention\Image\ImageManager $instance */ return $instance->configure($config); @@ -15817,7 +16373,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Model * @static */ - public static function make($attributes = array()) + public static function make($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->make($attributes); @@ -15932,6 +16488,32 @@ namespace { return $instance->orWhere($column, $operator, $value); } + /** + * Add an "order by" clause for a timestamp to the query. + * + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function latest($column = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->latest($column); + } + + /** + * Add an "order by" clause for a timestamp to the query. + * + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function oldest($column = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->oldest($column); + } + /** * Create a collection of models from plain arrays. * @@ -15953,7 +16535,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Collection * @static */ - public static function fromQuery($query, $bindings = array()) + public static function fromQuery($query, $bindings = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->fromQuery($query, $bindings); @@ -15967,7 +16549,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null * @static */ - public static function find($id, $columns = array()) + public static function find($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->find($id, $columns); @@ -15981,7 +16563,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Collection * @static */ - public static function findMany($ids, $columns = array()) + public static function findMany($ids, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findMany($ids, $columns); @@ -15996,7 +16578,7 @@ namespace { * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ - public static function findOrFail($id, $columns = array()) + public static function findOrFail($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOrFail($id, $columns); @@ -16007,10 +16589,10 @@ namespace { * * @param mixed $id * @param array $columns - * @return \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model|static * @static */ - public static function findOrNew($id, $columns = array()) + public static function findOrNew($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOrNew($id, $columns); @@ -16021,10 +16603,10 @@ namespace { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model|static * @static */ - public static function firstOrNew($attributes, $values = array()) + public static function firstOrNew($attributes, $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrNew($attributes, $values); @@ -16035,10 +16617,10 @@ namespace { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model|static * @static */ - public static function firstOrCreate($attributes, $values = array()) + public static function firstOrCreate($attributes, $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrCreate($attributes, $values); @@ -16049,10 +16631,10 @@ namespace { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model|static * @static */ - public static function updateOrCreate($attributes, $values = array()) + public static function updateOrCreate($attributes, $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->updateOrCreate($attributes, $values); @@ -16066,7 +16648,7 @@ namespace { * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ - public static function firstOrFail($columns = array()) + public static function firstOrFail($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrFail($columns); @@ -16080,7 +16662,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Model|static|mixed * @static */ - public static function firstOr($columns = array(), $callback = null) + public static function firstOr($columns = [], $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOr($columns, $callback); @@ -16106,7 +16688,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Collection|static[] * @static */ - public static function get($columns = array()) + public static function get($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->get($columns); @@ -16116,10 +16698,10 @@ namespace { * Get the hydrated models without eager loading. * * @param array $columns - * @return \Illuminate\Database\Eloquent\Model[] + * @return \Illuminate\Database\Eloquent\Model[]|static[] * @static */ - public static function getModels($columns = array()) + public static function getModels($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getModels($columns); @@ -16191,7 +16773,7 @@ namespace { * @throws \InvalidArgumentException * @static */ - public static function paginate($perPage = null, $columns = array(), $pageName = 'page', $page = null) + public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->paginate($perPage, $columns, $pageName, $page); @@ -16207,7 +16789,7 @@ namespace { * @return \Illuminate\Contracts\Pagination\Paginator * @static */ - public static function simplePaginate($perPage = null, $columns = array(), $pageName = 'page', $page = null) + public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->simplePaginate($perPage, $columns, $pageName, $page); @@ -16220,7 +16802,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Model|$this * @static */ - public static function create($attributes = array()) + public static function create($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->create($attributes); @@ -16256,7 +16838,7 @@ namespace { * Call the given local model scopes. * * @param array $scopes - * @return mixed + * @return static|mixed * @static */ public static function scopes($scopes) @@ -16268,7 +16850,7 @@ namespace { /** * Apply the scopes to the Eloquent builder instance and return it. * - * @return \Illuminate\Database\Eloquent\Builder|static + * @return static * @static */ public static function applyScopes() @@ -16294,10 +16876,10 @@ namespace { * Create a new instance of the model being queried. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model|static * @static */ - public static function newModelInstance($attributes = array()) + public static function newModelInstance($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->newModelInstance($attributes); @@ -16368,7 +16950,7 @@ namespace { /** * Get the model instance being queried. * - * @return \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model|static * @static */ public static function getModel() @@ -16438,7 +17020,7 @@ namespace { * @return \Illuminate\Database\Eloquent\Model|object|static|null * @static */ - public static function first($columns = array()) + public static function first($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->first($columns); @@ -16449,7 +17031,7 @@ namespace { * * @param mixed $value * @param callable $callback - * @param callable $default + * @param callable|null $default * @return mixed|$this * @static */ @@ -16462,7 +17044,7 @@ namespace { /** * Pass the query to a given callback. * - * @param \Closure $callback + * @param callable $callback * @return \Illuminate\Database\Query\Builder * @static */ @@ -16477,7 +17059,7 @@ namespace { * * @param mixed $value * @param callable $callback - * @param callable $default + * @param callable|null $default * @return mixed|$this * @static */ @@ -16490,7 +17072,7 @@ namespace { /** * Add a relationship count / exists condition to the query. * - * @param string $relation + * @param string|\Illuminate\Database\Eloquent\Relations\Relation $relation * @param string $operator * @param int $count * @param string $boolean @@ -16607,6 +17189,134 @@ namespace { return $instance->orWhereDoesntHave($relation, $callback); } + /** + * Add a polymorphic relationship count / exists condition to the query. + * + * @param string $relation + * @param string|array $types + * @param string $operator + * @param int $count + * @param string $boolean + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with an "or". + * + * @param string $relation + * @param string|array $types + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orHasMorph($relation, $types, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orHasMorph($relation, $types, $operator, $count); + } + + /** + * Add a polymorphic relationship count / exists condition to the query. + * + * @param string $relation + * @param string|array $types + * @param string $boolean + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->doesntHaveMorph($relation, $types, $boolean, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with an "or". + * + * @param string $relation + * @param string|array $types + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orDoesntHaveMorph($relation, $types) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orDoesntHaveMorph($relation, $types); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses. + * + * @param string $relation + * @param string|array $types + * @param \Closure|null $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereHasMorph($relation, $types, $callback, $operator, $count); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". + * + * @param string $relation + * @param string|array $types + * @param \Closure $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses. + * + * @param string $relation + * @param string|array $types + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereDoesntHaveMorph($relation, $types, $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereDoesntHaveMorph($relation, $types, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". + * + * @param string $relation + * @param string|array $types + * @param \Closure $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereDoesntHaveMorph($relation, $types, $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereDoesntHaveMorph($relation, $types, $callback); + } + /** * Add subselect queries to count the relations. * @@ -16640,7 +17350,7 @@ namespace { * @return \Illuminate\Database\Query\Builder * @static */ - public static function select($columns = array()) + public static function select($columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->select($columns); @@ -16669,7 +17379,7 @@ namespace { * @return \Illuminate\Database\Query\Builder|static * @static */ - public static function selectRaw($expression, $bindings = array()) + public static function selectRaw($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->selectRaw($expression, $bindings); @@ -16698,7 +17408,7 @@ namespace { * @return \Illuminate\Database\Query\Builder|static * @static */ - public static function fromRaw($expression, $bindings = array()) + public static function fromRaw($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->fromRaw($expression, $bindings); @@ -16746,7 +17456,7 @@ namespace { * Add a join clause to the query. * * @param string $table - * @param string $first + * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @param string $type @@ -16764,7 +17474,7 @@ namespace { * Add a "join where" clause to the query. * * @param string $table - * @param string $first + * @param \Closure|string $first * @param string $operator * @param string $second * @param string $type @@ -16782,7 +17492,7 @@ namespace { * * @param \Closure|\Illuminate\Database\Query\Builder|string $query * @param string $as - * @param string $first + * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @param string $type @@ -16801,7 +17511,7 @@ namespace { * Add a left join to the query. * * @param string $table - * @param string $first + * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @return \Illuminate\Database\Query\Builder|static @@ -16817,7 +17527,7 @@ namespace { * Add a "join where" clause to the query. * * @param string $table - * @param string $first + * @param \Closure|string $first * @param string $operator * @param string $second * @return \Illuminate\Database\Query\Builder|static @@ -16834,7 +17544,7 @@ namespace { * * @param \Closure|\Illuminate\Database\Query\Builder|string $query * @param string $as - * @param string $first + * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @return \Illuminate\Database\Query\Builder|static @@ -16850,7 +17560,7 @@ namespace { * Add a right join to the query. * * @param string $table - * @param string $first + * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @return \Illuminate\Database\Query\Builder|static @@ -16866,7 +17576,7 @@ namespace { * Add a "right join where" clause to the query. * * @param string $table - * @param string $first + * @param \Closure|string $first * @param string $operator * @param string $second * @return \Illuminate\Database\Query\Builder|static @@ -16883,7 +17593,7 @@ namespace { * * @param \Closure|\Illuminate\Database\Query\Builder|string $query * @param string $as - * @param string $first + * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @return \Illuminate\Database\Query\Builder|static @@ -16899,7 +17609,7 @@ namespace { * Add a "cross join" clause to the query. * * @param string $table - * @param string|null $first + * @param \Closure|string|null $first * @param string|null $operator * @param string|null $second * @return \Illuminate\Database\Query\Builder|static @@ -16981,7 +17691,7 @@ namespace { * @return \Illuminate\Database\Query\Builder * @static */ - public static function whereRaw($sql, $bindings = array(), $boolean = 'and') + public static function whereRaw($sql, $bindings = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereRaw($sql, $bindings, $boolean); @@ -16995,7 +17705,7 @@ namespace { * @return \Illuminate\Database\Query\Builder|static * @static */ - public static function orWhereRaw($sql, $bindings = array()) + public static function orWhereRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereRaw($sql, $bindings); @@ -17061,18 +17771,49 @@ namespace { } /** - * Add a "where null" clause to the query. + * Add a "where in raw" clause for integer values to the query. * * @param string $column + * @param \Illuminate\Contracts\Support\Arrayable|array $values * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static */ - public static function whereNull($column, $boolean = 'and', $not = false) + public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNull($column, $boolean, $not); + return $instance->whereIntegerInRaw($column, $values, $boolean, $not); + } + + /** + * Add a "where not in raw" clause for integer values to the query. + * + * @param string $column + * @param \Illuminate\Contracts\Support\Arrayable|array $values + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereIntegerNotInRaw($column, $values, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereIntegerNotInRaw($column, $values, $boolean); + } + + /** + * Add a "where null" clause to the query. + * + * @param string|array $columns + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereNull($columns, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNull($columns, $boolean, $not); } /** @@ -17179,7 +17920,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder|static * @static @@ -17195,7 +17936,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @return \Illuminate\Database\Query\Builder|static * @static */ @@ -17210,7 +17951,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder|static * @static @@ -17226,7 +17967,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @return \Illuminate\Database\Query\Builder|static * @static */ @@ -17241,7 +17982,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder|static * @static @@ -17257,7 +17998,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @return \Illuminate\Database\Query\Builder|static * @static */ @@ -17272,7 +18013,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder|static * @static @@ -17288,7 +18029,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|null $value * @return \Illuminate\Database\Query\Builder|static * @static */ @@ -17303,7 +18044,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|int|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder|static * @static @@ -17319,7 +18060,7 @@ namespace { * * @param string $column * @param string $operator - * @param mixed $value + * @param \DateTimeInterface|string|int|null $value * @return \Illuminate\Database\Query\Builder|static * @static */ @@ -17530,11 +18271,42 @@ namespace { return $instance->orWhereJsonDoesntContain($column, $value); } + /** + * Add a "where JSON length" clause to the query. + * + * @param string $column + * @param mixed $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereJsonLength($column, $operator, $value, $boolean); + } + + /** + * Add a "or where JSON length" clause to the query. + * + * @param string $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereJsonLength($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereJsonLength($column, $operator, $value); + } + /** * Handles dynamic "where" clauses to the query. * * @param string $method - * @param string $parameters + * @param array $parameters * @return \Illuminate\Database\Query\Builder * @static */ @@ -17588,6 +18360,22 @@ namespace { return $instance->orHaving($column, $operator, $value); } + /** + * Add a "having between " clause to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function havingBetween($column, $values, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->havingBetween($column, $values, $boolean, $not); + } + /** * Add a raw having clause to the query. * @@ -17597,7 +18385,7 @@ namespace { * @return \Illuminate\Database\Query\Builder * @static */ - public static function havingRaw($sql, $bindings = array(), $boolean = 'and') + public static function havingRaw($sql, $bindings = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingRaw($sql, $bindings, $boolean); @@ -17611,7 +18399,7 @@ namespace { * @return \Illuminate\Database\Query\Builder|static * @static */ - public static function orHavingRaw($sql, $bindings = array()) + public static function orHavingRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orHavingRaw($sql, $bindings); @@ -17623,6 +18411,7 @@ namespace { * @param string $column * @param string $direction * @return \Illuminate\Database\Query\Builder + * @throws \InvalidArgumentException * @static */ public static function orderBy($column, $direction = 'asc') @@ -17644,32 +18433,6 @@ namespace { return $instance->orderByDesc($column); } - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param string $column - * @return \Illuminate\Database\Query\Builder|static - * @static - */ - public static function latest($column = 'created_at') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->latest($column); - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param string $column - * @return \Illuminate\Database\Query\Builder|static - * @static - */ - public static function oldest($column = 'created_at') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->oldest($column); - } - /** * Put the query's results in random order. * @@ -17691,7 +18454,7 @@ namespace { * @return \Illuminate\Database\Query\Builder * @static */ - public static function orderByRaw($sql, $bindings = array()) + public static function orderByRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderByRaw($sql, $bindings); @@ -17763,6 +18526,21 @@ namespace { return $instance->forPage($page, $perPage); } + /** + * Constrain the query to the previous "page" of results before a given ID. + * + * @param int $perPage + * @param int|null $lastId + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->forPageBeforeId($perPage, $lastId, $column); + } + /** * Constrain the query to the next "page" of results after a given ID. * @@ -17861,7 +18639,7 @@ namespace { * @return int * @static */ - public static function getCountForPagination($columns = array()) + public static function getCountForPagination($columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getCountForPagination($columns); @@ -17991,7 +18769,7 @@ namespace { * @return mixed * @static */ - public static function aggregate($function, $columns = array()) + public static function aggregate($function, $columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->aggregate($function, $columns); @@ -18005,7 +18783,7 @@ namespace { * @return float|int * @static */ - public static function numericAggregate($function, $columns = array()) + public static function numericAggregate($function, $columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->numericAggregate($function, $columns); @@ -18024,6 +18802,19 @@ namespace { return $instance->insert($values); } + /** + * Insert a new record into the database while ignoring errors. + * + * @param array $values + * @return int + * @static + */ + public static function insertOrIgnore($values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insertOrIgnore($values); + } + /** * Insert a new record and get the value of the primary key. * @@ -18038,6 +18829,20 @@ namespace { return $instance->insertGetId($values, $sequence); } + /** + * Insert new records into the table using a subquery. + * + * @param array $columns + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @return bool + * @static + */ + public static function insertUsing($columns, $query) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insertUsing($columns, $query); + } + /** * Insert or update a record matching the attributes, and fill it with values. * @@ -18046,7 +18851,7 @@ namespace { * @return bool * @static */ - public static function updateOrInsert($attributes, $values = array()) + public static function updateOrInsert($attributes, $values = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->updateOrInsert($attributes, $values); @@ -18206,6 +19011,30 @@ namespace { return $instance->cloneWithoutBindings($except); } + /** + * Dump the current SQL and bindings. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function dump() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->dump(); + } + + /** + * Die and dump the current SQL and bindings. + * + * @return void + * @static + */ + public static function dd() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + $instance->dd(); + } + /** * Register a custom macro. * @@ -18223,13 +19052,14 @@ namespace { * Mix another object into the class. * * @param object $mixin + * @param bool $replace * @return void * @throws \ReflectionException * @static */ - public static function mixin($mixin) + public static function mixin($mixin, $replace = true) { - \Illuminate\Database\Query\Builder::mixin($mixin); + \Illuminate\Database\Query\Builder::mixin($mixin, $replace); } /** @@ -18318,3 +19148,4 @@ namespace { + diff --git a/app/Components/AlipayNotify.php b/app/Components/AlipayNotify.php index 3d7a1292..c405d4df 100644 --- a/app/Components/AlipayNotify.php +++ b/app/Components/AlipayNotify.php @@ -43,9 +43,7 @@ class AlipayNotify return FALSE; }else{ // 生成签名结果 - $isSign = $this->getSignVeryfy($_POST, $_POST["sign"]); - - $converted_res = ($isSign)? 'true' : 'false'; + $isSign = $this->getSignVerify($_POST, $_POST["sign"]); // 获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息) $responseTxt = 'false'; @@ -54,7 +52,7 @@ class AlipayNotify } // 验证 - // $responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 + // $responseTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 // isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if(preg_match("/true$/i", $responseTxt) && $isSign){ return TRUE; @@ -72,7 +70,7 @@ class AlipayNotify * * @return bool 签名验证结果 */ - function getSignVeryfy($para_temp, $sign) + function getSignVerify($para_temp, $sign) { // 除去待签名参数数组中的空值和签名参数 $para_filter = $this->paraFilter($para_temp); @@ -81,43 +79,78 @@ class AlipayNotify $para_sort = $this->argSort($para_filter); // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - $prestr = $this->createLinkString($para_sort); + $preStr = $this->createLinkString($para_sort); switch(strtoupper(trim($this->sign_type))){ case "RSA" : - $isSgin = $this->rsaVerify($prestr, trim($this->alipay_public_key), $sign); + $isSign = $this->rsaVerify($preStr, trim($this->alipay_public_key), $sign); break; case "MD5" : - $isSgin = $this->md5Verify($prestr, $sign, trim($this->md5_key)); + $isSign = $this->md5Verify($preStr, $sign, trim($this->md5_key)); break; default : - $isSgin = FALSE; + $isSign = FALSE; } - return $isSgin; + return $isSign; } /** - * 获取远程服务器ATN结果,验证返回URL + * 除去数组中的空值和签名参数 * - * @param integer $notify_id 通知校验ID + * @param array $para 签名参数组 * - * @return string 服务器ATN结果 - * 验证结果集: - * invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空 - * true 返回正确信息 - * false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟 + * @return array 去掉空值与签名参数后的新签名参数组 */ - function getResponse($notify_id) + function paraFilter($para) { - $transport = strtolower(trim($this->transport)); - $partner = trim($this->partner); + $para_filter = []; + foreach($para as $key => $val){ + if($key == "sign" || $key == "sign_type" || $val == "") continue; + else $para_filter[$key] = $para[$key]; + } - $verify_url = $transport == 'https'? $this->https_verify_url : $this->http_verify_url; - $verify_url = $verify_url."partner=".$partner."¬ify_id=".$notify_id; - $responseTxt = $this->getHttpResponseGET($verify_url, base_path('ca/cacert_alipay.pem')); + return $para_filter; + } - return $responseTxt; + /** + * 对数组排序 + * + * @param array $para 排序前的数组 + * + * @return array 排序后的数组 + */ + function argSort($para) + { + ksort($para); + reset($para); + + return $para; + } + + /** + * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 + * + * @param array $para 需要拼接的数组 + * + * @return string + */ + function createLinkString($para) + { + $arg = ''; + foreach($para as $key => $val){ + $arg .= "&".$key."=".$val; + } + + // 去掉开头的&字符 + $arg = substr($arg, 1); + + // 如果存在转义字符,那么去掉转义 + if(get_magic_quotes_gpc()){ + $arg = stripslashes($arg); + } + + return $arg; } /** @@ -152,42 +185,39 @@ class AlipayNotify /** * 验证签名 * - * @param string $prestr 需要签名的字符串pre-sign + * @param string $preStr 需要签名的字符串pre-sign * @param string $sign 签名结果 * @param string $key 私钥 * * @return bool */ - function md5Verify($prestr, $sign, $key) + function md5Verify($preStr, $sign, $key) { - $mysgin = md5($prestr.$key); + $mySign = md5($preStr.$key); - return $mysgin == $sign? TRUE : FALSE; + return $mySign == $sign? TRUE : FALSE; } /** - * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 + * 获取远程服务器ATN结果,验证返回URL * - * @param array $para 需要拼接的数组 + * @param integer $notify_id 通知校验ID * - * @return string + * @return string 服务器ATN结果 + * 验证结果集: + * invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空 + * true 返回正确信息 + * false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟 */ - function createLinkString($para) + function getResponse($notify_id) { - $arg = ""; - while(list ($key, $val) = each($para)){ - $arg .= $key."=".$val."&"; - } + $transport = strtolower(trim($this->transport)); + $partner = trim($this->partner); - // 去掉最后一个&字符 - $arg = substr($arg, 0, count($arg)-2); + $verify_url = $transport == 'https'? $this->https_verify_url : $this->http_verify_url; + $verify_url = $verify_url."partner=".$partner."¬ify_id=".$notify_id; - // 如果存在转义字符,那么去掉转义 - if(get_magic_quotes_gpc()){ - $arg = stripslashes($arg); - } - - return $arg; + return $this->getHttpResponseGET($verify_url, base_path('ca/cacert_alipay.pem')); } /** @@ -213,39 +243,6 @@ class AlipayNotify return $responseText; } - - /** - * 除去数组中的空值和签名参数 - * - * @param array $para 签名参数组 - * - * @return array 去掉空值与签名参数后的新签名参数组 - */ - function paraFilter($para) - { - $para_filter = []; - while(list ($key, $val) = each($para)){ - if($key == "sign" || $key == "sign_type" || $val == "") continue; - else $para_filter[$key] = $para[$key]; - } - - return $para_filter; - } - - /** - * 对数组排序 - * - * @param array $para 排序前的数组 - * - * @return array 排序后的数组 - */ - function argSort($para) - { - ksort($para); - reset($para); - - return $para; - } } ?> diff --git a/app/Components/AlipaySubmit.php b/app/Components/AlipaySubmit.php index 9a5f8617..42ae5a6f 100644 --- a/app/Components/AlipaySubmit.php +++ b/app/Components/AlipaySubmit.php @@ -29,29 +29,19 @@ class AlipaySubmit } /** - * 生成签名结果 + * 生成要请求给支付宝的参数数组 * - * @param array $para_sort 已排序要签名的数组 + * @param array $para_temp 请求前的参数数组 * * @return string */ - function buildRequestMysign($para_sort) + function buildRequestParaToString($para_temp) { - // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - $prestr = $this->createLinkString($para_sort); + // 待请求参数数组 + $para = $this->buildRequestPara($para_temp); - switch(strtoupper(trim($this->sign_type))){ - case "MD5" : - $mysign = $this->md5Sign($prestr, $this->md5_key); - break; - case "RSA" : - $mysign = $this->rsaSign($prestr, $this->private_key); - break; - default : - $mysign = ""; - } - - return $mysign; + // 把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码 + return $this->createLinkStringUrlEncode($para); } /** @@ -70,74 +60,72 @@ class AlipaySubmit $para_sort = $this->argSort($para_filter); // 生成签名结果 - $mysign = $this->buildRequestMysign($para_sort); + $mySign = $this->buildRequestMySign($para_sort); // 签名结果与签名方式加入请求提交参数组中 - $para_sort['sign'] = $mysign; + $para_sort['sign'] = $mySign; $para_sort['sign_type'] = strtoupper(trim($this->sign_type)); return $para_sort; } /** - * 生成要请求给支付宝的参数数组 + * 除去数组中的空值和签名参数 * - * @param array $para_temp 请求前的参数数组 + * @param array $para 签名参数组 * - * @return string + * @return array */ - function buildRequestParaToString($para_temp) + function paraFilter($para) { - // 待请求参数数组 - $para = $this->buildRequestPara($para_temp); - - // 把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码 - $request_data = $this->createLinkStringUrlEncode($para); - - return $request_data; - } - - /** - * 建立请求,以表单HTML形式构造(默认) - * - * @param array $para_temp 请求参数数组 - * @param string $method 提交方式。两个值可选:post、get - * @param string $button_name 确认按钮显示文字 - * - * @return string - */ - public function buildRequestForm($para_temp, $method, $button_name) - { - // 待请求参数数组 - $para = $this->buildRequestPara($para_temp); - - $sHtml = "
"; - $sHtml = $sHtml.""; - - return $sHtml; + return $para_filter; } /** - * 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 + * 对数组排序 + * + * @param array $para 排序前的数组 + * + * @return mixed + */ + function argSort($para) + { + ksort($para); + reset($para); + + return $para; + } + + /** + * 生成签名结果 + * + * @param array $para_sort 已排序要签名的数组 * * @return string */ - function query_timestamp() + function buildRequestMySign($para_sort) { - $url = $this->alipay_gateway_new."service=query_timestamp&partner=".trim(strtolower($this->partner))."&_input_charset=utf-8"; + // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 + $preStr = $this->createLinkString($para_sort); - $doc = new DOMDocument(); - $doc->load($url); - $itemEncrypt_key = $doc->getElementsByTagName("encrypt_key"); - $encrypt_key = $itemEncrypt_key->item(0)->nodeValue; + switch(strtoupper(trim($this->sign_type))){ + case "MD5" : + $mySign = $this->md5Sign($preStr, $this->md5_key); + break; + case "RSA" : + $mySign = $this->rsaSign($preStr, $this->private_key); + break; + default : + $mySign = ""; + } - return $encrypt_key; + return $mySign; } /** @@ -149,13 +137,13 @@ class AlipaySubmit */ function createLinkString($para) { - $arg = ""; - while(list ($key, $val) = each($para)){ - $arg .= $key."=".$val."&"; + $arg = ''; + foreach($para as $key => $val){ + $arg .= "&".$key."=".$val; } - // 去掉最后一个&字符 - $arg = substr($arg, 0, count($arg)-2); + // 去掉开头的&字符 + $arg = substr($arg, 1); // 如果存在转义字符,那么去掉转义 if(get_magic_quotes_gpc()){ @@ -166,28 +154,16 @@ class AlipaySubmit } /** - * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码 + * 签名字符串 * - * @param array $para 需要拼接的数组 + * @param string $preStr 需要签名的字符串 + * @param string $key 私钥 * - * @return bool|string + * @return string */ - function createLinkStringUrlEncode($para) + function md5Sign($preStr, $key) { - $arg = ""; - while(list ($key, $val) = each($para)){ - $arg .= $key."=".urlencode($val)."&"; - } - - // 去掉最后一个&字符 - $arg = substr($arg, 0, count($arg)-2); - - // 如果存在转义字符,那么去掉转义 - if(get_magic_quotes_gpc()){ - $arg = stripslashes($arg); - } - - return $arg; + return md5($preStr.$key); } /** @@ -221,48 +197,69 @@ class AlipaySubmit } /** - * 签名字符串 + * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码 * - * @param string $prestr 需要签名的字符串 - * @param string $key 私钥 + * @param array $para 需要拼接的数组 + * + * @return bool|string + */ + function createLinkStringUrlEncode($para) + { + $arg = ''; + foreach($para as $key => $val){ + $arg .= "&".$key."=".urlencode($val); + } + + // 去掉开头的&字符 + $arg = substr($arg, 1); + + // 如果存在转义字符,那么去掉转义 + if(get_magic_quotes_gpc()){ + $arg = stripslashes($arg); + } + + return $arg; + } + + /** + * 建立请求,以表单HTML形式构造(默认) + * + * @param array $para_temp 请求参数数组 + * @param string $method 提交方式。两个值可选:post|get + * @param string $button_name 确认按钮显示文字 * * @return string */ - function md5Sign($prestr, $key) + public function buildRequestForm($para_temp, $method, $button_name) { - return md5($prestr.$key); - } + // 待请求参数数组 + $para = $this->buildRequestPara($para_temp); - /** - * 除去数组中的空值和签名参数 - * - * @param array $para 签名参数组 - * - * @return array - */ - function paraFilter($para) - { - $para_filter = []; - while(list ($key, $val) = each($para)){ - if($key == "sign" || $key == "sign_type" || $val == "") continue; - else $para_filter[$key] = $para[$key]; + $sHtml = ""; + $sHtml = $sHtml.""; + + return $sHtml; } /** - * 对数组排序 + * 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 * - * @param array $para 排序前的数组 - * - * @return mixed + * @return string */ - function argSort($para) + function query_timestamp() { - ksort($para); - reset($para); + $url = $this->alipay_gateway_new."service=query_timestamp&partner=".trim(strtolower($this->partner))."&_input_charset=utf-8"; - return $para; + $doc = new DOMDocument(); + $doc->load($url); + $itemEncrypt_key = $doc->getElementsByTagName("encrypt_key"); + + return $itemEncrypt_key->item(0)->nodeValue; } } \ No newline at end of file diff --git a/app/Components/Callback.php b/app/Components/Callback.php index 4d80ea31..e0afa2ca 100644 --- a/app/Components/Callback.php +++ b/app/Components/Callback.php @@ -14,10 +14,8 @@ use App\Mail\sendUserInfo; use DB; use Exception; use Hash; -use Illuminate\Http\Request; use Log; use Mail; -use Response; trait Callback { @@ -28,6 +26,11 @@ trait Callback self::$systemConfig = Helpers::systemConfig(); } + public function show() + { + exit('show'); + } + // 交易支付 private function tradePaid($msg, $pay_type) { @@ -195,6 +198,7 @@ trait Callback DB::rollBack(); Log::info('【'.$pay_type_name.'】回调更新支付单和订单异常:'.$e->getMessage()); } + return FALSE; } @@ -239,12 +243,6 @@ trait Callback $obj->save(); } Helpers::addUserTrafficModifyLog($prepaidOrder->user_id, $prepaidOrder->oid, $user->transfer_enable, $userTraffic, '[预支付订单激活]加上用户购买的套餐流量'); - - User::query()->where('id', $prepaidOrder->user_id)->increment('invite_num', $prepaidOrder->invite_num? : 0, ['transfer_enable' => $userTraffic, 'expire_time' => $expire_time, 'reset_time' => $nextResetTime]); - } - - public function show(Request $request) - { - exit('show'); + User::query()->where('id', $prepaidOrder->user_id)->increment('invite_num', $prepaidOrder->invite_num? : 0, ['u' => 0, 'd' => 0, 'transfer_enable' => $userTraffic, 'expire_time' => $expire_time, 'reset_time' => $nextResetTime]); } } diff --git a/app/Components/Helpers.php b/app/Components/Helpers.php index 96e77c82..ee16152e 100644 --- a/app/Components/Helpers.php +++ b/app/Components/Helpers.php @@ -22,70 +22,6 @@ class Helpers 60177, 60179 ]; - // 获取系统配置 - public static function systemConfig() - { - $config = Config::query()->get(); - $data = []; - foreach($config as $vo){ - $data[$vo->name] = $vo->value; - } - - return $data; - } - - // 获取默认加密方式 - public static function getDefaultMethod() - { - $config = SsConfig::default()->type(1)->first(); - - return $config? $config->name : 'aes-256-cfb'; - } - - // 获取默认协议 - public static function getDefaultProtocol() - { - $config = SsConfig::default()->type(2)->first(); - - return $config? $config->name : 'origin'; - } - - // 获取默认混淆 - public static function getDefaultObfs() - { - $config = SsConfig::default()->type(3)->first(); - - return $config? $config->name : 'plain'; - } - - // 获取一个随机端口 - public static function getRandPort() - { - $config = self::systemConfig(); - $port = mt_rand($config['min_port'], $config['max_port']); - - $exists_port = User::query()->pluck('port')->toArray(); - if(in_array($port, $exists_port) || in_array($port, self::$denyPorts)){ - $port = self::getRandPort(); - } - - return $port; - } - - // 获取一个端口 - public static function getOnlyPort() - { - $config = self::systemConfig(); - $port = $config['min_port']; - - $exists_port = User::query()->where('port', '>=', $port)->pluck('port')->toArray(); - while(in_array($port, $exists_port) || in_array($port, self::$denyPorts)){ - $port = $port+1; - } - - return $port; - } - // 加密方式 public static function methodList() { @@ -159,6 +95,70 @@ class Helpers return $user->id; } + // 获取系统配置 + public static function systemConfig() + { + $config = Config::query()->get(); + $data = []; + foreach($config as $vo){ + $data[$vo->name] = $vo->value; + } + + return $data; + } + + // 获取一个随机端口 + public static function getRandPort() + { + $config = self::systemConfig(); + $port = mt_rand($config['min_port'], $config['max_port']); + + $exists_port = User::query()->pluck('port')->toArray(); + if(in_array($port, $exists_port) || in_array($port, self::$denyPorts)){ + $port = self::getRandPort(); + } + + return $port; + } + + // 获取一个随机端口 + public static function getOnlyPort() + { + $config = self::systemConfig(); + $port = $config['min_port']; + + $exists_port = User::query()->where('port', '>=', $port)->pluck('port')->toArray(); + while(in_array($port, $exists_port) || in_array($port, self::$denyPorts)){ + $port = $port+1; + } + + return $port; + } + + // 获取默认加密方式 + public static function getDefaultMethod() + { + $config = SsConfig::default()->type(1)->first(); + + return $config? $config->name : 'aes-256-cfb'; + } + + // 获取默认协议 + public static function getDefaultProtocol() + { + $config = SsConfig::default()->type(2)->first(); + + return $config? $config->name : 'origin'; + } + + // 获取默认混淆 + public static function getDefaultObfs() + { + $config = SsConfig::default()->type(3)->first(); + + return $config? $config->name : 'plain'; + } + /** * 添加邮件投递日志 * diff --git a/app/Components/IPIP.php b/app/Components/IPIP.php index 3a07eced..49875f46 100644 --- a/app/Components/IPIP.php +++ b/app/Components/IPIP.php @@ -16,10 +16,8 @@ class IPIP public static function ip($ip) { $filePath = public_path('ipip.ipdb'); - $loc = new City($filePath); - $result = $loc->findMap($ip, 'CN'); - return $result; + return $loc->findMap($ip, 'CN'); } } \ No newline at end of file diff --git a/app/Components/Namesilo.php b/app/Components/Namesilo.php index 6786420b..ca2ecf86 100644 --- a/app/Components/Namesilo.php +++ b/app/Components/Namesilo.php @@ -23,6 +23,38 @@ class Namesilo return $this->send('listDomains'); } + // 发送请求 + private function send($operation, $data = []) + { + $params = [ + 'version' => 1, + 'type' => 'xml', + 'key' => self::$systemConfig['namesilo_key'] + ]; + $query = array_merge($params, $data); + + $content = '请求操作:['.$operation.'] --- 请求数据:['.http_build_query($query).']'; + + try{ + $result = Curl::send(self::$host.$operation.'?'.http_build_query($query)); + $result = XML2Array::createArray($result); + + // 出错 + if(empty($result['namesilo']) || $result['namesilo']['reply']['code'] != 300 || $result['namesilo']['reply']['detail'] != 'success'){ + Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 0, $result['namesilo']['reply']['detail']); + }else{ + Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 1, $result['namesilo']['reply']['detail']); + } + + return $result['namesilo']['reply']; + } catch(Exception $e){ + Log::error('CURL请求失败:'.$e->getMessage().' --- '.$e->getLine()); + Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 0, $e->getMessage()); + + return FALSE; + } + } + // 列出指定域名的所有DNS记录 public function dnsListRecords($domain) { @@ -71,36 +103,4 @@ class Namesilo return $this->send('dnsDeleteRecord', $data); } - - // 发送请求 - private function send($operation, $data = []) - { - $params = [ - 'version' => 1, - 'type' => 'xml', - 'key' => self::$systemConfig['namesilo_key'] - ]; - $query = array_merge($params, $data); - - $content = '请求操作:['.$operation.'] --- 请求数据:['.http_build_query($query).']'; - - try{ - $result = Curl::send(self::$host.$operation.'?'.http_build_query($query)); - $result = XML2Array::createArray($result); - - // 出错 - if(empty($result['namesilo']) || $result['namesilo']['reply']['code'] != 300 || $result['namesilo']['reply']['detail'] != 'success'){ - Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 0, $result['namesilo']['reply']['detail']); - }else{ - Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 1, $result['namesilo']['reply']['detail']); - } - - return $result['namesilo']['reply']; - } catch(Exception $e){ - Log::error('CURL请求失败:'.$e->getMessage().' --- '.$e->getLine()); - Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 0, $e->getMessage()); - - return FALSE; - } - } } \ No newline at end of file diff --git a/app/Components/ServerChan.php b/app/Components/ServerChan.php index 1a232d5c..bd9d40b6 100644 --- a/app/Components/ServerChan.php +++ b/app/Components/ServerChan.php @@ -35,6 +35,8 @@ class ServerChan }else{ Log::error('消息推送失败:未启用或未正确配置ServerChan'); } + + return; } /** diff --git a/app/Console/Commands/AutoClearLog.php b/app/Console/Commands/AutoClearLog.php index 68b21687..093c3e82 100644 --- a/app/Console/Commands/AutoClearLog.php +++ b/app/Console/Commands/AutoClearLog.php @@ -19,9 +19,9 @@ use Log; class AutoClearLog extends Command { + protected static $systemConfig; protected $signature = 'autoClearLog'; protected $description = '自动清除日志'; - protected static $systemConfig; public function __construct() { @@ -41,7 +41,7 @@ class AutoClearLog extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } // 清除日志 @@ -60,7 +60,7 @@ class AutoClearLog extends Command UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-3 days')))->delete(); // 自动清除1个月以前的用户每天流量数据日志 - UserTrafficDaily::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-1 month')))->delete(); + UserTrafficDaily::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-1 month 5 days')))->delete(); // 自动清除2个月以前的节点每小时流量数据日志 SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-2 month')))->delete(); @@ -71,8 +71,8 @@ class AutoClearLog extends Command // 自动清除30天以前用户封禁日志 UserBanLog::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime("-1 month")))->delete(); - // 自动清除1天前用户连接IP - SsNodeIp::query()->where('created_at', '<=', strtotime("-1 day"))->delete(); + // 自动清除1月前用户连接IP + SsNodeIp::query()->where('created_at', '<=', strtotime("-1 month"))->delete(); // 自动清除3个月以前用户登陆日志 UserLoginLog::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime("-3 month")))->delete(); diff --git a/app/Console/Commands/AutoJob.php b/app/Console/Commands/AutoJob.php index 6943f252..f9011c69 100644 --- a/app/Console/Commands/AutoJob.php +++ b/app/Console/Commands/AutoJob.php @@ -23,9 +23,9 @@ use Log; class AutoJob extends Command { + protected static $systemConfig; protected $signature = 'autoJob'; protected $description = '自动化任务'; - protected static $systemConfig; public function __construct() { @@ -64,7 +64,7 @@ class AutoJob extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('【'.$this->description.'】执行定时任务,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } // 关闭超时未支付订单 @@ -121,7 +121,7 @@ class AutoJob extends Command $subscribe = UserSubscribe::query()->where('user_id', $user->id)->first(); if($subscribe){ // 24小时内不同IP的请求次数 - $request_times = UserSubscribeLog::query()->where('sid', $subscribe->id)->where('request_time', '>=', date("Y-m-d H:i:s", strtotime("-24 hours")))->distinct()->count('request_ip'); + $request_times = UserSubscribeLog::query()->where('sid', $subscribe->id)->where('request_time', '>=', date("Y-m-d H:i:s", strtotime("-24 hours")))->distinct('request_ip')->count('request_ip'); if($request_times >= self::$systemConfig['subscribe_ban_times']){ UserSubscribe::query()->where('id', $subscribe->id)->update(['status' => 0, 'ban_time' => time(), 'ban_desc' => '存在异常,自动封禁']); @@ -133,6 +133,22 @@ class AutoJob extends Command } } + /** + * 添加用户封禁日志 + * + * @param int $userId 用户ID + * @param int $minutes 封禁时长,单位分钟 + * @param string $desc 封禁理由 + */ + private function addUserBanLog($userId, $minutes, $desc) + { + $log = new UserBanLog(); + $log->user_id = $userId; + $log->minutes = $minutes; + $log->desc = $desc; + $log->save(); + } + // 封禁账号 private function blockUsers() { @@ -224,20 +240,4 @@ class AutoJob extends Command } } } - - /** - * 添加用户封禁日志 - * - * @param int $userId 用户ID - * @param int $minutes 封禁时长,单位分钟 - * @param string $desc 封禁理由 - */ - private function addUserBanLog($userId, $minutes, $desc) - { - $log = new UserBanLog(); - $log->user_id = $userId; - $log->minutes = $minutes; - $log->desc = $desc; - $log->save(); - } } diff --git a/app/Console/Commands/AutoReportNode.php b/app/Console/Commands/AutoReportNode.php index 675202af..871b66af 100644 --- a/app/Console/Commands/AutoReportNode.php +++ b/app/Console/Commands/AutoReportNode.php @@ -11,9 +11,9 @@ use Log; class AutoReportNode extends Command { + protected static $systemConfig; protected $signature = 'autoReportNode'; protected $description = '自动报告节点昨日使用情况'; - protected static $systemConfig; public function __construct() { @@ -50,6 +50,6 @@ class AutoReportNode extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } } diff --git a/app/Console/Commands/AutoStatisticsNodeDailyTraffic.php b/app/Console/Commands/AutoStatisticsNodeDailyTraffic.php index cc90e03b..37335aa8 100644 --- a/app/Console/Commands/AutoStatisticsNodeDailyTraffic.php +++ b/app/Console/Commands/AutoStatisticsNodeDailyTraffic.php @@ -30,7 +30,7 @@ class AutoStatisticsNodeDailyTraffic extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } private function statisticsByNode($node_id) diff --git a/app/Console/Commands/AutoStatisticsNodeHourlyTraffic.php b/app/Console/Commands/AutoStatisticsNodeHourlyTraffic.php index 0eea1034..e192acb2 100644 --- a/app/Console/Commands/AutoStatisticsNodeHourlyTraffic.php +++ b/app/Console/Commands/AutoStatisticsNodeHourlyTraffic.php @@ -30,7 +30,7 @@ class AutoStatisticsNodeHourlyTraffic extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } private function statisticsByNode($node_id) diff --git a/app/Console/Commands/AutoStatisticsUserDailyTraffic.php b/app/Console/Commands/AutoStatisticsUserDailyTraffic.php index 6c9d6bae..db5c9c3e 100644 --- a/app/Console/Commands/AutoStatisticsUserDailyTraffic.php +++ b/app/Console/Commands/AutoStatisticsUserDailyTraffic.php @@ -38,7 +38,7 @@ class AutoStatisticsUserDailyTraffic extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } private function statisticsByNode($user_id, $node_id = 0) diff --git a/app/Console/Commands/AutoStatisticsUserHourlyTraffic.php b/app/Console/Commands/AutoStatisticsUserHourlyTraffic.php index 25a274eb..7705ab90 100644 --- a/app/Console/Commands/AutoStatisticsUserHourlyTraffic.php +++ b/app/Console/Commands/AutoStatisticsUserHourlyTraffic.php @@ -38,7 +38,7 @@ class AutoStatisticsUserHourlyTraffic extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } private function statisticsByNode($user_id, $node_id = 0) diff --git a/app/Console/Commands/DailyJob.php b/app/Console/Commands/DailyJob.php index 65c1b6f7..ee80b28e 100644 --- a/app/Console/Commands/DailyJob.php +++ b/app/Console/Commands/DailyJob.php @@ -15,9 +15,9 @@ use Log; class DailyJob extends Command { + protected static $systemConfig; protected $signature = 'dailyJob'; protected $description = '每日任务'; - protected static $systemConfig; public function __construct() { @@ -40,11 +40,10 @@ class DailyJob extends Command $this->resetUserTraffic(); } - $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('【'.$this->description.'】执行定时任务,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } private function expireUser() @@ -91,6 +90,22 @@ class DailyJob extends Command } } + /** + * 添加用户封禁日志 + * + * @param int $userId 用户ID + * @param int $minutes 封禁时长,单位分钟 + * @param string $desc 封禁理由 + */ + private function addUserBanLog($userId, $minutes, $desc) + { + $log = new UserBanLog(); + $log->user_id = $userId; + $log->minutes = $minutes; + $log->desc = $desc; + $log->save(); + } + // 关闭超过72小时未处理的工单 private function closeTickets() { @@ -150,23 +165,7 @@ class DailyJob extends Command } // 重置流量 User::query()->where('id', $user->id)->update(['u' => 0, 'd' => 0, 'transfer_enable' => $order->goods->traffic*1048576, 'reset_time' => $nextResetTime]); - Log::info('用户[ID:'.$user->id.' 邮箱: '.$user->username.'] 流量重置为 '.($order->goods->traffic*1048576).'. 重置日期为 '.$nextResetTime? : '【无】'); + Log::info('用户[ID:'.$user->id.' 邮箱: '.$user->username.'] 流量重置为 '.($order->goods->traffic*1048576).'. 重置日期为 '.($nextResetTime? : '【无】')); } } - - /** - * 添加用户封禁日志 - * - * @param int $userId 用户ID - * @param int $minutes 封禁时长,单位分钟 - * @param string $desc 封禁理由 - */ - private function addUserBanLog($userId, $minutes, $desc) - { - $log = new UserBanLog(); - $log->user_id = $userId; - $log->minutes = $minutes; - $log->desc = $desc; - $log->save(); - } } \ No newline at end of file diff --git a/app/Console/Commands/NodeBlockedDetection.php b/app/Console/Commands/NodeBlockedDetection.php index 4667ebad..3b9676c9 100644 --- a/app/Console/Commands/NodeBlockedDetection.php +++ b/app/Console/Commands/NodeBlockedDetection.php @@ -15,9 +15,9 @@ use Mail; class NodeBlockedDetection extends Command { + protected static $systemConfig; protected $signature = 'nodeBlockedDetection'; protected $description = '节点阻断检测'; - protected static $systemConfig; public function __construct() { @@ -41,7 +41,7 @@ class NodeBlockedDetection extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info("执行定时任务【{$this->description}】,耗时 {$jobUsedTime} 秒"); + Log::info("---【{$this->description}】完成---,耗时 {$jobUsedTime} 秒"); } // 监测节点状态 @@ -74,6 +74,7 @@ class NodeBlockedDetection extends Command } } } + sleep(3); if($node->detectionType != 2){ $tcpCheck = $this->networkCheck($node->ip, FALSE, $node->single? $node->port : FALSE); if($tcpCheck != FALSE){ @@ -92,7 +93,7 @@ class NodeBlockedDetection extends Command if(Cache::has($cacheKey)){ $times = Cache::get($cacheKey); }else{ - Cache::put($cacheKey, 1, 725); // 最多设置提醒12次,12*60=720分钟缓存时效,多5分钟防止异常 + Cache::put($cacheKey, 1, 43200); // 最多设置提醒12次,每次1小时间隔 $times = 1; } @@ -107,11 +108,30 @@ class NodeBlockedDetection extends Command $this->notifyMaster($title, "**{$node->name} - 【{$node->ip}】**: \r\n\r\n".$text, $node->name, $node->server); Log::info("【节点阻断检测】{$node->name} - 【{$node->ip}】: \r\n".$text); } + sleep(3); } // 随机生成下次检测时间 $nextCheckTime = time()+3600; - Cache::put('LastCheckTime', $nextCheckTime, 60); + Cache::put('LastCheckTime', $nextCheckTime, 3600); + } + + /** + * 通知管理员 + * + * @param string $title 消息标题 + * @param string $content 消息内容 + * @param string $nodeName 节点名称 + * @param string $nodeServer 节点域名 + * + */ + private function notifyMaster($title, $content, $nodeName, $nodeServer) + { + if(self::$systemConfig['webmaster_email']){ + $logId = Helpers::addEmailLog(self::$systemConfig['webmaster_email'], $title, $content); + Mail::to(self::$systemConfig['webmaster_email'])->send(new nodeCrashWarning($logId, $nodeName, $nodeServer)); + } + ServerChan::send($title, $content); } /** @@ -155,22 +175,4 @@ class NodeBlockedDetection extends Command return '机器宕机'; // 服务器宕机 } } - - /** - * 通知管理员 - * - * @param string $title 消息标题 - * @param string $content 消息内容 - * @param string $nodeName 节点名称 - * @param string $nodeServer 节点域名 - * - */ - private function notifyMaster($title, $content, $nodeName, $nodeServer) - { - if(self::$systemConfig['webmaster_email']){ - $logId = Helpers::addEmailLog(self::$systemConfig['webmaster_email'], $title, $content); - Mail::to(self::$systemConfig['webmaster_email'])->send(new nodeCrashWarning($logId, $nodeName, $nodeServer)); - } - ServerChan::send($title, $content); - } } diff --git a/app/Console/Commands/ServiceTimer.php b/app/Console/Commands/ServiceTimer.php index 13cfed34..3e2f7afd 100644 --- a/app/Console/Commands/ServiceTimer.php +++ b/app/Console/Commands/ServiceTimer.php @@ -15,9 +15,9 @@ use Log; class ServiceTimer extends Command { use Callback; + protected static $systemConfig; protected $signature = 'serviceTimer'; protected $description = '服务计时器'; - protected static $systemConfig; public function __construct() { @@ -35,7 +35,7 @@ class ServiceTimer extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } // 扣减用户到期商品的流量 diff --git a/app/Console/Commands/UserExpireAutoWarning.php b/app/Console/Commands/UserExpireAutoWarning.php index d1f8bcac..c7bef7c5 100644 --- a/app/Console/Commands/UserExpireAutoWarning.php +++ b/app/Console/Commands/UserExpireAutoWarning.php @@ -12,9 +12,9 @@ use Mail; class UserExpireAutoWarning extends Command { + protected static $systemConfig; protected $signature = 'userExpireAutoWarning'; protected $description = '用户临近到期自动发邮件提醒'; - protected static $systemConfig; public function __construct() { @@ -34,7 +34,7 @@ class UserExpireAutoWarning extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } private function userExpireWarning() diff --git a/app/Console/Commands/UserTrafficAbnormalAutoWarning.php b/app/Console/Commands/UserTrafficAbnormalAutoWarning.php index 4541907e..ce59d5d3 100644 --- a/app/Console/Commands/UserTrafficAbnormalAutoWarning.php +++ b/app/Console/Commands/UserTrafficAbnormalAutoWarning.php @@ -11,9 +11,9 @@ use Log; class UserTrafficAbnormalAutoWarning extends Command { + protected static $systemConfig; protected $signature = 'userTrafficAbnormalAutoWarning'; protected $description = '用户流量异常警告'; - protected static $systemConfig; public function __construct() { @@ -31,7 +31,7 @@ class UserTrafficAbnormalAutoWarning extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } // 用户流量异常警告 diff --git a/app/Console/Commands/UserTrafficAutoWarning.php b/app/Console/Commands/UserTrafficAutoWarning.php index ff5fe60a..24f07da1 100644 --- a/app/Console/Commands/UserTrafficAutoWarning.php +++ b/app/Console/Commands/UserTrafficAutoWarning.php @@ -11,9 +11,9 @@ use Mail; class UserTrafficAutoWarning extends Command { + protected static $systemConfig; protected $signature = 'userTrafficAutoWarning'; protected $description = '用户流量超过警告阈值自动发邮件提醒'; - protected static $systemConfig; public function __construct() { @@ -33,7 +33,7 @@ class UserTrafficAutoWarning extends Command $jobEndTime = microtime(TRUE); $jobUsedTime = round(($jobEndTime-$jobStartTime), 4); - Log::info('执行定时任务【'.$this->description.'】,耗时'.$jobUsedTime.'秒'); + Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒'); } // 用户流量超过警告阈值自动发邮件提醒 diff --git a/app/Console/Commands/upgradeUserResetTime.php b/app/Console/Commands/upgradeUserResetTime.php index 062736ea..ae0143fe 100644 --- a/app/Console/Commands/upgradeUserResetTime.php +++ b/app/Console/Commands/upgradeUserResetTime.php @@ -56,7 +56,7 @@ class upgradeUserResetTime extends Command User::query()->where('id', $user->id)->update(['reset_time' => $reset_time]); } - Log::info('---用户[ID:'.$user->id.' - '.$user->username.']的新重置日期为'.($reset_time != NULL? '【'.$reset_time.'】': '【无】').'---'); + Log::info('---用户[ID:'.$user->id.' - '.$user->username.']的新重置日期为'.($reset_time != NULL? '【'.$reset_time.'】' : '【无】').'---'); } Log::info('----------------------------【升级用户重置日期】结束----------------------------'); diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 04de5266..3e837d58 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -58,8 +58,8 @@ class Handler extends ExceptionHandler /** * Render an exception into an HTTP response. * - * @param Request $request - * @param Exception $exception + * @param Request $request + * @param Exception $exception * * @return Response */ @@ -75,7 +75,7 @@ class Handler extends ExceptionHandler Log::info("异常请求:".$request->fullUrl().",IP:".getClientIp()); if($request->ajax()){ - return response()->json(['status' => 'fail', 'data' => '', 'message' => 'Page Not Found']); + return response()->json(['status' => 'fail', 'data' => '', 'message' => trans('error.MissingPage')]); }else{ return response()->view('auth.error', ['message' => trans('error.MissingPage')]); } @@ -84,7 +84,7 @@ class Handler extends ExceptionHandler // 捕获身份校验异常 if($exception instanceof AuthenticationException){ if($request->ajax()){ - return response()->json(['status' => 'fail', 'data' => '', 'message' => 'Unauthorized']); + return response()->json(['status' => 'fail', 'data' => '', 'message' => trans('error.Unauthorized')]); }else{ return response()->view('auth.error', ['message' => trans('error.Unauthorized')]); } @@ -93,16 +93,16 @@ class Handler extends ExceptionHandler // 捕获CSRF异常 if($exception instanceof TokenMismatchException){ if($request->ajax()){ - return response()->json(['status' => 'fail', 'data' => '', 'message' => 'System Error, Please Refresh Page, Try One More Time']); + return response()->json(['status' => 'fail', 'data' => '', 'message' => trans('error.RefreshPage').''.trans('error.Refresh').'']); }else{ - return response()->view('auth.error', ['message' => trans('error.RefreshPage')]); + return response()->view('auth.error', ['message' => trans('error.RefreshPage').''.trans('error.Refresh').'']); } } // 捕获反射异常 if($exception instanceof ReflectionException){ if($request->ajax()){ - return response()->json(['status' => 'fail', 'data' => '', 'message' => 'System Error']); + return response()->json(['status' => 'fail', 'data' => '', 'message' => trans('error.SystemError')]); }else{ return response()->view('auth.error', ['message' => trans('error.SystemError')]); } @@ -111,7 +111,7 @@ class Handler extends ExceptionHandler // 捕获系统错误异常 if($exception instanceof ErrorException){ if($request->ajax()){ - return response()->json(['status' => 'fail', 'data' => '', 'message' => 'System Error']); + return response()->json(['status' => 'fail', 'data' => '', 'message' => trans('error.SystemError').', '.trans('error.Visit').''.trans('error.log').'']); }else{ return response()->view('auth.error', ['message' => trans('error.SystemError').', '.trans('error.Visit').''.trans('error.log').'']); } diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 99944cfe..63268b9c 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -64,7 +64,7 @@ class AdminController extends Controller self::$systemConfig = Helpers::systemConfig(); } - public function index(Request $request) + public function index() { $past = strtotime(date('Y-m-d', strtotime("-".self::$systemConfig['expire_days']." days"))); @@ -294,6 +294,22 @@ class AdminController extends Controller } } + // 生成用户标签 + private function makeUserLabels($userId, $labels) + { + // 先删除该用户所有的标签 + UserLabel::query()->where('user_id', $userId)->delete(); + + if(!empty($labels) && is_array($labels)){ + foreach($labels as $label){ + $userLabel = new UserLabel(); + $userLabel->user_id = $userId; + $userLabel->label_id = $label; + $userLabel->save(); + } + } + } + // 批量生成账号 public function batchAddUsers(Request $request) { @@ -771,6 +787,22 @@ class AdminController extends Controller } } + // 生成节点标签 + private function makeNodeLabels($nodeId, $labels) + { + // 先删除所有该节点的标签 + SsNodeLabel::query()->where('node_id', $nodeId)->delete(); + + if(!empty($labels) && is_array($labels)){ + foreach($labels as $label){ + $ssNodeLabel = new SsNodeLabel(); + $ssNodeLabel->node_id = $nodeId; + $ssNodeLabel->label_id = $label; + $ssNodeLabel->save(); + } + } + } + // 删除节点 public function delNode(Request $request) { @@ -807,7 +839,7 @@ class AdminController extends Controller } // 节点流量监控 - public function nodeMonitor(Request $request, $node_id) + public function nodeMonitor($node_id) { $node = SsNode::query()->where('id', $node_id)->orderBy('sort', 'desc')->first(); if(!$node){ @@ -1075,6 +1107,8 @@ class AdminController extends Controller $user_id = $request->input('user_id'); $username = $request->input('username'); $nodeId = $request->input('nodeId'); + $startTime = $request->input('startTime'); + $endTime = $request->input('endTime'); $query = UserTrafficLog::query()->with(['user', 'node']); @@ -1098,6 +1132,14 @@ class AdminController extends Controller $query->where('node_id', $nodeId); } + if(isset($startTime)){ + $query->where('log_time', '>=', strtotime($startTime)); + } + + if(isset($endTime)){ + $query->where('log_time', '<=', strtotime($endTime)); + } + // 已使用流量 $view['totalTraffic'] = flowAutoShow($query->sum('u')+$query->sum('d')); @@ -1252,8 +1294,8 @@ class AdminController extends Controller return Redirect::back(); } - DB::beginTransaction(); try{ + DB::beginTransaction(); foreach($data as $user){ $obj = new User(); $obj->username = $user->user; @@ -1317,88 +1359,26 @@ class AdminController extends Controller return Redirect::to('admin/userList'); } - $nodeList = SsNode::query()->where('status', 1)->orderBy('sort', 'desc')->orderBy('id', 'asc')->paginate(15)->appends($request->except('page')); - foreach($nodeList as $node){ - // 获取分组名称 - $group = SsGroup::query()->where('id', $node->group_id)->first(); - $host = $node->server? : $node->ip; - if($node->type == 1){ - $obfs_param = $user->obfs_param? : $node->obfs_param; - $group = empty($group)? Helpers::systemConfig()['website_name'] : $group->name; - if($node->single){ - $port = $node->port; - $protocol = $node->protocol; - $method = $node->method; - $obfs = $node->obfs; - $passwd = $node->passwd; - $protocol_param = $user->port.':'.$user->passwd; - }else{ - $port = $user->port; - $protocol = $user->protocol; - $method = $user->method; - $obfs = $user->obfs; - $passwd = $user->passwd; - $protocol_param = $user->protocol_param; - } + if($request->isMethod('POST')){ + $node_id = $request->input('id'); + $infoType = $request->input('type'); - // 生成ssr scheme - $node->ssr_scheme = 'ssr://'.base64url_encode($host.':'.$port.':'.$protocol.':'.$method.':'.$obfs.':'.base64url_encode($passwd).'/?obfsparam='.base64url_encode($obfs_param).'&protoparam='.base64url_encode($protocol_param).'&remarks='.base64url_encode($node->name).'&group='.base64url_encode($group).'&udpport=0&uot=0'); + $node = SsNode::query()->whereKey($node_id)->first(); + $proxyType = $node->type == 1? ($node->compatible? 'SS' : 'SSR') : 'V2Ray'; + $data = $this->getNodeInfo($id, $node->id, $infoType != 'text'? 0 : 1); - // 生成ss scheme - $node->ss_scheme = $node->compatible? 'ss://'.base64url_encode($user->method.':'.$user->passwd.'@'.$host.':'.$user->port).'#'.$group : ''; + return Response::json(['status' => 'success', 'data' => $data, 'title' => $proxyType]); - // 生成文本配置信息 - $node->txt = "服务器:".$host."\r\n". - $node->ipv6? "IPv6:".$node->ipv6."\r\n" : ''. - "远程端口:".$port."\r\n". - "密码:".$passwd."\r\n". - "加密方法:".$method."\r\n". - "路由:绕过局域网及中国大陆地址"."\r\n". - "协议:".$protocol."\r\n". - "协议参数:".$protocol_param."\r\n". - "混淆方式:".$obfs."\r\n". - "混淆参数:".$obfs_param."\r\n". - "本地端口:1080"."\r\n"; - }else{ - // 生成v2ray scheme - $node->v2_scheme = 'vmess://'.base64url_encode(json_encode([ - "v" => "2", - "ps" => $node->name, - "add" => $node->server? : $node->ip, - "port" => $node->v2_port, - "id" => $user->vmess_id, - "aid" => $node->v2_alter_id, - "net" => $node->v2_net, - "type" => $node->v2_type, - "host" => $node->v2_host, - "path" => $node->v2_path, - "tls" => $node->v2_tls? "tls" : "" - ], JSON_PRETTY_PRINT)); - - // 生成文本配置信息 - $node->txt = - "服务器:".$node->server? : $node->ip."\r\n". - $node->ipv6? "IPv6:".$node->ipv6."\r\n" : ''. - "端口:".$node->v2_port."\r\n". - "加密方式:".$node->v2_method."\r\n". - "用户ID:".$user->vmess_id."\r\n". - "额外ID:".$node->v2_alter_id."\r\n". - "传输协议:".$node->v2_net."\r\n". - "伪装类型:".$node->v2_type."\r\n". - ($node->v2_host? "伪装域名:".$node->v2_host."\r\n" : ""). - ($node->v2_path? "路径:".$node->v2_path."\r\n" : ""). - ($node->v2_tls == 1? "TLS:tls\r\n" : ""); - } + }else{ + $view['nodeList'] = SsNode::query()->whereStatus(1)->orderBy('sort', 'desc')->orderBy('id', 'asc')->paginate(15)->appends($request->except('page')); + $view['user'] = $user; } - $view['nodeList'] = $nodeList; - $view['user'] = $user; - return Response::view('admin.export', $view); } // 导出原版SS用户配置信息 - public function exportSSJson(Request $request) + public function exportSSJson() { $userList = User::query()->where('port', '>', 0)->get(); $defaultMethod = Helpers::getDefaultMethod(); @@ -1463,7 +1443,7 @@ EOF; } // 用户流量监控 - public function userMonitor(Request $request, $id) + public function userMonitor($id) { if(empty($id)){ return Redirect::to('admin/userList'); @@ -1490,7 +1470,7 @@ EOF; } // 节点一天内的流量 - $userTrafficHourly = UserTrafficHourly::query()->where('user_id', $user->id)->where('node_id', 0)->where('created_at', '>=', date('Y-m-d', time()))->orderBy('created_at', 'asc')->pluck('total')->toArray(); + $userTrafficHourly = UserTrafficHourly::query()->whereUserId($user->id)->whereNodeId(0)->where('created_at', '>=', date('Y-m-d', time()))->orderBy('created_at', 'asc')->pluck('total')->toArray(); $hourlyTotal = date('H'); $hourlyCount = count($userTrafficHourly); for($x = 0; $x < $hourlyTotal-$hourlyCount; $x++){ @@ -1521,11 +1501,9 @@ EOF; } // 生成端口 - public function makePort(Request $request) + public function makePort() { - $new_port = self::$systemConfig['is_rand_port']? Helpers::getRandPort() : Helpers::getOnlyPort(); - echo $new_port; - exit; + return self::$systemConfig['is_rand_port']? Helpers::getRandPort() : Helpers::getOnlyPort(); } // 加密方式、混淆、协议、等级、国家地区 @@ -1666,7 +1644,7 @@ EOF; } // 日志分析 - public function analysis(Request $request) + public function analysis() { $file = storage_path('app/ssserver.log'); if(!file_exists($file)){ @@ -1799,8 +1777,12 @@ EOF; if(!$existUsers->isEmpty()){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该等级下存在关联账号,请先取消关联']); } - - $ret = Level::query()->where('id', $id)->delete(); + $ret = FALSE; + try{ + $ret = Level::query()->where('id', $id)->delete(); + } catch(Exception $e){ + Log::error('删除等级时报错:'.$e); + } if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); }else{ @@ -1896,8 +1878,12 @@ EOF; if(!$existNode->isEmpty()){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该国家/地区下存在关联节点,请先取消关联']); } - - $ret = Country::query()->where('id', $id)->delete(); + $ret = FALSE; + try{ + $ret = Country::query()->where('id', $id)->delete(); + } catch(Exception $e){ + Log::error('删除国家/地区时报错:'.$e); + } if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); }else{ @@ -1906,7 +1892,7 @@ EOF; } // 系统设置 - public function system(Request $request) + public function system() { $view = Helpers::systemConfig(); $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); @@ -1917,7 +1903,7 @@ EOF; // 设置某个配置项 public function setConfig(Request $request) { - $name = trim($request->input('name')); + $name = $request->input('name'); $value = trim($request->input('value')); if(!$name){ @@ -1987,7 +1973,7 @@ EOF; } // 生成邀请码 - public function makeInvite(Request $request) + public function makeInvite() { for($i = 0; $i < 10; $i++){ $obj = new Invite(); @@ -2003,7 +1989,7 @@ EOF; } // 导出邀请码 - public function exportInvite(Request $request) + public function exportInvite() { $inviteList = Invite::query()->where('status', 0)->orderBy('id', 'asc')->get(); @@ -2012,21 +1998,25 @@ EOF; $spreadsheet = new Spreadsheet(); $spreadsheet->getProperties()->setCreator('SSRPanel')->setLastModifiedBy('SSRPanel')->setTitle('邀请码')->setSubject('邀请码')->setDescription('')->setKeywords('')->setCategory(''); - $spreadsheet->setActiveSheetIndex(0); - $sheet = $spreadsheet->getActiveSheet(); - $sheet->setTitle('邀请码'); - $sheet->fromArray(['邀请码', '有效期'], NULL); + try{ + $spreadsheet->setActiveSheetIndex(0); + $sheet = $spreadsheet->getActiveSheet(); + $sheet->setTitle('邀请码'); + $sheet->fromArray(['邀请码', '有效期'], NULL); - foreach($inviteList as $k => $vo){ - $sheet->fromArray([$vo->code, $vo->dateline], NULL, 'A'.($k+2)); + foreach($inviteList as $k => $vo){ + $sheet->fromArray([$vo->code, $vo->dateline], NULL, 'A'.($k+2)); + } + + header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // 输出07Excel文件 + //header('Content-Type:application/vnd.ms-excel'); // 输出Excel03版本文件 + header('Content-Disposition: attachment;filename="'.$filename.'"'); + header('Cache-Control: max-age=0'); + $writer = new Xlsx($spreadsheet); + $writer->save('php://output'); + } catch(\PhpOffice\PhpSpreadsheet\Exception $e){ + Log::error('导出优惠券时报错'.$e); } - - header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // 输出07Excel文件 - //header('Content-Type:application/vnd.ms-excel'); // 输出Excel03版本文件 - header('Content-Disposition: attachment;filename="'.$filename.'"'); - header('Cache-Control: max-age=0'); - $writer = new Xlsx($spreadsheet); - $writer->save('php://output'); } // 提现申请列表 @@ -2497,36 +2487,4 @@ EOF; return Response::view('admin.onlineIPMonitor', $view); } - - // 生成用户标签 - private function makeUserLabels($userId, $labels) - { - // 先删除该用户所有的标签 - UserLabel::query()->where('user_id', $userId)->delete(); - - if(!empty($labels) && is_array($labels)){ - foreach($labels as $label){ - $userLabel = new UserLabel(); - $userLabel->user_id = $userId; - $userLabel->label_id = $label; - $userLabel->save(); - } - } - } - - // 生成节点标签 - private function makeNodeLabels($nodeId, $labels) - { - // 先删除所有该节点的标签 - SsNodeLabel::query()->where('node_id', $nodeId)->delete(); - - if(!empty($labels) && is_array($labels)){ - foreach($labels as $label){ - $ssNodeLabel = new SsNodeLabel(); - $ssNodeLabel->node_id = $nodeId; - $ssNodeLabel->label_id = $label; - $ssNodeLabel->save(); - } - } - } } diff --git a/app/Http/Controllers/Api/AlipayController.php b/app/Http/Controllers/Api/AlipayController.php index b1353a26..df61fcc5 100644 --- a/app/Http/Controllers/Api/AlipayController.php +++ b/app/Http/Controllers/Api/AlipayController.php @@ -8,13 +8,6 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Log; -/** - * Class AlipayController - * - * @author wz812180 - * - * @package App\Http\Controllers\Api - */ class AlipayController extends Controller { use Callback; diff --git a/app/Http/Controllers/Api/F2fpayController.php b/app/Http/Controllers/Api/F2fpayController.php index 0cdd4fc7..57489627 100644 --- a/app/Http/Controllers/Api/F2fpayController.php +++ b/app/Http/Controllers/Api/F2fpayController.php @@ -9,16 +9,10 @@ use Log; use Payment\Client\Query; use Payment\Common\PayException; -/** - * Class F2fpayController - * - * @author heron - * - * @package App\Http\Controllers\Api - */ class F2fpayController extends Controller { use Callback; + // 接收GET请求 public function index(Request $request) { diff --git a/app/Http/Controllers/Api/LoginController.php b/app/Http/Controllers/Api/LoginController.php index 185a2d54..4e1fc279 100644 --- a/app/Http/Controllers/Api/LoginController.php +++ b/app/Http/Controllers/Api/LoginController.php @@ -7,7 +7,6 @@ use App\Http\Controllers\Controller; use App\Http\Models\User; use App\Http\Models\UserLabel; use App\Http\Models\UserSubscribe; -use App\Http\Models\UserSubscribeLog; use Cache; use DB; use Exception; @@ -50,7 +49,7 @@ class LoginController extends Controller return Response::json(['status' => 'fail', 'data' => [], 'message' => '请求失败超限,禁止访问1小时']); } }else{ - Cache::put($cacheKey, 1, 60); + Cache::put($cacheKey, 1, 3600); } $user = User::query()->where('username', $username)->where('status', '>=', 0)->first(); @@ -137,15 +136,4 @@ class LoginController extends Controller return Response::json(['status' => 'success', 'data' => [], 'message' => '登录失败']); } } - - // 写入订阅访问日志 - private function log($subscribeId, $ip, $headers) - { - $log = new UserSubscribeLog(); - $log->sid = $subscribeId; - $log->request_ip = $ip; - $log->request_time = date('Y-m-d H:i:s'); - $log->request_header = $headers; - $log->save(); - } } \ No newline at end of file diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 5df8569c..32942dd8 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -57,10 +57,15 @@ class AuthController extends Controller 'password.required' => trans('auth.password_null') ]); + $username = $request->input('username'); + $captcha = $request->input('captcha'); + $password = $request->input('password'); + $remember = $request->input('remember'); + // 是否校验验证码 switch(self::$systemConfig['is_captcha']){ case 1: // 默认图形验证码 - if(!Captcha::check($request->captcha)){ + if(!Captcha::check($captcha)){ return Redirect::back()->withInput()->withErrors(trans('auth.captcha_error')); } break; @@ -89,7 +94,7 @@ class AuthController extends Controller } // 验证账号并创建会话 - if(!Auth::attempt(['username' => $request->username, 'password' => $request->password], $request->remember)){ + if(!Auth::attempt(['username' => $username, 'password' => $password], $remember)){ return Redirect::back()->withInput()->withErrors(trans('auth.login_error')); } @@ -98,13 +103,11 @@ class AuthController extends Controller if(Auth::user()->status < 0){ Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 - return Redirect::back()->withInput()->withErrors(trans('auth.login_ban', ['email' => self::$systemConfig['admin_email']])); - } - - if(Auth::user()->status == 0 && self::$systemConfig['is_active_register']){ + return Redirect::back()->withInput()->withErrors(trans('auth.login_ban', ['email' => self::$systemConfig['webmaster_email']])); + }elseif(Auth::user()->status == 0 && (self::$systemConfig['is_active_register'] || self::$systemConfig['is_verify_register'])){ Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 - return Redirect::back()->withInput()->withErrors(trans('auth.active_tip').'【'.trans('auth.active_account').'】'); + return Redirect::back()->withInput()->withErrors(trans('auth.active_tip').'【'.trans('auth.active_account').'】'); } } @@ -133,511 +136,6 @@ class AuthController extends Controller } } - // 退出 - public function logout(Request $request) - { - Auth::logout(); - - return Redirect::to('login'); - } - - // 注册 - public function register(Request $request) - { - $cacheKey = 'register_times_'.md5(getClientIp()); // 注册限制缓存key - - if($request->isMethod('POST')){ - $this->validate($request, [ - 'username' => 'required|email|unique:user', - 'password' => 'required|min:6', - 'repassword' => 'required|same:password', - 'term' => 'accepted' - ], [ - 'username.required' => trans('auth.email_null'), - 'username.email' => trans('auth.email_legitimate'), - 'username.unique' => trans('auth.email_exist'), - 'password.required' => trans('auth.password_null'), - 'password.min' => trans('auth.password_limit'), - 'repassword.required' => trans('auth.retype_password'), - 'repassword.same' => trans('auth.password_same'), - 'term.accepted' => trans('auth.unaccepted') - ]); - - // 防止重复提交 - if($request->register_token != Session::get('register_token')){ - return Redirect::back()->withInput()->withErrors(trans('auth.repeat_request')); - }else{ - Session::forget('register_token'); - } - - // 是否开启注册 - if(!self::$systemConfig['is_register']){ - return Redirect::back()->withErrors(trans('auth.register_close')); - } - - // 校验域名邮箱黑白名单 - if(self::$systemConfig['sensitiveType']){ - // 校验域名邮箱是否在黑名单中 - $sensitiveWords = $this->sensitiveWords(1); - $usernameSuffix = explode('@', $request->username); // 提取邮箱后缀 - if(in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ - return Redirect::back()->withInput()->withErrors(trans('auth.email_banned')); - } - }else{ - $sensitiveWords = $this->sensitiveWords(2); - $usernameSuffix = explode('@', $request->username); // 提取邮箱后缀 - if(!in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ - return Redirect::back()->withInput()->withErrors(trans('auth.email_invalid')); - } - } - - // 如果需要邀请注册 - if(self::$systemConfig['is_invite_register']){ - // 必须使用邀请码 - if(self::$systemConfig['is_invite_register'] == 2 && !$request->code){ - return Redirect::back()->withInput()->withErrors(trans('auth.code_null')); - } - - // 校验邀请码合法性 - if($request->code){ - $codeEnable = Invite::query()->where('code', $request->code)->where('status', 0)->first(); - if(!$codeEnable){ - return Redirect::back()->withInput($request->except(['code']))->withErrors(trans('auth.code_error')); - } - } - } - - // 如果开启注册发送验证码 - if(self::$systemConfig['is_verify_register']){ - if(!$request->verify_code){ - return Redirect::back()->withInput($request->except(['verify_code']))->withErrors(trans('auth.captcha_null')); - }else{ - $verifyCode = VerifyCode::query()->where('username', $request->username)->where('code', $request->verify_code)->where('status', 0)->first(); - if(!$verifyCode){ - return Redirect::back()->withInput($request->except(['verify_code']))->withErrors(trans('auth.captcha_overtime')); - } - - $verifyCode->status = 1; - $verifyCode->save(); - } - }elseif(self::$systemConfig['is_captcha']){ // 是否校验验证码 - switch(self::$systemConfig['is_captcha']){ - case 1: // 默认图形验证码 - if(!Captcha::check($request->captcha)){ - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_error')); - } - break; - case 2: // Geetest - $result = $this->validate($request, [ - 'geetest_challenge' => 'required|geetest' - ], [ - 'geetest' => trans('auth.captcha_fail') - ]); - - if(!$result){ - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); - } - break; - case 3: // Google reCAPTCHA - $result = $this->validate($request, [ - 'g-recaptcha-response' => 'required|NoCaptcha' - ]); - - if(!$result){ - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); - } - break; - default: // 不启用验证码 - break; - } - } - - // 24小时内同IP注册限制 - if(self::$systemConfig['register_ip_limit']){ - if(Cache::has($cacheKey)){ - $registerTimes = Cache::get($cacheKey); - if($registerTimes >= self::$systemConfig['register_ip_limit']){ - return Redirect::back()->withInput($request->except(['code']))->withErrors(trans('auth.register_anti')); - } - } - } - - // 获取可用端口 - $port = self::$systemConfig['is_rand_port']? Helpers::getRandPort() : Helpers::getOnlyPort(); - if($port > self::$systemConfig['max_port']){ - return Redirect::back()->withInput()->withErrors(trans('auth.register_close')); - } - - // 获取aff - $affArr = $this->getAff($request->code, intval($request->aff)); - $referral_uid = $affArr['referral_uid']; - - $transfer_enable = $referral_uid? (self::$systemConfig['default_traffic']+self::$systemConfig['referral_traffic'])*1048576 : self::$systemConfig['default_traffic']*1048576; - - // 创建新用户 - $uid = Helpers::addUser($request->username, Hash::make($request->password), $transfer_enable, self::$systemConfig['default_days'], $referral_uid); - - // 注册失败,抛出异常 - if(!$uid){ - return Redirect::back()->withInput()->withErrors(trans('auth.register_fail')); - } - - // 生成订阅码 - $subscribe = new UserSubscribe(); - $subscribe->user_id = $uid; - $subscribe->code = Helpers::makeSubscribeCode(); - $subscribe->times = 0; - $subscribe->save(); - - // 注册次数+1 - if(Cache::has($cacheKey)){ - Cache::increment($cacheKey); - }else{ - Cache::put($cacheKey, 1, 1440); // 24小时 - } - - // 初始化默认标签 - if(strlen(self::$systemConfig['initial_labels_for_user'])){ - $labels = explode(',', self::$systemConfig['initial_labels_for_user']); - foreach($labels as $label){ - $userLabel = new UserLabel(); - $userLabel->user_id = $uid; - $userLabel->label_id = $label; - $userLabel->save(); - } - } - - // 更新邀请码 - if(self::$systemConfig['is_invite_register'] && $affArr['code_id']){ - Invite::query()->where('id', $affArr['code_id'])->update(['fuid' => $uid, 'status' => 1]); - } - - // 清除邀请人Cookie - Cookie::unqueue('register_aff'); - - - // 发送激活邮件 - if(!self::$systemConfig['is_verify_register'] && self::$systemConfig['is_active_register']){ - // 生成激活账号的地址 - $token = md5(self::$systemConfig['website_name'].$request->username.microtime()); - $activeUserUrl = self::$systemConfig['website_url'].'/active/'.$token; - $this->addVerify($uid, $token); - - $logId = Helpers::addEmailLog($request->username, '注册激活', '请求地址:'.$activeUserUrl); - Mail::to($request->username)->send(new activeUser($logId, $activeUserUrl)); - - Session::flash('regSuccessMsg', trans('auth.register_success_tip')); - }else{ - // 则直接给推荐人加流量 - if($referral_uid){ - $transfer_enable = self::$systemConfig['referral_traffic']*1048576; - $referralUser = User::query()->where('id', $referral_uid)->first(); - if($referralUser){ - if($referralUser->expire_time >= date('Y-m-d')){ - User::query()->where('id', $referral_uid)->increment('transfer_enable', $transfer_enable); - } - } - } - - User::query()->where('id', $uid)->update(['status' => 1, 'enable' => 1]); - - Session::flash('regSuccessMsg', trans('auth.register_success')); - } - - return Redirect::to('login')->withInput(); - }else{ - $view['emailList'] = self::$systemConfig['sensitiveType']? NULL : SensitiveWords::query()->where('type', 2)->get(); - Session::put('register_token', makeRandStr(16)); - - return Response::view('auth.register', $view); - } - } - - // 重设密码页 - public function resetPassword(Request $request) - { - if($request->isMethod('POST')){ - // 校验请求 - $this->validate($request, [ - 'username' => 'required|email' - ], [ - 'username.required' => trans('auth.email_null'), - 'username.email' => trans('auth.email_legitimate') - ]); - - // 是否开启重设密码 - if(!self::$systemConfig['is_reset_password']){ - return Redirect::back()->withErrors(trans('auth.reset_password_close', ['email' => self::$systemConfig['admin_email']])); - } - - // 查找账号 - $user = User::query()->where('username', $request->username)->first(); - if(!$user){ - return Redirect::back()->withErrors(trans('auth.email_notExist')); - } - - // 24小时内重设密码次数限制 - $resetTimes = 0; - if(Cache::has('resetPassword_'.md5($request->username))){ - $resetTimes = Cache::get('resetPassword_'.md5($request->username)); - if($resetTimes >= self::$systemConfig['reset_password_times']){ - return Redirect::back()->withErrors(trans('auth.reset_password_limit', ['time' => self::$systemConfig['reset_password_times']])); - } - } - - // 生成取回密码的地址 - $token = $this->addVerifyUrl($user->id, $request->username); - - // 发送邮件 - $resetPasswordUrl = self::$systemConfig['website_url'].'/reset/'.$token; - - $logId = Helpers::addEmailLog($request->username, '重置密码', '请求地址:'.$resetPasswordUrl); - Mail::to($request->username)->send(new resetPassword($logId, $resetPasswordUrl)); - - Cache::put('resetPassword_'.md5($request->username), $resetTimes+1, 1440); - - return Redirect::back()->with('successMsg', trans('auth.reset_password_success_tip')); - }else{ - return Response::view('auth.resetPassword'); - } - } - - // 重设密码 - public function reset(Request $request, $token) - { - if(!$token){ - return Redirect::to('login'); - } - - if($request->isMethod('POST')){ - $this->validate($request, [ - 'password' => 'required|min:6', - 'repassword' => 'required|same:password' - ], [ - 'password.required' => trans('auth.password_null'), - 'password.min' => trans('auth.password_limit'), - 'repassword.required' => trans('auth.password_null'), - 'repassword.min' => trans('auth.password_limit'), - 'repassword.same' => trans('auth.password_same'), - ]); - - // 校验账号 - $verify = Verify::type(1)->with('user')->where('token', $token)->first(); - if(!$verify){ - return Redirect::to('login'); - }elseif($verify->status == 1){ - return Redirect::back()->withErrors(trans('auth.overtime')); - }elseif($verify->user->status < 0){ - return Redirect::back()->withErrors(trans('auth.email_banned')); - }elseif(Hash::check($request->password, $verify->user->password)){ - return Redirect::back()->withErrors(trans('auth.reset_password_same_fail')); - } - - // 更新密码 - $ret = User::query()->where('id', $verify->user_id)->update(['password' => Hash::make($request->password)]); - if(!$ret){ - return Redirect::back()->withErrors(trans('auth.reset_password_fail')); - } - - // 置为已使用 - $verify->status = 1; - $verify->save(); - - return Redirect::back()->with('successMsg', trans('auth.reset_password_new')); - }else{ - $verify = Verify::type(1)->where('token', $token)->first(); - if(!$verify){ - return Redirect::to('login'); - }elseif(time()-strtotime($verify->created_at) >= 1800){ - // 置为已失效 - $verify->status = 2; - $verify->save(); - } - - // 重新获取一遍verify - $view['verify'] = Verify::type(1)->where('token', $token)->first(); - - return Response::view('auth.reset', $view); - } - } - - // 激活账号页 - public function activeUser(Request $request) - { - if($request->isMethod('POST')){ - $this->validate($request, [ - 'username' => 'required|email|exists:user,username' - ], [ - 'username.required' => trans('auth.email_null'), - 'username.email' => trans('auth.email_legitimate'), - 'username.exists' => trans('auth.email_notExist') - ]); - - // 是否开启账号激活 - if(!self::$systemConfig['is_active_register']){ - return Redirect::back()->withInput()->withErrors(trans('auth.active_close', ['email' => self::$systemConfig['admin_email']])); - } - - // 查找账号 - $user = User::query()->where('username', $request->username)->first(); - if($user->status < 0){ - return Redirect::back()->withErrors(trans('auth.login_ban', ['email' => self::$systemConfig['admin_email']])); - }elseif($user->status > 0){ - return Redirect::back()->withErrors(trans('auth.email_normal')); - } - - // 24小时内激活次数限制 - $activeTimes = 0; - if(Cache::has('activeUser_'.md5($request->username))){ - $activeTimes = Cache::get('activeUser_'.md5($request->username)); - if($activeTimes >= self::$systemConfig['active_times']){ - return Redirect::back()->withErrors(trans('auth.active_limit', ['time' => self::$systemConfig['admin_email']])); - } - } - - // 生成激活账号的地址 - $token = $this->addVerifyUrl($user->id, $request->username); - - // 发送邮件 - $activeUserUrl = self::$systemConfig['website_url'].'/active/'.$token; - - $logId = Helpers::addEmailLog($request->username, '激活账号', '请求地址:'.$activeUserUrl); - Mail::to($request->username)->send(new activeUser($logId, $activeUserUrl)); - - Cache::put('activeUser_'.md5($request->username), $activeTimes+1, 1440); - - return Redirect::back()->with('successMsg', trans('auth.register_success_tip')); - }else{ - return Response::view('auth.activeUser'); - } - } - - // 激活账号 - public function active(Request $request, $token) - { - if(!$token){ - return Redirect::to('login'); - } - - $verify = Verify::type(1)->with('user')->where('token', $token)->first(); - if(!$verify){ - return Redirect::to('login'); - }elseif(empty($verify->user)){ - Session::flash('errorMsg', trans('auth.overtime')); - - return Response::view('auth.active'); - }elseif($verify->status > 0){ - Session::flash('errorMsg', trans('auth.overtime')); - - return Response::view('auth.active'); - }elseif($verify->user->status != 0){ - Session::flash('errorMsg', trans('auth.email_normal')); - - return Response::view('auth.active'); - }elseif(time()-strtotime($verify->created_at) >= 1800){ - Session::flash('errorMsg', trans('auth.overtime')); - - // 置为已失效 - $verify->status = 2; - $verify->save(); - - return Response::view('auth.active'); - } - - // 更新账号状态 - $ret = User::query()->where('id', $verify->user_id)->update(['status' => 1]); - if(!$ret){ - Session::flash('errorMsg', trans('auth.active_fail')); - - return Redirect::back(); - } - - // 置为已使用 - $verify->status = 1; - $verify->save(); - - // 账号激活后给邀请人送流量 - if($verify->user->referral_uid){ - $transfer_enable = self::$systemConfig['referral_traffic']*1048576; - - User::query()->where('id', $verify->user->referral_uid)->increment('transfer_enable', $transfer_enable); - User::query()->where('id', $verify->user->referral_uid)->update(['enable' => 1]); - } - - Session::flash('successMsg', trans('auth.active_success')); - - return Response::view('auth.active'); - } - - // 发送注册验证码 - public function sendCode(Request $request) - { - $validator = Validator::make($request->all(), [ - 'username' => 'required|email|unique:user' - ], [ - 'username.required' => trans('auth.email_null'), - 'username.email' => trans('auth.email_legitimate'), - 'username.unique' => trans('auth.email_exist') - ]); - - if($validator->fails()){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => $validator->getMessageBag()->first()]); - } - - // 校验域名邮箱黑白名单 - if(self::$systemConfig['sensitiveType']){ - // 校验域名邮箱是否在黑名单中 - $sensitiveWords = $this->sensitiveWords(1); - $usernameSuffix = explode('@', $request->username); // 提取邮箱后缀 - if(in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.email_banned')]); - } - }else{ - $sensitiveWords = $this->sensitiveWords(2); - $usernameSuffix = explode('@', $request->username); // 提取邮箱后缀 - if(!in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.email_invalid')]); - } - } - - // 是否开启注册发送验证码 - if(!self::$systemConfig['is_verify_register']){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.captcha_close')]); - } - - // 防刷机制 - if(Cache::has('send_verify_code_'.md5(getClientIP()))){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.register_anti')]); - } - - // 发送邮件 - $code = makeRandStr(6, TRUE); - $logId = Helpers::addEmailLog($request->username, '发送注册验证码', '验证码:'.$code); - Mail::to($request->username)->send(new sendVerifyCode($logId, $code)); - - $this->addVerifyCode($request->username, $code); - - Cache::put('send_verify_code_'.md5(getClientIP()), getClientIP(), 1); - - return Response::json(['status' => 'success', 'data' => '', 'message' => trans('auth.captcha_send')]); - } - - // 公开的邀请码列表 - public function free(Request $request) - { - $view['inviteList'] = Invite::query()->where('uid', 0)->where('status', 0)->paginate(); - - return Response::view('auth.free', $view); - } - - // 切换语言 - public function switchLang(Request $request, $locale) - { - Session::put("locale", $locale); - - return Redirect::back(); - } - /** * 添加用户登录日志 * @@ -686,6 +184,231 @@ class AuthController extends Controller $log->save(); } + // 退出 + public function logout() + { + Auth::logout(); + + return Redirect::to('login'); + } + + // 注册 + public function register(Request $request) + { + $cacheKey = 'register_times_'.md5(getClientIp()); // 注册限制缓存key + + if($request->isMethod('POST')){ + $this->validate($request, [ + 'username' => 'required|email|unique:user', + 'password' => 'required|min:6', + 'confirmPassword' => 'required|same:password', + 'term' => 'accepted' + ], [ + 'username.required' => trans('auth.email_null'), + 'username.email' => trans('auth.email_legitimate'), + 'username.unique' => trans('auth.email_exist'), + 'password.required' => trans('auth.password_null'), + 'password.min' => trans('auth.password_limit'), + 'confirmPassword.required' => trans('auth.confirm_password'), + 'confirmPassword.same' => trans('auth.password_same'), + 'term.accepted' => trans('auth.unaccepted') + ]); + + $username = $request->input('username'); + $password = $request->input('password'); + $register_token = $request->input('register_token'); + $code = $request->input('code'); + $verify_code = $request->input('verify_code'); + $captcha = $request->input('captcha'); + $aff = intval($request->input('aff')); + + // 防止重复提交 + if($register_token != Session::get('register_token')){ + return Redirect::back()->withInput()->withErrors(trans('auth.repeat_request')); + }else{ + Session::forget('register_token'); + } + + // 是否开启注册 + if(!self::$systemConfig['is_register']){ + return Redirect::back()->withErrors(trans('auth.register_close')); + } + + // 校验域名邮箱黑白名单 + if(self::$systemConfig['sensitiveType']){ + // 校验域名邮箱是否在黑名单中 + $sensitiveWords = $this->sensitiveWords(1); + $usernameSuffix = explode('@', $username); // 提取邮箱后缀 + if(in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ + return Redirect::back()->withInput()->withErrors(trans('auth.email_banned')); + } + }else{ + $sensitiveWords = $this->sensitiveWords(2); + $usernameSuffix = explode('@', $username); // 提取邮箱后缀 + if(!in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ + return Redirect::back()->withInput()->withErrors(trans('auth.email_invalid')); + } + } + + // 如果需要邀请注册 + if(self::$systemConfig['is_invite_register']){ + // 必须使用邀请码 + if(self::$systemConfig['is_invite_register'] == 2 && !$code){ + return Redirect::back()->withInput()->withErrors(trans('auth.code_null')); + } + + // 校验邀请码合法性 + if($code){ + $codeEnable = Invite::query()->where('code', $code)->where('status', 0)->doesntExist(); + if($codeEnable){ + return Redirect::back()->withInput($request->except(['code']))->withErrors(trans('auth.code_error')); + } + } + } + + // 如果开启注册发送验证码 + if(self::$systemConfig['is_verify_register']){ + if(!$verify_code){ + return Redirect::back()->withInput($request->except(['verify_code']))->withErrors(trans('auth.captcha_null')); + }else{ + $verifyCode = VerifyCode::query()->where('username', $username)->where('code', $verify_code)->where('status', 0)->first(); + if(!$verifyCode){ + return Redirect::back()->withInput($request->except(['verify_code']))->withErrors(trans('auth.captcha_overtime')); + } + + $verifyCode->status = 1; + $verifyCode->save(); + } + } + + // 是否校验验证码 + switch(self::$systemConfig['is_captcha']){ + case 1: // 默认图形验证码 + if(!Captcha::check($captcha)){ + return Redirect::back()->withInput()->withErrors(trans('auth.captcha_error')); + } + break; + case 2: // Geetest + $result = $this->validate($request, [ + 'geetest_challenge' => 'required|geetest' + ], [ + 'geetest' => trans('auth.captcha_fail') + ]); + + if(!$result){ + return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); + } + break; + case 3: // Google reCAPTCHA + $result = $this->validate($request, [ + 'g-recaptcha-response' => 'required|NoCaptcha' + ]); + + if(!$result){ + return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); + } + break; + default: // 不启用验证码 + break; + } + + // 24小时内同IP注册限制 + if(self::$systemConfig['register_ip_limit']){ + if(Cache::has($cacheKey)){ + $registerTimes = Cache::get($cacheKey); + if($registerTimes >= self::$systemConfig['register_ip_limit']){ + return Redirect::back()->withInput($request->except(['code']))->withErrors(trans('auth.register_anti')); + } + } + } + + // 获取可用端口 + $port = self::$systemConfig['is_rand_port']? Helpers::getRandPort() : Helpers::getOnlyPort(); + if($port > self::$systemConfig['max_port']){ + return Redirect::back()->withInput()->withErrors(trans('auth.register_close')); + } + + // 获取aff + $affArr = $this->getAff($code, $aff); + $referral_uid = $affArr['referral_uid']; + + $transfer_enable = 1048576*(self::$systemConfig['default_traffic']+($referral_uid? self::$systemConfig['referral_traffic'] : 0)); + + // 创建新用户 + $uid = Helpers::addUser($username, Hash::make($password), $transfer_enable, self::$systemConfig['default_days'], $referral_uid); + + // 注册失败,抛出异常 + if(!$uid){ + return Redirect::back()->withInput()->withErrors(trans('auth.register_fail')); + } + + // 生成订阅码 + $subscribe = new UserSubscribe(); + $subscribe->user_id = $uid; + $subscribe->code = Helpers::makeSubscribeCode(); + $subscribe->times = 0; + $subscribe->save(); + + // 注册次数+1 + if(Cache::has($cacheKey)){ + Cache::increment($cacheKey); + }else{ + Cache::put($cacheKey, 1, 86400); // 24小时 + } + + // 初始化默认标签 + if(strlen(self::$systemConfig['initial_labels_for_user'])){ + $labels = explode(',', self::$systemConfig['initial_labels_for_user']); + foreach($labels as $label){ + $userLabel = new UserLabel(); + $userLabel->user_id = $uid; + $userLabel->label_id = $label; + $userLabel->save(); + } + } + + // 更新邀请码 + if(self::$systemConfig['is_invite_register'] && $affArr['code_id']){ + Invite::query()->where('id', $affArr['code_id'])->update(['fuid' => $uid, 'status' => 1]); + } + + // 清除邀请人Cookie + Cookie::unqueue('register_aff'); + + // 邮箱验证码关闭情况下,发送激活邮件 + if(!self::$systemConfig['is_verify_register'] && self::$systemConfig['is_active_register']){ + // 生成激活账号的地址 + $token = $this->addVerifyUrl($uid, $username); + $activeUserUrl = self::$systemConfig['website_url'].'/active/'.$token; + + $logId = Helpers::addEmailLog($username, '注册激活', '请求地址:'.$activeUserUrl); + Mail::to($username)->send(new activeUser($logId, $activeUserUrl)); + + Session::flash('regSuccessMsg', trans('auth.register_active_tip')); + }else{ + // 则直接给推荐人加流量 + if($referral_uid){ + $referralUser = User::query()->where('id', $referral_uid)->first(); + if($referralUser){ + if($referralUser->expire_time >= date('Y-m-d')){ + User::query()->where('id', $referral_uid)->increment('transfer_enable', self::$systemConfig['referral_traffic']*1048576); + } + } + } + User::query()->where('id', $uid)->update(['status' => 1, 'enable' => 1]); + + Session::flash('regSuccessMsg', trans('auth.register_success')); + } + + return Redirect::to('login')->withInput(); + }else{ + $view['emailList'] = self::$systemConfig['sensitiveType']? NULL : SensitiveWords::query()->where('type', 2)->get(); + Session::put('register_token', makeRandStr(16)); + + return Response::view('auth.register', $view); + } + } + /** * 获取AFF * @@ -694,7 +417,7 @@ class AuthController extends Controller * * @return array */ - private function getAff($code = '', $aff = '') + private function getAff($code = '', $aff = NULL) { // 邀请人ID $referral_uid = 0; @@ -730,28 +453,7 @@ class AuthController extends Controller ]; } - // 写入生成激活账号验证记录 - private function addVerify($userId, $token) - { - $verify = new Verify(); - $verify->type = 1; - $verify->user_id = $userId; - $verify->token = $token; - $verify->status = 0; - $verify->save(); - } - - // 生成注册验证码 - private function addVerifyCode($username, $code) - { - $verify = new VerifyCode(); - $verify->username = $username; - $verify->code = $code; - $verify->status = 0; - $verify->save(); - } - - // 生成激活账号的地址 + // 生成申请的请求地址 private function addVerifyUrl($uid, $username) { $token = md5(self::$systemConfig['website_name'].$username.microtime()); @@ -764,4 +466,303 @@ class AuthController extends Controller return $token; } + + // 重设密码页 + public function resetPassword(Request $request) + { + if($request->isMethod('POST')){ + // 校验请求 + $this->validate($request, [ + 'username' => 'required|email' + ], [ + 'username.required' => trans('auth.email_null'), + 'username.email' => trans('auth.email_legitimate') + ]); + + $username = $request->input('username'); + + // 是否开启重设密码 + if(!self::$systemConfig['is_reset_password']){ + return Redirect::back()->withErrors(trans('auth.reset_password_close', ['email' => self::$systemConfig['webmaster_email']])); + } + + // 查找账号 + $user = User::query()->where('username', $username)->first(); + if(!$user){ + return Redirect::back()->withErrors(trans('auth.email_notExist')); + } + + // 24小时内重设密码次数限制 + $resetTimes = 0; + if(Cache::has('resetPassword_'.md5($username))){ + $resetTimes = Cache::get('resetPassword_'.md5($username)); + if($resetTimes >= self::$systemConfig['reset_password_times']){ + return Redirect::back()->withErrors(trans('auth.reset_password_limit', ['time' => self::$systemConfig['reset_password_times']])); + } + } + + // 生成取回密码的地址 + $token = $this->addVerifyUrl($user->id, $username); + + // 发送邮件 + $resetPasswordUrl = self::$systemConfig['website_url'].'/reset/'.$token; + + $logId = Helpers::addEmailLog($username, '重置密码', '请求地址:'.$resetPasswordUrl); + Mail::to($username)->send(new resetPassword($logId, $resetPasswordUrl)); + + Cache::put('resetPassword_'.md5($username), $resetTimes+1, 86400); + + return Redirect::back()->with('successMsg', trans('auth.reset_password_success_tip')); + }else{ + return Response::view('auth.resetPassword'); + } + } + + // 重设密码 + public function reset(Request $request, $token) + { + if(!$token){ + return Redirect::to('login'); + } + + if($request->isMethod('POST')){ + $this->validate($request, [ + 'password' => 'required|min:6', + 'confirmPassword' => 'required|same:password' + ], [ + 'password.required' => trans('auth.password_null'), + 'password.min' => trans('auth.password_limit'), + 'confirmPassword.required' => trans('auth.password_null'), + 'confirmPassword.min' => trans('auth.password_limit'), + 'confirmPassword.same' => trans('auth.password_same'), + ]); + $password = $request->input('password'); + // 校验账号 + $verify = Verify::type(1)->with('user')->where('token', $token)->first(); + if(!$verify){ + return Redirect::to('login'); + }elseif($verify->status == 1){ + return Redirect::back()->withErrors(trans('auth.overtime')); + }elseif($verify->user->status < 0){ + return Redirect::back()->withErrors(trans('auth.email_banned')); + }elseif(Hash::check($password, $verify->user->password)){ + return Redirect::back()->withErrors(trans('auth.reset_password_same_fail')); + } + + // 更新密码 + $ret = User::query()->where('id', $verify->user_id)->update(['password' => Hash::make($password)]); + if(!$ret){ + return Redirect::back()->withErrors(trans('auth.reset_password_fail')); + } + + // 置为已使用 + $verify->status = 1; + $verify->save(); + + return Redirect::back()->with('successMsg', trans('auth.reset_password_new')); + }else{ + $verify = Verify::type(1)->where('token', $token)->first(); + if(!$verify){ + return Redirect::to('login'); + }elseif(time()-strtotime($verify->created_at) >= 1800){ + // 置为已失效 + $verify->status = 2; + $verify->save(); + } + + // 重新获取一遍verify + $view['verify'] = Verify::type(1)->where('token', $token)->first(); + + return Response::view('auth.reset', $view); + } + } + + // 激活账号页 + public function activeUser(Request $request) + { + if($request->isMethod('POST')){ + $this->validate($request, [ + 'username' => 'required|email|exists:user,username' + ], [ + 'username.required' => trans('auth.email_null'), + 'username.email' => trans('auth.email_legitimate'), + 'username.exists' => trans('auth.email_notExist') + ]); + $username = $request->input('username'); + + // 是否开启账号激活 + if(!self::$systemConfig['is_active_register']){ + return Redirect::back()->withInput()->withErrors(trans('auth.active_close', ['email' => self::$systemConfig['webmaster_email']])); + } + + // 查找账号 + $user = User::query()->where('username', $username)->first(); + if($user->status < 0){ + return Redirect::back()->withErrors(trans('auth.login_ban', ['email' => self::$systemConfig['webmaster_email']])); + }elseif($user->status > 0){ + return Redirect::back()->withErrors(trans('auth.email_normal')); + } + + // 24小时内激活次数限制 + $activeTimes = 0; + if(Cache::has('activeUser_'.md5($username))){ + $activeTimes = Cache::get('activeUser_'.md5($username)); + if($activeTimes >= self::$systemConfig['active_times']){ + return Redirect::back()->withErrors(trans('auth.active_limit', ['time' => self::$systemConfig['webmaster_email']])); + } + } + + // 生成激活账号的地址 + $token = $this->addVerifyUrl($user->id, $username); + + // 发送邮件 + $activeUserUrl = self::$systemConfig['website_url'].'/active/'.$token; + + $logId = Helpers::addEmailLog($username, '激活账号', '请求地址:'.$activeUserUrl); + Mail::to($username)->send(new activeUser($logId, $activeUserUrl)); + + Cache::put('activeUser_'.md5($username), $activeTimes+1, 86400); + + return Redirect::back()->with('successMsg', trans('auth.register_active_tip')); + }else{ + return Response::view('auth.activeUser'); + } + } + + // 激活账号 + public function active($token) + { + if(!$token){ + return Redirect::to('login'); + } + + $verify = Verify::type(1)->with('user')->where('token', $token)->first(); + if(!$verify){ + return Redirect::to('login'); + }elseif(empty($verify->user)){ + Session::flash('errorMsg', trans('auth.overtime')); + + return Response::view('auth.active'); + }elseif($verify->status > 0){ + Session::flash('errorMsg', trans('auth.overtime')); + + return Response::view('auth.active'); + }elseif($verify->user->status != 0){ + Session::flash('errorMsg', trans('auth.email_normal')); + + return Response::view('auth.active'); + }elseif(time()-strtotime($verify->created_at) >= 1800){ + Session::flash('errorMsg', trans('auth.overtime')); + + // 置为已失效 + $verify->status = 2; + $verify->save(); + + return Response::view('auth.active'); + } + + // 更新账号状态 + $ret = User::query()->where('id', $verify->user_id)->update(['status' => 1]); + if(!$ret){ + Session::flash('errorMsg', trans('auth.active_fail')); + + return Redirect::back(); + } + + // 置为已使用 + $verify->status = 1; + $verify->save(); + + // 账号激活后给邀请人送流量 + if($verify->user->referral_uid){ + $transfer_enable = self::$systemConfig['referral_traffic']*1048576; + + User::query()->where('id', $verify->user->referral_uid)->increment('transfer_enable', $transfer_enable, ['enable' => 1]); + } + + Session::flash('successMsg', trans('auth.active_success')); + + return Response::view('auth.active'); + } + + // 发送注册验证码 + public function sendCode(Request $request) + { + $validator = Validator::make($request->all(), [ + 'username' => 'required|email|unique:user' + ], [ + 'username.required' => trans('auth.email_null'), + 'username.email' => trans('auth.email_legitimate'), + 'username.unique' => trans('auth.email_exist') + ]); + + $username = $request->input('username'); + + if($validator->fails()){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => $validator->getMessageBag()->first()]); + } + + // 校验域名邮箱黑白名单 + if(self::$systemConfig['sensitiveType']){ + // 校验域名邮箱是否在黑名单中 + $sensitiveWords = $this->sensitiveWords(1); + $usernameSuffix = explode('@', $username); // 提取邮箱后缀 + if(in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.email_banned')]); + } + }else{ + $sensitiveWords = $this->sensitiveWords(2); + $usernameSuffix = explode('@', $username); // 提取邮箱后缀 + if(!in_array(strtolower($usernameSuffix[1]), $sensitiveWords)){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.email_invalid')]); + } + } + + // 是否开启注册发送验证码 + if(!self::$systemConfig['is_verify_register']){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.captcha_close')]); + } + + // 防刷机制 + if(Cache::has('send_verify_code_'.md5(getClientIP()))){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => trans('auth.register_anti')]); + } + + // 发送邮件 + $code = makeRandStr(6, TRUE); + $logId = Helpers::addEmailLog($username, '发送注册验证码', '验证码:'.$code); + Mail::to($username)->send(new sendVerifyCode($logId, $code)); + + $this->addVerifyCode($username, $code); + + Cache::put('send_verify_code_'.md5(getClientIP()), getClientIP(), 60); + + return Response::json(['status' => 'success', 'data' => '', 'message' => trans('auth.captcha_send')]); + } + + // 生成注册验证码 + private function addVerifyCode($username, $code) + { + $verify = new VerifyCode(); + $verify->username = $username; + $verify->code = $code; + $verify->status = 0; + $verify->save(); + } + + // 公开的邀请码列表 + public function free() + { + $view['inviteList'] = Invite::query()->where('uid', 0)->where('status', 0)->paginate(); + + return Response::view('auth.free', $view); + } + + // 切换语言 + public function switchLang($locale) + { + Session::put("locale", $locale); + + return Redirect::back(); + } } \ No newline at end of file diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 4d517f9a..03c5e53b 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,9 +2,14 @@ namespace App\Http\Controllers; +use App\Components\Helpers; use App\Http\Models\ReferralLog; use App\Http\Models\SensitiveWords; +use App\Http\Models\SsGroup; +use App\Http\Models\SsNode; +use App\Http\Models\User; use App\Http\Models\UserBalanceLog; +use App\Http\Models\UserSubscribeLog; use Exception; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; @@ -18,19 +23,19 @@ class Controller extends BaseController // 生成随机密码 public function makePasswd() { - exit(makeRandStr()); + return makeRandStr(); } // 生成VmessId public function makeVmessId() { - exit(createGuid()); + return createGuid(); } // 生成网站安全码 public function makeSecurityCode() { - exit(strtolower(makeRandStr(8))); + return strtolower(makeRandStr(8)); } // 类似Linux中的tail命令 @@ -64,6 +69,8 @@ class Controller extends BaseController /** * 计算文件行数 + * @param $file + * @return int */ public function countLine($file) { @@ -136,7 +143,7 @@ class Controller extends BaseController // 获取敏感词 public function sensitiveWords($type) { - return SensitiveWords::query()->where('type',$type)->get()->pluck('words')->toArray(); + return SensitiveWords::query()->where('type', $type)->get()->pluck('words')->toArray(); } // 将Base64图片转换为本地图片并保存 @@ -164,4 +171,94 @@ class Controller extends BaseController return ''; } } + + /** + * 节点信息 + * + * @param int $uid 用户ID + * @param int $nodeId 节点ID + * @param int $infoType 信息类型:0为链接,1为文字 + * @return string + */ + function getNodeInfo($uid, $nodeId, $infoType) + { + $user = User::whereKey($uid)->first(); + $node = SsNode::whereKey($nodeId)->first(); + $scheme = NULL; + // 获取分组名称 + $group = SsGroup::query()->whereKey($node->group_id)->first(); + $host = $node->server? : $node->ip; + + if($node->type == 1){ + $group = $group? $group->name : Helpers::systemConfig()['website_name']; + $obfs_param = $user->obfs_param? : $node->obfs_param; + if($node->single){ + $port = $node->port; + $protocol = $node->protocol; + $method = $node->method; + $obfs = $node->obfs; + $passwd = $node->passwd; + $protocol_param = $user->port.':'.$user->passwd; + }else{ + $port = $user->port; + $protocol = $user->protocol; + $method = $user->method; + $obfs = $user->obfs; + $passwd = $user->passwd; + $protocol_param = $user->protocol_param; + } + if($infoType != 1){ + // 生成ss/ssr scheme + if($node->compatible){ + $data = 'ss://'.base64url_encode($method.':'.$passwd.'@'.$host.':'.$port).'#'.$group; + }else{ + $data = 'ssr://'.base64url_encode($host.':'.$port.':'.$protocol.':'.$method.':'.$obfs.':'.base64url_encode($passwd).'/?obfsparam='.base64url_encode($obfs_param).'&protoparam='.base64url_encode($protocol_param).'&remarks='.base64url_encode($node->name).'&group='.base64url_encode($group).'&udpport=0&uot=0'); + } + }else{ + // 生成文本配置信息 + $data = "服务器:".$host.PHP_EOL. + "IPv6:".($node->ipv6? : '').PHP_EOL. + "远程端口:".$port.PHP_EOL. + "密码:".$passwd.PHP_EOL. + "加密方法:".$method.PHP_EOL. + "路由:绕过局域网及中国大陆地址".PHP_EOL. + "协议:".$protocol.PHP_EOL. + "协议参数:".$protocol_param.PHP_EOL. + "混淆方式:".$obfs.PHP_EOL. + "混淆参数:".$obfs_param.PHP_EOL. + "本地端口:1080".PHP_EOL; + } + }else{ + // 生成v2ray scheme + if($infoType != 1){ + // 生成v2ray scheme + $data = 'vmess://'.base64_encode(json_encode(["v" => "2", "ps" => $node->name, "add" => $host, "port" => $node->v2_port, "id" => $user->vmess_id, "aid" => $node->v2_alter_id, "net" => $node->v2_net, "type" => $node->v2_type, "host" => $node->v2_host, "path" => $node->v2_path, "tls" => $node->v2_tls? "tls" : ""], JSON_PRETTY_PRINT)); + }else{ + $data = "服务器:".$host.PHP_EOL. + "IPv6:".($node->ipv6? : "").PHP_EOL. + "端口:".$node->v2_port.PHP_EOL. + "加密方式:".$node->v2_method.PHP_EOL. + "用户ID:".$user->vmess_id.PHP_EOL. + "额外ID:".$node->v2_alter_id.PHP_EOL. + "传输协议:".$node->v2_net.PHP_EOL. + "伪装类型:".$node->v2_type.PHP_EOL. + "伪装域名:".($node->v2_host? : "").PHP_EOL. + "路径:".($node->v2_path? : "").PHP_EOL. + "TLS:".($node->v2_tls? "tls" : "").PHP_EOL; + } + } + + return $data; + } + + // 写入订阅访问日志 + public function log($subscribeId, $ip, $headers) + { + $log = new UserSubscribeLog(); + $log->sid = $subscribeId; + $log->request_ip = $ip; + $log->request_time = date('Y-m-d H:i:s'); + $log->request_header = $headers; + $log->save(); + } } diff --git a/app/Http/Controllers/CouponController.php b/app/Http/Controllers/CouponController.php index 8083add1..13d4fe5e 100644 --- a/app/Http/Controllers/CouponController.php +++ b/app/Http/Controllers/CouponController.php @@ -53,6 +53,8 @@ class CouponController extends Controller if($request->isMethod('POST')){ $this->validate($request, ['name' => 'required', 'type' => 'required|integer|between:1,3', 'usage' => 'required|integer|between:1,2', 'num' => 'required|integer|min:1', 'amount' => 'required_unless:type,2|numeric|min:0.01|nullable', 'discount' => 'required_if:type,2|numeric|between:1,9.9|nullable', 'available_start' => 'required|date|before_or_equal:available_end', 'available_end' => 'required|date|after_or_equal:available_start',], ['name.required' => '请填入卡券名称', 'type.required' => '请选择卡券类型', 'type.integer' => '卡券类型不合法,请重选', 'type.between' => '卡券类型不合法,请重选', 'usage.required' => '请选择卡券用途', 'usage.integer' => '卡券用途不合法,请重选', 'usage.between' => '卡券用途不合法,请重选', 'num.required' => '请填写卡券数量', 'num.integer' => '卡券数量不合法', 'num.min' => '卡券数量不合法,最小1', 'amount.required_unless' => '请填入卡券面值', 'amount.numeric' => '卡券金额不合法', 'amount.min' => '卡券金额不合法,最小0.01', 'discount.required_if' => '请填入卡券折扣', 'discount.numeric' => '卡券折扣不合法', 'discount.between' => '卡券折扣不合法,有效范围:1 ~ 9.9', 'available_start.required' => '请填入有效期', 'available_start.date' => '有效期不合法', 'available_start.before_or_equal' => '有效期不合法', 'available_end.required' => '请填入有效期', 'available_end.date' => '有效期不合法', 'available_end.after_or_equal' => '有效期不合法']); + $type = $request->input('type'); + // 优惠卷LOGO if($request->hasFile('logo')){ $file = $request->file('logo'); @@ -72,18 +74,18 @@ class CouponController extends Controller DB::beginTransaction(); try{ - for($i = 0; $i < $request->num; $i++){ + for($i = 0; $i < $request->input('num'); $i++){ $obj = new Coupon(); - $obj->name = $request->name; - $obj->sn = empty($request->sn)? strtoupper(makeRandStr(8)) : $request->sn; + $obj->name = $request->input('name'); + $obj->sn = $request->input('sn')? : strtoupper(makeRandStr(8)); $obj->logo = $logo; - $obj->type = $request->type; - $obj->usage = $request->usage; - $obj->amount = $request->type == 2? 0 : $request->amount; - $obj->discount = $request->type != 2? 0 : $request->discount; - $obj->rule = $request->rule; - $obj->available_start = strtotime(date('Y-m-d 00:00:00', strtotime($request->available_start))); - $obj->available_end = strtotime(date('Y-m-d 23:59:59', strtotime($request->available_end))); + $obj->type = $type; + $obj->usage = $request->input('usage'); + $obj->amount = $type == 2? 0 : $request->input('amount'); + $obj->discount = $type != 2? 0 : $request->input('discount'); + $obj->rule = $request->input('rule'); + $obj->available_start = strtotime(date('Y-m-d 00:00:00', strtotime($request->input('available_start')))); + $obj->available_end = strtotime(date('Y-m-d 23:59:59', strtotime($request->input('available_end')))); $obj->status = 0; $obj->save(); } @@ -112,7 +114,7 @@ class CouponController extends Controller } // 导出卡券 - public function exportCoupon(Request $request) + public function exportCoupon() { $voucherList = Coupon::type(1)->where('status', 0)->get(); $discountCouponList = Coupon::type(2)->where('status', 0)->get(); diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index e2e79d5a..5beb4200 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -215,11 +215,12 @@ class PaymentController extends Controller return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建订单失败:'.$e->getMessage()]); } + return Response::json(['status' => 'fail', 'data' => '', 'message' => '未知错误']); } // 支付单详情 - public function detail(Request $request, $sn) + public function detail($sn) { $view['payment'] = Payment::uid()->with(['order', 'order.goods'])->where('sn', $sn)->firstOrFail(); @@ -235,7 +236,7 @@ class PaymentController extends Controller return Response::json(['status' => 'error', 'data' => '', 'message' => $validator->getMessageBag()->first()]); } - $payment = Payment::uid()->where('sn', $request->sn)->first(); + $payment = Payment::uid()->where('sn', $request->input('sn'))->first(); if($payment->status > 0){ return Response::json(['status' => 'success', 'data' => '', 'message' => '支付成功']); }elseif($payment->status < 0){ diff --git a/app/Http/Controllers/SensitiveWordsController.php b/app/Http/Controllers/SensitiveWordsController.php index 9d4309b9..b76e7e29 100644 --- a/app/Http/Controllers/SensitiveWordsController.php +++ b/app/Http/Controllers/SensitiveWordsController.php @@ -17,7 +17,7 @@ use Validator; class SensitiveWordsController extends Controller { // 敏感词列表 - public function sensitiveWordsList(Request $request) + public function sensitiveWordsList() { $view['list'] = SensitiveWords::query()->orderBy('id', 'desc')->paginate(15); @@ -39,8 +39,8 @@ class SensitiveWordsController extends Controller } $obj = new SensitiveWords(); - $obj->type = $request->type; - $obj->words = strtolower($request->words); + $obj->type = $request->input('type'); + $obj->words = strtolower($request->input('words')); $obj->save(); if($obj->id){ return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']); @@ -52,7 +52,7 @@ class SensitiveWordsController extends Controller // 删除敏感词 public function delSensitiveWords(Request $request) { - $result = SensitiveWords::query()->where('id', $request->id)->delete(); + $result = SensitiveWords::query()->where('id', $request->input('id'))->delete(); if($result){ return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); }else{ diff --git a/app/Http/Controllers/ShopController.php b/app/Http/Controllers/ShopController.php index 00186a63..8abbeb2a 100644 --- a/app/Http/Controllers/ShopController.php +++ b/app/Http/Controllers/ShopController.php @@ -49,16 +49,21 @@ class ShopController extends Controller if($request->isMethod('POST')){ $this->validate($request, ['name' => 'required', 'traffic' => 'required_unless:type,3|integer|min:1024|max:10240000|nullable', 'price' => 'required|numeric|min:0', 'type' => 'required', 'days' => 'required|integer',], ['name.required' => '请填入名称', 'traffic.required_unless' => '请填入流量', 'traffic.integer' => '内含流量必须是整数值', 'traffic.min' => '内含流量不能低于1MB', 'traffic.max' => '内含流量不能超过10TB', 'price.required' => '请填入价格', 'price.numeric' => '价格不合法', 'price.min' => '价格最低0', 'type.required' => '请选择类型', 'days.required' => '请填入有效期', 'days.integer' => '有效期不合法',]); + $type = $request->input('type'); + $price = $request->input('price'); + $renew = $request->input('renew'); + $days = $request->input('days'); + // 套餐必须有价格 - if($request->type == 2 && $request->price <= 0){ + if($type == 2 && $price <= 0){ return Redirect::back()->withInput()->withErrors('套餐价格必须大于0'); } - if($request->renew < 0){ + if($renew < 0){ return Redirect::back()->withInput()->withErrors('流量重置价格必须大于0'); } // 套餐有效天数必须大于30天 - if($request->type == 2 && $request->days < 1){ + if($type == 2 && $days < 1){ return Redirect::back()->withInput()->withErrors('套餐有效天数必须不能少于1天'); } @@ -82,20 +87,20 @@ class ShopController extends Controller DB::beginTransaction(); try{ $goods = new Goods(); - $goods->name = $request->name; - $goods->info = $request->info; - $goods->desc = $request->desc; + $goods->name = $request->input('name'); + $goods->info = $request->input('info'); + $goods->desc = $request->input('desc'); $goods->logo = $logo; - $goods->traffic = $request->traffic; - $goods->price = round($request->price, 2); - $goods->renew = round($request->renew, 2); - $goods->type = $request->type; - $goods->days = $request->days; - $goods->color = $request->color; - $goods->sort = $request->sort; - $goods->is_hot = $request->is_hot; - $goods->limit_num = $request->limit_num; - $goods->status = $request->status; + $goods->traffic = $request->input('traffic'); + $goods->price = round($price, 2); + $goods->renew = round($renew, 2); + $goods->type = $type; + $goods->days = $days; + $goods->color = $request->input('color'); + $goods->sort = $request->input('sort'); + $goods->is_hot = $request->input('is_hot'); + $goods->limit_num = $request->input('limit_num'); + $goods->status = $request->input('status'); $goods->save(); // 生成SKU diff --git a/app/Http/Controllers/SubscribeController.php b/app/Http/Controllers/SubscribeController.php index 9d2d7230..9b90262b 100644 --- a/app/Http/Controllers/SubscribeController.php +++ b/app/Http/Controllers/SubscribeController.php @@ -4,7 +4,6 @@ namespace App\Http\Controllers; use App\Components\Helpers; use App\Http\Models\Device; -use App\Http\Models\SsGroup; use App\Http\Models\SsNode; use App\Http\Models\User; use App\Http\Models\UserLabel; @@ -185,7 +184,7 @@ class SubscribeController extends Controller shuffle($nodeList); } - $scheme = ''; + $scheme = NULL; // 展示到期时间和剩余流量 if(self::$systemConfig['is_custom_subscribe']){ @@ -198,49 +197,7 @@ class SubscribeController extends Controller if(self::$systemConfig['subscribe_max'] && $key >= self::$systemConfig['subscribe_max']){ break; } - // 获取分组名称 - $host = $node['server']? : $node['ip']; - if($node['type'] == 1){ - $group = SsGroup::query()->where('id', $node['group_id'])->first(); - $group = empty($group)? Helpers::systemConfig()['website_name'] : $group->name; - $obfs_param = $user->obfs_param? : $node['obfs_param']; - - if($node['single']){ - $port = $node['port']; - $protocol = $node['protocol']; - $method = $node['method']; - $obfs = $node['obfs']; - $passwd = $node['passwd']; - $protocol_param = $user->port.':'.$user->passwd; - }else{ - $port = $user->port; - $protocol = $user->protocol; - $method = $user->method; - $obfs = $user->obfs; - $passwd = $user->passwd; - $protocol_param = $user->protocol_param; - } - - // 生成ssr scheme - $scheme .= 'ssr://'.base64url_encode($host.':'.$port.':'.$protocol.':'.$method.':'.$obfs.':'.base64url_encode($passwd).'/?obfsparam='.base64url_encode($obfs_param).'&protoparam='.base64url_encode($protocol_param).'&remarks='.base64url_encode($node['name']).'&group='.base64url_encode($group).'&udpport=0&uot=0')."\n"; - }else{ - // 生成v2ray scheme - $v2_json = [ - "v" => "2", - "ps" => $node['name'], - "add" => $host, - "port" => $node['v2_port'], - "id" => $user->vmess_id, - "aid" => $node['v2_alter_id'], - "net" => $node['v2_net'], - "type" => $node['v2_type'], - "host" => $node['v2_host'], - "path" => $node['v2_path'], - "tls" => $node['v2_tls']? "tls" : "" - ]; - - $scheme .= 'vmess://'.base64url_encode(json_encode($v2_json, JSON_PRETTY_PRINT))."\n"; - } + $scheme .= $this->getNodeInfo($user->id, $node['id'], 0).PHP_EOL; } // 适配Quantumult的自定义订阅头 @@ -257,17 +214,6 @@ class SubscribeController extends Controller } } - // 写入订阅访问日志 - private function log($subscribeId, $ip, $headers) - { - $log = new UserSubscribeLog(); - $log->sid = $subscribeId; - $log->request_ip = $ip; - $log->request_time = date('Y-m-d H:i:s'); - $log->request_header = $headers; - $log->save(); - } - // 抛出无可用的节点信息,用于兼容防止客户端订阅失败 private function noneNode() { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index f428a69d..4a7e8a49 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -12,7 +12,7 @@ use App\Http\Models\Invite; use App\Http\Models\Order; use App\Http\Models\ReferralApply; use App\Http\Models\ReferralLog; -use App\Http\Models\SsGroup; +use App\Http\Models\SsNode; use App\Http\Models\SsNodeInfo; use App\Http\Models\SsNodeLabel; use App\Http\Models\Ticket; @@ -56,7 +56,7 @@ class UserController extends Controller self::$systemConfig = Helpers::systemConfig(); } - public function index(Request $request) + public function index() { $totalTransfer = Auth::user()->transfer_enable; $usedTransfer = Auth::user()->u+Auth::user()->d; @@ -123,7 +123,7 @@ class UserController extends Controller } // 签到 - public function checkIn(Request $request) + public function checkIn() { // 系统开启登录加积分功能才可以签到 if(!self::$systemConfig['is_checkin']){ @@ -145,7 +145,7 @@ class UserController extends Controller Helpers::addUserTrafficModifyLog(Auth::user()->id, 0, Auth::user()->transfer_enable, Auth::user()->transfer_enable+$traffic*1048576, '[签到]'); // 多久后可以再签到 - $ttl = self::$systemConfig['traffic_limit_time']? self::$systemConfig['traffic_limit_time'] : 1440; + $ttl = self::$systemConfig['traffic_limit_time']? self::$systemConfig['traffic_limit_time']*60 : 86400; Cache::put('userCheckIn_'.Auth::user()->id, '1', $ttl); return Response::json(['status' => 'success', 'message' => '签到成功,系统送您 '.$traffic.'M 流量']); @@ -154,88 +154,31 @@ class UserController extends Controller // 节点列表 public function nodeList(Request $request) { - // 节点列表 - $userLabelIds = UserLabel::uid()->pluck('label_id'); - if(empty($userLabelIds)){ - $view['nodeList'] = []; - $view['allNodes'] = ''; + if($request->isMethod('POST')){ + $node_id = $request->input('id'); + $infoType = $request->input('type'); - return Response::view('user.nodeList', $view); - } + $node = SsNode::query()->whereKey($node_id)->first(); + // 生成节点信息 + $proxyType = $node->type == 1? ($node->compatible? 'SS' : 'SSR') : 'V2Ray'; + $data = $this->getNodeInfo(Auth::user()->id, $node->id, $infoType != 'text'? 0 : 1); - // 获取当前用户可用节点 - $nodeList = DB::table('ss_node')->selectRaw('ss_node.*')->leftJoin('ss_node_label', 'ss_node.id', '=', 'ss_node_label.node_id')->whereIn('ss_node_label.label_id', $userLabelIds)->where('ss_node.status', 1)->groupBy('ss_node.id')->orderBy('ss_node.sort', 'desc')->orderBy('ss_node.id', 'asc')->get(); + return Response::json(['status' => 'success', 'data' => $data, 'title' => $proxyType]); + }else{ + // 获取当前用户标签 + $userLabelIds = UserLabel::uid()->pluck('label_id'); + // 获取当前用户可用节点 + $nodeList = SsNode::query()->selectRaw('ss_node.*')->leftJoin('ss_node_label', 'ss_node.id', '=', 'ss_node_label.node_id')->whereIn('ss_node_label.label_id', $userLabelIds)->where('ss_node.status', 1)->groupBy('ss_node.id')->orderBy('ss_node.sort', 'desc')->orderBy('ss_node.id', 'asc')->get(); - $allNodes = ''; // 全部节点SSR链接,用于一键复制所有节点 - foreach($nodeList as $node){ - // 获取分组名称 - $group = SsGroup::query()->where('id', $node->group_id)->first(); - $host = $node->server? : $node->ip; - if($node->type == 1){ - $obfs_param = Auth::user()->obfs_param? : $node->obfs_param; - $group = empty($group)? Helpers::systemConfig()['website_name'] : $group->name; - if($node->single){ - $port = $node->port; - $protocol = $node->protocol; - $method = $node->method; - $obfs = $node->obfs; - $passwd = $node->passwd; - $protocol_param = Auth::user()->port.':'.Auth::user()->passwd; - }else{ - $port = Auth::user()->port; - $protocol = Auth::user()->protocol; - $method = Auth::user()->method; - $obfs = Auth::user()->obfs; - $passwd = Auth::user()->passwd; - $protocol_param = Auth::user()->protocol_param; - } - - // 生成ssr scheme - $node->ssr_scheme = 'ssr://'.base64url_encode($host.':'.$port.':'.$protocol.':'.$method.':'.$obfs.':'.base64url_encode($passwd).'/?obfsparam='.base64url_encode($obfs_param).'&protoparam='.base64url_encode($protocol_param).'&remarks='.base64url_encode($node->name).'&group='.base64url_encode($group).'&udpport=0&uot=0'); - $allNodes .= $node->ssr_scheme.'|'; - // 生成ss scheme - $node->ss_scheme = $node->compatible? 'ss://'.base64url_encode(Auth::user()->method.':'.Auth::user()->passwd.'@'.$host.':'.Auth::user()->port).'#'.$group : ''; - - // 生成文本配置信息 - $node->txt = "服务器:".$host.PHP_EOL. - ($node->ipv6? "IPv6:".$node->ipv6.PHP_EOL : ''). - "远程端口:".$port.PHP_EOL. - "密码:".$passwd.PHP_EOL. - "加密方法:".$method.PHP_EOL. - "路由:绕过局域网及中国大陆地址".PHP_EOL. - "协议:".$protocol.PHP_EOL. - "协议参数:".$protocol_param.PHP_EOL. - "混淆方式:".$obfs.PHP_EOL. - "混淆参数:".$obfs_param.PHP_EOL. - "本地端口:1080".PHP_EOL; - }else{ - // 生成v2ray scheme - $node->v2_scheme = 'vmess://'.base64_encode(json_encode(["v" => "2", "ps" => $node->name, "add" => $node->server? : $node->ip, "port" => $node->v2_port, "id" => Auth::user()->vmess_id, "aid" => $node->v2_alter_id, "net" => $node->v2_net, "type" => $node->v2_type, "host" => $node->v2_host, "path" => $node->v2_path, "tls" => $node->v2_tls == 1? "tls" : ""], JSON_PRETTY_PRINT)); - - // 生成文本配置信息 - $node->txt = "服务器:".$host.PHP_EOL. - ($node->ipv6? "IPv6:".$node->ipv6.PHP_EOL : ''). - "端口:".$node->v2_port.PHP_EOL. - "加密方式:".$node->v2_method.PHP_EOL. - "用户ID:".Auth::user()->vmess_id.PHP_EOL. - "额外ID:".$node->v2_alter_id.PHP_EOL. - "传输协议:".$node->v2_net.PHP_EOL. - "伪装类型:".$node->v2_type.PHP_EOL. - ($node->v2_host? "伪装域名:".$node->v2_host.PHP_EOL : ""). - ($node->v2_path? "路径:".$node->v2_path.PHP_EOL : ""). - ($node->v2_tls? "TLS:tls".PHP_EOL : ""); + foreach($nodeList as $node){ + // 节点在线状态 + $node->offline = SsNodeInfo::query()->where('node_id', $node->id)->where('log_time', '>=', strtotime("-10 minutes"))->orderBy('id', 'desc')->doesntExist(); + // 节点标签 + $node->labels = SsNodeLabel::query()->where('node_id', $node->id)->first(); } - - // 节点在线状态 - $nodeInfo = SsNodeInfo::query()->where('node_id', $node->id)->where('log_time', '>=', strtotime("-10 minutes"))->orderBy('id', 'desc')->first(); - $node->online_status = $nodeInfo? 1 : 0; - - // 节点标签 - $node->labels = SsNodeLabel::query()->with('labelInfo')->where('node_id', $node->id)->first(); + $view['nodeList'] = $nodeList? : []; } - $view['allNodes'] = rtrim($allNodes, "|"); - $view['nodeList'] = $nodeList; return Response::view('user.nodeList', $view); } @@ -243,7 +186,7 @@ class UserController extends Controller // 公告详情 public function article(Request $request) { - $view['info'] = Article::query()->findOrFail($request->id); + $view['info'] = Article::query()->findOrFail($request->input('id')); return Response::view('user.article', $view); } @@ -490,7 +433,7 @@ class UserController extends Controller } // 邀请码 - public function invite(Request $request) + public function invite() { if(Order::uid()->where('status', 2)->where('is_expire', 0)->where('origin_amount', '>', 0)->doesntExist()){ return Response::view('auth.error', ['message' => '本功能对非付费用户禁用!请 返 回']); @@ -505,7 +448,7 @@ class UserController extends Controller } // 生成邀请码 - public function makeInvite(Request $request) + public function makeInvite() { if(Auth::user()->invite_num <= 0){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '生成失败:已无邀请码生成名额']); @@ -558,7 +501,7 @@ class UserController extends Controller } // 购买服务 - public function buy(Request $request, $goods_id) + public function buy($goods_id) { $goods = Goods::query()->where('id', $goods_id)->where('status', 1)->first(); if(empty($goods)){ @@ -575,7 +518,7 @@ class UserController extends Controller } // 推广返利 - public function referral(Request $request) + public function referral() { if(Order::uid()->where('status', 2)->where('is_expire', 0)->where('origin_amount', '>', 0)->doesntExist()){ return Response::view('auth.error', ['message' => '本功能对非付费用户禁用!请 返 回']); @@ -594,7 +537,7 @@ class UserController extends Controller } // 申请提现 - public function extractMoney(Request $request) + public function extractMoney() { // 判断账户是否过期 if(Auth::user()->expire_time < date('Y-m-d')){ @@ -635,7 +578,7 @@ class UserController extends Controller } // 帮助中心 - public function help(Request $request) + public function help() { $view['articleList'] = Article::type(1)->orderBy('sort', 'desc')->orderBy('id', 'desc')->limit(10)->paginate(5); @@ -649,7 +592,7 @@ class UserController extends Controller $view['subscribe_status'] = $subscribe->status; $subscribe_link = (self::$systemConfig['subscribe_domain']? self::$systemConfig['subscribe_domain'] : self::$systemConfig['website_url']).'/s/'.$subscribe->code; $view['link'] = $subscribe_link; - $view['Shadowrocket_link'] = 'shadowrocket://add/sub://'.base64url_encode($subscribe_link).'?remarks='.self::$systemConfig['website_name'].'-'.self::$systemConfig['website_url']; + $view['Shadowrocket_link'] = 'shadowrocket://add/sub://'.base64url_encode($subscribe_link).'?remarks='.(self::$systemConfig['website_name'].'-'.self::$systemConfig['website_url']); $view['Shadowrocket_linkQrcode'] = 'sub://'.base64url_encode($subscribe_link).'#'.base64url_encode(self::$systemConfig['website_name']); $view['Quantumult_linkOut'] = 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/Pro.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/Rejection.conf'); $view['Quantumult_linkIn'] = 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/BacktoCN.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/Rejection.conf'); @@ -658,7 +601,7 @@ class UserController extends Controller } // 更换订阅地址 - public function exchangeSubscribe(Request $request) + public function exchangeSubscribe() { DB::beginTransaction(); try{ @@ -681,7 +624,7 @@ class UserController extends Controller } // 转换成管理员的身份 - public function switchToAdmin(Request $request) + public function switchToAdmin() { if(!Session::has('admin')){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '非法请求']); diff --git a/app/Http/Middleware/Affiliate.php b/app/Http/Middleware/Affiliate.php index dd810341..07351062 100644 --- a/app/Http/Middleware/Affiliate.php +++ b/app/Http/Middleware/Affiliate.php @@ -12,7 +12,7 @@ class Affiliate * 返利识别 * * @param Request $request - * @param Closure $next + * @param Closure $next * * @return mixed */ diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 7a531b4b..a7ca44ed 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -10,9 +10,9 @@ class RedirectIfAuthenticated /** * Handle an incoming request. * - * @param Request $request - * @param Closure $next - * @param string|null $guard + * @param Request $request + * @param Closure $next + * @param string|null $guard * * @return mixed */ diff --git a/app/Http/Middleware/SetLocale.php b/app/Http/Middleware/SetLocale.php index ec0a64ec..873ecf06 100644 --- a/app/Http/Middleware/SetLocale.php +++ b/app/Http/Middleware/SetLocale.php @@ -12,7 +12,7 @@ class SetLocale * 变更语言 * * @param Request $request - * @param Closure $next + * @param Closure $next * * @return mixed */ diff --git a/app/Http/Middleware/isAdmin.php b/app/Http/Middleware/isAdmin.php index fc5e0b29..d3b1601a 100644 --- a/app/Http/Middleware/isAdmin.php +++ b/app/Http/Middleware/isAdmin.php @@ -13,7 +13,7 @@ class isAdmin * 校验是否为管理员身份 * * @param Request $request - * @param Closure $next + * @param Closure $next * * @return mixed */ diff --git a/app/Http/Middleware/isForbidden.php b/app/Http/Middleware/isForbidden.php index be3d7283..4b6fe7b1 100644 --- a/app/Http/Middleware/isForbidden.php +++ b/app/Http/Middleware/isForbidden.php @@ -16,7 +16,7 @@ class isForbidden * 限制机器人、指定IP访问 * * @param Request $request - * @param Closure $next + * @param Closure $next * * @return mixed */ @@ -32,7 +32,7 @@ class isForbidden } // 拒绝通过订阅链接域名访问网站,防止网站被探测 - if(FALSE !== strpos(Helpers::systemConfig()['subscribe_domain'], $request->getHost())){ + if(TRUE === strpos(Helpers::systemConfig()['subscribe_domain'], $request->getHost()) && FALSE === strpos(Helpers::systemConfig()['subscribe_domain'], Helpers::systemConfig()['website_url'])){ Log::info("识别到通过订阅链接访问,强制跳转至百度(".getClientIp().")"); return redirect('https://www.baidu.com'); diff --git a/app/Http/Middleware/isLogin.php b/app/Http/Middleware/isLogin.php index 10e0d6f8..b13e93fa 100644 --- a/app/Http/Middleware/isLogin.php +++ b/app/Http/Middleware/isLogin.php @@ -12,7 +12,7 @@ class isLogin * 校验是否已登录 * * @param Request $request - * @param Closure $next + * @param Closure $next * * @return mixed */ diff --git a/app/Http/Middleware/isSecurity.php b/app/Http/Middleware/isSecurity.php index ee44feb5..8cd65dad 100644 --- a/app/Http/Middleware/isSecurity.php +++ b/app/Http/Middleware/isSecurity.php @@ -20,7 +20,7 @@ class isSecurity public function handle($request, Closure $next) { $ip = getClientIP(); - $code = $request->input('securityCode'); + $code = $request->securityCode; $cacheKey = 'SecurityLogin_'.ip2long($ip); $websiteSecurityCode = Helpers::systemConfig()['website_security_code']; @@ -30,7 +30,7 @@ class isSecurity return response()->view('auth.error', ['message' => trans('error.SecurityError').', '.trans('error.Visit').''.trans('error.SecurityEnter').'']); }else{ - Cache::put($cacheKey, $ip, 120); // 缓存120分钟,因为每个session默认存活120分钟 + Cache::put($cacheKey, $ip, 7200); // 2小时之内无需再次输入安全码访问 } } diff --git a/app/Http/Models/Article.php b/app/Http/Models/Article.php index b001a7d2..ab4ba5ea 100644 --- a/app/Http/Models/Article.php +++ b/app/Http/Models/Article.php @@ -5,6 +5,8 @@ namespace App\Http\Models; use Eloquent; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Carbon; /** * 文章 @@ -12,6 +14,37 @@ use Illuminate\Database\Eloquent\SoftDeletes; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $title 标题 + * @property string|null $author 作者 + * @property string|null $summary 简介 + * @property string|null $logo LOGO + * @property string|null $content 内容 + * @property int|null $type 类型:1-文章、2-公告、3-购买说明、4-使用教程 + * @property int $sort 排序 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property Carbon|null $deleted_at 删除时间 + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Eloquent\Builder|Article newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Article newQuery() + * @method static Builder|Article onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|Article query() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|Article type($type) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereAuthor($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereLogo($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereSort($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereSummary($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|Article whereUpdatedAt($value) + * @method static Builder|Article withTrashed() + * @method static Builder|Article withoutTrashed() */ class Article extends Model { diff --git a/app/Http/Models/Config.php b/app/Http/Models/Config.php index de547f63..db3b122b 100644 --- a/app/Http/Models/Config.php +++ b/app/Http/Models/Config.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,11 +12,20 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $name 配置名 + * @property string|null $value 配置值 + * @method static Builder|Config newModelQuery() + * @method static Builder|Config newQuery() + * @method static Builder|Config query() + * @method static Builder|Config whereId($value) + * @method static Builder|Config whereName($value) + * @method static Builder|Config whereValue($value) */ class Config extends Model { + public $timestamps = FALSE; protected $table = 'config'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/Country.php b/app/Http/Models/Country.php index 5c91f76e..ac2a1e1b 100644 --- a/app/Http/Models/Country.php +++ b/app/Http/Models/Country.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,10 +12,19 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $name 名称 + * @property string $code 代码 + * @method static Builder|Country newModelQuery() + * @method static Builder|Country newQuery() + * @method static Builder|Country query() + * @method static Builder|Country whereCode($value) + * @method static Builder|Country whereId($value) + * @method static Builder|Country whereName($value) */ class Country extends Model { + public $timestamps = FALSE; protected $table = 'country'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/Coupon.php b/app/Http/Models/Coupon.php index 15bfa9ac..851f5c7a 100644 --- a/app/Http/Models/Coupon.php +++ b/app/Http/Models/Coupon.php @@ -5,6 +5,8 @@ namespace App\Http\Models; use Eloquent; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Carbon; /** * 优惠券 @@ -12,6 +14,45 @@ use Illuminate\Database\Eloquent\SoftDeletes; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $name 优惠券名称 + * @property string $logo 优惠券LOGO + * @property string $sn 优惠券码 + * @property int $type 类型:1-现金券、2-折扣券、3-充值券 + * @property int $usage 用途:1-仅限一次性使用、2-可重复使用 + * @property int $amount 金额,单位分 + * @property float $discount 折扣 + * @property int $rule 使用限制,单位分 + * @property int $available_start 有效期开始 + * @property int $available_end 有效期结束 + * @property int $status 状态:0-未使用、1-已使用、2-已失效 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property Carbon|null $deleted_at 删除时间 + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Eloquent\Builder|Coupon newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Coupon newQuery() + * @method static Builder|Coupon onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|Coupon query() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|Coupon type($type) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereAmount($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereAvailableEnd($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereAvailableStart($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereLogo($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereRule($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereSn($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereUsage($value) + * @method static Builder|Coupon withTrashed() + * @method static Builder|Coupon withoutTrashed() */ class Coupon extends Model { diff --git a/app/Http/Models/CouponLog.php b/app/Http/Models/CouponLog.php index 76a515a0..32a66074 100644 --- a/app/Http/Models/CouponLog.php +++ b/app/Http/Models/CouponLog.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 优惠券使用日志 @@ -11,6 +13,23 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $coupon_id 优惠券ID + * @property int $goods_id 商品ID + * @property int $order_id 订单ID + * @property string $desc 备注 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @method static Builder|CouponLog newModelQuery() + * @method static Builder|CouponLog newQuery() + * @method static Builder|CouponLog query() + * @method static Builder|CouponLog whereCouponId($value) + * @method static Builder|CouponLog whereCreatedAt($value) + * @method static Builder|CouponLog whereDesc($value) + * @method static Builder|CouponLog whereGoodsId($value) + * @method static Builder|CouponLog whereId($value) + * @method static Builder|CouponLog whereOrderId($value) + * @method static Builder|CouponLog whereUpdatedAt($value) */ class CouponLog extends Model { diff --git a/app/Http/Models/Device.php b/app/Http/Models/Device.php index d663ced5..d8c798c0 100644 --- a/app/Http/Models/Device.php +++ b/app/Http/Models/Device.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,12 +12,29 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $type 类型:0-兼容、1-Shadowsocks(R)、2-V2Ray + * @property int $platform 所属平台:0-其他、1-iOS、2-Android、3-Mac、4-Windows、5-Linux + * @property string $name 设备名称 + * @property int $status 状态:0-禁止订阅、1-允许订阅 + * @property string $header 请求时头部的识别特征码 + * @property-read mixed $platform_label + * @property-read mixed $type_label + * @method static Builder|Device newModelQuery() + * @method static Builder|Device newQuery() + * @method static Builder|Device query() + * @method static Builder|Device whereHeader($value) + * @method static Builder|Device whereId($value) + * @method static Builder|Device whereName($value) + * @method static Builder|Device wherePlatform($value) + * @method static Builder|Device whereStatus($value) + * @method static Builder|Device whereType($value) */ class Device extends Model { + public $timestamps = FALSE; protected $table = 'device'; protected $primaryKey = 'id'; - public $timestamps = FALSE; function getTypeLabelAttribute() { diff --git a/app/Http/Models/EmailLog.php b/app/Http/Models/EmailLog.php index e83d2331..a525eab2 100644 --- a/app/Http/Models/EmailLog.php +++ b/app/Http/Models/EmailLog.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 邮件/ServerChan发送日志 @@ -11,6 +13,27 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $type 类型:1-邮件、2-serverChan + * @property string $address 收信地址 + * @property string $title 标题 + * @property string $content 内容 + * @property int $status 状态:-1发送失败、0-等待发送、1-发送成功 + * @property string|null $error 发送失败抛出的异常信息 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @method static Builder|EmailLog newModelQuery() + * @method static Builder|EmailLog newQuery() + * @method static Builder|EmailLog query() + * @method static Builder|EmailLog whereAddress($value) + * @method static Builder|EmailLog whereContent($value) + * @method static Builder|EmailLog whereCreatedAt($value) + * @method static Builder|EmailLog whereError($value) + * @method static Builder|EmailLog whereId($value) + * @method static Builder|EmailLog whereStatus($value) + * @method static Builder|EmailLog whereTitle($value) + * @method static Builder|EmailLog whereType($value) + * @method static Builder|EmailLog whereUpdatedAt($value) */ class EmailLog extends Model { diff --git a/app/Http/Models/Goods.php b/app/Http/Models/Goods.php index 7d6a547c..46497840 100644 --- a/app/Http/Models/Goods.php +++ b/app/Http/Models/Goods.php @@ -3,8 +3,11 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Carbon; /** * 商品 @@ -12,6 +15,60 @@ use Illuminate\Database\Eloquent\SoftDeletes; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $sku 商品服务SKU + * @property string $name 商品名称 + * @property string $logo 商品图片地址 + * @property int $traffic 商品内含多少流量,单位MiB + * @property int $type 商品类型:1-流量包、2-套餐、3-余额充值 + * @property int $price 售价,单位分 + * @property int $renew 流量重置价格,单位分 + * @property int $period 流量自动重置周期 + * @property string|null $info 商品 + * @property string|null $desc 商品描述 + * @property int $days 有效期 + * @property int $invite_num 赠送邀请码数 + * @property int $limit_num 限购数量,默认为0不限购 + * @property string $color 商品颜色 + * @property int $sort 排序 + * @property int $is_hot 是否热销:0-否、1-是 + * @property int $status 状态:0-下架、1-上架 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property Carbon|null $deleted_at 删除时间 + * @property-read mixed $traffic_label + * @property-read Collection|GoodsLabel[] $label + * @property-read int|null $label_count + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Eloquent\Builder|Goods newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Goods newQuery() + * @method static Builder|Goods onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|Goods query() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|Goods type($type) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereColor($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDays($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDesc($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereInfo($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereInviteNum($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereIsHot($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereLimitNum($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereLogo($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods wherePeriod($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereRenew($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereSku($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereSort($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereTraffic($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|Goods whereUpdatedAt($value) + * @method static Builder|Goods withTrashed() + * @method static Builder|Goods withoutTrashed() */ class Goods extends Model { @@ -52,8 +109,6 @@ class Goods extends Model function getTrafficLabelAttribute() { - $traffic_label = flowAutoShow($this->attributes['traffic']*1048576); - - return $traffic_label; + return flowAutoShow($this->attributes['traffic']*1048576); } } diff --git a/app/Http/Models/GoodsLabel.php b/app/Http/Models/GoodsLabel.php index d26727b6..8a0d0feb 100644 --- a/app/Http/Models/GoodsLabel.php +++ b/app/Http/Models/GoodsLabel.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,12 +12,22 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $goods_id 商品ID + * @property int $label_id 标签ID + * @property-read Goods $goods + * @method static Builder|GoodsLabel newModelQuery() + * @method static Builder|GoodsLabel newQuery() + * @method static Builder|GoodsLabel query() + * @method static Builder|GoodsLabel whereGoodsId($value) + * @method static Builder|GoodsLabel whereId($value) + * @method static Builder|GoodsLabel whereLabelId($value) */ class GoodsLabel extends Model { + public $timestamps = FALSE; protected $table = 'goods_label'; protected $primaryKey = 'id'; - public $timestamps = FALSE; function goods() { diff --git a/app/Http/Models/Invite.php b/app/Http/Models/Invite.php index 77c39c5f..9323211a 100644 --- a/app/Http/Models/Invite.php +++ b/app/Http/Models/Invite.php @@ -6,6 +6,8 @@ use Auth; use Eloquent; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Carbon; /** * 邀请码 @@ -13,7 +15,36 @@ use Illuminate\Database\Eloquent\SoftDeletes; * * @package App\Http\Models * @mixin Eloquent - * @property-read mixed $status_label + * @property-read mixed $status_label + * @property int $id + * @property int $uid 邀请人ID + * @property int $fuid 受邀人ID + * @property string $code 邀请码 + * @property int $status 邀请码状态:0-未使用、1-已使用、2-已过期 + * @property string|null $dateline 有效期至 + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property Carbon|null $deleted_at 删除时间 + * @property-read User $generator + * @property-read User $user + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Eloquent\Builder|Invite newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Invite newQuery() + * @method static Builder|Invite onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|Invite query() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|Invite uid() + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereDateline($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereFuid($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereUid($value) + * @method static \Illuminate\Database\Eloquent\Builder|Invite whereUpdatedAt($value) + * @method static Builder|Invite withTrashed() + * @method static Builder|Invite withoutTrashed() */ class Invite extends Model { diff --git a/app/Http/Models/Label.php b/app/Http/Models/Label.php index 087d75f9..1bf56fa1 100644 --- a/app/Http/Models/Label.php +++ b/app/Http/Models/Label.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,10 +12,19 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $name 名称 + * @property int $sort 排序值 + * @method static Builder|Label newModelQuery() + * @method static Builder|Label newQuery() + * @method static Builder|Label query() + * @method static Builder|Label whereId($value) + * @method static Builder|Label whereName($value) + * @method static Builder|Label whereSort($value) */ class Label extends Model { + public $timestamps = FALSE; protected $table = 'label'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/Level.php b/app/Http/Models/Level.php index ba045ddd..2feb47fe 100644 --- a/app/Http/Models/Level.php +++ b/app/Http/Models/Level.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,10 +12,19 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $level 等级 + * @property string $level_name 等级名称 + * @method static Builder|Level newModelQuery() + * @method static Builder|Level newQuery() + * @method static Builder|Level query() + * @method static Builder|Level whereId($value) + * @method static Builder|Level whereLevel($value) + * @method static Builder|Level whereLevelName($value) */ class Level extends Model { + public $timestamps = FALSE; protected $table = 'level'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/Marketing.php b/app/Http/Models/Marketing.php index c05af7f0..553e77aa 100644 --- a/app/Http/Models/Marketing.php +++ b/app/Http/Models/Marketing.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 营销 @@ -11,6 +13,28 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $type 类型:1-邮件群发、2-订阅渠道群发 + * @property string $receiver 接收者 + * @property string $title 标题 + * @property string $content 内容 + * @property string|null $error 错误信息 + * @property int $status 状态:-1-失败、0-待发送、1-成功 + * @property Carbon $created_at + * @property Carbon $updated_at + * @property-read mixed $status_label + * @method static Builder|Marketing newModelQuery() + * @method static Builder|Marketing newQuery() + * @method static Builder|Marketing query() + * @method static Builder|Marketing whereContent($value) + * @method static Builder|Marketing whereCreatedAt($value) + * @method static Builder|Marketing whereError($value) + * @method static Builder|Marketing whereId($value) + * @method static Builder|Marketing whereReceiver($value) + * @method static Builder|Marketing whereStatus($value) + * @method static Builder|Marketing whereTitle($value) + * @method static Builder|Marketing whereType($value) + * @method static Builder|Marketing whereUpdatedAt($value) */ class Marketing extends Model { diff --git a/app/Http/Models/Order.php b/app/Http/Models/Order.php index 5bc42529..56fc2192 100644 --- a/app/Http/Models/Order.php +++ b/app/Http/Models/Order.php @@ -4,7 +4,9 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 订单 @@ -12,7 +14,43 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent - * @property-read mixed $status_label + * @property-read mixed $status_label + * @property int $oid + * @property string $order_sn 订单编号 + * @property int $user_id 操作人 + * @property int $goods_id 商品ID + * @property int $coupon_id 优惠券ID + * @property string|null $email 邮箱 + * @property int $origin_amount 订单原始总价,单位分 + * @property int $amount 订单总价,单位分 + * @property string|null $expire_at 过期时间 + * @property int $is_expire 是否已过期:0-未过期、1-已过期 + * @property int $pay_way 支付方式:1-余额支付、2-有赞云支付 + * @property int $status 订单状态:-1-已关闭、0-待支付、1-已支付待确认、2-已完成 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后一次更新时间 + * @property-read Coupon $coupon + * @property-read Goods $goods + * @property-read Payment $payment + * @property-read User $user + * @method static Builder|Order newModelQuery() + * @method static Builder|Order newQuery() + * @method static Builder|Order query() + * @method static Builder|Order uid() + * @method static Builder|Order whereAmount($value) + * @method static Builder|Order whereCouponId($value) + * @method static Builder|Order whereCreatedAt($value) + * @method static Builder|Order whereEmail($value) + * @method static Builder|Order whereExpireAt($value) + * @method static Builder|Order whereGoodsId($value) + * @method static Builder|Order whereIsExpire($value) + * @method static Builder|Order whereOid($value) + * @method static Builder|Order whereOrderSn($value) + * @method static Builder|Order whereOriginAmount($value) + * @method static Builder|Order wherePayWay($value) + * @method static Builder|Order whereStatus($value) + * @method static Builder|Order whereUpdatedAt($value) + * @method static Builder|Order whereUserId($value) */ class Order extends Model { diff --git a/app/Http/Models/OrderGoods.php b/app/Http/Models/OrderGoods.php index 54fa8b00..933afa15 100644 --- a/app/Http/Models/OrderGoods.php +++ b/app/Http/Models/OrderGoods.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 订单商品 @@ -11,6 +13,33 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $oid 订单ID + * @property string $order_sn 订单编号 + * @property int $user_id 用户ID + * @property int $goods_id 商品ID + * @property int $num 商品数量 + * @property int $origin_price 商品原价,单位分 + * @property int $price 商品实际价格,单位分 + * @property int $is_expire 是否已过期:0-未过期、1-已过期 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read Goods $goods + * @property-read User $user + * @method static Builder|OrderGoods newModelQuery() + * @method static Builder|OrderGoods newQuery() + * @method static Builder|OrderGoods query() + * @method static Builder|OrderGoods whereCreatedAt($value) + * @method static Builder|OrderGoods whereGoodsId($value) + * @method static Builder|OrderGoods whereId($value) + * @method static Builder|OrderGoods whereIsExpire($value) + * @method static Builder|OrderGoods whereNum($value) + * @method static Builder|OrderGoods whereOid($value) + * @method static Builder|OrderGoods whereOrderSn($value) + * @method static Builder|OrderGoods whereOriginPrice($value) + * @method static Builder|OrderGoods wherePrice($value) + * @method static Builder|OrderGoods whereUpdatedAt($value) + * @method static Builder|OrderGoods whereUserId($value) */ class OrderGoods extends Model { diff --git a/app/Http/Models/Payment.php b/app/Http/Models/Payment.php index 0b0bc801..3982dd93 100644 --- a/app/Http/Models/Payment.php +++ b/app/Http/Models/Payment.php @@ -4,7 +4,9 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 支付单 @@ -12,6 +14,42 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string|null $sn + * @property int $user_id 用户ID + * @property int|null $oid 本地订单ID + * @property string|null $order_sn 本地订单长ID + * @property int $pay_way 支付方式:1-微信、2-支付宝 + * @property int $amount 金额,单位分 + * @property int $qr_id 有赞生成的支付单ID + * @property string|null $qr_url 有赞生成的支付二维码URL + * @property string|null $qr_code 有赞生成的支付二维码图片base64 + * @property string|null $qr_local_url 支付二维码的本地存储URL + * @property int $status 状态:-1-支付失败、0-等待支付、1-支付成功 + * @property Carbon $created_at + * @property Carbon $updated_at + * @property-read mixed $pay_way_label + * @property-read mixed $status_label + * @property-read Order|null $order + * @property-read User $user + * @method static Builder|Payment newModelQuery() + * @method static Builder|Payment newQuery() + * @method static Builder|Payment query() + * @method static Builder|Payment uid() + * @method static Builder|Payment whereAmount($value) + * @method static Builder|Payment whereCreatedAt($value) + * @method static Builder|Payment whereId($value) + * @method static Builder|Payment whereOid($value) + * @method static Builder|Payment whereOrderSn($value) + * @method static Builder|Payment wherePayWay($value) + * @method static Builder|Payment whereQrCode($value) + * @method static Builder|Payment whereQrId($value) + * @method static Builder|Payment whereQrLocalUrl($value) + * @method static Builder|Payment whereQrUrl($value) + * @method static Builder|Payment whereSn($value) + * @method static Builder|Payment whereStatus($value) + * @method static Builder|Payment whereUpdatedAt($value) + * @method static Builder|Payment whereUserId($value) */ class Payment extends Model { diff --git a/app/Http/Models/PaymentCallback.php b/app/Http/Models/PaymentCallback.php index 8c4e0029..5973d259 100644 --- a/app/Http/Models/PaymentCallback.php +++ b/app/Http/Models/PaymentCallback.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 支付回调(有赞云支付) @@ -11,6 +13,40 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string|null $client_id + * @property string|null $yz_id + * @property string|null $kdt_id + * @property string|null $kdt_name + * @property int|null $mode + * @property string|null $msg + * @property int|null $sendCount + * @property string|null $sign + * @property string|null $status + * @property int|null $test + * @property string|null $type + * @property string|null $version + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property-read mixed $status_label + * @method static Builder|PaymentCallback newModelQuery() + * @method static Builder|PaymentCallback newQuery() + * @method static Builder|PaymentCallback query() + * @method static Builder|PaymentCallback whereClientId($value) + * @method static Builder|PaymentCallback whereCreatedAt($value) + * @method static Builder|PaymentCallback whereId($value) + * @method static Builder|PaymentCallback whereKdtId($value) + * @method static Builder|PaymentCallback whereKdtName($value) + * @method static Builder|PaymentCallback whereMode($value) + * @method static Builder|PaymentCallback whereMsg($value) + * @method static Builder|PaymentCallback whereSendCount($value) + * @method static Builder|PaymentCallback whereSign($value) + * @method static Builder|PaymentCallback whereStatus($value) + * @method static Builder|PaymentCallback whereTest($value) + * @method static Builder|PaymentCallback whereType($value) + * @method static Builder|PaymentCallback whereUpdatedAt($value) + * @method static Builder|PaymentCallback whereVersion($value) + * @method static Builder|PaymentCallback whereYzId($value) */ class PaymentCallback extends Model { diff --git a/app/Http/Models/ReferralApply.php b/app/Http/Models/ReferralApply.php index 222e9254..b5c238b1 100644 --- a/app/Http/Models/ReferralApply.php +++ b/app/Http/Models/ReferralApply.php @@ -4,7 +4,9 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 返利申请 @@ -12,6 +14,29 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $before 操作前可提现金额,单位分 + * @property int $after 操作后可提现金额,单位分 + * @property int $amount 本次提现金额,单位分 + * @property string $link_logs 关联返利日志ID,例如:1,3,4 + * @property int $status 状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read User $User + * @method static Builder|ReferralApply newModelQuery() + * @method static Builder|ReferralApply newQuery() + * @method static Builder|ReferralApply query() + * @method static Builder|ReferralApply uid() + * @method static Builder|ReferralApply whereAfter($value) + * @method static Builder|ReferralApply whereAmount($value) + * @method static Builder|ReferralApply whereBefore($value) + * @method static Builder|ReferralApply whereCreatedAt($value) + * @method static Builder|ReferralApply whereId($value) + * @method static Builder|ReferralApply whereLinkLogs($value) + * @method static Builder|ReferralApply whereStatus($value) + * @method static Builder|ReferralApply whereUpdatedAt($value) + * @method static Builder|ReferralApply whereUserId($value) */ class ReferralApply extends Model { diff --git a/app/Http/Models/ReferralLog.php b/app/Http/Models/ReferralLog.php index a9c2723a..cf9e53dd 100644 --- a/app/Http/Models/ReferralLog.php +++ b/app/Http/Models/ReferralLog.php @@ -4,7 +4,9 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 返利日志 @@ -12,6 +14,31 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $ref_user_id 推广人ID + * @property int $order_id 关联订单ID + * @property int $amount 消费金额,单位分 + * @property int $ref_amount 返利金额 + * @property int $status 状态:0-未提现、1-审核中、2-已提现 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read Order $order + * @property-read User $ref_user + * @property-read User $user + * @method static Builder|ReferralLog newModelQuery() + * @method static Builder|ReferralLog newQuery() + * @method static Builder|ReferralLog query() + * @method static Builder|ReferralLog uid() + * @method static Builder|ReferralLog whereAmount($value) + * @method static Builder|ReferralLog whereCreatedAt($value) + * @method static Builder|ReferralLog whereId($value) + * @method static Builder|ReferralLog whereOrderId($value) + * @method static Builder|ReferralLog whereRefAmount($value) + * @method static Builder|ReferralLog whereRefUserId($value) + * @method static Builder|ReferralLog whereStatus($value) + * @method static Builder|ReferralLog whereUpdatedAt($value) + * @method static Builder|ReferralLog whereUserId($value) */ class ReferralLog extends Model { diff --git a/app/Http/Models/SensitiveWords.php b/app/Http/Models/SensitiveWords.php index 3fcdb2f6..76598ebe 100644 --- a/app/Http/Models/SensitiveWords.php +++ b/app/Http/Models/SensitiveWords.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,10 +12,19 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $type 类型:1-黑名单、2-白名单 + * @property string $words 敏感词 + * @method static Builder|SensitiveWords newModelQuery() + * @method static Builder|SensitiveWords newQuery() + * @method static Builder|SensitiveWords query() + * @method static Builder|SensitiveWords whereId($value) + * @method static Builder|SensitiveWords whereType($value) + * @method static Builder|SensitiveWords whereWords($value) */ class SensitiveWords extends Model { + public $timestamps = FALSE; protected $table = 'sensitive_words'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/SsConfig.php b/app/Http/Models/SsConfig.php index 13a34932..a540d514 100644 --- a/app/Http/Models/SsConfig.php +++ b/app/Http/Models/SsConfig.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,14 +12,30 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $name 配置名 + * @property int $type 类型:1-加密方式、2-协议、3-混淆 + * @property int $is_default 是否默认:0-不是、1-是 + * @property int $sort 排序:值越大排越前 + * @method static Builder|SsConfig default() + * @method static Builder|SsConfig newModelQuery() + * @method static Builder|SsConfig newQuery() + * @method static Builder|SsConfig query() + * @method static Builder|SsConfig type($type) + * @method static Builder|SsConfig whereId($value) + * @method static Builder|SsConfig whereIsDefault($value) + * @method static Builder|SsConfig whereName($value) + * @method static Builder|SsConfig whereSort($value) + * @method static Builder|SsConfig whereType($value) */ class SsConfig extends Model { + public $timestamps = FALSE; protected $table = 'ss_config'; protected $primaryKey = 'id'; - public $timestamps = FALSE; // 筛选默认 + function scopeDefault($query) { $query->where('is_default', 1); diff --git a/app/Http/Models/SsGroup.php b/app/Http/Models/SsGroup.php index 508927d5..81c87877 100644 --- a/app/Http/Models/SsGroup.php +++ b/app/Http/Models/SsGroup.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * SS节点分组 @@ -11,6 +13,19 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $name 分组名称 + * @property int $level 分组级别 + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @method static Builder|SsGroup newModelQuery() + * @method static Builder|SsGroup newQuery() + * @method static Builder|SsGroup query() + * @method static Builder|SsGroup whereCreatedAt($value) + * @method static Builder|SsGroup whereId($value) + * @method static Builder|SsGroup whereLevel($value) + * @method static Builder|SsGroup whereName($value) + * @method static Builder|SsGroup whereUpdatedAt($value) */ class SsGroup extends Model { diff --git a/app/Http/Models/SsGroupNode.php b/app/Http/Models/SsGroupNode.php index ab7174ae..e433be03 100644 --- a/app/Http/Models/SsGroupNode.php +++ b/app/Http/Models/SsGroupNode.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,11 +12,20 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $group_id 分组ID + * @property int $node_id 节点ID + * @method static Builder|SsGroupNode newModelQuery() + * @method static Builder|SsGroupNode newQuery() + * @method static Builder|SsGroupNode query() + * @method static Builder|SsGroupNode whereGroupId($value) + * @method static Builder|SsGroupNode whereId($value) + * @method static Builder|SsGroupNode whereNodeId($value) */ class SsGroupNode extends Model { + public $timestamps = FALSE; protected $table = 'ss_group_node'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/SsNode.php b/app/Http/Models/SsNode.php index 05d554a9..8de569a2 100644 --- a/app/Http/Models/SsNode.php +++ b/app/Http/Models/SsNode.php @@ -3,7 +3,10 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * SS节点信息 @@ -11,6 +14,93 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $type 服务类型:1-SS、2-V2ray + * @property string $name 名称 + * @property int $group_id 所属分组 + * @property string $country_code 国家代码 + * @property string|null $server 服务器域名地址 + * @property string|null $ip 服务器IPV4地址 + * @property string|null $ipv6 服务器IPV6地址 + * @property string|null $desc 节点简单描述 + * @property string $method 加密方式 + * @property string $protocol 协议 + * @property string|null $protocol_param 协议参数 + * @property string $obfs 混淆 + * @property string|null $obfs_param 混淆参数 + * @property float $traffic_rate 流量比率 + * @property int $bandwidth 出口带宽,单位M + * @property int $traffic 每月可用流量,单位G + * @property string|null $monitor_url 监控地址 + * @property int|null $is_subscribe 是否允许用户订阅该节点:0-否、1-是 + * @property int $is_ddns 是否使用DDNS:0-否、1-是 + * @property int $is_transit 是否中转节点:0-否、1-是 + * @property int $ssh_port SSH端口 + * @property int $detectionType 节点检测: 0-关闭、1-只检测TCP、2-只检测ICMP、3-检测全部 + * @property int $compatible 兼容SS + * @property int $single 启用单端口功能:0-否、1-是 + * @property string|null $port 单端口的端口号 + * @property string|null $passwd 单端口的连接密码 + * @property int $sort 排序值,值越大越靠前显示 + * @property int $status 状态:0-维护、1-正常 + * @property int $v2_alter_id V2ray额外ID + * @property int $v2_port V2ray端口 + * @property string $v2_method V2ray加密方式 + * @property string $v2_net V2ray传输协议 + * @property string $v2_type V2ray伪装类型 + * @property string $v2_host V2ray伪装的域名 + * @property string $v2_path V2ray WS/H2路径 + * @property int $v2_tls V2ray底层传输安全 0 未开启 1 开启 + * @property int $v2_insider_port V2ray内部端口(内部监听),v2_port为0时有效 + * @property int $v2_outsider_port V2ray外部端口(外部覆盖),v2_port为0时有效 + * @property Carbon $created_at + * @property Carbon $updated_at + * @property-read Collection|SsNodeLabel[] $label + * @property-read int|null $label_count + * @method static Builder|SsNode newModelQuery() + * @method static Builder|SsNode newQuery() + * @method static Builder|SsNode query() + * @method static Builder|SsNode whereBandwidth($value) + * @method static Builder|SsNode whereCompatible($value) + * @method static Builder|SsNode whereCountryCode($value) + * @method static Builder|SsNode whereCreatedAt($value) + * @method static Builder|SsNode whereDesc($value) + * @method static Builder|SsNode whereDetectionType($value) + * @method static Builder|SsNode whereGroupId($value) + * @method static Builder|SsNode whereId($value) + * @method static Builder|SsNode whereIp($value) + * @method static Builder|SsNode whereIpv6($value) + * @method static Builder|SsNode whereIsDdns($value) + * @method static Builder|SsNode whereIsSubscribe($value) + * @method static Builder|SsNode whereIsTransit($value) + * @method static Builder|SsNode whereMethod($value) + * @method static Builder|SsNode whereMonitorUrl($value) + * @method static Builder|SsNode whereName($value) + * @method static Builder|SsNode whereObfs($value) + * @method static Builder|SsNode whereObfsParam($value) + * @method static Builder|SsNode wherePasswd($value) + * @method static Builder|SsNode wherePort($value) + * @method static Builder|SsNode whereProtocol($value) + * @method static Builder|SsNode whereProtocolParam($value) + * @method static Builder|SsNode whereServer($value) + * @method static Builder|SsNode whereSingle($value) + * @method static Builder|SsNode whereSort($value) + * @method static Builder|SsNode whereSshPort($value) + * @method static Builder|SsNode whereStatus($value) + * @method static Builder|SsNode whereTraffic($value) + * @method static Builder|SsNode whereTrafficRate($value) + * @method static Builder|SsNode whereType($value) + * @method static Builder|SsNode whereUpdatedAt($value) + * @method static Builder|SsNode whereV2AlterId($value) + * @method static Builder|SsNode whereV2Host($value) + * @method static Builder|SsNode whereV2InsiderPort($value) + * @method static Builder|SsNode whereV2Method($value) + * @method static Builder|SsNode whereV2Net($value) + * @method static Builder|SsNode whereV2OutsiderPort($value) + * @method static Builder|SsNode whereV2Path($value) + * @method static Builder|SsNode whereV2Port($value) + * @method static Builder|SsNode whereV2Tls($value) + * @method static Builder|SsNode whereV2Type($value) */ class SsNode extends Model { diff --git a/app/Http/Models/SsNodeInfo.php b/app/Http/Models/SsNodeInfo.php index f0025f76..8f0f8369 100644 --- a/app/Http/Models/SsNodeInfo.php +++ b/app/Http/Models/SsNodeInfo.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,11 +12,24 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $node_id 节点ID + * @property int $uptime 后端存活时长,单位秒 + * @property string $load 负载 + * @property int $log_time 记录时间 + * @method static Builder|SsNodeInfo newModelQuery() + * @method static Builder|SsNodeInfo newQuery() + * @method static Builder|SsNodeInfo query() + * @method static Builder|SsNodeInfo whereId($value) + * @method static Builder|SsNodeInfo whereLoad($value) + * @method static Builder|SsNodeInfo whereLogTime($value) + * @method static Builder|SsNodeInfo whereNodeId($value) + * @method static Builder|SsNodeInfo whereUptime($value) */ class SsNodeInfo extends Model { + public $timestamps = FALSE; protected $table = 'ss_node_info'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/SsNodeIp.php b/app/Http/Models/SsNodeIp.php index 9f3cf55b..1cc88f53 100644 --- a/app/Http/Models/SsNodeIp.php +++ b/app/Http/Models/SsNodeIp.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * SS节点在线IP信息 @@ -11,6 +13,25 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $node_id 节点ID + * @property int $user_id 用户ID + * @property int $port 端口 + * @property string $type 类型:all、tcp、udp + * @property string|null $ip 连接IP:每个IP用,号隔开 + * @property Carbon $created_at 上报时间 + * @property-read SsNode $node + * @property-read User $user + * @method static Builder|SsNodeIp newModelQuery() + * @method static Builder|SsNodeIp newQuery() + * @method static Builder|SsNodeIp query() + * @method static Builder|SsNodeIp whereCreatedAt($value) + * @method static Builder|SsNodeIp whereId($value) + * @method static Builder|SsNodeIp whereIp($value) + * @method static Builder|SsNodeIp whereNodeId($value) + * @method static Builder|SsNodeIp wherePort($value) + * @method static Builder|SsNodeIp whereType($value) + * @method static Builder|SsNodeIp whereUserId($value) */ class SsNodeIp extends Model { diff --git a/app/Http/Models/SsNodeLabel.php b/app/Http/Models/SsNodeLabel.php index ec07e0b0..f9c19bf0 100644 --- a/app/Http/Models/SsNodeLabel.php +++ b/app/Http/Models/SsNodeLabel.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -12,12 +13,21 @@ use Illuminate\Database\Eloquent\Model; * @package App\Http\Models * @property-read Label $labelInfo * @mixin Eloquent + * @property int $id + * @property int $node_id 用户ID + * @property int $label_id 标签ID + * @method static Builder|SsNodeLabel newModelQuery() + * @method static Builder|SsNodeLabel newQuery() + * @method static Builder|SsNodeLabel query() + * @method static Builder|SsNodeLabel whereId($value) + * @method static Builder|SsNodeLabel whereLabelId($value) + * @method static Builder|SsNodeLabel whereNodeId($value) */ class SsNodeLabel extends Model { + public $timestamps = FALSE; protected $table = 'ss_node_label'; protected $primaryKey = 'id'; - public $timestamps = FALSE; function labelInfo() { diff --git a/app/Http/Models/SsNodeOnlineLog.php b/app/Http/Models/SsNodeOnlineLog.php index f99965d0..3b0d24e2 100644 --- a/app/Http/Models/SsNodeOnlineLog.php +++ b/app/Http/Models/SsNodeOnlineLog.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,11 +12,22 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $node_id 节点ID + * @property int $online_user 在线用户数 + * @property int $log_time 记录时间 + * @method static Builder|SsNodeOnlineLog newModelQuery() + * @method static Builder|SsNodeOnlineLog newQuery() + * @method static Builder|SsNodeOnlineLog query() + * @method static Builder|SsNodeOnlineLog whereId($value) + * @method static Builder|SsNodeOnlineLog whereLogTime($value) + * @method static Builder|SsNodeOnlineLog whereNodeId($value) + * @method static Builder|SsNodeOnlineLog whereOnlineUser($value) */ class SsNodeOnlineLog extends Model { + public $timestamps = FALSE; protected $table = 'ss_node_online_log'; protected $primaryKey = 'id'; - public $timestamps = FALSE; } \ No newline at end of file diff --git a/app/Http/Models/SsNodeTrafficDaily.php b/app/Http/Models/SsNodeTrafficDaily.php index b629af8e..d7f3a037 100644 --- a/app/Http/Models/SsNodeTrafficDaily.php +++ b/app/Http/Models/SsNodeTrafficDaily.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 节点每日流量统计 @@ -11,6 +13,26 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $node_id 节点ID + * @property int $u 上传流量 + * @property int $d 下载流量 + * @property int $total 总流量 + * @property string|null $traffic 总流量(带单位) + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read SsNode $info + * @method static Builder|SsNodeTrafficDaily newModelQuery() + * @method static Builder|SsNodeTrafficDaily newQuery() + * @method static Builder|SsNodeTrafficDaily query() + * @method static Builder|SsNodeTrafficDaily whereCreatedAt($value) + * @method static Builder|SsNodeTrafficDaily whereD($value) + * @method static Builder|SsNodeTrafficDaily whereId($value) + * @method static Builder|SsNodeTrafficDaily whereNodeId($value) + * @method static Builder|SsNodeTrafficDaily whereTotal($value) + * @method static Builder|SsNodeTrafficDaily whereTraffic($value) + * @method static Builder|SsNodeTrafficDaily whereU($value) + * @method static Builder|SsNodeTrafficDaily whereUpdatedAt($value) */ class SsNodeTrafficDaily extends Model { diff --git a/app/Http/Models/SsNodeTrafficHourly.php b/app/Http/Models/SsNodeTrafficHourly.php index 8b2e615b..b3e07abd 100644 --- a/app/Http/Models/SsNodeTrafficHourly.php +++ b/app/Http/Models/SsNodeTrafficHourly.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 节点每日流量统计 @@ -11,6 +13,26 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $node_id 节点ID + * @property int $u 上传流量 + * @property int $d 下载流量 + * @property int $total 总流量 + * @property string|null $traffic 总流量(带单位) + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read SsNode $info + * @method static Builder|SsNodeTrafficHourly newModelQuery() + * @method static Builder|SsNodeTrafficHourly newQuery() + * @method static Builder|SsNodeTrafficHourly query() + * @method static Builder|SsNodeTrafficHourly whereCreatedAt($value) + * @method static Builder|SsNodeTrafficHourly whereD($value) + * @method static Builder|SsNodeTrafficHourly whereId($value) + * @method static Builder|SsNodeTrafficHourly whereNodeId($value) + * @method static Builder|SsNodeTrafficHourly whereTotal($value) + * @method static Builder|SsNodeTrafficHourly whereTraffic($value) + * @method static Builder|SsNodeTrafficHourly whereU($value) + * @method static Builder|SsNodeTrafficHourly whereUpdatedAt($value) */ class SsNodeTrafficHourly extends Model { diff --git a/app/Http/Models/Ticket.php b/app/Http/Models/Ticket.php index ee275fdb..85ce0377 100644 --- a/app/Http/Models/Ticket.php +++ b/app/Http/Models/Ticket.php @@ -4,7 +4,9 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 工单 @@ -12,7 +14,26 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent - * @property-read mixed $status_label + * @property-read mixed $status_label + * @property int $id + * @property int $user_id + * @property string $title 标题 + * @property string $content 内容 + * @property int $status 状态:0-待处理、1-已处理未关闭、2-已关闭 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read User $user + * @method static Builder|Ticket newModelQuery() + * @method static Builder|Ticket newQuery() + * @method static Builder|Ticket query() + * @method static Builder|Ticket uid() + * @method static Builder|Ticket whereContent($value) + * @method static Builder|Ticket whereCreatedAt($value) + * @method static Builder|Ticket whereId($value) + * @method static Builder|Ticket whereStatus($value) + * @method static Builder|Ticket whereTitle($value) + * @method static Builder|Ticket whereUpdatedAt($value) + * @method static Builder|Ticket whereUserId($value) */ class Ticket extends Model { diff --git a/app/Http/Models/TicketReply.php b/app/Http/Models/TicketReply.php index 4dc848a5..7929d67a 100644 --- a/app/Http/Models/TicketReply.php +++ b/app/Http/Models/TicketReply.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 工单回复 @@ -11,6 +13,22 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $ticket_id 工单ID + * @property int $user_id 回复人ID + * @property string $content 回复内容 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read User $user + * @method static Builder|TicketReply newModelQuery() + * @method static Builder|TicketReply newQuery() + * @method static Builder|TicketReply query() + * @method static Builder|TicketReply whereContent($value) + * @method static Builder|TicketReply whereCreatedAt($value) + * @method static Builder|TicketReply whereId($value) + * @method static Builder|TicketReply whereTicketId($value) + * @method static Builder|TicketReply whereUpdatedAt($value) + * @method static Builder|TicketReply whereUserId($value) */ class TicketReply extends Model { diff --git a/app/Http/Models/User.php b/app/Http/Models/User.php index a45f523a..ccd04f19 100644 --- a/app/Http/Models/User.php +++ b/app/Http/Models/User.php @@ -4,8 +4,13 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Foundation\Auth\User as Authenticatable; +use Illuminate\Notifications\DatabaseNotification; +use Illuminate\Notifications\DatabaseNotificationCollection; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Carbon; /** * 用户信息 @@ -13,6 +18,97 @@ use Illuminate\Notifications\Notifiable; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $username 用户名 + * @property string $password 密码 + * @property int $port 代理端口 + * @property string $passwd 代理密码 + * @property string $vmess_id V2Ray用户ID + * @property int $transfer_enable 可用流量,单位字节,默认1TiB + * @property int $u 已上传流量,单位字节 + * @property int $d 已下载流量,单位字节 + * @property int $t 最后使用时间 + * @property string|null $ip 最后连接IP + * @property int $enable 代理状态 + * @property string $method 加密方式 + * @property string $protocol 协议 + * @property string|null $protocol_param 协议参数 + * @property string $obfs 混淆 + * @property string|null $obfs_param 混淆参数 + * @property int $speed_limit_per_con 单连接限速,默认10G,为0表示不限速,单位Byte + * @property int $speed_limit_per_user 单用户限速,默认10G,为0表示不限速,单位Byte + * @property string|null $wechat 微信 + * @property string|null $qq QQ + * @property string $usage 用途:1-手机、2-电脑、3-路由器、4-其他 + * @property int $pay_way 付费方式:0-免费、1-季付、2-月付、3-半年付、4-年付 + * @property int $balance 余额,单位分 + * @property string|null $enable_time 开通日期 + * @property string $expire_time 过期时间 + * @property int $ban_time 封禁到期时间 + * @property string|null $remark 备注 + * @property int $level 等级:可定义名称 + * @property int $is_admin 是否管理员:0-否、1-是 + * @property string $reg_ip 注册IP + * @property int $last_login 最后登录时间 + * @property int $referral_uid 邀请人 + * @property string|null $reset_time 流量重置日期,NULL表示不重置 + * @property int $invite_num 可生成邀请码数 + * @property int $status 状态:-1-禁用、0-未激活、1-正常 + * @property string|null $remember_token + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property-read Collection|UserLabel[] $label + * @property-read int|null $label_count + * @property-read Level $levelList + * @property-read DatabaseNotificationCollection|DatabaseNotification[] $notifications + * @property-read int|null $notifications_count + * @property-read Collection|Payment[] $payment + * @property-read int|null $payment_count + * @property-read User $referral + * @property-read UserSubscribe $subscribe + * @method static Builder|User newModelQuery() + * @method static Builder|User newQuery() + * @method static Builder|User query() + * @method static Builder|User uid() + * @method static Builder|User whereBalance($value) + * @method static Builder|User whereBanTime($value) + * @method static Builder|User whereCreatedAt($value) + * @method static Builder|User whereD($value) + * @method static Builder|User whereEnable($value) + * @method static Builder|User whereEnableTime($value) + * @method static Builder|User whereExpireTime($value) + * @method static Builder|User whereId($value) + * @method static Builder|User whereInviteNum($value) + * @method static Builder|User whereIp($value) + * @method static Builder|User whereIsAdmin($value) + * @method static Builder|User whereLastLogin($value) + * @method static Builder|User whereLevel($value) + * @method static Builder|User whereMethod($value) + * @method static Builder|User whereObfs($value) + * @method static Builder|User whereObfsParam($value) + * @method static Builder|User wherePasswd($value) + * @method static Builder|User wherePassword($value) + * @method static Builder|User wherePayWay($value) + * @method static Builder|User wherePort($value) + * @method static Builder|User whereProtocol($value) + * @method static Builder|User whereProtocolParam($value) + * @method static Builder|User whereQq($value) + * @method static Builder|User whereReferralUid($value) + * @method static Builder|User whereRegIp($value) + * @method static Builder|User whereRemark($value) + * @method static Builder|User whereRememberToken($value) + * @method static Builder|User whereResetTime($value) + * @method static Builder|User whereSpeedLimitPerCon($value) + * @method static Builder|User whereSpeedLimitPerUser($value) + * @method static Builder|User whereStatus($value) + * @method static Builder|User whereT($value) + * @method static Builder|User whereTransferEnable($value) + * @method static Builder|User whereU($value) + * @method static Builder|User whereUpdatedAt($value) + * @method static Builder|User whereUsage($value) + * @method static Builder|User whereUsername($value) + * @method static Builder|User whereVmessId($value) + * @method static Builder|User whereWechat($value) */ class User extends Authenticatable { diff --git a/app/Http/Models/UserBalanceLog.php b/app/Http/Models/UserBalanceLog.php index 29dbcdf8..97bc1f46 100644 --- a/app/Http/Models/UserBalanceLog.php +++ b/app/Http/Models/UserBalanceLog.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,12 +12,32 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 账号ID + * @property int $order_id 订单ID + * @property int $before 发生前余额,单位分 + * @property int $after 发生后金额,单位分 + * @property int $amount 发生金额,单位分 + * @property string|null $desc 操作描述 + * @property string|null $created_at 创建时间 + * @property-read User $user + * @method static Builder|UserBalanceLog newModelQuery() + * @method static Builder|UserBalanceLog newQuery() + * @method static Builder|UserBalanceLog query() + * @method static Builder|UserBalanceLog whereAfter($value) + * @method static Builder|UserBalanceLog whereAmount($value) + * @method static Builder|UserBalanceLog whereBefore($value) + * @method static Builder|UserBalanceLog whereCreatedAt($value) + * @method static Builder|UserBalanceLog whereDesc($value) + * @method static Builder|UserBalanceLog whereId($value) + * @method static Builder|UserBalanceLog whereOrderId($value) + * @method static Builder|UserBalanceLog whereUserId($value) */ class UserBalanceLog extends Model { + public $timestamps = FALSE; protected $table = 'user_balance_log'; protected $primaryKey = 'id'; - public $timestamps = FALSE; function user() { diff --git a/app/Http/Models/UserBanLog.php b/app/Http/Models/UserBanLog.php index 318d677c..46ad425e 100644 --- a/app/Http/Models/UserBanLog.php +++ b/app/Http/Models/UserBanLog.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 用户封禁日志 @@ -11,6 +13,24 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $minutes 封禁账号时长,单位分钟 + * @property string $desc 操作描述 + * @property int $status 状态:0-未处理、1-已处理 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read User $user + * @method static Builder|UserBanLog newModelQuery() + * @method static Builder|UserBanLog newQuery() + * @method static Builder|UserBanLog query() + * @method static Builder|UserBanLog whereCreatedAt($value) + * @method static Builder|UserBanLog whereDesc($value) + * @method static Builder|UserBanLog whereId($value) + * @method static Builder|UserBanLog whereMinutes($value) + * @method static Builder|UserBanLog whereStatus($value) + * @method static Builder|UserBanLog whereUpdatedAt($value) + * @method static Builder|UserBanLog whereUserId($value) */ class UserBanLog extends Model { diff --git a/app/Http/Models/UserLabel.php b/app/Http/Models/UserLabel.php index e513135a..f64b7ff7 100644 --- a/app/Http/Models/UserLabel.php +++ b/app/Http/Models/UserLabel.php @@ -4,6 +4,7 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -12,12 +13,23 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $label_id 标签ID + * @property-read User $user + * @method static Builder|UserLabel newModelQuery() + * @method static Builder|UserLabel newQuery() + * @method static Builder|UserLabel query() + * @method static Builder|UserLabel uid() + * @method static Builder|UserLabel whereId($value) + * @method static Builder|UserLabel whereLabelId($value) + * @method static Builder|UserLabel whereUserId($value) */ class UserLabel extends Model { + public $timestamps = FALSE; protected $table = 'user_label'; protected $primaryKey = 'id'; - public $timestamps = FALSE; function scopeUid($query) { diff --git a/app/Http/Models/UserLoginLog.php b/app/Http/Models/UserLoginLog.php index 2ab0fe9c..408f81ea 100644 --- a/app/Http/Models/UserLoginLog.php +++ b/app/Http/Models/UserLoginLog.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 用户登录日志 @@ -11,6 +13,32 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id + * @property string $ip + * @property string $country + * @property string $province + * @property string $city + * @property string $county + * @property string $isp + * @property string $area + * @property Carbon $created_at + * @property Carbon $updated_at + * @property-read User $user + * @method static Builder|UserLoginLog newModelQuery() + * @method static Builder|UserLoginLog newQuery() + * @method static Builder|UserLoginLog query() + * @method static Builder|UserLoginLog whereArea($value) + * @method static Builder|UserLoginLog whereCity($value) + * @method static Builder|UserLoginLog whereCountry($value) + * @method static Builder|UserLoginLog whereCounty($value) + * @method static Builder|UserLoginLog whereCreatedAt($value) + * @method static Builder|UserLoginLog whereId($value) + * @method static Builder|UserLoginLog whereIp($value) + * @method static Builder|UserLoginLog whereIsp($value) + * @method static Builder|UserLoginLog whereProvince($value) + * @method static Builder|UserLoginLog whereUpdatedAt($value) + * @method static Builder|UserLoginLog whereUserId($value) */ class UserLoginLog extends Model { diff --git a/app/Http/Models/UserSubscribe.php b/app/Http/Models/UserSubscribe.php index 4669b83a..59bb1e85 100644 --- a/app/Http/Models/UserSubscribe.php +++ b/app/Http/Models/UserSubscribe.php @@ -4,7 +4,9 @@ namespace App\Http\Models; use Auth; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 用户订阅地址 @@ -12,6 +14,29 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property string|null $code 订阅地址唯一识别码 + * @property int $times 地址请求次数 + * @property int $status 状态:0-禁用、1-启用 + * @property int $ban_time 封禁时间 + * @property string $ban_desc 封禁理由 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read User $user + * @method static Builder|UserSubscribe newModelQuery() + * @method static Builder|UserSubscribe newQuery() + * @method static Builder|UserSubscribe query() + * @method static Builder|UserSubscribe uid() + * @method static Builder|UserSubscribe whereBanDesc($value) + * @method static Builder|UserSubscribe whereBanTime($value) + * @method static Builder|UserSubscribe whereCode($value) + * @method static Builder|UserSubscribe whereCreatedAt($value) + * @method static Builder|UserSubscribe whereId($value) + * @method static Builder|UserSubscribe whereStatus($value) + * @method static Builder|UserSubscribe whereTimes($value) + * @method static Builder|UserSubscribe whereUpdatedAt($value) + * @method static Builder|UserSubscribe whereUserId($value) */ class UserSubscribe extends Model { diff --git a/app/Http/Models/UserSubscribeLog.php b/app/Http/Models/UserSubscribeLog.php index 5908538c..b6d6a909 100644 --- a/app/Http/Models/UserSubscribeLog.php +++ b/app/Http/Models/UserSubscribeLog.php @@ -3,6 +3,8 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; /** @@ -11,12 +13,27 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int|null $sid 对应user_subscribe的id + * @property string|null $request_ip 请求IP + * @property string|null $request_time 请求时间 + * @property string|null $request_header 请求头部信息 + * @property-read Collection|User[] $user + * @property-read int|null $user_count + * @method static Builder|UserSubscribeLog newModelQuery() + * @method static Builder|UserSubscribeLog newQuery() + * @method static Builder|UserSubscribeLog query() + * @method static Builder|UserSubscribeLog whereId($value) + * @method static Builder|UserSubscribeLog whereRequestHeader($value) + * @method static Builder|UserSubscribeLog whereRequestIp($value) + * @method static Builder|UserSubscribeLog whereRequestTime($value) + * @method static Builder|UserSubscribeLog whereSid($value) */ class UserSubscribeLog extends Model { + public $timestamps = FALSE; protected $table = 'user_subscribe_log'; protected $primaryKey = 'id'; - public $timestamps = FALSE; function user() { diff --git a/app/Http/Models/UserTrafficDaily.php b/app/Http/Models/UserTrafficDaily.php index 55ee1044..dd6661d1 100644 --- a/app/Http/Models/UserTrafficDaily.php +++ b/app/Http/Models/UserTrafficDaily.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 用户每日流量统计 @@ -11,6 +13,28 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $node_id 节点ID,0表示统计全部节点 + * @property int $u 上传流量 + * @property int $d 下载流量 + * @property int $total 总流量 + * @property string|null $traffic 总流量(带单位) + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read SsNode $node + * @method static Builder|UserTrafficDaily newModelQuery() + * @method static Builder|UserTrafficDaily newQuery() + * @method static Builder|UserTrafficDaily query() + * @method static Builder|UserTrafficDaily whereCreatedAt($value) + * @method static Builder|UserTrafficDaily whereD($value) + * @method static Builder|UserTrafficDaily whereId($value) + * @method static Builder|UserTrafficDaily whereNodeId($value) + * @method static Builder|UserTrafficDaily whereTotal($value) + * @method static Builder|UserTrafficDaily whereTraffic($value) + * @method static Builder|UserTrafficDaily whereU($value) + * @method static Builder|UserTrafficDaily whereUpdatedAt($value) + * @method static Builder|UserTrafficDaily whereUserId($value) */ class UserTrafficDaily extends Model { diff --git a/app/Http/Models/UserTrafficHourly.php b/app/Http/Models/UserTrafficHourly.php index cfe296ba..bf5a89f3 100644 --- a/app/Http/Models/UserTrafficHourly.php +++ b/app/Http/Models/UserTrafficHourly.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 用户流量每小时统计 @@ -11,6 +13,28 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $node_id 节点ID,0表示统计全部节点 + * @property int $u 上传流量 + * @property int $d 下载流量 + * @property int $total 总流量 + * @property string|null $traffic 总流量(带单位) + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read SsNode $node + * @method static Builder|UserTrafficHourly newModelQuery() + * @method static Builder|UserTrafficHourly newQuery() + * @method static Builder|UserTrafficHourly query() + * @method static Builder|UserTrafficHourly whereCreatedAt($value) + * @method static Builder|UserTrafficHourly whereD($value) + * @method static Builder|UserTrafficHourly whereId($value) + * @method static Builder|UserTrafficHourly whereNodeId($value) + * @method static Builder|UserTrafficHourly whereTotal($value) + * @method static Builder|UserTrafficHourly whereTraffic($value) + * @method static Builder|UserTrafficHourly whereU($value) + * @method static Builder|UserTrafficHourly whereUpdatedAt($value) + * @method static Builder|UserTrafficHourly whereUserId($value) */ class UserTrafficHourly extends Model { diff --git a/app/Http/Models/UserTrafficLog.php b/app/Http/Models/UserTrafficLog.php index b1c567c4..7995d949 100644 --- a/app/Http/Models/UserTrafficLog.php +++ b/app/Http/Models/UserTrafficLog.php @@ -3,6 +3,7 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; /** @@ -11,14 +12,36 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $u 上传流量 + * @property int $d 下载流量 + * @property int $node_id 节点ID + * @property float $rate 流量比例 + * @property string $traffic 产生流量 + * @property int $log_time 记录时间 + * @property-read SsNode $node + * @property-read User $user + * @method static Builder|UserTrafficLog newModelQuery() + * @method static Builder|UserTrafficLog newQuery() + * @method static Builder|UserTrafficLog query() + * @method static Builder|UserTrafficLog whereD($value) + * @method static Builder|UserTrafficLog whereId($value) + * @method static Builder|UserTrafficLog whereLogTime($value) + * @method static Builder|UserTrafficLog whereNodeId($value) + * @method static Builder|UserTrafficLog whereRate($value) + * @method static Builder|UserTrafficLog whereTraffic($value) + * @method static Builder|UserTrafficLog whereU($value) + * @method static Builder|UserTrafficLog whereUserId($value) */ class UserTrafficLog extends Model { + public $timestamps = FALSE; protected $table = 'user_traffic_log'; protected $primaryKey = 'id'; - public $timestamps = FALSE; // 关联账号 + function user() { return $this->belongsTo(User::class, 'user_id', 'id'); diff --git a/app/Http/Models/UserTrafficModifyLog.php b/app/Http/Models/UserTrafficModifyLog.php index 0b0c5919..19916238 100644 --- a/app/Http/Models/UserTrafficModifyLog.php +++ b/app/Http/Models/UserTrafficModifyLog.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 用户流量变动记录 @@ -11,6 +13,27 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $user_id 用户ID + * @property int $order_id 发生的订单ID + * @property int $before 操作前流量 + * @property int $after 操作后流量 + * @property string $desc 描述 + * @property Carbon $created_at + * @property Carbon $updated_at + * @property-read Order $order + * @property-read User $user + * @method static Builder|UserTrafficModifyLog newModelQuery() + * @method static Builder|UserTrafficModifyLog newQuery() + * @method static Builder|UserTrafficModifyLog query() + * @method static Builder|UserTrafficModifyLog whereAfter($value) + * @method static Builder|UserTrafficModifyLog whereBefore($value) + * @method static Builder|UserTrafficModifyLog whereCreatedAt($value) + * @method static Builder|UserTrafficModifyLog whereDesc($value) + * @method static Builder|UserTrafficModifyLog whereId($value) + * @method static Builder|UserTrafficModifyLog whereOrderId($value) + * @method static Builder|UserTrafficModifyLog whereUpdatedAt($value) + * @method static Builder|UserTrafficModifyLog whereUserId($value) */ class UserTrafficModifyLog extends Model { diff --git a/app/Http/Models/Verify.php b/app/Http/Models/Verify.php index ded24ed1..974f4812 100644 --- a/app/Http/Models/Verify.php +++ b/app/Http/Models/Verify.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 注册时的验证激活地址 @@ -11,6 +13,25 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property int $type 激活类型:1-自行激活、2-管理员激活 + * @property int $user_id 用户ID + * @property string $token 校验token + * @property int $status 状态:0-未使用、1-已使用、2-已失效 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @property-read User $user + * @method static Builder|Verify newModelQuery() + * @method static Builder|Verify newQuery() + * @method static Builder|Verify query() + * @method static Builder|Verify type($type) + * @method static Builder|Verify whereCreatedAt($value) + * @method static Builder|Verify whereId($value) + * @method static Builder|Verify whereStatus($value) + * @method static Builder|Verify whereToken($value) + * @method static Builder|Verify whereType($value) + * @method static Builder|Verify whereUpdatedAt($value) + * @method static Builder|Verify whereUserId($value) */ class Verify extends Model { diff --git a/app/Http/Models/VerifyCode.php b/app/Http/Models/VerifyCode.php index cfbb0c57..37215f3a 100644 --- a/app/Http/Models/VerifyCode.php +++ b/app/Http/Models/VerifyCode.php @@ -3,7 +3,9 @@ namespace App\Http\Models; use Eloquent; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; /** * 注册时的激活验证码 @@ -11,6 +13,21 @@ use Illuminate\Database\Eloquent\Model; * * @package App\Http\Models * @mixin Eloquent + * @property int $id + * @property string $username 用户邮箱 + * @property string $code 验证码 + * @property int $status 状态:0-未使用、1-已使用、2-已失效 + * @property Carbon|null $created_at 创建时间 + * @property Carbon|null $updated_at 最后更新时间 + * @method static Builder|VerifyCode newModelQuery() + * @method static Builder|VerifyCode newQuery() + * @method static Builder|VerifyCode query() + * @method static Builder|VerifyCode whereCode($value) + * @method static Builder|VerifyCode whereCreatedAt($value) + * @method static Builder|VerifyCode whereId($value) + * @method static Builder|VerifyCode whereStatus($value) + * @method static Builder|VerifyCode whereUpdatedAt($value) + * @method static Builder|VerifyCode whereUsername($value) */ class VerifyCode extends Model { diff --git a/app/Mail/closeOrder.php b/app/Mail/closeOrder.php deleted file mode 100644 index 06503252..00000000 --- a/app/Mail/closeOrder.php +++ /dev/null @@ -1,39 +0,0 @@ -id = $id; - $this->title = $title; - $this->content = $content; - } - - public function build() - { - return $this->view('emails.closeOrder')->subject('订单关闭通知')->with([ - 'title' => $this->title, - 'content' => $this->content - ]); - } - - // 发件失败处理 - public function failed(\Exception $e) - { - EmailLog::query()->where('id', $this->id)->update(['status' => -1, 'error' => $e->getMessage()]); - } -} diff --git a/app/Mail/sendCustomMessage.php b/app/Mail/sendCustomMessage.php deleted file mode 100644 index 3cc08a54..00000000 --- a/app/Mail/sendCustomMessage.php +++ /dev/null @@ -1,39 +0,0 @@ -id = $id; - $this->title = $title; - $this->content = $content; - } - - public function build() - { - return $this->view('emails.sendCustomMessage')->subject($this->title)->with([ - 'title' => $this->title, - 'content' => $this->content - ]); - } - - // 发件失败处理 - public function failed(\Exception $e) - { - EmailLog::query()->where('id', $this->id)->update(['status' => -1, 'error' => $e->getMessage()]); - } -} diff --git a/app/Mail/userTrafficAbnormalWarning.php b/app/Mail/userTrafficAbnormalWarning.php deleted file mode 100644 index 5b80888a..00000000 --- a/app/Mail/userTrafficAbnormalWarning.php +++ /dev/null @@ -1,38 +0,0 @@ -id = $id; - $this->title = $title; - $this->content = $content; - } - - public function build() - { - return $this->view('emails.userTrafficAbnormalWarning')->subject('流量异常警告')->with([ - 'content' => $this->content - ]); - } - - // 发件失败处理 - public function failed(\Exception $e) - { - EmailLog::query()->where('id', $this->id)->update(['status' => -1, 'error' => $e->getMessage()]); - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index fcf2d6c7..04e276b1 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -42,20 +42,6 @@ class RouteServiceProvider extends ServiceProvider // } - /** - * Define the "web" routes for the application. - * - * These routes all receive session state, CSRF protection, etc. - * - * @return void - */ - protected function mapWebRoutes() - { - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - } - /** * Define the "api" routes for the application. * @@ -70,4 +56,18 @@ class RouteServiceProvider extends ServiceProvider ->namespace($this->namespace) ->group(base_path('routes/api.php')); } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + } } diff --git a/composer.json b/composer.json index e1812001..6c021e0b 100644 --- a/composer.json +++ b/composer.json @@ -1,41 +1,45 @@ { "name": "laravel/laravel", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "type": "project", "require": { - "php": "^7.1.3", - "fideloper/proxy": "^4.0", - "guzzlehttp/guzzle": "^6.3", + "php": "^7.2", + "ext-curl": "*", + "ext-json": "*", + "ext-openssl": "*", + "ext-dom": "*", + "barryvdh/laravel-debugbar": "^3.2", + "barryvdh/laravel-ide-helper": "^2.6", + "fideloper/proxy": "^4.2", + "guzzlehttp/guzzle": "^6.5", "ipip/db": "^1.0", "itbdw/ip-database": "^2.0", "jenssegers/agent": "^2.6", - "laravel/framework": "5.6.*", - "laravel/tinker": "^1.0", - "mews/captcha": "^2.2", - "mews/purifier": "^2.1", + "laravel/framework": "5.8.*", + "laravel/tinker": "~1.0", + "mews/captcha": "^3.0", + "mews/purifier": "^3.1", "misechow/geetest": "^1.0", "misechow/no-captcha": "^1.0", - "openlss/lib-array2xml": "^0.5.1", + "openlss/lib-array2xml": "^1.0", "overtrue/laravel-lang": "^3.0", - "phpoffice/phpspreadsheet": "^1.6", + "phpoffice/phpspreadsheet": "^1.10", "predis/predis": "^1.1", - "rap2hpoutre/laravel-log-viewer": "^1.0", + "rap2hpoutre/laravel-log-viewer": "^1.3", "riverslei/payment": "*", - "spatie/laravel-permission": "^2.29", - "youzanyun/open-sdk": "^2.0", - "ext-json": "*", - "ext-curl": "*" + "spatie/laravel-permission": "^3.4" }, "require-dev": { - "barryvdh/laravel-debugbar": "^3.2", - "barryvdh/laravel-ide-helper": "^2.6", - "filp/whoops": "^2.0", - "fzaninotto/faker": "^1.4", + "filp/whoops": "^2.7", + "fzaninotto/faker": "^1.9", "mockery/mockery": "^1.0", - "nunomaduro/collision": "^2.0", - "phpunit/phpunit": "^7.0" + "nunomaduro/collision": "^3.0", + "phpunit/phpunit": "^8.0" }, "autoload": { "files": [ @@ -64,6 +68,11 @@ "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], + "post-update-cmd": [ + "Illuminate\\Foundation\\ComposerScripts::postUpdate", + "@php artisan ide-helper:generate", + "@php artisan ide-helper:meta" + ], "post-create-project-cmd": [ "@php artisan key:generate" ] diff --git a/composer.lock b/composer.lock index b0289d27..5a1fd396 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,214 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c575616151e10cb51aa5566f583e33d8", + "content-hash": "099f2beb3a38bdaa54d8cfffec172967", "packages": [ + { + "name": "barryvdh/laravel-debugbar", + "version": "v3.2.8", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-debugbar.git", + "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/18208d64897ab732f6c04a19b319fe8f1d57a9c0", + "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/routing": "^5.5|^6", + "illuminate/session": "^5.5|^6", + "illuminate/support": "^5.5|^6", + "maximebf/debugbar": "~1.15.0", + "php": ">=7.0", + "symfony/debug": "^3|^4", + "symfony/finder": "^3|^4" + }, + "require-dev": { + "laravel/framework": "5.5.x" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\Debugbar\\ServiceProvider" + ], + "aliases": { + "Debugbar": "Barryvdh\\Debugbar\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\Debugbar\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "PHP Debugbar integration for Laravel", + "keywords": [ + "debug", + "debugbar", + "laravel", + "profiler", + "webprofiler" + ], + "time": "2019-08-29T07:01:03+00:00" + }, + { + "name": "barryvdh/laravel-ide-helper", + "version": "v2.6.6", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "b91b959364d97af658f268c733c75dccdbff197e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b91b959364d97af658f268c733c75dccdbff197e", + "reference": "b91b959364d97af658f268c733c75dccdbff197e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "barryvdh/reflection-docblock": "^2.0.6", + "composer/composer": "^1.6", + "doctrine/dbal": "~2.3", + "illuminate/console": "^5.5|^6", + "illuminate/filesystem": "^5.5|^6", + "illuminate/support": "^5.5|^6", + "php": ">=7" + }, + "require-dev": { + "illuminate/config": "^5.5|^6", + "illuminate/view": "^5.5|^6", + "phpro/grumphp": "^0.14", + "phpunit/phpunit": "4.*", + "scrutinizer/ocular": "~1.1", + "squizlabs/php_codesniffer": "^3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\LaravelIdeHelper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", + "keywords": [ + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" + ], + "time": "2019-10-30T20:53:27+00:00" + }, + { + "name": "barryvdh/reflection-docblock", + "version": "v2.0.6", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/6b69015d83d3daf9004a71a89f26e27d27ef6a16", + "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0,<4.5" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Barryvdh": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2018-12-13T10:34:14+00:00" + }, { "name": "caouecs/laravel-lang", "version": "4.0.8", @@ -58,6 +264,337 @@ ], "time": "2019-12-19T09:38:31+00:00" }, + { + "name": "composer/ca-bundle", + "version": "1.2.6", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/47fe531de31fca4a1b997f87308e7d7804348f7e", + "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2020-01-13T10:02:55+00:00" + }, + { + "name": "composer/composer", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb", + "reference": "7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "time": "2020-01-14T15:30:32+00:00" + }, + { + "name": "composer/semver", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2020-01-13T12:06:48+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2019-07-29T10:31:59+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "cbe23383749496fe0f373345208b79568e4bc248" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248", + "reference": "cbe23383749496fe0f373345208b79568e4bc248", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-11-06T16:40:04+00:00" + }, { "name": "dnoegel/php-xdg-base-dir", "version": "v0.1.1", @@ -97,6 +634,274 @@ "description": "implementation of xdg base directory specification for php", "time": "2019-12-04T15:06:13+00:00" }, + { + "name": "doctrine/cache", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", + "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^6.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "time": "2019-11-29T15:36:20+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.10.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", + "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "jetbrains/phpstorm-stubs": "^2019.1", + "phpstan/phpstan": "^0.11.3", + "phpunit/phpunit": "^8.4.1", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "time": "2020-01-04T12:56:21+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "629572819973f13486371cb611386eb17851e85c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", + "reference": "629572819973f13486371cb611386eb17851e85c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "time": "2019-11-10T09:48:07+00:00" + }, { "name": "doctrine/inflector", "version": "1.3.1", @@ -300,16 +1105,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.13", + "version": "2.1.14", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "834593d5900615639208417760ba6a17299e2497" + "reference": "c4b8d12921999d8a561004371701dbc2e05b5ece" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/834593d5900615639208417760ba6a17299e2497", - "reference": "834593d5900615639208417760ba6a17299e2497", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c4b8d12921999d8a561004371701dbc2e05b5ece", + "reference": "c4b8d12921999d8a561004371701dbc2e05b5ece", "shasum": "", "mirrors": [ { @@ -359,7 +1164,7 @@ "validation", "validator" ], - "time": "2019-12-30T08:14:25+00:00" + "time": "2020-01-05T14:11:20+00:00" }, { "name": "erusev/parsedown", @@ -415,16 +1220,16 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.10.0", + "version": "v4.12.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "d85d39da4576a6934b72480be6978fb10c860021" + "reference": "a617e55bc62a87eec73bd456d146d134ad716f03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021", - "reference": "d85d39da4576a6934b72480be6978fb10c860021", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/a617e55bc62a87eec73bd456d146d134ad716f03", + "reference": "a617e55bc62a87eec73bd456d146d134ad716f03", "shasum": "", "mirrors": [ { @@ -437,7 +1242,7 @@ "php": ">=5.2" }, "require-dev": { - "simpletest/simpletest": "^1.1" + "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd" }, "type": "library", "autoload": { @@ -450,7 +1255,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL" + "LGPL-2.1-or-later" ], "authors": [ { @@ -464,7 +1269,7 @@ "keywords": [ "html" ], - "time": "2018-02-23T01:58:20+00:00" + "time": "2019-10-28T03:44:26+00:00" }, { "name": "fideloper/proxy", @@ -1150,17 +1955,17 @@ "time": "2019-01-19T21:32:55+00:00" }, { - "name": "kylekatarnls/update-helper", - "version": "1.2.0", + "name": "justinrainbow/json-schema", + "version": "5.2.9", "source": { "type": "git", - "url": "https://github.com/kylekatarnls/update-helper.git", - "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e" + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "44c6787311242a979fa15c704327c20e7221a0e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/5786fa188e0361b9adf9e8199d7280d1b2db165e", - "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", + "reference": "44c6787311242a979fa15c704327c20e7221a0e4", "shasum": "", "mirrors": [ { @@ -1170,21 +1975,25 @@ ] }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": ">=5.3.0" + "php": ">=5.3.3" }, "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "composer/composer": "2.0.x-dev || ^2.0.0-dev", - "phpunit/phpunit": ">=4.8.35 <6.0" + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" }, - "type": "composer-plugin", + "bin": [ + "bin/validate-json" + ], + "type": "library", "extra": { - "class": "UpdateHelper\\ComposerPlugin" + "branch-alias": { + "dev-master": "5.0.x-dev" + } }, "autoload": { - "psr-0": { - "UpdateHelper\\": "src/" + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1193,25 +2002,42 @@ ], "authors": [ { - "name": "Kyle", - "email": "kylekatarnls@gmail.com" + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" } ], - "description": "Update helper", - "time": "2019-07-29T11:03:54+00:00" + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2019-09-25T14:49:45+00:00" }, { "name": "laravel/framework", - "version": "v5.6.39", + "version": "v5.8.36", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "37bb306f516669ab4f888c16003f694313ab299e" + "reference": "ccf857af50897eda43ceaf12e318cf214e0e4e95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/37bb306f516669ab4f888c16003f694313ab299e", - "reference": "37bb306f516669ab4f888c16003f694313ab299e", + "url": "https://api.github.com/repos/laravel/framework/zipball/ccf857af50897eda43ceaf12e318cf214e0e4e95", + "reference": "ccf857af50897eda43ceaf12e318cf214e0e4e95", "shasum": "", "mirrors": [ { @@ -1221,29 +2047,32 @@ ] }, "require": { - "doctrine/inflector": "~1.1", - "dragonmantank/cron-expression": "~2.0", - "erusev/parsedown": "~1.7", + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.0", + "erusev/parsedown": "^1.7", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "league/flysystem": "^1.0.8", - "monolog/monolog": "~1.12", - "nesbot/carbon": "1.25.*", + "monolog/monolog": "^1.12", + "nesbot/carbon": "^1.26.3 || ^2.0", + "opis/closure": "^3.1", "php": "^7.1.3", - "psr/container": "~1.0", + "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~4.0", - "symfony/debug": "~4.0", - "symfony/finder": "~4.0", - "symfony/http-foundation": "~4.0", - "symfony/http-kernel": "~4.0", - "symfony/process": "~4.0", - "symfony/routing": "~4.0", - "symfony/var-dumper": "~4.0", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^4.2", + "symfony/debug": "^4.2", + "symfony/finder": "^4.2", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2", + "symfony/process": "^4.2", + "symfony/routing": "^4.2", + "symfony/var-dumper": "^4.2", "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "~2.2" + "vlucas/phpdotenv": "^3.3" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -1279,43 +2108,49 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.6", + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", "filp/whoops": "^2.1.4", - "league/flysystem-cached-adapter": "~1.0", - "mockery/mockery": "~1.0", + "guzzlehttp/guzzle": "^6.3", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.0", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.6.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~7.0", + "orchestra/testbench-core": "3.8.*", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^7.5|^8.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "~4.0", - "symfony/dom-crawler": "~4.0" + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", + "true/punycode": "^2.1" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).", + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~4.0).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~4.0).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." + "filp/whoops": "Required for friendly error pages in development (^2.1.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", + "laravel/tinker": "Required to use the tinker console command (^1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nexmo/client": "Required to use the Nexmo transport (^1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "5.8-dev" } }, "autoload": { @@ -1343,7 +2178,7 @@ "framework", "laravel" ], - "time": "2018-10-04T14:50:41+00:00" + "time": "2019-12-17T16:00:14+00:00" }, { "name": "laravel/tinker", @@ -1416,16 +2251,16 @@ }, { "name": "league/flysystem", - "version": "1.0.62", + "version": "1.0.63", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0" + "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0", - "reference": "14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8132daec326565036bc8e8d1876f77ec183a7bd6", + "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6", "shasum": "", "mirrors": [ { @@ -1502,7 +2337,7 @@ "sftp", "storage" ], - "time": "2019-12-29T14:46:55+00:00" + "time": "2020-01-04T16:30:31+00:00" }, { "name": "markbaker/complex", @@ -1681,17 +2516,84 @@ "time": "2019-10-06T11:29:25+00:00" }, { - "name": "mews/captcha", - "version": "2.3.0", + "name": "maximebf/debugbar", + "version": "v1.15.1", "source": { "type": "git", - "url": "https://github.com/mewebstudio/captcha.git", - "reference": "2c9efa19d7d7ae56bed5f23e1c4c42ea5d01fc1a" + "url": "https://github.com/maximebf/php-debugbar.git", + "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mewebstudio/captcha/zipball/2c9efa19d7d7ae56bed5f23e1c4c42ea5d01fc1a", - "reference": "2c9efa19d7d7ae56bed5f23e1c4c42ea5d01fc1a", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/6c4277f6117e4864966c9cb58fb835cee8c74a1e", + "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.6", + "psr/log": "^1.0", + "symfony/var-dumper": "^2.6|^3|^4" + }, + "require-dev": { + "phpunit/phpunit": "^5" + }, + "suggest": { + "kriswallsmith/assetic": "The best way to manage assets", + "monolog/monolog": "Log using Monolog", + "predis/predis": "Redis storage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.15-dev" + } + }, + "autoload": { + "psr-4": { + "DebugBar\\": "src/DebugBar/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maxime Bouroumeau-Fuseau", + "email": "maxime.bouroumeau@gmail.com", + "homepage": "http://maximebf.com" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Debug bar in the browser for php application", + "homepage": "https://github.com/maximebf/php-debugbar", + "keywords": [ + "debug", + "debugbar" + ], + "time": "2019-09-24T14:55:42+00:00" + }, + { + "name": "mews/captcha", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/mewebstudio/captcha.git", + "reference": "0fa11e098549ceb8f99f93dcf24719622d8c8078" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mewebstudio/captcha/zipball/0fa11e098549ceb8f99f93dcf24719622d8c8078", + "reference": "0fa11e098549ceb8f99f93dcf24719622d8c8078", "shasum": "", "mirrors": [ { @@ -1702,16 +2604,17 @@ }, "require": { "ext-gd": "*", - "illuminate/config": "~5.0", - "illuminate/filesystem": "~5.0", - "illuminate/hashing": "~5.0", - "illuminate/support": "~5.0", - "intervention/image": "~2.2", - "php": ">=5.4" + "illuminate/config": "~5.0|^6.0", + "illuminate/filesystem": "~5.0|^6.0", + "illuminate/hashing": "~5.0|^6.0", + "illuminate/session": "~5.0|^6.0", + "illuminate/support": "~5.0|^6.0", + "intervention/image": "~2.5", + "php": "^7.2" }, "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.1" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^8.0" }, "type": "package", "extra": { @@ -1744,27 +2647,28 @@ "role": "Developer" } ], - "description": "Laravel 5 Captcha Package", + "description": "Laravel 5 & 6 Captcha Package", "homepage": "https://github.com/mewebstudio/captcha", "keywords": [ "captcha", - "laravel5 Captcha", - "laravel5 Security" + "laravel5 Security", + "laravel6 Captcha", + "laravel6 Security" ], - "time": "2019-08-16T21:57:24+00:00" + "time": "2019-12-05T11:15:51+00:00" }, { "name": "mews/purifier", - "version": "2.1.4", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/mewebstudio/Purifier.git", - "reference": "ab70b25543a1afb3bcd0285d09e063fd268bf344" + "reference": "f0a258d04e681267cfc8b8e0711050fad6fec2c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mewebstudio/Purifier/zipball/ab70b25543a1afb3bcd0285d09e063fd268bf344", - "reference": "ab70b25543a1afb3bcd0285d09e063fd268bf344", + "url": "https://api.github.com/repos/mewebstudio/Purifier/zipball/f0a258d04e681267cfc8b8e0711050fad6fec2c0", + "reference": "f0a258d04e681267cfc8b8e0711050fad6fec2c0", "shasum": "", "mirrors": [ { @@ -1774,11 +2678,11 @@ ] }, "require": { - "ezyang/htmlpurifier": "4.10.*", - "illuminate/config": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.*", - "illuminate/filesystem": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.*", - "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.*", - "php": ">=5.5.9" + "ezyang/htmlpurifier": "4.12.*", + "illuminate/config": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ~6", + "illuminate/filesystem": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ~6", + "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ~6", + "php": "^7.2" }, "require-dev": { "graham-campbell/testbench": "^3.2", @@ -1821,7 +2725,7 @@ "role": "Developer" } ], - "description": "Laravel 5 HtmlPurifier Package", + "description": "Laravel 5/6 HtmlPurifier Package", "homepage": "https://github.com/mewebstudio/purifier", "keywords": [ "Purifier", @@ -1829,10 +2733,13 @@ "laravel5 HtmlPurifier", "laravel5 Purifier", "laravel5 Security", + "laravel6 HtmlPurifier", + "laravel6 Purifier", + "laravel6 Security", "security", "xss" ], - "time": "2019-03-07T07:55:14+00:00" + "time": "2019-12-05T11:14:40+00:00" }, { "name": "misechow/geetest", @@ -2090,16 +2997,16 @@ }, { "name": "nesbot/carbon", - "version": "1.25.3", + "version": "2.28.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "ad6afecd38ce2d7f7bd1b5d47ffd8e93ebbd3ed8" + "reference": "e2bcbcd43e67ee6101d321d5de916251d2870ca8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ad6afecd38ce2d7f7bd1b5d47ffd8e93ebbd3ed8", - "reference": "ad6afecd38ce2d7f7bd1b5d47ffd8e93ebbd3ed8", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e2bcbcd43e67ee6101d321d5de916251d2870ca8", + "reference": "e2bcbcd43e67ee6101d321d5de916251d2870ca8", "shasum": "", "mirrors": [ { @@ -2109,21 +3016,31 @@ ] }, "require": { - "kylekatarnls/update-helper": "^1.1", - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { - "composer/composer": "^1.2", - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "dev-php-7.1-compatibility", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" }, "bin": [ - "bin/upgrade-carbon" + "bin/carbon" ], "type": "library", "extra": { - "update-helper": "Carbon\\Upgrade" + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } }, "autoload": { "psr-4": { @@ -2139,16 +3056,20 @@ "name": "Brian Nesbitt", "email": "brian@nesbot.com", "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" } ], - "description": "A simple API extension for DateTime.", + "description": "An API extension for DateTime that supports 281 different languages.", "homepage": "http://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], - "time": "2019-06-03T17:56:44+00:00" + "time": "2019-12-16T16:30:25+00:00" }, { "name": "nikic/php-parser", @@ -2210,16 +3131,16 @@ }, { "name": "openlss/lib-array2xml", - "version": "0.5.1", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0" + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/c8b5998a342d7861f2e921403f44e0a2f3ef2be0", - "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0", + "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", "shasum": "", "mirrors": [ { @@ -2244,24 +3165,91 @@ "authors": [ { "name": "Bryan Tong", - "email": "contact@nullivex.com", - "homepage": "http://bryantong.com" + "email": "bryan@nullivex.com", + "homepage": "https://www.nullivex.com" }, { "name": "Tony Butler", "email": "spudz76@gmail.com", - "homepage": "http://openlss.org" + "homepage": "https://www.nullivex.com" } ], "description": "Array2XML conversion library credit to lalit.org", - "homepage": "http://openlss.org", + "homepage": "https://www.nullivex.com", "keywords": [ "array", "array conversion", "xml", "xml conversion" ], - "time": "2016-11-10T19:10:18+00:00" + "time": "2019-03-29T20:06:56+00:00" + }, + { + "name": "opis/closure", + "version": "3.5.1", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", + "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.4 || ^7.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "time": "2019-11-29T22:36:02+00:00" }, { "name": "overtrue/laravel-lang", @@ -2464,6 +3452,67 @@ ], "time": "2019-12-01T23:13:51+00:00" }, + { + "name": "phpoption/phpoption", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.5.9 || ^7.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2019-12-15T19:35:24+00:00" + }, { "name": "predis/predis", "version": "v1.1.1", @@ -3083,17 +4132,17 @@ "time": "2018-05-23T12:01:20+00:00" }, { - "name": "spatie/laravel-permission", - "version": "2.38.0", + "name": "seld/jsonlint", + "version": "1.7.2", "source": { "type": "git", - "url": "https://github.com/spatie/laravel-permission.git", - "reference": "674ad54a0ba95d8ad26990aa250b5c9d9b165e15" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/674ad54a0ba95d8ad26990aa250b5c9d9b165e15", - "reference": "674ad54a0ba95d8ad26990aa250b5c9d9b165e15", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19", + "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19", "shasum": "", "mirrors": [ { @@ -3103,15 +4152,120 @@ ] }, "require": { - "illuminate/auth": "~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0", - "illuminate/container": "~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0", - "illuminate/contracts": "~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0", - "illuminate/database": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0", - "php": ">=7.0" + "php": "^5.3 || ^7.0" }, "require-dev": { - "orchestra/testbench": "~3.4.2|~3.5.0|~3.6.0|~3.7.0", - "phpunit/phpunit": "^5.7|6.2|^7.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2019-10-24T14:27:39+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "84715761c35808076b00908a20317a3a8a67d17e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/84715761c35808076b00908a20317a3a8a67d17e", + "reference": "84715761c35808076b00908a20317a3a8a67d17e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phra" + ], + "time": "2020-01-13T10:41:09+00:00" + }, + { + "name": "spatie/laravel-permission", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "e9c08249ec3c24258531d0f967bd3d5559e0f79e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/e9c08249ec3c24258531d0f967bd3d5559e0f79e", + "reference": "e9c08249ec3c24258531d0f967bd3d5559e0f79e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/auth": "^5.8|^6.0", + "illuminate/container": "^5.8|^6.0", + "illuminate/contracts": "^5.8|^6.0", + "illuminate/database": "^5.8|^6.0", + "php": "^7.2" + }, + "require-dev": { + "orchestra/testbench": "^3.8|^4.0", + "phpunit/phpunit": "^8.0", "predis/predis": "^1.1" }, "type": "library", @@ -3142,7 +4296,7 @@ "role": "Developer" } ], - "description": "Permission handling for Laravel 5.4 to 5.8", + "description": "Permission handling for Laravel 5.8 and up", "homepage": "https://github.com/spatie/laravel-permission", "keywords": [ "acl", @@ -3154,7 +4308,7 @@ "security", "spatie" ], - "time": "2019-09-02T17:12:21+00:00" + "time": "2020-01-07T16:34:21+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -3629,6 +4783,62 @@ ], "time": "2019-09-17T09:54:03+00:00" }, + { + "name": "symfony/filesystem", + "version": "v4.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "40c2606131d56eff6f193b6e2ceb92414653b591" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/40c2606131d56eff6f193b6e2ceb92414653b591", + "reference": "40c2606131d56eff6f193b6e2ceb92414653b591", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2019-11-26T23:16:41+00:00" + }, { "name": "symfony/finder", "version": "v4.4.2", @@ -4781,16 +5991,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.6.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", "shasum": "", "mirrors": [ { @@ -4800,16 +6010,17 @@ ] }, "require": { - "php": ">=5.3.9", + "php": "^5.4 || ^7.0", + "phpoption/phpoption": "^1.5", "symfony/polyfill-ctype": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -4822,10 +6033,15 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "homepage": "https://vancelucas.com/" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -4834,868 +6050,10 @@ "env", "environment" ], - "time": "2019-01-29T11:11:52+00:00" - }, - { - "name": "youzanyun/open-sdk", - "version": "2.0.16", - "source": { - "type": "git", - "url": "https://github.com/youzan/open-sdk-php.git", - "reference": "0e16d2ffd71361c2deab4bb972b7b0d7d0c4c549" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/youzan/open-sdk-php/zipball/0e16d2ffd71361c2deab4bb972b7b0d7d0c4c549", - "reference": "0e16d2ffd71361c2deab4bb972b7b0d7d0c4c549", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-openssl": "*", - "guzzlehttp/guzzle": "^6.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Youzan\\Open\\": "src/Open" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "youzan", - "homepage": "https://github.com/youzan", - "role": "Developer" - } - ], - "description": "有赞云服务端SDK", - "homepage": "https://github.com/youzan/open-sdk-php", - "keywords": [ - "open-sdk", - "youzan", - "youzanyun" - ], - "time": "2019-10-31T11:46:52+00:00" + "time": "2019-09-10T21:37:39+00:00" } ], "packages-dev": [ - { - "name": "barryvdh/laravel-debugbar", - "version": "v3.2.8", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/18208d64897ab732f6c04a19b319fe8f1d57a9c0", - "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "illuminate/routing": "^5.5|^6", - "illuminate/session": "^5.5|^6", - "illuminate/support": "^5.5|^6", - "maximebf/debugbar": "~1.15.0", - "php": ">=7.0", - "symfony/debug": "^3|^4", - "symfony/finder": "^3|^4" - }, - "require-dev": { - "laravel/framework": "5.5.x" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Debugbar\\ServiceProvider" - ], - "aliases": { - "Debugbar": "Barryvdh\\Debugbar\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "PHP Debugbar integration for Laravel", - "keywords": [ - "debug", - "debugbar", - "laravel", - "profiler", - "webprofiler" - ], - "time": "2019-08-29T07:01:03+00:00" - }, - { - "name": "barryvdh/laravel-ide-helper", - "version": "v2.6.6", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "b91b959364d97af658f268c733c75dccdbff197e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b91b959364d97af658f268c733c75dccdbff197e", - "reference": "b91b959364d97af658f268c733c75dccdbff197e", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "barryvdh/reflection-docblock": "^2.0.6", - "composer/composer": "^1.6", - "doctrine/dbal": "~2.3", - "illuminate/console": "^5.5|^6", - "illuminate/filesystem": "^5.5|^6", - "illuminate/support": "^5.5|^6", - "php": ">=7" - }, - "require-dev": { - "illuminate/config": "^5.5|^6", - "illuminate/view": "^5.5|^6", - "phpro/grumphp": "^0.14", - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1", - "squizlabs/php_codesniffer": "^3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\LaravelIdeHelper\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", - "keywords": [ - "autocomplete", - "codeintel", - "helper", - "ide", - "laravel", - "netbeans", - "phpdoc", - "phpstorm", - "sublime" - ], - "time": "2019-10-30T20:53:27+00:00" - }, - { - "name": "barryvdh/reflection-docblock", - "version": "v2.0.6", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/6b69015d83d3daf9004a71a89f26e27d27ef6a16", - "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0,<4.5" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Barryvdh": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2018-12-13T10:34:14+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.2.5", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "62e8fc2dc550e5d6d8c9360c7721662670f58149" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/62e8fc2dc550e5d6d8c9360c7721662670f58149", - "reference": "62e8fc2dc550e5d6d8c9360c7721662670f58149", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "time": "2019-12-11T14:44:42+00:00" - }, - { - "name": "composer/composer", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "bb01f2180df87ce7992b8331a68904f80439dd2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bb01f2180df87ce7992b8331a68904f80439dd2f", - "reference": "bb01f2180df87ce7992b8331a68904f80439dd2f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" - }, - "conflict": { - "symfony/console": "2.8.38" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "time": "2019-11-01T16:20:17+00:00" - }, - { - "name": "composer/semver", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "time": "2019-03-19T17:25:45+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.2", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", - "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "time": "2019-07-29T10:31:59+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "cbe23383749496fe0f373345208b79568e4bc248" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248", - "reference": "cbe23383749496fe0f373345208b79568e4bc248", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2019-11-06T16:40:04+00:00" - }, - { - "name": "doctrine/cache", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "~7.1" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^6.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "time": "2019-11-29T15:36:20+00:00" - }, - { - "name": "doctrine/dbal", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", - "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.2" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "jetbrains/phpstorm-stubs": "^2019.1", - "phpstan/phpstan": "^0.11.3", - "phpunit/phpunit": "^8.4.1", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "time": "2019-11-03T16:50:43+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "629572819973f13486371cb611386eb17851e85c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", - "reference": "629572819973f13486371cb611386eb17851e85c", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "time": "2019-11-10T09:48:07+00:00" - }, { "name": "doctrine/instantiator", "version": "1.3.0", @@ -5760,16 +6118,16 @@ }, { "name": "filp/whoops", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "4c97f814aa2f0dd4d5bedc89181c10ef12c004c5" + "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/4c97f814aa2f0dd4d5bedc89181c10ef12c004c5", - "reference": "4c97f814aa2f0dd4d5bedc89181c10ef12c004c5", + "url": "https://api.github.com/repos/filp/whoops/zipball/fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", + "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", "shasum": "", "mirrors": [ { @@ -5823,7 +6181,7 @@ "throwable", "whoops" ], - "time": "2019-12-29T10:00:00+00:00" + "time": "2020-01-15T10:00:00+00:00" }, { "name": "fzaninotto/faker", @@ -5935,145 +6293,6 @@ ], "time": "2016-01-20T08:20:44+00:00" }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.9", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2019-09-25T14:49:45+00:00" - }, - { - "name": "maximebf/debugbar", - "version": "v1.15.1", - "source": { - "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/6c4277f6117e4864966c9cb58fb835cee8c74a1e", - "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.6", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3|^4" - }, - "require-dev": { - "phpunit/phpunit": "^5" - }, - "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "DebugBar\\": "src/DebugBar/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", - "keywords": [ - "debug", - "debugbar" - ], - "time": "2019-09-24T14:55:42+00:00" - }, { "name": "mockery/mockery", "version": "1.3.1", @@ -6201,16 +6420,16 @@ }, { "name": "nunomaduro/collision", - "version": "v2.1.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63" + "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5feb0c0d92978ec7169232ce5d70d6da6b29f63", - "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/af42d339fe2742295a54f6fdd42aaa6f8c4aca68", + "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68", "shasum": "", "mirrors": [ { @@ -6226,10 +6445,10 @@ "symfony/console": "~2.8|~3.3|~4.0" }, "require-dev": { - "laravel/framework": "5.7.*", + "laravel/framework": "5.8.*", "nunomaduro/larastan": "^0.3.0", - "phpstan/phpstan": "^0.10", - "phpunit/phpunit": "~7.3" + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "~8.0" }, "type": "library", "extra": { @@ -6267,7 +6486,7 @@ "php", "symfony" ], - "time": "2018-11-21T21:40:54+00:00" + "time": "2019-03-07T21:35:13+00:00" }, { "name": "phar-io/manifest", @@ -6623,16 +6842,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "7.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", "shasum": "", "mirrors": [ { @@ -6644,25 +6863,25 @@ "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", + "phpunit/php-token-stream": "^3.1.1", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", + "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -6688,7 +6907,7 @@ "testing", "xunit" ], - "time": "2018-10-31T16:06:48+00:00" + "time": "2019-11-20T13:55:58+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6905,16 +7124,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.18", + "version": "8.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fcf6c4bfafaadc07785528b06385cce88935474d" + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fcf6c4bfafaadc07785528b06385cce88935474d", - "reference": "fcf6c4bfafaadc07785528b06385cce88935474d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", "shasum": "", "mirrors": [ { @@ -6924,40 +7143,39 @@ ] }, "require": { - "doctrine/instantiator": "^1.1", + "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", "sebastian/version": "^2.0.1" }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" - }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -6965,7 +7183,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -6991,7 +7209,7 @@ "testing", "xunit" ], - "time": "2019-12-06T05:14:37+00:00" + "time": "2020-01-08T08:49:49+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -7310,16 +7528,16 @@ }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", "shasum": "", "mirrors": [ { @@ -7329,10 +7547,13 @@ ] }, "require": { - "php": "^7.0" + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -7340,7 +7561,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -7363,7 +7584,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "time": "2019-02-01T05:30:01+00:00" }, { "name": "sebastian/object-enumerator", @@ -7576,6 +7797,58 @@ "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "time": "2018-10-04T04:07:39+00:00" }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" + }, { "name": "sebastian/version", "version": "2.0.1", @@ -7625,167 +7898,6 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, - { - "name": "seld/jsonlint", - "version": "1.7.2", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "time": "2019-10-24T14:27:39+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phra" - ], - "time": "2015-10-13T18:44:15+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "40c2606131d56eff6f193b6e2ceb92414653b591" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/40c2606131d56eff6f193b6e2ceb92414653b591", - "reference": "40c2606131d56eff6f193b6e2ceb92414653b591", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2019-11-26T23:16:41+00:00" - }, { "name": "theseer/tokenizer", "version": "1.1.3", @@ -7893,8 +8005,11 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.1.3", - "ext-json": "*" + "php": "^7.2", + "ext-curl": "*", + "ext-json": "*", + "ext-openssl": "*", + "ext-dom": "*" }, "platform-dev": [] } diff --git a/composer.phar b/composer.phar index ca810547..8c3f0fad 100644 Binary files a/composer.phar and b/composer.phar differ diff --git a/config/app.php b/config/app.php index 1c19c854..d053c127 100644 --- a/config/app.php +++ b/config/app.php @@ -124,8 +124,6 @@ return [ /* * Laravel Framework Service Providers... */ - Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, - Barryvdh\Debugbar\ServiceProvider::class, Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, @@ -149,13 +147,16 @@ return [ Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, - /* * Package Service Providers... */ + Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, //IDE帮助 + Barryvdh\Debugbar\ServiceProvider::class,//Debug工具 + Jenssegers\Agent\AgentServiceProvider::class, //用户浏览器检测 Misechow\Geetest\GeetestServiceProvider::class, // Geetest极验 Misechow\NoCaptcha\NoCaptchaServiceProvider::class, // Google reCAPTCHA Overtrue\LaravelLang\TranslationServiceProvider::class, // 多国语言包功能 + Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class,//日志查看 /* * Application Service Providers... diff --git a/config/version.php b/config/version.php index 21c1a286..3f61c827 100644 --- a/config/version.php +++ b/config/version.php @@ -1,6 +1,6 @@ '450', + 'number' => '210', 'name' => 'SSRPanel_OtakuMod' ]; \ No newline at end of file diff --git a/public/assets/custom/jump-tab.js b/public/assets/custom/jump-tab.js new file mode 100644 index 00000000..4f3c325b --- /dev/null +++ b/public/assets/custom/jump-tab.js @@ -0,0 +1,2 @@ +// tab 转跳 +const url=window.location.href;if(url.indexOf("#")>0){const activeTab=url.substring(url.indexOf("#")+1);$('.nav[role="tablist"] a[href="#'+activeTab+'"]').tab('show')}$(document).ready(()=>{$('a[role="tab"]').on("click",function(){const hash=$(this).attr("href");let newUrl=url.split("#")[0]+hash;history.replaceState(null,null,newUrl)})}); \ No newline at end of file diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index 51e9756d..925673ba 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -12,7 +12,7 @@ return [ 'tip' => 'Tip', 'username' => 'Email', 'password' => 'Password', - 'retype_password' => 'Please renter your password', + 'confirm_password' => 'Please renter your password', 'back' => 'Back', 'close' => 'Close', 'submit' => 'Submit', @@ -60,13 +60,13 @@ return [ 'register_anti' => 'Anti-robot registration is enabled! Please do not register Multiple accounts', 'register_fail' => 'Registration failed, please try later', 'register_success' => 'Registered successfully', - 'register_success_tip' => 'Activation email sent! Please check the mailbox (the email may be in the Trash)', + 'register_active_tip' => 'Activation email sent! Please check the mailbox (the email may be in the Trash)', "repeat_request" => 'Please refresh the page and try again', "reset_password_close" => '"Find my Password"function is disabled.If you need help, Please email :email', 'reset_password_limit' => 'Password can only be reset :time times within 24 hours!', 'reset_password_success_tip' => 'Reset successfully! Please check the mailbox (the email may be in the Trash)', - 'reset_password_same_fail' => 'The new password is the same as the old one. Please renter', - 'reset_password_fail' => 'Password reset failed', + 'reset_password_same_fail' => 'The new password is the same as the old one. Please renter', + 'reset_password_fail' => 'Password reset failed', 'reset_password_new' => 'The new password has been set successfully!', 'request_error' => 'Request exception, Please refresh and try again' ]; \ No newline at end of file diff --git a/resources/lang/en/error.php b/resources/lang/en/error.php index 2292612e..a8e1b1ae 100644 --- a/resources/lang/en/error.php +++ b/resources/lang/en/error.php @@ -8,6 +8,7 @@ return [ 'ForbiddenOversea' => 'Oversea IP or Proxy Access Forbidden', 'MissingPage' => 'Page Not Found', 'Unauthorized' => 'Unauthorized visit', + 'Refresh' => 'Refresh', 'RefreshPage' => 'Refresh Page, Try One More Time', 'SystemError' => 'System Error', 'Visit' => 'Please visit', diff --git a/resources/lang/ja/auth.php b/resources/lang/ja/auth.php index 3c338635..1a573e92 100644 --- a/resources/lang/ja/auth.php +++ b/resources/lang/ja/auth.php @@ -18,7 +18,7 @@ return [ 'loading_captcha' => '確認コードを読み込んでいます...', 'required_captcha' => '確認コードの操作を正しく完了してください', 'fail_captcha' => 'サーバーの確認に失敗しました。もう一度お試しください', - 'retype_password' => 'パスワードの確認', + 'confirm_password' => 'パスワードの確認', 'code' => '招待コード', 'send' => '送 信', 'tnc_button' => '私はすでに読んで守ることに同意した', @@ -40,7 +40,7 @@ return [ 'register' => 'ログイン', 'username' => 'メール', 'password' => 'パスワード', - 'retype_password' => 'パスワードの確認', + 'confirm_password' => 'パスワードの確認', 'back' => 'Back', 'close' => 'Close', 'submit' => 'Submit', @@ -88,7 +88,7 @@ return [ 'register_anti' => 'Anti-robot registration is enabled! Please do not register Multiple accounts', 'register_fail' => 'Registration failed, please try later', 'register_success' => 'Registered successfully', - 'register_success_tip' => 'Activation email sent! Please check the mailbox (the email may be in the Trash)', + 'register_active_tip' => 'Activation email sent! Please check the mailbox (the email may be in the Trash)', "repeat_request" => 'Please refresh the page and try again', "reset_password_close" => '"Find my Password"function is disabled.If you need help, Please email :email', 'reset_password_limit' => 'Password can only be reset :time times within 24 hours!', diff --git a/resources/lang/ko/auth.php b/resources/lang/ko/auth.php index 6851eb3a..7165dcb0 100644 --- a/resources/lang/ko/auth.php +++ b/resources/lang/ko/auth.php @@ -18,7 +18,7 @@ return [ 'loading_captcha' => '인증 코드로드 중 ...', 'required_captcha' => '인증 코드 작업을 올바르게 완료하십시오.', 'fail_captcha' => '서버 확인에 실패했습니다. 다시 시도하십시오.', - 'retype_password' => '비밀번호 재확인', + 'confirm_password' => '비밀번호 재확인', 'code' => '처청코드', 'send' => '보내기', 'tnc_button' => '이용약관에 됭의합니다', diff --git a/resources/lang/zh-CN/auth.php b/resources/lang/zh-CN/auth.php index d004bf94..a6a6f919 100644 --- a/resources/lang/zh-CN/auth.php +++ b/resources/lang/zh-CN/auth.php @@ -12,7 +12,7 @@ return [ 'tip' => '提示', 'username' => '邮箱', 'password' => '密码', - 'retype_password' => '请再次输入密码', + 'confirm_password' => '请再次输入密码', 'back' => '返 回', 'close' => '关 闭', 'submit' => '提 交', @@ -60,7 +60,7 @@ return [ 'register_anti' => '防刷机制已激活,请勿频繁注册', 'register_fail' => '注册失败,请稍后尝试', 'register_success' => '注册成功', - 'register_success_tip' => '激活邮件已发送! 请查看注册所用邮箱(邮件可能在垃圾箱中)', + 'register_active_tip' => '激活邮件已发送! 请查看注册所用邮箱(邮件可能在垃圾箱中)', "repeat_request" => '请勿重复请求,请刷新后重试', "reset_password_close" => '本站关闭了找回密码功能,请联系:email', 'reset_password_limit' => '24小时内只能重设密码:time次,请勿频繁操作', diff --git a/resources/lang/zh-CN/error.php b/resources/lang/zh-CN/error.php index 47e6d827..e0561d3e 100644 --- a/resources/lang/zh-CN/error.php +++ b/resources/lang/zh-CN/error.php @@ -1,14 +1,15 @@ '拒绝访问', + 'title' => '访问被拒绝', 'ForbiddenRobot' => '检测到机器人访问,禁止访问', 'ForbiddenAccess' => '检测到未知IP或使用代理访问,禁止访问', 'ForbiddenChina' => '检测到中国IP或使用代理访问,禁止访问', 'ForbiddenOversea' => '检测到海外IP或代理访问,禁止访问', 'MissingPage' => '找不到网页', 'Unauthorized' => '未授权访问', - 'RefreshPage' => '请刷新页面,再重新访问', + 'Refresh' => '刷 新', + 'RefreshPage' => '请刷新页面后,再访问', 'SystemError' => '系统错误', 'Visit' => '请访问', 'log' => '日志', diff --git a/resources/lang/zh-tw/auth.php b/resources/lang/zh-tw/auth.php index 83a1084e..bca41071 100644 --- a/resources/lang/zh-tw/auth.php +++ b/resources/lang/zh-tw/auth.php @@ -12,7 +12,7 @@ return [ 'tip' => '提示', 'username' => '郵箱', 'password' => '密碼', - 'retype_password' => '請再次輸入密碼', + 'confirm_password' => '請再次輸入密碼', 'back' => '返 回', 'close' => '關 閉', 'submit' => '提 交', @@ -60,7 +60,7 @@ return [ 'register_anti' => '防刷機制已激活,請勿頻繁註冊', 'register_fail' => '註冊失敗,請稍後嘗試', 'register_success' => '註冊成功', - 'register_success_tip' => '激活郵件已發送! 請查看註冊所用郵箱(郵件可能在垃圾箱中)', + 'register_active_tip' => '激活郵件已發送! 請查看註冊所用郵箱(郵件可能在垃圾箱中)', "repeat_request" => '請勿重複請求,請刷新後重試', "reset_password_close" => '本站關閉了找回密碼功能,請聯繫:email', 'reset_password_limit' => '24小時內只能重設密碼:time次,請勿頻繁操作', diff --git a/resources/lang/zh-tw/error.php b/resources/lang/zh-tw/error.php index e3c2d3e0..f3b51395 100644 --- a/resources/lang/zh-tw/error.php +++ b/resources/lang/zh-tw/error.php @@ -1,14 +1,15 @@ '拒絕訪問', + 'title' => '訪問被拒絕', 'ForbiddenRobot' => '檢測到機器人訪問,禁止訪問', 'ForbiddenAccess' => '檢測到未知IP或使用代理訪問,禁止訪問', 'ForbiddenChina' => '檢測到中國IP或使用代理訪問,禁止訪問', 'ForbiddenOversea' => '檢測到海外IP或打理,禁止訪問', 'MissingPage' => '找不到網頁', 'Unauthorized' => '未授權訪問', - 'RefreshPage' => '請刷新頁面,再重新訪問', + 'Refresh' => '刷 新', + 'RefreshPage' => '請刷新頁面後,再訪問', 'SystemError' => '系統錯誤', 'Visit' => '請訪問', 'log' => '日誌', diff --git a/resources/views/admin/addNode.blade.php b/resources/views/admin/addNode.blade.php index f56b5391..c5944479 100644 --- a/resources/views/admin/addNode.blade.php +++ b/resources/views/admin/addNode.blade.php @@ -83,7 +83,7 @@