From e6906dff654ddf148779cb0cb7430f503cbd4e30 Mon Sep 17 00:00:00 2001 From: alen Date: Wed, 12 Jun 2019 23:00:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=98=BF=E9=87=8C=E4=BA=91OS?= =?UTF-8?q?S=E7=BB=84=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC=EF=BC=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=96=87=E7=AB=A0=E6=A8=A1=E5=9E=8B=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E7=9B=91=E5=90=AC=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E4=B8=8E=E7=94=A8=E6=88=B7=E5=A1=AB=E5=85=85=EF=BC=8C=E5=8D=87?= =?UTF-8?q?=E7=BA=A7laravel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 13 + .../Attachment/AttachmentController.php | 43 + .../Controllers/User/BlacklistController.php | 19 +- README.md | 119 +- app/Http/Controllers/AppController.php | 32 +- app/Model/Attachment.php | 90 +- app/Model/Menu.php | 80 +- app/Model/User.php | 160 +- app/Model/UserProfile.php | 17 +- app/Observers/ArticleLogObserver.php | 17 +- app/Observers/UserLogObserver.php | 12 +- .../BlacklistEloquentUserProvider.php | 46 +- composer.json | 14 +- composer.lock | 1967 +++++++++-------- config/app.php | 1 + config/filesystems.php | 15 + ...018_10_06_075624_create_articles_table.php | 4 +- ...8_10_06_075626_create_activities_table.php | 6 +- ...2018_10_06_075627_create_signups_table.php | 3 +- ...018_10_06_075634_create_checkins_table.php | 2 +- ...6_075737_create_job_applications_table.php | 2 +- ...018_10_06_075913_create_comments_table.php | 2 +- ...18_10_06_093634_create_user_logs_table.php | 2 +- ..._10_07_071632_create_attachments_table.php | 2 +- database/seeds/DatabaseSeeder.php | 3 +- database/seeds/MenuTableSeeder.php | 125 ++ database/seeds/UserTableSeeder.php | 49 + install.sh | 12 +- reinstall.sh | 4 - 29 files changed, 1707 insertions(+), 1154 deletions(-) create mode 100644 Modules/Admin/Http/Controllers/Attachment/AttachmentController.php create mode 100644 database/seeds/MenuTableSeeder.php create mode 100644 database/seeds/UserTableSeeder.php delete mode 100755 reinstall.sh diff --git a/.env.example b/.env.example index 5b5f608..02a6340 100644 --- a/.env.example +++ b/.env.example @@ -41,3 +41,16 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +FILESYSTEM_DRIVER=local +FILESYSTEM_CLOUD=local +FILESYSTEM_ROOT=/web + +OSS_ACCESS_ID= +OSS_ACCESS_KEY= +OSS_BUCKET= +OSS_ENDPOINT= +OSS_CDN_DOMAIN= +OSS_SSL=true +OSS_IS_CNAME=false +OSS_DEBUG=true diff --git a/Modules/Admin/Http/Controllers/Attachment/AttachmentController.php b/Modules/Admin/Http/Controllers/Attachment/AttachmentController.php new file mode 100644 index 0000000..cc17982 --- /dev/null +++ b/Modules/Admin/Http/Controllers/Attachment/AttachmentController.php @@ -0,0 +1,43 @@ + [ + 'file' => 'required|file', + 'directory' => 'string', + ], + ]; + + /** + * 上传文件 + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + * @throws \Throwable + */ + public function postUpload(Request $request): Response + { + $this->checkValidate($request->all(), __FUNCTION__); + if (!$request->hasFile('file')) { + Code::setCode(Code::ERR_PARAMETER); + return $this->response(); + } + $file = $request->file('file'); + $directory = trim($request->input('directory', '')); + $attachment = Attachment::upload($file, $directory) ?: null; + return $this->response($attachment); + } +} diff --git a/Modules/Admin/Http/Controllers/User/BlacklistController.php b/Modules/Admin/Http/Controllers/User/BlacklistController.php index 19febd5..8997bc5 100644 --- a/Modules/Admin/Http/Controllers/User/BlacklistController.php +++ b/Modules/Admin/Http/Controllers/User/BlacklistController.php @@ -39,14 +39,15 @@ class BlacklistController extends AdminController * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response + * @throws \Exception */ public function getIndex(Request $request): Response { $data = $request->all(); - $this->checkValidate($data, 'getIndex'); + $this->checkValidate($data, __FUNCTION__); $blacklist = new Blacklist(); if ($request->input('with_trashed')) { - $blacklist = $blacklist->withTrashed(); + $blacklist = $blacklist::withTrashed(); } if ($request->input('valid') !== null) { $blacklist->where('valid', $request->input('valid')); @@ -68,7 +69,7 @@ public function getIndex(Request $request): Response public function postUpdate(Request $request): Response { $data = $request->all(); - $this->checkValidate($data, 'postUpdate'); + $this->checkValidate($data, __FUNCTION__); $uid = $request->input('uid'); $blacklist = Blacklist::withTrashed()->whereUid($uid)->first(); if (!$blacklist) { @@ -77,10 +78,10 @@ public function postUpdate(Request $request): Response } unset($data['id']); $data['comment'] = $data['comment'] ?: ''; - $data['valid'] = !!$data['valid']; + $data['valid'] = (bool)$data['valid']; $blacklist->fill($data); $blacklist->operator_uid = Auth::id(); - $blacklist->restore(); + $blacklist::restore(); $blacklist->saveOrFail(); return $this->response($blacklist); } @@ -93,9 +94,9 @@ public function postUpdate(Request $request): Response */ public function getShow(Request $request): Response { - $this->checkValidate($request->all(), 'getShow'); + $this->checkValidate($request->all(), __FUNCTION__); $id = +$request->input('id'); - $blacklist = Blacklist::findOrFail($id); + $blacklist = (new Blacklist())->findOrFail($id); return $this->response($blacklist); } @@ -108,9 +109,9 @@ public function getShow(Request $request): Response */ public function deleteDelete(Request $request): Response { - $this->checkValidate($request->all(), 'deleteDelete'); + $this->checkValidate($request->all(), __FUNCTION__); $id = +$request->input('id'); - $blacklist = Blacklist::findOrFail($id); + $blacklist = (new Blacklist())->findOrFail($id); $ret = $blacklist->delete(); if (!$ret) { Code::setCode(Code::ERR_DB_FAIL); diff --git a/README.md b/README.md index c6d8302..91a8315 100755 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -## Website of WebmasterClub at Shanghai Dianji University +# Website of WebmasterClub at Shanghai Dianji University [https://www.djwebclub.com](https://www.djwebclub.com) -### Instruction for deployment +## Instruction for deployment -#### Configure +### Configure Copy the *environment configuration* @@ -18,39 +18,63 @@ and add your *database connection* and *SMTP Server* info to it. vim .env ``` -#### Install the infrastructure +### Install -1. Generate the key for the application -2. Migrate the database tables -3. Install the Laravel Passport used to support OAuth Server +Just run ```bash +./install.sh +``` + +It will execute the following instructions. + +```bash +# 0. Install some dependencies +if hash pecl 2>/dev/null; then + pecl install igbinary redis xdebug +else + if hash apt-get 2>/dev/null; then + apt-get install php-igbinary php-redis php-xdebug php-bcmath php-mbstring + fi +fi + +composer install + +# 1. Generate the key for the application. ./artisan key:generate -./artisan migrate +# 2. Drop all existing tables in your specific database. +./artisan migrate:reset +# 2. Migrate the tables. +# 3. Fill up your database with init data. +./artisan migrate --force --seed +# 4. Install the Laravel Passport used to support OAuth Server. ./artisan passport:install --force ``` -#### Fill up your database -Seed some base data to your database. +### Default User -```bash -./artisan db:seed -``` +| Username | Mobile | Password | Role | +|:-----------------:|:---------:|:--------:|:-----------:| +| admin@admin.admin |18181818181| 123456 | Super Admin | -**Make sure to run it once precisely or duplicated data will be added** +## Reinstall -### Reinstall +Reinstall like an new application according to *Instruction for deployment* -#### Clean your database +Just run -```bash -./artisan migrate:reset +```shell +./install.sh ``` -#### Reinstall +## Uninstall -Reinstall like an new application according to *Instruction for deployment* +## Clean your database + +```bash +./artisan migrate:reset +``` ## Laravel @@ -63,59 +87,6 @@ Reinstall like an new application according to *Instruction for deployment* License

-## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, yet powerful, providing tools needed for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of any modern web application framework, making it a breeze to get started learning the framework. - -If you're not in the mood to read, [Laracasts](https://laracasts.com) contains over 1100 video tutorials on a range of topics including Laravel, modern PHP, unit testing, JavaScript, and more. Boost the skill level of yourself and your entire team by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for helping fund on-going Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell): - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[British Software Development](https://www.britishsoftware.co)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- [UserInsights](https://userinsights.com) -- [Fragrantica](https://www.fragrantica.com) -- [SOFTonSOFA](https://softonsofa.com/) -- [User10](https://user10.com) -- [Soumettre.fr](https://soumettre.fr/) -- [CodeBrisk](https://codebrisk.com) -- [1Forge](https://1forge.com) -- [TECPRESSO](https://tecpresso.co.jp/) -- [Runtime Converter](http://runtimeconverter.com/) -- [WebL'Agence](https://weblagence.com/) -- [Invoice Ninja](https://www.invoiceninja.com) -- [iMi digital](https://www.imi-digital.de/) -- [Earthlink](https://www.earthlink.ro/) -- [Steadfast Collective](https://steadfastcollective.com/) - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - ## License -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). +The Website is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Http/Controllers/AppController.php b/app/Http/Controllers/AppController.php index 86db85b..252b4a5 100644 --- a/app/Http/Controllers/AppController.php +++ b/app/Http/Controllers/AppController.php @@ -3,8 +3,10 @@ namespace App\Http\Controllers; use App\Common\Util; +use App\Http\Response\JsonResponse; use App\Model\Code; use App\Model\Menu; +use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; @@ -27,7 +29,7 @@ public function __construct() { //初始化分页 $page = request()->input('page'); - if ($page !== null && is_integer($page) && +$page > 0) { + if ($page !== null && is_int($page) && +$page > 0) { $this->page = $page; } $pageSize = request()->input('page_size') ?: request()->input('pageSize'); @@ -37,14 +39,14 @@ public function __construct() } protected static $rules = [ - "default" => [ + 'default' => [ 'page' => 'nullable|integer|min:1', 'pageSize' => 'nullable|integer|min:1', ], ]; protected static $rulesMessages = [ - "default" => [ + 'default' => [ 'required' => '缺少必填参数[:attribute]', 'filled' => '[:attribute]不能为空', 'string' => '格式错误,[:attribute]应该为字符串', @@ -64,8 +66,8 @@ public function __construct() ]; protected static $rulesCodes = [ - "default" => [ - "Exists" => Code::ERR_MODEL_NOT_FOUND, + 'default' => [ + 'Exists' => Code::ERR_MODEL_NOT_FOUND, ], ]; @@ -77,7 +79,7 @@ public function __construct() * @param array $errors 错误 * @param int $code 错误码 */ - protected function checkValidate($data, $scene = 'default', &$errors = [], &$code = Code::ERR_PARAMETER) + protected function checkValidate($data, $scene = 'default', &$errors = [], &$code = Code::ERR_PARAMETER): void { $code = Code::ERR_PARAMETER; $validator = Validator::make($data, $this->rules($scene), $this->rulesMessages($scene)); @@ -85,6 +87,7 @@ protected function checkValidate($data, $scene = 'default', &$errors = [], &$cod $rulesCode = $this->rulesCodes($scene); $failed = $validator->failed(); $errors = Arr::flatten($validator->errors()->getMessages()); + /** @noinspection LoopWhichDoesNotLoopInspection */ foreach ($failed as $para => $v) { if (isset($rulesCode[$para])) { $code = $rulesCode[$para]; @@ -98,7 +101,6 @@ protected function checkValidate($data, $scene = 'default', &$errors = [], &$cod } throw new InvalidParameterException(Util::toJson($errors), $code); } - } } @@ -140,20 +142,20 @@ protected function rulesCodes($scene = 'default') * @param array $headers * @return \Illuminate\Http\Response */ - function response($data = null, int $status = 200, array $headers = []): Response + public function response($data = null, int $status = 200, array $headers = []): Response { $extraFields = []; - if (@explode('/', request()->path())[1] === 'page' && (strtoupper(request()->method()) <=> 'GET') === 0) { + if ((strtoupper(request()->method()) <=> 'GET') === 0 && @explode('/', request()->path())[1] === 'page') { //注入菜单、用户角色信息 $extraFields = [ - 'menu' => Menu::getMenuForUser(Auth::user())->map(function (Menu $item) { + 'menu' => Menu::getMenuForUser(Auth::user())->map(static function (Menu $item) { // return $item->toArray(); return Arr::only($item->toArray(), ['id', 'title', 'description', 'url', 'icon_class', 'sort', 'group', 'parent_id']); - })->sort(function ($a, $b) { + })->sort(static function ($a, $b) { return $a['sort'] - $b['sort']; - })->groupBy('group')->map(function ($menus) { + })->groupBy('group')->map(static function ($menus) { $menus = array_values(Util::list2tree($menus)); - $menus = array_filter($menus, function ($menu) { + $menus = array_filter($menus, static function ($menu) { //把没有子项的无用根节点删掉 return $menu['parent_id'] || $menu['url'] || @$menu['_child']; }); @@ -162,7 +164,7 @@ function response($data = null, int $status = 200, array $headers = []): Respons 'user' => Auth::user(), ]; } - return new \App\Http\Response\JsonResponse($data, $status, $headers, $extraFields); + return new JsonResponse($data, $status, $headers, $extraFields); } /** @@ -171,7 +173,7 @@ function response($data = null, int $status = 200, array $headers = []): Respons * @param \Illuminate\Contracts\Pagination\LengthAwarePaginator $pagination * @return array */ - public function getPaginateResponse(\Illuminate\Contracts\Pagination\LengthAwarePaginator $pagination): array + public function getPaginateResponse(LengthAwarePaginator $pagination): array { return [ 'items' => $pagination->items(), diff --git a/app/Model/Attachment.php b/app/Model/Attachment.php index 197b229..08136c3 100644 --- a/app/Model/Attachment.php +++ b/app/Model/Attachment.php @@ -2,8 +2,13 @@ namespace App\Model; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Storage; /** * App\Model\Attachment @@ -27,27 +32,27 @@ * @property-read \Illuminate\Database\Eloquent\Collection|Comment[] $comments * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] $logs * @property-read \App\Model\User|null $user - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereCount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereExtension($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereExtra($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereMd5($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereMime($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment wherePath($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereSize($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUid($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereValid($value) + * @method static Builder|Attachment whereCount($value) + * @method static Builder|Attachment whereCreatedAt($value) + * @method static Builder|Attachment whereDeletedAt($value) + * @method static Builder|Attachment whereExtension($value) + * @method static Builder|Attachment whereExtra($value) + * @method static Builder|Attachment whereFilename($value) + * @method static Builder|Attachment whereId($value) + * @method static Builder|Attachment whereMd5($value) + * @method static Builder|Attachment whereMime($value) + * @method static Builder|Attachment wherePath($value) + * @method static Builder|Attachment whereSize($value) + * @method static Builder|Attachment whereUid($value) + * @method static Builder|Attachment whereUpdatedAt($value) + * @method static Builder|Attachment whereValid($value) * @method static bool|null forceDelete() * @method static \Illuminate\Database\Query\Builder|Attachment onlyTrashed() * @method static bool|null restore() * @method static \Illuminate\Database\Query\Builder|Attachment withTrashed() * @method static \Illuminate\Database\Query\Builder|Attachment withoutTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereStorage($value) - * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUrl($value) + * @method static Builder|Attachment whereStorage($value) + * @method static Builder|Attachment whereUrl($value) * @mixin \Illuminate\Database\Query\Builder */ class Attachment extends Model @@ -63,12 +68,59 @@ class Attachment extends Model 'extra' => 'array', ]; + /** + * @param \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null $file + * @param string $directory + * @param string $storageDisk oss|public|local + * @return \App\Model\Attachment|false + * @throws \Throwable + */ + public static function upload($file, string $directory, string $storageDisk = '') + { + mb_regex_encoding('utf-8'); + $root = '/' . config('filesystems.root'); + $directory = $root . '/' . $directory; + $directory = mb_ereg_replace('[\\/\\\]{2,}', DIRECTORY_SEPARATOR, $directory); + $directory = rtrim($directory, '/\\'); + if (!$storageDisk) { + $storageDisk = Storage::getDefaultDriver(); + } + $md5 = md5_file($file->getRealPath()); + $attachment = self::whereStorage($storageDisk)->where('md5', $md5)->first(); + if ($attachment) { + $attachment->count++; + $attachment->save(); + return $attachment; + } + $disk = Storage::disk($storageDisk); + $storePath = $disk->put($directory, $file); + if (!$storePath) { + Code::setCode(Code::ERR_FAIL); + return false; + } + $url = method_exists($disk, 'url') ? $disk->url($storePath) : asset($storePath); + $response = [ + 'uid' => Auth::id(), + 'filename' => $file->getClientOriginalName(), + 'storage' => $storageDisk, + 'path' => $storePath, + 'url' => $url, + 'size' => $file->getSize(), + 'md5' => $md5, + 'mime' => $file->getMimeType(), + 'extension' => $file->getClientOriginalExtension(), + ]; + $attachment = new self($response); + $attachment->saveOrFail(); + return $attachment; + } + /** * 上传的用户 * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function user() + public function user(): BelongsTo { return $this->belongsTo(User::class, 'uid'); } @@ -78,7 +130,7 @@ public function user() * * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ - public function comments() + public function comments(): MorphMany { return $this->morphMany(Comment::class, 'commentable'); } @@ -88,7 +140,7 @@ public function comments() * * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ - public function logs() + public function logs(): MorphMany { return $this->morphMany(UserLog::class, 'loggable'); } diff --git a/app/Model/Menu.php b/app/Model/Menu.php index 8f3f3e9..fc3b40c 100644 --- a/app/Model/Menu.php +++ b/app/Model/Menu.php @@ -3,9 +3,14 @@ namespace App\Model; use App\Common\Util; +use Closure; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Support\Collection; +use Throwable; /** * App\Model\Menu @@ -25,20 +30,20 @@ * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $deleted_at 软删除时间 - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereGroup($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereHide($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereIconClass($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereModule($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereParentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereSort($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereType($value) - * @method static \Illuminate\Database\Eloquent\Builder|Menu whereUpdatedAt($value) + * @method static Builder|Menu whereCreatedAt($value) + * @method static Builder|Menu whereDeletedAt($value) + * @method static Builder|Menu whereDescription($value) + * @method static Builder|Menu whereGroup($value) + * @method static Builder|Menu whereHide($value) + * @method static Builder|Menu whereIconClass($value) + * @method static Builder|Menu whereId($value) + * @method static Builder|Menu whereModule($value) + * @method static Builder|Menu whereParentId($value) + * @method static Builder|Menu whereSort($value) + * @method static Builder|Menu whereStatus($value) + * @method static Builder|Menu whereTitle($value) + * @method static Builder|Menu whereType($value) + * @method static Builder|Menu whereUpdatedAt($value) * @mixin \Illuminate\Database\Query\Builder * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] $logs * @property-read \App\Model\Menu|null $parent @@ -61,9 +66,9 @@ class Menu extends Model * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function parent() + public function parent(): BelongsTo { - return $this->belongsTo(Menu::class, 'parent_id'); + return $this->belongsTo(__CLASS__, 'parent_id'); } /** @@ -71,9 +76,9 @@ public function parent() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function children() + public function children(): HasMany { - return $this->hasMany(Menu::class, 'parent_id'); + return $this->hasMany(__CLASS__, 'parent_id'); } /** @@ -81,7 +86,7 @@ public function children() * * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ - public function logs() + public function logs(): MorphMany { return $this->morphMany(UserLog::class, 'loggable'); } @@ -94,12 +99,12 @@ public function logs() */ public static function getMenuTree($query = null): array { - $model = static::orderBy('id', 'asc')->orderBy('sort', 'asc'); - if ($query && $query instanceof \Closure) { + $model = (new self())->orderBy('id')->orderBy('sort'); + if ($query && $query instanceof Closure) { $model->where($query); } $list = $model->get(); - $tree = Util::list2tree($list, 'id', 'parent_id', '_child', null) ?: []; + $tree = Util::list2tree($list, 'id', 'parent_id', '_child') ?: []; $tree = array_values($tree); return $tree; } @@ -114,7 +119,7 @@ public static function getMenuTree($query = null): array */ public static function getNestedTitleMenuList($query = null, int $level = 1, string $delimiter = ' - '): array { - $menuTree = Menu::getMenuTree($query); + $menuTree = self::getMenuTree($query); Util::convertNestedTitleTree($menuTree, $delimiter); return Util::tree2list($menuTree, $level); } @@ -132,30 +137,33 @@ public function permissions(): HasMany /** * 根据用户拥有的权限,得到菜单 * - * @param \Spatie\Permission\Traits\HasRoles|null $user - * @param string $group 获取哪个分组的菜单 - * @param null|\Closure $query + * @param \Spatie\Permission\Traits\HasRoles|\Illuminate\Contracts\Auth\Authenticatable|null $user + * @param string $group 获取哪个分组的菜单 + * @param null|\Closure $query * @return \Illuminate\Support\Collection */ public static function getMenuForUser($user, $group = '', $query = null): Collection { $model = static::with('permissions'); - ($query instanceof \Closure) && $model->where($query); + ($query instanceof Closure) && $model->where($query); $group && $model->whereGroup($group); $menus = $model->get(); - if (!$user) return $menus; + if (!$user) { + return $menus; + } $result = collect(); /** @var \App\Model\Menu $menu */ - foreach ($menus as $menu) { - if ($menu->permissions instanceof Collection) { - if ($menu->permissions->isNotEmpty()) { - if (!$user->hasAnyPermission($menu->permissions->all())) { - //菜单下的权限节点不为空,并且用户没有拥有其中任何一个权限 - continue; - } + try { + foreach ($menus as $menu) { + if (($menu->permissions instanceof Collection) + && $menu->permissions->isNotEmpty() + && !$user->hasAnyPermission($menu->permissions->all())) { + //菜单下的权限节点不为空,并且用户没有拥有其中任何一个权限 + continue; } + $result->push($menu); } - $result->push($menu); + } catch (Throwable $e) { } return $result; } diff --git a/app/Model/User.php b/app/Model/User.php index 829083c..a35b67c 100644 --- a/app/Model/User.php +++ b/app/Model/User.php @@ -4,9 +4,14 @@ use App\Contract\MustVerifyMobile; use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\HasOne; +use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Collection; use Laravel\Passport\HasApiTokens; use Spatie\Permission\Traits\HasRoles; @@ -15,25 +20,44 @@ * * @property int * $uid - * @property string $avatar 用户头像 - * @property string $mobile 用户手机号 - * @property string $password 加密后的用户密码 - * @property string $email 用户邮箱 - * @property int $admin 是否是管理员:0-普通用户/1-管理员 - * @property int $status 账户状态:1-启用/0-停用 - * @property string|null $email_verified_at 邮箱验证时间,为空表示邮箱还未被验证 - * @property string|null $mobile_verified_at 手机号验证时间,为空表示手机还未被验证 - * @property string|null $remember_token 记住密码TOKEN,即自动登录TOKEN,Token携带有效期 - * @property string|null $create_ip 注册IP - * @property string|null $update_ip 更新IP - * @property string|null $last_login_at 上次登录时间 - * @property string|null $last_login_ip 上次登录IP - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property \Illuminate\Support\Carbon|null $deleted_at 软删除时间 - * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Client[] $clients - * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications - * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Token[] $tokens + * @property string + * $avatar 用户头像 + * @property string + * $mobile 用户手机号 + * @property string + * $password 加密后的用户密码 + * @property string + * $email 用户邮箱 + * @property int + * $admin 是否是管理员:0-普通用户/1-管理员 + * @property int + * $status 账户状态:1-启用/0-停用 + * @property string|null + * $email_verified_at 邮箱验证时间,为空表示邮箱还未被验证 + * @property string|null + * $mobile_verified_at 手机号验证时间,为空表示手机还未被验证 + * @property string|null + * $remember_token 记住密码TOKEN,即自动登录TOKEN,Token携带有效期 + * @property string|null + * $create_ip 注册IP + * @property string|null + * $update_ip 更新IP + * @property string|null + * $last_login_at 上次登录时间 + * @property string|null + * $last_login_ip 上次登录IP + * @property \Illuminate\Support\Carbon|null + * $created_at + * @property \Illuminate\Support\Carbon|null + * $updated_at + * @property \Illuminate\Support\Carbon|null + * $deleted_at 软删除时间 + * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Client[] + * $clients + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] + * $notifications + * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Token[] + * $tokens * @method static \Illuminate\Database\Eloquent\Builder|User whereAdmin($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereAvatar($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereCreateIp($value) @@ -52,27 +76,43 @@ * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdateIp($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) * @mixin \Illuminate\Database\Eloquent\Builder - * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] $actionLogs - * @property-read \Illuminate\Database\Eloquent\Collection|Activity[] $activities - * @property-read \Illuminate\Database\Eloquent\Collection|Article[] $articles - * @property-read \Illuminate\Database\Eloquent\Collection|Attachment[] $attachments - * @property-read \App\Model\Blacklist $blacklist - * @property-read \Illuminate\Database\Eloquent\Collection|Checkin[] $checkins - * @property-read \Illuminate\Database\Eloquent\Collection|Comment[] $comments - * @property-read \Illuminate\Database\Eloquent\Collection|JobApplication[] $jobApplications - * @property-read \Illuminate\Database\Eloquent\Collection|Job[] $jobs - * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] $logs - * @property-read \App\Model\UserProfile $profile - * @property-read \Illuminate\Database\Eloquent\Collection|Signup[] $signups - * @property-read \App\Model\Subscriber $subscriber - * @property-read \Illuminate\Support\Collection $applied_jobs - * @property-read \Illuminate\Support\Collection $checkin_activities - * @property-read \Illuminate\Support\Collection $signup_activities + * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] + * $actionLogs + * @property-read \Illuminate\Database\Eloquent\Collection|Activity[] + * $activities + * @property-read \Illuminate\Database\Eloquent\Collection|Article[] + * $articles + * @property-read \Illuminate\Database\Eloquent\Collection|Attachment[] + * $attachments + * @property-read \App\Model\Blacklist + * $blacklist + * @property-read \Illuminate\Database\Eloquent\Collection|Checkin[] + * $checkins + * @property-read \Illuminate\Database\Eloquent\Collection|Comment[] + * $comments + * @property-read \Illuminate\Database\Eloquent\Collection|JobApplication[] + * $jobApplications + * @property-read \Illuminate\Database\Eloquent\Collection|Job[] + * $jobs + * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] + * $logs + * @property-read \App\Model\UserProfile + * $profile + * @property-read \Illuminate\Database\Eloquent\Collection|Signup[] + * $signups + * @property-read \App\Model\Subscriber + * $subscriber + * @property-read \Illuminate\Support\Collection + * $applied_jobs + * @property-read \Illuminate\Support\Collection + * $checkin_activities + * @property-read \Illuminate\Support\Collection + * $signup_activities * @method static bool|null forceDelete() - * @method static \Illuminate\Database\Query\Builder|User onlyTrashed() + * @method static Builder|User onlyTrashed() * @method static bool|null restore() - * @method static \Illuminate\Database\Query\Builder|User withTrashed() - * @method static \Illuminate\Database\Query\Builder|User withoutTrashed() + * @method static Builder|User withTrashed() + * @method static Builder|User withoutTrashed() */ class User extends Authenticatable implements MustVerifyEmail, MustVerifyMobile { @@ -124,7 +164,7 @@ class User extends Authenticatable implements MustVerifyEmail, MustVerifyMobile * * @return \Illuminate\Database\Eloquent\Relations\HasOne */ - public function profile() + public function profile(): HasOne { return $this->hasOne(UserProfile::class, 'uid'); } @@ -135,7 +175,7 @@ public function profile() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function activities() + public function activities(): HasMany { return $this->hasMany(Activity::class, 'uid'); } @@ -145,7 +185,7 @@ public function activities() * * @return \Illuminate\Support\Collection */ - public function getCheckinActivitiesAttribute() + public function getCheckinActivitiesAttribute(): Collection { return $this->checkins()->pluck('activity_id'); } @@ -155,7 +195,7 @@ public function getCheckinActivitiesAttribute() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function checkins() + public function checkins(): HasMany { return $this->hasMany(Checkin::class, 'uid')->with('activity'); } @@ -165,7 +205,7 @@ public function checkins() * * @return \Illuminate\Support\Collection */ - public function getSignupActivitiesAttribute() + public function getSignupActivitiesAttribute(): Collection { return $this->signups()->pluck('activity_id'); } @@ -175,7 +215,7 @@ public function getSignupActivitiesAttribute() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function signups() + public function signups(): HasMany { return $this->hasMany(Signup::class, 'uid')->with('activity'); } @@ -185,7 +225,7 @@ public function signups() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function jobs() + public function jobs(): HasMany { return $this->hasMany(Job::class, 'uid'); } @@ -193,9 +233,9 @@ public function jobs() /** * 用户申请的职位 * - * @return \Illuminate\Support\Collection + * @return \Illuminate\Support\Collection|string[] */ - public function getAppliedJobsAttribute() + public function getAppliedJobsAttribute(): Collection { return $this->jobApplications()->pluck('job_id'); } @@ -205,7 +245,7 @@ public function getAppliedJobsAttribute() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function jobApplications() + public function jobApplications(): HasMany { return $this->hasMany(JobApplication::class, 'uid')->with('job_id'); } @@ -215,7 +255,7 @@ public function jobApplications() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function subscriber() + public function subscriber(): HasMany { return $this->hasMany(Subscriber::class, 'uid'); } @@ -225,7 +265,7 @@ public function subscriber() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function comments() + public function comments(): HasMany { return $this->hasMany(Comment::class, 'uid'); } @@ -235,7 +275,7 @@ public function comments() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function articles() + public function articles(): HasMany { return $this->hasMany(Article::class, 'uid'); } @@ -245,7 +285,7 @@ public function articles() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function attachments() + public function attachments(): HasMany { return $this->hasMany(Attachment::class, 'uid'); } @@ -255,7 +295,7 @@ public function attachments() * * @return \Illuminate\Database\Eloquent\Relations\HasOne */ - public function blacklist() + public function blacklist(): HasOne { return $this->hasOne(Blacklist::class, 'uid'); } @@ -265,7 +305,7 @@ public function blacklist() * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function actionLogs() + public function actionLogs(): HasMany { return $this->hasMany(UserLog::class, 'uid'); } @@ -275,7 +315,7 @@ public function actionLogs() * * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ - public function logs() + public function logs(): MorphMany { return $this->morphMany(UserLog::class, 'loggable'); } @@ -285,7 +325,7 @@ public function logs() * * @return bool */ - public function getEmailVerifiedAttribute() + public function getEmailVerifiedAttribute(): bool { return $this->hasVerifiedEmail(); } @@ -295,9 +335,9 @@ public function getEmailVerifiedAttribute() * * @return bool */ - public function getMobileVerifiedAttribute() + public function getMobileVerifiedAttribute(): bool { - return !is_null($this->getAttribute('mobile_verified_at')); + return $this->getAttribute('mobile_verified_at') !== null; } /** @@ -305,9 +345,9 @@ public function getMobileVerifiedAttribute() * * @return bool */ - public function getIsBlacklistedAttribute() + public function getIsBlacklistedAttribute(): bool { $blacklist = $this->blacklist()->where('valid', 1)->first(); - return !is_null($blacklist); + return $blacklist !== null; } } diff --git a/app/Model/UserProfile.php b/app/Model/UserProfile.php index 5391f08..d1bc399 100644 --- a/app/Model/UserProfile.php +++ b/app/Model/UserProfile.php @@ -3,7 +3,10 @@ namespace App\Model; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; /** * App\Model\UserProfile @@ -29,10 +32,10 @@ * @property-read \Illuminate\Database\Eloquent\Collection|UserLog[] $logs * @property-read \App\Model\User $user * @method static bool|null forceDelete() - * @method static \Illuminate\Database\Query\Builder|UserProfile onlyTrashed() + * @method static Builder|UserProfile onlyTrashed() * @method static bool|null restore() - * @method static \Illuminate\Database\Query\Builder|UserProfile withTrashed() - * @method static \Illuminate\Database\Query\Builder|UserProfile withoutTrashed() + * @method static Builder|UserProfile withTrashed() + * @method static Builder|UserProfile withoutTrashed() */ class UserProfile extends Model { @@ -43,10 +46,10 @@ class UserProfile extends Model use SoftDeletes; protected $fillable = [ - 'stu_no', 'school', 'class', 'name', + 'stu_no', 'school', 'class', 'name', 'created_at', 'updated_at', 'deleted_at', ]; protected $visible = [ - 'stu_no', 'school', 'class', 'name', + 'stu_no', 'school', 'class', 'name', 'created_at', 'updated_at', 'deleted_at', ]; /** @@ -54,7 +57,7 @@ class UserProfile extends Model * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function user() + public function user(): BelongsTo { return $this->belongsTo(User::class, 'uid'); } @@ -64,7 +67,7 @@ public function user() * * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ - public function logs() + public function logs(): MorphMany { return $this->morphMany(UserLog::class, 'loggable'); } diff --git a/app/Observers/ArticleLogObserver.php b/app/Observers/ArticleLogObserver.php index 22e83ab..9678531 100644 --- a/app/Observers/ArticleLogObserver.php +++ b/app/Observers/ArticleLogObserver.php @@ -22,23 +22,18 @@ class ArticleLogObserver extends CommonLogBaseObserver 'title' => '标题', ]; - public function created(Article $article) + public function created(Article $article): bool { - return $this->__call('created', Arr::wrap($article)); + return $this->__call(__FUNCTION__, Arr::wrap($article)); } - public function updated(Article $article) + public function updated(Article $article): bool { - return $this->__call('updated', Arr::wrap($article)); + return $this->__call(__FUNCTION__, Arr::wrap($article)); } - public function deleted(Article $article) + public function deleted(Article $article): bool { - return $this->__call('deleted', Arr::wrap($article)); - } - - public function retrieved(Article $article) - { - return $this->__call('retrieved', Arr::wrap($article)); + return $this->__call(__FUNCTION__, Arr::wrap($article)); } } diff --git a/app/Observers/UserLogObserver.php b/app/Observers/UserLogObserver.php index 4bdab63..d254017 100644 --- a/app/Observers/UserLogObserver.php +++ b/app/Observers/UserLogObserver.php @@ -22,18 +22,18 @@ class UserLogObserver extends CommonLogBaseObserver 'email' => 'EMAIL', ]; - public function created(User $user) + public function created(User $user): bool { - return $this->__call('created', Arr::wrap($user)); + return $this->__call(__FUNCTION__, Arr::wrap($user)); } - public function updated(User $user) + public function updated(User $user): bool { - return $this->__call('updated', Arr::wrap($user)); + return $this->__call(__FUNCTION__, Arr::wrap($user)); } - public function deleted(User $user) + public function deleted(User $user): bool { - return $this->__call('deleted', Arr::wrap($user)); + return $this->__call(__FUNCTION__, Arr::wrap($user)); } } diff --git a/app/Providers/BlacklistEloquentUserProvider.php b/app/Providers/BlacklistEloquentUserProvider.php index 583f8d5..504f79b 100644 --- a/app/Providers/BlacklistEloquentUserProvider.php +++ b/app/Providers/BlacklistEloquentUserProvider.php @@ -27,7 +27,7 @@ class BlacklistEloquentUserProvider extends EloquentUserProvider /** * Retrieve a user by the given credentials. * - * @param array $credentials + * @param array $credentials * @return \Illuminate\Contracts\Auth\Authenticatable|null|User */ public function retrieveByCredentials(array $credentials) @@ -38,6 +38,7 @@ public function retrieveByCredentials(array $credentials) return null; } + /** @var User $query */ $query = $this->createModel(); //允许:UID/EMAIL/手机号/学号 @@ -46,30 +47,35 @@ public function retrieveByCredentials(array $credentials) //email $query->where('email', $credentials['username']); return $query->first(); - } else { - //uid - $model = (clone $query)->find($credentials['username']); - if ($model) return $model; - //手机号 - $model = (clone $query)->where('mobile', $credentials['username'])->first(); - if ($model) return $model; - //学号 - $model = (new UserProfile())->where('stu_no', $credentials['username'])->first(); - if ($model) return $model->user; + } + + //uid + $model = (clone $query)->find($credentials['username']); + if ($model) { + return $model; + } + //手机号 + $model = (clone $query)->where('mobile', $credentials['username'])->first(); + if ($model) { + return $model; + } + //学号 + $model = (new UserProfile())->where('stu_no', $credentials['username'])->first(); + if ($model) { + return $model->user; } return null; } - public function validateCredentials(UserContract $user, array $credentials) + public function validateCredentials(UserContract $user, array $credentials): bool { - if ($user instanceof User) { - if ($user->getIsBlacklistedAttribute()) { - //黑名单 - if (app()->environment('production') || !request()->input('nologin')) { - //如果不是生产环境并且nologin标记为1,就允许黑名单用户访问 - Code::setCode(Code::ERR_USER_BLACKLIST); - return false; - } + if (($user instanceof User) + && $user->getIsBlacklistedAttribute()) { + //黑名单 + if (app()->environment('production') || !request()->input('nologin')) { + //如果不是生产环境并且nologin标记为1,就允许黑名单用户访问 + Code::setCode(Code::ERR_USER_BLACKLIST); + return false; } } return parent::validateCredentials($user, $credentials); diff --git a/composer.json b/composer.json index 0c576a7..2edbaf7 100755 --- a/composer.json +++ b/composer.json @@ -1,7 +1,10 @@ { "name": "laravel/laravel", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "type": "project", "require": { @@ -12,14 +15,16 @@ "aliyuncs/oss-sdk-php": "^2.3", "endroid/qr-code": "^3.4", "fideloper/proxy": "^4.0", - "laravel/framework": "5.7.*", + "jacobcyl/ali-oss-storage": "dev-master", + "laravel/framework": "^5.8.0", "laravel/passport": "^7.0", "laravel/tinker": "^1.0", "nwidart/laravel-modules": "^4.0", "predis/predis": "^1.1", "spatie/laravel-permission": "^2.34", "spipu/html2pdf": "^5.2", - "zedisdog/laravel-schema-extend": "^1.1" + "zedisdog/laravel-schema-extend": "^1.1", + "ext-mbstring": "*" }, "require-dev": { "barryvdh/laravel-ide-helper": "^2.5", @@ -49,8 +54,7 @@ }, "extra": { "laravel": { - "dont-discover": [ - ] + "dont-discover": [] } }, "scripts": { diff --git a/composer.lock b/composer.lock index c3939d6..cf1aa41 100755 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7aa2aa348c2be3c5a3beb3d4cf59e9a0", + "content-hash": "53d30c2b1f48b995ee2f9705158faa35", "packages": [ { "name": "aliyuncs/oss-sdk-php", @@ -339,16 +339,16 @@ }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", "shasum": "", "mirrors": [ { @@ -360,6 +360,9 @@ "require": { "php": ">=5.3.2" }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, "type": "library", "extra": { "branch-alias": { @@ -367,8 +370,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -389,26 +392,29 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2019-06-08T11:03:04+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5" + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/92a2c3768d50e21a1f26a53cb795ce72806266c5", - "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", "shasum": "", "mirrors": [ { @@ -418,12 +424,17 @@ ] }, "require": { - "php": ">=7.0.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~6.4" + "phpunit/phpunit": "^6.4|^7.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -450,20 +461,20 @@ "cron", "schedule" ], - "time": "2018-06-06T03:12:17+00:00" + "time": "2019-03-31T00:38:28+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.7", + "version": "2.1.8", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" + "reference": "c26463ff9241f27907112fbcd0c86fa670cfef98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c26463ff9241f27907112fbcd0c86fa670cfef98", + "reference": "c26463ff9241f27907112fbcd0c86fa670cfef98", "shasum": "", "mirrors": [ { @@ -513,20 +524,20 @@ "validation", "validator" ], - "time": "2018-12-04T22:38:24+00:00" + "time": "2019-05-16T22:02:54+00:00" }, { "name": "endroid/installer", - "version": "1.0.8", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/endroid/installer.git", - "reference": "b41b44ae2e410609be3b7f080b626dfc9ff4822a" + "reference": "d4ae2bbd7977148dcb514ad625ece1a36f751a8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/installer/zipball/b41b44ae2e410609be3b7f080b626dfc9ff4822a", - "reference": "b41b44ae2e410609be3b7f080b626dfc9ff4822a", + "url": "https://api.github.com/repos/endroid/installer/zipball/d4ae2bbd7977148dcb514ad625ece1a36f751a8b", + "reference": "d4ae2bbd7977148dcb514ad625ece1a36f751a8b", "shasum": "", "mirrors": [ { @@ -537,10 +548,7 @@ }, "require": { "composer-plugin-api": "^1.1", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^5.7|^6.0" + "php": ">=7.2" }, "type": "composer-plugin", "extra": { @@ -564,20 +572,20 @@ "email": "info@endroid.nl" } ], - "time": "2018-11-30T13:00:41+00:00" + "time": "2019-03-30T21:42:01+00:00" }, { "name": "endroid/qr-code", - "version": "3.5.6", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/endroid/qr-code.git", - "reference": "9cc1eaecb9bc670bba82f27b8dfccd4cbed2df2f" + "reference": "15641eec67291c6404b612694f65345c84a79919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/9cc1eaecb9bc670bba82f27b8dfccd4cbed2df2f", - "reference": "9cc1eaecb9bc670bba82f27b8dfccd4cbed2df2f", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/15641eec67291c6404b612694f65345c84a79919", + "reference": "15641eec67291c6404b612694f65345c84a79919", "shasum": "", "mirrors": [ { @@ -588,19 +596,17 @@ }, "require": { "bacon/bacon-qr-code": "^2.0", - "endroid/installer": "^1.0.3", + "endroid/installer": "^1.1.5", "ext-gd": "*", "khanamiryan/qrcode-detector-decoder": "^1.0.2", "myclabs/php-enum": "^1.5", - "php": ">=7.1", - "symfony/options-resolver": "^2.7|^3.0|^4.0", - "symfony/property-access": "^2.7|^3.0|^4.0" + "php": ">=7.2", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/options-resolver": "^3.4|^4.0", + "symfony/property-access": "^3.4|^4.0" }, "require-dev": { - "phpunit/phpunit": "^5.7|^6.0" - }, - "suggest": { - "symfony/http-foundation": "Install if you want to use QrCodeResponse" + "endroid/test": "^1.1.4" }, "type": "library", "extra": { @@ -633,20 +639,20 @@ "qr", "qrcode" ], - "time": "2019-03-03T08:34:10+00:00" + "time": "2019-05-25T20:13:40+00:00" }, { "name": "erusev/parsedown", - "version": "1.7.1", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", "shasum": "", "mirrors": [ { @@ -685,7 +691,7 @@ "markdown", "parser" ], - "time": "2018-03-08T01:11:30+00:00" + "time": "2019-03-17T18:48:37+00:00" }, { "name": "fideloper/proxy", @@ -1000,6 +1006,63 @@ ], "time": "2018-12-04T20:46:45+00:00" }, + { + "name": "jacobcyl/ali-oss-storage", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/jacobcyl/Aliyun-oss-storage.git", + "reference": "9abd13bfb288d93b85db5a1ddc0d2b6b29b26a03" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jacobcyl/Aliyun-oss-storage/zipball/9abd13bfb288d93b85db5a1ddc0d2b6b29b26a03", + "reference": "9abd13bfb288d93b85db5a1ddc0d2b6b29b26a03", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "aliyuncs/oss-sdk-php": "~2.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Jacobcyl\\AliOSS\\AliOssServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Jacobcyl\\AliOSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "jacobcyl", + "email": "cyl.jacob@gmail.com" + } + ], + "description": "aliyun oss filesystem storage for laravel 5+", + "homepage": "http://jacobcyl.github.io/Aliyun-oss-storage/", + "keywords": [ + "aliyun", + "filesystems", + "laravel", + "oss", + "storage" + ], + "time": "2018-04-02T03:46:55+00:00" + }, { "name": "jakub-onderka/php-console-color", "version": "v0.2", @@ -1158,16 +1221,16 @@ }, { "name": "laravel/framework", - "version": "v5.7.28", + "version": "v5.8.22", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192" + "reference": "f47d1a0fe7fd9b98d86ed2d404823dfeb4938de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/8e69728f1c80a024588adbd24c65c4fcf9aa9192", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192", + "url": "https://api.github.com/repos/laravel/framework/zipball/f47d1a0fe7fd9b98d86ed2d404823dfeb4938de3", + "reference": "f47d1a0fe7fd9b98d86ed2d404823dfeb4938de3", "shasum": "", "mirrors": [ { @@ -1179,30 +1242,30 @@ "require": { "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.0", "erusev/parsedown": "^1.7", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "laravel/nexmo-notification-channel": "^1.0", - "laravel/slack-notification-channel": "^1.0", "league/flysystem": "^1.0.8", "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3", + "nesbot/carbon": "^1.26.3 || ^2.0", "opis/closure": "^3.1", "php": "^7.1.3", "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.1", - "symfony/debug": "^4.1", - "symfony/finder": "^4.1", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1", - "symfony/process": "^4.1", - "symfony/routing": "^4.1", - "symfony/var-dumper": "^4.1", + "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" @@ -1245,12 +1308,12 @@ "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.0", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.7.*", - "pda/pheanstalk": "^3.0|^4.0", - "phpunit/phpunit": "^7.5", + "orchestra/testbench-core": "3.8.*", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^7.5|^8.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1", + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", "true/punycode": "^2.1" }, "suggest": { @@ -1268,17 +1331,18 @@ "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 (^3.0|^4.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.1).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.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.7-dev" + "dev-master": "5.8-dev" } }, "autoload": { @@ -1306,83 +1370,20 @@ "framework", "laravel" ], - "time": "2019-02-26T15:41:34+00:00" - }, - { - "name": "laravel/nexmo-notification-channel", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/nexmo-notification-channel.git", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", - "shasum": "", - "mirrors": [ - { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "nexmo/client": "^1.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\NexmoChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Nexmo Notification Channel for laravel.", - "keywords": [ - "laravel", - "nexmo", - "notifications" - ], - "time": "2018-12-04T12:57:08+00:00" + "time": "2019-06-12T12:54:34+00:00" }, { "name": "laravel/passport", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "56330509283d465acaaff842637e539d03bcf9ca" + "reference": "758e143052f0a353df8dff9349f84601579e457d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/56330509283d465acaaff842637e539d03bcf9ca", - "reference": "56330509283d465acaaff842637e539d03bcf9ca", + "url": "https://api.github.com/repos/laravel/passport/zipball/758e143052f0a353df8dff9349f84601579e457d", + "reference": "758e143052f0a353df8dff9349f84601579e457d", "shasum": "", "mirrors": [ { @@ -1395,19 +1396,19 @@ "ext-json": "*", "firebase/php-jwt": "~3.0|~4.0|~5.0", "guzzlehttp/guzzle": "~6.0", - "illuminate/auth": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/console": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/container": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/database": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/http": "~5.6.0|~5.7.0|~5.8.0", - "illuminate/support": "~5.6.0|~5.7.0|~5.8.0", + "illuminate/auth": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/console": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/container": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/database": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/http": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", + "illuminate/support": "~5.6.0|~5.7.0|~5.8.0|~5.9.0", "league/oauth2-server": "^7.0", "php": ">=7.1", "phpseclib/phpseclib": "^2.0", "symfony/psr-http-message-bridge": "~1.0", - "zendframework/zend-diactoros": "~1.0" + "zendframework/zend-diactoros": "~1.0|~2.0" }, "require-dev": { "mockery/mockery": "~1.0", @@ -1445,70 +1446,7 @@ "oauth", "passport" ], - "time": "2019-02-14T16:29:26+00:00" - }, - { - "name": "laravel/slack-notification-channel", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/slack-notification-channel.git", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", - "shasum": "", - "mirrors": [ - { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\SlackChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Slack Notification Channel for laravel.", - "keywords": [ - "laravel", - "notifications", - "slack" - ], - "time": "2018-12-12T13:12:06+00:00" + "time": "2019-05-28T16:06:20+00:00" }, { "name": "laravel/tinker", @@ -1581,16 +1519,16 @@ }, { "name": "lcobucci/jwt", - "version": "3.2.5", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b" + "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", "shasum": "", "mirrors": [ { @@ -1600,20 +1538,17 @@ ] }, "require": { + "ext-mbstring": "*", "ext-openssl": "*", - "php": ">=5.5" + "php": "^5.6 || ^7.0" }, "require-dev": { - "mdanter/ecc": "~0.3.1", "mikey179/vfsstream": "~1.5", "phpmd/phpmd": "~2.2", "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "~4.5", + "phpunit/phpunit": "^5.7 || ^7.3", "squizlabs/php_codesniffer": "~2.3" }, - "suggest": { - "mdanter/ecc": "Required to use Elliptic Curves based algorithms." - }, "type": "library", "extra": { "branch-alias": { @@ -1641,7 +1576,7 @@ "JWS", "jwt" ], - "time": "2018-11-11T12:22:26+00:00" + "time": "2019-05-24T18:30:49+00:00" }, { "name": "league/event", @@ -1701,16 +1636,16 @@ }, { "name": "league/flysystem", - "version": "1.0.50", + "version": "1.0.52", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "dab4e7624efa543a943be978008f439c333f2249" + "reference": "c5a5097156387970e6f0ccfcdf03f752856f3391" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dab4e7624efa543a943be978008f439c333f2249", - "reference": "dab4e7624efa543a943be978008f439c333f2249", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c5a5097156387970e6f0ccfcdf03f752856f3391", + "reference": "c5a5097156387970e6f0ccfcdf03f752856f3391", "shasum": "", "mirrors": [ { @@ -1787,20 +1722,20 @@ "sftp", "storage" ], - "time": "2019-02-01T08:50:36+00:00" + "time": "2019-05-20T20:21:14+00:00" }, { "name": "league/oauth2-server", - "version": "7.3.2", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "b71f382cd76e3f6905dfc53ef8148b3eebe1fd41" + "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/b71f382cd76e3f6905dfc53ef8148b3eebe1fd41", - "reference": "b71f382cd76e3f6905dfc53ef8148b3eebe1fd41", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", + "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", "shasum": "", "mirrors": [ { @@ -1870,7 +1805,7 @@ "secure", "server" ], - "time": "2018-11-21T21:42:43+00:00" + "time": "2019-05-05T09:22:01+00:00" }, { "name": "monolog/monolog", @@ -1958,16 +1893,16 @@ }, { "name": "myclabs/php-enum", - "version": "1.6.6", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/myclabs/php-enum.git", - "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e" + "reference": "f46847626b8739de22e4ebc6b56010f317d4448d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/32c4202886c51fbe5cc3a7c34ec5c9a4a790345e", - "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/f46847626b8739de22e4ebc6b56010f317d4448d", + "reference": "f46847626b8739de22e4ebc6b56010f317d4448d", "shasum": "", "mirrors": [ { @@ -1978,7 +1913,7 @@ }, "require": { "ext-json": "*", - "php": ">=5.4" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^4.8.35|^5.7|^6.0", @@ -2005,20 +1940,20 @@ "keywords": [ "enum" ], - "time": "2019-02-04T21:18:49+00:00" + "time": "2019-05-05T10:12:03+00:00" }, { "name": "nesbot/carbon", - "version": "1.36.2", + "version": "2.19.2", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9" + "reference": "adcad3f3af52d0ad4ad7b05f43aa58243b6ca67b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/adcad3f3af52d0ad4ad7b05f43aa58243b6ca67b", + "reference": "adcad3f3af52d0ad4ad7b05f43aa58243b6ca67b", "shasum": "", "mirrors": [ { @@ -2028,15 +1963,17 @@ ] }, "require": { - "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" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "suggest": { - "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", - "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "^2.6", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" }, "type": "library", "extra": { @@ -2048,7 +1985,7 @@ }, "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2069,74 +2006,20 @@ "datetime", "time" ], - "time": "2018-12-28T10:07:33+00:00" - }, - { - "name": "nexmo/client", - "version": "1.6.2", - "source": { - "type": "git", - "url": "https://github.com/Nexmo/nexmo-php.git", - "reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/2f79f67f24225ea627ee14578e98c96276cdd4c5", - "reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5", - "shasum": "", - "mirrors": [ - { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "lcobucci/jwt": "^3.2", - "php": ">=5.6", - "php-http/client-implementation": "^1.0", - "php-http/guzzle6-adapter": "^1.0", - "zendframework/zend-diactoros": "^1.3" - }, - "require-dev": { - "estahn/phpunit-json-assertions": "^1.0.0", - "php-http/mock-client": "^0.3.0", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Nexmo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tim Lytle", - "email": "tim@nexmo.com", - "homepage": "http://twitter.com/tjlytle", - "role": "Developer" - } - ], - "description": "PHP Client for using Nexmo's API.", - "time": "2019-02-07T11:14:34+00:00" + "time": "2019-06-07T09:56:45+00:00" }, { "name": "nikic/php-parser", - "version": "v4.2.1", + "version": "v4.2.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0" + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/5221f49a608808c1e4d436df32884cbc1b821ac0", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420", + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420", "shasum": "", "mirrors": [ { @@ -2180,20 +2063,20 @@ "parser", "php" ], - "time": "2019-02-16T20:54:15+00:00" + "time": "2019-05-25T20:07:01+00:00" }, { "name": "nwidart/laravel-modules", - "version": "4.0.0", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/nWidart/laravel-modules.git", - "reference": "d487d9be3bfd6b7365678fd805d9ba5f0dd8295c" + "reference": "0efd81aef05419a9d032e5bbd7859dd8a67cb7e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/d487d9be3bfd6b7365678fd805d9ba5f0dd8295c", - "reference": "d487d9be3bfd6b7365678fd805d9ba5f0dd8295c", + "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/0efd81aef05419a9d032e5bbd7859dd8a67cb7e3", + "reference": "0efd81aef05419a9d032e5bbd7859dd8a67cb7e3", "shasum": "", "mirrors": [ { @@ -2256,20 +2139,20 @@ "nwidart", "rad" ], - "time": "2018-09-30T10:02:46+00:00" + "time": "2019-03-04T09:50:46+00:00" }, { "name": "opis/closure", - "version": "3.1.6", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b" + "reference": "f846725591203098246276b2e7b9e8b7814c4965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b", - "reference": "ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b", + "url": "https://api.github.com/repos/opis/closure/zipball/f846725591203098246276b2e7b9e8b7814c4965", + "reference": "f846725591203098246276b2e7b9e8b7814c4965", "shasum": "", "mirrors": [ { @@ -2283,12 +2166,12 @@ }, "require-dev": { "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0|^5.0|^6.0|^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "3.3.x-dev" } }, "autoload": { @@ -2323,7 +2206,7 @@ "serialization", "serialize" ], - "time": "2019-02-22T10:30:00+00:00" + "time": "2019-05-31T20:04:32+00:00" }, { "name": "paragonie/random_compat", @@ -2377,17 +2260,17 @@ "time": "2018-07-02T15:55:56+00:00" }, { - "name": "php-http/guzzle6-adapter", - "version": "v1.1.1", + "name": "phpoption/phpoption", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", "shasum": "", "mirrors": [ { @@ -2397,63 +2280,53 @@ ] }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "php-http/httplug": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" + "php": ">=5.3.0" }, "require-dev": { - "ext-curl": "*", - "php-http/adapter-integration-tests": "^0.4" + "phpunit/phpunit": "4.7.*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" + "psr-0": { + "PhpOption\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache2" ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", + "description": "Option Type for PHP", "keywords": [ - "Guzzle", - "http" + "language", + "option", + "php", + "type" ], - "time": "2016-05-10T06:13:32+00:00" + "time": "2015-07-25T16:39:46+00:00" }, { - "name": "php-http/httplug", - "version": "v1.1.0", + "name": "phpseclib/phpseclib", + "version": "2.0.17", "source": { "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "3ca5b88d582c69178c8d01fd9d02b94e15042bb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/3ca5b88d582c69178c8d01fd9d02b94e15042bb8", + "reference": "3ca5b88d582c69178c8d01fd9d02b94e15042bb8", "shasum": "", "mirrors": [ { @@ -2463,23 +2336,27 @@ ] }, "require": { - "php": ">=5.4", - "php-http/promise": "^1.0", - "psr/http-message": "^1.0" + "php": ">=5.3.3" }, "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" + "phing/phing": "~2.7", + "phpunit/phpunit": "^4.8.35|^5.7|^6.0", + "sami/sami": "~2.0", + "squizlabs/php_codesniffer": "~2.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." }, + "type": "library", "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], "psr-4": { - "Http\\Client\\": "src/" + "phpseclib\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2488,131 +2365,9 @@ ], "authors": [ { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2016-08-31T08:30:17+00:00" - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", - "shasum": "", - "mirrors": [ - { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2016-01-26T13:27:02+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.14", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "8ebfcadbf30524aeb75b2c446bc2519d5b321478" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/8ebfcadbf30524aeb75b2c446bc2519d5b321478", - "reference": "8ebfcadbf30524aeb75b2c446bc2519d5b321478", - "shasum": "", - "mirrors": [ - { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" }, { "name": "Patrick Monnerat", @@ -2656,7 +2411,7 @@ "x.509", "x509" ], - "time": "2019-01-27T19:37:29+00:00" + "time": "2019-05-26T20:38:34+00:00" }, { "name": "predis/predis", @@ -2769,6 +2524,64 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "time": "2019-04-30T12:38:16+00:00" + }, { "name": "psr/http-message", "version": "1.0.1", @@ -3148,16 +2961,16 @@ }, { "name": "spatie/laravel-permission", - "version": "2.35.0", + "version": "2.37.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-permission.git", - "reference": "c29eaa782e222299bd669feb37a39285c04f2ee4" + "reference": "81dbe9d372d70c255b66a2727a235076509f8d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/c29eaa782e222299bd669feb37a39285c04f2ee4", - "reference": "c29eaa782e222299bd669feb37a39285c04f2ee4", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/81dbe9d372d70c255b66a2727a235076509f8d45", + "reference": "81dbe9d372d70c255b66a2727a235076509f8d45", "shasum": "", "mirrors": [ { @@ -3215,7 +3028,7 @@ "security", "spatie" ], - "time": "2019-03-01T19:52:03+00:00" + "time": "2019-04-09T12:45:17+00:00" }, { "name": "spipu/html2pdf", @@ -3279,16 +3092,16 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.1.3", + "version": "v6.2.1", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4" + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", "shasum": "", "mirrors": [ { @@ -3299,11 +3112,14 @@ }, "require": { "egulias/email-validator": "~2.0", - "php": ">=7.0.0" + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.3@dev" + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" }, "suggest": { "ext-intl": "Needed to support internationalized email addresses", @@ -3312,7 +3128,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "6.2-dev" } }, "autoload": { @@ -3340,20 +3156,20 @@ "mail", "mailer" ], - "time": "2018-09-11T07:12:52+00:00" + "time": "2019-04-21T09:21:45+00:00" }, { "name": "symfony/console", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "9dc2299a016497f9ee620be94524e6c0af0280a9" + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/9dc2299a016497f9ee620be94524e6c0af0280a9", - "reference": "9dc2299a016497f9ee620be94524e6c0af0280a9", + "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64", + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64", "shasum": "", "mirrors": [ { @@ -3364,11 +3180,13 @@ }, "require": { "php": "^7.1.3", - "symfony/contracts": "^1.0", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, "provide": { @@ -3378,9 +3196,10 @@ "psr/log": "~1.0", "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { "psr/log": "For using the console logger", @@ -3391,7 +3210,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3418,20 +3237,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-06-05T13:25:51+00:00" }, { - "name": "symfony/contracts", - "version": "v1.0.2", + "name": "symfony/css-selector", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + "url": "https://github.com/symfony/css-selector.git", + "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/105c98bb0c5d8635bea056135304bd8edcc42b4d", + "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d", "shasum": "", "mirrors": [ { @@ -3443,29 +3262,18 @@ "require": { "php": "^7.1.3" }, - "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0" - }, - "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3474,38 +3282,34 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2018-12-05T08:06:11+00:00" + "time": "2019-01-16T21:53:39+00:00" }, { - "name": "symfony/css-selector", - "version": "v4.2.4", + "name": "symfony/debug", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "48eddf66950fa57996e1be4a55916d65c10c604a" + "url": "https://github.com/symfony/debug.git", + "reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a", - "reference": "48eddf66950fa57996e1be4a55916d65c10c604a", + "url": "https://api.github.com/repos/symfony/debug/zipball/4e025104f1f9adb1f7a2d14fb102c9986d6e97c6", + "reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6", "shasum": "", "mirrors": [ { @@ -3515,17 +3319,24 @@ ] }, "require": { - "php": "^7.1.3" + "php": "^7.1.3", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\CssSelector\\": "" + "Symfony\\Component\\Debug\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3536,10 +3347,6 @@ "MIT" ], "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" @@ -3549,22 +3356,22 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-01-16T20:31:39+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "symfony/debug", - "version": "v4.2.4", + "name": "symfony/event-dispatcher", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "de73f48977b8eaf7ce22814d66e43a1662cc864f" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/de73f48977b8eaf7ce22814d66e43a1662cc864f", - "reference": "de73f48977b8eaf7ce22814d66e43a1662cc864f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f", "shasum": "", "mirrors": [ { @@ -3575,23 +3382,37 @@ }, "require": { "php": "^7.1.3", - "psr/log": "~1.0" + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { - "symfony/http-kernel": "~3.4|~4.0" + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/service-contracts": "^1.1", + "symfony/stopwatch": "~3.4|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3611,22 +3432,22 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-03-03T18:11:24+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.2.4", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3354d2e6af986dd71f68b4e5cf4a933ab58697fb" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3354d2e6af986dd71f68b4e5cf4a933ab58697fb", - "reference": "3354d2e6af986dd71f68b4e5cf4a933ab58697fb", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8fa2cf2177083dd59cf8e44ea4b6541764fbda69", + "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69", "shasum": "", "mirrors": [ { @@ -3636,36 +3457,22 @@ ] }, "require": { - "php": "^7.1.3", - "symfony/contracts": "^1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0" + "php": "^7.1.3" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "1.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3673,30 +3480,38 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-05-22T12:23:29+00:00" }, { "name": "symfony/finder", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "267b7002c1b70ea80db0833c3afe05f0fbde580a" + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/267b7002c1b70ea80db0833c3afe05f0fbde580a", - "reference": "267b7002c1b70ea80db0833c3afe05f0fbde580a", + "url": "https://api.github.com/repos/symfony/finder/zipball/b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", "shasum": "", "mirrors": [ { @@ -3711,7 +3526,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3738,20 +3553,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:42:05+00:00" + "time": "2019-05-26T20:47:49+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "850a667d6254ccf6c61d853407b16f21c4579c77" + "reference": "b7e4945dd9b277cd24e93566e4da0a87956392a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/850a667d6254ccf6c61d853407b16f21c4579c77", - "reference": "850a667d6254ccf6c61d853407b16f21c4579c77", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b7e4945dd9b277cd24e93566e4da0a87956392a9", + "reference": "b7e4945dd9b277cd24e93566e4da0a87956392a9", "shasum": "", "mirrors": [ { @@ -3762,6 +3577,7 @@ }, "require": { "php": "^7.1.3", + "symfony/mime": "^4.3", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { @@ -3771,7 +3587,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3798,20 +3614,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-02-26T08:03:39+00:00" + "time": "2019-06-06T10:05:02+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "895ceccaa8149f9343e6134e607c21da42d73b7a" + "reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/895ceccaa8149f9343e6134e607c21da42d73b7a", - "reference": "895ceccaa8149f9343e6134e607c21da42d73b7a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/738ad561cd6a8d1c44ee1da941b2e628e264c429", + "reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429", "shasum": "", "mirrors": [ { @@ -3823,15 +3639,16 @@ "require": { "php": "^7.1.3", "psr/log": "~1.0", - "symfony/contracts": "^1.0.2", "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", + "symfony/event-dispatcher": "^4.3", "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php73": "^1.9" }, "conflict": { + "symfony/browser-kit": "<4.3", "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.2", + "symfony/dependency-injection": "<4.3", "symfony/translation": "<4.2", "symfony/var-dumper": "<4.1.1", "twig/twig": "<1.34|<2.4,>=2" @@ -3841,11 +3658,11 @@ }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", + "symfony/browser-kit": "^4.3", "symfony/config": "~3.4|~4.0", "symfony/console": "~3.4|~4.0", "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.2", + "symfony/dependency-injection": "^4.3", "symfony/dom-crawler": "~3.4|~4.0", "symfony/expression-language": "~3.4|~4.0", "symfony/finder": "~3.4|~4.0", @@ -3854,7 +3671,9 @@ "symfony/stopwatch": "~3.4|~4.0", "symfony/templating": "~3.4|~4.0", "symfony/translation": "~4.2", - "symfony/var-dumper": "^4.1.1" + "symfony/translation-contracts": "^1.1", + "symfony/var-dumper": "^4.1.1", + "twig/twig": "^1.34|^2.4" }, "suggest": { "symfony/browser-kit": "", @@ -3866,7 +3685,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3882,31 +3701,284 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2019-06-06T13:23:34+00:00" + }, + { + "name": "symfony/inflector", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/inflector.git", + "reference": "889dc28cb6350ddb302fe9b8c796e4e6eb836856" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/inflector/zipball/889dc28cb6350ddb302fe9b8c796e4e6eb836856", + "reference": "889dc28cb6350ddb302fe9b8c796e4e6eb836856", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Inflector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Inflector Component", + "homepage": "https://symfony.com", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" + ], + "time": "2019-05-30T09:28:08+00:00" + }, + { + "name": "symfony/mime", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b", + "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "egulias/email-validator": "^2.0", + "symfony/dependency-injection": "~3.4|^4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "time": "2019-06-04T09:22:54+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "914e0edcb7cd0c9f494bc023b1d47534f4542332" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/914e0edcb7cd0c9f494bc023b1d47534f4542332", + "reference": "914e0edcb7cd0c9f494bc023b1d47534f4542332", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "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 OptionsResolver Component", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "time": "2019-05-10T05:38:46+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" } ], - "description": "Symfony HttpKernel Component", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", - "time": "2019-03-03T19:38:09+00:00" + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-02-06T07:57:58+00:00" }, { - "name": "symfony/inflector", - "version": "v4.2.4", + "name": "symfony/polyfill-iconv", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "275e54941a4f17a471c68d2a00e2513fc1fd4a78" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/275e54941a4f17a471c68d2a00e2513fc1fd4a78", - "reference": "275e54941a4f17a471c68d2a00e2513fc1fd4a78", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", + "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", "shasum": "", "mirrors": [ { @@ -3916,21 +3988,23 @@ ] }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "1.11-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Inflector\\": "" + "Symfony\\Polyfill\\Iconv\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3939,38 +4013,37 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Inflector Component", + "description": "Symfony polyfill for the Iconv extension", "homepage": "https://symfony.com", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" ], - "time": "2019-01-16T20:31:39+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { - "name": "symfony/options-resolver", - "version": "v4.2.4", + "name": "symfony/polyfill-intl-idn", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "3896e5a7d06fd15fa4947694c8dcdd371ff147d1" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3896e5a7d06fd15fa4947694c8dcdd371ff147d1", - "reference": "3896e5a7d06fd15fa4947694c8dcdd371ff147d1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af", + "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af", "shasum": "", "mirrors": [ { @@ -3980,20 +4053,25 @@ ] }, "require": { - "php": "^7.1.3" + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "1.9-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" + "Symfony\\Polyfill\\Intl\\Idn\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4001,36 +4079,39 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" + }, + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" } ], - "description": "Symfony OptionsResolver Component", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", "keywords": [ - "config", - "configuration", - "options" + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" ], - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-03-04T13:44:35+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "", "mirrors": [ { @@ -4043,17 +4124,17 @@ "php": ">=5.3.3" }, "suggest": { - "ext-ctype": "For best performance" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" @@ -4065,36 +4146,37 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "mbstring", "polyfill", - "portable" + "portable", + "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "name": "symfony/polyfill-php72", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", "shasum": "", "mirrors": [ { @@ -4106,18 +4188,15 @@ "require": { "php": ">=5.3.3" }, - "suggest": { - "ext-mbstring": "For best performance" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, "files": [ "bootstrap.php" @@ -4137,29 +4216,28 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.10.0", + "name": "symfony/polyfill-php73", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", "shasum": "", "mirrors": [ { @@ -4174,15 +4252,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, "files": [ "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4199,7 +4280,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -4207,20 +4288,20 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/process", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad" + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", - "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", + "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", "shasum": "", "mirrors": [ { @@ -4235,7 +4316,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -4262,20 +4343,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-01-24T22:05:03+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { "name": "symfony/property-access", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "d5e10532c51db0b657b1e25b2bd70acbcd13bbf9" + "reference": "18ea48862a39e364927e71b9e4942af3c1a1cb8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/d5e10532c51db0b657b1e25b2bd70acbcd13bbf9", - "reference": "d5e10532c51db0b657b1e25b2bd70acbcd13bbf9", + "url": "https://api.github.com/repos/symfony/property-access/zipball/18ea48862a39e364927e71b9e4942af3c1a1cb8c", + "reference": "18ea48862a39e364927e71b9e4942af3c1a1cb8c", "shasum": "", "mirrors": [ { @@ -4297,7 +4378,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -4335,20 +4416,20 @@ "property path", "reflection" ], - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-06-06T10:05:02+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v1.1.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "53c15a6a7918e6c2ab16ae370ea607fb40cab196" + "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/53c15a6a7918e6c2ab16ae370ea607fb40cab196", - "reference": "53c15a6a7918e6c2ab16ae370ea607fb40cab196", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", + "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", "shasum": "", "mirrors": [ { @@ -4358,28 +4439,31 @@ ] }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^7.1", "psr/http-message": "^1.0", - "symfony/http-foundation": "^2.3.42 || ^3.4 || ^4.0" + "symfony/http-foundation": "^3.4 || ^4.0" }, "require-dev": { - "symfony/phpunit-bridge": "^3.4 || 4.0" + "nyholm/psr7": "^1.1", + "symfony/phpunit-bridge": "^3.4.20 || ^4.0", + "zendframework/zend-diactoros": "^1.4.1 || ^2.0" }, "suggest": { - "psr/http-factory-implementation": "To use the PSR-17 factory", - "psr/http-message-implementation": "To use the HttpFoundation factory", - "zendframework/zend-diactoros": "To use the Zend Diactoros factory" + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" }, "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { "psr-4": { "Symfony\\Bridge\\PsrHttpMessage\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4400,22 +4484,23 @@ "keywords": [ "http", "http-message", + "psr-17", "psr-7" ], - "time": "2018-08-30T16:28:28+00:00" + "time": "2019-03-11T18:22:33+00:00" }, { "name": "symfony/routing", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ff03eae644e6b1e26d4a04b2385fe3a1a7f04e42" + "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ff03eae644e6b1e26d4a04b2385fe3a1a7f04e42", - "reference": "ff03eae644e6b1e26d4a04b2385fe3a1a7f04e42", + "url": "https://api.github.com/repos/symfony/routing/zipball/9b31cd24f6ad2cebde6845f6daa9c6d69efe2465", + "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465", "shasum": "", "mirrors": [ { @@ -4433,7 +4518,7 @@ "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.0", + "doctrine/annotations": "~1.2", "psr/log": "~1.0", "symfony/config": "~4.2", "symfony/dependency-injection": "~3.4|~4.0", @@ -4444,7 +4529,6 @@ "suggest": { "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", "symfony/yaml": "For using the YAML loader" @@ -4452,7 +4536,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -4485,20 +4569,84 @@ "uri", "url" ], - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-06-05T09:16:20+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0", + "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/container": "", + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-05-28T07:50:59+00:00" }, { "name": "symfony/translation", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "748464177a77011f8f4cdd076773862ce4915f8f" + "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/748464177a77011f8f4cdd076773862ce4915f8f", - "reference": "748464177a77011f8f4cdd076773862ce4915f8f", + "url": "https://api.github.com/repos/symfony/translation/zipball/5dda505e5f65d759741dfaf4e54b36010a4b57aa", + "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa", "shasum": "", "mirrors": [ { @@ -4509,8 +4657,8 @@ }, "require": { "php": "^7.1.3", - "symfony/contracts": "^1.0.2", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.2" }, "conflict": { "symfony/config": "<3.4", @@ -4518,7 +4666,7 @@ "symfony/yaml": "<3.4" }, "provide": { - "symfony/translation-contracts-implementation": "1.0" + "symfony/translation-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", @@ -4526,7 +4674,10 @@ "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~3.4|~4.0", "symfony/intl": "~3.4|~4.0", + "symfony/service-contracts": "^1.1.2", + "symfony/var-dumper": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -4537,7 +4688,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -4564,20 +4715,83 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2019-02-27T03:31:50+00:00" + "time": "2019-06-03T20:27:40+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "93597ce975d91c52ebfaca1253343cd9ccb7916d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/93597ce975d91c52ebfaca1253343cd9ccb7916d", + "reference": "93597ce975d91c52ebfaca1253343cd9ccb7916d", + "shasum": "", + "mirrors": [ + { + "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-05-27T08:16:38+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "9f87189ac10b42edf7fb8edc846f1937c6d157cf" + "reference": "f974f448154928d2b5fb7c412bd23b81d063f34b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9f87189ac10b42edf7fb8edc846f1937c6d157cf", - "reference": "9f87189ac10b42edf7fb8edc846f1937c6d157cf", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f974f448154928d2b5fb7c412bd23b81d063f34b", + "reference": "f974f448154928d2b5fb7c412bd23b81d063f34b", "shasum": "", "mirrors": [ { @@ -4612,7 +4826,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -4646,7 +4860,7 @@ "debug", "dump" ], - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-06-05T02:08:12+00:00" }, { "name": "tecnickcom/tcpdf", @@ -4771,16 +4985,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.6.1", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/dbcc609971dd9b55f48b8008b553d79fd372ddde", + "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde", "shasum": "", "mirrors": [ { @@ -4790,16 +5004,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" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -4824,7 +5039,7 @@ "env", "environment" ], - "time": "2019-01-29T11:11:52+00:00" + "time": "2019-03-06T09:39:45+00:00" }, { "name": "zedisdog/laravel-schema-extend", @@ -4873,16 +5088,16 @@ }, { "name": "zendframework/zend-diactoros", - "version": "1.8.6", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e" + "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/37bf68b428850ee26ed7c3be6c26236dd95a95f1", + "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1", "shasum": "", "mirrors": [ { @@ -4892,25 +5107,28 @@ ] }, "require": { - "php": "^5.6 || ^7.0", + "php": "^7.1", + "psr/http-factory": "^1.0", "psr/http-message": "^1.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { "ext-dom": "*", "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.5.0", "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", - "zendframework/zend-coding-standard": "~1.0" + "phpunit/phpunit": "^7.0.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev", - "dev-develop": "1.9.x-dev", - "dev-release-2.0": "2.0.x-dev" + "dev-master": "2.1.x-dev", + "dev-develop": "2.2.x-dev", + "dev-release-1.8": "1.8.x-dev" } }, "autoload": { @@ -4930,31 +5148,30 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "BSD-3-Clause" ], "description": "PSR HTTP Message implementations", - "homepage": "https://github.com/zendframework/zend-diactoros", "keywords": [ "http", "psr", "psr-7" ], - "time": "2018-09-05T19:29:37+00:00" + "time": "2019-04-29T21:11:00+00:00" } ], "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v2.6.0", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "754bb4d075d7fb2b23b1a416802c0e45884df495" + "reference": "39c148ad4273f5b8c49d0a363ddbc0462f1f2eec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/754bb4d075d7fb2b23b1a416802c0e45884df495", - "reference": "754bb4d075d7fb2b23b1a416802c0e45884df495", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/39c148ad4273f5b8c49d0a363ddbc0462f1f2eec", + "reference": "39c148ad4273f5b8c49d0a363ddbc0462f1f2eec", "shasum": "", "mirrors": [ { @@ -5021,7 +5238,7 @@ "phpstorm", "sublime" ], - "time": "2019-02-18T19:54:27+00:00" + "time": "2019-03-26T10:38:22+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -5209,16 +5426,16 @@ }, { "name": "composer/composer", - "version": "1.8.4", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bc364c2480c17941e2135cfc568fa41794392534" + "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", - "reference": "bc364c2480c17941e2135cfc568fa41794392534", + "url": "https://api.github.com/repos/composer/composer/zipball/19b5f66a0e233eb944f134df34091fe1c5dfcc11", + "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11", "shasum": "", "mirrors": [ { @@ -5291,20 +5508,20 @@ "dependency", "package" ], - "time": "2019-02-11T09:52:10+00:00" + "time": "2019-06-11T13:03:06+00:00" }, { "name": "composer/semver", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", "shasum": "", "mirrors": [ { @@ -5359,20 +5576,20 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2019-03-19T17:25:45+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7a9556b22bd9d4df7cad89876b00af58ef20d3a2", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", "shasum": "", "mirrors": [ { @@ -5382,11 +5599,10 @@ ] }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" }, "type": "library", "extra": { @@ -5426,20 +5642,20 @@ "spdx", "validator" ], - "time": "2018-11-01T09:45:54+00:00" + "time": "2019-03-26T10:23:26+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", "shasum": "", "mirrors": [ { @@ -5476,7 +5692,7 @@ "Xdebug", "performance" ], - "time": "2019-01-28T20:25:53+00:00" + "time": "2019-05-27T17:52:04+00:00" }, { "name": "doctrine/cache", @@ -5729,16 +5945,16 @@ }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "", "mirrors": [ { @@ -5751,11 +5967,13 @@ "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { @@ -5780,12 +5998,12 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2019-03-17T17:37:11+00:00" }, { "name": "filp/whoops", @@ -6109,16 +6327,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", "shasum": "", "mirrors": [ { @@ -6159,7 +6377,7 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2019-04-07T13:18:21+00:00" }, { "name": "nunomaduro/collision", @@ -6407,16 +6625,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", "shasum": "", "mirrors": [ { @@ -6460,7 +6678,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-04-30T17:48:53+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -6758,16 +6976,16 @@ }, { "name": "phpunit/php-timer", - "version": "2.1.1", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "8b389aebe1b8b0578430bda0c7c95a829608e059" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b389aebe1b8b0578430bda0c7c95a829608e059", - "reference": "8b389aebe1b8b0578430bda0c7c95a829608e059", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "", "mirrors": [ { @@ -6809,7 +7027,7 @@ "keywords": [ "timer" ], - "time": "2019-02-20T10:12:59+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", @@ -6868,16 +7086,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.6", + "version": "7.5.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9" + "reference": "9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9", - "reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c", + "reference": "9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c", "shasum": "", "mirrors": [ { @@ -6901,7 +7119,7 @@ "phpunit/php-code-coverage": "^6.0.7", "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.0", + "phpunit/php-timer": "^2.1", "sebastian/comparator": "^3.0", "sebastian/diff": "^3.0", "sebastian/environment": "^4.0", @@ -6954,7 +7172,7 @@ "testing", "xunit" ], - "time": "2019-02-18T09:24:50+00:00" + "time": "2019-05-28T11:59:40+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -7141,16 +7359,16 @@ }, { "name": "sebastian/environment", - "version": "4.1.0", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656" + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6fda8ce1974b62b14935adc02a9ed38252eca656", - "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", "shasum": "", "mirrors": [ { @@ -7171,7 +7389,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -7196,7 +7414,7 @@ "environment", "hhvm" ], - "time": "2019-02-01T05:27:49+00:00" + "time": "2019-05-05T09:05:15+00:00" }, { "name": "sebastian/exporter", @@ -7695,16 +7913,16 @@ }, { "name": "symfony/filesystem", - "version": "v4.2.4", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e16b9e471703b2c60b95f14d31c1239f68f11601" + "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e16b9e471703b2c60b95f14d31c1239f68f11601", - "reference": "e16b9e471703b2c60b95f14d31c1239f68f11601", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/bf2af40d738dec5e433faea7b00daa4431d0a4cf", + "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf", "shasum": "", "mirrors": [ { @@ -7720,7 +7938,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -7747,20 +7965,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-02-07T11:40:08+00:00" + "time": "2019-06-03T20:27:40+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", "shasum": "", "mirrors": [ { @@ -7793,7 +8011,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-04-04T09:56:43+00:00" }, { "name": "webmozart/assert", @@ -7855,14 +8073,17 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": { + "jacobcyl/ali-oss-storage": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^7.1.3", "ext-curl": "^7.2", "ext-json": "^1.6", - "ext-redis": "^4.1" + "ext-redis": "^4.1", + "ext-mbstring": "*" }, "platform-dev": { "ext-xdebug": "^2.6" diff --git a/config/app.php b/config/app.php index f5a539d..16e08a3 100644 --- a/config/app.php +++ b/config/app.php @@ -160,6 +160,7 @@ App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, \App\Providers\MorphMapServiceProvider::class, + \Jacobcyl\AliOSS\AliOssServiceProvider::class, ], /* diff --git a/config/filesystems.php b/config/filesystems.php index 77fa5de..aceca7c 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -15,6 +15,9 @@ 'default' => env('FILESYSTEM_DRIVER', 'local'), + //默认根目录 + 'root' => env('FILESYSTEM_ROOT', ''), + /* |-------------------------------------------------------------------------- | Default Cloud Filesystem Disk @@ -64,6 +67,18 @@ 'url' => env('AWS_URL'), ], + 'oss' => [ + 'driver' => 'oss', + 'access_id' => env('OSS_ACCESS_ID'), + 'access_key' => env('OSS_ACCESS_KEY'), + 'bucket' => env('OSS_BUCKET'), + 'endpoint' => env('OSS_ENDPOINT'), // OSS 外网节点或自定义外部域名 + //'endpoint_internal' => '', // v2.0.4 新增配置属性,如果为空,则默认使用 endpoint 配置(由于内网上传有点小问题未解决,请大家暂时不要使用内网节点上传,正在与阿里技术沟通中) + 'cdnDomain' => env('OSS_CDN_DOMAIN'), // 如果isCName为true, getUrl会判断cdnDomain是否设定来决定返回的url,如果cdnDomain未设置,则使用endpoint来生成url,否则使用cdn + 'ssl' => env('OSS_SSL', true), // true to use 'https://' and false to use 'http://'. default is false, + 'isCName' => env('OSS_IS_CNAME', true), // 是否使用自定义域名,true: 则Storage.url()会使用自定义的cdn或域名生成文件url, false: 则使用外部节点生成url + 'debug' => env('OSS_DEBUG', false), + ], ], ]; diff --git a/database/migrations/2018_10_06_075624_create_articles_table.php b/database/migrations/2018_10_06_075624_create_articles_table.php index b93f95d..cabc3a4 100644 --- a/database/migrations/2018_10_06_075624_create_articles_table.php +++ b/database/migrations/2018_10_06_075624_create_articles_table.php @@ -18,11 +18,11 @@ public function up() $table->string('title')->comment('文章标题'); $table->longText('content')->nullable()->comment('文章内容'); $table->string('cover_img')->default('')->comment('封面图片URL'); - $table->json('tags')->default('[]')->comment('文章标签JSON数组'); + $table->json('tags')->comment('文章标签JSON数组'); $table->boolean('hide')->default(false)->comment('是否隐藏'); $table->unsignedSmallInteger('read_count')->default(0)->comment('阅读次数'); $table->unsignedSmallInteger('comment_count')->default(0)->comment('评论数量'); - $table->json('extra')->default('{}')->comment('文章额外信息JSON对象,可以扩展附件,活动ID,职位ID……'); + $table->json('extra')->comment('文章额外信息JSON对象,可以扩展附件,活动ID,职位ID……'); $table->ipAddress('ip')->nullable()->comment('发表人IP'); $table->softDeletes()->comment('软删除时间'); $table->timestamps(); diff --git a/database/migrations/2018_10_06_075626_create_activities_table.php b/database/migrations/2018_10_06_075626_create_activities_table.php index b906de3..a3482f9 100644 --- a/database/migrations/2018_10_06_075626_create_activities_table.php +++ b/database/migrations/2018_10_06_075626_create_activities_table.php @@ -19,10 +19,10 @@ public function up() $table->string('location')->default('')->comment('活动举办地点'); $table->string('host')->default('')->comment('活动主持人:孔元元,或者孔元元/王一帅,斜杠分割多个人'); $table->string('time')->default('')->comment('活动举办时间:周三20:00'); - $table->text('comment')->default('')->comment('活动备注'); - $table->json('extra')->default('{}')->comment('额外信息:相关附件ID'); + $table->text('comment')->comment('活动备注'); + $table->json('extra')->comment('额外信息:相关附件ID'); $table->unsignedInteger('article_id')->nullable('')->comment('活动关联文章ID,可为空'); - $table->json('host_uids')->default('[]')->comment('活动主持人对应UID数组:[1,2],因为一个活动可以有多个人来主持'); + $table->json('host_uids')->comment('活动主持人对应UID数组:[1,2],因为一个活动可以有多个人来主持'); $table->unsignedSmallInteger('availability')->default(50)->comment('活动可容纳人数'); $table->unsignedSmallInteger('signup_amount')->default(0)->comment('活动报名人数,程序自动更新'); $table->boolean('hide')->default(false)->comment('是否属于隐藏活动'); diff --git a/database/migrations/2018_10_06_075627_create_signups_table.php b/database/migrations/2018_10_06_075627_create_signups_table.php index 677c665..c945a8d 100644 --- a/database/migrations/2018_10_06_075627_create_signups_table.php +++ b/database/migrations/2018_10_06_075627_create_signups_table.php @@ -2,6 +2,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; class CreateSignupsTable extends Migration { @@ -24,7 +25,7 @@ public function up() $table->string('mobile', 20)->default('')->comment('通知手机号'); $table->string('email')->default('')->comment('通知邮箱'); $table->boolean('valid')->default(true)->comment('是否有效'); - $table->text('comment')->default('')->comment('报名说明'); + $table->text('comment')->nullable()->comment('报名说明'); $table->ipAddress('ip')->nullable()->comment('报名时用的IP'); $table->timestamps(); $table->softDeletes()->comment('软删除时间'); diff --git a/database/migrations/2018_10_06_075634_create_checkins_table.php b/database/migrations/2018_10_06_075634_create_checkins_table.php index f69e168..b62fa98 100644 --- a/database/migrations/2018_10_06_075634_create_checkins_table.php +++ b/database/migrations/2018_10_06_075634_create_checkins_table.php @@ -21,7 +21,7 @@ public function up() $table->string('class')->default('')->comment('班级'); $table->string('name')->default('')->comment('姓名'); $table->boolean('valid')->default(true)->comment('是否有效'); - $table->text('comment')->default('')->comment('备注'); + $table->text('comment')->nullable()->comment('备注'); $table->ipAddress('ip')->nullable()->comment('签到时用的IP'); $table->string('ua')->default('')->comment('签到时所用浏览器User-Agent'); $table->timestamps(); diff --git a/database/migrations/2018_10_06_075737_create_job_applications_table.php b/database/migrations/2018_10_06_075737_create_job_applications_table.php index 4a5af4d..32dba8e 100644 --- a/database/migrations/2018_10_06_075737_create_job_applications_table.php +++ b/database/migrations/2018_10_06_075737_create_job_applications_table.php @@ -21,7 +21,7 @@ public function up() $table->string('class')->default('')->comment('班级'); $table->string('name')->default('')->comment('姓名'); $table->text('resume')->nullable()->comment('申请简历'); - $table->json('extra')->default('{}')->comment('额外信息:附件ID'); + $table->json('extra')->nullable()->comment('额外信息:附件ID'); $table->unsignedTinyInteger('status')->default(0)->comment('状态:-1-已拒绝/0-申请中/1-已审核/2-已通过'); $table->unsignedInteger('operator_uid')->nullable()->comment('操作人UID'); $table->timestamps(); diff --git a/database/migrations/2018_10_06_075913_create_comments_table.php b/database/migrations/2018_10_06_075913_create_comments_table.php index f42f583..c8938b6 100644 --- a/database/migrations/2018_10_06_075913_create_comments_table.php +++ b/database/migrations/2018_10_06_075913_create_comments_table.php @@ -20,7 +20,7 @@ public function up() $table->string('nickname')->default('匿名')->comment('发表用户昵称'); $table->string('email')->comment('发表人邮箱'); $table->longText('content')->comment('内容'); - $table->json('extra')->default('{}')->comment('额外信息:附件ID、相关URL'); + $table->json('extra')->nullable()->comment('额外信息:附件ID、相关URL'); $table->ipAddress('ip')->comment('发表人IP'); $table->timestamps(); $table->softDeletes()->comment('软删除时间'); diff --git a/database/migrations/2018_10_06_093634_create_user_logs_table.php b/database/migrations/2018_10_06_093634_create_user_logs_table.php index 341d816..61354dc 100644 --- a/database/migrations/2018_10_06_093634_create_user_logs_table.php +++ b/database/migrations/2018_10_06_093634_create_user_logs_table.php @@ -19,7 +19,7 @@ public function up() $table->string('description', 500)->comment('行为描述,可以是markdown'); $table->nullableMorphs('loggable'); $table->boolean('result')->default(true)->comment('行为执行结果:0-失败/1-成功'); - $table->json('extra')->default('{}')->comment('额外信息,相关URL/相关附件ID/相关文章ID/相关活动、职位/执行结果/失败原因等'); + $table->json('extra')->nullable()->comment('额外信息,相关URL/相关附件ID/相关文章ID/相关活动、职位/执行结果/失败原因等'); $table->ipAddress('ip')->nullable()->comment('操作人IP'); $table->string('ua')->default('')->comment('操作人User-Agent'); $table->timestamps(); diff --git a/database/migrations/2018_10_07_071632_create_attachments_table.php b/database/migrations/2018_10_07_071632_create_attachments_table.php index c8d942c..4e7a475 100644 --- a/database/migrations/2018_10_07_071632_create_attachments_table.php +++ b/database/migrations/2018_10_07_071632_create_attachments_table.php @@ -23,7 +23,7 @@ public function up() $table->string('md5', 32)->default('')->comment('文件MD5'); $table->string('mime')->default('application/octet-stream')->comment('MIME类型'); $table->string('extension')->default('')->comment('文件扩展名'); - $table->json('extra')->default('{}')->comment('附件额外属性JSON对象,可以保存媒体长度,图片大小,引用数量等'); + $table->json('extra')->nullable()->comment('附件额外属性JSON对象,可以保存媒体长度,图片大小,引用数量等'); $table->boolean('valid')->default(true)->comment('文件是否有效(文件读不到就无效)'); $table->unsignedInteger('count')->default(1)->comment('附件被上传了几次'); $table->timestamps(); diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 91cb6d1..97f83cb 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -11,6 +11,7 @@ class DatabaseSeeder extends Seeder */ public function run() { - // $this->call(UsersTableSeeder::class); + $this->call(UserTableSeeder::class); + $this->call(MenuTableSeeder::class); } } diff --git a/database/seeds/MenuTableSeeder.php b/database/seeds/MenuTableSeeder.php new file mode 100644 index 0000000..ad8d022 --- /dev/null +++ b/database/seeds/MenuTableSeeder.php @@ -0,0 +1,125 @@ + [ + [ + 'title' => '控制台概览', + 'url' => '/', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'dashboard', + ], + [ + 'title' => '部落格', + 'url' => '/blog/article', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'description', + '_child' => [ + [ + 'title' => '浏览', + 'url' => '/blog/article/', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'list', + '_child' => [ + [ + 'title' => '查看', + 'url' => '/blog/article/show', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'visibility', + ], + [ + 'title' => '删除', + 'url' => '/blog/article/delete', + 'sort' => 0, + 'description' => '', + 'icon_class' => '', + ], + [ + 'title' => '保存', + 'url' => '/blog/article/update', + 'sort' => 0, + 'description' => '', + 'icon_class' => '', + ], + ], + ], + ], + ], + [ + 'title' => '用户管理', + 'url' => '/user/user', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'person', + '_child' => [ + [ + 'title' => '浏览', + 'url' => '/user/user/', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'list', + ], + [ + 'title' => '个人资料', + 'url' => '/user/user/my', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'description', + ], + ], + ], + [ + 'title' => '操作记录', + 'url' => '/user/log/', + 'sort' => 0, + 'description' => '', + 'icon_class' => 'mouse', + ], + ], + ]; + + /** + * Run the database seeds. + * + * @return void + * @throws \Throwable + */ + public function run(): void + { + foreach ($this->menus as $group => $menus) { + $this->writeModels($menus, $group); + } + } + + /** + * @param array[] $menus + * @param string $group + * @param \App\Model\Menu|null $parentModel + * @throws \Throwable + */ + private function writeModels(array $menus, string $group = 'main', $parentModel = null): void + { + foreach ($menus as $menu) { + $model = new Menu(); + $children = $menu['_child'] ?? []; + unset($menu['_child']); + $menu['group'] = $group; + $model->fill($menu); + $model->saveOrFail(); + if ($parentModel) { + $parentModel->children()->save($model); + } + if ($children) { + $this->writeModels($children, $group, $model); + } + } + } +} diff --git a/database/seeds/UserTableSeeder.php b/database/seeds/UserTableSeeder.php new file mode 100644 index 0000000..5edc739 --- /dev/null +++ b/database/seeds/UserTableSeeder.php @@ -0,0 +1,49 @@ + '18181818181', + 'password' => '123456', + 'email' => 'admin@admin.admin', + 'admin' => 1, + 'avatar' => '', + ], + ]; + + /** + * Run the database seeds. + * + * @return void + * @throws \Throwable + */ + public function run(): void + { + foreach ($this->users as $userAttr) { + if (User::whereEmail($userAttr['email'])->orWhere('mobile', $userAttr['mobile'])->first()) { + continue; + } + $userAttr['password'] = Hash::make($userAttr['password']); + $user = new User($userAttr); + $user->create_ip = '127.0.0.1'; + $user->update_ip = '127.0.0.1'; + $user->created_at = Carbon::now(); + $user->updated_at = Carbon::now(); + $user->saveOrFail(); + $profile = $user->profile()->make(); + foreach ($userAttr as $key => $value) { + $keys = $profile->getFillable(); + if (in_array($key, $keys, true)) { + $profile->setAttribute($key, $value); + } + } + $profile->save(); + } + } +} diff --git a/install.sh b/install.sh index 7d5ee12..2979a26 100755 --- a/install.sh +++ b/install.sh @@ -1,10 +1,16 @@ #!/bin/sh -# pecl install igbinary redis xdebug +if hash pecl 2>/dev/null; then + pecl install igbinary redis xdebug +else + if hash apt-get 2>/dev/null; then + apt-get install php-igbinary php-redis php-xdebug php-bcmath php-mbstring + fi +fi composer install ./artisan key:generate -./artisan migrate +./artisan migrate:reset +./artisan migrate --force --seed ./artisan passport:install --force -./artisan db:seed diff --git a/reinstall.sh b/reinstall.sh deleted file mode 100755 index c748754..0000000 --- a/reinstall.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -./artisan migrate:reset -./install.sh