diff --git a/app/Http/Controllers/Admin/AdminReportController.php b/app/Http/Controllers/Admin/AdminReportController.php index 8695a5003..bdd1c33a4 100644 --- a/app/Http/Controllers/Admin/AdminReportController.php +++ b/app/Http/Controllers/Admin/AdminReportController.php @@ -3,18 +3,20 @@ namespace App\Http\Controllers\Admin; use App\AccountInterstitial; -use App\Http\Resources\AdminReport; +use App\Http\Resources\Admin\AdminModeratedProfileResource; use App\Http\Resources\AdminRemoteReport; +use App\Http\Resources\AdminReport; use App\Http\Resources\AdminSpamReport; use App\Jobs\DeletePipeline\DeleteAccountPipeline; use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline; use App\Jobs\StatusPipeline\RemoteStatusDelete; use App\Jobs\StatusPipeline\StatusDelete; use App\Jobs\StoryPipeline\StoryDelete; +use App\Models\ModeratedProfile; +use App\Models\RemoteReport; use App\Notification; use App\Profile; use App\Report; -use App\Models\RemoteReport; use App\Services\AccountService; use App\Services\ModLogService; use App\Services\NetworkTimelineService; @@ -24,12 +26,13 @@ use App\Services\StatusService; use App\Status; use App\Story; use App\User; +use App\Util\ActivityPub\Helpers; use Cache; -use Storage; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Redis; +use Storage; trait AdminReportController { @@ -201,10 +204,7 @@ trait AdminReportController return 0; } - public function render() - { - - } + public function render() {} }; } @@ -829,6 +829,16 @@ trait AdminReportController $profile->cw = true; $profile->save(); + if ($profile->remote_url) { + ModeratedProfile::updateOrCreate([ + 'profile_url' => $profile->remote_url, + 'profile_id' => $profile->id, + ], [ + 'is_nsfw' => true, + 'domain' => $profile->domain, + ]); + } + foreach (Status::whereProfileId($profile->id)->cursor() as $status) { $status->is_nsfw = true; $status->save(); @@ -879,6 +889,16 @@ trait AdminReportController $profile->unlisted = true; $profile->save(); + if ($profile->remote_url) { + ModeratedProfile::updateOrCreate([ + 'profile_url' => $profile->remote_url, + 'profile_id' => $profile->id, + ], [ + 'is_unlisted' => true, + 'domain' => $profile->domain, + ]); + } + foreach (Status::whereProfileId($profile->id)->whereScope('public')->cursor() as $status) { $status->scope = 'unlisted'; $status->visibility = 'unlisted'; @@ -929,6 +949,16 @@ trait AdminReportController $profile->unlisted = true; $profile->save(); + if ($profile->remote_url) { + ModeratedProfile::updateOrCreate([ + 'profile_url' => $profile->remote_url, + 'profile_id' => $profile->id, + ], [ + 'is_unlisted' => true, + 'domain' => $profile->domain, + ]); + } + foreach (Status::whereProfileId($profile->id)->cursor() as $status) { $status->scope = 'private'; $status->visibility = 'private'; @@ -982,6 +1012,16 @@ trait AdminReportController $ts = now()->addMonth(); + if ($profile->remote_url) { + ModeratedProfile::updateOrCreate([ + 'profile_url' => $profile->remote_url, + 'profile_id' => $profile->id, + ], [ + 'is_banned' => true, + 'domain' => $profile->domain, + ]); + } + if ($profile->user_id) { $user = $profile->user; abort_if($user->is_admin, 403, 'You cannot delete admin accounts.'); @@ -1354,7 +1394,7 @@ trait AdminReportController { $this->validate($request, [ 'id' => 'required|exists:remote_reports,id', - 'action' => 'required|in:mark-read,cw-posts,unlist-posts,delete-posts,private-posts,mark-all-read-by-domain,mark-all-read-by-username,cw-all-posts,private-all-posts,unlist-all-posts' + 'action' => 'required|in:mark-read,cw-posts,unlist-posts,delete-posts,private-posts,mark-all-read-by-domain,mark-all-read-by-username,cw-all-posts,private-all-posts,unlist-all-posts', ]); $report = RemoteReport::findOrFail($request->input('id')); @@ -1373,11 +1413,11 @@ trait AdminReportController break; case 'cw-posts': $statuses = Status::find($report->status_ids); - foreach($statuses as $status) { - if($report->account_id != $status->profile_id) { + foreach ($statuses as $status) { + if ($report->account_id != $status->profile_id) { continue; } - if(!$status->is_nsfw) { + if (! $status->is_nsfw) { $ogNonCwStatuses[] = $status->id; } $status->is_nsfw = true; @@ -1388,11 +1428,11 @@ trait AdminReportController $report->save(); break; case 'cw-all-posts': - foreach(Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { - if($status->is_nsfw || $status->reblog_of_id) { + foreach (Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { + if ($status->is_nsfw || $status->reblog_of_id) { continue; } - if(!$status->is_nsfw) { + if (! $status->is_nsfw) { $ogNonCwStatuses[] = $status->id; } $status->is_nsfw = true; @@ -1402,11 +1442,11 @@ trait AdminReportController break; case 'unlist-posts': $statuses = Status::find($report->status_ids); - foreach($statuses as $status) { - if($report->account_id != $status->profile_id) { + foreach ($statuses as $status) { + if ($report->account_id != $status->profile_id) { continue; } - if($status->scope === 'public') { + if ($status->scope === 'public') { $ogPublicStatuses[] = $status->id; $status->scope = 'unlisted'; $status->visibility = 'unlisted'; @@ -1418,8 +1458,8 @@ trait AdminReportController $report->save(); break; case 'unlist-all-posts': - foreach(Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { - if($status->visibility !== 'public' || $status->reblog_of_id) { + foreach (Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { + if ($status->visibility !== 'public' || $status->reblog_of_id) { continue; } $ogPublicStatuses[] = $status->id; @@ -1431,12 +1471,12 @@ trait AdminReportController break; case 'private-posts': $statuses = Status::find($report->status_ids); - foreach($statuses as $status) { - if($report->account_id != $status->profile_id) { + foreach ($statuses as $status) { + if ($report->account_id != $status->profile_id) { continue; } - if(in_array($status->scope, ['public', 'unlisted', 'private'])) { - if($status->scope === 'public') { + if (in_array($status->scope, ['public', 'unlisted', 'private'])) { + if ($status->scope === 'public') { $ogPublicStatuses[] = $status->id; } $status->scope = 'private'; @@ -1449,13 +1489,13 @@ trait AdminReportController $report->save(); break; case 'private-all-posts': - foreach(Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { - if(!in_array($status->visibility, ['public', 'unlisted']) || $status->reblog_of_id) { + foreach (Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { + if (! in_array($status->visibility, ['public', 'unlisted']) || $status->reblog_of_id) { continue; } - if($status->visibility === 'public') { + if ($status->visibility === 'public') { $ogPublicStatuses[] = $status->id; - } else if($status->visibility === 'unlisted') { + } elseif ($status->visibility === 'unlisted') { $ogUnlistedStatuses[] = $status->id; } $status->visibility = 'private'; @@ -1466,8 +1506,8 @@ trait AdminReportController break; case 'delete-posts': $statuses = Status::find($report->status_ids); - foreach($statuses as $status) { - if($report->account_id != $status->profile_id) { + foreach ($statuses as $status) { + if ($report->account_id != $status->profile_id) { continue; } StatusDelete::dispatch($status); @@ -1484,16 +1524,16 @@ trait AdminReportController break; } - if($ogPublicStatuses && count($ogPublicStatuses)) { - Storage::disk('local')->put('mod-log-cache/' . $report->account_id . '/' . now()->format('Y-m-d') . '-og-public-statuses.json', json_encode($ogPublicStatuses, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); + if ($ogPublicStatuses && count($ogPublicStatuses)) { + Storage::disk('local')->put('mod-log-cache/'.$report->account_id.'/'.now()->format('Y-m-d').'-og-public-statuses.json', json_encode($ogPublicStatuses, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); } - if($ogNonCwStatuses && count($ogNonCwStatuses)) { - Storage::disk('local')->put('mod-log-cache/' . $report->account_id . '/' . now()->format('Y-m-d') . '-og-noncw-statuses.json', json_encode($ogNonCwStatuses, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); + if ($ogNonCwStatuses && count($ogNonCwStatuses)) { + Storage::disk('local')->put('mod-log-cache/'.$report->account_id.'/'.now()->format('Y-m-d').'-og-noncw-statuses.json', json_encode($ogNonCwStatuses, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); } - if($ogUnlistedStatuses && count($ogUnlistedStatuses)) { - Storage::disk('local')->put('mod-log-cache/' . $report->account_id . '/' . now()->format('Y-m-d') . '-og-unlisted-statuses.json', json_encode($ogUnlistedStatuses, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); + if ($ogUnlistedStatuses && count($ogUnlistedStatuses)) { + Storage::disk('local')->put('mod-log-cache/'.$report->account_id.'/'.now()->format('Y-m-d').'-og-unlisted-statuses.json', json_encode($ogUnlistedStatuses, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); } ModLogService::boot() @@ -1504,18 +1544,210 @@ trait AdminReportController ->action('admin.report.moderate') ->metadata([ 'action' => $request->input('action'), - 'duration_active' => now()->parse($report->created_at)->diffForHumans() + 'duration_active' => now()->parse($report->created_at)->diffForHumans(), ]) ->accessLevel('admin') ->save(); - if($report->status_ids) { - foreach($report->status_ids as $sid) { + if ($report->status_ids) { + foreach ($report->status_ids as $sid) { RemoteReport::whereNull('action_taken_at') ->whereJsonContains('status_ids', [$sid]) ->update(['action_taken_at' => now()]); } } + return [200]; } + + public function getModeratedProfiles(Request $request) + { + $this->validate($request, [ + 'search' => 'sometimes|string|min:3|max:120', + ]); + + if ($request->filled('search')) { + $query = '%'.$request->input('search').'%'; + $profiles = DB::table('moderated_profiles') + ->join('profiles', 'moderated_profiles.profile_id', '=', 'profiles.id') + ->where('profiles.username', 'LIKE', $query) + ->select('moderated_profiles.*', 'profiles.username') + ->orderByDesc('moderated_profiles.id') + ->cursorPaginate(10); + + return AdminModeratedProfileResource::collection($profiles); + } + $profiles = ModeratedProfile::orderByDesc('id')->cursorPaginate(10); + + return AdminModeratedProfileResource::collection($profiles); + } + + public function getModeratedProfile(Request $request) + { + $this->validate($request, [ + 'id' => 'required', + ]); + + $profile = ModeratedProfile::findOrFail($request->input('id')); + + return new AdminModeratedProfileResource($profile); + } + + public function exportModeratedProfiles(Request $request) + { + return response()->streamDownload(function () { + $profiles = ModeratedProfile::get(); + $res = AdminModeratedProfileResource::collection($profiles); + echo json_encode([ + '_pixelfed_export' => true, + 'meta' => [ + 'ns' => 'https://pixelfed.org', + 'origin' => config('pixelfed.domain.app'), + 'date' => now()->format('c'), + 'type' => 'moderated-profiles', + 'version' => "1.0" + ], + 'data' => $res + ], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); + }, 'data-export.json'); + } + + public function deleteModeratedProfile(Request $request) + { + $this->validate($request, [ + 'id' => 'required', + ]); + + $profile = ModeratedProfile::findOrFail($request->input('id')); + + ModLogService::boot() + ->objectUid($profile->profile_id) + ->objectId($profile->id) + ->objectType('App\Models\ModeratedProfile::class') + ->user(request()->user()) + ->action('admin.moderated-profiles.delete') + ->metadata([ + 'profile_url' => $profile->profile_url, + 'profile_id' => $profile->profile_id, + 'domain' => $profile->domain, + 'note' => $profile->note, + 'is_banned' => $profile->is_banned, + 'is_nsfw' => $profile->is_nsfw, + 'is_unlisted' => $profile->is_unlisted, + 'is_noautolink' => $profile->is_noautolink, + 'is_nodms' => $profile->is_nodms, + 'is_notrending' => $profile->is_notrending, + ]) + ->accessLevel('admin') + ->save(); + + $profile->delete(); + + return ['status' => 200, 'message' => 'Successfully deleted moderated profile!']; + } + + public function updateModeratedProfile(Request $request) + { + $this->validate($request, [ + 'id' => 'required|exists:moderated_profiles', + 'note' => 'sometimes|nullable|string|max:500', + 'is_banned' => 'required|boolean', + 'is_noautolink' => 'required|boolean', + 'is_nodms' => 'required|boolean', + 'is_notrending' => 'required|boolean', + 'is_nsfw' => 'required|boolean', + 'is_unlisted' => 'required|boolean', + ]); + + $fields = [ + 'note', + 'is_banned', + 'is_noautolink', + 'is_nodms', + 'is_notrending', + 'is_nsfw', + 'is_unlisted', + ]; + + $profile = ModeratedProfile::findOrFail($request->input('id')); + $profile->update($request->only($fields)); + + ModLogService::boot() + ->objectUid($profile->profile_id) + ->objectId($profile->id) + ->objectType('App\Models\ModeratedProfile::class') + ->user(request()->user()) + ->action('admin.moderated-profiles.update') + ->metadata($request->only($fields)) + ->accessLevel('admin') + ->save(); + + return [200]; + } + + public function createModeratedProfile(Request $request) + { + $this->validate($request, [ + 'url' => 'required|url|starts_with:https://', + ]); + + $url = $request->input('url'); + $host = parse_url($url, PHP_URL_HOST); + + abort_if($host === config('pixelfed.domain.app'), 400, 'You cannot add local users!'); + + $exists = ModeratedProfile::whereProfileUrl($url)->exists(); + abort_if($exists, 400, 'Moderated profile already exists!'); + + $profile = Profile::whereRemoteUrl($url)->first(); + + if ($profile) { + $rec = ModeratedProfile::updateOrCreate([ + 'profile_id' => $profile->id, + ], [ + 'profile_url' => $profile->remote_url, + 'domain' => $profile->domain, + ]); + + ModLogService::boot() + ->objectUid($rec->profile_id) + ->objectId($rec->id) + ->objectType('App\Models\ModeratedProfile::class') + ->user(request()->user()) + ->action('admin.moderated-profiles.create') + ->metadata([ + 'profile_existed' => true, + ]) + ->accessLevel('admin') + ->save(); + + return $rec; + } + + $remoteSearch = Helpers::profileFetch($url); + + if ($remoteSearch) { + $rec = ModeratedProfile::updateOrCreate([ + 'profile_id' => $remoteSearch->id, + ], [ + 'profile_url' => $remoteSearch->remote_url, + 'domain' => $remoteSearch->domain, + ]); + + ModLogService::boot() + ->objectUid($rec->profile_id) + ->objectId($rec->id) + ->objectType('App\Models\ModeratedProfile::class') + ->user(request()->user()) + ->action('admin.moderated-profiles.create') + ->metadata([ + 'profile_existed' => false, + ]) + ->accessLevel('admin') + ->save(); + + return $rec; + } + abort(400, 'Invalid account'); + } } diff --git a/app/Http/Resources/Admin/AdminModeratedProfileResource.php b/app/Http/Resources/Admin/AdminModeratedProfileResource.php new file mode 100644 index 000000000..d0ce5a617 --- /dev/null +++ b/app/Http/Resources/Admin/AdminModeratedProfileResource.php @@ -0,0 +1,45 @@ + + */ + public function toArray(Request $request): array + { + $profileObj = []; + $profile = Profile::withTrashed()->find($this->profile_id); + if ($profile) { + $profileObj = [ + 'name' => $profile->name, + 'username' => $profile->username, + 'username_str' => explode('@', $profile->username)[1], + 'remote_url' => $profile->remote_url, + ]; + } + + return [ + 'id' => $this->id, + 'domain' => $this->domain, + 'profile' => $profileObj, + 'profile_id' => $this->profile_id, + 'profile_url' => $this->profile_url, + 'note' => $this->note, + 'is_banned' => (bool) $this->is_banned, + 'is_nsfw' => (bool) $this->is_nsfw, + 'is_unlisted' => (bool) $this->is_unlisted, + 'is_noautolink' => (bool) $this->is_noautolink, + 'is_nodms' => (bool) $this->is_nodms, + 'is_notrending' => (bool) $this->is_notrending, + 'created_at' => now()->parse($this->created_at)->format('c'), + ]; + } +} diff --git a/app/Http/Resources/AdminReport.php b/app/Http/Resources/AdminReport.php index c541e58cd..9b9681bcc 100644 --- a/app/Http/Resources/AdminReport.php +++ b/app/Http/Resources/AdminReport.php @@ -2,10 +2,11 @@ namespace App\Http\Resources; -use Illuminate\Http\Request; -use Illuminate\Http\Resources\Json\JsonResource; use App\Services\AccountService; use App\Services\StatusService; +use App\Story; +use Illuminate\Http\Request; +use Illuminate\Http\Resources\Json\JsonResource; class AdminReport extends JsonResource { @@ -16,22 +17,29 @@ class AdminReport extends JsonResource */ public function toArray(Request $request): array { - $res = [ - 'id' => $this->id, - 'reporter' => AccountService::get($this->profile_id, true), - 'type' => $this->type, - 'object_id' => (string) $this->object_id, - 'object_type' => $this->object_type, - 'reported' => AccountService::get($this->reported_profile_id, true), - 'status' => null, - 'reporter_message' => $this->message, - 'admin_seen_at' => $this->admin_seen, - 'created_at' => $this->created_at, - ]; + $res = [ + 'id' => $this->id, + 'reporter' => AccountService::get($this->profile_id, true), + 'type' => $this->type, + 'object_id' => (string) $this->object_id, + 'object_type' => $this->object_type, + 'reported' => AccountService::get($this->reported_profile_id, true), + 'status' => null, + 'reporter_message' => $this->message, + 'admin_seen_at' => $this->admin_seen, + 'created_at' => $this->created_at, + ]; - if($this->object_id && $this->object_type === 'App\Status') { - $res['status'] = StatusService::get($this->object_id, false); - } + if ($this->object_id && $this->object_type === 'App\Status') { + $res['status'] = StatusService::get($this->object_id, false); + } + + if ($this->object_id && $this->object_type === 'App\Story') { + $story = Story::find($this->object_id); + if ($story) { + $res['story'] = $story->toAdminEntity(); + } + } return $res; } diff --git a/app/Models/ModeratedProfile.php b/app/Models/ModeratedProfile.php new file mode 100644 index 000000000..e9bc2fbf1 --- /dev/null +++ b/app/Models/ModeratedProfile.php @@ -0,0 +1,13 @@ +whereIsBanned(true)->exists()) { + return; + } + $urlDomain = parse_url($url, PHP_URL_HOST); $domain = parse_url($res['id'], PHP_URL_HOST); if (strtolower($urlDomain) !== strtolower($domain)) { diff --git a/composer.lock b/composer.lock index a45ba803c..c01559f17 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.2.6", + "version": "v1.2.7", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "a63485b65b6b3367039306496d49737cf1995408" + "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/a63485b65b6b3367039306496d49737cf1995408", - "reference": "a63485b65b6b3367039306496d49737cf1995408", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/d71d9906c7bb63a28295447ba12e74723bd3730e", + "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e", "shasum": "" }, "require": { @@ -56,22 +56,22 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.6" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7" }, - "time": "2024-06-13T17:21:28+00:00" + "time": "2024-10-18T22:15:13+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.323.1", + "version": "3.325.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "1b393c41a73e1ef4c493c60c5eee0bb4b0632264" + "reference": "de0b289c7260fb19301ffa2eb724de2076daad74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1b393c41a73e1ef4c493c60c5eee0bb4b0632264", - "reference": "1b393c41a73e1ef4c493c60c5eee0bb4b0632264", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/de0b289c7260fb19301ffa2eb724de2076daad74", + "reference": "de0b289c7260fb19301ffa2eb724de2076daad74", "shasum": "" }, "require": { @@ -154,9 +154,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.323.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.325.3" }, - "time": "2024-10-04T18:07:17+00:00" + "time": "2024-11-06T19:05:22+00:00" }, { "name": "bacon/bacon-qr-code", @@ -695,16 +695,16 @@ }, { "name": "doctrine/dbal", - "version": "3.9.1", + "version": "3.9.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7" + "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", - "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", + "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", "shasum": "" }, "require": { @@ -720,7 +720,7 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.12.0", + "phpstan/phpstan": "1.12.6", "phpstan/phpstan-strict-rules": "^1.6", "phpunit/phpunit": "9.6.20", "psalm/plugin-phpunit": "0.18.4", @@ -788,7 +788,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.1" + "source": "https://github.com/doctrine/dbal/tree/3.9.3" }, "funding": [ { @@ -804,7 +804,7 @@ "type": "tidelift" } ], - "time": "2024-09-01T13:49:23+00:00" + "time": "2024-10-10T17:56:43+00:00" }, { "name": "doctrine/deprecations", @@ -1114,16 +1114,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.3", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", - "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { @@ -1136,10 +1136,14 @@ "require-dev": { "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", - "phpstan/phpstan-webmozart-assert": "^1.0", "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -1163,7 +1167,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" }, "funding": [ { @@ -1171,7 +1175,7 @@ "type": "github" } ], - "time": "2023-08-10T19:36:49+00:00" + "time": "2024-10-09T13:47:03+00:00" }, { "name": "egulias/email-validator", @@ -1289,20 +1293,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.17.0", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + "reference": "cb56001e54359df7ae76dc522d08845dc741621b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/cb56001e54359df7ae76dc522d08845dc741621b", + "reference": "cb56001e54359df7ae76dc522d08845dc741621b", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -1344,9 +1348,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.18.0" }, - "time": "2023-11-17T15:01:25+00:00" + "time": "2024-11-01T03:51:45+00:00" }, { "name": "fgrosse/phpasn1", @@ -1748,16 +1752,16 @@ }, { "name": "guzzlehttp/promises", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { @@ -1811,7 +1815,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -1827,7 +1831,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2024-10-17T10:06:22+00:00" }, { "name": "guzzlehttp/psr7", @@ -2117,16 +2121,16 @@ }, { "name": "jaybizzle/crawler-detect", - "version": "v1.2.120", + "version": "v1.2.121", "source": { "type": "git", "url": "https://github.com/JayBizzle/Crawler-Detect.git", - "reference": "2b325bdce46bbb8a2e96dc740ad37c743c9d8617" + "reference": "40ecda6322d4163fe2c6e1dd47c574f580b8487f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/2b325bdce46bbb8a2e96dc740ad37c743c9d8617", - "reference": "2b325bdce46bbb8a2e96dc740ad37c743c9d8617", + "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/40ecda6322d4163fe2c6e1dd47c574f580b8487f", + "reference": "40ecda6322d4163fe2c6e1dd47c574f580b8487f", "shasum": "" }, "require": { @@ -2163,9 +2167,9 @@ ], "support": { "issues": "https://github.com/JayBizzle/Crawler-Detect/issues", - "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.2.120" + "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.2.121" }, - "time": "2024-09-15T14:31:21+00:00" + "time": "2024-10-20T21:42:39+00:00" }, { "name": "jenssegers/agent", @@ -2374,16 +2378,16 @@ }, { "name": "laravel/framework", - "version": "v11.26.0", + "version": "v11.30.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b8cb8998701d5b3cfe68539d3c3da1fc59ddd82b" + "reference": "dff716442d9c229d716be82ccc9a7de52eb97193" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b8cb8998701d5b3cfe68539d3c3da1fc59ddd82b", - "reference": "b8cb8998701d5b3cfe68539d3c3da1fc59ddd82b", + "url": "https://api.github.com/repos/laravel/framework/zipball/dff716442d9c229d716be82ccc9a7de52eb97193", + "reference": "dff716442d9c229d716be82ccc9a7de52eb97193", "shasum": "" }, "require": { @@ -2579,7 +2583,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-10-01T14:29:34+00:00" + "time": "2024-10-30T15:00:34+00:00" }, { "name": "laravel/helpers", @@ -2640,16 +2644,16 @@ }, { "name": "laravel/horizon", - "version": "v5.29.0", + "version": "v5.29.2", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "1d97f94412e89ff48683acd58d4a702d6bee7b88" + "reference": "d9c39ce4e9050b33a2ff9d2cee21646a18d4cc92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/1d97f94412e89ff48683acd58d4a702d6bee7b88", - "reference": "1d97f94412e89ff48683acd58d4a702d6bee7b88", + "url": "https://api.github.com/repos/laravel/horizon/zipball/d9c39ce4e9050b33a2ff9d2cee21646a18d4cc92", + "reference": "d9c39ce4e9050b33a2ff9d2cee21646a18d4cc92", "shasum": "" }, "require": { @@ -2664,6 +2668,7 @@ "ramsey/uuid": "^4.0", "symfony/console": "^6.0|^7.0", "symfony/error-handler": "^6.0|^7.0", + "symfony/polyfill-php83": "^1.28", "symfony/process": "^6.0|^7.0" }, "require-dev": { @@ -2713,9 +2718,9 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.29.0" + "source": "https://github.com/laravel/horizon/tree/v5.29.2" }, - "time": "2024-09-24T13:38:25+00:00" + "time": "2024-10-16T21:36:57+00:00" }, { "name": "laravel/passport", @@ -2795,16 +2800,16 @@ }, { "name": "laravel/prompts", - "version": "v0.3.0", + "version": "v0.3.1", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "ea57a2261093986721d4a5f4f9524d76f21f9fa0" + "reference": "0f3848a445562dac376b27968f753c65e7e1036e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/ea57a2261093986721d4a5f4f9524d76f21f9fa0", - "reference": "ea57a2261093986721d4a5f4f9524d76f21f9fa0", + "url": "https://api.github.com/repos/laravel/prompts/zipball/0f3848a445562dac376b27968f753c65e7e1036e", + "reference": "0f3848a445562dac376b27968f753c65e7e1036e", "shasum": "" }, "require": { @@ -2848,9 +2853,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.0" + "source": "https://github.com/laravel/prompts/tree/v0.3.1" }, - "time": "2024-09-30T14:27:51+00:00" + "time": "2024-10-09T19:42:26+00:00" }, { "name": "laravel/serializable-closure", @@ -3108,38 +3113,38 @@ }, { "name": "lcobucci/jwt", - "version": "5.3.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "08071d8d2c7f4b00222cc4b1fb6aa46990a80f83" + "reference": "848815d2287abd5d3c285482f8e1f501b289a2e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/08071d8d2c7f4b00222cc4b1fb6aa46990a80f83", - "reference": "08071d8d2c7f4b00222cc4b1fb6aa46990a80f83", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/848815d2287abd5d3c285482f8e1f501b289a2e7", + "reference": "848815d2287abd5d3c285482f8e1f501b289a2e7", "shasum": "" }, "require": { "ext-openssl": "*", "ext-sodium": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", "psr/clock": "^1.0" }, "require-dev": { - "infection/infection": "^0.27.0", - "lcobucci/clock": "^3.0", + "infection/infection": "^0.29", + "lcobucci/clock": "^3.2", "lcobucci/coding-standard": "^11.0", - "phpbench/phpbench": "^1.2.9", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.2", "phpstan/phpstan": "^1.10.7", "phpstan/phpstan-deprecation-rules": "^1.1.3", "phpstan/phpstan-phpunit": "^1.3.10", "phpstan/phpstan-strict-rules": "^1.5.0", - "phpunit/phpunit": "^10.2.6" + "phpunit/phpunit": "^11.1" }, "suggest": { - "lcobucci/clock": ">= 3.0" + "lcobucci/clock": ">= 3.2" }, "type": "library", "autoload": { @@ -3165,7 +3170,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/5.3.0" + "source": "https://github.com/lcobucci/jwt/tree/5.4.1" }, "funding": [ { @@ -3177,7 +3182,7 @@ "type": "patreon" } ], - "time": "2024-04-11T23:07:54+00:00" + "time": "2024-11-06T06:16:04+00:00" }, { "name": "league/commonmark", @@ -3423,16 +3428,16 @@ }, { "name": "league/flysystem", - "version": "3.29.0", + "version": "3.29.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "0adc0d9a51852e170e0028a60bd271726626d3f0" + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/0adc0d9a51852e170e0028a60bd271726626d3f0", - "reference": "0adc0d9a51852e170e0028a60bd271726626d3f0", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", "shasum": "" }, "require": { @@ -3500,9 +3505,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" }, - "time": "2024-09-29T11:59:11+00:00" + "time": "2024-10-08T08:58:34+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -3610,29 +3615,32 @@ }, { "name": "league/iso3166", - "version": "4.3.1", + "version": "4.3.2", "source": { "type": "git", - "url": "https://github.com/thephpleague/iso3166.git", - "reference": "11703e0313f34920add11c0228f0dd43ebd10f9a" + "url": "https://github.com/alcohol/iso3166.git", + "reference": "5133fed7d54728222f4058702487dccedda20472" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/iso3166/zipball/11703e0313f34920add11c0228f0dd43ebd10f9a", - "reference": "11703e0313f34920add11c0228f0dd43ebd10f9a", + "url": "https://api.github.com/repos/alcohol/iso3166/zipball/5133fed7d54728222f4058702487dccedda20472", + "reference": "5133fed7d54728222f4058702487dccedda20472", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.3|^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpstan/phpstan": "^1.12.6", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-strict-rules": "^1.6.1", + "phpunit/phpunit": "^9.6.21" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -3651,7 +3659,7 @@ } ], "description": "ISO 3166-1 PHP Library", - "homepage": "https://github.com/thephpleague/iso3166", + "homepage": "https://github.com/alcohol/iso3166", "keywords": [ "3166", "3166-1", @@ -3661,10 +3669,16 @@ "library" ], "support": { - "issues": "https://github.com/thephpleague/iso3166/issues", - "source": "https://github.com/thephpleague/iso3166" + "issues": "https://github.com/alcohol/iso3166/issues", + "source": "https://github.com/alcohol/iso3166" }, - "time": "2023-09-11T07:59:36+00:00" + "funding": [ + { + "url": "https://github.com/alcohol", + "type": "github" + } + ], + "time": "2024-10-10T07:39:24+00:00" }, { "name": "league/mime-type-detection", @@ -4282,20 +4296,20 @@ }, { "name": "nesbot/carbon", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "bbd3eef89af8ba66a3aa7952b5439168fbcc529f" + "reference": "10ac0aa86b8062219ce21e8189123d611ca3ecd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbd3eef89af8ba66a3aa7952b5439168fbcc529f", - "reference": "bbd3eef89af8ba66a3aa7952b5439168fbcc529f", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/10ac0aa86b8062219ce21e8189123d611ca3ecd9", + "reference": "10ac0aa86b8062219ce21e8189123d611ca3ecd9", "shasum": "" }, "require": { - "carbonphp/carbon-doctrine-types": "*", + "carbonphp/carbon-doctrine-types": "<100.0", "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", @@ -4384,20 +4398,20 @@ "type": "tidelift" } ], - "time": "2024-08-19T06:22:39+00:00" + "time": "2024-11-03T16:02:24+00:00" }, { "name": "nette/schema", - "version": "v1.3.1", + "version": "v1.3.2", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "9522dad6211c4d995a01a9ac529da88d0b0ba7b5" + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9522dad6211c4d995a01a9ac529da88d0b0ba7b5", - "reference": "9522dad6211c4d995a01a9ac529da88d0b0ba7b5", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", "shasum": "" }, "require": { @@ -4444,9 +4458,9 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.1" + "source": "https://github.com/nette/schema/tree/v1.3.2" }, - "time": "2024-10-05T03:01:50+00:00" + "time": "2024-10-06T23:10:23+00:00" }, { "name": "nette/utils", @@ -4536,16 +4550,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.3.0", + "version": "v5.3.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a" + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3abf7425cd284141dc5d8d14a9ee444de3345d1a", - "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", "shasum": "" }, "require": { @@ -4588,38 +4602,37 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" }, - "time": "2024-09-29T13:56:26+00:00" + "time": "2024-10-08T18:51:32+00:00" }, { "name": "nunomaduro/termwind", - "version": "v2.1.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "e5f21eade88689536c0cdad4c3cd75f3ed26e01a" + "reference": "42c84e4e8090766bbd6445d06cd6e57650626ea3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/e5f21eade88689536c0cdad4c3cd75f3ed26e01a", - "reference": "e5f21eade88689536c0cdad4c3cd75f3ed26e01a", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/42c84e4e8090766bbd6445d06cd6e57650626ea3", + "reference": "42c84e4e8090766bbd6445d06cd6e57650626ea3", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.0.4" + "symfony/console": "^7.1.5" }, "require-dev": { - "ergebnis/phpstan-rules": "^2.2.0", - "illuminate/console": "^11.1.1", - "laravel/pint": "^1.15.0", - "mockery/mockery": "^1.6.11", - "pestphp/pest": "^2.34.6", - "phpstan/phpstan": "^1.10.66", - "phpstan/phpstan-strict-rules": "^1.5.2", - "symfony/var-dumper": "^7.0.4", + "illuminate/console": "^11.28.0", + "laravel/pint": "^1.18.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0", + "phpstan/phpstan": "^1.12.6", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^7.1.5", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -4662,7 +4675,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.1.0" + "source": "https://github.com/nunomaduro/termwind/tree/v2.2.0" }, "funding": [ { @@ -4678,7 +4691,7 @@ "type": "github" } ], - "time": "2024-09-05T15:25:50+00:00" + "time": "2024-10-15T16:15:16+00:00" }, { "name": "nyholm/psr7", @@ -4877,30 +4890,35 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.21.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "bb312875dcdd20680419564fe42ba1d9564b9e37" + "reference": "a673d5f310477027cead2e2f2b6db5d8368157cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/bb312875dcdd20680419564fe42ba1d9564b9e37", - "reference": "bb312875dcdd20680419564fe42ba1d9564b9e37", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/a673d5f310477027cead2e2f2b6db5d8368157cb", + "reference": "a673d5f310477027cead2e2f2b6db5d8368157cb", "shasum": "" }, "require": { - "paragonie/random_compat": ">=1", - "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + "php": "^8.1", + "php-64bit": "*" }, "require-dev": { - "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + "phpunit/phpunit": "^7|^8|^9", + "vimeo/psalm": "^4|^5" }, "suggest": { - "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", - "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + "ext-sodium": "Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "files": [ "autoload.php" @@ -4957,9 +4975,9 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.21.1" + "source": "https://github.com/paragonie/sodium_compat/tree/v2.1.0" }, - "time": "2024-04-22T22:05:04+00:00" + "time": "2024-09-04T12:51:01+00:00" }, { "name": "pbmedia/laravel-ffmpeg", @@ -6094,23 +6112,23 @@ }, { "name": "pusher/pusher-php-server", - "version": "7.2.4", + "version": "7.2.6", "source": { "type": "git", "url": "https://github.com/pusher/pusher-http-php.git", - "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb" + "reference": "d89e9997191d18fb0fe03a956fa3ccfe0af524ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/de2f72296808f9cafa6a4462b15a768ff130cddb", - "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb", + "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/d89e9997191d18fb0fe03a956fa3ccfe0af524ea", + "reference": "d89e9997191d18fb0fe03a956fa3ccfe0af524ea", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "guzzlehttp/guzzle": "^7.2", - "paragonie/sodium_compat": "^1.6", + "paragonie/sodium_compat": "^1.6|^2.0", "php": "^7.3|^8.0", "psr/log": "^1.0|^2.0|^3.0" }, @@ -6149,9 +6167,9 @@ ], "support": { "issues": "https://github.com/pusher/pusher-http-php/issues", - "source": "https://github.com/pusher/pusher-http-php/tree/7.2.4" + "source": "https://github.com/pusher/pusher-http-php/tree/7.2.6" }, - "time": "2023-12-15T10:58:53+00:00" + "time": "2024-10-18T12:04:31+00:00" }, { "name": "ralouphie/getallheaders", @@ -6500,16 +6518,16 @@ }, { "name": "spatie/image-optimizer", - "version": "1.7.5", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "43aff6725cd87bb78ccd8532633cfa8bdc962505" + "reference": "4fd22035e81d98fffced65a8c20d9ec4daa9671c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/43aff6725cd87bb78ccd8532633cfa8bdc962505", - "reference": "43aff6725cd87bb78ccd8532633cfa8bdc962505", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/4fd22035e81d98fffced65a8c20d9ec4daa9671c", + "reference": "4fd22035e81d98fffced65a8c20d9ec4daa9671c", "shasum": "" }, "require": { @@ -6549,9 +6567,9 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.7.5" + "source": "https://github.com/spatie/image-optimizer/tree/1.8.0" }, - "time": "2024-05-16T08:48:33+00:00" + "time": "2024-11-04T08:24:54+00:00" }, { "name": "spatie/laravel-backup", @@ -7049,16 +7067,16 @@ }, { "name": "symfony/cache", - "version": "v7.1.5", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "86e5296b10e4dec8c8441056ca606aedb8a3be0a" + "reference": "23b61c9592ee72233c31625f0ae805dd1571e928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/86e5296b10e4dec8c8441056ca606aedb8a3be0a", - "reference": "86e5296b10e4dec8c8441056ca606aedb8a3be0a", + "url": "https://api.github.com/repos/symfony/cache/zipball/23b61c9592ee72233c31625f0ae805dd1571e928", + "reference": "23b61c9592ee72233c31625f0ae805dd1571e928", "shasum": "" }, "require": { @@ -7126,7 +7144,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.1.5" + "source": "https://github.com/symfony/cache/tree/v7.1.7" }, "funding": [ { @@ -7142,7 +7160,7 @@ "type": "tidelift" } ], - "time": "2024-09-17T09:16:35+00:00" + "time": "2024-11-05T15:34:55+00:00" }, { "name": "symfony/cache-contracts", @@ -7222,16 +7240,16 @@ }, { "name": "symfony/clock", - "version": "v7.1.1", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7" + "reference": "97bebc53548684c17ed696bc8af016880f0f098d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/3dfc8b084853586de51dd1441c6242c76a28cbe7", - "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7", + "url": "https://api.github.com/repos/symfony/clock/zipball/97bebc53548684c17ed696bc8af016880f0f098d", + "reference": "97bebc53548684c17ed696bc8af016880f0f098d", "shasum": "" }, "require": { @@ -7276,7 +7294,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.1.1" + "source": "https://github.com/symfony/clock/tree/v7.1.6" }, "funding": [ { @@ -7292,20 +7310,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/console", - "version": "v7.1.5", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee" + "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0fa539d12b3ccf068a722bbbffa07ca7079af9ee", - "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee", + "url": "https://api.github.com/repos/symfony/console/zipball/3284aafcac338b6e86fd955ee4d794cbe434151a", + "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a", "shasum": "" }, "require": { @@ -7369,7 +7387,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.5" + "source": "https://github.com/symfony/console/tree/v7.1.7" }, "funding": [ { @@ -7385,20 +7403,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-11-05T15:34:55+00:00" }, { "name": "symfony/css-selector", - "version": "v7.1.1", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" + "reference": "4aa4f6b3d6749c14d3aa815eef8226632e7bbc66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", - "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4aa4f6b3d6749c14d3aa815eef8226632e7bbc66", + "reference": "4aa4f6b3d6749c14d3aa815eef8226632e7bbc66", "shasum": "" }, "require": { @@ -7434,7 +7452,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.1.1" + "source": "https://github.com/symfony/css-selector/tree/v7.1.6" }, "funding": [ { @@ -7450,7 +7468,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/deprecation-contracts", @@ -7521,16 +7539,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.1.3", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "432bb369952795c61ca1def65e078c4a80dad13c" + "reference": "010e44661f4c6babaf8c4862fe68c24a53903342" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/432bb369952795c61ca1def65e078c4a80dad13c", - "reference": "432bb369952795c61ca1def65e078c4a80dad13c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/010e44661f4c6babaf8c4862fe68c24a53903342", + "reference": "010e44661f4c6babaf8c4862fe68c24a53903342", "shasum": "" }, "require": { @@ -7576,7 +7594,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.1.3" + "source": "https://github.com/symfony/error-handler/tree/v7.1.7" }, "funding": [ { @@ -7592,20 +7610,20 @@ "type": "tidelift" } ], - "time": "2024-07-26T13:02:51+00:00" + "time": "2024-11-05T15:34:55+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.1.1", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + "reference": "87254c78dd50721cfd015b62277a8281c5589702" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87254c78dd50721cfd015b62277a8281c5589702", + "reference": "87254c78dd50721cfd015b62277a8281c5589702", "shasum": "" }, "require": { @@ -7656,7 +7674,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.6" }, "funding": [ { @@ -7672,7 +7690,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7752,16 +7770,16 @@ }, { "name": "symfony/finder", - "version": "v7.1.4", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d95bbf319f7d052082fb7af147e0f835a695e823" + "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d95bbf319f7d052082fb7af147e0f835a695e823", - "reference": "d95bbf319f7d052082fb7af147e0f835a695e823", + "url": "https://api.github.com/repos/symfony/finder/zipball/2cb89664897be33f78c65d3d2845954c8d7a43b8", + "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8", "shasum": "" }, "require": { @@ -7796,7 +7814,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.4" + "source": "https://github.com/symfony/finder/tree/v7.1.6" }, "funding": [ { @@ -7812,20 +7830,20 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:28:19+00:00" + "time": "2024-10-01T08:31:23+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.12", + "version": "v6.4.14", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "fbebfcce21084d3e91ea987ae5bdd8c71ff0fd56" + "reference": "05d88cbd816ad6e0202edd9a9963cb9d615b8826" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/fbebfcce21084d3e91ea987ae5bdd8c71ff0fd56", - "reference": "fbebfcce21084d3e91ea987ae5bdd8c71ff0fd56", + "url": "https://api.github.com/repos/symfony/http-client/zipball/05d88cbd816ad6e0202edd9a9963cb9d615b8826", + "reference": "05d88cbd816ad6e0202edd9a9963cb9d615b8826", "shasum": "" }, "require": { @@ -7889,7 +7907,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.12" + "source": "https://github.com/symfony/http-client/tree/v6.4.14" }, "funding": [ { @@ -7905,7 +7923,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:21:33+00:00" + "time": "2024-11-05T16:39:55+00:00" }, { "name": "symfony/http-client-contracts", @@ -7987,16 +8005,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.1.5", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e30ef73b1e44eea7eb37ba69600a354e553f694b" + "reference": "5183b61657807099d98f3367bcccb850238b17a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e30ef73b1e44eea7eb37ba69600a354e553f694b", - "reference": "e30ef73b1e44eea7eb37ba69600a354e553f694b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5183b61657807099d98f3367bcccb850238b17a9", + "reference": "5183b61657807099d98f3367bcccb850238b17a9", "shasum": "" }, "require": { @@ -8044,7 +8062,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.1.5" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.7" }, "funding": [ { @@ -8060,20 +8078,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-11-06T09:02:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.1.5", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "44204d96150a9df1fc57601ec933d23fefc2d65b" + "reference": "7f137cda31fd41e422edcdc01915f2c095b84399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/44204d96150a9df1fc57601ec933d23fefc2d65b", - "reference": "44204d96150a9df1fc57601ec933d23fefc2d65b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f137cda31fd41e422edcdc01915f2c095b84399", + "reference": "7f137cda31fd41e422edcdc01915f2c095b84399", "shasum": "" }, "require": { @@ -8158,7 +8176,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.1.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.1.7" }, "funding": [ { @@ -8174,20 +8192,20 @@ "type": "tidelift" } ], - "time": "2024-09-21T06:09:21+00:00" + "time": "2024-11-06T09:54:34+00:00" }, { "name": "symfony/mailer", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "bbf21460c56f29810da3df3e206e38dfbb01e80b" + "reference": "69c9948451fb3a6a4d47dc8261d1794734e76cdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/bbf21460c56f29810da3df3e206e38dfbb01e80b", - "reference": "bbf21460c56f29810da3df3e206e38dfbb01e80b", + "url": "https://api.github.com/repos/symfony/mailer/zipball/69c9948451fb3a6a4d47dc8261d1794734e76cdd", + "reference": "69c9948451fb3a6a4d47dc8261d1794734e76cdd", "shasum": "" }, "require": { @@ -8238,7 +8256,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.1.5" + "source": "https://github.com/symfony/mailer/tree/v7.1.6" }, "funding": [ { @@ -8254,20 +8272,20 @@ "type": "tidelift" } ], - "time": "2024-09-08T12:32:26+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v6.4.10", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "3eb7c7b644179a766f5d816620b7b6d4a4e7ec43" + "reference": "ad4e79798a5eb80af99004a4871b4fe5effe33a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/3eb7c7b644179a766f5d816620b7b6d4a4e7ec43", - "reference": "3eb7c7b644179a766f5d816620b7b6d4a4e7ec43", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/ad4e79798a5eb80af99004a4871b4fe5effe33a3", + "reference": "ad4e79798a5eb80af99004a4871b4fe5effe33a3", "shasum": "" }, "require": { @@ -8307,7 +8325,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.10" + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.13" }, "funding": [ { @@ -8323,20 +8341,20 @@ "type": "tidelift" } ], - "time": "2024-07-04T11:16:22+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/mime", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "711d2e167e8ce65b05aea6b258c449671cdd38ff" + "reference": "caa1e521edb2650b8470918dfe51708c237f0598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/711d2e167e8ce65b05aea6b258c449671cdd38ff", - "reference": "711d2e167e8ce65b05aea6b258c449671cdd38ff", + "url": "https://api.github.com/repos/symfony/mime/zipball/caa1e521edb2650b8470918dfe51708c237f0598", + "reference": "caa1e521edb2650b8470918dfe51708c237f0598", "shasum": "" }, "require": { @@ -8391,7 +8409,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.1.5" + "source": "https://github.com/symfony/mime/tree/v7.1.6" }, "funding": [ { @@ -8407,7 +8425,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-10-25T15:11:02+00:00" }, { "name": "symfony/polyfill-ctype", @@ -9047,16 +9065,16 @@ }, { "name": "symfony/process", - "version": "v7.1.5", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "5c03ee6369281177f07f7c68252a280beccba847" + "reference": "9b8a40b7289767aa7117e957573c2a535efe6585" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5c03ee6369281177f07f7c68252a280beccba847", - "reference": "5c03ee6369281177f07f7c68252a280beccba847", + "url": "https://api.github.com/repos/symfony/process/zipball/9b8a40b7289767aa7117e957573c2a535efe6585", + "reference": "9b8a40b7289767aa7117e957573c2a535efe6585", "shasum": "" }, "require": { @@ -9088,7 +9106,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.1.5" + "source": "https://github.com/symfony/process/tree/v7.1.7" }, "funding": [ { @@ -9104,20 +9122,20 @@ "type": "tidelift" } ], - "time": "2024-09-19T21:48:23+00:00" + "time": "2024-11-06T09:25:12+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v7.1.4", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "405a7bcd872f1563966f64be19f1362d94ce71ab" + "reference": "f16471bb19f6685b9ccf0a2c03c213840ae68cd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/405a7bcd872f1563966f64be19f1362d94ce71ab", - "reference": "405a7bcd872f1563966f64be19f1362d94ce71ab", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/f16471bb19f6685b9ccf0a2c03c213840ae68cd6", + "reference": "f16471bb19f6685b9ccf0a2c03c213840ae68cd6", "shasum": "" }, "require": { @@ -9171,7 +9189,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.1.4" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.1.6" }, "funding": [ { @@ -9187,20 +9205,20 @@ "type": "tidelift" } ], - "time": "2024-08-15T22:48:53+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/routing", - "version": "v7.1.4", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "1500aee0094a3ce1c92626ed8cf3c2037e86f5a7" + "reference": "66a2c469f6c22d08603235c46a20007c0701ea0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/1500aee0094a3ce1c92626ed8cf3c2037e86f5a7", - "reference": "1500aee0094a3ce1c92626ed8cf3c2037e86f5a7", + "url": "https://api.github.com/repos/symfony/routing/zipball/66a2c469f6c22d08603235c46a20007c0701ea0a", + "reference": "66a2c469f6c22d08603235c46a20007c0701ea0a", "shasum": "" }, "require": { @@ -9252,7 +9270,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.1.4" + "source": "https://github.com/symfony/routing/tree/v7.1.6" }, "funding": [ { @@ -9268,7 +9286,7 @@ "type": "tidelift" } ], - "time": "2024-08-29T08:16:25+00:00" + "time": "2024-10-01T08:31:23+00:00" }, { "name": "symfony/service-contracts", @@ -9355,16 +9373,16 @@ }, { "name": "symfony/string", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" + "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", - "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", + "url": "https://api.github.com/repos/symfony/string/zipball/61b72d66bf96c360a727ae6232df5ac83c71f626", + "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626", "shasum": "" }, "require": { @@ -9422,7 +9440,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.5" + "source": "https://github.com/symfony/string/tree/v7.1.6" }, "funding": [ { @@ -9438,20 +9456,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/translation", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "235535e3f84f3dfbdbde0208ede6ca75c3a489ea" + "reference": "b9f72ab14efdb6b772f85041fa12f820dee8d55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/235535e3f84f3dfbdbde0208ede6ca75c3a489ea", - "reference": "235535e3f84f3dfbdbde0208ede6ca75c3a489ea", + "url": "https://api.github.com/repos/symfony/translation/zipball/b9f72ab14efdb6b772f85041fa12f820dee8d55f", + "reference": "b9f72ab14efdb6b772f85041fa12f820dee8d55f", "shasum": "" }, "require": { @@ -9516,7 +9534,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.1.5" + "source": "https://github.com/symfony/translation/tree/v7.1.6" }, "funding": [ { @@ -9532,7 +9550,7 @@ "type": "tidelift" } ], - "time": "2024-09-16T06:30:38+00:00" + "time": "2024-09-28T12:35:13+00:00" }, { "name": "symfony/translation-contracts", @@ -9614,16 +9632,16 @@ }, { "name": "symfony/uid", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8c7bb8acb933964055215d89f9a9871df0239317" + "reference": "65befb3bb2d503bbffbd08c815aa38b472999917" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8c7bb8acb933964055215d89f9a9871df0239317", - "reference": "8c7bb8acb933964055215d89f9a9871df0239317", + "url": "https://api.github.com/repos/symfony/uid/zipball/65befb3bb2d503bbffbd08c815aa38b472999917", + "reference": "65befb3bb2d503bbffbd08c815aa38b472999917", "shasum": "" }, "require": { @@ -9668,7 +9686,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.1.5" + "source": "https://github.com/symfony/uid/tree/v7.1.6" }, "funding": [ { @@ -9684,20 +9702,20 @@ "type": "tidelift" } ], - "time": "2024-09-17T09:16:35+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.1.5", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e20e03889539fd4e4211e14d2179226c513c010d" + "reference": "f6ea51f669760cacd7464bf7eaa0be87b8072db1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e20e03889539fd4e4211e14d2179226c513c010d", - "reference": "e20e03889539fd4e4211e14d2179226c513c010d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f6ea51f669760cacd7464bf7eaa0be87b8072db1", + "reference": "f6ea51f669760cacd7464bf7eaa0be87b8072db1", "shasum": "" }, "require": { @@ -9751,7 +9769,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.1.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.1.7" }, "funding": [ { @@ -9767,20 +9785,20 @@ "type": "tidelift" } ], - "time": "2024-09-16T10:07:02+00:00" + "time": "2024-11-05T15:34:55+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.1.2", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" + "reference": "90173ef89c40e7c8c616653241048705f84130ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/90173ef89c40e7c8c616653241048705f84130ef", + "reference": "90173ef89c40e7c8c616653241048705f84130ef", "shasum": "" }, "require": { @@ -9827,7 +9845,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.6" }, "funding": [ { @@ -9843,7 +9861,7 @@ "type": "tidelift" } ], - "time": "2024-06-28T08:00:31+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -10748,16 +10766,16 @@ }, { "name": "laravel/telescope", - "version": "v5.2.2", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "daaf95dee9fab2dd80f59b5f6611c6c0eff44878" + "reference": "749369e996611d803e7c1b57929b482dd676008d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/daaf95dee9fab2dd80f59b5f6611c6c0eff44878", - "reference": "daaf95dee9fab2dd80f59b5f6611c6c0eff44878", + "url": "https://api.github.com/repos/laravel/telescope/zipball/749369e996611d803e7c1b57929b482dd676008d", + "reference": "749369e996611d803e7c1b57929b482dd676008d", "shasum": "" }, "require": { @@ -10811,9 +10829,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v5.2.2" + "source": "https://github.com/laravel/telescope/tree/v5.2.4" }, - "time": "2024-08-26T12:40:52+00:00" + "time": "2024-10-29T15:35:13+00:00" }, { "name": "mockery/mockery", @@ -10960,23 +10978,23 @@ }, { "name": "nunomaduro/collision", - "version": "v8.4.0", + "version": "v8.5.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "e7d1aa8ed753f63fa816932bbc89678238843b4a" + "reference": "f5c101b929c958e849a633283adff296ed5f38f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/e7d1aa8ed753f63fa816932bbc89678238843b4a", - "reference": "e7d1aa8ed753f63fa816932bbc89678238843b4a", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", + "reference": "f5c101b929c958e849a633283adff296ed5f38f5", "shasum": "" }, "require": { - "filp/whoops": "^2.15.4", - "nunomaduro/termwind": "^2.0.1", + "filp/whoops": "^2.16.0", + "nunomaduro/termwind": "^2.1.0", "php": "^8.2.0", - "symfony/console": "^7.1.3" + "symfony/console": "^7.1.5" }, "conflict": { "laravel/framework": "<11.0.0 || >=12.0.0", @@ -10984,14 +11002,14 @@ }, "require-dev": { "larastan/larastan": "^2.9.8", - "laravel/framework": "^11.19.0", - "laravel/pint": "^1.17.1", - "laravel/sail": "^1.31.0", - "laravel/sanctum": "^4.0.2", - "laravel/tinker": "^2.9.0", - "orchestra/testbench-core": "^9.2.3", - "pestphp/pest": "^2.35.0 || ^3.0.0", - "sebastian/environment": "^6.1.0 || ^7.0.0" + "laravel/framework": "^11.28.0", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^4.0.3", + "laravel/tinker": "^2.10.0", + "orchestra/testbench-core": "^9.5.3", + "pestphp/pest": "^2.36.0 || ^3.4.0", + "sebastian/environment": "^6.1.0 || ^7.2.0" }, "type": "library", "extra": { @@ -11053,7 +11071,7 @@ "type": "patreon" } ], - "time": "2024-08-03T15:32:23+00:00" + "time": "2024-10-15T16:06:32+00:00" }, { "name": "phar-io/manifest", @@ -11175,35 +11193,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.6", + "version": "11.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ebdffc9e09585dafa71b9bffcdb0a229d4704c45" + "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ebdffc9e09585dafa71b9bffcdb0a229d4704c45", - "reference": "ebdffc9e09585dafa71b9bffcdb0a229d4704c45", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f7f08030e8811582cc459871d28d6f5a1a4d35ca", + "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.1.0", + "nikic/php-parser": "^5.3.1", "php": ">=8.2", - "phpunit/php-file-iterator": "^5.0.1", + "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", "sebastian/code-unit-reverse-lookup": "^4.0.1", "sebastian/complexity": "^4.0.1", "sebastian/environment": "^7.2.0", "sebastian/lines-of-code": "^3.0.1", - "sebastian/version": "^5.0.1", + "sebastian/version": "^5.0.2", "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.4.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -11241,7 +11259,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.7" }, "funding": [ { @@ -11249,7 +11267,7 @@ "type": "github" } ], - "time": "2024-08-22T04:37:56+00:00" + "time": "2024-10-09T06:21:38+00:00" }, { "name": "phpunit/php-file-iterator", @@ -11498,16 +11516,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.4.0", + "version": "11.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "89fe0c530133c08f7fff89d3d727154e4e504925" + "reference": "e8e8ed1854de5d36c088ec1833beae40d2dedd76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/89fe0c530133c08f7fff89d3d727154e4e504925", - "reference": "89fe0c530133c08f7fff89d3d727154e4e504925", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8e8ed1854de5d36c088ec1833beae40d2dedd76", + "reference": "e8e8ed1854de5d36c088ec1833beae40d2dedd76", "shasum": "" }, "require": { @@ -11521,21 +11539,21 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.6", + "phpunit/php-code-coverage": "^11.0.7", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.1", - "sebastian/comparator": "^6.1.0", + "sebastian/comparator": "^6.1.1", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", "sebastian/exporter": "^6.1.3", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", "sebastian/type": "^5.1.0", - "sebastian/version": "^5.0.1" + "sebastian/version": "^5.0.2" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -11578,7 +11596,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.4.0" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.4.3" }, "funding": [ { @@ -11594,7 +11612,7 @@ "type": "tidelift" } ], - "time": "2024-10-05T08:39:03+00:00" + "time": "2024-10-28T13:07:50+00:00" }, { "name": "sebastian/cli-parser", @@ -11768,16 +11786,16 @@ }, { "name": "sebastian/comparator", - "version": "6.1.0", + "version": "6.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa37b9e2ca618cb051d71b60120952ee8ca8b03d" + "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa37b9e2ca618cb051d71b60120952ee8ca8b03d", - "reference": "fa37b9e2ca618cb051d71b60120952ee8ca8b03d", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", + "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", "shasum": "" }, "require": { @@ -11788,12 +11806,12 @@ "sebastian/exporter": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "6.2-dev" } }, "autoload": { @@ -11833,7 +11851,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.1.0" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" }, "funding": [ { @@ -11841,7 +11859,7 @@ "type": "github" } ], - "time": "2024-09-11T15:42:56+00:00" + "time": "2024-10-31T05:30:08+00:00" }, { "name": "sebastian/complexity", @@ -12467,16 +12485,16 @@ }, { "name": "sebastian/version", - "version": "5.0.1", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "45c9debb7d039ce9b97de2f749c2cf5832a06ac4" + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/45c9debb7d039ce9b97de2f749c2cf5832a06ac4", - "reference": "45c9debb7d039ce9b97de2f749c2cf5832a06ac4", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", "shasum": "" }, "require": { @@ -12509,7 +12527,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/version/issues", "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" }, "funding": [ { @@ -12517,7 +12535,7 @@ "type": "github" } ], - "time": "2024-07-03T05:13:08+00:00" + "time": "2024-10-09T05:16:32+00:00" }, { "name": "theseer/tokenizer", diff --git a/database/migrations/2024_10_15_044935_create_moderated_profiles_table.php b/database/migrations/2024_10_15_044935_create_moderated_profiles_table.php new file mode 100644 index 000000000..2aa9580a5 --- /dev/null +++ b/database/migrations/2024_10_15_044935_create_moderated_profiles_table.php @@ -0,0 +1,56 @@ +id(); + $table->string('profile_url')->unique()->nullable()->index(); + $table->unsignedBigInteger('profile_id')->unique()->nullable(); + $table->string('domain')->nullable(); + $table->text('note')->nullable(); + $table->boolean('is_banned')->default(false); + $table->boolean('is_nsfw')->default(false); + $table->boolean('is_unlisted')->default(false); + $table->boolean('is_noautolink')->default(false); + $table->boolean('is_nodms')->default(false); + $table->boolean('is_notrending')->default(false); + $table->timestamps(); + }); + + $logs = ModLog::whereObjectType('App\Profile::class')->whereAction('admin.user.delete')->get(); + + foreach($logs as $log) { + $profile = Profile::withTrashed()->find($log->object_id); + if(!$profile || $profile->private_key) { + continue; + } + ModeratedProfile::updateOrCreate([ + 'profile_url' => $profile->remote_url, + 'profile_id' => $profile->id, + ], [ + 'is_banned' => true, + 'domain' => $profile->domain, + ]); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('moderated_profiles'); + } +}; diff --git a/public/js/admin.js b/public/js/admin.js index 8b9abbf2b..c369fbe14 100644 Binary files a/public/js/admin.js and b/public/js/admin.js differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 86204d8f1..ee11d513f 100644 Binary files a/public/mix-manifest.json and b/public/mix-manifest.json differ diff --git a/resources/assets/components/admin/AdminReports.vue b/resources/assets/components/admin/AdminReports.vue index e43f8af62..20fa386a2 100644 --- a/resources/assets/components/admin/AdminReports.vue +++ b/resources/assets/components/admin/AdminReports.vue @@ -147,15 +147,10 @@
ID | +Username | +Moderation | +Comment | +Created | +
---|---|---|---|---|
+ + | +
+ + {{ truncateText(report.profile.name, 40) }} + ++ {{ truncateText(report.profile.username, 40) }} + + |
+ + + | +
+ {{ truncateText(report.note, 140) }} + |
+ + + {{ timeAgo(report.created_at) }} + + | +
+
No results found!
+ + + + ++
No active moderation accounts found!
+ +