diff --git a/app/Console/Commands/Subscriptions/MigrateSubscriptions.php b/app/Console/Commands/Subscriptions/MigrateSubscriptions.php new file mode 100644 index 0000000000..a635ea17d8 --- /dev/null +++ b/app/Console/Commands/Subscriptions/MigrateSubscriptions.php @@ -0,0 +1,85 @@ +where('stripe_status', 'active') + ->whereIn('stripe_price', $old) + ->has('user') + ->chunkById(200, function ($subs) { + if ($this->count > $this->limit) { + return false; + } + foreach ($subs as $s) { + if ($this->count > $this->limit) { + return false; + } + $this->info('User #' . $s->user->id . ' ' . $s->user->email . ' https://dashboard.stripe.com/customers/' . $s->user->stripe_id); + try { + $old = $s->stripe_price; + $new = $this->map($old); + if ($new === 'error' || empty($new)) { + $this->error('Invalid old price ' . $old . ' to ' . $new); + continue; + } + $s->user->subscription('kanka')->noProrate()->swap($new); + $this->info('(' . $s->user->pledge . '): ' . $old . ' => ' . $new); + } catch (\Exception $e) { + $this->error($e->getMessage()); + } + $this->count++; + } + }); + + } + + protected function map(string $price): string + { + return match($price) { + config('subscription.old.oe') => config('subscription.owlbear.eur.monthly'), + config('subscription.old.oey') => config('subscription.owlbear.eur.yearly'), + config('subscription.old.ou') => config('subscription.owlbear.usd.monthly'), + config('subscription.old.ouy') => config('subscription.owlbear.usd.yearly'), + + config('subscription.old.we') => config('subscription.wyvern.eur.monthly'), + config('subscription.old.wey') => config('subscription.wyvern.eur.yearly'), + config('subscription.old.wu') => config('subscription.wyvern.usd.monthly'), + config('subscription.old.wuy') => config('subscription.wyvern.usd.yearly'), + + config('subscription.old.ee') => config('subscription.elemental.eur.monthly'), + config('subscription.old.eey') => config('subscription.elemental.eur.yearly'), + config('subscription.old.eu') => config('subscription.elemental.usd.monthly'), + config('subscription.old.euy') => config('subscription.elemental.usd.yearly'), + default => 'error', + }; + } +} diff --git a/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php b/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php index a3102b82e3..2cc0c1c9c9 100644 --- a/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php +++ b/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php @@ -44,14 +44,11 @@ public function __construct() */ public function handle() { - $plans = [ - config('subscription.owlbear.eur.yearly'), - config('subscription.owlbear.usd.yearly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - config('subscription.elemental.eur.yearly'), - config('subscription.elemental.usd.yearly'), - ]; + $plans = array_merge( + config('subscription.owlbear.yearly'), + config('subscription.wyvern.yearly'), + config('subscription.elemental.yearly'), + ); $now = Carbon::now()->addMonth(); $log = "Looking for active yearly subscriptions created on month {$now->month} and day {$now->day}"; diff --git a/app/Datagrids/Bulks/CreatureBulk.php b/app/Datagrids/Bulks/CreatureBulk.php index b01c4653a5..4fbfb1c6bf 100644 --- a/app/Datagrids/Bulks/CreatureBulk.php +++ b/app/Datagrids/Bulks/CreatureBulk.php @@ -10,7 +10,12 @@ class CreatureBulk extends Bulk 'creature_id', 'tags', 'private_choice', + 'extinct_choice', 'entity_image', 'entity_header', ]; + + protected $booleans = [ + 'is_extinct' + ]; } diff --git a/app/Datagrids/Filters/CreatureFilter.php b/app/Datagrids/Filters/CreatureFilter.php index 2f167b6a64..45ac6e0ebd 100644 --- a/app/Datagrids/Filters/CreatureFilter.php +++ b/app/Datagrids/Filters/CreatureFilter.php @@ -23,6 +23,7 @@ public function build() 'model' => Creature::class, ]) ->location() + ->add('is_extinct') ->isPrivate() ->template() ->hasImage() diff --git a/app/Http/Controllers/Api/v1/CampaignApiController.php b/app/Http/Controllers/Api/v1/CampaignApiController.php index e05df78c98..8d0bd090dc 100644 --- a/app/Http/Controllers/Api/v1/CampaignApiController.php +++ b/app/Http/Controllers/Api/v1/CampaignApiController.php @@ -10,7 +10,6 @@ class CampaignApiController extends ApiController { public function index(\Illuminate\Http\Request $request) { - // @phpstan-ignore-next-line $campaigns = $request ->user() ->campaigns() diff --git a/app/Http/Controllers/Calendars/Bulks/EntityEventController.php b/app/Http/Controllers/Calendars/Bulks/EntityEventController.php new file mode 100644 index 0000000000..399b2bb021 --- /dev/null +++ b/app/Http/Controllers/Calendars/Bulks/EntityEventController.php @@ -0,0 +1,39 @@ +authorize('update', $calendar); + $action = $request->get('action'); + $models = $request->get('model'); + if (!in_array($action, $this->validBulkActions()) || empty($models)) { + return redirect()->back(); + } + + if ($action === 'edit') { + return $this->campaign($campaign)->bulkBatch(route('calendars.entity-events.bulk', [ + 'campaign' => $campaign, 'calendar' => $calendar]), '_calendar-event', $models, $calendar); + } + + $count = $this->campaign($campaign)->bulkProcess($request, EntityEvent::class); + + return redirect() + ->route('calendars.events', [$campaign, 'calendar' => $calendar]) + ->with('success', trans_choice('calendars.events.bulks.' . $action, $count, ['count' => $count])) + ; + } +} diff --git a/app/Http/Controllers/Calendars/EventController.php b/app/Http/Controllers/Calendars/EventController.php index becc89cc0b..16c905f036 100644 --- a/app/Http/Controllers/Calendars/EventController.php +++ b/app/Http/Controllers/Calendars/EventController.php @@ -16,6 +16,7 @@ use App\Traits\Controllers\HasSubview; use App\Traits\GuestAuthTrait; use Exception; +use Illuminate\Support\Str; class EventController extends Controller { @@ -77,9 +78,9 @@ public function create(Campaign $campaign, Calendar $calendar) { $this->authorize('update', $calendar); - $date = request()->get('date'); + $date = request()->get('date', '1-1-1'); list($year, $month, $day) = explode('-', $date); - if (str_starts_with($date, '-')) { + if (Str::startsWith($date, '-')) { list($year, $month, $day) = explode('-', trim($date, '-')); $year = "-{$year}"; } diff --git a/app/Http/Controllers/Campaign/ImportController.php b/app/Http/Controllers/Campaign/ImportController.php index 4c21a85c35..89a14df037 100644 --- a/app/Http/Controllers/Campaign/ImportController.php +++ b/app/Http/Controllers/Campaign/ImportController.php @@ -24,6 +24,7 @@ public function index(Campaign $campaign) Datagrid::layout(\App\Renderers\Layouts\Campaign\CampaignImport::class); + // @phpstan-ignore-next-line $rows = $campaign->campaignImports() ->sort(request()->only(['o', 'k'])) ->where('status_id', '<>', CampaignImportStatus::PREPARED) diff --git a/app/Http/Controllers/Campaign/RoleUserController.php b/app/Http/Controllers/Campaign/RoleUserController.php index dc569ef37b..a93cef6edf 100644 --- a/app/Http/Controllers/Campaign/RoleUserController.php +++ b/app/Http/Controllers/Campaign/RoleUserController.php @@ -16,11 +16,6 @@ class RoleUserController extends Controller protected MemberService $service; - /** - * Create a new controller instance. - * - * @return void - */ public function __construct(MemberService $service) { $this->middleware('auth'); @@ -34,10 +29,6 @@ public function index(Campaign $campaign) return redirect()->route('campaign_roles.index', $campaign); } - /** - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException - */ public function create(Campaign $campaign, CampaignRole $campaignRole) { $this->authorize('roles', $campaign); @@ -46,10 +37,6 @@ public function create(Campaign $campaign, CampaignRole $campaignRole) return view($this->view . '.create', ['campaign' => $campaign, 'role' => $campaignRole]); } - /** - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException - */ public function store(StoreCampaignRoleUser $request, Campaign $campaign, CampaignRole $campaignRole) { $this->authorize('roles', $campaign); @@ -69,19 +56,12 @@ public function store(StoreCampaignRoleUser $request, Campaign $campaign, Campai ])); } - /** - * @return \Illuminate\Http\RedirectResponse - */ public function show(Campaign $campaign, CampaignRole $campaignRole, CampaignRoleUser $campaignRoleUser) { return redirect() ->route('campaign_roles.show', [$campaign, $campaignRole]); } - /** - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException - */ public function destroy(Campaign $campaign, CampaignRole $campaignRole, CampaignRoleUser $campaignRoleUser) { $this->authorize('roles', $campaign); diff --git a/app/Http/Controllers/Campaign/UserController.php b/app/Http/Controllers/Campaign/UserController.php index 7a1d2a9c2f..4f9d956994 100644 --- a/app/Http/Controllers/Campaign/UserController.php +++ b/app/Http/Controllers/Campaign/UserController.php @@ -36,7 +36,7 @@ public function index(Campaign $campaign) $this->rows = $campaign ->members() ->sort(request()->only(['o', 'k']), ['id' => 'desc']) - ->with(['user', 'campaign', 'user.campaignRoles', 'user.campaignRoleUser']) + ->with(['user', 'campaign', 'user.campaignRoles', 'user.campaignRoleUser', 'user.tutorials']) ->paginate(); $invitations = $campaign diff --git a/app/Http/Controllers/CrudController.php b/app/Http/Controllers/CrudController.php index faeec785ae..f5472fa9d5 100644 --- a/app/Http/Controllers/CrudController.php +++ b/app/Http/Controllers/CrudController.php @@ -36,58 +36,53 @@ class CrudController extends Controller use HasDatagrid; use HasSubview; - /** @var string The view where to find the resources */ + /** The view where to find the resources */ protected string $view = ''; - /** @var string The name of the route for the resource */ + /** The name of the route for the resource */ protected string $route = ''; /** @var MiscModel|Model|string|null */ - protected $model = null; + protected $model; protected string $filter; - /** @var FilterService */ - protected $filterService; + /** */ + protected FilterService $filterService; - /** @var bool If the permissions tab and pane is enabled or not. */ + /** If the permissions tab and pane is enabled or not. */ protected bool $tabPermissions = true; - /** @var bool If the attributes tab and pane is enabled or not */ + /** If the attributes tab and pane is enabled or not */ protected bool $tabAttributes = true; - /** @var bool If the copy tab and pane is enabled or not */ + /** If the copy tab and pane is enabled or not */ protected bool $tabCopy = true; - /** @var bool If the boosted tab and pane is enabled or not */ + /** If the boosted tab and pane is enabled or not */ protected bool $tabBoosted = true; - /** @var array List of navigation actions on top of the datagrids */ + /** List of navigation actions on top of the datagrids */ protected array $navActions = []; - /** @var string Make the request play nice with the model */ + /** Make the request play nice with the model */ protected string $sanitizer = MiscSanitizer::class; /** * A sorter object for subviews * @var null|DatagridSorter */ - protected $datagridSorter = null; + protected DatagridSorter $datagridSorter; - /** @var bool If the auth check was already performed on this controller */ + /** If the auth check was already performed on this controller */ protected bool $alreadyAuthChecked = false; - /** @var string The datagrid actions, set to null to disable */ + /** The datagrid actions, set to null to disable */ protected string $datagridActions = DefaultDatagridActions::class; - /** @var bool Determine if the create/store procedure has a limit checking in place */ + /** Determine if the create/store procedure has a limit checking in place */ protected bool $hasLimitCheck = false; - /** - * Create a new controller instance. - * - * @return void - */ public function __construct() { $this->middleware('campaign.member'); @@ -222,8 +217,8 @@ public function crudIndex(Request $request) 'entityTypeId', 'singular', ); - if (!empty($this->titleKey)) { - $data['titleKey'] = $this->titleKey; + if (method_exists($this, 'titleKey')) { + $data['titleKey'] = $this->titleKey(); } else { $data['titleKey'] = Module::plural($entityTypeId, __('entities.' . $langKey)); } diff --git a/app/Http/Controllers/Entity/AbilityController.php b/app/Http/Controllers/Entity/AbilityController.php index 4d83780e30..467bb28c47 100644 --- a/app/Http/Controllers/Entity/AbilityController.php +++ b/app/Http/Controllers/Entity/AbilityController.php @@ -103,6 +103,9 @@ public function edit(Campaign $campaign, Entity $entity, EntityAbility $entityAb { $this->authorize('update', $entity->child); $ability = $entityAbility; + if (empty($ability->ability)) { + abort(403); + } return view('entities.pages.abilities.update', compact( 'campaign', diff --git a/app/Http/Controllers/Families/Trees/ApiController.php b/app/Http/Controllers/Families/Trees/ApiController.php index 1230b7aa31..0ee6a92d05 100644 --- a/app/Http/Controllers/Families/Trees/ApiController.php +++ b/app/Http/Controllers/Families/Trees/ApiController.php @@ -62,7 +62,8 @@ public function entity(Campaign $campaign, Entity $entity): JsonResponse */ public function save(Request $request, Campaign $campaign, Family $family): JsonResponse { - //dd($request->get('data')); + $this->authorize('update', $family); + return response()->json( $this ->service diff --git a/app/Http/Controllers/RelationController.php b/app/Http/Controllers/RelationController.php index 40a2d71ab3..f79ffa119c 100644 --- a/app/Http/Controllers/RelationController.php +++ b/app/Http/Controllers/RelationController.php @@ -34,20 +34,21 @@ class RelationController extends CrudController /** @var string Disable the sanitizer, handled by the observer */ protected string $sanitizer = ''; - /** */ protected string $filter = RelationFilter::class; - public string $titleKey; public function __construct(RelationService $relationService) { parent::__construct(); $this->middleware('auth'); - - $this->titleKey = __('sidebar.relations'); $this->relationService = $relationService; } + public function titleKey(): string + { + return __('sidebar.relations'); + } + /** * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response * @throws \Illuminate\Auth\Access\AuthorizationException diff --git a/app/Http/Controllers/Search/GameSystemSearchController.php b/app/Http/Controllers/Search/GameSystemSearchController.php index 7fccf2e2e3..3ed6a63c37 100644 --- a/app/Http/Controllers/Search/GameSystemSearchController.php +++ b/app/Http/Controllers/Search/GameSystemSearchController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Search; use App\Http\Controllers\Controller; -use App\Models\Campaign; use Illuminate\Http\JsonResponse; use App\Models\GameSystem; @@ -15,11 +14,12 @@ class GameSystemSearchController extends Controller /** * Get a user's recent searches */ - public function index(Campaign $campaign): JsonResponse + public function index(): JsonResponse { /** @var GameSystem[] $systems */ $systems = GameSystem::where('name', 'like', '%' . request()->get('q') . '%') - ->withCount('campaignSystem')->orderBy('campaign_system_count', 'desc') + ->withCount('campaignSystem') + ->orderBy('campaign_system_count', 'desc') ->orderBy('name', 'asc') ->limit(20) ->get(); @@ -33,6 +33,15 @@ public function index(Campaign $campaign): JsonResponse $formatted[] = $format; } + // Add Other if it's empty + if (empty($formatted)) { + $other = GameSystem::where('name', 'Other')->first(); + $formatted[] = [ + 'id' => $other->id, + 'text' => __('sidebar.other') + ]; + } + return response()->json( $formatted ?? [] ); diff --git a/app/Http/Resources/CreatureResource.php b/app/Http/Resources/CreatureResource.php index aec6231e31..8c4fc0c778 100644 --- a/app/Http/Resources/CreatureResource.php +++ b/app/Http/Resources/CreatureResource.php @@ -21,6 +21,7 @@ public function toArray($request) return $this->entity([ 'type' => $model->type, 'creature_id' => $model->creature_id, + 'is_extinct' => (bool) $model->is_extinct, 'locations' => $locationIDs ]); } diff --git a/app/Jobs/Campaigns/Import.php b/app/Jobs/Campaigns/Import.php index 26a57cd2dd..025bf2c25d 100644 --- a/app/Jobs/Campaigns/Import.php +++ b/app/Jobs/Campaigns/Import.php @@ -72,5 +72,16 @@ public function handle() */ public function failed(Throwable $exception) { + $job = CampaignImport::find($this->jobID); + if (!$job) { + Log::info('Campaign import', ['empty', 'id' => $this->jobID]); + return 0; + } + + /** @var ImportService $service */ + $service = app()->make(ImportService::class); + $service + ->job($job) + ->fail($exception); } } diff --git a/app/Jobs/Discord/SendNewFeature.php b/app/Jobs/Discord/SendNewFeature.php new file mode 100644 index 0000000000..37fb053f9e --- /dev/null +++ b/app/Jobs/Discord/SendNewFeature.php @@ -0,0 +1,76 @@ +feature = $feature; + } + + /** + * Execute the job. + * + */ + public function handle(): void + { + /** @var Feature|null $feature */ + $feature = Feature::find($this->feature); + if (empty($feature)) { + // Feature wasn't found + Log::warning('Jobs/Discord/SendNewFeature', ['unknown feature', 'feature' => $this->feature]); + return; + } + + $webhook = config('discord.webhooks.features'); + if (empty($webhook)) { + Log::warning('Jobs/Discord/SendNewFeature', ['no webhook defined']); + return; + } + Log::info('Jobs/Discord/SendNewFeature', ['start', 'feature' => $feature->id]); + + $title = $feature->name; + $content = 'A new idea has been approved and can be voted on!'; + + Http::post(config('discord.webhooks.features'), [ + 'content' => $content, + 'embeds' => [ + [ + 'title' => $title, + 'description' => strip_tags($feature->description), + 'color' => config('discord.color'), + 'url' => route('roadmap', ['status' => 'ideas', 'idea' => $feature->id]), + 'author' => [ + 'name' => $feature->user->name, + 'url' => route('users.profile', $feature->created_by), + 'icon' => $feature->user->getAvatarUrl(), + ] + ] + ], + ]); + + } +} diff --git a/app/Livewire/Roadmap/Form.php b/app/Livewire/Roadmap/Form.php index 8a4219d809..826f97bb0c 100644 --- a/app/Livewire/Roadmap/Form.php +++ b/app/Livewire/Roadmap/Form.php @@ -4,11 +4,18 @@ use App\Enums\FeatureStatus; use App\Models\Feature; +use App\Models\FeatureFile; use Livewire\Attributes\Validate; use Livewire\Component; +use Livewire\WithFileUploads; class Form extends Component { + use WithFileUploads; + + #[Validate('image|nullable|max:3072')] // 3MB Max + public $file; + #[Validate('required|min:5')] public string $title = ''; @@ -31,6 +38,14 @@ public function save() $feat->status_id = FeatureStatus::Draft; $feat->save(); + if ($this->file) { + $file = $this->file->storeAs('features/' . $feat->id, uniqid() . '.' . $this->file->getClientOriginalExtension(), 's3'); + $featFile = new FeatureFile(); + $featFile->feature_id = $feat->id; + $featFile->path = $file; + $featFile->save(); + } + $this->success = true; $this->title = ''; $this->description = ''; diff --git a/app/Models/AttributeTemplate.php b/app/Models/AttributeTemplate.php index c3822aa3f2..6201802ad1 100644 --- a/app/Models/AttributeTemplate.php +++ b/app/Models/AttributeTemplate.php @@ -7,6 +7,8 @@ use App\Services\Attributes\RandomService; use App\Traits\CampaignTrait; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Staudenmeir\LaravelAdjacencyList\Eloquent\HasRecursiveRelationships; @@ -67,29 +69,17 @@ class AttributeTemplate extends MiscModel /** @var bool Attribute templates don't have inventory, relations or abilities */ public $hasRelations = false; - /** - * Parent - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function attributeTemplate() + public function attributeTemplate(): BelongsTo { return $this->belongsTo('App\Models\AttributeTemplate', 'attribute_template_id', 'id'); } - /** - * Parent - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function entityType() + public function entityType(): BelongsTo { return $this->belongsTo('App\Models\EntityType', 'entity_type_id', 'id'); } - /** - * Children - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function attributeTemplates() + public function attributeTemplates(): HasMany { return $this->hasMany('App\Models\AttributeTemplate', 'attribute_template_id', 'id'); } @@ -133,10 +123,9 @@ public function scopePreparedWith(Builder $query): Builder /** * Apply a template to an entity - * @param int $startingOrder - * @return int + * todo: move to service */ - public function apply(Entity $entity, $startingOrder = 0) + public function apply(Entity $entity, int $startingOrder = 0): int { $order = $startingOrder; $existing = array_values($entity->attributes()->pluck('name')->toArray()); diff --git a/app/Models/Bookmark.php b/app/Models/Bookmark.php index 338c763472..7613857171 100644 --- a/app/Models/Bookmark.php +++ b/app/Models/Bookmark.php @@ -337,6 +337,7 @@ public function randomEntity() /** @var Entity|null $entity */ $entity = Entity::inTags($this->tags->pluck('id')->toArray()) + ->whereNotIn('entities.id', Dashboard::excluding()) ->type($entityTypeID) ->inRandomOrder() ->first(); diff --git a/app/Models/Campaign.php b/app/Models/Campaign.php index dc5abf31d4..13244e1989 100644 --- a/app/Models/Campaign.php +++ b/app/Models/Campaign.php @@ -42,6 +42,7 @@ * @property array $ui_settings * @property boolean $is_open * @property boolean $is_featured + * @property boolean $is_discreet * @property Carbon $featured_until * @property string $featured_reason * @property array|null $default_images @@ -98,6 +99,7 @@ class Campaign extends Model 'ui_settings', 'settings', 'is_open', + 'is_discreet', ]; protected $casts = [ @@ -157,7 +159,12 @@ public function membersList($removedIds = []): array public function admins() { $users = []; - foreach ($this->roles()->with(['users', 'users.user'])->where('is_admin', '1')->get() as $role) { + // @phpstan-ignore-next-line + $roles = $this->roles() + ->with(['users', 'users.user']) + ->where('is_admin', '1') + ->get(); + foreach ($roles as $role) { foreach ($role->users as $user) { if (!isset($users[$user->id])) { $users[$user->user->id] = $user->user; @@ -227,6 +234,15 @@ public function isPublic(): bool { return $this->visibility_id == self::VISIBILITY_PUBLIC; } + + /** + * Determine if a campaign is discreet + */ + public function isDiscreet(): bool + { + return $this->is_discreet; + } + /** * * Determine if a campaign is open to submissions diff --git a/app/Models/CampaignDashboardRole.php b/app/Models/CampaignDashboardRole.php index c41e39b492..bad132f269 100644 --- a/app/Models/CampaignDashboardRole.php +++ b/app/Models/CampaignDashboardRole.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; /** * Class CampaignDashboardRole @@ -26,12 +27,12 @@ class CampaignDashboardRole extends Model 'campaign_dashboard_id' ]; - public function role() + public function role(): BelongsTo { return $this->belongsTo(CampaignRole::class, 'campaign_role_id', 'id'); } - public function dashboard() + public function dashboard(): BelongsTo { return $this->belongsTo(CampaignDashboard::class, 'campaign_dashboard_id', 'id'); } diff --git a/app/Models/CampaignDashboardWidget.php b/app/Models/CampaignDashboardWidget.php index d2307cba80..35163d8da5 100644 --- a/app/Models/CampaignDashboardWidget.php +++ b/app/Models/CampaignDashboardWidget.php @@ -303,7 +303,10 @@ public function entities(int $page = 1) public function randomEntity() { $entityType = $this->conf('entity'); - $entityTypeID = (int) config('entities.ids.' . $entityType); + $entityTypeID = null; + if (!empty($entityType)) { + $entityTypeID = (int) config('entities.ids.' . $entityType); + } $base = new Entity(); diff --git a/app/Models/CampaignImport.php b/app/Models/CampaignImport.php index 67d8ad3341..32c02950b9 100644 --- a/app/Models/CampaignImport.php +++ b/app/Models/CampaignImport.php @@ -13,6 +13,7 @@ /** * @property int $id + * @property array $config * @property CampaignImportStatus $status_id * @property Campaign $campaign * @property User $user diff --git a/app/Models/Concerns/TreeQueryBuilder.php b/app/Models/Concerns/TreeQueryBuilder.php deleted file mode 100644 index a8c63084e0..0000000000 --- a/app/Models/Concerns/TreeQueryBuilder.php +++ /dev/null @@ -1,31 +0,0 @@ -model->getKeyName(), - $this->model->getParentIdName(), - $this->model->getLftName(), - $this->model->getRgtName(), - ]; - - $dictionary = $this->model - ->newNestedSetQuery() - ->when($root, function (self $query) use ($root) { - return $query->whereDescendantOf($root); - }) - ->where('campaign_id', $campaign) - ->defaultOrder() - ->get($columns) - ->groupBy($this->model->getParentIdName()) - ->all(); - - return $this->fixNodes($dictionary, $root); - } -} diff --git a/app/Models/Creature.php b/app/Models/Creature.php index c43cc51742..3f1698461d 100644 --- a/app/Models/Creature.php +++ b/app/Models/Creature.php @@ -26,6 +26,7 @@ * @property Creature[] $creatures * @property Location|null $location * @property Collection|Location[] $locations + * @property bool $is_extinct */ class Creature extends MiscModel { @@ -47,6 +48,7 @@ class Creature extends MiscModel 'entry', 'is_private', 'creature_id', + 'is_extinct', ]; /** @@ -56,12 +58,14 @@ class Creature extends MiscModel protected array $sortableColumns = [ 'creature.name', + 'is_extinct', ]; protected array $sortable = [ 'name', 'type', 'creature.name', + 'is_extinct', ]; /** @@ -79,6 +83,11 @@ class Creature extends MiscModel 'pivotLocations', ]; + protected array $exportFields = [ + 'base', + 'is_extinct', + ]; + /** * @return string */ @@ -151,7 +160,7 @@ public function scopeLocation(Builder $query, int|null $location, FilterOption $ */ public function datagridSelectFields(): array { - return ['creature_id']; + return ['creature_id', 'is_extinct']; } /** @@ -202,7 +211,8 @@ public function filterableColumns(): array { return [ 'creature_id', - 'location_id' + 'location_id', + 'is_extinct', ]; } @@ -230,4 +240,12 @@ public function showProfileInfo(): bool return parent::showProfileInfo(); } + + /** + * Determine if the model is extinct. + */ + public function isExtinct(): bool + { + return (bool) $this->is_extinct; + } } diff --git a/app/Models/EntityEvent.php b/app/Models/EntityEvent.php index 0c319e823c..f1a188067d 100644 --- a/app/Models/EntityEvent.php +++ b/app/Models/EntityEvent.php @@ -568,6 +568,14 @@ public function death() return $this->hasOne(EntityEvent::class, 'entity_id', 'entity_id')->whereColumn('calendar_id', 'entity_events.calendar_id')->where('type_id', EntityEventType::DEATH); } + /** + * Patch an entity from the datagrid2 batch editing + */ + public function patch(array $data): bool + { + return $this->updateQuietly($data); + } + public function exportFields(): array { return [ diff --git a/app/Models/Feature.php b/app/Models/Feature.php index 77dfb4b919..464b16402f 100644 --- a/app/Models/Feature.php +++ b/app/Models/Feature.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; /** @@ -52,6 +53,11 @@ public function uservote(): HasOne ->where('user_id', auth()->user()->id); } + public function featureFiles(): HasMany + { + return $this->hasMany(FeatureFile::class, 'feature_id', 'id'); + } + public function scopeApproved(Builder $builder): Builder { return $builder->whereIn('status_id', [\App\Enums\FeatureStatus::Approved]) diff --git a/app/Models/FeatureFile.php b/app/Models/FeatureFile.php new file mode 100644 index 0000000000..3663a6a85a --- /dev/null +++ b/app/Models/FeatureFile.php @@ -0,0 +1,25 @@ +belongsTo(Feature::class, 'feature_id'); + } +} diff --git a/app/Models/Image.php b/app/Models/Image.php index 8d3fc56f3e..b11f26a9c0 100644 --- a/app/Models/Image.php +++ b/app/Models/Image.php @@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Facades\Storage; /** @@ -69,7 +71,7 @@ class Image extends Model ]; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @return BelongsTo */ public function user() { @@ -77,24 +79,23 @@ public function user() } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function campaign() + public function campaign(): BelongsTo { return $this->belongsTo(Campaign::class); } - public function imageFolder() + public function imageFolder(): BelongsTo { return $this->belongsTo(Image::class, 'folder_id', 'id'); } - public function images() + public function images(): HasMany { return $this->hasMany(Image::class, 'folder_id', 'id'); } - public function folders() + public function folders(): HasMany { return $this->hasMany(Image::class, 'folder_id', 'id') ->where('is_folder', true); diff --git a/app/Models/Journal.php b/app/Models/Journal.php index 156f091882..4663801aed 100644 --- a/app/Models/Journal.php +++ b/app/Models/Journal.php @@ -113,6 +113,8 @@ public function scopePreparedWith(Builder $query): Builder $sub->select('campaign_id', 'id', 'ext', 'focus_x', 'focus_y'); }, 'entity.calendarDate', + 'entity.calendarDate.calendar', + 'entity.calendarDate.calendar.entity', 'author', 'location' => function ($sub) { $sub->select('id', 'name'); diff --git a/app/Models/Quest.php b/app/Models/Quest.php index b6c21764a4..85a32292f6 100644 --- a/app/Models/Quest.php +++ b/app/Models/Quest.php @@ -115,8 +115,9 @@ public function scopePreparedWith(Builder $query): Builder return $query->with([ 'entity', 'entity.image', - 'entity.calendarDateEvents', 'entity.calendarDate', + 'entity.calendarDate.calendar', + 'entity.calendarDate.calendar.entity', 'quests', 'instigator', //'elements', diff --git a/app/Models/Relations/CampaignRelations.php b/app/Models/Relations/CampaignRelations.php index e97723df19..7b93eb2d28 100644 --- a/app/Models/Relations/CampaignRelations.php +++ b/app/Models/Relations/CampaignRelations.php @@ -210,10 +210,7 @@ public function creatures(): HasMany return $this->hasMany(Creature::class); } - /** - * @return mixed|Image - */ - public function images(): HasMany + public function images(): HasMany|Image { return $this->hasMany(Image::class) ->where('is_default', false); @@ -249,7 +246,7 @@ public function entityRelations(): HasMany /** */ - public function plugins() + public function plugins(): BelongsToMany { return $this->belongsToMany('App\Models\Plugin', 'campaign_plugins', 'campaign_id', 'plugin_id') //->using('App\Models\CampaignPlugin') @@ -296,7 +293,7 @@ public function styles(): HasMany /** */ - public function editingUsers() + public function editingUsers(): BelongsToMany { return $this->belongsToMany(User::class, 'entity_user') ->using(EntityUser::class) diff --git a/app/Models/Scopes/CampaignScopes.php b/app/Models/Scopes/CampaignScopes.php index 272420fdc9..f5be9d4011 100644 --- a/app/Models/Scopes/CampaignScopes.php +++ b/app/Models/Scopes/CampaignScopes.php @@ -89,6 +89,14 @@ public function scopeOpen(Builder $query, bool $open = true): Builder return $query->where('is_open', $open); } + + /** + */ + public function scopeDiscreet(Builder $query, bool $discreet = true): Builder + { + return $query->where('is_discreet', $discreet); + } + /** * Admin crud datagrid */ diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 95af42872f..4b4d7f5adb 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -286,7 +286,7 @@ public function attachEntities(array $entityIds): int public function html(): string { return '' - . e($this->name) . ''; + . $this->name . ''; } /** diff --git a/app/Models/Tier.php b/app/Models/Tier.php index 0ae849eee2..39292d8832 100644 --- a/app/Models/Tier.php +++ b/app/Models/Tier.php @@ -64,27 +64,19 @@ public function isCurrent(User $user): bool public function monthlyPlans(): array { - return [ - config('subscription.' . $this->code . '.eur.monthly'), - config('subscription.' . $this->code . '.usd.monthly') - ]; + return config('subscription.' . $this->code . '.monthly'); } public function yearlyPlans(): array { - return [ - config('subscription.' . $this->code . '.eur.yearly'), - config('subscription.' . $this->code . '.usd.yearly') - ]; + return config('subscription.' . $this->code . '.yearly'); } public function plans(): array { - return [ - config('subscription.' . $this->code . '.eur.monthly'), - config('subscription.' . $this->code . '.usd.monthly'), - config('subscription.' . $this->code . '.eur.yearly'), - config('subscription.' . $this->code . '.usd.yearly'), - ]; + return array_merge( + config('subscription.' . $this->code . '.monthly'), + config('subscription.' . $this->code . '.yearly'), + ); } } diff --git a/app/Observers/CampaignObserver.php b/app/Observers/CampaignObserver.php index 95f36278be..268c13530c 100644 --- a/app/Observers/CampaignObserver.php +++ b/app/Observers/CampaignObserver.php @@ -234,7 +234,6 @@ protected function saveSystems(Campaign $campaign) $ids = request()->post('systems', []); $existing = []; - /** @var GameSystems $systems */ foreach ($campaign->systems as $system) { $existing[$system->id] = $system->name; } diff --git a/app/Observers/Remindable.php b/app/Observers/Remindable.php index 38ee2cfddc..cbd3e4cae8 100644 --- a/app/Observers/Remindable.php +++ b/app/Observers/Remindable.php @@ -63,7 +63,7 @@ public function saved(Model $model) $reminder->month = (int) request()->post('calendar_month', '1'); $reminder->day = (int) request()->post('calendar_day', '1'); $reminder->length = $length; - $reminder->is_recurring = request()->post('calendar_is_recurring', 0); + $reminder->is_recurring = (bool) request()->post('calendar_is_recurring'); $reminder->recurring_periodicity = request()->post('calendar_recurring_periodicity'); $reminder->colour = request()->post('calendar_colour', '#cccccc'); $reminder->type_id = EntityEventType::CALENDAR_DATE; diff --git a/app/Policies/FeaturePolicy.php b/app/Policies/FeaturePolicy.php index 6100207d99..3bc6ff92b7 100644 --- a/app/Policies/FeaturePolicy.php +++ b/app/Policies/FeaturePolicy.php @@ -18,6 +18,10 @@ public function __construct() public function create(User $user): bool { + // Admins can create unlimited ideas + if ($user->hasRole('admin')) { + return true; + } return Feature::where('created_by', auth()->user()->id) ->whereDate('created_at', Carbon::today()) ->count() < 10; diff --git a/app/Renderers/DatagridRenderer.php b/app/Renderers/DatagridRenderer.php index 17e138b343..3435119b6e 100644 --- a/app/Renderers/DatagridRenderer.php +++ b/app/Renderers/DatagridRenderer.php @@ -362,11 +362,6 @@ private function renderColumn(string|array $column, $model) } $class = !empty($column['parent']) ? $this->hidden : $class; if (!empty($who)) { - $whoRoute = !empty($column['parent_route']) - ? (is_string($column['parent_route']) - ? $column['parent_route'] - : $column['parent_route']($model)) - : $this->getOption('baseRoute'); $route = $who->getLink(); $content = ''; @@ -404,19 +399,20 @@ private function renderColumn(string|array $column, $model) null; $class = ' text-center'; } elseif ($type == 'calendar_date') { - $class = $this->hidden; + $class = $this->hidden . ' col-calendar-date'; /** @var Journal $model */ - if ($model->entity->calendarDate) { - $reminder = $model->entity->calendarDate; - if (!$reminder->calendar || !$reminder->calendar->entity) { - return null; - } - $content = link_to_route( - 'entities.show', - $reminder->readableDate(), - [$this->campaign, $reminder->calendar->entity, 'month' => $reminder->month, 'year' => $reminder->year] - ); + if (!$model->entity->calendarDate) { + return null; } + $reminder = $model->entity->calendarDate; + if (!$reminder->calendar || !$reminder->calendar->entity) { + return null; + } + $content = link_to_route( + 'entities.show', + $reminder->readableDate(), + [$this->campaign, $reminder->calendar->entity, 'month' => $reminder->month, 'year' => $reminder->year] + ); } else { // Exception $content = 'ERR_UNKNOWN_TYPE'; diff --git a/app/Renderers/Layouts/Calendar/Reminder.php b/app/Renderers/Layouts/Calendar/Reminder.php index dbb92178db..514ca04613 100644 --- a/app/Renderers/Layouts/Calendar/Reminder.php +++ b/app/Renderers/Layouts/Calendar/Reminder.php @@ -73,4 +73,12 @@ public function actions(): array self::ACTION_DELETE ]; } + + public function bulks(): array + { + return [ + self::ACTION_EDIT, + self::ACTION_DELETE, + ]; + } } diff --git a/app/Services/Api/CampaignService.php b/app/Services/Api/CampaignService.php index 29fae133b0..23941b5d0b 100644 --- a/app/Services/Api/CampaignService.php +++ b/app/Services/Api/CampaignService.php @@ -91,7 +91,7 @@ protected function featured(): self { $this->data['featured'] = []; - $campaigns = Campaign::public()->front()->featured()->get(); + $campaigns = Campaign::public()->front()->featured()->discreet(false)->get(); foreach ($campaigns as $campaign) { $this->data['featured'][] = new CampaignResource($campaign); } @@ -112,6 +112,7 @@ protected function campaigns(): self ->front((int)$this->request->get('sort_field_name')) ->featured(false) ->filterPublic($this->request->only(['language', 'system', 'is_boosted', 'is_open', 'genre'])) + ->discreet(false) ->paginate(); $this->data['campaigns'] = CampaignResource::collection($campaigns); } diff --git a/app/Services/Caches/CampaignCacheService.php b/app/Services/Caches/CampaignCacheService.php index a7ff194102..a2d9d74e0b 100644 --- a/app/Services/Caches/CampaignCacheService.php +++ b/app/Services/Caches/CampaignCacheService.php @@ -61,7 +61,10 @@ public function systems(): array return $this->get($key); } $data = []; - $systems = GameSystem::withCount('campaignSystem')->orderBy('campaign_system_count', 'desc')->get(20); + $systems = GameSystem::withCount('campaignSystem') + ->orderBy('campaign_system_count', 'desc') + ->limit(20) + ->get(); foreach ($systems as $system) { $data[$system->id] = $system->name; diff --git a/app/Services/Campaign/BoostService.php b/app/Services/Campaign/BoostService.php index 99a521aec7..ef985e5619 100644 --- a/app/Services/Campaign/BoostService.php +++ b/app/Services/Campaign/BoostService.php @@ -121,8 +121,10 @@ public function unboost(CampaignBoost $campaignBoost): self } $this->user->log(UserLog::TYPE_CAMPAIGN_UNBOOST); } + $boostCount = $this->campaign->boosts()->count(); + $this->campaign->boost_count = $boostCount; + $this->campaign->is_discreet = false; - $this->campaign->boost_count = $this->campaign->boosts()->count(); $this->campaign->saveQuietly(); if (isset($this->user)) { diff --git a/app/Services/Campaign/GalleryService.php b/app/Services/Campaign/GalleryService.php index 87d8dc3b11..d96ba585ab 100644 --- a/app/Services/Campaign/GalleryService.php +++ b/app/Services/Campaign/GalleryService.php @@ -210,7 +210,9 @@ public function folderList(): array $this->folders = ['' => __('campaigns/gallery.no_folder')]; /** @var Image[] $rootFolders */ - $rootFolders = $this->campaign->images()->folders()->whereNull('folder_id') + $rootFolders = $this->campaign->images() + ->folders() + ->whereNull('folder_id') ->with('folders') ->select(['id', 'name']) ->orderBy('name') diff --git a/app/Services/Campaign/Import/ImportService.php b/app/Services/Campaign/Import/ImportService.php index b4595e1229..b5fac69339 100644 --- a/app/Services/Campaign/Import/ImportService.php +++ b/app/Services/Campaign/Import/ImportService.php @@ -31,6 +31,7 @@ use Illuminate\Support\Str; use ZipArchive; use Exception; +use Throwable; class ImportService { @@ -74,6 +75,7 @@ public function run(): void ->mappers() ->download() ->process() + ->finish() ->cleanup(); } @@ -158,8 +160,9 @@ protected function process() ; $this->job->status_id = CampaignImportStatus::FINISHED; } catch (Exception $e) { - dump($e->getMessage()); - dump($e->getTrace()); + //dump($e->getMessage()); + //dump($e->getTrace()); + $this->logs[] = $e->getMessage(); Log::error('Import', ['error' => $e->getMessage()]); $this->job->status_id = CampaignImportStatus::FAILED; } @@ -167,9 +170,10 @@ protected function process() return $this; } - protected function cleanup(): self + protected function finish(): self { Storage::disk('local')->deleteDirectory($this->dataPath); + $config = $this->job->config; $config['logs'] = $this->logs; $this->job->config = $config; @@ -358,4 +362,27 @@ protected function secondCampaign(): self $this->entityMappingService->silent()->mapCampaign($this->campaign); return $this; } + + protected function cleanup(): self + { + $files = $this->job->config['files']; + foreach ($files as $file) { + Storage::disk('s3')->delete($file); + } + return $this; + } + + public function fail(Throwable $e): self + { + $config = $this->job->config; + if (!isset($config['logs'])) { + $config['logs'] = []; + } + $config['logs'][] = $e->getMessage(); + $this->job->config = $config; + $this->job->status_id = CampaignImportStatus::FAILED; + $this->job->save(); + + return $this->cleanup(); + } } diff --git a/app/Services/Campaign/Import/Mappers/FamilyMapper.php b/app/Services/Campaign/Import/Mappers/FamilyMapper.php index 1e5d7f3352..552e18622c 100644 --- a/app/Services/Campaign/Import/Mappers/FamilyMapper.php +++ b/app/Services/Campaign/Import/Mappers/FamilyMapper.php @@ -6,7 +6,7 @@ class FamilyMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'family_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'family_id', 'created_at', 'updated_at', 'location_id']; protected string $className = Family::class; protected string $mappingName = 'families'; diff --git a/app/Services/Campaign/Import/Mappers/ItemMapper.php b/app/Services/Campaign/Import/Mappers/ItemMapper.php index 3779e66ee1..4caeb767d3 100644 --- a/app/Services/Campaign/Import/Mappers/ItemMapper.php +++ b/app/Services/Campaign/Import/Mappers/ItemMapper.php @@ -6,7 +6,7 @@ class ItemMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'item_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'item_id', 'character_id', 'created_at', 'updated_at']; protected string $className = Item::class; protected string $mappingName = 'items'; diff --git a/app/Services/Campaign/Import/Mappers/JournalMapper.php b/app/Services/Campaign/Import/Mappers/JournalMapper.php index 3f11c21a37..b8bf29ef20 100644 --- a/app/Services/Campaign/Import/Mappers/JournalMapper.php +++ b/app/Services/Campaign/Import/Mappers/JournalMapper.php @@ -6,7 +6,7 @@ class JournalMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'journal_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'journal_id', 'location_id', 'author_id', 'created_at', 'updated_at']; protected string $className = Journal::class; protected string $mappingName = 'journals'; diff --git a/app/Services/Campaign/Import/Mappers/MapMapper.php b/app/Services/Campaign/Import/Mappers/MapMapper.php index 50b392e081..c40d95b201 100644 --- a/app/Services/Campaign/Import/Mappers/MapMapper.php +++ b/app/Services/Campaign/Import/Mappers/MapMapper.php @@ -13,7 +13,7 @@ class MapMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'map_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'map_id', 'created_at', 'updated_at', 'location_id']; protected string $className = Map::class; protected string $mappingName = 'maps'; @@ -32,6 +32,7 @@ public function second(): void { // @phpstan-ignore-next-line $this->loadModel() + ->foreign('locations', 'location_id') ->groups() ->layers() ->markers() @@ -79,7 +80,7 @@ protected function groups(): self protected function layers(): self { $fields = [ - 'name', 'position', 'image', 'height', 'width', 'entry', 'visibility_id', 'is_shown', 'type_id' + 'name', 'position', 'image', 'height', 'width', 'entry', 'visibility_id', 'type_id' ]; $this->layers = []; foreach ($this->data['layers'] as $data) { diff --git a/app/Services/Campaign/Import/Mappers/OrganisationMapper.php b/app/Services/Campaign/Import/Mappers/OrganisationMapper.php index f323b1f90a..2e7f852598 100644 --- a/app/Services/Campaign/Import/Mappers/OrganisationMapper.php +++ b/app/Services/Campaign/Import/Mappers/OrganisationMapper.php @@ -6,7 +6,7 @@ class OrganisationMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'organisation_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'organisation_id', 'location_id', 'created_at', 'updated_at']; protected string $className = Organisation::class; protected string $mappingName = 'organisations'; diff --git a/app/Services/Campaign/Import/Mappers/QuestMapper.php b/app/Services/Campaign/Import/Mappers/QuestMapper.php index 662d5eb76d..d6c6801873 100644 --- a/app/Services/Campaign/Import/Mappers/QuestMapper.php +++ b/app/Services/Campaign/Import/Mappers/QuestMapper.php @@ -8,7 +8,7 @@ class QuestMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'quest_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'quest_id', 'created_at', 'updated_at', 'location_id', 'instigator_id']; protected string $className = Quest::class; protected string $mappingName = 'quests'; @@ -25,6 +25,7 @@ public function second(): void // @phpstan-ignore-next-line $this->loadModel() ->foreign('locations', 'location_id') + ->foreign('entities', 'instigator_id') ->saveModel() ->elements() ->entitySecond() diff --git a/app/Services/Campaign/LeaveService.php b/app/Services/Campaign/LeaveService.php index 7760a67c72..d2e430bf37 100644 --- a/app/Services/Campaign/LeaveService.php +++ b/app/Services/Campaign/LeaveService.php @@ -5,6 +5,7 @@ use App\Facades\CampaignCache; use App\Facades\UserCache; use App\Jobs\Campaigns\NotifyAdmins; +use App\Models\CampaignRoleUser; use App\Models\CampaignUser; use App\Models\UserLog; use App\Traits\CampaignAware; @@ -29,6 +30,16 @@ public function leave(): void // Delete the member $member->delete(); + // Delete the member from all the roles in the campaign + $roles = CampaignRoleUser::select('campaign_role_users.*') + ->where('user_id', $this->user->id) + ->leftJoin('campaign_roles as cr', 'cr.id', '=', 'campaign_role_users.campaign_role_id') + ->where('cr.campaign_id', $this->campaign->id) + ->get(); + foreach ($roles as $role) { + $role->delete(); + } + // Notify admins NotifyAdmins::dispatch( $this->campaign, diff --git a/app/Services/Entity/PreviewService.php b/app/Services/Entity/PreviewService.php index af2e11e3b0..cfb5cc63de 100644 --- a/app/Services/Entity/PreviewService.php +++ b/app/Services/Entity/PreviewService.php @@ -110,6 +110,7 @@ protected function tags(): array 'name' => $tag->name, 'colour' => $tag->colour, 'link' => $tag->getLink(), + 'slug' => $tag->slug, ]; } diff --git a/app/Services/FilterService.php b/app/Services/FilterService.php index fbe41591a2..8965aa976c 100644 --- a/app/Services/FilterService.php +++ b/app/Services/FilterService.php @@ -106,9 +106,13 @@ protected function prepareFilters(array $availableFilters = []): self if (!empty($this->data) && in_array('tags', $availableFilters) && !isset($this->data['tags'])) { // Not calling from a page or order result, we can junk the filters if (empty($this->data['page']) && empty($this->data['order'])) { - $this->data['tags'] = null; + unset($this->data['tags']); } } + // Don't support the old tags, force using tags[] + if (isset($this->data['tags']) && !is_array($this->data['tags'])) { + unset($this->data['tags']); + } foreach ($this->data as $key => $value) { if (in_array($key, $availableFilters)) { @@ -280,8 +284,6 @@ public function activeFilters(): array return $filters; } - /** - */ public function activeFiltersCount(): int { return count($this->activeFilters()); @@ -329,7 +331,7 @@ public function pagination(): array } /** - * @return $this + * Flag the service to save the filters in session */ public function session(bool $session = true): self { @@ -355,8 +357,6 @@ protected function sessionLoad(string $key): array /** * Save the filter data to the session - * @param array $data - * @return $this */ protected function sessionSave(string $key, $data): self { @@ -369,6 +369,7 @@ protected function sessionSave(string $key, $data): self } /** + * Prepare filters to be copied to the clipboard */ public function clipboardFilters(): string { diff --git a/app/Services/LimitService.php b/app/Services/LimitService.php index c6229dbd33..6c8d60f9ac 100644 --- a/app/Services/LimitService.php +++ b/app/Services/LimitService.php @@ -32,7 +32,7 @@ public function upload(): int|string if (!$this->user->isSubscriber() && (!isset($this->campaign) || !$this->campaign->boosted())) { $min = config('limits.filesize.image'); if ($this->map) { - $min = 3072; + $min = 3; } $size = ($min * 1024); } elseif ($this->user->isElemental()) { diff --git a/app/Services/SubscriptionService.php b/app/Services/SubscriptionService.php index b7f88c6f18..d922d5ec61 100644 --- a/app/Services/SubscriptionService.php +++ b/app/Services/SubscriptionService.php @@ -225,7 +225,7 @@ public function finish($planID = null): self // If downgrading, send admins an email, and let stripe deal with the rest. A user update hook will be thrown // when the user really changes. Probably? - if ($this->downgrading()) { + if (!$this->webhook && $this->downgrading()) { SubscriptionDowngradedEmailJob::dispatch( $this->user, Arr::get($this->request, 'reason'), @@ -270,10 +270,13 @@ public function finish($planID = null): self } elseif ($plan == Pledge::OWLBEAR) { WelcomeSubscriptionEmailJob::dispatch($this->user, 'owlbear'); } + + // Save the new sub value + if (isset($this->tier)) { + $this->subscriptionValue = $period === 'yearly' ? $this->tier->yearly : $this->tier->monthly; + } } - // Save the new sub value - $this->subscriptionValue = $period === 'yearly' ? $this->tier->yearly : $this->tier->monthly; return $this; } @@ -600,51 +603,42 @@ public function elementalPlanID(): string */ public function owlbearPlans(): array { - return [ - config('subscription.owlbear.eur.monthly'), - config('subscription.owlbear.usd.monthly'), - config('subscription.owlbear.eur.yearly'), - config('subscription.owlbear.usd.yearly'), - ]; + return array_merge( + config('subscription.owlbear.monthly'), + config('subscription.owlbear.yearly'), + ); } /** */ public function wyvernPlans(): array { - return [ - config('subscription.wyvern.eur.monthly'), - config('subscription.wyvern.usd.monthly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - ]; + return array_merge( + config('subscription.wyvern.monthly'), + config('subscription.wyvern.yearly'), + ); } /** */ - public function yearlyPlans(string $tier = null): array + public function yearlyPlans(): array { - return [ - config('subscription.owlbear.eur.yearly'), - config('subscription.owlbear.usd.yearly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - config('subscription.elemental.eur.yearly'), - config('subscription.elemental.usd.yearly'), - ]; + return array_merge( + config('subscription.owlbear.yearly'), + config('subscription.wyvern.yearly'), + config('subscription.elemental.yearly'), + ); } /** */ public function elementalPlans(): array { - return [ - config('subscription.elemental.eur.monthly'), - config('subscription.elemental.eur.yearly'), - config('subscription.elemental.usd.monthly'), - config('subscription.elemental.usd.yearly') - ]; + return array_merge( + config('subscription.elemental.monthly'), + config('subscription.elemental.yearly'), + ); } public function subscriptionValue(): int @@ -667,7 +661,7 @@ public function downgrading(): bool } // Cancelling - return $this->tier->name === Pledge::KOBOLD; + return isset($this->tier) && $this->tier->name === Pledge::KOBOLD; } /** diff --git a/app/Services/Users/CleanupService.php b/app/Services/Users/CleanupService.php index b47ad3bc35..95be75ce82 100644 --- a/app/Services/Users/CleanupService.php +++ b/app/Services/Users/CleanupService.php @@ -35,8 +35,9 @@ protected function removeCampaigns(): self { //Log::info('Services/Users/CleanupService', ['deleting', ['user' => $this->user->id]]); - // @phpstan-ignore-next-line - $members = CampaignUser::where('user_id', $this->user->id)->with(['campaign', 'campaign.members'])->get(); + $members = CampaignUser::where('user_id', $this->user->id) + ->with(['campaign', 'campaign.members']) + ->get(); foreach ($members as $member) { $member->delete(); diff --git a/app/Traits/TreeControllerTrait.php b/app/Traits/TreeControllerTrait.php index 804c141b69..a7708ba459 100644 --- a/app/Traits/TreeControllerTrait.php +++ b/app/Traits/TreeControllerTrait.php @@ -124,11 +124,10 @@ public function tree(Request $request, Campaign $campaign) $actions = $this->navActions; $campaign = $this->campaign; $this->getNavActions(); - $navActions = $this->navActions; $entityTypeId = $model->entityTypeId(); - if (!empty($this->titleKey)) { - $titleKey = $this->titleKey; + if (method_exists($this, 'titleKey')) { + $titleKey = $this->titleKey(); } else { $titleKey = Module::plural($entityTypeId, __('entities.' . $langKey)); } diff --git a/app/User.php b/app/User.php index d00f9df2ab..d473fcd47c 100644 --- a/app/User.php +++ b/app/User.php @@ -467,7 +467,6 @@ public function isFrauding(): bool public function onlyAdminCampaigns(): array { $campaigns = []; - // @phpstan-ignore-next-line $userCampaigns = $this->campaigns()->with(['roles', 'roles.users'])->get(); foreach ($userCampaigns as $campaign) { /** @var CampaignRole|null $adminRole */ @@ -506,14 +505,11 @@ public function hasPayPal(): bool public function isStripeYearly(): bool { - $prices = [ - config('subscription.owlbear.usd.yearly'), - config('subscription.owlbear.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.elemental.usd.yearly'), - config('subscription.elemental.eur.yearly'), - ]; + $prices = array_merge( + config('subscription.owlbear.yearly'), + config('subscription.wyvern.yearly'), + config('subscription.elemental.yearly'), + ); return $this->subscribedToPrice($prices, 'kanka'); } } diff --git a/composer.lock b/composer.lock index 162e36ba64..f0c8ae350d 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.293.9", + "version": "3.298.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "1fa17dba47021586de511d10944637da8ea4cc43" + "reference": "7c7dd6f596e7f7ba22653a503ae76e8e11702028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1fa17dba47021586de511d10944637da8ea4cc43", - "reference": "1fa17dba47021586de511d10944637da8ea4cc43", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7c7dd6f596e7f7ba22653a503ae76e8e11702028", + "reference": "7c7dd6f596e7f7ba22653a503ae76e8e11702028", "shasum": "" }, "require": { @@ -151,9 +151,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.293.9" + "source": "https://github.com/aws/aws-sdk-php/tree/3.298.1" }, - "time": "2023-12-12T19:08:53+00:00" + "time": "2024-02-01T19:07:41+00:00" }, { "name": "bacon/bacon-qr-code", @@ -524,23 +524,23 @@ }, { "name": "clue/stream-filter", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/clue/stream-filter.git", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e" + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", "shasum": "" }, "require": { "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -562,7 +562,7 @@ } ], "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", + "homepage": "https://github.com/clue/stream-filter", "keywords": [ "bucket brigade", "callback", @@ -574,7 +574,7 @@ ], "support": { "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.6.0" + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" }, "funding": [ { @@ -586,7 +586,7 @@ "type": "github" } ], - "time": "2022-02-21T13:15:14+00:00" + "time": "2023-12-20T15:40:13+00:00" }, { "name": "cocur/slugify", @@ -949,16 +949,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", "shasum": "" }, "require": { @@ -974,14 +974,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.15", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -1042,7 +1042,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.0" }, "funding": [ { @@ -1058,20 +1058,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-01-25T21:44:02+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -1103,9 +1103,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/event-manager", @@ -1200,16 +1200,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { @@ -1271,7 +1271,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.9" }, "funding": [ { @@ -1287,7 +1287,7 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/lexer", @@ -2731,20 +2731,20 @@ }, { "name": "laravel/framework", - "version": "v10.37.1", + "version": "v10.43.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b41612c58e358655cda1239e18d8851ff8736e8f" + "reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b41612c58e358655cda1239e18d8851ff8736e8f", - "reference": "b41612c58e358655cda1239e18d8851ff8736e8f", + "url": "https://api.github.com/repos/laravel/framework/zipball/4f7802dfc9993cb57cf69615491ce1a7eb2e9529", + "reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", @@ -2786,6 +2786,8 @@ "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2841,7 +2843,7 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.15.1", + "orchestra/testbench-core": "^8.18", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", @@ -2897,6 +2899,7 @@ "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -2929,20 +2932,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-12-12T19:03:09+00:00" + "time": "2024-01-30T16:25:02+00:00" }, { "name": "laravel/passport", - "version": "v11.10.0", + "version": "v11.10.4", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b" + "reference": "8a75495f431e52df2ffa178851c402d7a5e8f037" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/966bc8e477d08c86a11dc4c5a86f85fa0abdb89b", - "reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b", + "url": "https://api.github.com/repos/laravel/passport/zipball/8a75495f431e52df2ffa178851c402d7a5e8f037", + "reference": "8a75495f431e52df2ffa178851c402d7a5e8f037", "shasum": "" }, "require": { @@ -3007,20 +3010,20 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2023-11-02T17:16:12+00:00" + "time": "2024-01-30T15:44:09+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.13", + "version": "v0.1.15", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "e1379d8ead15edd6cc4369c22274345982edc95a" + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/e1379d8ead15edd6cc4369c22274345982edc95a", - "reference": "e1379d8ead15edd6cc4369c22274345982edc95a", + "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", "shasum": "" }, "require": { @@ -3036,7 +3039,7 @@ "require-dev": { "mockery/mockery": "^1.5", "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^1.11", "phpstan/phpstan-mockery": "^1.1" }, "suggest": { @@ -3062,9 +3065,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.13" + "source": "https://github.com/laravel/prompts/tree/v0.1.15" }, - "time": "2023-10-27T13:53:59+00:00" + "time": "2023-12-29T22:37:42+00:00" }, { "name": "laravel/serializable-closure", @@ -3198,28 +3201,28 @@ }, { "name": "laravel/ui", - "version": "v4.2.3", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "eb532ea096ca1c0298c87c19233daf011fda743a" + "reference": "7335d7049b2cde345c029e9d2de839b80af62bc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/eb532ea096ca1c0298c87c19233daf011fda743a", - "reference": "eb532ea096ca1c0298c87c19233daf011fda743a", + "url": "https://api.github.com/repos/laravel/ui/zipball/7335d7049b2cde345c029e9d2de839b80af62bc0", + "reference": "7335d7049b2cde345c029e9d2de839b80af62bc0", "shasum": "" }, "require": { - "illuminate/console": "^9.21|^10.0", - "illuminate/filesystem": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "illuminate/validation": "^9.21|^10.0", + "illuminate/console": "^9.21|^10.0|^11.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0", + "illuminate/support": "^9.21|^10.0|^11.0", + "illuminate/validation": "^9.21|^10.0|^11.0", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.3" + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.3|^10.4" }, "type": "library", "extra": { @@ -3254,9 +3257,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.2.3" + "source": "https://github.com/laravel/ui/tree/v4.4.0" }, - "time": "2023-11-23T14:44:22+00:00" + "time": "2024-01-12T15:56:45+00:00" }, { "name": "laravelcollective/html", @@ -3470,16 +3473,16 @@ }, { "name": "league/commonmark", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -3492,7 +3495,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -3502,10 +3505,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -3572,7 +3575,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T16:55:00+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -3712,16 +3715,16 @@ }, { "name": "league/flysystem", - "version": "3.23.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" + "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", - "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", + "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", "shasum": "" }, "require": { @@ -3786,7 +3789,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.1" }, "funding": [ { @@ -3798,20 +3801,20 @@ "type": "github" } ], - "time": "2023-12-04T10:16:17+00:00" + "time": "2024-01-26T18:42:03+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.22.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8" + "reference": "97728e7a0d40ec9c6147eb0f4ee4cdc6ff0a8240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/9808919ee5d819730d9582d4e1673e8d195c38d8", - "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/97728e7a0d40ec9c6147eb0f4ee4cdc6ff0a8240", + "reference": "97728e7a0d40ec9c6147eb0f4ee4cdc6ff0a8240", "shasum": "" }, "require": { @@ -3852,7 +3855,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.22.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.23.1" }, "funding": [ { @@ -3864,20 +3867,20 @@ "type": "github" } ], - "time": "2023-11-18T14:03:37+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/flysystem-local", - "version": "3.23.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", - "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", "shasum": "" }, "require": { @@ -3912,7 +3915,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" }, "funding": [ { @@ -3924,20 +3927,20 @@ "type": "github" } ], - "time": "2023-12-04T10:14:46+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/mime-type-detection", - "version": "1.14.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { @@ -3968,7 +3971,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -3980,7 +3983,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T14:13:20+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "league/oauth1-client", @@ -4322,35 +4325,36 @@ }, { "name": "livewire/livewire", - "version": "v3.3.0", + "version": "v3.4.4", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "7c1f609515e74ef1197c08e56a5606571b3ec1d9" + "reference": "c0489d4a76382f6dcf6e2702112f86aa089d0c8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/7c1f609515e74ef1197c08e56a5606571b3ec1d9", - "reference": "7c1f609515e74ef1197c08e56a5606571b3ec1d9", + "url": "https://api.github.com/repos/livewire/livewire/zipball/c0489d4a76382f6dcf6e2702112f86aa089d0c8d", + "reference": "c0489d4a76382f6dcf6e2702112f86aa089d0c8d", "shasum": "" }, "require": { - "illuminate/database": "^10.0", - "illuminate/support": "^10.0", - "illuminate/validation": "^10.0", + "illuminate/database": "^10.0|^11.0", + "illuminate/routing": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "illuminate/validation": "^10.0|^11.0", "league/mime-type-detection": "^1.9", "php": "^8.1", - "symfony/http-kernel": "^6.2" + "symfony/http-kernel": "^6.2|^7.0" }, "require-dev": { "calebporzio/sushi": "^2.1", - "laravel/framework": "^10.0", + "laravel/framework": "^10.0|^11.0", "laravel/prompts": "^0.1.6", "mockery/mockery": "^1.3.1", - "orchestra/testbench": "^8.0", - "orchestra/testbench-dusk": "^8.0", - "phpunit/phpunit": "^9.0", - "psy/psysh": "@stable" + "orchestra/testbench": "8.20.0|^9.0", + "orchestra/testbench-dusk": "8.20.0|^9.0", + "phpunit/phpunit": "^10.4", + "psy/psysh": "^0.11.22|^0.12" }, "type": "library", "extra": { @@ -4384,7 +4388,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.3.0" + "source": "https://github.com/livewire/livewire/tree/v3.4.4" }, "funding": [ { @@ -4392,7 +4396,7 @@ "type": "github" } ], - "time": "2023-12-11T18:04:00+00:00" + "time": "2024-01-28T19:07:11+00:00" }, { "name": "maennchen/zipstream-php", @@ -4682,16 +4686,16 @@ }, { "name": "moneyphp/money", - "version": "v4.3.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/moneyphp/money.git", - "reference": "50ddfd15b2be01d4bed3bcb0c975a6af5f78a183" + "reference": "5e60aebf09f709dd4ea16bf85e66d65301c0d172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/50ddfd15b2be01d4bed3bcb0c975a6af5f78a183", - "reference": "50ddfd15b2be01d4bed3bcb0c975a6af5f78a183", + "url": "https://api.github.com/repos/moneyphp/money/zipball/5e60aebf09f709dd4ea16bf85e66d65301c0d172", + "reference": "5e60aebf09f709dd4ea16bf85e66d65301c0d172", "shasum": "" }, "require": { @@ -4715,7 +4719,7 @@ "phpbench/phpbench": "^1.2.5", "phpunit/phpunit": "^9.5.4", "psalm/plugin-phpunit": "^0.18.4", - "psr/cache": "^1.0.1", + "psr/cache": "^1.0.1 || ^2.0 || ^3.0", "vimeo/psalm": "~5.15.0" }, "suggest": { @@ -4764,9 +4768,9 @@ ], "support": { "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.3.0" + "source": "https://github.com/moneyphp/money/tree/v4.4.0" }, - "time": "2023-11-22T09:46:30+00:00" + "time": "2024-01-24T08:29:16+00:00" }, { "name": "monolog/monolog", @@ -5000,16 +5004,16 @@ }, { "name": "nesbot/carbon", - "version": "2.72.1", + "version": "2.72.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", "shasum": "" }, "require": { @@ -5103,35 +5107,35 @@ "type": "tidelift" } ], - "time": "2023-12-08T23:47:49+00:00" + "time": "2024-01-25T10:35:09+00:00" }, { "name": "nette/schema", - "version": "v1.2.5", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -5163,22 +5167,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.5" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2023-10-05T20:37:59+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.3", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { @@ -5249,9 +5253,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.3" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-10-29T21:02:13+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nunomaduro/termwind", @@ -5658,23 +5662,23 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5.4", + "version": "0.5.5", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/671df0f3516252011aa94f9e8e3b3b66199339f8", + "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8", "shasum": "" }, "require": { "ext-mbstring": "*" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5" + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" }, "type": "library", "autoload": { @@ -5684,7 +5688,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-2.1-or-later" ], "authors": [ { @@ -5696,9 +5700,9 @@ "homepage": "https://github.com/PhenX/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.5" }, - "time": "2021-12-17T19:44:54+00:00" + "time": "2024-01-07T18:13:29+00:00" }, { "name": "phenx/php-svg-lib", @@ -6021,16 +6025,16 @@ }, { "name": "php-http/promise", - "version": "1.2.1", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", + "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", "shasum": "" }, "require": { @@ -6067,9 +6071,9 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.1" + "source": "https://github.com/php-http/promise/tree/1.3.0" }, - "time": "2023-11-08T12:57:08+00:00" + "time": "2024-01-04T18:49:48+00:00" }, { "name": "phpoption/phpoption", @@ -6148,16 +6152,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.34", + "version": "3.0.35", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a" + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", "shasum": "" }, "require": { @@ -6238,7 +6242,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.34" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.35" }, "funding": [ { @@ -6254,7 +6258,7 @@ "type": "tidelift" } ], - "time": "2023-11-27T11:13:31+00:00" + "time": "2023-12-29T01:59:53+00:00" }, { "name": "pragmarx/google2fa", @@ -7276,16 +7280,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "version": "8.5.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", + "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", "shasum": "" }, "require": { @@ -7293,13 +7297,18 @@ "php": ">=5.6.20" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "codacy/coverage": "^1.4.3", + "phpunit/phpunit": "^5.7.27" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0.x-dev" + } + }, "autoload": { "psr-4": { "Sabberworm\\CSS\\": "src/" @@ -7323,22 +7332,22 @@ ], "support": { "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.5.0" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2024-02-01T00:40:08+00:00" }, { "name": "sentry/sentry", - "version": "4.1.0", + "version": "4.5.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "89666f297891ff937fceb2f3d1fb967a6848cf37" + "reference": "a6e06f0b7a17e7f68e11297427da76bfe01a3ca3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/89666f297891ff937fceb2f3d1fb967a6848cf37", - "reference": "89666f297891ff937fceb2f3d1fb967a6848cf37", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/a6e06f0b7a17e7f68e11297427da76bfe01a3ca3", + "reference": "a6e06f0b7a17e7f68e11297427da76bfe01a3ca3", "shasum": "" }, "require": { @@ -7362,7 +7371,7 @@ "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^8.5.14|^9.4", - "symfony/phpunit-bridge": "^5.2|^6.0", + "symfony/phpunit-bridge": "^5.2|^6.0|^7.0", "vimeo/psalm": "^4.17" }, "suggest": { @@ -7402,7 +7411,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.1.0" + "source": "https://github.com/getsentry/sentry-php/tree/4.5.0" }, "funding": [ { @@ -7414,28 +7423,28 @@ "type": "custom" } ], - "time": "2023-12-04T12:41:21+00:00" + "time": "2024-01-29T16:16:10+00:00" }, { "name": "sentry/sentry-laravel", - "version": "4.1.1", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "792944c1d0b7342d1635ac6d72fbdc2f32486310" + "reference": "054638ac05d7668e8b2c636e66fed5b5b468f11f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/792944c1d0b7342d1635ac6d72fbdc2f32486310", - "reference": "792944c1d0b7342d1635ac6d72fbdc2f32486310", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/054638ac05d7668e8b2c636e66fed5b5b468f11f", + "reference": "054638ac05d7668e8b2c636e66fed5b5b468f11f", "shasum": "" }, "require": { "illuminate/support": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", "nyholm/psr7": "^1.0", "php": "^7.2 | ^8.0", - "sentry/sentry": "^4.0", - "symfony/psr-http-message-bridge": "^1.0 | ^2.0" + "sentry/sentry": "^4.5", + "symfony/psr-http-message-bridge": "^1.0 | ^2.0 | ^6.0 | ^7.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.11", @@ -7491,7 +7500,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-laravel/issues", - "source": "https://github.com/getsentry/sentry-laravel/tree/4.1.1" + "source": "https://github.com/getsentry/sentry-laravel/tree/4.2.0" }, "funding": [ { @@ -7503,7 +7512,7 @@ "type": "custom" } ], - "time": "2023-12-12T22:17:13+00:00" + "time": "2024-01-29T17:08:18+00:00" }, { "name": "sergej-kurakin/diceroller", @@ -7563,21 +7572,21 @@ }, { "name": "spatie/db-dumper", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "bbd5ae0f331d47e6534eb307e256c11a65c8e24a" + "reference": "59beef7ad612ca7463dfddb64de6e038eb59e0d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/bbd5ae0f331d47e6534eb307e256c11a65c8e24a", - "reference": "bbd5ae0f331d47e6534eb307e256c11a65c8e24a", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/59beef7ad612ca7463dfddb64de6e038eb59e0d7", + "reference": "59beef7ad612ca7463dfddb64de6e038eb59e0d7", "shasum": "" }, "require": { "php": "^8.0", - "symfony/process": "^5.0|^6.0" + "symfony/process": "^5.0|^6.0|^7.0" }, "require-dev": { "pestphp/pest": "^1.22" @@ -7610,7 +7619,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.4.0" + "source": "https://github.com/spatie/db-dumper/tree/3.4.2" }, "funding": [ { @@ -7622,20 +7631,20 @@ "type": "github" } ], - "time": "2023-06-27T08:34:52+00:00" + "time": "2023-12-25T11:42:15+00:00" }, { "name": "spatie/laravel-backup", - "version": "8.4.1", + "version": "8.5.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-backup.git", - "reference": "b79f790cc856e67cce012abf34bf1c9035085dc1" + "reference": "4e97ff2c8b65835037e746755941bf05430e191d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/b79f790cc856e67cce012abf34bf1c9035085dc1", - "reference": "b79f790cc856e67cce012abf34bf1c9035085dc1", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/4e97ff2c8b65835037e746755941bf05430e191d", + "reference": "4e97ff2c8b65835037e746755941bf05430e191d", "shasum": "" }, "require": { @@ -7658,10 +7667,10 @@ "require-dev": { "composer-runtime-api": "^2.0", "ext-pcntl": "*", + "larastan/larastan": "^2.7.0", "laravel/slack-notification-channel": "^2.5", "league/flysystem-aws-s3-v3": "^2.0|^3.0", "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^2.1", "orchestra/testbench": "^8.0", "pestphp/pest": "^1.20", "phpstan/extension-installer": "^1.1", @@ -7709,7 +7718,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-backup/issues", - "source": "https://github.com/spatie/laravel-backup/tree/8.4.1" + "source": "https://github.com/spatie/laravel-backup/tree/8.5.1" }, "funding": [ { @@ -7721,24 +7730,24 @@ "type": "other" } ], - "time": "2023-11-20T08:21:45+00:00" + "time": "2024-01-23T08:57:08+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.16.1", + "version": "1.16.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0", + "illuminate/contracts": "^9.28|^10.0|^11.0", "php": "^8.0" }, "require-dev": { @@ -7773,7 +7782,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.2" }, "funding": [ { @@ -7781,7 +7790,7 @@ "type": "github" } ], - "time": "2023-08-23T09:04:39+00:00" + "time": "2024-01-11T08:43:00+00:00" }, { "name": "spatie/laravel-signal-aware-command", @@ -7859,16 +7868,16 @@ }, { "name": "spatie/temporary-directory", - "version": "2.2.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c" + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/efc258c9f4da28f0c7661765b8393e4ccee3d19c", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", "shasum": "" }, "require": { @@ -7904,7 +7913,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.2.0" + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" }, "funding": [ { @@ -7916,20 +7925,20 @@ "type": "github" } ], - "time": "2023-09-25T07:13:36+00:00" + "time": "2023-12-25T11:46:58+00:00" }, { "name": "srmklive/paypal", - "version": "3.0.27", + "version": "3.0.28", "source": { "type": "git", "url": "https://github.com/srmklive/laravel-paypal.git", - "reference": "79560c59d8efd3bfab4dcdc141f7f1477c2f95eb" + "reference": "6bde2b232a38c413f730115743cc9dcc29d4228e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/79560c59d8efd3bfab4dcdc141f7f1477c2f95eb", - "reference": "79560c59d8efd3bfab4dcdc141f7f1477c2f95eb", + "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/6bde2b232a38c413f730115743cc9dcc29d4228e", + "reference": "6bde2b232a38c413f730115743cc9dcc29d4228e", "shasum": "" }, "require": { @@ -7980,9 +7989,9 @@ ], "support": { "issues": "https://github.com/srmklive/laravel-paypal/issues", - "source": "https://github.com/srmklive/laravel-paypal/tree/3.0.27" + "source": "https://github.com/srmklive/laravel-paypal/tree/3.0.28" }, - "time": "2023-11-09T22:02:55+00:00" + "time": "2023-12-20T18:57:16+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep-contracts", @@ -8027,16 +8036,16 @@ }, { "name": "staudenmeir/laravel-adjacency-list", - "version": "v1.16", + "version": "v1.18", "source": { "type": "git", "url": "https://github.com/staudenmeir/laravel-adjacency-list.git", - "reference": "c8f69f672b167c24e275339dcbbecda9fd78f6f9" + "reference": "f8a6778fb276e0d8eaa848d14cfe6823c15a7f5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/laravel-adjacency-list/zipball/c8f69f672b167c24e275339dcbbecda9fd78f6f9", - "reference": "c8f69f672b167c24e275339dcbbecda9fd78f6f9", + "url": "https://api.github.com/repos/staudenmeir/laravel-adjacency-list/zipball/f8a6778fb276e0d8eaa848d14cfe6823c15a7f5c", + "reference": "f8a6778fb276e0d8eaa848d14cfe6823c15a7f5c", "shasum": "" }, "require": { @@ -8048,8 +8057,8 @@ "require-dev": { "barryvdh/laravel-ide-helper": "^2.13", "doctrine/dbal": "^3.5.2", + "larastan/larastan": "^2.0", "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.0", "orchestra/testbench": "^8.15", "phpunit/phpunit": "^10.1", "singlestoredb/singlestoredb-laravel": "^1.5.1", @@ -8084,7 +8093,7 @@ "description": "Recursive Laravel Eloquent relationships with CTEs", "support": { "issues": "https://github.com/staudenmeir/laravel-adjacency-list/issues", - "source": "https://github.com/staudenmeir/laravel-adjacency-list/tree/v1.16" + "source": "https://github.com/staudenmeir/laravel-adjacency-list/tree/v1.18" }, "funding": [ { @@ -8092,7 +8101,7 @@ "type": "custom" } ], - "time": "2023-12-30T15:58:29+00:00" + "time": "2024-01-30T15:50:51+00:00" }, { "name": "staudenmeir/laravel-cte", @@ -8345,16 +8354,16 @@ }, { "name": "symfony/console", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", "shasum": "" }, "require": { @@ -8419,7 +8428,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.1" + "source": "https://github.com/symfony/console/tree/v6.4.3" }, "funding": [ { @@ -8435,20 +8444,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:54:28+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", "shasum": "" }, "require": { @@ -8484,7 +8493,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.0" + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" }, "funding": [ { @@ -8500,7 +8509,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -8571,16 +8580,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33" + "reference": "6db31849011fefe091e94d0bb10cba26f7919894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", - "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/6db31849011fefe091e94d0bb10cba26f7919894", + "reference": "6db31849011fefe091e94d0bb10cba26f7919894", "shasum": "" }, "require": { @@ -8618,7 +8627,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.0" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.3" }, "funding": [ { @@ -8634,20 +8643,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", "shasum": "" }, "require": { @@ -8693,7 +8702,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/v6.4.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.3" }, "funding": [ { @@ -8709,20 +8718,20 @@ "type": "tidelift" } ], - "time": "2023-10-18T09:43:34+00:00" + "time": "2024-01-29T15:40:36+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e" + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c459b40ffe67c49af6fd392aac374c9edf8a027e", - "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", "shasum": "" }, "require": { @@ -8773,7 +8782,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.0.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" }, "funding": [ { @@ -8789,7 +8798,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T16:29:09+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -8933,16 +8942,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29" + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/5c584530b77aa10ae216989ffc48b4bedc9c0b29", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a9034bc119fab8238f76cf49c770f3135f3ead86", + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86", "shasum": "" }, "require": { @@ -9006,7 +9015,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.0" + "source": "https://github.com/symfony/http-client/tree/v6.4.3" }, "funding": [ { @@ -9022,7 +9031,7 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:55:58+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/http-client-contracts", @@ -9104,16 +9113,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", "shasum": "" }, "require": { @@ -9161,7 +9170,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" }, "funding": [ { @@ -9177,20 +9186,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", "shasum": "" }, "require": { @@ -9274,7 +9283,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/v6.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.3" }, "funding": [ { @@ -9290,20 +9299,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T17:02:02+00:00" + "time": "2024-01-31T07:21:29+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", "shasum": "" }, "require": { @@ -9354,7 +9363,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.3" }, "funding": [ { @@ -9370,20 +9379,20 @@ "type": "tidelift" } ], - "time": "2023-11-12T18:02:22+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "72d2f72f2016e559d0152188bef5a5dc9ebf5ec7" + "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/72d2f72f2016e559d0152188bef5a5dc9ebf5ec7", - "reference": "72d2f72f2016e559d0152188bef5a5dc9ebf5ec7", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", + "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", "shasum": "" }, "require": { @@ -9423,7 +9432,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.3" }, "funding": [ { @@ -9439,20 +9448,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T17:20:05+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mime", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", "shasum": "" }, "require": { @@ -9507,7 +9516,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.0" + "source": "https://github.com/symfony/mime/tree/v6.4.3" }, "funding": [ { @@ -9523,7 +9532,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:49:05+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/options-resolver", @@ -10419,16 +10428,16 @@ }, { "name": "symfony/process", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", + "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", "shasum": "" }, "require": { @@ -10460,7 +10469,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.0" + "source": "https://github.com/symfony/process/tree/v6.4.3" }, "funding": [ { @@ -10476,7 +10485,7 @@ "type": "tidelift" } ], - "time": "2023-11-17T21:06:49+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -10569,16 +10578,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", + "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", "shasum": "" }, "require": { @@ -10632,7 +10641,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.1" + "source": "https://github.com/symfony/routing/tree/v6.4.3" }, "funding": [ { @@ -10648,25 +10657,25 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2024-01-30T13:55:02+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -10714,7 +10723,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -10730,20 +10739,20 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620" + "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620", - "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620", + "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", + "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", "shasum": "" }, "require": { @@ -10800,7 +10809,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.0" + "source": "https://github.com/symfony/string/tree/v7.0.3" }, "funding": [ { @@ -10816,20 +10825,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:40:23+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/translation", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" + "reference": "637c51191b6b184184bbf98937702bcf554f7d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", + "reference": "637c51191b6b184184bbf98937702bcf554f7d04", "shasum": "" }, "require": { @@ -10852,7 +10861,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0|^7.0", "symfony/console": "^5.4|^6.0|^7.0", @@ -10895,7 +10904,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.0" + "source": "https://github.com/symfony/translation/tree/v6.4.3" }, "funding": [ { @@ -10911,20 +10920,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:14:36+00:00" + "time": "2024-01-29T13:11:52+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -10973,7 +10982,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -10989,20 +10998,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/uid", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { @@ -11047,7 +11056,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.0" + "source": "https://github.com/symfony/uid/tree/v6.4.3" }, "funding": [ { @@ -11063,20 +11072,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:18:17+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + "reference": "0435a08f69125535336177c29d56af3abc1f69da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", + "reference": "0435a08f69125535336177c29d56af3abc1f69da", "shasum": "" }, "require": { @@ -11132,7 +11141,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" }, "funding": [ { @@ -11148,7 +11157,7 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2024-01-23T14:53:30+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -11653,16 +11662,16 @@ }, { "name": "brianium/paratest", - "version": "v7.3.1", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" + "reference": "4ffc52ebbce2f259d6a15c1ddaf4ad837eef6703" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", - "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/4ffc52ebbce2f259d6a15c1ddaf4ad837eef6703", + "reference": "4ffc52ebbce2f259d6a15c1ddaf4ad837eef6703", "shasum": "" }, "require": { @@ -11670,28 +11679,27 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "fidry/cpu-core-counter": "^1.0.0", "jean85/pretty-package-versions": "^2.0.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.7", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-timer": "^6.0", - "phpunit/phpunit": "^10.4.2", - "sebastian/environment": "^6.0.1", - "symfony/console": "^6.3.4 || ^7.0.0", - "symfony/process": "^6.3.4 || ^7.0.0" + "php": "~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", + "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", + "phpunit/php-timer": "^6.0.0 || ^7.0.0", + "phpunit/phpunit": "^10.5.9 || ^11.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0", + "symfony/console": "^6.4.3 || ^7.0.3", + "symfony/process": "^6.4.3 || ^7.0.3" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "infection/infection": "^0.27.6", - "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan": "^1.10.57", "phpstan/phpstan-deprecation-rules": "^1.1.4", "phpstan/phpstan-phpunit": "^1.3.15", "phpstan/phpstan-strict-rules": "^1.5.2", - "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^6.3.1 || ^7.0.0" + "squizlabs/php_codesniffer": "^3.8.1", + "symfony/filesystem": "^6.4.3 || ^7.0.3" }, "bin": [ "bin/paratest", @@ -11732,7 +11740,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.4.0" }, "funding": [ { @@ -11744,7 +11752,7 @@ "type": "paypal" } ], - "time": "2023-10-31T09:24:17+00:00" + "time": "2024-02-02T09:37:18+00:00" }, { "name": "composer/class-map-generator", @@ -11958,16 +11966,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -11993,11 +12001,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -12020,9 +12023,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "fidry/cpu-core-counter", @@ -12209,16 +12212,16 @@ }, { "name": "laravel/pint", - "version": "v1.13.7", + "version": "v1.13.10", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece" + "reference": "e2b5060885694ca30ac008c05dc9d47f10ed1abf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/4157768980dbd977f1c4b4cc94997416d8b30ece", - "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece", + "url": "https://api.github.com/repos/laravel/pint/zipball/e2b5060885694ca30ac008c05dc9d47f10ed1abf", + "reference": "e2b5060885694ca30ac008c05dc9d47f10ed1abf", "shasum": "" }, "require": { @@ -12229,13 +12232,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.38.0", - "illuminate/view": "^10.30.1", + "friendsofphp/php-cs-fixer": "^3.47.1", + "illuminate/view": "^10.41.0", + "larastan/larastan": "^2.8.1", "laravel-zero/framework": "^10.3.0", - "mockery/mockery": "^1.6.6", - "nunomaduro/larastan": "^2.6.4", + "mockery/mockery": "^1.6.7", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.24.2" + "pestphp/pest": "^2.31.0" }, "bin": [ "builds/pint" @@ -12271,26 +12274,26 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-12-05T19:43:12+00:00" + "time": "2024-01-22T09:04:15+00:00" }, { "name": "laravel/sail", - "version": "v1.26.3", + "version": "v1.27.3", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d" + "reference": "7e01b345072c9604ead9d7aed175bf7ac1d80289" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", - "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "url": "https://api.github.com/repos/laravel/sail/zipball/7e01b345072c9604ead9d7aed175bf7ac1d80289", + "reference": "7e01b345072c9604ead9d7aed175bf7ac1d80289", "shasum": "" }, "require": { - "illuminate/console": "^9.0|^10.0|^11.0", - "illuminate/contracts": "^9.0|^10.0|^11.0", - "illuminate/support": "^9.0|^10.0|^11.0", + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", "php": "^8.0", "symfony/yaml": "^6.0|^7.0" }, @@ -12336,20 +12339,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-12-02T18:26:39+00:00" + "time": "2024-01-30T03:03:59+00:00" }, { "name": "laravel/telescope", - "version": "v4.17.3", + "version": "v4.17.5", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "17a420d0121b03ea90648dd4484b62abe6d3e261" + "reference": "2c5295261d1459e4f9b157c407a663a6685f3ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/17a420d0121b03ea90648dd4484b62abe6d3e261", - "reference": "17a420d0121b03ea90648dd4484b62abe6d3e261", + "url": "https://api.github.com/repos/laravel/telescope/zipball/2c5295261d1459e4f9b157c407a663a6685f3ddf", + "reference": "2c5295261d1459e4f9b157c407a663a6685f3ddf", "shasum": "" }, "require": { @@ -12405,9 +12408,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.17.3" + "source": "https://github.com/laravel/telescope/tree/v4.17.5" }, - "time": "2023-12-11T22:00:12+00:00" + "time": "2024-01-30T15:41:45+00:00" }, { "name": "maximebf/debugbar", @@ -12771,36 +12774,36 @@ }, { "name": "nunomaduro/larastan", - "version": "v2.7.0", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "a2610d46b9999cf558d9900ccb641962d1442f55" + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/a2610d46b9999cf558d9900ccb641962d1442f55", - "reference": "a2610d46b9999cf558d9900ccb641962d1442f55", + "url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^9.52.16 || ^10.28.0", - "illuminate/container": "^9.52.16 || ^10.28.0", - "illuminate/contracts": "^9.52.16 || ^10.28.0", - "illuminate/database": "^9.52.16 || ^10.28.0", - "illuminate/http": "^9.52.16 || ^10.28.0", - "illuminate/pipeline": "^9.52.16 || ^10.28.0", - "illuminate/support": "^9.52.16 || ^10.28.0", + "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", "php": "^8.0.2", "phpmyadmin/sql-parser": "^5.8.2", - "phpstan/phpstan": "^1.10.41" + "phpstan/phpstan": "^1.10.50" }, "require-dev": { "nikic/php-parser": "^4.17.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0", - "orchestra/testbench": "^7.33.0 || ^8.13.0", - "phpunit/phpunit": "^9.6.13" + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", + "phpunit/phpunit": "^9.6.13 || ^10.5" }, "suggest": { "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" @@ -12848,7 +12851,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.7.0" + "source": "https://github.com/larastan/larastan/tree/v2.8.1" }, "funding": [ { @@ -12869,20 +12872,20 @@ } ], "abandoned": "larastan/larastan", - "time": "2023-12-04T19:21:38+00:00" + "time": "2024-01-08T09:11:17+00:00" }, { "name": "pdepend/pdepend", - "version": "2.16.1", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "66ceb05eaa8bf358574143c974b04463911bc700" + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/66ceb05eaa8bf358574143c974b04463911bc700", - "reference": "66ceb05eaa8bf358574143c974b04463911bc700", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58", + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58", "shasum": "" }, "require": { @@ -12924,7 +12927,7 @@ ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.16.1" + "source": "https://github.com/pdepend/pdepend/tree/2.16.2" }, "funding": [ { @@ -12932,40 +12935,40 @@ "type": "tidelift" } ], - "time": "2023-12-10T18:38:19+00:00" + "time": "2023-12-17T18:09:59+00:00" }, { "name": "pestphp/pest", - "version": "v2.28.0", + "version": "v2.33.2", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "9a8f6e64149592b2555a2519237abb39e9e4f1fe" + "reference": "eeade88ad236f881f044430e0e9fefaad255718f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/9a8f6e64149592b2555a2519237abb39e9e4f1fe", - "reference": "9a8f6e64149592b2555a2519237abb39e9e4f1fe", + "url": "https://api.github.com/repos/pestphp/pest/zipball/eeade88ad236f881f044430e0e9fefaad255718f", + "reference": "eeade88ad236f881f044430e0e9fefaad255718f", "shasum": "" }, "require": { "brianium/paratest": "^7.3.1", - "nunomaduro/collision": "^7.10.0|^8.0.0", + "nunomaduro/collision": "^7.10.0|^8.1.0", "nunomaduro/termwind": "^1.15.1|^2.0.0", "pestphp/pest-plugin": "^2.1.1", - "pestphp/pest-plugin-arch": "^2.5.0", + "pestphp/pest-plugin-arch": "^2.7.0", "php": "^8.1.0", - "phpunit/phpunit": "^10.5.2" + "phpunit/phpunit": "^10.5.9" }, "conflict": { - "phpunit/phpunit": ">10.5.2", + "phpunit/phpunit": ">10.5.9", "sebastian/exporter": "<5.1.0", "webmozart/assert": "<1.11.0" }, "require-dev": { "pestphp/pest-dev-tools": "^2.16.0", - "pestphp/pest-plugin-type-coverage": "^2.5.0", - "symfony/process": "^6.4.0|^7.0.1" + "pestphp/pest-plugin-type-coverage": "^2.8.0", + "symfony/process": "^6.4.0|^7.0.2" }, "bin": [ "bin/pest" @@ -13028,7 +13031,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.28.0" + "source": "https://github.com/pestphp/pest/tree/v2.33.2" }, "funding": [ { @@ -13040,7 +13043,7 @@ "type": "github" } ], - "time": "2023-12-05T19:06:22+00:00" + "time": "2024-01-29T12:50:00+00:00" }, { "name": "pestphp/pest-plugin", @@ -13114,26 +13117,26 @@ }, { "name": "pestphp/pest-plugin-arch", - "version": "v2.5.0", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "8d850753f0192c3fa1ed6c6cac6f76b718d131db" + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/8d850753f0192c3fa1ed6c6cac6f76b718d131db", - "reference": "8d850753f0192c3fa1ed6c6cac6f76b718d131db", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", "shasum": "" }, "require": { - "nunomaduro/collision": "^7.10.0|^8.0.0", + "nunomaduro/collision": "^7.10.0|^8.1.0", "pestphp/pest-plugin": "^2.1.1", "php": "^8.1", - "ta-tikoma/phpunit-architecture-test": "^0.7.5" + "ta-tikoma/phpunit-architecture-test": "^0.8.4" }, "require-dev": { - "pestphp/pest": "^2.27.0", + "pestphp/pest": "^2.33.0", "pestphp/pest-dev-tools": "^2.16.0" }, "type": "library", @@ -13169,7 +13172,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.5.0" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" }, "funding": [ { @@ -13181,7 +13184,7 @@ "type": "github" } ], - "time": "2023-12-05T19:01:10+00:00" + "time": "2024-01-26T09:46:42+00:00" }, { "name": "pestphp/pest-plugin-laravel", @@ -13475,16 +13478,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -13527,9 +13530,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpmd/phpmd", @@ -13616,16 +13619,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.8.2", + "version": "5.9.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287" + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/f1720ae19abe6294cb5599594a8a57bc3c8cc287", - "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/011fa18a4e55591fac6545a821921dd1d61c6984", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984", "shasum": "" }, "require": { @@ -13656,6 +13659,7 @@ "bin": [ "bin/highlight-query", "bin/lint-query", + "bin/sql-parser", "bin/tokenize-query" ], "type": "library", @@ -13699,20 +13703,20 @@ "type": "other" } ], - "time": "2023-09-19T12:34:29+00:00" + "time": "2024-01-20T20:34:02+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { @@ -13744,22 +13748,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.55", + "version": "1.10.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949" + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "shasum": "" }, "require": { @@ -13808,27 +13812,27 @@ "type": "tidelift" } ], - "time": "2024-01-08T12:32:40+00:00" + "time": "2024-01-24T11:51:34+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.10", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "599109c8ca6bae97b23482d557d2874c25a65e59" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/599109c8ca6bae97b23482d557d2874c25a65e59", - "reference": "599109c8ca6bae97b23482d557d2874c25a65e59", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -13878,7 +13882,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/10.1.10" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -13886,7 +13890,7 @@ "type": "github" } ], - "time": "2023-12-11T06:28:43+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -14133,16 +14137,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.2", + "version": "10.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5aedff46afba98dddecaa12349ec044d9103d4fe" + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5aedff46afba98dddecaa12349ec044d9103d4fe", - "reference": "5aedff46afba98dddecaa12349ec044d9103d4fe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", "shasum": "" }, "require": { @@ -14214,7 +14218,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9" }, "funding": [ { @@ -14230,7 +14234,7 @@ "type": "tidelift" } ], - "time": "2023-12-05T14:54:33+00:00" + "time": "2024-01-22T14:35:40+00:00" }, { "name": "sebastian/cli-parser", @@ -14478,20 +14482,20 @@ }, { "name": "sebastian/complexity", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -14500,7 +14504,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -14524,7 +14528,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -14532,20 +14536,20 @@ "type": "github" } ], - "time": "2023-09-28T11:50:59+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -14558,7 +14562,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -14591,7 +14595,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -14599,7 +14603,7 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", @@ -14807,20 +14811,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -14853,7 +14857,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -14861,7 +14865,7 @@ "type": "github" } ], - "time": "2023-08-31T09:25:50+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -15211,21 +15215,20 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.3", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", - "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", "shasum": "" }, "require": { "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.62.1", "php": "^8.0", "spatie/backtrace": "^1.5.2", "symfony/http-foundation": "^5.2|^6.0|^7.0", @@ -15269,7 +15272,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" }, "funding": [ { @@ -15277,20 +15280,20 @@ "type": "github" } ], - "time": "2023-10-17T15:54:07+00:00" + "time": "2024-01-31T14:18:45+00:00" }, { "name": "spatie/ignition", - "version": "1.11.3", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044" + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", - "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", "shasum": "" }, "require": { @@ -15360,39 +15363,39 @@ "type": "github" } ], - "time": "2023-10-18T14:09:40+00:00" + "time": "2024-01-03T15:49:39+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.3.1", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8" + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8", - "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67", + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^10.0", + "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", "spatie/ignition": "^1.9", - "symfony/console": "^6.2.3", - "symfony/var-dumper": "^6.2.3" + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" }, "require-dev": { - "livewire/livewire": "^2.11", + "livewire/livewire": "^2.11|^3.3.5", "mockery/mockery": "^1.5.1", - "openai-php/client": "^0.3.4", - "orchestra/testbench": "^8.0", - "pestphp/pest": "^1.22.3", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", "phpstan/extension-installer": "^1.2", "phpstan/phpstan-deprecation-rules": "^1.1.1", "phpstan/phpstan-phpunit": "^1.3.3", @@ -15452,20 +15455,20 @@ "type": "github" } ], - "time": "2023-10-09T12:55:26+00:00" + "time": "2024-01-12T13:14:58+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -15475,11 +15478,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -15532,20 +15535,20 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-01-11T20:47:48+00:00" }, { "name": "symfony/config", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a" + "reference": "86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8789646600f4e7e451dde9e1dc81cfa429f3857a", - "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a", + "url": "https://api.github.com/repos/symfony/config/zipball/86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16", + "reference": "86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16", "shasum": "" }, "require": { @@ -15591,7 +15594,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.0" + "source": "https://github.com/symfony/config/tree/v7.0.3" }, "funding": [ { @@ -15607,20 +15610,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:30:23+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f6667642954bce638733f254c39e5b5700b47ba4" + "reference": "e915c6684b8e3ae90a4441f6823ebbb40edf0b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f6667642954bce638733f254c39e5b5700b47ba4", - "reference": "f6667642954bce638733f254c39e5b5700b47ba4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e915c6684b8e3ae90a4441f6823ebbb40edf0b92", + "reference": "e915c6684b8e3ae90a4441f6823ebbb40edf0b92", "shasum": "" }, "require": { @@ -15671,7 +15674,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.0.1" + "source": "https://github.com/symfony/dependency-injection/tree/v7.0.3" }, "funding": [ { @@ -15687,20 +15690,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T15:10:06+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" + "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", + "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", "shasum": "" }, "require": { @@ -15734,7 +15737,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.0" + "source": "https://github.com/symfony/filesystem/tree/v7.0.3" }, "funding": [ { @@ -15750,20 +15753,20 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:33:22+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3" + "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", - "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", + "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", "shasum": "" }, "require": { @@ -15808,7 +15811,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.1" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.3" }, "funding": [ { @@ -15824,20 +15827,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:38:21+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0055b230c408428b9b5cde7c55659555be5c0278", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { @@ -15879,7 +15882,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.0" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -15895,32 +15898,32 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:26:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.7.5", + "version": "0.8.4", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "9eb08437e8f0c0c75cc947a373cf49672c335827" + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/9eb08437e8f0c0c75cc947a373cf49672c335827", - "reference": "9eb08437e8f0c0c75cc947a373cf49672c335827", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", "shasum": "" }, "require": { - "nikic/php-parser": "^4.15.4", + "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.1.1", - "symfony/finder": "^6.2.7 || ^7.0.0" + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" }, "require-dev": { - "laravel/pint": "^1.9.0", - "phpstan/phpstan": "^1.10.13" + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" }, "type": "library", "autoload": { @@ -15952,9 +15955,9 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.5" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" }, - "time": "2023-10-12T15:31:50+00:00" + "time": "2024-01-05T14:10:56+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/discord.php b/config/discord.php index 569a99d9b6..f749c7f431 100644 --- a/config/discord.php +++ b/config/discord.php @@ -16,6 +16,11 @@ 'bot_secret' => getenv('DISCORD_BOT_SECRET'), 'bot_token' => getenv('DISCORD_BOT_TOKEN'), + 'webhooks' => [ + 'features' => env('DISCORD_WEBHOOK_FEATURES', null), + ], + 'color' => env('DISCORD_COLOR', '7506394'), + 'roles' => [ 'owlbear' => 435813101506527233, 'wyvern' => 805183678153621514, diff --git a/config/livewire.php b/config/livewire.php new file mode 100644 index 0000000000..1418060c2c --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,159 @@ + 'App\\Livewire', + + /* + |--------------------------------------------------------------------------- + | View Path + |--------------------------------------------------------------------------- + | + | This value is used to specify where Livewire component Blade templates are + | stored when running file creation commands like `artisan make:livewire`. + | It is also used if you choose to omit a component's render() method. + | + */ + + 'view_path' => resource_path('views/livewire'), + + /* + |--------------------------------------------------------------------------- + | Layout + |--------------------------------------------------------------------------- + | The view that will be used as the layout when rendering a single component + | as an entire page via `Route::get('/post/create', CreatePost::class);`. + | In this case, the view returned by CreatePost will render into $slot. + | + */ + + 'layout' => 'components.layouts.app', + + /* + |--------------------------------------------------------------------------- + | Lazy Loading Placeholder + |--------------------------------------------------------------------------- + | Livewire allows you to lazy load components that would otherwise slow down + | the initial page load. Every component can have a custom placeholder or + | you can define the default placeholder view for all components below. + | + */ + + 'lazy_placeholder' => null, + + /* + |--------------------------------------------------------------------------- + | Temporary File Uploads + |--------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is stored permanently. All file uploads are directed to + | a global endpoint for temporary storage. You may configure this below: + | + */ + + 'temporary_file_upload' => [ + 'disk' => env('LIVEWIRE_TEMP_DISK', 's3'), // Example: 'local', 's3' | Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... + 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', + 'mov', 'avi', 'wmv', 'mp3', 'm4a', + 'jpg', 'jpeg', 'mpga', 'webp', 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... + ], + + /* + |--------------------------------------------------------------------------- + | Render On Redirect + |--------------------------------------------------------------------------- + | + | This value determines if Livewire will run a component's `render()` method + | after a redirect has been triggered using something like `redirect(...)` + | Setting this to true will render the view once more before redirecting + | + */ + + 'render_on_redirect' => false, + + /* + |--------------------------------------------------------------------------- + | Eloquent Model Binding + |--------------------------------------------------------------------------- + | + | Previous versions of Livewire supported binding directly to eloquent model + | properties using wire:model by default. However, this behavior has been + | deemed too "magical" and has therefore been put under a feature flag. + | + */ + + 'legacy_model_binding' => false, + + /* + |--------------------------------------------------------------------------- + | Auto-inject Frontend Assets + |--------------------------------------------------------------------------- + | + | By default, Livewire automatically injects its JavaScript and CSS into the + |
and of pages containing Livewire components. By disabling + | this behavior, you need to use @livewireStyles and @livewireScripts. + | + */ + + 'inject_assets' => true, + + /* + |--------------------------------------------------------------------------- + | Navigate (SPA mode) + |--------------------------------------------------------------------------- + | + | By adding `wire:navigate` to links in your Livewire application, Livewire + | will prevent the default link handling and instead request those pages + | via AJAX, creating an SPA-like effect. Configure this behavior here. + | + */ + + 'navigate' => [ + 'show_progress_bar' => true, + 'progress_bar_color' => '#2299dd', + ], + + /* + |--------------------------------------------------------------------------- + | HTML Morph Markers + |--------------------------------------------------------------------------- + | + | Livewire intelligently "morphs" existing HTML into the newly rendered HTML + | after each update. To make this process more reliable, Livewire injects + | "markers" into the rendered Blade surrounding @if, @class & @foreach. + | + */ + + 'inject_morph_markers' => true, + + /* + |--------------------------------------------------------------------------- + | Pagination Theme + |--------------------------------------------------------------------------- + | + | When enabling Livewire's pagination feature by using the `WithPagination` + | trait, Livewire will use Tailwind templates to render pagination views + | on the page. If you want Bootstrap CSS, you can specify: "bootstrap" + | + */ + + 'pagination_theme' => 'tailwind', +]; diff --git a/config/subscription.php b/config/subscription.php index 4b26f3ef68..ca50b780a4 100644 --- a/config/subscription.php +++ b/config/subscription.php @@ -9,15 +9,19 @@ ], 'usd' => [ 'monthly' => env('STRIPE_OWLBEAR_USD'), - 'yearly' => env('STRIPE_OWLBEAR_USD_YEARLY') + 'yearly' => env('STRIPE_OWLBEAR_USD_YEARLY'), ], 'monthly' => [ env('STRIPE_OWLBEAR_EUR'), + env('STRIPE_OWLBEAR_EUR_OLD'), env('STRIPE_OWLBEAR_USD'), + env('STRIPE_OWLBEAR_USD_OLD'), ], 'yearly' => [ env('STRIPE_OWLBEAR_EUR_YEARLY'), + env('STRIPE_OWLBEAR_EUR_YEARLY_OLD'), env('STRIPE_OWLBEAR_USD_YEARLY'), + env('STRIPE_OWLBEAR_USD_YEARLY_OLD'), ], ], 'wyvern' => [ @@ -27,15 +31,19 @@ ], 'usd' => [ 'monthly' => env('STRIPE_WYVERN_USD'), - 'yearly' => env('STRIPE_WYVERN_USD_YEARLY') + 'yearly' => env('STRIPE_WYVERN_USD_YEARLY'), ], 'monthly' => [ env('STRIPE_WYVERN_EUR'), + env('STRIPE_WYVERN_EUR_OLD'), env('STRIPE_WYVERN_USD'), + env('STRIPE_WYVERN_USD_OLD'), ], 'yearly' => [ env('STRIPE_WYVERN_EUR_YEARLY'), + env('STRIPE_WYVERN_EUR_YEARLY_OLD'), env('STRIPE_WYVERN_USD_YEARLY'), + env('STRIPE_WYVERN_USD_YEARLY_OLD'), ], ], 'elemental' => [ @@ -45,15 +53,47 @@ ], 'usd' => [ 'monthly' => env('STRIPE_ELEMENTAL_USD'), - 'yearly' => env('STRIPE_ELEMENTAL_USD_YEARLY') + 'yearly' => env('STRIPE_ELEMENTAL_USD_YEARLY'), ], 'monthly' => [ env('STRIPE_ELEMENTAL_EUR'), + env('STRIPE_ELEMENTAL_EUR_OLD'), env('STRIPE_ELEMENTAL_USD'), + env('STRIPE_ELEMENTAL_USD_OLD'), ], 'yearly' => [ env('STRIPE_ELEMENTAL_EUR_YEARLY'), + env('STRIPE_ELEMENTAL_EUR_YEARLY_OLD'), env('STRIPE_ELEMENTAL_USD_YEARLY'), + env('STRIPE_ELEMENTAL_USD_YEARLY_OLD'), ], ], + 'old' => [ + 'all' => [ + env('STRIPE_OWLBEAR_EUR_OLD'), + env('STRIPE_OWLBEAR_EUR_YEARLY_OLD'), + env('STRIPE_OWLBEAR_USD_OLD'), + env('STRIPE_OWLBEAR_USD_YEARLY_OLD'), + env('STRIPE_WYVERN_EUR_OLD'), + env('STRIPE_WYVERN_EUR_YEARLY_OLD'), + env('STRIPE_WYVERN_USD_OLD'), + env('STRIPE_WYVERN_USD_YEARLY_OLD'), + env('STRIPE_ELEMENTAL_EUR_OLD'), + env('STRIPE_ELEMENTAL_EUR_YEARLY_OLD'), + env('STRIPE_ELEMENTAL_USD_OLD'), + env('STRIPE_ELEMENTAL_USD_YEARLY_OLD'), + ], + 'oe' => env('STRIPE_OWLBEAR_EUR_OLD'), + 'oey' => env('STRIPE_OWLBEAR_EUR_YEARLY_OLD'), + 'ou' => env('STRIPE_OWLBEAR_USD_OLD'), + 'ouy' => env('STRIPE_OWLBEAR_USD_YEARLY_OLD'), + 'we' => env('STRIPE_WYVERN_EUR_OLD'), + 'wey' => env('STRIPE_WYVERN_EUR_YEARLY_OLD'), + 'wu' => env('STRIPE_WYVERN_USD_OLD'), + 'wuy' => env('STRIPE_WYVERN_USD_YEARLY_OLD'), + 'ee' => env('STRIPE_ELEMENTAL_EUR_OLD'), + 'eey' => env('STRIPE_ELEMENTAL_EUR_YEARLY_OLD'), + 'eu' => env('STRIPE_ELEMENTAL_USD_OLD'), + 'euy' => env('STRIPE_ELEMENTAL_USD_YEARLY_OLD'), + ], ]; diff --git a/database/migrations/2024_01_11_150113_update_attributes.php b/database/migrations/2024_01_11_150113_update_attributes.php index 5629c407d1..b9333f86ec 100644 --- a/database/migrations/2024_01_11_150113_update_attributes.php +++ b/database/migrations/2024_01_11_150113_update_attributes.php @@ -15,7 +15,7 @@ public function up(): void //$table->tinyInteger('is_hidden')->default(0)->change(); }); - Illuminate\Support\Facades\DB::statement('ALTER TABLE `attributes` MODIFY `is_hidden` tinyint(1) DEFAULT 0 NOT NULL;'); + Illuminate\Support\Facades\DB::raw('ALTER TABLE `attributes` MODIFY `is_hidden` tinyint(1) DEFAULT 0 NOT NULL;'); } /** diff --git a/database/migrations/2024_01_25_192113_update_creatures_add_is_extinct.php b/database/migrations/2024_01_25_192113_update_creatures_add_is_extinct.php new file mode 100644 index 0000000000..c7f13a98a9 --- /dev/null +++ b/database/migrations/2024_01_25_192113_update_creatures_add_is_extinct.php @@ -0,0 +1,29 @@ +boolean('is_extinct')->default(0); + $table->index('is_extinct'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('creatures', function (Blueprint $table) { + $table->dropIndex(['is_extinct']); + $table->dropColumn('is_extinct'); + }); + } +}; diff --git a/database/migrations/2024_01_26_194006_update_campaigns_add_is_discreet.php b/database/migrations/2024_01_26_194006_update_campaigns_add_is_discreet.php new file mode 100644 index 0000000000..f9ce8a8198 --- /dev/null +++ b/database/migrations/2024_01_26_194006_update_campaigns_add_is_discreet.php @@ -0,0 +1,29 @@ +boolean('is_discreet')->default(0); + $table->index('is_discreet'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('campaigns', function (Blueprint $table) { + $table->dropIndex(['is_discreet']); + $table->dropColumn('is_discreet'); + }); + } +}; diff --git a/database/migrations/2024_02_06_162941_create_feature_files.php b/database/migrations/2024_02_06_162941_create_feature_files.php new file mode 100644 index 0000000000..cd85be9d5d --- /dev/null +++ b/database/migrations/2024_02_06_162941_create_feature_files.php @@ -0,0 +1,30 @@ +id(); + $table->unsignedBigInteger('feature_id'); + $table->string('path')->nullable(); + $table->timestamps(); + + $table->foreign('feature_id')->references('id')->on('features')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('feature_files'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 5b62c76603..8c1253438b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -16,7 +16,6 @@ public function run() $this->call(EntityEventTypeSeeder::class); $this->call(EntityTypesTableSeeder::class); $this->call(PresetTypeTableSeeder::class); - //$this->call(RpgSystemsTableSeeder::class); $this->call(GameSystemSeeder::class); $this->call(ThemesTableSeeder::class); $this->call(RolesTableSeeder::class); diff --git a/lang/ca/campaigns.php b/lang/ca/campaigns.php index 503cfddc4e..731c8f8e5c 100644 --- a/lang/ca/campaigns.php +++ b/lang/ca/campaigns.php @@ -57,7 +57,6 @@ 'public' => 'Visibilitat de la campanya', 'public_campaign_filters' => 'Filtres de les campanyes públiques', 'related_visibility' => 'Visibilitat dels elements relacionats', - 'rpg_system' => 'Sistemes RPG', 'superboosted' => 'Supermillorada per', 'system' => 'Sistema', 'theme' => 'Tema', @@ -372,7 +371,6 @@ 'connections' => 'Interfície per defecte de les connexions de l\'entitat', 'entity_history' => 'Registre històric de l\'entitat', 'entity_image' => 'Imatge de l\'entitat', - 'family_toolip' => 'Família del personatge', 'member_list' => 'Llista de membres de la campanya', 'nested' => 'Disposició per defecte de les llistes', 'post_collapsed' => 'Col·lapsar/expandir les noves anotacions d\'entitat', diff --git a/lang/de/campaigns.php b/lang/de/campaigns.php index fc832effe6..37e8a33a7e 100644 --- a/lang/de/campaigns.php +++ b/lang/de/campaigns.php @@ -68,10 +68,10 @@ 'public' => 'Sichtbarkeit der Kampagne', 'public_campaign_filters' => 'Öffentliche Kampagnenfilter', 'related_visibility' => 'Verwandte Elemente Sichtbarkeit', - 'rpg_system' => 'Rollenspielsysteme', 'superboosted' => 'supergeboosted von', 'system' => 'System', 'theme' => 'Thema', + 'vanity' => 'Vanity-URL', 'visibility' => 'Sichtbarkeit', ], 'following' => 'Abonniert', @@ -299,6 +299,11 @@ 'delete' => 'Entfernen', 'edit' => 'Bearbeiten', 'entity-note' => 'Notizen', + 'gallery' => [ + 'browse' => 'Durchsuche', + 'manage' => 'Volle Kontrolle', + 'upload' => 'Hochladen', + ], 'manage' => 'Verwalten', 'members' => 'Mitglieder', 'permission' => 'Verwalte Berechtigungen', @@ -311,6 +316,11 @@ 'delete' => 'Erlauben Sie das Entfernen aller Objekte dieses Typs.', 'edit' => 'Bearbeitung aller Objekte dieses Typs zulassen.', 'entity_note' => 'Auf diese Weise können Benutzer ohne Bearbeitungsberechtigung für ein Objekt Objektsnotizen hinzufügen.', + 'gallery' => [ + 'browse' => 'Ermögliche das Anzeigen der Galerie und das Festlegen des Bilds eines Objekts aus der Galerie.', + 'manage' => 'Erlaube alles in der Galerie so, wie es ein Administrator kann, einschließlich der Bearbeitung und Löschung von Bildern.', + 'upload' => 'Ermöglicht das Hochladen von Bildern in die Galerie. Die von dir hochgeladenen Bilder werden nur angezeigt, wenn sie nicht mit der Durchsuchungsberechtigung kombiniert sind.', + ], 'manage' => 'Erlauben Sie die Bearbeitung der Kampagne wie ein Kampagnenadministrator, ohne dass die Mitglieder die Kampagne löschen können.', 'members' => 'Erlauben Sie, neue Mitglieder zur Kampagne einzuladen.', 'permission' => 'Erlaube Einstellungsberechtigungen für Objekte dieses Typs, die sie bearbeiten können.', @@ -367,6 +377,7 @@ ], 'helpers' => [ 'abilities' => 'Erstellen Sie Fähigkeiten, seien es Talente, Zauber oder Kräfte, die Objekten zugewiesen werden können.', + 'bookmarks' => 'Erstelle Lesezeichen für Objekte oder gefilterte Listen, die in der Seitenleiste angezeigt werden.', 'calendars' => 'Der Ort, um die Kalender deiner Welt zu erstellen.', 'characters' => 'Die Leute, die deine Welt bevölkern.', 'conversations' => 'Fiktive Gespräche zwischen Charakteren oder zwischen Kampagnennutzern.', @@ -407,10 +418,15 @@ 'achievements' => 'Erfolge', 'applications' => 'Bewerbungen', 'campaign' => 'Kampagne', + 'customisation' => 'Anpassung', + 'data' => 'Daten', 'default-images' => 'Standardbilder', 'export' => 'Export', + 'import' => 'Importieren', 'information' => 'Informationen', + 'management' => 'Management', 'members' => 'Mitglieder', + 'modules' => 'Module', 'plugins' => 'Plugins', 'recovery' => 'Wiederherstellen', 'roles' => 'Rollen', @@ -441,7 +457,6 @@ 'connections_mode' => 'Standard Beziehung-Explorer für Beobachter', 'entity_history' => 'Verlaufsprotokolle des Objekts', 'entity_image' => 'Objekt Portrait', - 'family_toolip' => 'Die Familie des Charakters', 'member_list' => 'Mitgliederliste der Kampagne', 'nested' => 'Standardlistenlayout', 'post_collapsed' => 'Neuer Post-Standardwert für eingeklappteWerte', diff --git a/lang/de/footer.php b/lang/de/footer.php index 9c20187a99..49b00f42ea 100644 --- a/lang/de/footer.php +++ b/lang/de/footer.php @@ -7,7 +7,10 @@ 'community' => 'Community', 'company' => 'Firma', 'contact' => 'Kontakt', + 'copyright' => 'Urheberrecht :copy :year Owlchester SNC', 'documentation' => 'Dokumentation', + 'features' => 'Besonderheiten', + 'kb' => 'Wissensbasis', 'language-switcher' => [ 'other' => 'andere Sprachen', 'title' => 'Wähle deine Sprache', @@ -17,6 +20,7 @@ 'platform' => 'Plattform', 'premium' => 'Premium Kampagnen', 'press-kit' => 'Pressemappe', + 'pricing' => 'Preisgestaltung', 'privacy' => 'Privatsphäre', 'public-campaigns' => 'Öffentliche Kampagnen', 'resources' => 'Ressourcen', diff --git a/lang/en/calendars.php b/lang/en/calendars.php index e63b99a4a9..2d78ad4d7d 100644 --- a/lang/en/calendars.php +++ b/lang/en/calendars.php @@ -61,6 +61,10 @@ 'show_before' => 'Show before today', ], 'start' => '(start)', + 'bulks' => [ + 'patch' => '{1} Updated :count event.|[2,*] Updated :count events.', + 'delete' => '{1} Deleted :count event.|[2,*] Deleted :count events.', + ], ], 'fields' => [ 'colour' => 'Colour', diff --git a/lang/en/campaigns.php b/lang/en/campaigns.php index d8b3daa2a6..907ad800d5 100644 --- a/lang/en/campaigns.php +++ b/lang/en/campaigns.php @@ -56,6 +56,7 @@ 'genre' => 'Genre(s)', 'header_image' => 'Campaign dashboard background image', 'image' => 'Sidebar image', + 'is_discreet' => 'Discreet', 'locale' => 'Locale', 'name' => 'Name', 'nested' => 'Default entity lists to nested when available', @@ -64,13 +65,12 @@ 'post_collapsed' => 'New posts on entities are collapsed by default.', 'premium' => 'Premium unlocked by :name', 'public' => 'Campaign visibility', - 'public_campaign_filters' => 'Public Campaign Filters', + 'public_campaign_filters' => 'Public Filters', 'related_visibility' => 'Related Elements Visibility', - 'rpg_system' => 'RPG Systems', 'superboosted' => 'Superboosted by', 'system' => 'System', 'theme' => 'Theme', - 'vanity' => 'Vantity URL', + 'vanity' => 'Vanity URL', 'visibility' => 'Visibility', ], 'following' => 'Following', @@ -85,11 +85,13 @@ 'header_image' => 'Image displayed as a background in the campaign header dashboard widget.', 'hide_history' => 'If enabled, only members of the campaign\'s :admin role will have access to an entity\'s history (log of changes).', 'hide_members' => 'If enabled, only members of the campaign\'s :admin role will have access to the list of the campaign\'s members.', + 'is_discreet' => 'If enabled when the campaign is public, it won\'t be displayed in the :public-campaigns.', + 'is_discreet_locked' => 'Premium campaigns can be set to be publicly visible but not show up in the :public-campaigns.', 'locale' => 'The language your campaign is written in. This is used for generating content and grouping public campaigns.', 'name' => 'Your campaign/world can have any name as long as it contains at least 4 letters or numbers.', 'no_entry' => 'Looks like the campaign doesn\'t have a description yet! Let\'s fix that.', 'permissions_tab' => 'Control the default privacy and visibility settings of new elements with the following options.', - 'premium' => 'Some features are available because this campaign\'s premium features are unlocked. Find out more on the :settings page.', + 'premium' => 'Some features require premium features te be unlocked. Find out more about :settings.', 'public_campaign_filters' => 'Help others find the campaign among other public campaigns by providing the following information.', 'public_no_visibility' => 'Heads up! The campaign is public, but the campaign\'s public role can\'t access anything. :fix.', 'related_visibility' => 'Default Visibility value when creating a new element with this field (posts, relations, abilities, etc)', @@ -393,7 +395,7 @@ ], ], 'sharing' => [ - 'filters' => 'Public campaigns are visible on the :public-campaigns page. Filling out these fields makes it easier for people to discover the campaign.', + 'filters' => 'Public campaigns are visible on the :public-campaigns page. Filling out these fields makes it easier for others to discover it.', 'language' => 'The language in which the campaign\'s content is written.', 'system' => 'If playing a TTRPG, the system used to play in the campaign.', ], @@ -449,7 +451,6 @@ 'connections_mode' => 'Default relations explorer mode', 'entity_history' => 'Entity\'s history logs', 'entity_image' => 'Entity\'s image', - 'family_toolip' => 'Character\'s family', 'member_list' => 'Campaign\'s member list', 'nested' => 'Default lists layout', 'post_collapsed' => 'New post default collapsed value', diff --git a/lang/en/campaigns/default-images.php b/lang/en/campaigns/default-images.php index ea7c3b192f..5a1af166a6 100644 --- a/lang/en/campaigns/default-images.php +++ b/lang/en/campaigns/default-images.php @@ -7,7 +7,7 @@ 'call-to-action' => 'Upload a custom thumbnail for all the characters, locations, or other entities of the campaign. These images are then shown on various lists.', 'create' => [ 'error' => 'Error saving the new default entity thumbnails. Is :type already set?', - 'success' => 'New thumnbail for :type created.', + 'success' => 'New thumbnail for :type created.', 'title' => 'New default thumbnail', ], 'destroy' => [ diff --git a/lang/en/campaigns/public.php b/lang/en/campaigns/public.php index b5ad564078..cfb5a0dd3a 100644 --- a/lang/en/campaigns/public.php +++ b/lang/en/campaigns/public.php @@ -2,7 +2,7 @@ return [ 'helpers' => [ - 'main' => 'Public campaigns are visible to all users that have a link to the campaign or through the :public-campaigns page. Permissions for users viewing the campaign this way is controlled by the campaign\'s :public-role role.', + 'main' => 'Campaigns can be set to either be public or private. Public campaigns are visible to all users that have a link to the campaign, and also show up on in the :public-campaigns. This setting only controls access to the campaign. Permissions to view content of the campaigns still need to be set up through the :public-role role.', ], 'title' => 'Change the campaign\'s visibility', 'update' => [ diff --git a/lang/en/creatures.php b/lang/en/creatures.php index 0abb6bddb0..132839b435 100644 --- a/lang/en/creatures.php +++ b/lang/en/creatures.php @@ -4,9 +4,15 @@ 'create' => [ 'title' => 'New Creature', ], + 'fields' => [ + 'is_extinct' => 'Extinct', + ], 'helpers' => [ 'nested_without' => 'Displaying all creatures that don\'t have a parent creature. Click on a row to see the children creatures.', ], + 'hints' => [ + 'is_extinct' => 'This creature is extinct.', + ], 'placeholders' => [ 'type' => 'Herbivore, Aquatic, Mythical', ], diff --git a/lang/en/crud.php b/lang/en/crud.php index b6da9df96a..6066d025eb 100644 --- a/lang/en/crud.php +++ b/lang/en/crud.php @@ -241,6 +241,7 @@ 'gallery_header' => 'If the entity has no header, display an image from the campaign gallery instead.', 'gallery_image' => 'If the entity has no image, display an image from the campaign gallery instead.', 'header_image' => 'This image is placed above the entity. For best results, use a wide image.', + 'image_dimension' => 'Recommended dimensions: :dimension pixels.', 'image_limitations' => 'Supported formats: :formats. Max file size: :size.', 'image_recommendation' => 'Recommended dimensions: :width by :height px.', 'is_star' => 'Pinned elements will appear on the entity\'s overview page.', diff --git a/lang/en/dashboard.php b/lang/en/dashboard.php index b4cb524f63..15aec23a18 100644 --- a/lang/en/dashboard.php +++ b/lang/en/dashboard.php @@ -155,6 +155,9 @@ 'helpers' => [ 'name' => 'You can reference the random entity\'s name with {name}', ], + 'type' => [ + 'all' => 'All' + ] ], 'recent' => [ 'advanced_filter' => 'Advanced filter', diff --git a/lang/en/notifications.php b/lang/en/notifications.php index 42a6f2bce0..7b80a3859c 100644 --- a/lang/en/notifications.php +++ b/lang/en/notifications.php @@ -49,8 +49,8 @@ 'title' => 'Clear notifications', ], 'features' => [ - 'rejected' => 'Your feature request :feature has been rejected, reason: :reason.', - 'approved' => 'Your feature request :feature has been approved.', + 'approved' => 'Your idea :feature has been approved.', + 'rejected' => 'Your idea :feature has been rejected, reason: :reason.', ], 'header' => 'You have :count notifications', 'index' => [ diff --git a/lang/en/tiers.php b/lang/en/tiers.php index 16ece12d30..c2e04787ff 100644 --- a/lang/en/tiers.php +++ b/lang/en/tiers.php @@ -3,12 +3,12 @@ return [ 'actions' => [ 'subscribe' => [ + 'choose' => 'Choose :tier', 'monthly' => ':tier monthly', 'yearly' => ':tier yearly', - 'choose' => 'Choose :tier', ], ], - 'current' => 'Current subscription', + 'current' => 'Current subscription', 'features' => [ 'api_requests' => 'Up to :amount API requests per min', 'boosters' => 'Campaign Boosters', @@ -24,16 +24,16 @@ 'vote_influence' => 'Influence the community vote', ], 'periods' => [ - 'monthly' => 'Monthly', - 'yearly' => 'Yearly', - 'billed_yearly' => 'billed yearly', - 'billed_monthly' => 'billed monthly', + 'billed_monthly' => 'billed monthly', + 'billed_yearly' => 'billed yearly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', ], 'pricing' => ':currency :amount / month', 'ribbons' => [ 'best-value' => 'Best value', - 'popular' => 'Popular', 'current' => 'Current subscription', + 'popular' => 'Popular', ], 'toggle' => [ 'yearly' => 'Yearly (pay 10 months)', diff --git a/lang/es/campaigns.php b/lang/es/campaigns.php index dcbd956917..1f44fa7393 100644 --- a/lang/es/campaigns.php +++ b/lang/es/campaigns.php @@ -68,10 +68,10 @@ 'public' => 'Visibilidad de la campaña', 'public_campaign_filters' => 'Filtros de las campañas públicas', 'related_visibility' => 'Visibilidad de elementos relacionados', - 'rpg_system' => 'Sistemas RPG', 'superboosted' => 'Supermejorada por', 'system' => 'Sistema', 'theme' => 'Tema', + 'vanity' => 'URL personalizada', 'visibility' => 'Visibilidad', ], 'following' => 'Siguiendo', @@ -295,6 +295,11 @@ 'delete' => 'Eliminar', 'edit' => 'Editar', 'entity-note' => 'Notas de entidad', + 'gallery' => [ + 'browse' => 'Navegar', + 'manage' => 'Control absoluto', + 'upload' => 'Subir', + ], 'manage' => 'Configurar', 'members' => 'Miembros', 'permission' => 'Administrar permisos', @@ -307,6 +312,11 @@ 'delete' => 'Permite eliminar todas las entidades de este tipo.', 'edit' => 'Permite editar todas las entidades de este tipo.', 'entity_note' => 'Esto permite que los usuarios que no tengan permisos para editar una entidad puedan añadirle notas.', + 'gallery' => [ + 'browse' => 'Permite ver la galería y establecer la imagen de una entidad desde la galería.', + 'manage' => 'Permite todo en la galería como un administrador puede, incluyendo la edición y eliminación de imágenes.', + 'upload' => 'Permite subir imágenes a la galería. Sólo verá las imágenes que han subido si no se combina con el permiso de navegación.', + ], 'manage' => 'Permite editar la campaña como un administrador, excepto eliminar la campaña.', 'members' => 'Permite invitar nuevos miembros a la campaña.', 'permission' => 'Permite configurar los permisos de las entidades de este tipo que puedan editar.', @@ -363,6 +373,7 @@ ], 'helpers' => [ 'abilities' => 'Crea habilidades, proezas, hechizos o poderes y asígnalos a entidades.', + 'bookmarks' => 'Crea marcadores de entidades o listas filtradas que aparezcan en la barra lateral.', 'calendars' => 'El sitio para definir los calendarios de tu mundo.', 'characters' => 'Las personas que viven en tu mundo.', 'conversations' => 'Conversaciones ficticias entre personajes o entre usuarios de la campaña.', @@ -403,10 +414,15 @@ 'achievements' => 'Logros', 'applications' => 'Solicitudes', 'campaign' => 'Campaña', + 'customisation' => 'Personalización', + 'data' => 'Datos', 'default-images' => 'Imágenes por defecto', 'export' => 'Exportar', + 'import' => 'Importar', 'information' => 'Información', + 'management' => 'Gestión', 'members' => 'Miembros', + 'modules' => 'Módulos', 'plugins' => 'Plugins', 'recovery' => 'Recuperación', 'roles' => 'Roles', @@ -437,7 +453,6 @@ 'connections_mode' => 'Modo del explorador de relaciones predeterminado', 'entity_history' => 'Registros históricos de la entidad', 'entity_image' => 'Imagen de la entidad', - 'family_toolip' => 'Familia del personaje', 'member_list' => 'Lista de miembros de la campaña', 'nested' => 'Disposición por defecto de las listas', 'post_collapsed' => 'Valor de colapsado/expandido por defecto de los posts', diff --git a/lang/es/campaigns/export.php b/lang/es/campaigns/export.php index 2f634345e1..2b4d0e2e81 100644 --- a/lang/es/campaigns/export.php +++ b/lang/es/campaigns/export.php @@ -1,13 +1,30 @@ [ + 'actions' => [ + 'download' => 'Descargar', 'export' => 'Exportar los datos de la campaña', ], - 'errors' => [ + 'confirm' => [ + 'title' => 'Confirmación de exportación', + 'warning' => 'Estás a punto de exportar los datos de la campaña. Este proceso puede llevar mucho tiempo dependiendo del tamaño de la campaña. Puedes seguir utilizando Kanka mientras nuestros servidores generan la exportación.', + ], + 'errors' => [ 'limit' => 'La campaña ya se ha exportado una vez hoy. Vuelva a intentarlo mañana.', ], - 'helpers' => [], - 'success' => 'Se está preparando la exportación de la campaña. Recibirás una notificación en Kanka cuando esté lista para descargar.', - 'title' => 'Exportación de campaña', + 'expired' => 'Enlace expirado', + 'helpers' => [], + 'progress' => 'Progreso', + 'size' => 'Tamaño', + 'status' => [ + 'failed' => 'Fallida', + 'finished' => 'Terminada', + 'running' => 'Ejecutándose', + 'scheduled' => 'Programada', + ], + 'success' => 'Se está preparando la exportación de la campaña. Recibirás una notificación en Kanka cuando esté lista para descargar.', + 'title' => 'Exportación de campaña', + 'type' => 'Tipo', + 'type_assets' => 'Activos', + 'type_entities' => 'Entidades', ]; diff --git a/lang/es/campaigns/gallery.php b/lang/es/campaigns/gallery.php index 91e069f7e1..60a2b19ea1 100644 --- a/lang/es/campaigns/gallery.php +++ b/lang/es/campaigns/gallery.php @@ -13,15 +13,18 @@ 'bulk' => [ 'destroy' => [ 'confirm' => '¿Estás seguro de que quieres eliminar permanentemente los elementos seleccionados? Esta acción no se puede deshacer.', + 'success' => '{0}Ningún archivo eliminado.|{1}Un archivo eliminado.|{2,*}:count archivos eliminados.', ], ], 'cta' => 'Gestiona y reutiliza las imágenes a lo largo de la campaña.', 'destroy' => [ + 'folder' => 'Carpeta :name eliminada.', 'success' => 'Imagen :name borrada.', ], 'errors' => [ 'max' => 'Por favor, sólo seleccione hasta :count archivos a la vez.', 'permissions' => 'A tus roles de campaña les falta el permiso :permission para poder subir imágenes a la galería de la campaña.', + 'storage' => 'No hay espacio suficiente para almacenar las imágenes seleccionadas. Espacio de almacenamiento disponible: :available.', ], 'fields' => [ 'created_by' => 'Subida por', diff --git a/lang/es/campaigns/import.php b/lang/es/campaigns/import.php new file mode 100644 index 0000000000..b6fd4a4b6b --- /dev/null +++ b/lang/es/campaigns/import.php @@ -0,0 +1,20 @@ + [ + 'import' => 'Subir la exportación', + ], + 'description' => 'Importa las entidades, entradas, atributos, la galería y otros elementos de una exportación de campaña a esta campaña. Esto ocurre en el backend y puede llevar un rato, así que tómate un café. Tú y los otros administradores de campaña serán notificados cuando el proceso de importación haya terminado.', + 'fields' => [ + 'file' => 'Exportar archivo ZIP', + 'updated' => 'Última actualización', + ], + 'limitation' => 'Sólo se aceptan archivos zip. :size máximo.', + 'status' => [ + 'failed' => 'Fallida', + 'finished' => 'Terminada', + 'queued' => 'En cola', + 'running' => 'Ejecutándose', + ], + 'title' => 'Importar', +]; diff --git a/lang/es/campaigns/vanity.php b/lang/es/campaigns/vanity.php new file mode 100644 index 0000000000..d63a472b3a --- /dev/null +++ b/lang/es/campaigns/vanity.php @@ -0,0 +1,9 @@ + '¡El nombre :vanity está disponible!', + 'helper' => 'Haz que la campaña destaque con un nombre único en la URL. Por ejemplo, en lugar de aparecer como :default, haz que la URL de cada página de la campaña aparezca como :example. Este campo sólo se puede configurar una vez y es permanente. Obtenga más información sobre esta función en nuestra sección :learn-more.', + 'rule' => 'El campo :field necesita al menos un carácter alfabético.', + 'rule2' => 'El campo :field no permite el siguiente carácter: /.', + 'set' => 'La URL de vanidad de la campaña se ha establecido permanentemente como :vanity.', +]; diff --git a/lang/es/confirm/editing.php b/lang/es/confirm/editing.php new file mode 100644 index 0000000000..4106b694bb --- /dev/null +++ b/lang/es/confirm/editing.php @@ -0,0 +1,10 @@ + 'Regresar', + 'description' => 'Parece que otra persona está editando esta página. ¿Quieres regresar o ignorar esta advertencia, con el riesgo de perder datos?', + 'ignore' => 'Editar de todos modos', + 'members' => 'Miembros editando esta página:', + 'title' => 'Advertencia', + 'user' => ':user desde :since', +]; diff --git a/lang/es/entities/notes.php b/lang/es/entities/notes.php index c89c2a0ead..de3d341067 100644 --- a/lang/es/entities/notes.php +++ b/lang/es/entities/notes.php @@ -44,6 +44,15 @@ 'index' => [ 'title' => 'Posts de :name', ], + 'move' => [ + 'copy' => 'Conserva una copia del post en la entidad actual.', + 'copy_success' => 'Post :name movido a :entity exitosamente.', + 'copy_title' => 'Guarda una copia', + 'description' => 'Selecciona una entidad a la que mover este mensaje', + 'entity' => 'Entidad objetivo', + 'move' => 'Mover a otra entidad', + 'move_success' => 'Post :name movido a :entity con éxito.', + ], 'placeholders' => [ 'name' => 'Nombre del post, observación...', ], @@ -51,4 +60,8 @@ 'advanced' => 'Permisos avanzados', 'title' => 'Post :name de :entity', ], + 'states' => [ + 'collapsed' => 'Colapsado', + 'expanded' => 'Expandido', + ], ]; diff --git a/lang/es/entities/relations.php b/lang/es/entities/relations.php index 4cfcce1edb..4e60c79220 100644 --- a/lang/es/entities/relations.php +++ b/lang/es/entities/relations.php @@ -7,6 +7,16 @@ ], 'bulk' => [ 'delete' => '{1} Se ha eliminado :count relación.|[2,*] Se han eliminado :count relaciones.', + 'fields' => [ + 'delete_mirrored' => 'Borrar duplicado', + 'unmirror' => 'Desenlazar duplicado', + 'update_mirrored' => 'Actualizar duplicado', + ], + 'helpers' => [ + 'delete_mirrored' => 'Elimina también las conexiones duplicadas.', + 'unmirror' => 'Desenlazar conexiones duplicadas.', + 'update_mirrored' => 'Actualizar las conexiones duplicadas.', + ], 'success' => [ 'editing' => '{1} Se ha actualizado :count relación.|[2,*] Se han actualizado :count relaciones.', 'editing_partial' => '{1} Se ha eliminado :count/:total relación.|[2,*] Se han eliminado :count/:total relaciones.', @@ -20,8 +30,9 @@ 'timeline_element' => 'Elemento de una línea de tiempo', ], 'create' => [ - 'new_title' => 'Nueva relación', - 'title' => 'Nueva relación para :name', + 'new_title' => 'Nueva relación', + 'success_bulk' => '{1} Se ha añadido :count conexión a :entity.|[2,*] Se han añadido :count conexiones a :entity.', + 'title' => 'Nueva relación para :name', ], 'delete_mirrored' => [ 'helper' => 'Esta conexión se refleja en la entidad de destino. Seleccione esta opción para eliminar también la conexión duplicada.', @@ -34,6 +45,7 @@ 'fields' => [ 'attitude' => 'Actitud', 'connection' => 'Conexión', + 'is_pinned' => 'Fijado', 'owner' => 'Fuente', 'relation' => 'Relación', 'target' => 'Objetivo', @@ -41,6 +53,10 @@ 'two_way' => 'Reflejar relación', 'unmirror' => 'Desenlaza esta conexión.', ], + 'filters' => [ + 'connection' => 'Relación de conexión', + 'name' => 'Objetivo de la conexión', + ], 'helper' => 'Crea relaciones entre entidades y configura su actitud y visibilidad. Las relaciones también se pueden fijar al menú de la entidad.', 'helpers' => [ 'no_relations' => 'Esta entidad no tiene actualmente ninguna conexión con otras entidades de la campaña.', diff --git a/lang/es/footer.php b/lang/es/footer.php index 6254cfb5db..95bcfe3a2c 100644 --- a/lang/es/footer.php +++ b/lang/es/footer.php @@ -1,17 +1,28 @@ 'Acerca de nosotros', 'blog' => 'Blog', 'boosters' => 'Potenciadores', + 'community' => 'Comunidad', 'company' => 'Empresa', + 'contact' => 'Contacto', + 'copyright' => 'Copyright :copy :year Owlchester SNC', + 'documentation' => 'Documentación', + 'features' => 'Características', + 'kb' => 'Base de conocimientos', 'language-switcher' => [ 'other' => 'Otros idiomas', 'title' => 'Selecciona tu idioma', ], + 'marketplace' => 'Mercado', + 'newsletter' => 'Boletín de noticias', 'platform' => 'Plataforma', 'premium' => 'Campañas Premium', 'press-kit' => 'Kit de prensa', + 'pricing' => 'Precios', 'privacy' => 'Privacidad', + 'public-campaigns' => 'Campañas públicas', 'resources' => 'Recursos', 'security' => 'Seguridad', 'server_time' => 'Hora del servidor: :time', diff --git a/lang/es/settings.php b/lang/es/settings.php index 3aa7aaf451..5be172f050 100644 --- a/lang/es/settings.php +++ b/lang/es/settings.php @@ -2,6 +2,23 @@ return [ 'account' => [ + '2fa' => [ + 'actions' => [ + 'disable' => 'Deshabilitar la autenticación de dos factores', + 'finish' => 'Finalizar la configuración e iniciar sesión', + ], + 'activation_helper' => 'Para terminar de configurar la autenticación de dos factores de tu cuenta, sigue estas instrucciones.', + 'disable' => [ + 'helper' => 'Si quieres desactivar la autenticación de dos factores, haz clic en el botón de abajo. Ten en cuenta que esto dejará tu cuenta vulnerable a cualquiera que conozca tus datos de acceso.', + 'title' => 'Deshabilitar la autenticación de dos factores', + ], + 'enable_instructions' => 'Para iniciar el proceso de activación, genera tu código QR de autenticación y escanéalo en la aplicación Google Authenticator (:ios, :android) u otra aplicación de autenticación similar.', + 'enabled' => 'La autenticación de dos factores está actualmente activada en su cuenta.', + 'error_enable' => 'Código inválido, inténtalo de nuevo', + 'fields' => [ + 'otp' => 'Introduce la contraseña de un solo uso (OTP) proporcionada por la aplicación de autenticación.', + ], + ], 'actions' => [ 'social' => 'Cambiar a inicio de sesión en Kanka', 'update_email' => 'Actualizar email', diff --git a/lang/es/settings/premium.php b/lang/es/settings/premium.php new file mode 100644 index 0000000000..c6b8bb047a --- /dev/null +++ b/lang/es/settings/premium.php @@ -0,0 +1,21 @@ + [ + 'remove' => 'Remover premium', + 'unlock' => 'Convertirse en Premium', + ], + 'create' => [ + 'actions' => [ + 'confirm' => '¡Convertirse en premium!', + ], + 'confirm' => '¡Qué emocionante! Estás a punto de desbloquear funciones premium para :campaign. Esto utilizará una de tus campañas premium disponibles.', + 'duration' => 'Las campañas Premium permanecen así hasta que lo retires manualmente, o cuando finalice tu suscripción.', + 'pitch' => 'Conviertete en suscriptor para desbloquear campañas premium.', + 'success' => 'La campaña :campaign ahora es premium. ¡Disfruta de todas las nuevas e increíbles funciones!', + ], + 'exceptions' => [ + 'already' => 'Ya se han desbloqueado las funciones Premium para esta campaña.', + 'out-of-stock' => 'No tienes suficientes campañas premium disponibles para activar esta campaña. Elimina el estado premium de otra campaña o :upgrade.', + ], +]; diff --git a/lang/es/timelines/elements.php b/lang/es/timelines/elements.php index 1880f8128c..837c8d0782 100644 --- a/lang/es/timelines/elements.php +++ b/lang/es/timelines/elements.php @@ -1,6 +1,10 @@ [ + 'copy_with_name' => 'Copiar mención avanzada con el nombre del elemento', + 'success' => 'Mención avanzada al elemento copiado en el portapapeles.', + ], 'create' => [ 'success' => 'Elemento añadido a la línea de tiempo.', 'title' => 'Nuevo elemento cronológico', @@ -13,13 +17,17 @@ 'title' => 'Editar elemento cronológico', ], 'fields' => [ - 'date' => 'Fecha', - 'era' => 'Era', - 'icon' => 'Icono', + 'date' => 'Fecha', + 'era' => 'Era', + 'icon' => 'Icono', + 'use_entity_entry' => 'Muestra la información de la entidad adjunta a continuación. El texto de este elemento se mostrará primero si está presente.', + 'use_event_date' => 'Utiliza la fecha del evento vinculado.', ], 'helpers' => [ + 'date' => 'Si el elemento está vinculado a una entidad evento, muestra la fecha del evento.', 'entity_is_private' => 'La entidad de este elemento es privada.', 'icon' => 'Copia el HTML de un icono de :fontawesome o :rpgawesome.', + 'is_collapsed' => 'El elemento se muestra colapsado por defecto.', ], 'placeholders' => [ 'date' => '22 de marzo, 1332-1337...', diff --git a/lang/es/users/profile.php b/lang/es/users/profile.php new file mode 100644 index 0000000000..0c091576b3 --- /dev/null +++ b/lang/es/users/profile.php @@ -0,0 +1,19 @@ + [ + 'wordsmith' => 'Un verdadero artífice de la palabra. Ganador de un concurso de worldbuilding.', + ], + 'fields' => [ + 'achievements' => 'Logros', + 'banned' => 'Este usuario ha sido baneado', + 'entities_created' => 'Entidades creadas :help :count', + 'member_since' => 'Miembro desde :date', + 'public_campaigns' => 'Campañas públicas', + 'subscriber_since' => 'Suscriptor desde :date', + ], + 'helpers' => [ + 'entities_created' => 'Este valor se recalcula cada día.', + ], + 'title' => 'Perfil de :name', +]; diff --git a/lang/fr/campaigns.php b/lang/fr/campaigns.php index 83929dae80..c9dc359aa8 100644 --- a/lang/fr/campaigns.php +++ b/lang/fr/campaigns.php @@ -58,6 +58,7 @@ 'genre' => 'Genre(s)', 'header_image' => 'Image de fond pour le tableau de bord', 'image' => 'Image', + 'is_discreet' => 'Discrète', 'locale' => 'Langue', 'name' => 'Nom', 'nested' => 'Afficher les listes d\'entités de manière imbriquée par défaut', @@ -68,7 +69,6 @@ 'public' => 'Visibilité de la campagne', 'public_campaign_filters' => 'Filtres pour les campagnes publiques', 'related_visibility' => 'Visibilité des éléments liés', - 'rpg_system' => 'Système RPG', 'superboosted' => 'Superboosté par', 'system' => 'Système', 'theme' => 'Thème', @@ -87,6 +87,8 @@ 'header_image' => 'Image affichée en arrière-plan de l\'en-tête de campagne sur le tableau de bord.', 'hide_history' => 'Activer cette option pour cacher l\'historique d\'une entité aux membres qui ne sont pas dans le groupe admin de la campagne.', 'hide_members' => 'Activer cette option pour cacher la liste des membres de la campagne aux membres qui ne sont pas dans le groupe admin de celle-ci.', + 'is_discreet' => 'Si activé lorsque la campagne est publique, celle-ci ne sera pas affichée dans les :public-campaigns.', + 'is_discreet_locked' => 'Les campagnes premiums peuvent être visible publiquement mais ne pas être affichées dans les :public-campaigns.', 'locale' => 'La langue dans laquelle la campagne est écrite. Ceci est utilisé pour générer du contenu ainsi que pour grouper les campagnes publiques.', 'name' => 'Le nom de la campagne doit contenir au minimum 4 caractères.', 'no_entry' => 'La campagne n\'a pas encore de description! Corrigeons cela.', @@ -454,7 +456,6 @@ 'connections_mode' => 'Mode par défaut d\'outil de visualisation de relation', 'entity_history' => 'Historique d\'une entité', 'entity_image' => 'Image d\'une entité', - 'family_toolip' => 'Famille d\'un personnage', 'member_list' => 'Liste des membres de la campagne', 'nested' => 'Listes d\'entités', 'post_collapsed' => 'Affichage par défaut de nouvelle entrées', diff --git a/lang/fr/creatures.php b/lang/fr/creatures.php index e5b023fafb..8439c39f0f 100644 --- a/lang/fr/creatures.php +++ b/lang/fr/creatures.php @@ -5,10 +5,15 @@ 'title' => 'Nouvelle créature', ], 'creatures' => [], - 'fields' => [], + 'fields' => [ + 'is_extinct' => 'Éteinte', + ], 'helpers' => [ 'nested_without' => 'Affichage de toutes les créatures qui n\'ont pas de créature parent. Clique sur une rangée pour voir les créatures enfants.', ], + 'hints' => [ + 'is_extinct' => 'Cette créature est éteinte', + ], 'placeholders' => [ 'type' => 'Herbivore, aquatique, mythique', ], diff --git a/lang/fr/footer.php b/lang/fr/footer.php index 9bfb518e08..9682061870 100644 --- a/lang/fr/footer.php +++ b/lang/fr/footer.php @@ -24,6 +24,7 @@ 'privacy' => 'Confidentialité', 'public-campaigns' => 'Campagnes publiques', 'resources' => 'Ressources', + 'roadmap' => 'Feuille de route', 'security' => 'Sécurité', 'server_time' => 'Heure du serveur: :time', 'status' => 'Status de service', diff --git a/lang/fr/notifications.php b/lang/fr/notifications.php index 38d1c0474d..e089d57332 100644 --- a/lang/fr/notifications.php +++ b/lang/fr/notifications.php @@ -48,6 +48,10 @@ 'success' => 'Notifications supprimées.', 'title' => 'Vider les notifications', ], + 'features' => [ + 'approved' => 'Ton idée :feature a été acceptée.', + 'rejected' => 'Ton idée :feature a été rejetée, raison: :reason.', + ], 'header' => ':count notifications', 'index' => [ 'title' => 'Notifications', diff --git a/lang/fr/tiers.php b/lang/fr/tiers.php index 61810baad6..ed0e7c3ba3 100644 --- a/lang/fr/tiers.php +++ b/lang/fr/tiers.php @@ -3,6 +3,7 @@ return [ 'actions' => [ 'subscribe' => [ + 'choose' => 'Choisir :tier', 'monthly' => ':tier mensuel', 'yearly' => ':tier annuel', ], @@ -23,12 +24,15 @@ 'vote_influence' => 'Influence sur les votes communautaires', ], 'periods' => [ - 'monthly' => 'Mensuel', - 'yearly' => 'Annuel', + 'billed_monthly' => 'facturé mensuellement', + 'billed_yearly' => 'facturé annuellement', + 'monthly' => 'Mensuel', + 'yearly' => 'Annuel', ], 'pricing' => ':currency :amount / mois', 'ribbons' => [ 'best-value' => 'Meilleure valeur', + 'current' => 'Abonnement actuel', 'popular' => 'Populaire', ], 'toggle' => [ diff --git a/lang/gl/campaigns.php b/lang/gl/campaigns.php index 0e900fe048..232d1eb5e8 100644 --- a/lang/gl/campaigns.php +++ b/lang/gl/campaigns.php @@ -65,7 +65,6 @@ 'public' => 'Visibilidade da campaña', 'public_campaign_filters' => 'Filtros de campañas públicas', 'related_visibility' => 'Visibilidade de elementos relacionados', - 'rpg_system' => 'Sistemas RPG', 'superboosted' => 'Superpotenciada por', 'system' => 'Sistema', 'theme' => 'Tema', @@ -415,7 +414,6 @@ 'connections_mode' => 'Modo por defecto do explorador de relacións', 'entity_history' => 'Historial de cambios da entidade', 'entity_image' => 'Imaxe da entidade', - 'family_toolip' => 'Familia da personaxe', 'member_list' => 'Lista de integrantes da campaña', 'nested' => 'Disposición por defecto das listas', 'post_collapsed' => 'Valor de colapsada/expandida por defecto das novas entradas.', diff --git a/lang/hr/campaigns.php b/lang/hr/campaigns.php index 9c44764ca5..09875bcc44 100644 --- a/lang/hr/campaigns.php +++ b/lang/hr/campaigns.php @@ -51,7 +51,6 @@ 'open' => 'Otvoreno za prijave', 'public_campaign_filters' => 'Filteri javnih kampanja', 'related_visibility' => 'Vidljivost povezanih elemenata', - 'rpg_system' => 'Sustav igranja', 'superboosted' => 'Super pojačali', 'system' => 'Sustav', 'theme' => 'Tema', diff --git a/lang/hu/campaigns.php b/lang/hu/campaigns.php index 66bf1687fd..f8b1433327 100644 --- a/lang/hu/campaigns.php +++ b/lang/hu/campaigns.php @@ -53,7 +53,6 @@ 'open' => 'Megnyitás az alkalmazások számára', 'public_campaign_filters' => 'Publikus kampány szűrők', 'related_visibility' => 'Kapcsolódó elemek láthatósága', - 'rpg_system' => 'Szerepjáték rendszerek', 'superboosted' => 'Szupererősítette', 'system' => 'Rendszer', 'theme' => 'Téma', diff --git a/lang/it/campaigns.php b/lang/it/campaigns.php index ab4da50d49..24a9df6e5b 100644 --- a/lang/it/campaigns.php +++ b/lang/it/campaigns.php @@ -67,7 +67,6 @@ 'public' => 'Visibilità della campagna', 'public_campaign_filters' => 'Filtri Campagna Pubblica', 'related_visibility' => 'Visibilità degli Elementi Correlati', - 'rpg_system' => 'Sistema RPG', 'superboosted' => 'Superpotenziato da', 'system' => 'Sistema', 'theme' => 'Tema', @@ -433,7 +432,6 @@ 'connections_mode' => 'Modalità Esploratore di Relazioni predefinita', 'entity_history' => 'Cronologia dell\'entità', 'entity_image' => 'Immagine dell\'entità', - 'family_toolip' => 'Famiglia del personaggio', 'member_list' => 'Lista dei membri della campagna', 'nested' => 'Disposizione predefinita degli elenchi', 'post_collapsed' => 'Valore predefinito del nuovo post ripiegato', diff --git a/lang/nl/campaigns.php b/lang/nl/campaigns.php index dc74678127..0e3f45f1a1 100644 --- a/lang/nl/campaigns.php +++ b/lang/nl/campaigns.php @@ -51,7 +51,6 @@ 'open' => 'Open voor sollicitaties', 'public_campaign_filters' => 'Openbare Campaign Filters', 'related_visibility' => 'Gerelateerde Elementen Zichtbaarheid', - 'rpg_system' => 'RPG Systemen', 'superboosted' => 'Superboosted door', 'system' => 'Systeem', 'theme' => 'Thema', diff --git a/lang/pl/campaigns.php b/lang/pl/campaigns.php index 2010498bda..3e982b7b70 100644 --- a/lang/pl/campaigns.php +++ b/lang/pl/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Widoczność kampanii', 'public_campaign_filters' => 'Filtry kampanii publicznych', 'related_visibility' => 'Widoczność powiązanych elementów', - 'rpg_system' => 'Systemy RPG', 'superboosted' => 'Turbodoładowana przez', 'system' => 'System', 'theme' => 'Motyw', @@ -296,6 +295,11 @@ 'delete' => 'Usuwanie', 'edit' => 'Edytowanie', 'entity-note' => 'Komentowanie', + 'gallery' => [ + 'browse' => 'Przeglądanie', + 'manage' => 'Pełna kontrola', + 'upload' => 'Dodawanie', + ], 'manage' => 'Zarządzaj', 'members' => 'Uczestnicy', 'permission' => 'Uprawnienia', @@ -308,6 +312,11 @@ 'delete' => 'Pozwala usuwać elementy danego rodzaju.', 'edit' => 'Pozwala modyfikować elementy danego rodzaju.', 'entity_note' => 'Pozwala uczestnikom nie posiadającym praw edycji dodawać komentarze do elementów kampanii.', + 'gallery' => [ + 'browse' => 'Pozwala przeglądać galerię i dodawać znajdujące się w niej orazy do elementów.', + 'manage' => 'Pozwala wykonywać wszystkie działania w galerii, w tym edytować i usuwać obrazy.', + 'upload' => 'Pozwala dodawać obrazy do galerii. Jeżeli uczestnik nie posiada też uprawnień do przeglądania, będzie widzieć tylko obrazy dodane samodzielnie.', + ], 'manage' => 'Pozwala edytować kampanię jakby uczestnik był administratorem, ale nie daje uprawnień by ją usunąć.', 'members' => 'Pozwala zapraszać nowych uczestników kampanii.', 'permission' => 'Pozwala zarządzać uprawnieniami tych elementów danego typu, które uczestnik może też edytować.', @@ -406,8 +415,10 @@ 'applications' => 'Zgłoszenia', 'campaign' => 'Kampania', 'customisation' => 'Dostosowanie', + 'data' => 'Dane', 'default-images' => 'Domyślne ikony', 'export' => 'Eksport', + 'import' => 'Import', 'information' => 'Informacja', 'management' => 'Zarządzanie', 'members' => 'Uczestnicy', @@ -442,7 +453,6 @@ 'connections_mode' => 'Domyślny tryb wyświetlania relacji', 'entity_history' => 'Historia edycji elementu', 'entity_image' => 'Ilustracja elementu', - 'family_toolip' => 'Rodzina postaci', 'member_list' => 'Lista uczestników kampanii', 'nested' => 'Domyślny układ list', 'post_collapsed' => 'Domyślny sposób prezentowana komentarzy', diff --git a/lang/pl/campaigns/import.php b/lang/pl/campaigns/import.php new file mode 100644 index 0000000000..9f1bcfab5f --- /dev/null +++ b/lang/pl/campaigns/import.php @@ -0,0 +1,20 @@ + [ + 'import' => 'Załaduj wyeksportowane', + ], + 'description' => 'Importuje elementy, wpisy, cechy, galerię i inne elementy wyeksportowanej kampanii do innej kampanii. Proces działa w tle i zajmuje dobrą chwilę, więc przygotuj sobie kawę. Gdy się zakończy, ty i pozostali administratorzy zostaniecie o tum powiadomieni.', + 'fields' => [ + 'file' => 'Eksportuj plik ZIP', + 'updated' => 'Ostatnio zmienione', + ], + 'limitation' => 'Dozwolone są tylko pliki zip do rozmiaru :size.', + 'status' => [ + 'failed' => 'Niepowodzenie', + 'finished' => 'Zakończono', + 'queued' => 'W kolejce', + 'running' => 'W toku', + ], + 'title' => 'Import', +]; diff --git a/lang/pl/campaigns/vanity.php b/lang/pl/campaigns/vanity.php index e1629bc2b9..1d6f086e81 100644 --- a/lang/pl/campaigns/vanity.php +++ b/lang/pl/campaigns/vanity.php @@ -4,5 +4,6 @@ 'available' => 'Nazwa :vanity jest dostępna!', 'helper' => 'Wyróżnij swoją kampanię za pomocą unikatowej nazwy i URL. Na przykład: zamiast zapisu :default każda strona kampanii może mieć adres url :example. To pole można wypełnić tylko raz, na stałe. Więcej informacji o tej funkcji znajdziesz w :learn-more.', 'rule' => 'W polu :field należy umieścić przynajmniej jedną literę alfabetu.', + 'rule2' => 'W polu :field nie można umieścić znaku /.', 'set' => 'Specjalny URL kampanii ustawiono trwale jako :vanity.', ]; diff --git a/lang/pl/entities/abilities.php b/lang/pl/entities/abilities.php index 0b58cf6e92..631f44c545 100644 --- a/lang/pl/entities/abilities.php +++ b/lang/pl/entities/abilities.php @@ -36,6 +36,7 @@ 'title' => 'Zdolności elementu :name', ], 'update' => [ - 'title' => 'Zdolność elementu :name', + 'success' => 'Zmieniono zdolność :ability elementu.', + 'title' => 'Zdolność elementu :name', ], ]; diff --git a/lang/pl/entities/relations.php b/lang/pl/entities/relations.php index da22e3d779..532c0aead3 100644 --- a/lang/pl/entities/relations.php +++ b/lang/pl/entities/relations.php @@ -30,8 +30,9 @@ 'timeline_element' => 'Część historii', ], 'create' => [ - 'new_title' => 'Nowa relacja', - 'title' => 'Nowa relacja elementu :name.', + 'new_title' => 'Nowa relacja', + 'success_bulk' => '{1} Dodano :count relacji do :entity.|[2,4] Dodano :count relacje do :entity.|[5,*] Dodano :count relacji do :entity.', + 'title' => 'Nowa relacja elementu :name.', ], 'delete_mirrored' => [ 'helper' => 'Te elementy łączy relacja obustronna. Wybór tej opcji usunie obydwie strony relacji.', @@ -52,6 +53,10 @@ 'two_way' => 'Stwórz relację obustronną', 'unmirror' => 'Zmień w relację jednostronną', ], + 'filters' => [ + 'connection' => 'Rodzaj relacji', + 'name' => 'Cel relacji', + ], 'helper' => 'Ustalaj relacje między elementami, określając ich rodzaj i widoczność. Relacje można przypinać do opisu elementów.', 'helpers' => [ 'no_relations' => 'Element nie jest obecnie związany z żadnym innym elementem tej kampanii.', diff --git a/lang/pl/maps/markers.php b/lang/pl/maps/markers.php index 465465fe34..b8fe1c35f1 100644 --- a/lang/pl/maps/markers.php +++ b/lang/pl/maps/markers.php @@ -51,6 +51,7 @@ 'stroke-opacity' => 'Przejrzystość konturu', 'stroke-width' => 'Szerokość konturu', ], + 'popupless' => 'Wyświetlanie dymków', 'size' => 'Rozmiar', ], 'helpers' => [ @@ -60,6 +61,7 @@ 'custom_icon_v2' => 'Używaj ikon z :fontawesome, :rpgawesome, albo własnych plików SVG. Więcej instrukcji znajdziesz tutaj: :docs.', 'custom_radius' => 'Wybierz opcję z rozwijanej listy by określić wielkość.', 'draggable' => 'Pozwala przeciągać znacznik po mapie w trybie eksploracji.', + 'is_popupless' => 'Wyłącza wyświetlanie dymków z opisem po najechaniu na element kursorem.', 'label' => 'Wyświetla na mapie test zawierający nazwę tego znacznika albo elementu, z którym jest związany.', 'polygon' => [ 'edit' => 'Modyfikuj wielokąt przeciągając ścianki i kąty.', diff --git a/lang/pl/tags.php b/lang/pl/tags.php index 0bc60c8344..e5ce505791 100644 --- a/lang/pl/tags.php +++ b/lang/pl/tags.php @@ -5,6 +5,10 @@ 'actions' => [ 'add' => 'Dodaj nową etykietę', ], + 'create' => [ + 'attach_success' => '{1} Dodano etykietę :name :count elementowi.|[2,*] Dodano etykietę :name :count elementom.', + 'modal_title' => 'Dodaj elementy do :name', + ], ], 'create' => [ 'title' => 'Nowa etykieta', diff --git a/lang/pt-BR/campaigns.php b/lang/pt-BR/campaigns.php index 5d96d2d5d2..551359e997 100644 --- a/lang/pt-BR/campaigns.php +++ b/lang/pt-BR/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Visibilidade da campanha', 'public_campaign_filters' => 'Filtros de Campanhas Públicas', 'related_visibility' => 'Visibilidade dos Elementos Relacionados', - 'rpg_system' => 'SIstemas de RPG', 'superboosted' => 'Super-impulsionada por', 'system' => 'Sistema', 'theme' => 'Tema', @@ -454,7 +453,6 @@ 'connections_mode' => 'Modo explorador de relações padrão', 'entity_history' => 'Registro de histórico da entidade', 'entity_image' => 'Imagem da entidade', - 'family_toolip' => 'Família do personagem', 'member_list' => 'Lista de membros da campanha', 'nested' => 'Layout padrão de listas', 'post_collapsed' => 'Valor padrão do campo recolhido de um novo post', diff --git a/lang/ru/campaigns.php b/lang/ru/campaigns.php index 161e5c20f0..c6b7b738e3 100644 --- a/lang/ru/campaigns.php +++ b/lang/ru/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Доступность кампании', 'public_campaign_filters' => 'Фильтры для публичной кампании', 'related_visibility' => 'Доступ элементов объектов', - 'rpg_system' => 'Ролевые системы', 'superboosted' => 'Супер-усиливает', 'system' => 'Система', 'theme' => 'Тема', @@ -431,7 +430,6 @@ 'connections_mode' => 'Вид карты связей', 'entity_history' => 'Журналы изменений объектов', 'entity_image' => 'Изображение объекта', - 'family_toolip' => 'Семьи персонажей', 'member_list' => 'Список участников кампании', 'nested' => 'Вид списков', 'post_collapsed' => 'Вид новых постов', diff --git a/lang/sk/abilities.php b/lang/sk/abilities.php index 4690c5e72d..283212f658 100644 --- a/lang/sk/abilities.php +++ b/lang/sk/abilities.php @@ -3,6 +3,13 @@ return [ 'abilities' => [], 'children' => [ + 'actions' => [ + 'attach' => 'Pripojiť k objektom', + ], + 'create' => [ + 'attach_success' => '{1} Schopnosť :name bola pripojená k :count objektu.|[2,*] Schopnosť :name bola priradená ku :count objektom.', + 'modal' => 'Pripojiť :name k objektom', + ], 'description' => 'Objekty s touto schopnosťou', 'title' => 'Objekty schopnosti :name', ], diff --git a/lang/sk/calendars.php b/lang/sk/calendars.php index 0d7627d6a1..41df800301 100644 --- a/lang/sk/calendars.php +++ b/lang/sk/calendars.php @@ -92,6 +92,7 @@ 'recurring_until' => 'Opakujúce sa do roku', 'reset' => 'Týždenný reset', 'seasons' => 'Ročné obdobia', + 'show_birthdays' => 'Zobraziť narodeniny', 'skip_year_zero' => 'Preskočiť Rok Nula', 'start_offset' => 'Posun prvého dňa', 'suffix' => 'Prípona', @@ -118,6 +119,7 @@ 'parent_calendar' => 'Ak kalendáru priradíš nadradený kalendár, priradíš mu aj pripomienky a efekty počasia z tohto nadradeného kalendáru.', 'reset' => 'Začiatok mesiaca alebo roku začína stále na prvom dni týždňa.', 'seasons' => 'Vytvor v tvojom kalendári ročné obdobia tým, že označíš, kedy sa začínajú. O ostatné sa už postará Kanka.', + 'show_birthdays' => 'Zobrazí ročne narodeniny postáv, ktoré majú pripomenutie o narodeninách až po ich dátum smrti.', 'skip_year_zero' => 'Štandardne je prvý rok kalendára nultým rokom. Aktivovaním tohto nastavenia tento preskočíš.', 'weekdays' => 'Nastav názvy tvojich dní v týždni. Podmienkou je pridanie min. 2 dní v týždni.', 'weeks' => 'Definuj názvy pre najdôležitejšie týždne v tvojom kalendári.', diff --git a/lang/sk/campaigns.php b/lang/sk/campaigns.php index 1a6698147f..ef3dcf7c35 100644 --- a/lang/sk/campaigns.php +++ b/lang/sk/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Viditeľnosť kampane', 'public_campaign_filters' => 'Filter verejných kampaní', 'related_visibility' => 'Viditeľnosť príbuzných prvkov', - 'rpg_system' => 'RPG systémy', 'superboosted' => 'Superboostnutie od', 'system' => 'Systém', 'theme' => 'Téma', @@ -296,6 +295,11 @@ 'delete' => 'Odstrániť', 'edit' => 'Upraviť', 'entity-note' => 'Poznámky', + 'gallery' => [ + 'browse' => 'Prehľadávať', + 'manage' => 'Plná kontrola', + 'upload' => 'Nahrať', + ], 'manage' => 'Spravovať', 'members' => 'Členovia', 'permission' => 'Spravovať oprávnenia', @@ -308,6 +312,11 @@ 'delete' => 'Povolí odstránenia všetkých objektov tohto typu.', 'edit' => 'Povolí úpravy všetkých objektov tohto typu.', 'entity_note' => 'Povolí pridať a upravovať poznámky objektov, aj keď užívateľ nemôže editovať daný objekt.', + 'gallery' => [ + 'browse' => 'Povoliť zobrazenie galérie a nastavení obrázku objektu z galérie.', + 'manage' => 'Povoliť všetko v galérii podobne ako u adminov, vrátane úprav a mazania.', + 'upload' => 'Povoliť nahrávanie obrázkov do galérie. Zobrazovať sa budú iba obrázky, ktorá nahrali, ak nie sú nastavené ďalšie povolenia.', + ], 'manage' => 'Povolí úpravu kampane ako ju má admin kampane, no bez možnosti zmazať kampaň.', 'members' => 'Povolí zasielať pozvánky pre nových členov do kampane.', 'permission' => 'Povolí nastaviť oprávnenia na objektoch typu, ktoré môže upravovať.', @@ -406,8 +415,10 @@ 'applications' => 'Prihlášky', 'campaign' => 'Kampaň', 'customisation' => 'Úprava', + 'data' => 'Údaje', 'default-images' => 'Prednastavené obrázky', 'export' => 'Export', + 'import' => 'Import', 'information' => 'Informácie', 'management' => 'Manažment', 'members' => 'Členovia', @@ -442,7 +453,6 @@ 'connections_mode' => 'Štandardný mód prehliadača vzťahov', 'entity_history' => 'Protokol histórie objektu', 'entity_image' => 'Obrázok objektu', - 'family_toolip' => 'Rod postavy', 'member_list' => 'Zoznam členov kampane', 'nested' => 'Štandardné zobrazenie zoznamov', 'post_collapsed' => 'Štandardná nová hodnota zbalenej poznámky', diff --git a/lang/sk/campaigns/export.php b/lang/sk/campaigns/export.php index d7873a617a..283b8faa48 100644 --- a/lang/sk/campaigns/export.php +++ b/lang/sk/campaigns/export.php @@ -14,6 +14,7 @@ ], 'expired' => 'Link vypršal', 'helpers' => [], + 'progress' => 'Stav', 'size' => 'Veľkosť', 'status' => [ 'failed' => 'Neúspešné', diff --git a/lang/sk/campaigns/import.php b/lang/sk/campaigns/import.php new file mode 100644 index 0000000000..1b1d59b51e --- /dev/null +++ b/lang/sk/campaigns/import.php @@ -0,0 +1,20 @@ + [ + 'import' => 'Nahrať export', + ], + 'description' => 'Importuje objekty, poznámky, atribúty, galériu a ďalšie elementy exportovanej kampane do tejto kampane. Udeje sa to v pozadí a môže to trvať, takže si môžete uvariť zatiaľ čaj či kávu. Všetci admini budú upozornení o ukončení procesu importu.', + 'fields' => [ + 'file' => 'Exportovaný ZIP súbor', + 'updated' => 'Posledná aktulizácia', + ], + 'limitation' => 'Akceptované sú iba ZIP súbory. Max :size.', + 'status' => [ + 'failed' => 'Zlyhaný', + 'finished' => 'Ukončený', + 'queued' => 'V čakačke', + 'running' => 'Prebieha', + ], + 'title' => 'Import', +]; diff --git a/lang/sk/campaigns/vanity.php b/lang/sk/campaigns/vanity.php index 4c13205a64..bbffd9d4f8 100644 --- a/lang/sk/campaigns/vanity.php +++ b/lang/sk/campaigns/vanity.php @@ -4,5 +4,6 @@ 'available' => 'Meno :vanity je dostupné!', 'helper' => 'Označ kampaň jedinečne priamo v URL. Napr. namiesto zobrazenia ako :default, by sa každá stránka kampane zobrazovala ako :example. Toto pole je možné nastaviť iba raz, a to natrvalo. Viac informácií o tejto funkcionalite nájdeš v našej :learn-more.', 'rule' => 'Pole :field vyžaduje aspoň jeden abecedný znak.', + 'rule2' => 'Pole :field neumožňuje nasledujúce znaky: /.', 'set' => 'Skrátené URL kampane je trvalo nastavené na :vanity.', ]; diff --git a/lang/sk/entities/abilities.php b/lang/sk/entities/abilities.php index 21f28cdeb1..ae7156d309 100644 --- a/lang/sk/entities/abilities.php +++ b/lang/sk/entities/abilities.php @@ -36,6 +36,7 @@ 'title' => 'Schopnosti objektu :name', ], 'update' => [ - 'title' => 'Schopnosť objektu :name', + 'success' => 'Objektová schopnosť :ability bola aktualizovaná.', + 'title' => 'Schopnosť objektu :name', ], ]; diff --git a/lang/sk/entities/events.php b/lang/sk/entities/events.php index df59b6598e..9db21ccbad 100644 --- a/lang/sk/entities/events.php +++ b/lang/sk/entities/events.php @@ -17,6 +17,7 @@ ], 'types' => [ 'birth' => 'Narodenie', + 'birthday' => 'Narodeniny', 'death' => 'Smrť', 'founded' => 'Založenie', 'primary' => 'Primárny', diff --git a/lang/sk/entities/notes.php b/lang/sk/entities/notes.php index 3fef4ec477..68b7b2020b 100644 --- a/lang/sk/entities/notes.php +++ b/lang/sk/entities/notes.php @@ -47,6 +47,7 @@ 'move' => [ 'copy' => 'Vytvoriť kópiu v cieľovom objekte', 'copy_success' => 'Komentár :name úspešne skopírovaný do :entity.', + 'copy_title' => 'Ponechať kópiu', 'description' => 'Zvoľ objekt, do ktorého chceš premiestniť alebo kopírovať tento komentár.', 'entity' => 'Cieľový objekt', 'move' => 'Premiestniť alebo kopírovať do iného objektu', diff --git a/lang/sk/entities/relations.php b/lang/sk/entities/relations.php index 273343c31b..f57d8ab27d 100644 --- a/lang/sk/entities/relations.php +++ b/lang/sk/entities/relations.php @@ -30,8 +30,9 @@ 'timeline_element' => 'Prvok časovej osy', ], 'create' => [ - 'new_title' => 'Nový vzťah', - 'title' => 'Vytvoriť vzťah', + 'new_title' => 'Nový vzťah', + 'success_bulk' => '{1} Pridaný :count prepojenie k :entity.|[2,4] Pridané :count prepojenia k :entity.|[5,*] Pridaných :count prepojení k :entity.', + 'title' => 'Vytvoriť vzťah', ], 'delete_mirrored' => [ 'helper' => 'Tento vzťah sa zrkadlí na cieľovom objekte. Zvoľ túto možnosť, aby bol odstránený aj zrkadlený vzťah.', @@ -52,6 +53,10 @@ 'two_way' => 'Vytvoriť zrkadlenie vzťahu', 'unmirror' => 'Zrušiť zrkadlenie tohto vzťahu.', ], + 'filters' => [ + 'connection' => 'Vzťah prepojenia', + 'name' => 'Cieľ prepojenia', + ], 'helper' => 'Vytvor vzťahy medzi objektami s postojom a viditeľnosťou. Vzťahy môžu byť tiež pripnuté k menu objektu.', 'helpers' => [ 'no_relations' => 'Tento objekt nemá aktuálne žiadne vzťahy s inými objektami v kampani.', diff --git a/lang/sk/items.php b/lang/sk/items.php index c9b12d6449..62596dc9fe 100644 --- a/lang/sk/items.php +++ b/lang/sk/items.php @@ -7,9 +7,10 @@ 'destroy' => [], 'edit' => [], 'fields' => [ - 'character' => 'Postava', - 'price' => 'Cena', - 'size' => 'Veľkosť', + 'character' => 'Postava', + 'is_equipped' => 'Vo vybavení', + 'price' => 'Cena', + 'size' => 'Veľkosť', ], 'helpers' => [ 'nested_without' => 'Zobrazujú sa všetky predmety bez nadradeného predmetu. Kliknutím na riadok sa zobrazia podradené predmety.', diff --git a/lang/sk/maps/explore.php b/lang/sk/maps/explore.php index 7d8eac7197..9cbbbb33c9 100644 --- a/lang/sk/maps/explore.php +++ b/lang/sk/maps/explore.php @@ -9,4 +9,5 @@ 'notifications' => [ 'start-drawing' => 'Klikni na mapu, ak chceš začať kresliť mnohouholník', ], + 'toggle' => 'Otvoriť/zatvoriť všetky skupiny', ]; diff --git a/lang/sk/maps/markers.php b/lang/sk/maps/markers.php index b56cbc1ad6..0de9823dcd 100644 --- a/lang/sk/maps/markers.php +++ b/lang/sk/maps/markers.php @@ -51,6 +51,7 @@ 'stroke-opacity' => 'Nepriehľadnosť ťahu', 'stroke-width' => 'Hrúbka ťahu', ], + 'popupless' => 'Bublina náhľadu', 'size' => 'Veľkosť', ], 'helpers' => [ @@ -60,6 +61,7 @@ 'custom_icon_v2' => 'Použi symboly z :fontawesome, :rpgawesome alebo vlastný SVG symbol. Zisti, ako na to v :docs.', 'custom_radius' => 'Vyber si vlastnú veľkosť z možností v menu, ak chceš definovať veľkosť.', 'draggable' => 'Aktivovaním umožníš premiestnenie značky v Prieskumníkovi.', + 'is_popupless' => 'Zruší zobrazenie bubliny s náhľadom pri umiestnení kurzoru myši nad značkou.', 'label' => 'Popis sa zobrazuje ako odsek textu na mape. Jeho obsah bude názov značky daného objektu.', 'polygon' => [ 'edit' => 'Klikni na mapu, ak chceš pridať danú pozíciu medzi koordináty viacuholníka.', diff --git a/lang/sk/notifications.php b/lang/sk/notifications.php index d7eee4f8c5..a6025772db 100644 --- a/lang/sk/notifications.php +++ b/lang/sk/notifications.php @@ -20,6 +20,10 @@ 'export' => 'Export kampane je dostupný. Link je platný po dobu :time minút.', 'export_error' => 'Počas exportu tvojej kampane došlo k chybe. Prosím, kontaktuj nás, ak problém pretrváva.', 'hidden' => 'Kampaň :campaign je teraz skrytá a nezobrazuje sa na stránke verejných kampaní.', + 'import' => [ + 'failed' => 'Import kampane :campaign zlyhal.', + 'success' => 'Import kampane :campaign skončil.', + ], 'join' => ':user pristúpil do kampane :campaign.', 'leave' => ':user opustil kampaň :campaign.', 'plugin' => [ diff --git a/lang/sk/tags.php b/lang/sk/tags.php index 402e650115..4f40a10823 100644 --- a/lang/sk/tags.php +++ b/lang/sk/tags.php @@ -5,6 +5,10 @@ 'actions' => [ 'add' => 'Pridať novú kategóriu', ], + 'create' => [ + 'attach_success' => '{1} :count objekt pridaný do kategórie :name.|[2,4] :count objekty pridané do kategórie :name.|[5,*] :count objektov pridaných do kategórie :name.', + 'modal_title' => 'Pridať objekty k :name.', + ], ], 'create' => [ 'title' => 'Nová kategória', diff --git a/lang/uk/campaigns.php b/lang/uk/campaigns.php index a35f6a06e5..944bb8ab0d 100644 --- a/lang/uk/campaigns.php +++ b/lang/uk/campaigns.php @@ -65,7 +65,6 @@ 'public' => 'Видимість кампанії', 'public_campaign_filters' => 'Публічні фільтри кампанії', 'related_visibility' => 'Видимість пов\'язаних елементів', - 'rpg_system' => 'Системи НРІ', 'superboosted' => 'Суперпідсилена', 'system' => 'Система', 'theme' => 'Тема', @@ -428,7 +427,6 @@ 'connections_mode' => 'Режим дослідника зв\'язків за замовчуванням', 'entity_history' => 'Логи сутності', 'entity_image' => 'Зображення сутності', - 'family_toolip' => 'Родина персонажа', 'member_list' => 'Список учасників кампейну', 'nested' => 'Список шаблонів за замовчанням', 'post_collapsed' => 'Значення нового запису за замовчанням', diff --git a/public/build/assets/abilities-aceb04ef.js b/public/build/assets/abilities-120a3926.js similarity index 99% rename from public/build/assets/abilities-aceb04ef.js rename to public/build/assets/abilities-120a3926.js index 46c4c56746..1c917e0e12 100644 --- a/public/build/assets/abilities-aceb04ef.js +++ b/public/build/assets/abilities-120a3926.js @@ -1 +1 @@ -import{_ as y,o as e,c as i,a as l,h as x,e as g,b as o,t as c,n as v,F as h,r as b,k as C,j as A,g as f,f as k,l as D}from"./_plugin-vue_export-helper-c420bb3b.js";import{m as M}from"./mitt-f7ef348c.js";import{v as L}from"./v-click-outside.umd-d5c5f7b0.js";import"./_commonjsHelpers-725317a4.js";const T={props:["ability","permission","meta","trans"],directives:{clickOutside:L.directive},data(){return{details:!1,openedDropdown:!1}},computed:{hasAttribute:function(){return this.ability.attributes.length>0},canDelete:function(){return this.permission},isSelf:function(){return this.meta.user_id===this.ability.created_by},backgroundImage:function(){return this.ability.images.thumb?{backgroundImage:"url("+this.ability.images.thumb+")"}:{}}},methods:{click:function(t){this.details=!this.details},deleteAbility:function(t){this.emitter.emit("delete_ability",t)},updateAbility:function(t){window.openDialog("abilities-dialog",t.actions.edit)},showAbility:function(t){window.open(t.actions.view,"_blank")},setVisibility:function(t){var a={visibility_id:t,ability_id:this.ability.ability_id};axios.patch(this.ability.actions.update,a).then(s=>{this.ability.visibility_id=t,this.emitter.emit("edited_ability",ability)}).catch(()=>{}),this.openedDropdown=!1},useCharge:function(t,a){a>t.used_charges?t.used_charges+=1:t.used_charges-=1,axios.post(t.actions.use,{used:t.used_charges}).then(s=>{s.data.success||(t.used_charges-=1)}).catch(()=>{t.used_charges-=1})},translate(t){return this.trans[t]??"unknown"},dropdownClass(){return this.openedDropdown?"open dropdown":"dropdown"},openDropdown(){this.openedDropdown=!this.openedDropdown},onClickOutside(t){this.openedDropdown=!1}}},H=["data-tags"],j={class:"ability-box p-3 rounded bg-box shadow-xs"},S={class:"ability-header border-b flex items-center gap-2 pb-2 mb-2"},V=["title"],I=["title"],F=["title"],O=["title"],P=["title"],B={key:1,class:"flex gap-2 flex-wrap"},N={key:1,class:"grow"},z=["data-id","data-url"],E=["title"],J=l("i",{class:"fa-solid fa-pencil","aria-hidden":"true"},null,-1),q={class:"sr-only"},G={class:"ability-body entity-content"},K={class:"flex"},Q={class:"flex-1"},R={class:"help-block"},U=["innerHTML"],W=["innerHTML"],X={key:0,class:"flex-none text-right ml-2 mb-2"},Y=["href"],Z={key:0},$={class:"charges relative"},tt=["onClick"],et={key:0,class:"fa-solid fa-chevron-down"},it={key:2},st={class:"dl-horizontal"},nt=["innerHTML"],at={key:1},lt={key:0},ot={key:0,class:"fa-solid fa-check","aria-hidden":"true"},rt=["innerHTML"],dt={key:0,class:"fa-solid fa-chevron-up"};function ct(t,a,s,m,r,n){const _=C("click-outside");return e(),i("div",{class:"ability","data-tags":s.ability.class},[l("div",j,[l("div",S,[s.permission?x((e(),i("div",{key:0,class:g(n.dropdownClass())},[this.openedDropdown?(e(),i("div",B,[l("a",{role:"button",class:"btn2 btn-sm",onClick:a[1]||(a[1]=d=>n.setVisibility(1))},c(n.translate("all")),1),s.meta.is_admin?(e(),i("a",{key:0,role:"button",class:"btn2 btn-sm",onClick:a[2]||(a[2]=d=>n.setVisibility(2))},c(n.translate("admin")),1)):o("",!0),this.isSelf?(e(),i("a",{key:1,role:"button",class:"btn2 btn-sm",onClick:a[3]||(a[3]=d=>n.setVisibility(4))},c(n.translate("self")),1)):o("",!0),this.isSelf?(e(),i("a",{key:2,role:"button",class:"btn2 btn-sm",onClick:a[4]||(a[4]=d=>n.setVisibility(5))},c(n.translate("members")),1)):o("",!0),this.isSelf?(e(),i("a",{key:3,role:"button",class:"btn2 btn-sm",onClick:a[5]||(a[5]=d=>n.setVisibility(3))},c(n.translate("admin-self")),1)):o("",!0)])):(e(),i("a",{key:0,onClick:a[0]||(a[0]=d=>n.openDropdown()),role:"button"},[s.ability.visibility_id===2?(e(),i("i",{key:0,class:"fa-solid fa-lock",title:n.translate("admin")},null,8,V)):o("",!0),s.ability.visibility_id===3?(e(),i("i",{key:1,class:"fa-solid fa-user-lock",title:n.translate("admin-self")},null,8,I)):o("",!0),s.ability.visibility_id===5?(e(),i("i",{key:2,class:"fa-solid fa-users",title:n.translate("members")},null,8,F)):o("",!0),s.ability.visibility_id===4?(e(),i("i",{key:3,class:"fa-solid fa-user-secret",title:n.translate("self")},null,8,O)):o("",!0),s.ability.visibility_id===1?(e(),i("i",{key:4,class:"fa-solid fa-eye",title:n.translate("all")},null,8,P)):o("",!0)]))],2)),[[_,n.onClickOutside]]):o("",!0),this.openedDropdown?o("",!0):(e(),i("div",N,[l("a",{role:"button",onClick:a[6]||(a[6]=d=>n.showAbility(s.ability)),"data-toggle":"tooltip-ajax",class:"grow text-lg","data-id":s.ability.entity.id,"data-url":s.ability.entity.tooltip},c(s.ability.name),9,z)])),this.canDelete&&!this.openedDropdown?(e(),i("a",{key:2,role:"button",onClick:a[7]||(a[7]=d=>n.updateAbility(s.ability)),class:"btn2 btn-ghost btn-xs",title:n.translate("update")},[J,l("span",q,c(n.translate("update")),1)],8,E)):o("",!0)]),l("div",G,[l("div",K,[l("div",Q,[l("span",R,c(s.ability.type),1),l("div",{innerHTML:s.ability.entry},null,8,U),l("div",{innerHTML:s.ability.note,class:"help-block"},null,8,W)]),s.ability.images.has?(e(),i("div",X,[l("a",{class:"ability-image block w-32 h-32 cover-background",target:"_blank",href:s.ability.images.url,style:v(n.backgroundImage)},null,12,Y)])):o("",!0)]),s.ability.charges&&s.permission?(e(),i("div",Z,[l("div",$,[(e(!0),i(h,null,b(s.ability.charges,d=>(e(),i("div",{class:g(["charge inline-block mr-2 h-5 w-5 cursor-pointer bg-white shadow-xs",{used:s.ability.used_charges>=d}]),onClick:w=>n.useCharge(s.ability,d)},null,10,tt))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:1,class:"text-center cursor-pointer",onClick:a[8]||(a[8]=d=>n.click(s.ability))},[r.details?o("",!0):(e(),i("i",et))])):o("",!0),r.details&&n.hasAttribute?(e(),i("div",it,[l("dl",st,[(e(!0),i(h,null,b(s.ability.attributes,d=>(e(),i("div",null,[d.type=="section"?(e(),i("h4",{key:0,class:"font-bold text-center",innerHTML:d.name},null,8,nt)):(e(),i("div",at,[l("dt",null,c(d.name),1),d.type=="checkbox"?(e(),i("dd",lt,[d.value==1?(e(),i("i",ot)):o("",!0)])):(e(),i("dd",{key:1,innerHTML:d.value},null,8,rt))]))]))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:3,class:"text-center cursor-pointer",onClick:a[9]||(a[9]=d=>n.click(s.ability))},[r.details?(e(),i("i",dt)):o("",!0)])):o("",!0)])])],8,H)}const ut=y(T,[["render",ct]]),ht={props:["ability"],data(){return{active:!1}},computed:{backgroundImage:function(){return this.ability.has_image?{backgroundImage:"url("+this.ability.image+")"}:{}}},methods:{click:function(t){this.emitter.emit("click_parent",this.active?null:t)}},mounted(){this.emitter.on("click_parent",t=>{this.active=t&&t.id===this.ability.id})}},bt={class:"ability-name flex justify-center h-full w-full items-center cursor-pointer bg-white/70 hover:bg-black/10 transition-all duration-500"},_t={class:"name text-2xl"};function yt(t,a,s,m,r,n){return e(),i("div",{class:g(["ability-parent cover-background rounded overflow-hidden w-48 h-20",{active:r.active,without:!s.ability.has_image}]),style:v(n.backgroundImage),onClick:a[0]||(a[0]=_=>n.click(s.ability))},[l("div",bt,[l("div",_t,c(s.ability.name),1)])],6)}const mt=y(ht,[["render",yt]]),ft={props:[],data(){return{modal:!1,modalContent:""}},methods:{showModal:function(t){this.modal=!0,axios.get(t).then(a=>{this.modalContent=a.data})},modalStyle:function(){return this.modal?"block":"hidden"}},mounted(){this.emitter.on("add_ability",t=>{this.showModal(t)})}},kt={class:"modal-dialog",role:"document"},gt=["innerHTML"];function vt(t,a,s,m,r,n){return e(),i("div",{class:"modal fade in",style:v({display:this.modalStyle()}),tabindex:"-1",role:"dialog"},[l("div",kt,[l("div",{class:"modal-content",innerHTML:r.modalContent},null,8,gt)])],4)}const pt=y(ft,[["render",vt]]),wt={props:["id","api","permission","trans"],components:{Ability:ut,AbilityForm:pt,Parent:mt},data(){return{abilities:[],parents:[],meta:[],loading:!0,show_parent:!1,parent:null,waiting:!1,modal:!1,json_trans:[]}},methods:{getAbilities:function(){fetch(this.api).then(t=>t.json()).then(t=>{this.abilities=t.data.abilities,this.parents=t.data.parents,this.meta=t.data.meta,this.loading=!1,this.waiting=!1,this.parent&&(this.parent=this.parents[this.parent.id],this.showParent(this.parent))})},showParent:function(t){this.show_parent=!!t},addAbility:function(){this.emitter.emit("add_ability",this.meta.add_url)},deleteAbility:function(t){this.waiting=!0,axios.delete(t.actions.delete).then(()=>{this.getAbilities()}).catch(()=>{this.getAbilities()})},translate(t){return this.json_trans[t]??"unknown"}},mounted(){this.getAbilities(),this.emitter.on("click_parent",t=>{this.parent=t,this.showParent(t)}),this.emitter.on("delete_ability",t=>{this.deleteAbility(t)}),this.json_trans=JSON.parse(this.trans)},updated(){window.ajaxTooltip()}},xt={class:"viewport box-abilities relative flex flex-col gap-5"},Ct={key:0,class:"load more text-center"},At=l("i",{class:"fa-solid fa-spin fa-spinner"},null,-1),Dt=[At],Mt={class:"flex gap-5 flex-wrap"},Lt={key:1,class:"flex flex-col gap-5"},Tt={key:0,class:"parent-box p-3 rounded bg-box shadow-xs"},Ht={class:"parent-header mb-2"},jt=["href"],St=["innerHTML"],Vt={class:"flex flex-col gap-5"},It={key:2,class:"box-waiting absolute top-0 w-full h-full bg-black/20 text-center"},Ft=l("i",{class:"fa-solid fa-spin fa-spinner fa-4x mt-5"},null,-1),Ot=[Ft];function Pt(t,a,s,m,r,n){const _=f("parent"),d=f("ability"),w=f("AbilityForm");return e(),i("div",xt,[r.loading?(e(),i("div",Ct,Dt)):o("",!0),l("div",Mt,[(e(!0),i(h,null,b(r.parents,u=>(e(),k(_,{key:u.id,ability:u},null,8,["ability"]))),128))]),r.show_parent?(e(),i("div",Lt,[r.parent.entry?(e(),i("div",Tt,[l("div",Ht,[l("a",{class:"text-lg",href:r.parent.url},c(r.parent.name),9,jt)]),l("div",{class:"entity-content parent-body",innerHTML:r.parent.entry},null,8,St)])):o("",!0),(e(!0),i(h,null,b(r.parent.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))])):o("",!0),l("div",Vt,[r.show_parent?o("",!0):(e(!0),i(h,{key:0},b(r.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))]),A(w,{trans:r.json_trans},null,8,["trans"]),r.waiting?(e(),i("div",It,Ot)):o("",!0)])}const Bt=y(wt,[["render",Pt]]),Nt=M(),p=D({});p.config.globalProperties.emitter=Nt;p.component("abilities",Bt);p.mount("#abilities"); +import{_ as y,o as e,c as i,a as l,h as x,e as g,b as o,t as c,n as v,F as h,r as b,k as C,j as A,g as f,f as k,l as D}from"./_plugin-vue_export-helper-c420bb3b.js";import{m as M}from"./mitt-f7ef348c.js";import{v as L}from"./v-click-outside.umd-1708c20a.js";import"./_commonjsHelpers-725317a4.js";const T={props:["ability","permission","meta","trans"],directives:{clickOutside:L.directive},data(){return{details:!1,openedDropdown:!1}},computed:{hasAttribute:function(){return this.ability.attributes.length>0},canDelete:function(){return this.permission},isSelf:function(){return this.meta.user_id===this.ability.created_by},backgroundImage:function(){return this.ability.images.thumb?{backgroundImage:"url("+this.ability.images.thumb+")"}:{}}},methods:{click:function(t){this.details=!this.details},deleteAbility:function(t){this.emitter.emit("delete_ability",t)},updateAbility:function(t){window.openDialog("abilities-dialog",t.actions.edit)},showAbility:function(t){window.open(t.actions.view,"_blank")},setVisibility:function(t){var a={visibility_id:t,ability_id:this.ability.ability_id};axios.patch(this.ability.actions.update,a).then(s=>{this.ability.visibility_id=t,this.emitter.emit("edited_ability",ability)}).catch(()=>{}),this.openedDropdown=!1},useCharge:function(t,a){a>t.used_charges?t.used_charges+=1:t.used_charges-=1,axios.post(t.actions.use,{used:t.used_charges}).then(s=>{s.data.success||(t.used_charges-=1)}).catch(()=>{t.used_charges-=1})},translate(t){return this.trans[t]??"unknown"},dropdownClass(){return this.openedDropdown?"open dropdown":"dropdown"},openDropdown(){this.openedDropdown=!this.openedDropdown},onClickOutside(t){this.openedDropdown=!1}}},H=["data-tags"],j={class:"ability-box p-3 rounded bg-box shadow-xs"},S={class:"ability-header border-b flex items-center gap-2 pb-2 mb-2"},V=["title"],I=["title"],F=["title"],O=["title"],P=["title"],B={key:1,class:"flex gap-2 flex-wrap"},N={key:1,class:"grow"},z=["data-id","data-url"],E=["title"],J=l("i",{class:"fa-solid fa-pencil","aria-hidden":"true"},null,-1),q={class:"sr-only"},G={class:"ability-body entity-content"},K={class:"flex"},Q={class:"flex-1"},R={class:"help-block"},U=["innerHTML"],W=["innerHTML"],X={key:0,class:"flex-none text-right ml-2 mb-2"},Y=["href"],Z={key:0},$={class:"charges relative"},tt=["onClick"],et={key:0,class:"fa-solid fa-chevron-down"},it={key:2},st={class:"dl-horizontal"},nt=["innerHTML"],at={key:1},lt={key:0},ot={key:0,class:"fa-solid fa-check","aria-hidden":"true"},rt=["innerHTML"],dt={key:0,class:"fa-solid fa-chevron-up"};function ct(t,a,s,m,r,n){const _=C("click-outside");return e(),i("div",{class:"ability","data-tags":s.ability.class},[l("div",j,[l("div",S,[s.permission?x((e(),i("div",{key:0,class:g(n.dropdownClass())},[this.openedDropdown?(e(),i("div",B,[l("a",{role:"button",class:"btn2 btn-sm",onClick:a[1]||(a[1]=d=>n.setVisibility(1))},c(n.translate("all")),1),s.meta.is_admin?(e(),i("a",{key:0,role:"button",class:"btn2 btn-sm",onClick:a[2]||(a[2]=d=>n.setVisibility(2))},c(n.translate("admin")),1)):o("",!0),this.isSelf?(e(),i("a",{key:1,role:"button",class:"btn2 btn-sm",onClick:a[3]||(a[3]=d=>n.setVisibility(4))},c(n.translate("self")),1)):o("",!0),this.isSelf?(e(),i("a",{key:2,role:"button",class:"btn2 btn-sm",onClick:a[4]||(a[4]=d=>n.setVisibility(5))},c(n.translate("members")),1)):o("",!0),this.isSelf?(e(),i("a",{key:3,role:"button",class:"btn2 btn-sm",onClick:a[5]||(a[5]=d=>n.setVisibility(3))},c(n.translate("admin-self")),1)):o("",!0)])):(e(),i("a",{key:0,onClick:a[0]||(a[0]=d=>n.openDropdown()),role:"button"},[s.ability.visibility_id===2?(e(),i("i",{key:0,class:"fa-solid fa-lock",title:n.translate("admin")},null,8,V)):o("",!0),s.ability.visibility_id===3?(e(),i("i",{key:1,class:"fa-solid fa-user-lock",title:n.translate("admin-self")},null,8,I)):o("",!0),s.ability.visibility_id===5?(e(),i("i",{key:2,class:"fa-solid fa-users",title:n.translate("members")},null,8,F)):o("",!0),s.ability.visibility_id===4?(e(),i("i",{key:3,class:"fa-solid fa-user-secret",title:n.translate("self")},null,8,O)):o("",!0),s.ability.visibility_id===1?(e(),i("i",{key:4,class:"fa-solid fa-eye",title:n.translate("all")},null,8,P)):o("",!0)]))],2)),[[_,n.onClickOutside]]):o("",!0),this.openedDropdown?o("",!0):(e(),i("div",N,[l("a",{role:"button",onClick:a[6]||(a[6]=d=>n.showAbility(s.ability)),"data-toggle":"tooltip-ajax",class:"grow text-lg","data-id":s.ability.entity.id,"data-url":s.ability.entity.tooltip},c(s.ability.name),9,z)])),this.canDelete&&!this.openedDropdown?(e(),i("a",{key:2,role:"button",onClick:a[7]||(a[7]=d=>n.updateAbility(s.ability)),class:"btn2 btn-ghost btn-xs",title:n.translate("update")},[J,l("span",q,c(n.translate("update")),1)],8,E)):o("",!0)]),l("div",G,[l("div",K,[l("div",Q,[l("span",R,c(s.ability.type),1),l("div",{innerHTML:s.ability.entry},null,8,U),l("div",{innerHTML:s.ability.note,class:"help-block"},null,8,W)]),s.ability.images.has?(e(),i("div",X,[l("a",{class:"ability-image block w-32 h-32 cover-background",target:"_blank",href:s.ability.images.url,style:v(n.backgroundImage)},null,12,Y)])):o("",!0)]),s.ability.charges&&s.permission?(e(),i("div",Z,[l("div",$,[(e(!0),i(h,null,b(s.ability.charges,d=>(e(),i("div",{class:g(["charge inline-block mr-2 h-5 w-5 cursor-pointer bg-white shadow-xs",{used:s.ability.used_charges>=d}]),onClick:w=>n.useCharge(s.ability,d)},null,10,tt))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:1,class:"text-center cursor-pointer",onClick:a[8]||(a[8]=d=>n.click(s.ability))},[r.details?o("",!0):(e(),i("i",et))])):o("",!0),r.details&&n.hasAttribute?(e(),i("div",it,[l("dl",st,[(e(!0),i(h,null,b(s.ability.attributes,d=>(e(),i("div",null,[d.type=="section"?(e(),i("h4",{key:0,class:"font-bold text-center",innerHTML:d.name},null,8,nt)):(e(),i("div",at,[l("dt",null,c(d.name),1),d.type=="checkbox"?(e(),i("dd",lt,[d.value==1?(e(),i("i",ot)):o("",!0)])):(e(),i("dd",{key:1,innerHTML:d.value},null,8,rt))]))]))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:3,class:"text-center cursor-pointer",onClick:a[9]||(a[9]=d=>n.click(s.ability))},[r.details?(e(),i("i",dt)):o("",!0)])):o("",!0)])])],8,H)}const ut=y(T,[["render",ct]]),ht={props:["ability"],data(){return{active:!1}},computed:{backgroundImage:function(){return this.ability.has_image?{backgroundImage:"url("+this.ability.image+")"}:{}}},methods:{click:function(t){this.emitter.emit("click_parent",this.active?null:t)}},mounted(){this.emitter.on("click_parent",t=>{this.active=t&&t.id===this.ability.id})}},bt={class:"ability-name flex justify-center h-full w-full items-center cursor-pointer bg-white/70 hover:bg-black/10 transition-all duration-500"},_t={class:"name text-2xl"};function yt(t,a,s,m,r,n){return e(),i("div",{class:g(["ability-parent cover-background rounded overflow-hidden w-48 h-20",{active:r.active,without:!s.ability.has_image}]),style:v(n.backgroundImage),onClick:a[0]||(a[0]=_=>n.click(s.ability))},[l("div",bt,[l("div",_t,c(s.ability.name),1)])],6)}const mt=y(ht,[["render",yt]]),ft={props:[],data(){return{modal:!1,modalContent:""}},methods:{showModal:function(t){this.modal=!0,axios.get(t).then(a=>{this.modalContent=a.data})},modalStyle:function(){return this.modal?"block":"hidden"}},mounted(){this.emitter.on("add_ability",t=>{this.showModal(t)})}},kt={class:"modal-dialog",role:"document"},gt=["innerHTML"];function vt(t,a,s,m,r,n){return e(),i("div",{class:"modal fade in",style:v({display:this.modalStyle()}),tabindex:"-1",role:"dialog"},[l("div",kt,[l("div",{class:"modal-content",innerHTML:r.modalContent},null,8,gt)])],4)}const pt=y(ft,[["render",vt]]),wt={props:["id","api","permission","trans"],components:{Ability:ut,AbilityForm:pt,Parent:mt},data(){return{abilities:[],parents:[],meta:[],loading:!0,show_parent:!1,parent:null,waiting:!1,modal:!1,json_trans:[]}},methods:{getAbilities:function(){fetch(this.api).then(t=>t.json()).then(t=>{this.abilities=t.data.abilities,this.parents=t.data.parents,this.meta=t.data.meta,this.loading=!1,this.waiting=!1,this.parent&&(this.parent=this.parents[this.parent.id],this.showParent(this.parent))})},showParent:function(t){this.show_parent=!!t},addAbility:function(){this.emitter.emit("add_ability",this.meta.add_url)},deleteAbility:function(t){this.waiting=!0,axios.delete(t.actions.delete).then(()=>{this.getAbilities()}).catch(()=>{this.getAbilities()})},translate(t){return this.json_trans[t]??"unknown"}},mounted(){this.getAbilities(),this.emitter.on("click_parent",t=>{this.parent=t,this.showParent(t)}),this.emitter.on("delete_ability",t=>{this.deleteAbility(t)}),this.json_trans=JSON.parse(this.trans)},updated(){window.ajaxTooltip()}},xt={class:"viewport box-abilities relative flex flex-col gap-5"},Ct={key:0,class:"load more text-center"},At=l("i",{class:"fa-solid fa-spin fa-spinner"},null,-1),Dt=[At],Mt={class:"flex gap-5 flex-wrap"},Lt={key:1,class:"flex flex-col gap-5"},Tt={key:0,class:"parent-box p-3 rounded bg-box shadow-xs"},Ht={class:"parent-header mb-2"},jt=["href"],St=["innerHTML"],Vt={class:"flex flex-col gap-5"},It={key:2,class:"box-waiting absolute top-0 w-full h-full bg-black/20 text-center"},Ft=l("i",{class:"fa-solid fa-spin fa-spinner fa-4x mt-5"},null,-1),Ot=[Ft];function Pt(t,a,s,m,r,n){const _=f("parent"),d=f("ability"),w=f("AbilityForm");return e(),i("div",xt,[r.loading?(e(),i("div",Ct,Dt)):o("",!0),l("div",Mt,[(e(!0),i(h,null,b(r.parents,u=>(e(),k(_,{key:u.id,ability:u},null,8,["ability"]))),128))]),r.show_parent?(e(),i("div",Lt,[r.parent.entry?(e(),i("div",Tt,[l("div",Ht,[l("a",{class:"text-lg",href:r.parent.url},c(r.parent.name),9,jt)]),l("div",{class:"entity-content parent-body",innerHTML:r.parent.entry},null,8,St)])):o("",!0),(e(!0),i(h,null,b(r.parent.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))])):o("",!0),l("div",Vt,[r.show_parent?o("",!0):(e(!0),i(h,{key:0},b(r.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))]),A(w,{trans:r.json_trans},null,8,["trans"]),r.waiting?(e(),i("div",It,Ot)):o("",!0)])}const Bt=y(wt,[["render",Pt]]),Nt=M(),p=D({});p.config.globalProperties.emitter=Nt;p.component("abilities",Bt);p.mount("#abilities"); diff --git a/public/build/assets/app-0e88c1bd.js b/public/build/assets/app-0e88c1bd.js new file mode 100644 index 0000000000..c5ccea7002 --- /dev/null +++ b/public/build/assets/app-0e88c1bd.js @@ -0,0 +1 @@ +import{t as U,C as W}from"./tippy.esm-24ef6cb2.js";import{d as tt}from"./mention-2d258b1d.js";import{S as De}from"./sortable.esm-0d19b1d3.js";import"./dialog-66bef5f6.js";import{_ as S,c as l,a,t as f,o as r,n as E,w as X,b as h,F as v,r as w,d as b,e as g,f as T,g as L,h as ee,i as nt,v as it,j as z,k as qe,l as st}from"./_plugin-vue_export-helper-c420bb3b.js";import{m as at}from"./mitt-f7ef348c.js";import{v as Ee}from"./v-click-outside.umd-1708c20a.js";import"./_commonjsHelpers-725317a4.js";$(document).ready(function(){window.initTags=function(){$.each($(".form-tags"),function(){$(this).hasClass("select2-hidden-accessible")||$(this).select2({tags:$(this).data("allow-new"),allowClear:$(this).data("allow-clear"),dropdownParent:$(this).data("dropdown-parent")||"",minimumInputLength:0,ajax:{quietMillis:500,delay:500,url:$(this).data("url"),dataType:"json",data:function(e){return{q:$.trim(e.term)}},processResults:function(e){return{results:e}},cache:!0},createTag:function(e){var t=$.trim(e.term);return t===""?null:{id:t,text:t,newTag:!0}},templateResult:function(e){var t=$(""+e.text+"");return e.colour&&(t=$(""+e.text+"")),t},templateSelection:function(e,t){if(e.newTag)return $(''+e.text+' ');let n=$(e.element);return e.colour?$(t).addClass(e.colour):n.data("colour")&&$(t).addClass(n.data("colour")),$(t).addClass("text-left"),e.text}})})},window.initTags()});/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Si us plau, elimina "+n+" car";return s+=n==1?"àcter":"àcters"},inputTooShort:function(t){var n=t.minimum-t.input.length,s="Si us plau, introdueix "+n+" car";return s+=n==1?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(t){var n="Només es pot seleccionar "+t.maximum+" element";return t.maximum!=1&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(t){return"Bitte "+(t.input.length-t.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(t){return"Bitte "+(t.minimum-t.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(t){var n="Sie können nur "+t.maximum+" Element";return t.maximum!=1&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Please delete "+n+" character";return n!=1&&(s+="s"),s},inputTooShort:function(t){return"Please enter "+(t.minimum-t.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){var n="You can only select "+t.maximum+" item";return t.maximum!=1&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Por favor, elimine "+n+" car";return s+=n==1?"ácter":"acteres"},inputTooShort:function(t){var n=t.minimum-t.input.length,s="Por favor, introduzca "+n+" car";return s+=n==1?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(t){var n="Sólo puede seleccionar "+t.maximum+" elemento";return t.maximum!=1&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(t){return"Vous pouvez seulement sélectionner "+t.maximum+" élément"+(t.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(t){return"Túl hosszú. "+(t.input.length-t.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(t){return"Túl rövid. Még "+(t.minimum-t.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(t){return"Csak "+t.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Per favore cancella "+n+" caratter";return s+=n!==1?"i":"e"},inputTooShort:function(t){return"Per favore inserisci "+(t.minimum-t.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(t){var n="Puoi selezionare solo "+t.maximum+" element";return t.maximum!==1?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(t){return"Gelieve "+(t.input.length-t.maximum)+" karakters te verwijderen"},inputTooShort:function(t){return"Gelieve "+(t.minimum-t.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(t){var n=t.maximum==1?"kan":"kunnen",s="Er "+n+" maar "+t.maximum+" item";return t.maximum!=1&&(s+="s"),s+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pl",[],function(){var t=["znak","znaki","znaków"],n=["element","elementy","elementów"],s=function(i,o){return i===1?o[0]:i>1&&i<=4?o[1]:i>=5?o[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(i){var o=i.input.length-i.maximum;return"Usuń "+o+" "+s(o,t)},inputTooShort:function(i){var o=i.minimum-i.input.length;return"Podaj przynajmniej "+o+" "+s(o,t)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(i){return"Możesz zaznaczyć tylko "+i.maximum+" "+s(i.maximum,n)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Apague "+n+" caracter";return n!=1&&(s+="es"),s},inputTooShort:function(t){return"Digite "+(t.minimum-t.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(t){var n="Você só pode selecionar "+t.maximum+" ite";return t.maximum==1?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ru",[],function(){function t(n,s,i,o){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?i:s:o}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(n){var s=n.input.length-n.maximum,i="Пожалуйста, введите на "+s+" символ";return i+=t(s,"","a","ов"),i+=" меньше"},inputTooShort:function(n){var s=n.minimum-n.input.length,i="Пожалуйста, введите ещё хотя бы "+s+" символ";return i+=t(s,"","a","ов")},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(n){var s="Вы можете выбрать не более "+n.maximum+" элемент";return s+=t(n.maximum,"","a","ов")},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sk",[],function(){var t={2:function(n){return n?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(n){var s=n.input.length-n.maximum;return s==1?"Prosím, zadajte o jeden znak menej":s>=2&&s<=4?"Prosím, zadajte o "+t[s](!0)+" znaky menej":"Prosím, zadajte o "+s+" znakov menej"},inputTooShort:function(n){var s=n.minimum-n.input.length;return s==1?"Prosím, zadajte ešte jeden znak":s<=4?"Prosím, zadajte ešte ďalšie "+t[s](!0)+" znaky":"Prosím, zadajte ešte ďalších "+s+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(n){return n.maximum==1?"Môžete zvoliť len jednu položku":n.maximum>=2&&n.maximum<=4?"Môžete zvoliť najviac "+t[n.maximum](!1)+" položky":"Môžete zvoliť najviac "+n.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),e.define,e.require})();$(document).ready(function(){window.initForeignSelect=function(){$("select.select2").length!==0&&($.each($("select.select2"),function(e){if($(this).hasClass("select2-hidden-accessible"))return;if($(this).hasClass("campaign-genres")){$(this).select2({tags:!1,allowClear:!0,dropdownParent:"",width:"100%",maximumSelectionLength:3});return}let t=$(this).data("allow-clear"),n=$(this).data("dropdown-parent");$(this).select2({tags:!1,placeholder:$(this).data("placeholder"),allowClear:t||!0,language:$(this).data("language"),minimumInputLength:0,dropdownParent:n||"",width:"100%",ajax:{delay:500,quietMillis:500,url:$(this).data("url"),dataType:"json",data:function(s){return{q:$.trim(s.term)}},processResults:function(s){return{results:s}},error:function(s){return console.log("error",s),s.status===503&&window.showToast(s.responseJSON.message,"error"),{results:[]}},cache:!0},templateResult:function(s){var i="";return s.image?i=$(""+s.text+""):i=$(""+s.text+""),i},createTag:function(s){return null}})}),$("select.select2-local").select2({placeholder:$(this).data("placeholder"),language:$(this).data("language"),allowClear:!0}),$("select.select2-colour").select2({allowClear:!1,templateResult:pe,templateSelection:pe}))}});function pe(e){return e.id==="none"?e.text:$('