diff --git a/.env.example b/.env.example index 79cbab6..7d57191 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,11 @@ +APP_NAME="Free-PMO" APP_ENV=local APP_KEY=SomeRandomString APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost +LOG_CHANNEL=stack APP_TIMEZONE=Asia/Makassar DB_CONNECTION=mysql @@ -28,4 +30,12 @@ MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM=null -MAIL_NAME=null \ No newline at end of file +MAIL_NAME=null + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 8ae92ee..092f4ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: php php: - - 7.0 - 7.1 before_script: diff --git a/README.id.md b/README.id.md index fa5b2a5..db32af7 100644 --- a/README.id.md +++ b/README.id.md @@ -41,7 +41,7 @@ Tujuan utama Free PMO adalah membantu pengelolaan data project dengan mudah dan Aplikasi ini dapat dipasang dalam server lokal (PC/Laptop) dan server online, dengan spesifikasi berikut : #### Spesifikasi minimum server -1. PHP 7.0 (dan memenuhi [server requirement Laravel 5.5](https://laravel.com/docs/5.5#server-requirements)), +1. PHP 7.1.3 (dan memenuhi [server requirement Laravel 5.7](https://laravel.com/docs/5.7#server-requirements)), 2. MySQL atau MariaDB, 3. SQlite (untuk automated testing). @@ -72,7 +72,7 @@ Project ini dikembangkan oleh [Nafies Luthfi](https://github.com/nafiesl) dan pa Free PMO dibangun menggunakan [metode TDD](https://blog.nafies.id/laravel/testing-laravel-tentang-automated-testing) dengan bahan dan dukungan dari paket-paket berikut ini : ##### Dependencies -* [Framework Laravel](https://laravel.com/docs/5.5) (versi 5.2 s/d 5.5). +* [Framework Laravel](https://laravel.com/docs/5.7) (versi 5.2 s/d 5.7). * [luthfi/formfield](https://github.com/nafiesl/FormField), Wrapper Form dari [laravelcollective/html](https://github.com/laravelcollective/html) dengan Bootstrap 3. * [riskihajar/terbilang](https://github.com/riskihajar/terbilang), membuat angka terbilang (pada fitur cetak kuitansi) dan romawi. diff --git a/README.md b/README.md index 92e7b3c..c4a8795 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Free PMO was built for easy and professional project management. This application can be installed on local server and online server with these specifications : #### Server Requirements -1. PHP 7.0 (and meet [Laravel 5.5 server requirements](https://laravel.com/docs/5.5#server-requirements)), +1. PHP 7.1.3 (and meet [Laravel 5.7 server requirements](https://laravel.com/docs/5.7#server-requirements)), 2. MySQL or MariaDB database, 3. SQlite (for automated testing). @@ -74,7 +74,7 @@ This project maintained by [Nafies Luthfi](https://github.com/nafiesl) and devel Free PMO built with [TDD metode](https://blog.nafies.id/laravel/testing-laravel-tentang-automated-testing) with these ingredients support : ##### Dependencies -* [Framework Laravel](https://laravel.com/docs/5.5) (version 5.2 to 5.5). +* [Framework Laravel](https://laravel.com/docs/5.7) (version 5.2 to 5.7). * [luthfi/formfield](https://github.com/nafiesl/FormField), Bootstrap 3 Form Wrapper for [laravelcollective/html](https://github.com/laravelcollective/html). * [riskihajar/terbilang](https://github.com/riskihajar/terbilang), create indonesian in-word number (for payment receipt) and roman numeral. diff --git a/app/Entities/BaseRepository.php b/app/Entities/BaseRepository.php index 2b861fe..7a9800d 100755 --- a/app/Entities/BaseRepository.php +++ b/app/Entities/BaseRepository.php @@ -4,8 +4,6 @@ namespace App\Entities; use App\Entities\Users\User; use App\Entities\Projects\Job; -use App\Entities\Partners\Vendor; -use App\Entities\Projects\Project; use App\Entities\Partners\Customer; /** @@ -22,22 +20,9 @@ abstract class BaseRepository extends EloquentRepository */ public function getCustomersList() { - return Customer::orderBy('name')->pluck('name', 'id'); - } - - /** - * Get list of customers and vendors. - * - * @return array - */ - public function getCustomersAndVendorsList() - { - $partners = [ - 'Customer' => Customer::orderBy('name')->pluck('name', 'id')->all(), - 'Vendor' => Vendor::orderBy('name')->pluck('name', 'id')->all(), - ]; - - return $partners; + return Customer::where('is_active', 1) + ->orderBy('name') + ->pluck('name', 'id'); } /** @@ -51,26 +36,6 @@ abstract class BaseRepository extends EloquentRepository } /** - * Get collection of vendors. - * - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getVendorsList() - { - return Vendor::orderBy('name')->pluck('name', 'id'); - } - - /** - * Get collection of projects. - * - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getProjectsList() - { - return Project::orderBy('name')->pluck('name', 'id'); - } - - /** * Get Job by it's id. * * @param int $jobId diff --git a/app/Entities/Payments/PaymentPresenter.php b/app/Entities/Payments/PaymentPresenter.php index c086fe4..25a13d4 100644 --- a/app/Entities/Payments/PaymentPresenter.php +++ b/app/Entities/Payments/PaymentPresenter.php @@ -8,7 +8,7 @@ class PaymentPresenter extends Presenter { public function amount() { - return $this->entity->in_out == 0 ? formatRp(-$this->entity->amount) : formatRp($this->entity->amount); + return $this->entity->in_out == 0 ? format_money(-$this->entity->amount) : format_money($this->entity->amount); } public function projectLink() diff --git a/app/Entities/Projects/File.php b/app/Entities/Projects/File.php index b2ed936..90e62a7 100644 --- a/app/Entities/Projects/File.php +++ b/app/Entities/Projects/File.php @@ -2,6 +2,7 @@ namespace App\Entities\Projects; +use Storage; use Illuminate\Database\Eloquent\Model; class File extends Model @@ -37,4 +38,11 @@ class File extends Model { return \Storage::exists('public/files/'.$this->filename); } + + public function delete() + { + Storage::delete('public/files/'.$this->filename); + + return parent::delete(); + } } diff --git a/app/Entities/Projects/Issue.php b/app/Entities/Projects/Issue.php new file mode 100644 index 0000000..65b5b62 --- /dev/null +++ b/app/Entities/Projects/Issue.php @@ -0,0 +1,60 @@ +belongsTo(Project::class); + } + + public function pic() + { + return $this->belongsTo(User::class)->withDefault(['name' => __('issue.no_pic')]); + } + + public function creator() + { + return $this->belongsTo(User::class); + } + + public function getPriorityAttribute() + { + return Priority::getNameById($this->priority_id); + } + + public function getPriorityLabelAttribute() + { + $classColor = Priority::getColorById($this->priority_id); + + return ''.$this->priority.''; + } + + public function getStatusAttribute() + { + return IssueStatus::getNameById($this->status_id); + } + + public function getStatusLabelAttribute() + { + return ''.$this->status.''; + } + + /** + * Issue has many comments relation. + * + * @return \Illuminate\Database\Eloquent\Relations\MorphMany + */ + public function comments() + { + return $this->morphMany(Comment::class, 'commentable'); + } +} diff --git a/app/Entities/Projects/IssueStatus.php b/app/Entities/Projects/IssueStatus.php new file mode 100644 index 0000000..159b60a --- /dev/null +++ b/app/Entities/Projects/IssueStatus.php @@ -0,0 +1,39 @@ + 'open', + 1 => 'resolved', + 2 => 'closed', + 3 => 'on_hold', + 4 => 'invalid', + ]; + + protected static $colors = [ + 0 => 'yellow', + 1 => 'green', + 2 => 'primary', + 3 => 'default', + 4 => 'warning', + ]; + + public static function getNameById($singleId) + { + return trans('issue.'.static::getById($singleId)); + } + + public static function toArray() + { + $lists = []; + foreach (static::$lists as $key => $value) { + $lists[$key] = trans('issue.'.$value); + } + + return $lists; + } +} diff --git a/app/Entities/Projects/Job.php b/app/Entities/Projects/Job.php index 9987fc4..14f1c27 100755 --- a/app/Entities/Projects/Job.php +++ b/app/Entities/Projects/Job.php @@ -2,6 +2,7 @@ namespace App\Entities\Projects; +use DB; use App\Entities\Users\User; use Illuminate\Database\Eloquent\Model; use Laracasts\Presenter\PresentableTrait; @@ -109,4 +110,19 @@ class Job extends Model { return $this->price * ($this->progress / 100); } + + /** + * Delete the model from the database. + * + * @return bool|null + */ + public function delete() + { + DB::beginTransaction(); + $this->tasks()->delete(); + $this->comments()->delete(); + DB::commit(); + + return parent::delete(); + } } diff --git a/app/Entities/Projects/Priority.php b/app/Entities/Projects/Priority.php new file mode 100644 index 0000000..da953f1 --- /dev/null +++ b/app/Entities/Projects/Priority.php @@ -0,0 +1,35 @@ + 'minor', + 2 => 'major', + 3 => 'critical', + ]; + + protected static $colors = [ + 1 => 'info', + 2 => 'warning', + 3 => 'danger', + ]; + + public static function getNameById($singleId) + { + return trans('issue.'.static::getById($singleId)); + } + + public static function toArray() + { + $lists = []; + foreach (static::$lists as $key => $value) { + $lists[$key] = trans('issue.'.$value); + } + + return $lists; + } +} diff --git a/app/Entities/Projects/Project.php b/app/Entities/Projects/Project.php index 7dfc082..f47e1ef 100755 --- a/app/Entities/Projects/Project.php +++ b/app/Entities/Projects/Project.php @@ -2,6 +2,7 @@ namespace App\Entities\Projects; +use DB; use App\Entities\Invoices\Invoice; use App\Entities\Payments\Payment; use App\Entities\Partners\Customer; @@ -234,14 +235,43 @@ class Project extends Model return '-'; } - $workDuration = dateDifference($startDate, $endDate); + $workDuration = date_difference($startDate, $endDate); if ((int) $workDuration > 365) { - return dateDifference($startDate, $endDate, '%y Year(s) %m Month(s)'); + return date_difference($startDate, $endDate, '%y Year(s) %m Month(s)'); } elseif ((int) $workDuration > 30) { - return dateDifference($startDate, $endDate, '%m Month(s) %d Day(s)'); + return date_difference($startDate, $endDate, '%m Month(s) %d Day(s)'); } return $workDuration.' Day(s)'; } + + /** + * Delete the model from the database. + * + * @return bool|null + */ + public function delete() + { + DB::beginTransaction(); + $this->jobs->each->delete(); + $this->files->each->delete(); + $this->invoices()->delete(); + $this->payments()->delete(); + $this->subscriptions()->delete(); + $this->comments()->delete(); + DB::commit(); + + return parent::delete(); + } + + /** + * Project has many Issues relation. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function issues() + { + return $this->hasMany(Issue::class); + } } diff --git a/app/Entities/Reports/ReportsRepository.php b/app/Entities/Reports/ReportsRepository.php index dbf74c7..f58e0a9 100755 --- a/app/Entities/Reports/ReportsRepository.php +++ b/app/Entities/Reports/ReportsRepository.php @@ -106,6 +106,28 @@ class ReportsRepository extends BaseRepository return collect($reports); } + public function getYearToYearReports() + { + $rawQuery = 'YEAR(date) as year'; + $rawQuery .= ', count(`id`) as count'; + $rawQuery .= ', sum(if(in_out = 1, amount, 0)) AS cashin'; + $rawQuery .= ', sum(if(in_out = 0, amount, 0)) AS cashout'; + + $reportsData = DB::table('payments')->select(DB::raw($rawQuery)) + ->groupBy(DB::raw('YEAR(date)')) + ->orderBy('date', 'asc') + ->get(); + + $reports = []; + foreach ($reportsData as $report) { + $key = str_pad($report->year, 2, '0', STR_PAD_LEFT); + $reports[$key] = $report; + $reports[$key]->profit = $report->cashin - $report->cashout; + } + + return collect($reports); + } + /** * Get current credit/receiveble earnings report. * diff --git a/app/Entities/Subscriptions/Subscription.php b/app/Entities/Subscriptions/Subscription.php index 1dff03e..79abf4b 100755 --- a/app/Entities/Subscriptions/Subscription.php +++ b/app/Entities/Subscriptions/Subscription.php @@ -20,13 +20,13 @@ class Subscription extends Model protected $guarded = ['id', 'created_at', 'updated_at']; /** - * Show subscription name with link to subscription detail. + * Show subscription name with link to subscription detail attribute. * * @return Illuminate\Support\HtmlString */ - public function nameLink() + public function getNameLinkAttribute() { - return link_to_route('subscriptions.show', $this->name, [$this->id], [ + return link_to_route('subscriptions.show', $this->name, $this, [ 'title' => __( 'app.show_detail_title', ['name' => $this->name, 'type' => __('subscription.subscription')] @@ -61,8 +61,8 @@ class Subscription extends Model */ public function dueDateDescription() { - $dueDateDescription = __('subscription.start_date').' : '.dateId($this->start_date)."\n"; - $dueDateDescription .= __('subscription.due_date').' : '.dateId($this->due_date); + $dueDateDescription = __('subscription.start_date').' : '.date_id($this->start_date)."\n"; + $dueDateDescription .= __('subscription.due_date').' : '.date_id($this->due_date); return $dueDateDescription; } diff --git a/app/Entities/Subscriptions/SubscriptionsRepository.php b/app/Entities/Subscriptions/SubscriptionsRepository.php deleted file mode 100755 index ec203d1..0000000 --- a/app/Entities/Subscriptions/SubscriptionsRepository.php +++ /dev/null @@ -1,52 +0,0 @@ -model->orderBy('status_id', 'desc') - ->orderBy('due_date') - ->where(function ($query) use ($q, $customerId) { - if ($customerId) { - $query->where('customer_id', $customerId); - } - - if ($q) { - $query->where('name', 'like', '%'.$q.'%'); - } - }) - ->with('customer', 'vendor') - ->paginate($this->_paginate); - } -} diff --git a/app/Http/Controllers/Api/CustomerController.php b/app/Http/Controllers/Api/CustomerController.php new file mode 100644 index 0000000..48effd7 --- /dev/null +++ b/app/Http/Controllers/Api/CustomerController.php @@ -0,0 +1,18 @@ +orderBy('name') + ->pluck('name', 'id'); + + return response()->json($customers); + } +} diff --git a/app/Http/Controllers/Api/VendorController.php b/app/Http/Controllers/Api/VendorController.php new file mode 100644 index 0000000..dbf7ad2 --- /dev/null +++ b/app/Http/Controllers/Api/VendorController.php @@ -0,0 +1,18 @@ +orderBy('name') + ->pluck('name', 'id'); + + return response()->json($vendors); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 03e02a2..597e461 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,6 +2,9 @@ namespace App\Http\Controllers; +use App\Entities\Partners\Vendor; +use App\Entities\Projects\Project; +use App\Entities\Partners\Customer; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller as BaseController; use Illuminate\Foundation\Validation\ValidatesRequests; @@ -10,4 +13,39 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + + /** + * Get collection of projects. + * + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getProjectsList() + { + return Project::orderBy('name')->pluck('name', 'id'); + } + + /** + * Get collection of vendors. + * + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getVendorsList() + { + return Vendor::where('is_active', 1) + ->orderBy('name') + ->pluck('name', 'id'); + } + + /** + * Get list of customers and vendors. + * + * @return array + */ + public function getCustomersAndVendorsList() + { + return [ + __('customer.customer') => Customer::orderBy('name')->pluck('name', 'id')->all(), + __('vendor.vendor') => Vendor::orderBy('name')->pluck('name', 'id')->all(), + ]; + } } diff --git a/app/Http/Controllers/Issues/CommentController.php b/app/Http/Controllers/Issues/CommentController.php new file mode 100644 index 0000000..1b3d312 --- /dev/null +++ b/app/Http/Controllers/Issues/CommentController.php @@ -0,0 +1,83 @@ +authorize('comment-on', $issue); + + $newComment = $request->validate([ + 'body' => 'required|string|max:255', + ]); + + $issue->comments()->create([ + 'body' => $newComment['body'], + 'creator_id' => auth()->id(), + ]); + $issue->touch(); + + flash(__('comment.created'), 'success'); + + return back(); + } + + /** + * Update the specified comment. + * + * @param \Illuminate\Http\Request $request + * @param \App\Entities\Projects\Issue $issue + * @param \App\Entities\Projects\Comment $comment + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Issue $issue, Comment $comment) + { + $this->authorize('update', $comment); + + $commentData = $request->validate([ + 'body' => 'required|string|max:255', + ]); + $comment->update($commentData); + flash(__('comment.updated'), 'success'); + + return redirect()->route('projects.issues.show', [$issue->project, $issue]); + } + + /** + * Remove the specified comment. + * + * @param \App\Entities\Projects\Issue $issue + * @param \\App\Entities\Projects\Comment $comment + * @return \Illuminate\Routing\Redirector + */ + public function destroy(Issue $issue, Comment $comment) + { + $this->authorize('delete', $comment); + + request()->validate([ + 'comment_id' => 'required|exists:comments,id', + ]); + + if (request('comment_id') == $comment->id && $comment->delete()) { + flash(__('comment.deleted'), 'warning'); + + return redirect()->route('projects.issues.show', [$issue->project, $issue]); + } + flash(__('comment.undeleted'), 'error'); + + return back(); + } +} diff --git a/app/Http/Controllers/Issues/OptionController.php b/app/Http/Controllers/Issues/OptionController.php new file mode 100644 index 0000000..a37a200 --- /dev/null +++ b/app/Http/Controllers/Issues/OptionController.php @@ -0,0 +1,26 @@ +validate([ + 'priority_id' => 'required|in:1,2,3', + 'status_id' => 'required|in:0,1,2,3,4', + 'pic_id' => 'nullable|exists:users,id', + ]); + $issue->priority_id = $issueData['priority_id']; + $issue->status_id = $issueData['status_id']; + $issue->pic_id = $issueData['pic_id']; + $issue->save(); + flash(__('issue.updated'), 'success'); + + return back(); + } +} diff --git a/app/Http/Controllers/PaymentsController.php b/app/Http/Controllers/PaymentsController.php index 4d92ad5..6c1bc4a 100755 --- a/app/Http/Controllers/PaymentsController.php +++ b/app/Http/Controllers/PaymentsController.php @@ -54,8 +54,8 @@ class PaymentsController extends Controller */ public function create() { - $projects = $this->repo->getProjectsList(); - $partners = $this->repo->getCustomersAndVendorsList(); + $projects = $this->getProjectsList(); + $partners = $this->getCustomersAndVendorsList(); $project = Project::find(request('project_id')); return view('payments.create', compact('projects', 'partners', 'project')); @@ -94,12 +94,14 @@ class PaymentsController extends Controller */ public function edit(Payment $payment) { - $projects = $this->repo->getProjectsList(); + $projects = $this->getProjectsList(); if ($payment->partner_type == 'App\Entities\Users\User') { $partners = $this->repo->getWorkersList(); + } elseif ($payment->partner_type == 'App\Entities\Partners\Customer') { + $partners = [__('customer.customer') => $this->repo->getCustomersList()]; } else { - $partners = $this->repo->getCustomersAndVendorsList(); + $partners = [__('vendor.vendor') => $this->getVendorsList()]; } return view('payments.edit', compact('payment', 'projects', 'partners')); diff --git a/app/Http/Controllers/Projects/FilesController.php b/app/Http/Controllers/Projects/FilesController.php index 9dcd3d1..9779c51 100644 --- a/app/Http/Controllers/Projects/FilesController.php +++ b/app/Http/Controllers/Projects/FilesController.php @@ -70,7 +70,7 @@ class FilesController extends Controller return response()->download(storage_path('app/public/files/'.$file->filename), $file->title.'.'.$extension); } - flash(trans('file.not_found'), 'danger'); + flash(__('file.not_found'), 'danger'); if (\URL::previous() != \URL::current()) { return back(); @@ -85,7 +85,15 @@ class FilesController extends Controller $file->description = $request->get('description'); $file->save(); - flash(trans('file.updated'), 'success'); + flash(__('file.updated'), 'success'); + + return redirect()->route($file->fileable_type.'.files', $file->fileable_id); + } + + public function destroy(Request $request, File $file) + { + $file->delete(); + flash(__('file.deleted'), 'warning'); return redirect()->route($file->fileable_type.'.files', $file->fileable_id); } @@ -101,13 +109,7 @@ class FilesController extends Controller $fileData['title'] = $data['title']; $fileData['description'] = $data['description']; \DB::beginTransaction(); - // dd(is_dir(storage_path('app/public/files'))); - if (env('APP_ENV') == 'testing') { - $file->store('public/files', 'avatar'); - } else { - $file->store('public/files'); - } - // $file->move(storage_path('app/public/files')); + $file->store('public/files'); $file = File::create($fileData); \DB::commit(); diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php new file mode 100644 index 0000000..97c46e2 --- /dev/null +++ b/app/Http/Controllers/Projects/IssueController.php @@ -0,0 +1,116 @@ +issues() + ->orderBy('updated_at', 'desc') + ->with(['pic', 'creator']) + ->withCount(['comments']); + + if ($priorityId = request('priority_id')) { + $issueQuery->where('priority_id', $priorityId); + } + + if ($statusId = request('status_id')) { + $issueQuery->where('status_id', $priorityId); + } + + $issues = $issueQuery->get(); + + return view('projects.issues.index', compact('project', 'issues')); + } + + public function create(Project $project) + { + $users = User::pluck('name', 'id'); + $priorities = Priority::toArray(); + + return view('projects.issues.create', compact('project', 'users', 'priorities')); + } + + public function store(Request $request, Project $project) + { + $issueData = $request->validate([ + 'title' => 'required|max:60', + 'body' => 'required|max:255', + 'priority_id' => 'required|in:1,2,3', + 'pic_id' => 'nullable|exists:users,id', + ]); + Issue::create([ + 'project_id' => $project->id, + 'creator_id' => auth()->id(), + 'title' => $issueData['title'], + 'body' => $issueData['body'], + 'priority_id' => $issueData['priority_id'], + 'pic_id' => $issueData['pic_id'], + ]); + flash(__('issue.created'), 'success'); + + return redirect()->route('projects.issues.index', $project); + } + + public function show(Project $project, Issue $issue) + { + $editableComment = null; + $priorities = Priority::toArray(); + $statuses = IssueStatus::toArray(); + $users = User::pluck('name', 'id'); + $comments = $issue->comments()->with('creator')->get(); + + if (request('action') == 'comment-edit' && request('comment_id') != null) { + $editableComment = Comment::find(request('comment_id')); + } + + return view('projects.issues.show', compact( + 'project', 'issue', 'users', 'statuses', 'priorities', 'comments', + 'editableComment' + )); + } + + public function edit(Project $project, Issue $issue) + { + return view('projects.issues.edit', compact('project', 'issue')); + } + + public function update(Request $request, Project $project, Issue $issue) + { + $issueData = $request->validate([ + 'title' => 'required|max:60', + 'body' => 'required|max:255', + ]); + $issue->title = $issueData['title']; + $issue->body = $issueData['body']; + $issue->save(); + + flash(__('issue.updated'), 'success'); + + return redirect()->route('projects.issues.show', [$project, $issue]); + } + + public function destroy(Request $request, Project $project, Issue $issue) + { + $request->validate(['issue_id' => 'required']); + + if ($request->get('issue_id') == $issue->id && $issue->delete()) { + flash(__('issue.deleted'), 'warning'); + + return redirect()->route('projects.issues.index', $project); + } + flash(__('issue.undeleted'), 'danger'); + + return back(); + } +} diff --git a/app/Http/Controllers/Projects/JobsController.php b/app/Http/Controllers/Projects/JobsController.php index 01256d8..27a8eb9 100755 --- a/app/Http/Controllers/Projects/JobsController.php +++ b/app/Http/Controllers/Projects/JobsController.php @@ -40,7 +40,7 @@ class JobsController extends Controller { $selectedProject = null; $workers = $this->repo->getWorkersList(); - $projects = $this->repo->getProjectsList(); + $projects = $this->getProjectsList(); if ($request->has('project_id')) { $selectedProject = Project::find($request->get('project_id')); diff --git a/app/Http/Controllers/Reports/LogFileController.php b/app/Http/Controllers/Reports/LogFileController.php new file mode 100644 index 0000000..000e053 --- /dev/null +++ b/app/Http/Controllers/Reports/LogFileController.php @@ -0,0 +1,42 @@ +getMTime(), $b->getMTime()); + }); + + return view('reports.log-files', compact('logFiles')); + } + + public function show($fileName) + { + if (file_exists(storage_path('logs/'.$fileName))) { + return response()->file(storage_path('logs/'.$fileName), ['content-type' => 'text/plain']); + } + + return 'Invalid file name.'; + } + + public function download($fileName) + { + if (file_exists(storage_path('logs/'.$fileName))) { + return response()->download(storage_path('logs/'.$fileName), env('APP_ENV').'.'.$fileName); + } + + return 'Invalid file name.'; + } +} diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index df90803..e385c20 100755 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -45,8 +45,8 @@ class ReportsController extends Controller $month = $req->get('month'); } $reports = $this->repo->getMonthlyReports($year, $month); - $months = \getMonths(); - $years = \getYears(); + $months = \get_months(); + $years = \get_years(); return view('reports.payments.monthly', compact('reports', 'months', 'years', 'month', 'year')); } @@ -56,11 +56,18 @@ class ReportsController extends Controller $year = $req->get('year', date('Y')); $reports = $this->repo->getYearlyReports($year); - $years = \getYears(); + $years = \get_years(); return view('reports.payments.yearly', compact('reports', 'years', 'year')); } + public function yearToYear(Request $request) + { + $reports = $this->repo->getYearToYearReports(); + + return view('reports.payments.year_to_year', compact('reports')); + } + public function currentCredits() { $projects = $this->repo->getCurrentCredits(); diff --git a/app/Http/Controllers/SubscriptionsController.php b/app/Http/Controllers/SubscriptionsController.php index 0d767cb..ae0b3eb 100755 --- a/app/Http/Controllers/SubscriptionsController.php +++ b/app/Http/Controllers/SubscriptionsController.php @@ -5,7 +5,6 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Entities\Subscriptions\Type; use App\Entities\Subscriptions\Subscription; -use App\Entities\Subscriptions\SubscriptionsRepository; use App\Http\Requests\SubscriptionRequest as FormRequest; /** @@ -16,21 +15,6 @@ use App\Http\Requests\SubscriptionRequest as FormRequest; class SubscriptionsController extends Controller { /** - * @var \App\Entities\Subscriptions\SubscriptionsRepository - */ - private $repo; - - /** - * Create new Subscription Controller. - * - * @param \App\Entities\Subscriptions\SubscriptionsRepository $repo - */ - public function __construct(SubscriptionsRepository $repo) - { - $this->repo = $repo; - } - - /** * Show subscription list. * * @param \Illuminate\Http\Request $request @@ -38,7 +22,7 @@ class SubscriptionsController extends Controller */ public function index(Request $request) { - $subscriptions = $this->repo->getSubscriptions( + $subscriptions = $this->getSubscriptionListing( $request->get('q'), $request->get('vendor_id') ); @@ -53,8 +37,8 @@ class SubscriptionsController extends Controller */ public function create() { - $projects = $this->repo->getProjectsList(); - $vendors = $this->repo->getVendorsList(); + $projects = $this->getProjectsList(); + $vendors = $this->getVendorsList(); return view('subscriptions.create', compact('projects', 'vendors')); } @@ -67,9 +51,8 @@ class SubscriptionsController extends Controller */ public function store(FormRequest $subscriptionCreateRequest) { - $subscriptionCreateRequest->approveFor(new Subscription()); - - flash(trans('subscription.created'), 'success'); + $subscriptionCreateRequest->approveToCreate(new Subscription()); + flash(__('subscription.created'), 'success'); return redirect()->route('subscriptions.index'); } @@ -95,8 +78,8 @@ class SubscriptionsController extends Controller */ public function edit(Subscription $subscription) { - $projects = $this->repo->getProjectsList(); - $vendors = $this->repo->getVendorsList(); + $projects = $this->getProjectsList(); + $vendors = $this->getVendorsList(); $pageTitle = $this->getPageTitle('edit', $subscription); @@ -112,9 +95,8 @@ class SubscriptionsController extends Controller */ public function update(FormRequest $subscriptionUpdateRequest, Subscription $subscription) { - $subscriptionUpdateRequest->approveFor($subscription); - - flash(trans('subscription.updated'), 'success'); + $subscriptionUpdateRequest->approveToUpdate($subscription); + flash(__('subscription.updated'), 'success'); return redirect()->route('subscriptions.edit', $subscription->id); } @@ -129,8 +111,7 @@ class SubscriptionsController extends Controller public function destroy(FormRequest $subscriptionDeleteRequest, Subscription $subscription) { $subscriptionDeleteRequest->approveToDelete($subscription); - - flash(trans('subscription.deleted'), 'success'); + flash(__('subscription.deleted'), 'success'); return redirect()->route('subscriptions.index'); } @@ -154,6 +135,29 @@ class SubscriptionsController extends Controller */ private function getPageTitle($pageType, $subscription) { - return trans('subscription.'.$pageType).' - '.$subscription->name.' - '.$subscription->customer->name; + return __('subscription.'.$pageType).' - '.$subscription->name.' - '.$subscription->customer->name; + } + + /** + * Get subscrioption list. + * + * @param string $searchQuery + * @param int $customerId + * @return \Illuminate\Pagination\LengthAwarePaginator + */ + private function getSubscriptionListing($searchQuery, $customerId) + { + $subscriptionQuery = Subscription::orderBy('status_id', 'desc') + ->orderBy('due_date') + ->with('customer', 'vendor'); + + if ($searchQuery) { + $subscriptionQuery->where('name', 'like', '%'.$searchQuery.'%'); + } + if ($customerId) { + $subscriptionQuery->where('customer_id', $customerId); + } + + return $subscriptionQuery->paginate(25); } } diff --git a/app/Http/Controllers/Users/CalendarController.php b/app/Http/Controllers/Users/CalendarController.php new file mode 100644 index 0000000..fc30500 --- /dev/null +++ b/app/Http/Controllers/Users/CalendarController.php @@ -0,0 +1,22 @@ +user(); + + if ($user->hasRole('admin') == false) { + $projects = $user->projects()->orderBy('projects.name')->pluck('projects.name', 'projects.id'); + } else { + $projects = Project::orderBy('name')->pluck('name', 'id'); + } + + return view('users.calendar', compact('projects')); + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..7daf51f --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,23 @@ +method()) { - case 'POST': - return $this->getCreateRules(); - break; - case 'PATCH': return $this->getUpdateRules(); break; @@ -38,6 +34,7 @@ class SubscriptionRequest extends Request break; default: + return $this->getCreateRules(); break; } } @@ -52,7 +49,7 @@ class SubscriptionRequest extends Request 'project_id' => 'required|numeric|exists:projects,id', 'vendor_id' => 'required|numeric|exists:vendors,id', 'type_id' => 'required|numeric', - 'remark' => 'max:255', + 'notes' => 'nullable|max:255', ]; } @@ -66,7 +63,7 @@ class SubscriptionRequest extends Request 'project_id' => 'required|numeric|exists:projects,id', 'vendor_id' => 'required|numeric|exists:vendors,id', 'type_id' => 'required|numeric', - 'remark' => 'max:255', + 'notes' => 'nullable|max:255', ]; } @@ -79,28 +76,33 @@ class SubscriptionRequest extends Request ]; } - public function approveFor(Subscription $subscription) + public function approveToCreate(Subscription $subscription) { $project = Project::findOrFail($this->get('project_id')); - if ($subscription->exists) { - $subscriptionData = $this->except(['_method', '_token']); - $subscriptionData['customer_id'] = $project->customer_id; - - $subscription->update($subscriptionData); - } else { - $subscription->project_id = $project->id; - $subscription->vendor_id = $this->get('vendor_id'); - $subscription->customer_id = $project->customer_id; - $subscription->name = $this->get('name'); - $subscription->price = $this->get('price'); - $subscription->start_date = $this->get('start_date'); - $subscription->due_date = $this->get('due_date'); - $subscription->type_id = $this->get('type_id'); - $subscription->notes = $this->get('notes'); - - $subscription->save(); - } + $subscription->project_id = $project->id; + $subscription->vendor_id = $this->get('vendor_id'); + $subscription->customer_id = $project->customer_id; + $subscription->name = $this->get('name'); + $subscription->price = $this->get('price'); + $subscription->start_date = $this->get('start_date'); + $subscription->due_date = $this->get('due_date'); + $subscription->type_id = $this->get('type_id'); + $subscription->notes = $this->get('notes'); + + $subscription->save(); + + return $subscription; + } + + public function approveToUpdate(Subscription $subscription) + { + $project = Project::findOrFail($this->get('project_id')); + + $subscriptionData = $this->except(['_method', '_token']); + $subscriptionData['customer_id'] = $project->customer_id; + + $subscription->update($subscriptionData); return $subscription; } diff --git a/app/Policies/Projects/IssuePolicy.php b/app/Policies/Projects/IssuePolicy.php new file mode 100644 index 0000000..7fe975a --- /dev/null +++ b/app/Policies/Projects/IssuePolicy.php @@ -0,0 +1,29 @@ + 'App\Entities\Projects\Project', + 'issues' => 'App\Entities\Projects\Issue', 'jobs' => 'App\Entities\Projects\Job', ]); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 4584098..353f008 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -18,6 +18,7 @@ class AuthServiceProvider extends ServiceProvider 'App\Entities\Projects\Project' => 'App\Policies\Projects\ProjectPolicy', 'App\Entities\Projects\Comment' => 'App\Policies\Projects\CommentPolicy', 'App\Entities\Projects\Job' => 'App\Policies\Projects\JobPolicy', + 'App\Entities\Projects\Issue' => 'App\Policies\Projects\IssuePolicy', 'App\Entities\Projects\Task' => 'App\Policies\Projects\TaskPolicy', 'App\Entities\Payments\Payment' => 'App\Policies\PaymentPolicy', 'App\Entities\Users\User' => 'App\Policies\UserPolicy', diff --git a/app/helpers.php b/app/helpers.php index 3fdf5da..cfe933f 100755 --- a/app/helpers.php +++ b/app/helpers.php @@ -6,17 +6,18 @@ * @param int $number money in integer format * @return string money in string format */ -function formatNo($number) +function format_no($number) { return number_format($number, 0, ',', '.'); } /** * Get number in money currency format. + * * @param int|string $number * @return string */ -function formatRp($number) +function format_money($number) { $moneySign = Option::get('money_sign', 'Rp.'); @@ -25,10 +26,10 @@ function formatRp($number) } if ($number < 0) { - return '- '.$moneySign.' '.formatNo(abs($number)); + return '- '.$moneySign.' '.format_no(abs($number)); } - return $moneySign.' '.formatNo($number); + return $moneySign.' '.format_no($number); } /** @@ -37,41 +38,18 @@ function formatRp($number) * @param int|string $number * @return string */ -function formatDecimal($number) +function format_decimal($number) { return number_format($number, 2, ',', '.'); } /** - * Format date in indonesian format dd-mm-yyyy. - * - * @param string $date - * @return string - */ -function formatDate($date) -{ - if (!$date || $date == '0000-00-00') { - return; - } - - $explodedDate = explode('-', $date); - - if (count($explodedDate) == 3 && checkdate($explodedDate[1], $explodedDate[0], $explodedDate[2])) { - return $explodedDate[2].'-'.$explodedDate[1].'-'.$explodedDate[0]; - } elseif (count($explodedDate) == 3 && checkdate($explodedDate[1], $explodedDate[2], $explodedDate[0])) { - return $explodedDate[2].'-'.$explodedDate[1].'-'.$explodedDate[0]; - } - - throw new App\Exceptions\InvalidDateException('Invalid date format.'); -} - -/** * Get Indonesian date format. * * @param string $date * @return string */ -function dateId($date) +function date_id($date) { if (is_null($date) || $date == '0000-00-00') { return '-'; @@ -80,7 +58,7 @@ function dateId($date) $explodedDate = explode('-', $date); if (count($explodedDate) == 3 && checkdate($explodedDate[1], $explodedDate[2], $explodedDate[0])) { - $months = getMonths(); + $months = get_months(); return $explodedDate[2].' '.$months[$explodedDate[1]].' '.$explodedDate[0]; } @@ -94,7 +72,7 @@ function dateId($date) * @param int|string $number * @return string */ -function monthNumber($number) +function month_number($number) { return str_pad($number, 2, '0', STR_PAD_LEFT); } @@ -105,14 +83,14 @@ function monthNumber($number) * @param int|string $monthNumber * @return string */ -function monthId($monthNumber) +function month_id($monthNumber) { if (is_null($monthNumber)) { return $monthNumber; } - $months = getMonths(); - $monthNumber = monthNumber($monthNumber); + $months = get_months(); + $monthNumber = month_number($monthNumber); return $months[$monthNumber]; } @@ -122,7 +100,7 @@ function monthId($monthNumber) * * @return array */ -function getMonths() +function get_months() { return [ '01' => __('time.months.01'), @@ -145,7 +123,7 @@ function getMonths() * * @return array */ -function getYears() +function get_years() { $yearRange = range(2014, date('Y')); foreach ($yearRange as $year) { @@ -172,7 +150,7 @@ function str_split_ucwords($string) * @param int $bytes File size. * @return string Converted file size with unit. */ -function formatSizeUnits($bytes) +function format_size_units($bytes) { if ($bytes >= 1073741824) { $bytes = number_format($bytes / 1073741824, 2).' GB'; @@ -217,7 +195,7 @@ function html_link_to_route($name, $title = null, $parameters = [], $attributes * @param string $differenceFormat * @return int|string */ -function dateDifference($date1, $date2, $differenceFormat = '%a') +function date_difference($date1, $date2, $differenceFormat = '%a') { $datetime1 = date_create($date1); $datetime2 = date_create($date2); @@ -233,10 +211,10 @@ function dateDifference($date1, $date2, $differenceFormat = '%a') * @param array $attributes * @return \Illuminate\Support\HtmlString */ -function appLogoImage($attributes = []) +function app_logo_image($attributes = []) { return Html::image( - appLogoPath(), + app_logo_path(), 'Logo '.Option::get('agency_name', 'Laravel'), $attributes ); @@ -247,7 +225,7 @@ function appLogoImage($attributes = []) * * @return string */ -function appLogoPath() +function app_logo_path() { $defaultLogoImagePath = 'default-logo.png'; $optionLogoImagePath = Option::get('agency_logo_path'); @@ -266,7 +244,7 @@ function appLogoPath() * @param string $month * @return array */ -function monthDateArray($year, $month) +function month_date_array($year, $month) { $dateCount = Carbon::parse($year.'-'.$month)->format('t'); $dates = []; diff --git a/composer.json b/composer.json index a01ec40..3589659 100644 --- a/composer.json +++ b/composer.json @@ -5,11 +5,11 @@ "license": "MIT", "type": "project", "require": { - "php": ">=7.0.0", + "php": "^7.1.3", "backup-manager/laravel": "^1.2", - "guzzlehttp/guzzle": "^6.3", "laracasts/presenter": "^0.2.1", - "laravel/framework": "5.5.*", + "fideloper/proxy": "^4.0", + "laravel/framework": "5.7.*", "luthfi/formfield": "^1.0", "riskihajar/terbilang": "^1.2", "spatie/laravel-fractal": "^5.0" @@ -17,11 +17,11 @@ "require-dev": { "barryvdh/laravel-debugbar": "^3.1", - "fzaninotto/faker": "~1.4", - "johnkary/phpunit-speedtrap": "^2.0", + "fzaninotto/faker": "^1.4", + "johnkary/phpunit-speedtrap": "^3.0", "luthfi/simple-crud-generator": "^1.2", - "mockery/mockery": "~1.0", - "phpunit/phpunit": "~6.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0" }, "autoload": { "classmap": [ @@ -59,5 +59,7 @@ "preferred-install": "dist", "sort-packages": true, "optimize-autoloader": true - } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/composer.lock b/composer.lock index be9d10b..03b7677 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fd28a38cbcaf3bccc1d6fb34444372ee", + "content-hash": "935f96036f78f878a265f90061c07ece", "packages": [ { "name": "backup-manager/backup-manager", - "version": "1.2", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/backup-manager/backup-manager.git", - "reference": "4d925b5de2cc8a98d6776f5bf88ec41edd584533" + "reference": "2176c335e0a3a3f65da4f3966a5336856206a86b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/backup-manager/backup-manager/zipball/4d925b5de2cc8a98d6776f5bf88ec41edd584533", - "reference": "4d925b5de2cc8a98d6776f5bf88ec41edd584533", + "url": "https://api.github.com/repos/backup-manager/backup-manager/zipball/2176c335e0a3a3f65da4f3966a5336856206a86b", + "reference": "2176c335e0a3a3f65da4f3966a5336856206a86b", "shasum": "" }, "require": { @@ -32,17 +32,20 @@ "league/flysystem-dropbox": "~1.0", "league/flysystem-rackspace": "~1.0", "league/flysystem-sftp": "~1.0", + "mhetreramesh/flysystem-backblaze": "~1.0", "mockery/mockery": "~0.9", "phpspec/phpspec": "~2.1", "satooshi/php-coveralls": "~0.6", - "srmklive/flysystem-dropbox-v2": "~1.0" + "srmklive/flysystem-dropbox-v2": "~1.0", + "superbalist/flysystem-google-storage": "^7.0" }, "suggest": { - "league/flysystem-aws-s3-v2": "GoogleCS adapter support.", - "league/flysystem-aws-s3-v3": "AwsS3 adapter support.", + "league/flysystem-aws-s3-v3": "AWS S3 adapter support.", "league/flysystem-rackspace": "Rackspace adapter support.", - "league/flysystem-sftp": "Sftp adapter support.", - "srmklive/flysystem-dropbox-v2": "Dropbox API v2 adapter support." + "league/flysystem-sftp": "SFTP adapter support.", + "mhetreramesh/flysystem-backblaze": "B2 adapter support.", + "srmklive/flysystem-dropbox-v2": "Dropbox API v2 adapter support.", + "superbalist/flysystem-google-storage": "Google Cloud Storage adapter support." }, "type": "library", "extra": { @@ -72,7 +75,7 @@ } ], "description": "A framework agnostic database backup manager with user-definable procedures and support for S3, Dropbox, FTP, SFTP, and more with drivers for popular frameworks.", - "time": "2018-01-28T20:31:36+00:00" + "time": "2018-10-16T19:36:05+00:00" }, { "name": "backup-manager/laravel", @@ -137,20 +140,20 @@ }, { "name": "doctrine/inflector", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^6.2" @@ -158,7 +161,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -200,7 +203,7 @@ "singularize", "string" ], - "time": "2017-07-22T12:18:28+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/lexer", @@ -257,17 +260,66 @@ "time": "2014-09-09T13:34:57+00:00" }, { + "name": "dragonmantank/cron-expression", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/92a2c3768d50e21a1f26a53cb795ce72806266c5", + "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2018-06-06T03:12:17+00:00" + }, + { "name": "egulias/email-validator", - "version": "2.1.5", + "version": "2.1.7", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "54859fabea8b3beecbb1a282888d5c990036b9e3" + "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/54859fabea8b3beecbb1a282888d5c990036b9e3", - "reference": "54859fabea8b3beecbb1a282888d5c990036b9e3", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", + "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", "shasum": "" }, "require": { @@ -311,7 +363,7 @@ "validation", "validator" ], - "time": "2018-08-16T20:49:45+00:00" + "time": "2018-12-04T22:38:24+00:00" }, { "name": "erusev/parsedown", @@ -360,6 +412,60 @@ "time": "2018-03-08T01:11:30+00:00" }, { + "name": "fideloper/proxy", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "177c79a2d1f9970f89ee2fb4c12b429af38b6dfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/177c79a2d1f9970f89ee2fb4c12b429af38b6dfb", + "reference": "177c79a2d1f9970f89ee2fb4c12b429af38b6dfb", + "shasum": "" + }, + "require": { + "illuminate/contracts": "~5.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "~5.6", + "mockery/mockery": "~1.0", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fideloper\\Proxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Fidao", + "email": "fideloper@gmail.com" + } + ], + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "time": "2019-01-10T14:06:47+00:00" + }, + { "name": "guzzlehttp/guzzle", "version": "6.3.3", "source": { @@ -477,32 +583,33 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.4.2", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + "reference": "9f83dded91781a01c63574e387eaa769be769115" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", "shasum": "" }, "require": { "php": ">=5.4.0", - "psr/http-message": "~1.0" + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" }, "provide": { "psr/http-message-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -532,13 +639,14 @@ "keywords": [ "http", "message", + "psr-7", "request", "response", "stream", "uri", "url" ], - "time": "2017-03-20T17:10:46+00:00" + "time": "2018-12-04T20:46:45+00:00" }, { "name": "laracasts/presenter", @@ -588,42 +696,48 @@ }, { "name": "laravel/framework", - "version": "v5.5.43", + "version": "v5.7.26", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "84f4ed02ec6eb4a56629fb6acbee1df56891e3c7" + "reference": "ca3bc9769969e8af3bd9878a3e0242051c74dae4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/84f4ed02ec6eb4a56629fb6acbee1df56891e3c7", - "reference": "84f4ed02ec6eb4a56629fb6acbee1df56891e3c7", + "url": "https://api.github.com/repos/laravel/framework/zipball/ca3bc9769969e8af3bd9878a3e0242051c74dae4", + "reference": "ca3bc9769969e8af3bd9878a3e0242051c74dae4", "shasum": "" }, "require": { - "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.7", + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "erusev/parsedown": "^1.7", "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", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "^1.24.1", - "php": ">=7.0", - "psr/container": "~1.0", + "monolog/monolog": "^1.12", + "nesbot/carbon": "^1.26.3", + "opis/closure": "^3.1", + "php": "^7.1.3", + "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "~3.0", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~3.3", - "symfony/debug": "~3.3", - "symfony/finder": "~3.3", - "symfony/http-foundation": "~3.3", - "symfony/http-kernel": "~3.3", - "symfony/process": "~3.3", - "symfony/routing": "~3.3", - "symfony/var-dumper": "~3.3", - "tijsverkoyen/css-to-inline-styles": "~2.2", - "vlucas/phpdotenv": "~2.2" + "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", + "tijsverkoyen/css-to-inline-styles": "^2.2.1", + "vlucas/phpdotenv": "^2.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" }, "replace": { "illuminate/auth": "self.version", @@ -653,44 +767,50 @@ "illuminate/support": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "<5.5.33" + "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.5", + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", "filp/whoops": "^2.1.4", - "mockery/mockery": "~1.0", - "orchestra/testbench-core": "3.5.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~6.0", + "guzzlehttp/guzzle": "^6.3", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.0", + "moontoast/math": "^1.1", + "orchestra/testbench-core": "3.7.*", + "pda/pheanstalk": "^3.0", + "phpunit/phpunit": "^7.5", "predis/predis": "^1.1.1", - "symfony/css-selector": "~3.3", - "symfony/dom-crawler": "~3.3" + "symfony/css-selector": "^4.1", + "symfony/dom-crawler": "^4.1", + "true/punycode": "^2.1" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.3).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.3).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." + "filp/whoops": "Required for friendly error pages in development (^2.1.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", + "laravel/tinker": "Required to use the tinker console command (^1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nexmo/client": "Required to use the Nexmo transport (^1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0).", + "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.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)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.7-dev" } }, "autoload": { @@ -718,39 +838,153 @@ "framework", "laravel" ], - "time": "2018-09-02T11:45:05+00:00" + "time": "2019-02-12T14:52:21+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": "" + }, + "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" + }, + { + "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": "" + }, + "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" }, { "name": "laravelcollective/html", - "version": "v5.5.4", + "version": "v5.7.1", "source": { "type": "git", "url": "https://github.com/LaravelCollective/html.git", - "reference": "04c596a69975b901f2223eb6eb4adf55354121c2" + "reference": "777b6d390811ba249255ed5750bf17a019cd88a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/04c596a69975b901f2223eb6eb4adf55354121c2", - "reference": "04c596a69975b901f2223eb6eb4adf55354121c2", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/777b6d390811ba249255ed5750bf17a019cd88a5", + "reference": "777b6d390811ba249255ed5750bf17a019cd88a5", "shasum": "" }, "require": { - "illuminate/http": "5.5.*", - "illuminate/routing": "5.5.*", - "illuminate/session": "5.5.*", - "illuminate/support": "5.5.*", - "illuminate/view": "5.5.*", - "php": ">=7.0.0" + "illuminate/http": "5.7.*", + "illuminate/routing": "5.7.*", + "illuminate/session": "5.7.*", + "illuminate/support": "5.7.*", + "illuminate/view": "5.7.*", + "php": ">=7.1.3" }, "require-dev": { - "illuminate/database": "5.5.*", - "mockery/mockery": "~0.9.4", - "phpunit/phpunit": "~5.4" + "illuminate/database": "5.7.*", + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.7-dev" }, "laravel": { "providers": [ @@ -770,7 +1004,7 @@ "src/helpers.php" ] }, - "notification-url": "http://87.98.253.214/downloads/", + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -786,20 +1020,78 @@ ], "description": "HTML and Form Builders for the Laravel Framework", "homepage": "https://laravelcollective.com", - "time": "2018-03-24T00:39:21+00:00" + "time": "2018-09-05T18:32:53+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "3.2.5", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b", + "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=5.5" + }, + "require-dev": { + "mdanter/ecc": "~0.3.1", + "mikey179/vfsstream": "~1.5", + "phpmd/phpmd": "~2.2", + "phpunit/php-invoker": "~1.1", + "phpunit/phpunit": "~4.5", + "squizlabs/php_codesniffer": "~2.3" + }, + "suggest": { + "mdanter/ecc": "Required to use Elliptic Curves based algorithms." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Otávio Cobucci Oblonczyk", + "email": "lcobucci@gmail.com", + "role": "developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "time": "2018-11-11T12:22:26+00:00" }, { "name": "league/flysystem", - "version": "1.0.47", + "version": "1.0.50", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c" + "reference": "dab4e7624efa543a943be978008f439c333f2249" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a11e4a75f256bdacf99d20780ce42d3b8272975c", - "reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dab4e7624efa543a943be978008f439c333f2249", + "reference": "dab4e7624efa543a943be978008f439c333f2249", "shasum": "" }, "require": { @@ -870,7 +1162,7 @@ "sftp", "storage" ], - "time": "2018-09-14T15:30:29+00:00" + "time": "2019-02-01T08:50:36+00:00" }, { "name": "league/fractal", @@ -938,16 +1230,16 @@ }, { "name": "luthfi/formfield", - "version": "1.0.4", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/nafiesl/FormField.git", - "reference": "59e3ae44a0e04ae6eb6ff66a7f95f29acc5ea109" + "reference": "38d206d7b5e1e7893b67b06689d70305b998f0a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nafiesl/FormField/zipball/59e3ae44a0e04ae6eb6ff66a7f95f29acc5ea109", - "reference": "59e3ae44a0e04ae6eb6ff66a7f95f29acc5ea109", + "url": "https://api.github.com/repos/nafiesl/FormField/zipball/38d206d7b5e1e7893b67b06689d70305b998f0a1", + "reference": "38d206d7b5e1e7893b67b06689d70305b998f0a1", "shasum": "" }, "require": { @@ -986,20 +1278,20 @@ } ], "description": "Laravel Form Field the extension of Laravelcollective Form for Laravel 5.3 and newer with Twitter Bootstrap 3", - "time": "2018-09-16T11:40:29+00:00" + "time": "2019-03-12T15:08:48+00:00" }, { "name": "monolog/monolog", - "version": "1.23.0", + "version": "1.24.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", "shasum": "" }, "require": { @@ -1064,32 +1356,44 @@ "logging", "psr-3" ], - "time": "2017-06-19T01:22:40+00:00" + "time": "2018-11-05T09:00:11+00:00" }, { - "name": "mtdowling/cron-expression", - "version": "v1.2.1", + "name": "nesbot/carbon", + "version": "1.36.2", "source": { "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", + "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "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." }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, "autoload": { "psr-4": { - "Cron\\": "src/Cron/" + "": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1098,52 +1402,102 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" } ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", "keywords": [ - "cron", - "schedule" + "date", + "datetime", + "time" ], - "time": "2017-01-23T04:29:33+00:00" + "time": "2018-12-28T10:07:33+00:00" }, { - "name": "nesbot/carbon", - "version": "1.33.0", + "name": "nexmo/client", + "version": "1.6.2", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "55667c1007a99e82030874b1bb14d24d07108413" + "url": "https://github.com/Nexmo/nexmo-php.git", + "reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/55667c1007a99e82030874b1bb14d24d07108413", - "reference": "55667c1007a99e82030874b1bb14d24d07108413", + "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/2f79f67f24225ea627ee14578e98c96276cdd4c5", + "reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "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": { - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" + "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" + }, + { + "name": "opis/closure", + "version": "3.1.5", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "41f5da65d75cf473e5ee582df8fc7f2c733ce9d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/41f5da65d75cf473e5ee582df8fc7f2c733ce9d6", + "reference": "41f5da65d75cf473e5ee582df8fc7f2c733ce9d6", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0|^5.0|^6.0|^7.0" }, "type": "library", "extra": { - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] + "branch-alias": { + "dev-master": "3.1.x-dev" } }, "autoload": { "psr-4": { - "": "src/" - } + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1151,19 +1505,25 @@ ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2018-08-07T08:39:47+00:00" + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "time": "2019-01-14T14:45:33+00:00" }, { "name": "paragonie/random_compat", @@ -1183,32 +1543,198 @@ "php": "^7" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-02T15:55:56+00:00" + }, + { + "name": "php-http/guzzle6-adapter", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/guzzle6-adapter.git", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", + "shasum": "" + }, + "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" + }, + "require-dev": { + "ext-curl": "*", + "php-http/adapter-integration-tests": "^0.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Adapter\\Guzzle6\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "David de Boer", + "email": "david@ddeboer.nl" + } + ], + "description": "Guzzle 6 HTTP Adapter", + "homepage": "http://httplug.io", + "keywords": [ + "Guzzle", + "http" + ], + "time": "2016-05-10T06:13:32+00:00" + }, + { + "name": "php-http/httplug", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "php-http/promise": "^1.0", + "psr/http-message": "^1.0" + }, + "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\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "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": "" + }, + "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": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" + "promise" ], - "time": "2018-07-02T15:55:56+00:00" + "time": "2016-01-26T13:27:02+00:00" }, { "name": "psr/container", @@ -1311,16 +1837,16 @@ }, { "name": "psr/log", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", "shasum": "" }, "require": { @@ -1354,7 +1880,7 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "psr/simple-cache", @@ -1405,6 +1931,46 @@ "time": "2017-10-23T01:57:42+00:00" }, { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2016-02-11T07:05:27+00:00" + }, + { "name": "ramsey/uuid", "version": "3.8.0", "source": { @@ -1544,16 +2110,16 @@ }, { "name": "spatie/fractalistic", - "version": "2.7.1", + "version": "2.7.2", "source": { "type": "git", "url": "https://github.com/spatie/fractalistic.git", - "reference": "83e208ce1e6061aa75d22c4efdab05ccfb99a849" + "reference": "5b5710b748beb2c1d5c272f4d3598d44b5b59fc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/fractalistic/zipball/83e208ce1e6061aa75d22c4efdab05ccfb99a849", - "reference": "83e208ce1e6061aa75d22c4efdab05ccfb99a849", + "url": "https://api.github.com/repos/spatie/fractalistic/zipball/5b5710b748beb2c1d5c272f4d3598d44b5b59fc9", + "reference": "5b5710b748beb2c1d5c272f4d3598d44b5b59fc9", "shasum": "" }, "require": { @@ -1591,30 +2157,32 @@ "spatie", "transform" ], - "time": "2018-01-15T09:17:52+00:00" + "time": "2018-10-08T09:18:33+00:00" }, { "name": "spatie/laravel-fractal", - "version": "5.4.1", + "version": "5.4.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-fractal.git", - "reference": "0f18df001833fc82e6502229565347290cecda85" + "reference": "514663b6b331a6c62ab6321cdf68d790a706e082" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-fractal/zipball/0f18df001833fc82e6502229565347290cecda85", - "reference": "0f18df001833fc82e6502229565347290cecda85", + "url": "https://api.github.com/repos/spatie/laravel-fractal/zipball/514663b6b331a6c62ab6321cdf68d790a706e082", + "reference": "514663b6b331a6c62ab6321cdf68d790a706e082", "shasum": "" }, "require": { - "laravel/framework": "~5.5.0|~5.6.0|~5.7.0", + "illuminate/contracts": "~5.5.0|~5.6.0|~5.7.0", + "illuminate/support": "~5.5.0|~5.6.0|~5.7.0", "php": "^7.0", "spatie/fractalistic": "^2.5" }, "require-dev": { "orchestra/testbench": "~3.5.0|~3.6.0|~3.7.0", - "phpunit/phpunit": "^6.2|^7.0" + "phpunit/phpunit": "^6.2|^7.0", + "scrutinizer/ocular": "^1.5" }, "type": "library", "extra": { @@ -1658,7 +2226,7 @@ "spatie", "transform" ], - "time": "2018-08-24T09:21:38+00:00" + "time": "2019-01-16T12:38:34+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -1721,37 +2289,40 @@ }, { "name": "symfony/console", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6b217594552b9323bcdcfc14f8a0ce126e84cd73" + "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6b217594552b9323bcdcfc14f8a0ce126e84cd73", - "reference": "6b217594552b9323bcdcfc14f8a0ce126e84cd73", + "url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", + "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", + "php": "^7.1.3", + "symfony/contracts": "^1.0", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "symfony/dependency-injection": "<3.4", "symfony/process": "<3.3" }, + "provide": { + "psr/log-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", + "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/process": "~3.4|~4.0" }, "suggest": { - "psr/log-implementation": "For using the console logger", + "psr/log": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -1759,7 +2330,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1786,29 +2357,97 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:19:56+00:00" + "time": "2019-01-25T14:35:16+00:00" + }, + { + "name": "symfony/contracts", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/contracts.git", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "shasum": "" + }, + "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" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\": "" + }, + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "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": "A set of abstractions extracted out of the Symfony components", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2018-12-05T08:06:11+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "edda5a6155000ff8c3a3f85ee5c421af93cca416" + "reference": "48eddf66950fa57996e1be4a55916d65c10c604a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/edda5a6155000ff8c3a3f85ee5c421af93cca416", - "reference": "edda5a6155000ff8c3a3f85ee5c421af93cca416", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a", + "reference": "48eddf66950fa57996e1be4a55916d65c10c604a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1839,36 +2478,36 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-07-26T09:06:28+00:00" + "time": "2019-01-16T20:31:39+00:00" }, { "name": "symfony/debug", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "c4625e75341e4fb309ce0c049cbf7fb84b8897cd" + "reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/c4625e75341e4fb309ce0c049cbf7fb84b8897cd", - "reference": "c4625e75341e4fb309ce0c049cbf7fb84b8897cd", + "url": "https://api.github.com/repos/symfony/debug/zipball/cf9b2e33f757deb884ce474e06d2647c1c769b65", + "reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "symfony/http-kernel": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1895,34 +2534,35 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-08-03T10:42:44+00:00" + "time": "2019-01-25T14:35:16+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b2e1f19280c09a42dc64c0b72b80fe44dd6e88fb" + "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b2e1f19280c09a42dc64c0b72b80fe44dd6e88fb", - "reference": "b2e1f19280c09a42dc64c0b72b80fe44dd6e88fb", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1", + "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3", + "symfony/contracts": "^1.0" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.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" }, "suggest": { "symfony/dependency-injection": "", @@ -1931,7 +2571,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1958,29 +2598,29 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-07-26T09:06:28+00:00" + "time": "2019-01-16T20:35:37+00:00" }, { "name": "symfony/finder", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8a84fcb207451df0013b2c74cbbf1b62d47b999a" + "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8a84fcb207451df0013b2c74cbbf1b62d47b999a", - "reference": "8a84fcb207451df0013b2c74cbbf1b62d47b999a", + "url": "https://api.github.com/repos/symfony/finder/zipball/ef71816cbb264988bb57fe6a73f610888b9aa70c", + "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2007,34 +2647,34 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:19:56+00:00" + "time": "2019-01-16T20:35:37+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "2fb33cb6eefe6e790e4023f7c534a9e4214252fc" + "reference": "8d2318b73e0a1bc75baa699d00ebe2ae8b595a39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/2fb33cb6eefe6e790e4023f7c534a9e4214252fc", - "reference": "2fb33cb6eefe6e790e4023f7c534a9e4214252fc", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8d2318b73e0a1bc75baa699d00ebe2ae8b595a39", + "reference": "8d2318b73e0a1bc75baa699d00ebe2ae8b595a39", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php70": "~1.6" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.8|~3.0|~4.0" + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2061,34 +2701,36 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-08-27T17:45:33+00:00" + "time": "2019-01-29T09:49:29+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2819693b25f480966cbfa13b651abccfed4871ca" + "reference": "d56b1706abaa771eb6acd894c6787cb88f1dc97d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2819693b25f480966cbfa13b651abccfed4871ca", - "reference": "2819693b25f480966cbfa13b651abccfed4871ca", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d56b1706abaa771eb6acd894c6787cb88f1dc97d", + "reference": "d56b1706abaa771eb6acd894c6787cb88f1dc97d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/contracts": "^1.0.2", + "symfony/debug": "~3.4|~4.0", + "symfony/event-dispatcher": "~4.1", + "symfony/http-foundation": "^4.1.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", - "symfony/var-dumper": "<3.3", + "symfony/config": "<3.4", + "symfony/dependency-injection": "<4.2", + "symfony/translation": "<4.2", + "symfony/var-dumper": "<4.1.1", "twig/twig": "<1.34|<2.4,>=2" }, "provide": { @@ -2096,34 +2738,32 @@ }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/console": "~2.8|~3.0|~4.0", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.10|^4.0.10", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0", + "symfony/browser-kit": "~3.4|~4.0", + "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/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~2.8|~3.0|~4.0", - "symfony/var-dumper": "~3.3|~4.0" + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~4.2", + "symfony/var-dumper": "^4.1.1" }, "suggest": { "symfony/browser-kit": "", "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", - "symfony/finder": "", "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2150,11 +2790,11 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-08-28T06:06:12+00:00" + "time": "2019-02-03T12:47:33+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.9.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -2212,16 +2852,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.9.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { @@ -2267,24 +2907,23 @@ "portable", "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.9.0", + "name": "symfony/polyfill-php72", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "1e24b0c4a56d55aaf368763a06c6d1c7d3194934" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/1e24b0c4a56d55aaf368763a06c6d1c7d3194934", - "reference": "1e24b0c4a56d55aaf368763a06c6d1c7d3194934", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", @@ -2295,13 +2934,10 @@ }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, "files": [ "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2318,7 +2954,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2326,29 +2962,29 @@ "portable", "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { "name": "symfony/process", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4d6b125d5293cbceedc2aa10f2c71617e76262e7" + "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4d6b125d5293cbceedc2aa10f2c71617e76262e7", - "reference": "4d6b125d5293cbceedc2aa10f2c71617e76262e7", + "url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", + "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2375,37 +3011,37 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-08-03T10:42:44+00:00" + "time": "2019-01-24T22:05:03+00:00" }, { "name": "symfony/routing", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e20f4bb79502c3c0db86d572f7683a30d4143911" + "reference": "7f8e44fc498972466f0841c3e48dc555f23bdf53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e20f4bb79502c3c0db86d572f7683a30d4143911", - "reference": "e20f4bb79502c3c0db86d572f7683a30d4143911", + "url": "https://api.github.com/repos/symfony/routing/zipball/7f8e44fc498972466f0841c3e48dc555f23bdf53", + "reference": "7f8e44fc498972466f0841c3e48dc555f23bdf53", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "conflict": { - "symfony/config": "<3.3.1", - "symfony/dependency-injection": "<3.3", + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, "require-dev": { "doctrine/annotations": "~1.0", "psr/log": "~1.0", - "symfony/config": "^3.3.1|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/config": "~4.2", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -2419,7 +3055,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2452,37 +3088,42 @@ "uri", "url" ], - "time": "2018-07-26T11:19:56+00:00" + "time": "2019-01-29T09:49:29+00:00" }, { "name": "symfony/translation", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "9749930bfc825139aadd2d28461ddbaed6577862" + "reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/9749930bfc825139aadd2d28461ddbaed6577862", - "reference": "9749930bfc825139aadd2d28461ddbaed6577862", + "url": "https://api.github.com/repos/symfony/translation/zipball/23fd7aac70d99a17a8e6473a41fec8fab3331050", + "reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", + "symfony/contracts": "^1.0.2", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<2.8", + "symfony/config": "<3.4", "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, + "provide": { + "symfony/translation-contracts-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/intl": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -2493,7 +3134,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2520,42 +3161,49 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:19:56+00:00" + "time": "2019-01-27T23:11:39+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3" + "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f62a394bd3de96f2f5e8f4c7d685035897fb3cb3", - "reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/223bda89f9be41cf7033eeaf11bc61a280489c17", + "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { "ext-iconv": "*", + "symfony/console": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", "twig/twig": "~1.34|~2.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2589,7 +3237,7 @@ "debug", "dump" ], - "time": "2018-07-26T11:19:56+00:00" + "time": "2019-01-30T11:44:30+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -2640,20 +3288,21 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.5.1", + "version": "v2.6.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" + "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "^1.9" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.0" @@ -2661,7 +3310,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2686,22 +3335,86 @@ "env", "environment" ], - "time": "2018-07-29T20:33:41+00:00" + "time": "2019-01-29T11:11:52+00:00" + }, + { + "name": "zendframework/zend-diactoros", + "version": "1.8.6", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", + "zendframework/zend-coding-standard": "~1.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" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], + "psr-4": { + "Zend\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-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" } ], "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.2.0", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "5b68f3972083a7eeec0d6f161962fcda71a127c0" + "reference": "ba046deba51f3899963c7d09840bf623c4ebf5ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/5b68f3972083a7eeec0d6f161962fcda71a127c0", - "reference": "5b68f3972083a7eeec0d6f161962fcda71a127c0", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/ba046deba51f3899963c7d09840bf623c4ebf5ed", + "reference": "ba046deba51f3899963c7d09840bf623c4ebf5ed", "shasum": "" }, "require": { @@ -2756,36 +3469,36 @@ "profiler", "webprofiler" ], - "time": "2018-08-22T11:06:19+00:00" + "time": "2019-02-04T10:23:43+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -2810,7 +3523,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "fzaninotto/faker", @@ -2912,26 +3625,26 @@ }, { "name": "johnkary/phpunit-speedtrap", - "version": "v2.0.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/johnkary/phpunit-speedtrap.git", - "reference": "a1e39e0e3d07e0faee4ef3f342229d68fab07b5f" + "reference": "5f1ede99bd53fd0e5ff72669877420e801256d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/johnkary/phpunit-speedtrap/zipball/a1e39e0e3d07e0faee4ef3f342229d68fab07b5f", - "reference": "a1e39e0e3d07e0faee4ef3f342229d68fab07b5f", + "url": "https://api.github.com/repos/johnkary/phpunit-speedtrap/zipball/5f1ede99bd53fd0e5ff72669877420e801256d90", + "reference": "5f1ede99bd53fd0e5ff72669877420e801256d90", "shasum": "" }, "require": { - "php": ">=7.0", - "phpunit/phpunit": "^6.0" + "php": ">=7.1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2939,7 +3652,7 @@ "JohnKary\\PHPUnit\\Listener\\": "src/" } }, - "notification-url": "http://87.98.253.214/downloads/", + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2956,32 +3669,34 @@ "profile", "slow" ], - "time": "2017-12-06T15:14:00+00:00" + "time": "2018-02-24T18:55:28+00:00" }, { "name": "laravel/browser-kit-testing", - "version": "v2.0.1", + "version": "v4.2.1", "source": { "type": "git", "url": "https://github.com/laravel/browser-kit-testing.git", - "reference": "f0bb9f200ec35f9d876ded6eacfbc60868d311b9" + "reference": "b042ed965910a4ba69c0ebe8863d4029af3e242e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/f0bb9f200ec35f9d876ded6eacfbc60868d311b9", - "reference": "f0bb9f200ec35f9d876ded6eacfbc60868d311b9", + "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/b042ed965910a4ba69c0ebe8863d4029af3e242e", + "reference": "b042ed965910a4ba69c0ebe8863d4029af3e242e", "shasum": "" }, "require": { - "php": ">=5.5.9", - "phpunit/phpunit": "~6.0", - "symfony/css-selector": "~3.1", - "symfony/dom-crawler": "~3.1" + "illuminate/support": "^5.6", + "mockery/mockery": "^1.0", + "php": ">=7.1.3", + "phpunit/phpunit": "^7.0", + "symfony/css-selector": "~4.0", + "symfony/dom-crawler": "~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2999,30 +3714,30 @@ "email": "taylor@laravel.com" } ], - "description": "Provides backwards compatibility for BrowserKit testing in Laravel 5.4.", + "description": "Provides backwards compatibility for BrowserKit testing in the latest Laravel release.", "keywords": [ "laravel", "testing" ], - "time": "2017-06-21T11:44:53+00:00" + "time": "2019-02-05T13:27:14+00:00" }, { "name": "luthfi/simple-crud-generator", - "version": "1.2.7", + "version": "1.2.10", "source": { "type": "git", "url": "https://github.com/nafiesl/SimpleCrudGenerator.git", - "reference": "0dc629fab1c1708eedf545aa81c428905e7e4864" + "reference": "d9a97c68546c4ef07d342fb8d6e357bdbf0945b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nafiesl/SimpleCrudGenerator/zipball/0dc629fab1c1708eedf545aa81c428905e7e4864", - "reference": "0dc629fab1c1708eedf545aa81c428905e7e4864", + "url": "https://api.github.com/repos/nafiesl/SimpleCrudGenerator/zipball/d9a97c68546c4ef07d342fb8d6e357bdbf0945b3", + "reference": "d9a97c68546c4ef07d342fb8d6e357bdbf0945b3", "shasum": "" }, "require": { "illuminate/support": "5.5.* || 5.6.* || 5.7.*", - "laravel/browser-kit-testing": "^2.0 || ^4.0", + "laravel/browser-kit-testing": "2.0.x-dev || ^4.0", "php": ">=7.0.0" }, "require-dev": { @@ -3060,7 +3775,7 @@ "tdd-workflow", "testing" ], - "time": "2018-10-23T09:49:27+00:00" + "time": "2018-12-27T07:11:17+00:00" }, { "name": "maximebf/debugbar", @@ -3125,16 +3840,16 @@ }, { "name": "mockery/mockery", - "version": "1.1.0", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "99e29d3596b16dabe4982548527d5ddf90232e99" + "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/99e29d3596b16dabe4982548527d5ddf90232e99", - "reference": "99e29d3596b16dabe4982548527d5ddf90232e99", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", + "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", "shasum": "" }, "require": { @@ -3143,8 +3858,7 @@ "php": ">=5.6.0" }, "require-dev": { - "phpdocumentor/phpdocumentor": "^2.9", - "phpunit/phpunit": "~5.7.10|~6.5" + "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" }, "type": "library", "extra": { @@ -3187,29 +3901,32 @@ "test double", "testing" ], - "time": "2018-05-08T08:54:48+00:00" + "time": "2019-02-13T09:37:52+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -3232,26 +3949,26 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^1.0.1", + "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", @@ -3287,20 +4004,20 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" + "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { @@ -3334,7 +4051,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3553,40 +4270,40 @@ }, { "name": "phpunit/php-code-coverage", - "version": "5.3.2", + "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", + "phpunit/php-token-stream": "^3.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", + "sebastian/environment": "^3.1 || ^4.0", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -3594,7 +4311,7 @@ "src/" ] }, - "notification-url": "http://87.98.253.214/downloads/", + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3612,29 +4329,32 @@ "testing", "xunit" ], - "time": "2018-04-06T15:36:58+00:00" + "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3649,7 +4369,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -3659,7 +4379,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -3704,28 +4424,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3740,7 +4460,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -3749,33 +4469,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2018-02-01T13:07:23+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3798,57 +4518,57 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2018-10-30T05:52:18+00:00" }, { "name": "phpunit/phpunit", - "version": "6.5.13", + "version": "7.5.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" + "reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9", + "reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", + "phpunit/php-timer": "^2.0", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", "sebastian/exporter": "^3.1", "sebastian/global-state": "^2.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", + "sebastian/resource-operations": "^2.0", "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" + "phpunit/phpunit-mock-objects": "*" }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -3856,7 +4576,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5.x-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -3882,66 +4602,7 @@ "testing", "xunit" ], - "time": "2018-09-08T15:10:43+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2018-08-09T05:50:03+00:00" + "time": "2019-02-18T09:24:50+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -3990,30 +4651,30 @@ }, { "name": "sebastian/comparator", - "version": "2.1.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", + "php": "^7.1", + "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -4050,32 +4711,33 @@ "compare", "equality" ], - "time": "2018-02-01T13:46:46+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -4100,34 +4762,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "3.1.0", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6fda8ce1974b62b14935adc02a9ed38252eca656", + "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -4152,7 +4820,7 @@ "environment", "hhvm" ], - "time": "2017-07-01T08:51:00+00:00" + "time": "2019-02-01T05:27:49+00:00" }, { "name": "sebastian/exporter", @@ -4419,25 +5087,25 @@ }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4457,7 +5125,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2018-10-04T04:07:39+00:00" }, { "name": "sebastian/version", @@ -4504,25 +5172,25 @@ }, { "name": "symfony/dom-crawler", - "version": "v3.4.15", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "452bfc854b60134438e3824b159b0d24a5892331" + "reference": "d8476760b04cdf7b499c8718aa437c20a9155103" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/452bfc854b60134438e3824b159b0d24a5892331", - "reference": "452bfc854b60134438e3824b159b0d24a5892331", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d8476760b04cdf7b499c8718aa437c20a9155103", + "reference": "d8476760b04cdf7b499c8718aa437c20a9155103", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0" + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { "symfony/css-selector": "" @@ -4530,7 +5198,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -4557,7 +5225,7 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-07-26T10:03:52+00:00" + "time": "2019-01-16T20:35:37+00:00" }, { "name": "theseer/tokenizer", @@ -4601,20 +5269,21 @@ }, { "name": "webmozart/assert", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -4647,16 +5316,16 @@ "check", "validate" ], - "time": "2018-01-29T19:49:41+00:00" + "time": "2018-12-25T11:19:39+00:00" } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": [], - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.0.0" + "php": "^7.1.3" }, "platform-dev": [] } diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..8425770 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..296e0ee --- /dev/null +++ b/config/logging.php @@ -0,0 +1,92 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['daily'], + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 30, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => 'debug', + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + ], + +]; diff --git a/database/factories/IssueFactory.php b/database/factories/IssueFactory.php new file mode 100644 index 0000000..2941f50 --- /dev/null +++ b/database/factories/IssueFactory.php @@ -0,0 +1,21 @@ +define(Issue::class, function (Faker $faker) { + return [ + 'project_id' => function () { + return factory(Project::class)->create()->id; + }, + 'title' => $faker->words(3, true), + 'body' => $faker->sentences(3, true), + 'creator_id' => function () { + return factory(User::class)->create()->id; + }, + 'status_id' => 0, + 'priority_id' => 1, + ]; +}); diff --git a/database/migrations/2019_03_03_210017_create_issues_table.php b/database/migrations/2019_03_03_210017_create_issues_table.php new file mode 100644 index 0000000..ea55458 --- /dev/null +++ b/database/migrations/2019_03_03_210017_create_issues_table.php @@ -0,0 +1,38 @@ +increments('id'); + $table->unsignedInteger('project_id'); + $table->string('title', 60); + $table->string('body'); + $table->unsignedInteger('creator_id'); + $table->unsignedTinyInteger('priority_id'); + $table->unsignedInteger('pic_id')->nullable(); + $table->unsignedTinyInteger('status_id')->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('issues'); + } +} diff --git a/phpunit.xml b/phpunit.xml index 1636410..c32237e 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -26,6 +26,7 @@ + diff --git a/resources/lang/de/app.php b/resources/lang/de/app.php index 2547e4e..6b6d461 100644 --- a/resources/lang/de/app.php +++ b/resources/lang/de/app.php @@ -17,6 +17,7 @@ return [ 'total' => 'gesamt', 'count' => 'Summe', 'remark' => 'Remark', + 'last_update' => 'Last Update', // Action 'add' => 'Hinzufügen', diff --git a/resources/lang/de/customer.php b/resources/lang/de/customer.php index 17bc36d..2ea6fee 100644 --- a/resources/lang/de/customer.php +++ b/resources/lang/de/customer.php @@ -4,12 +4,13 @@ return [ // Labels 'customer' => 'Kunde', 'list' => 'Kundenliste', + 'detail' => 'Kundendetails', 'search' => 'Kundensuche', + 'select' => 'Select Customer', 'not_found' => 'Kunde nicht gefunden.', 'empty' => 'Kunde ist leer.', 'back_to_show' => 'Zurück zu Kundendetails', 'back_to_index' => 'Zurück zur Kundennliste', - 'detail' => 'Kundendetails', 'contact' => 'Kundenkontakt', // Actions diff --git a/resources/lang/de/issue.php b/resources/lang/de/issue.php new file mode 100644 index 0000000..2841cb4 --- /dev/null +++ b/resources/lang/de/issue.php @@ -0,0 +1,57 @@ + 'Issue', + 'list' => 'Issue List', + 'search' => 'Search Issue', + 'search_text' => 'Title ...', + 'all' => 'All Issue', + 'select' => 'Select Issue', + 'detail' => 'Issue Detail', + 'not_found' => 'Issue not found.', + 'empty' => 'Issue is empty.', + 'back_to_show' => 'Back to Issue Detail', + 'back_to_index' => 'Back to Issue List', + 'no_pic' => 'No issue PIC', + + // Actions + 'create' => 'Create new Issue', + 'created' => 'A new Issue has been created.', + 'show' => 'View Issue Detail', + 'edit' => 'Edit Issue', + 'update' => 'Update Issue', + 'updated' => 'Issue data has been updated.', + 'delete' => 'Delete Issue', + 'delete_confirm' => 'Are you sure to delete this Issue?', + 'deleted' => 'Issue has been deleted.', + 'undeleted' => 'Issue not deleted.', + 'undeleteable' => 'Issue data cannot be deleted.', + 'assign_pic' => 'Assign PIC', + 'select_pic' => 'Select a PIC', + 'pic_assigned' => 'Issue PIC has been assigned.', + 'pic_removed' => 'Issue PIC has been removed.', + + // Attributes + 'title' => 'Issue Title', + 'body' => 'Issue Description', + + // Relations + 'project' => 'Issue Project', + 'pic' => 'Issue PIC', + 'creator' => 'Issue Creator', + + // Priority + 'minor' => 'Minor', + 'major' => 'Major', + 'critical' => 'Critical', + 'all_priority' => 'All Priority', + + // Statuses + 'open' => 'Open', + 'resolved' => 'Resolved', + 'closed' => 'Closed', + 'on_hold' => 'On Hold', + 'invalid' => 'Invalid', + 'all_status' => 'All Status', +]; diff --git a/resources/lang/de/project.php b/resources/lang/de/project.php index fcbeb7f..07898c5 100644 --- a/resources/lang/de/project.php +++ b/resources/lang/de/project.php @@ -71,6 +71,7 @@ return [ 'subscriptions' => 'Abonnements', 'status' => 'Projektstatus', 'payments' => 'Zahlungen', + 'issues' => 'Issues', // Statuses 'planned' => 'geplant', diff --git a/resources/lang/de/report.php b/resources/lang/de/report.php index 89ffaca..f8f8962 100644 --- a/resources/lang/de/report.php +++ b/resources/lang/de/report.php @@ -26,4 +26,8 @@ return [ 'this_year' => 'This Year', 'view_yearly' => 'View Yearly', 'view_yearly_label' => 'View Report per', + + // Year to year + 'year_to_year' => 'Year to Year Report', + 'view_year_to_year' => 'View Year to Year Report', ]; diff --git a/resources/lang/de/vendor.php b/resources/lang/de/vendor.php index 9ad37ee..0a8b981 100644 --- a/resources/lang/de/vendor.php +++ b/resources/lang/de/vendor.php @@ -6,6 +6,7 @@ return [ 'list' => 'Hersteller Liste', 'detail' => 'Vendor Detail', 'search' => 'Hersteller suchen', + 'select' => 'Select Vendor', 'not_found' => 'Hersteller nicht gefunden.', 'empty' => 'Hersteller Liste ist leer.', 'back_to_show' => 'Zurück zu Herstellerdetails', diff --git a/resources/lang/en/app.php b/resources/lang/en/app.php index 2f55d05..2fb3794 100644 --- a/resources/lang/en/app.php +++ b/resources/lang/en/app.php @@ -17,6 +17,7 @@ return [ 'total' => 'Total', 'count' => 'Count', 'remark' => 'Remark', + 'last_update' => 'Last Update', // Action 'add' => 'Add', diff --git a/resources/lang/en/customer.php b/resources/lang/en/customer.php index 8d4234f..e61254d 100644 --- a/resources/lang/en/customer.php +++ b/resources/lang/en/customer.php @@ -4,12 +4,13 @@ return [ // Labels 'customer' => 'Customer', 'list' => 'Customer List', + 'detail' => 'Customer Detail', 'search' => 'Search Customer', + 'select' => 'Select Customer', 'not_found' => 'Customer not found.', 'empty' => 'Customer is empty.', 'back_to_show' => 'Back to Customer Detail', 'back_to_index' => 'Back to Customer List', - 'detail' => 'Customer Detail', 'contact' => 'Customer Contact', // Actions diff --git a/resources/lang/en/issue.php b/resources/lang/en/issue.php new file mode 100644 index 0000000..4c68a2a --- /dev/null +++ b/resources/lang/en/issue.php @@ -0,0 +1,58 @@ + 'Issue', + 'list' => 'Issue List', + 'search' => 'Search Issue', + 'search_text' => 'Title ...', + 'all' => 'All Issue', + 'select' => 'Select Issue', + 'detail' => 'Issue Detail', + 'not_found' => 'Issue not found.', + 'empty' => 'Issue is empty.', + 'back_to_show' => 'Back to Issue Detail', + 'back_to_index' => 'Back to Issue List', + 'no_pic' => 'No issue PIC', + + // Actions + 'create' => 'Create new Issue', + 'created' => 'A new Issue has been created.', + 'show' => 'View Issue Detail', + 'edit' => 'Edit Issue', + 'update' => 'Update Issue', + 'updated' => 'Issue data has been updated.', + 'delete' => 'Delete Issue', + 'delete_confirm' => 'Are you sure to delete this Issue?', + 'deleted' => 'Issue has been deleted.', + 'undeleted' => 'Issue not deleted.', + 'undeleteable' => 'Issue data cannot be deleted.', + 'assign_pic' => 'Assign PIC', + 'select_pic' => 'Select a PIC', + 'pic_assigned' => 'Issue PIC has been assigned.', + 'pic_removed' => 'Issue PIC has been removed.', + + // Attributes + 'title' => 'Issue Title', + 'body' => 'Issue Description', + + // Relations + 'project' => 'Issue Project', + 'pic' => 'Issue PIC', + 'creator' => 'Issue Creator', + + // Priority + 'priority' => 'Priority', + 'minor' => 'Minor', + 'major' => 'Major', + 'critical' => 'Critical', + 'all_priority' => 'All Priority', + + // Statuses + 'open' => 'Open', + 'resolved' => 'Resolved', + 'closed' => 'Closed', + 'on_hold' => 'On Hold', + 'invalid' => 'Invalid', + 'all_status' => 'All Status', +]; diff --git a/resources/lang/en/project.php b/resources/lang/en/project.php index 31886ef..c3a5c40 100644 --- a/resources/lang/en/project.php +++ b/resources/lang/en/project.php @@ -71,6 +71,7 @@ return [ 'subscriptions' => 'Subscriptions', 'status' => 'Project Status', 'payments' => 'Payments', + 'issues' => 'Issues', // Statuses 'planned' => 'Planned', diff --git a/resources/lang/en/report.php b/resources/lang/en/report.php index 89ffaca..f8f8962 100644 --- a/resources/lang/en/report.php +++ b/resources/lang/en/report.php @@ -26,4 +26,8 @@ return [ 'this_year' => 'This Year', 'view_yearly' => 'View Yearly', 'view_yearly_label' => 'View Report per', + + // Year to year + 'year_to_year' => 'Year to Year Report', + 'view_year_to_year' => 'View Year to Year Report', ]; diff --git a/resources/lang/en/vendor.php b/resources/lang/en/vendor.php index 1fe3766..85cee3d 100644 --- a/resources/lang/en/vendor.php +++ b/resources/lang/en/vendor.php @@ -6,6 +6,7 @@ return [ 'list' => 'Vendor List', 'detail' => 'Vendor Detail', 'search' => 'Search Vendor', + 'select' => 'Select Vendor', 'not_found' => 'Vendor not found.', 'empty' => 'Vendor list is empty.', 'back_to_show' => 'Back to Vendor Detail', diff --git a/resources/lang/id/app.php b/resources/lang/id/app.php index 3906fd0..99fffa1 100644 --- a/resources/lang/id/app.php +++ b/resources/lang/id/app.php @@ -17,6 +17,7 @@ return [ 'total' => 'Total', 'count' => 'Jumlah', 'remark' => 'Keterangan', + 'last_update' => 'Update', // Action 'add' => 'Tambah', diff --git a/resources/lang/id/comment.php b/resources/lang/id/comment.php index 95a1586..b79cd50 100644 --- a/resources/lang/id/comment.php +++ b/resources/lang/id/comment.php @@ -12,7 +12,7 @@ return [ 'created' => 'Input Komentar berhasil.', 'edit' => 'Edit Komentar', 'update' => 'Update Komentar', - 'updated' => 'Update data Komentar telah berhasil.', + 'updated' => 'Update Komentar berhasil.', 'delete' => 'Hapus Komentar', 'delete_confirm' => 'Anda yakin akan menghapus Komentar ini?', 'deleted' => 'Komentar berhasil dihapus.', diff --git a/resources/lang/id/customer.php b/resources/lang/id/customer.php index 6a7b881..1b7533f 100644 --- a/resources/lang/id/customer.php +++ b/resources/lang/id/customer.php @@ -4,12 +4,13 @@ return [ // Labels 'customer' => 'Customer', 'list' => 'Daftar Customer', + 'detail' => 'Detail Customer', 'search' => 'Cari Customer', + 'select' => 'Pilih Customer', 'not_found' => 'Customer tidak ditemukan', 'empty' => 'Belum ada Customer', 'back_to_show' => 'Kembali ke detail Customer', 'back_to_index' => 'Kembali ke daftar Customer', - 'detail' => 'Detail Customer', 'contact' => 'Kontak Customer', // Actions diff --git a/resources/lang/id/issue.php b/resources/lang/id/issue.php new file mode 100644 index 0000000..120fd46 --- /dev/null +++ b/resources/lang/id/issue.php @@ -0,0 +1,57 @@ + 'Issue', + 'list' => 'Daftar Issue', + 'search' => 'Cari Issue', + 'search_text' => 'Nama ...', + 'all' => 'Semua Issue', + 'select' => 'Pilih Issue', + 'detail' => 'Detail Issue', + 'not_found' => 'Issue tidak ditemukan.', + 'empty' => 'Belum ada Issue', + 'back_to_show' => 'Kembali ke detail Issue', + 'back_to_index' => 'Kembali ke daftar Issue', + 'no_pic' => 'Belum ada PIC', + + // Actions + 'create' => 'Input Issue Baru', + 'created' => 'Input Issue baru telah berhasil.', + 'show' => 'Lihat Detail Issue', + 'edit' => 'Edit Issue', + 'update' => 'Update Issue', + 'updated' => 'Update data Issue telah berhasil.', + 'delete' => 'Hapus Issue', + 'delete_confirm' => 'Anda yakin akan menghapus Issue ini?', + 'deleted' => 'Hapus data Issue telah berhasil.', + 'undeleted' => 'Data Issue gagal dihapus.', + 'undeleteable' => 'Data Issue tidak dapat dihapus.', + 'assign_pic' => 'Tugaskan PIC', + 'select_pic' => 'Pilih PIC', + 'pic_assigned' => 'PIC telah ditugaskan.', + 'pic_removed' => 'PIC telah dihapus.', + + // Attributes + 'title' => 'Judul Issue', + 'body' => 'Deskripsi Issue', + + // Relations + 'project' => 'Project Issue', + 'pic' => 'PIC Issue', + 'creator' => 'Pembuat Issue', + + // Priority + 'minor' => 'Minor', + 'major' => 'Major', + 'critical' => 'Critical', + 'all_priority' => 'Semua Priority', + + // Statuses + 'open' => 'Open', + 'resolved' => 'Selesai', + 'closed' => 'Ditutup', + 'on_hold' => 'Ditunda', + 'invalid' => 'Tidak Valid', + 'all_status' => 'Semua Status', +]; diff --git a/resources/lang/id/project.php b/resources/lang/id/project.php index 998a19b..2ea3b04 100644 --- a/resources/lang/id/project.php +++ b/resources/lang/id/project.php @@ -71,6 +71,7 @@ return [ 'subscriptions' => 'Langganan', 'status' => 'Status Project', 'payments' => 'Pembayaran', + 'issues' => 'Issue', // Statuses 'planned' => 'Rencana', diff --git a/resources/lang/id/report.php b/resources/lang/id/report.php index 9f4bd4d..c5f8ac0 100644 --- a/resources/lang/id/report.php +++ b/resources/lang/id/report.php @@ -26,4 +26,8 @@ return [ 'this_year' => 'Tahun Ini', 'view_yearly' => 'Lihat Tahunan', 'view_yearly_label' => 'Lihat Tahunan per', + + // Year to year + 'year_to_year' => 'Laponan Tahun ke Tahun', + 'view_year_to_year' => 'Lihat Laporan Tahun ke Tahun', ]; diff --git a/resources/lang/id/vendor.php b/resources/lang/id/vendor.php index e283275..7fcc94f 100644 --- a/resources/lang/id/vendor.php +++ b/resources/lang/id/vendor.php @@ -6,6 +6,7 @@ return [ 'list' => 'Daftar Vendor', 'detail' => 'Detail Vendor', 'search' => 'Cari Vendor', + 'select' => 'Pilih Vendor', 'not_found' => 'Vendor tidak ditemukan', 'empty' => 'Belum ada Vendor', 'back_to_show' => 'Kembali ke detail Vendor', diff --git a/resources/views/auth/app-install.blade.php b/resources/views/auth/app-install.blade.php index bce3cb6..7527df9 100644 --- a/resources/views/auth/app-install.blade.php +++ b/resources/views/auth/app-install.blade.php @@ -11,7 +11,7 @@
- {!! appLogoImage(['style' => 'width:150px']) !!} + {!! app_logo_image(['style' => 'width:150px']) !!}

{{ config('app.name') }}

diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index daa20cf..05bf52e 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -5,7 +5,7 @@ @section('content')