diff --git a/app/AdminModule/Components/UsersGridControl.php b/app/AdminModule/Components/UsersGridControl.php index 4fa519f03..247a39a70 100644 --- a/app/AdminModule/Components/UsersGridControl.php +++ b/app/AdminModule/Components/UsersGridControl.php @@ -176,7 +176,7 @@ public function createComponentUsersGrid(string $name): DataGrid ->andWhere('uA.validTo IS NULL') ->andWhere('uA.state IN (:states)') ->setParameter('sids', (array) $values) - ->setParameter('states', [ApplicationState::PAID, ApplicationState::PAID_FREE, ApplicationState::WAITING_FOR_PAYMENT]); + ->setParameter('states', [ApplicationState::PAID, ApplicationState::PAID_FREE, ApplicationState::PAID_TRANSFERED, ApplicationState::WAITING_FOR_PAYMENT]); }); $columnApproved = $grid->addColumnStatus('approved', 'admin.users.users_approved'); diff --git a/app/AdminModule/Forms/EditUserTransferFormFactory.php b/app/AdminModule/Forms/EditUserTransferFormFactory.php new file mode 100644 index 000000000..692fab676 --- /dev/null +++ b/app/AdminModule/Forms/EditUserTransferFormFactory.php @@ -0,0 +1,78 @@ +user = $this->userRepository->findById($id); + + $form = $this->baseFormFactory->create(); + + $form->addSelect('targetUser', 'admin.users.users_target_user', $this->userRepository->getUsersOptions(true)) + ->addRule(Form::NOT_EQUAL, 'admin.users.users_target_user_empty', 0) + ->addRule(Form::NOT_EQUAL, 'admin.users.users_target_user_same', $this->user->getId()) + ->setHtmlAttribute('data-live-search', 'true'); + + $form->addSubmit('submit', 'admin.users.users_transfer') + ->setDisabled(! $this->user->isRegistered() || ! $this->user->hasPaidAnyApplication()) + ->setHtmlAttribute('class', 'btn btn-danger') + ->setHtmlAttribute('data-toggle', 'confirmation') + ->setHtmlAttribute('data-content', $this->translator->translate('admin.users.users_transfer_confirm')); + + $form->onSuccess[] = [$this, 'processForm']; + + return $form; + } + + /** + * Zpracuje formulář. + * + * @throws Nette\Utils\UnknownImageFileException + * @throws ImageException + */ + public function processForm(Form $form, stdClass $values): void + { + $presenter = $form->getPresenter(); + assert($presenter instanceof AdminBasePresenter); + + $loggedUser = $presenter->getDbUser(); + + $targetUser = $this->userRepository->findById($values->targetUser); + + $this->applicationService->transferRegistration($this->user, $targetUser, $loggedUser); + } +} diff --git a/app/AdminModule/Presenters/UsersPresenter.php b/app/AdminModule/Presenters/UsersPresenter.php index 0e18f2f53..f7304519b 100644 --- a/app/AdminModule/Presenters/UsersPresenter.php +++ b/app/AdminModule/Presenters/UsersPresenter.php @@ -11,6 +11,7 @@ use App\AdminModule\Forms\AddLectorFormFactory; use App\AdminModule\Forms\EditUserPersonalDetailsFormFactory; use App\AdminModule\Forms\EditUserSeminarFormFactory; +use App\AdminModule\Forms\EditUserTransferFormFactory; use App\Model\Acl\Permission; use App\Model\Acl\Role; use App\Model\Acl\SrsResource; @@ -48,6 +49,9 @@ class UsersPresenter extends AdminBasePresenter #[Inject] public EditUserSeminarFormFactory $editUserSeminarFormFactory; + #[Inject] + public EditUserTransferFormFactory $editUserTransferFormFactory; + #[Inject] public IApplicationsGridControlFactory $applicationsGridControlFactory; @@ -73,7 +77,6 @@ public function startup(): void $this->template->results = []; $this->template->editPersonalDetails = false; $this->template->editSeminar = false; - $this->template->editPayment = false; } public function renderDetail(int $id): void @@ -137,22 +140,6 @@ public function handleEditSeminar(): void } } - /** - * Zobrazí formulář pro editaci údajů o platbě uživatele. - * - * @throws AbortException - */ - public function handleEditPayment(): void - { - $this->template->editPayment = true; - - if ($this->isAjax()) { - $this->redrawControl('userDetail'); - } else { - $this->redirect('this'); - } - } - /** @throws Throwable */ public function handleCancelRegistration(): void { @@ -235,6 +222,19 @@ protected function createComponentEditUserSeminarForm(): Form return $form; } + /** @throws JsonException */ + protected function createComponentEditUserTransferForm(): Form + { + $form = $this->editUserTransferFormFactory->create((int) $this->getParameter('id')); + + $form->onSuccess[] = function (Form $form, stdClass $values): void { + $this->flashMessage('admin.users.users_transfered', 'success'); + $this->redirect('this'); + }; + + return $form; + } + protected function createComponentApplicationsGrid(): ApplicationsGridControl { return $this->applicationsGridControlFactory->create(); diff --git a/app/AdminModule/Presenters/templates/Users/detail.latte b/app/AdminModule/Presenters/templates/Users/detail.latte index 75f1644a4..fc04ffa92 100644 --- a/app/AdminModule/Presenters/templates/Users/detail.latte +++ b/app/AdminModule/Presenters/templates/Users/detail.latte @@ -167,6 +167,11 @@ {/if} +

{_admin.users.users_detail_transfer}

+
+ {control editUserTransferForm} +
+

{_admin.users.users_detail_schedule}

diff --git a/app/ApiModule/Presenters/TicketsPresenter.php b/app/ApiModule/Presenters/TicketsPresenter.php index 9d461753b..7d054c6d6 100644 --- a/app/ApiModule/Presenters/TicketsPresenter.php +++ b/app/ApiModule/Presenters/TicketsPresenter.php @@ -96,7 +96,7 @@ public function actionCheckTicket(int $userId, int $subeventId): void $subevents = []; $hasSubevent = false; - foreach ($user->getPaidAndFreeApplications() as $application) { + foreach ($user->getPaidAndTransferedAndFreeApplications() as $application) { if ($application instanceof RolesApplication) { foreach ($application->getRoles() as $r) { $roles[] = $r->getName(); diff --git a/app/Model/Application/Application.php b/app/Model/Application/Application.php index 01e17a98c..399d9b1bd 100644 --- a/app/Model/Application/Application.php +++ b/app/Model/Application/Application.php @@ -382,12 +382,12 @@ public function isValid(): bool public function isCanceled(): bool { - return $this->state === ApplicationState::CANCELED || $this->state === ApplicationState::CANCELED_NOT_PAID; + return $this->state === ApplicationState::CANCELED || $this->state === ApplicationState::CANCELED_NOT_PAID || $this->state === ApplicationState::CANCELED_TRANSFERED; } public function isPaid(): bool { - return $this->state === ApplicationState::PAID || $this->getState() === ApplicationState::PAID_FREE; + return $this->state === ApplicationState::PAID || $this->getState() === ApplicationState::PAID_FREE || $this->getState() === ApplicationState::PAID_TRANSFERED; } public function isWaitingForPayment(): bool diff --git a/app/Model/Enums/ApplicationState.php b/app/Model/Enums/ApplicationState.php index 8c9ab5fef..3eb163604 100644 --- a/app/Model/Enums/ApplicationState.php +++ b/app/Model/Enums/ApplicationState.php @@ -7,27 +7,37 @@ class ApplicationState { /** - * Čeká na platbu. + * Čeká na platbu */ public const WAITING_FOR_PAYMENT = 'waiting_for_payment'; /** - * Automaticky zrušeno kvůli nezaplacení. + * Zrušeno + */ + public const CANCELED = 'canceled'; + + /** + * Zrušeno (automaticky kvůli nezaplacení) */ public const CANCELED_NOT_PAID = 'canceled_not_paid'; /** - * Zrušeno. + * Zrušeno (převod na jiného účastníka) */ - public const CANCELED = 'canceled'; + public const CANCELED_TRANSFERED = 'canceled_transfered'; /** - * Zaplaceno. + * Zaplaceno */ public const PAID = 'paid'; /** - * Zaplaceno (zdarma). + * Zaplaceno (zdarma) */ public const PAID_FREE = 'paid_free'; + + /** + * Zaplaceno (převedeno od jiného účastníka) + */ + public const PAID_TRANSFERED = 'paid_transfered'; } diff --git a/app/Model/Structure/Subevent.php b/app/Model/Structure/Subevent.php index 4d8fc182e..182a7740c 100644 --- a/app/Model/Structure/Subevent.php +++ b/app/Model/Structure/Subevent.php @@ -432,7 +432,8 @@ public function countUsers(): int return $this->applications->filter(static fn (Application $application) => $application->getValidTo() === null && ( $application->getState() === ApplicationState::WAITING_FOR_PAYMENT || $application->getState() === ApplicationState::PAID_FREE || - $application->getState() === ApplicationState::PAID))->count(); + $application->getState() === ApplicationState::PAID || + $application->getState() === ApplicationState::PAID_TRANSFERED))->count(); } public function countUnoccupied(): int|null diff --git a/app/Model/User/Repositories/UserRepository.php b/app/Model/User/Repositories/UserRepository.php index cc7049aec..2415bcc09 100644 --- a/app/Model/User/Repositories/UserRepository.php +++ b/app/Model/User/Repositories/UserRepository.php @@ -131,7 +131,7 @@ public function findAllWithSubevents(array $subeventsIds): Collection ->where('a.validTo IS NULL') ->andWhere('a.state IN (:states)') ->andWhere('s.id IN (:ids)') - ->setParameter('states', [ApplicationState::PAID, ApplicationState::PAID_FREE, ApplicationState::WAITING_FOR_PAYMENT]) + ->setParameter('states', [ApplicationState::PAID, ApplicationState::PAID_FREE, ApplicationState::PAID_TRANSFERED, ApplicationState::WAITING_FOR_PAYMENT]) ->setParameter('ids', $subeventsIds) ->getQuery() ->getResult(); @@ -213,7 +213,7 @@ public function findProgramFirstAlternate(Program $program): User|null * * @return string[] */ - public function getUsersOptions(): array + public function getUsersOptions(bool $empty = false): array { $users = $this->createQueryBuilder('u') ->select('u.id, u.displayName') @@ -222,6 +222,11 @@ public function getUsersOptions(): array ->getResult(); $options = []; + + if ($empty) { + $options[0] = ''; + } + foreach ($users as $user) { $options[$user['id']] = $user['displayName']; } diff --git a/app/Model/User/User.php b/app/Model/User/User.php index 674c4a06e..7bb21c8a6 100644 --- a/app/Model/User/User.php +++ b/app/Model/User/User.php @@ -677,6 +677,11 @@ public function isInRoleWithSystemName(string $name): bool return $this->roles->exists(static fn (int $key, Role $role) => $role->getSystemName() === $name); } + public function isRegistered(): bool + { + return ! $this->isInRoleWithSystemName(Role::NONREGISTERED); + } + /** * Vrací, zda má uživatel nějakou roli, která nemá cenu podle podakcí. */ @@ -784,7 +789,7 @@ public function getNotCanceledSubeventsApplications(): Collection } /** - * Vrácí zaplacené přihlášky. + * Vrací zaplacené přihlášky. * * @return Collection */ @@ -804,11 +809,13 @@ public function getPaidApplications(): Collection * * @return Collection */ - public function getPaidAndFreeApplications(): Collection + public function getPaidAndTransferedAndFreeApplications(): Collection { return $this->applications->filter(static fn (Application $application) => $application->getValidTo() === null && ( + $application->getState() === ApplicationState::PAID || $application->getState() === ApplicationState::PAID_FREE || - $application->getState() === ApplicationState::PAID)); + $application->getState() === ApplicationState::PAID_TRANSFERED + )); } /** @@ -1089,12 +1096,32 @@ public function hasSubevent(Subevent $subevent): bool return $this->getSubevents()->contains($subevent); } + /** + * Vrací zaplacné podakce uživatele. + * + * @return Collection + */ + public function getPaidSubevents(): Collection + { + $subevents = new ArrayCollection(); + + foreach ($this->getPaidAndTransferedAndFreeApplications() as $application) { + if ($application instanceof SubeventsApplication) { + foreach ($application->getSubevents() as $subevent) { + $subevents->add($subevent); + } + } + } + + return $subevents; + } + /** * Vrácí, zda má uživatel zaplacenou přihlášku s podakcí. */ public function hasPaidSubevent(Subevent $subevent): bool { - foreach ($this->getPaidAndFreeApplications() as $application) { + foreach ($this->getPaidAndTransferedAndFreeApplications() as $application) { if ($application instanceof SubeventsApplication && $application->getSubevents()->contains($subevent)) { return true; } diff --git a/app/Services/ApplicationService.php b/app/Services/ApplicationService.php index 6cf54860e..2aecb8e5c 100644 --- a/app/Services/ApplicationService.php +++ b/app/Services/ApplicationService.php @@ -162,7 +162,7 @@ public function register( * @throws Throwable * @throws MailingMailCreationException */ - public function updateRoles(User $user, Collection $roles, User|null $createdBy, bool $approve = false): void + public function updateRoles(User $user, Collection $roles, User|null $createdBy, bool $approve = false, bool $transfered = false): void { $rolesOld = clone $user->getRoles(); @@ -170,16 +170,18 @@ public function updateRoles(User $user, Collection $roles, User|null $createdBy, return; } - $this->em->wrapInTransaction(function () use ($user, $roles, $createdBy, $approve, $rolesOld): void { + $this->em->wrapInTransaction(function () use ($user, $roles, $createdBy, $approve, $transfered, $rolesOld): void { if ($rolesOld->contains($this->roleRepository->findBySystemName(Role::NONREGISTERED))) { $this->createRolesApplication($user, $roles, $createdBy, $approve); - $this->createSubeventsApplication( - $user, - new ArrayCollection( - [$this->subeventRepository->findImplicit()], - ), - $createdBy, - ); + if (! $transfered) { + $this->createSubeventsApplication( + $user, + new ArrayCollection( + [$this->subeventRepository->findImplicit()], + ), + $createdBy, + ); + } } else { $this->incrementRolesOccupancy($roles); @@ -206,11 +208,13 @@ public function updateRoles(User $user, Collection $roles, User|null $createdBy, $newApplication = clone $application; $newApplication->setRoles($roles); $newApplication->setFee($this->countRolesFee($roles)); - $newApplication->setState($this->getApplicationState($newApplication)); + $newApplication->setState($this->getApplicationState($newApplication, $transfered)); $newApplication->setCreatedBy($createdBy); $newApplication->setValidFrom(new DateTimeImmutable()); $this->applicationRepository->save($newApplication); + $user->addApplication($newApplication); + $application->setValidTo(new DateTimeImmutable()); $this->applicationRepository->save($application); } else { @@ -224,6 +228,8 @@ public function updateRoles(User $user, Collection $roles, User|null $createdBy, $newApplication->setValidFrom(new DateTimeImmutable()); $this->applicationRepository->save($newApplication); + $user->addApplication($newApplication); + $application->setValidTo(new DateTimeImmutable()); $this->applicationRepository->save($application); } @@ -338,13 +344,10 @@ public function cancelRegistration(User $user, string $state, User|null $created * * @throws Throwable */ - public function addSubeventsApplication(User $user, Collection $subevents, User $createdBy): void + public function addSubeventsApplication(User $user, Collection $subevents, User $createdBy, bool $transfered = false): void { - $this->em->wrapInTransaction(function () use ($user, $subevents, $createdBy): void { - $this->incrementSubeventsOccupancy($subevents); - - $this->createSubeventsApplication($user, $subevents, $createdBy); - + $this->em->wrapInTransaction(function () use ($user, $subevents, $createdBy, $transfered): void { + $this->createSubeventsApplication($user, $subevents, $createdBy, $transfered); $this->eventBus->handle(new ApplicationUpdatedEvent($user)); $this->updateUserPaymentInfo($user); }); @@ -567,12 +570,14 @@ public function createPayment( if ($pairedApplication) { if ( $pairedApplication->getState() === ApplicationState::PAID || - $pairedApplication->getState() === ApplicationState::PAID_FREE + $pairedApplication->getState() === ApplicationState::PAID_FREE || + $pairedApplication->getState() === ApplicationState::PAID_TRANSFERED ) { $payment->setState(PaymentState::NOT_PAIRED_PAID); } elseif ( $pairedApplication->getState() === ApplicationState::CANCELED || - $pairedApplication->getState() === ApplicationState::CANCELED_NOT_PAID + $pairedApplication->getState() === ApplicationState::CANCELED_NOT_PAID || + $pairedApplication->getState() === ApplicationState::CANCELED_TRANSFERED ) { $payment->setState(PaymentState::NOT_PAIRED_CANCELED); } elseif (abs($pairedApplication->getFee() - $amount) >= 0.01) { @@ -726,7 +731,7 @@ public function getStateText(Application $application): string */ public function isAllowedEditRegistration(User $user): bool { - return ! $user->isInRoleWithSystemName(Role::NONREGISTERED) + return $user->isRegistered() && ! $user->hasPaidAnyApplication() && $this->queryBus->handle( new SettingDateValueQuery(Settings::EDIT_REGISTRATION_TO), @@ -757,7 +762,7 @@ public function isAllowedEditApplication(Application $application): bool */ public function isAllowedAddApplication(User $user): bool { - return ! $user->isInRoleWithSystemName(Role::NONREGISTERED) + return $user->isRegistered() && $user->hasPaidEveryApplication() && $this->queryBus->handle( new SettingBoolValueQuery(Settings::IS_ALLOWED_ADD_SUBEVENTS_AFTER_PAYMENT), @@ -768,6 +773,83 @@ public function isAllowedAddApplication(User $user): bool ->setTime(0, 0); } + /** + * Převede registraci (role i podakce) na nového uživatele. + * + * Duplicitní role a podakce budou uvolněny. Nekompatibilní role nebo podakce nebudou přidány. + */ + public function transferRegistration(User $sourceUser, User $targetUser, User $createdBy): void + { + $this->em->wrapInTransaction(function () use ($sourceUser, $targetUser, $createdBy): void { + $sourceUserRoles = $sourceUser->getRoles(); + $targetUserRoles = $targetUser->getRoles(); + + // přidání všech rolí od zdrojového uživatele (kromě rolí nekompatibilních s jeho stávajícími) + /** @var ArrayCollection $targetRoles */ + $targetRoles = new ArrayCollection(); + foreach ($sourceUserRoles as $role) { + if (! $targetRoles->contains($role)) { + foreach ($role->getIncompatibleRoles() as $incompatibleRole) { + if ($targetUserRoles->contains($incompatibleRole)) { + continue 2; + } + } + + $targetRoles->add($role); + } + } + + // přidání zaplacených rolí cílového uživatele + if ($targetUser->isRegistered() && $targetUser->hasPaidRolesApplication()) { + foreach ($targetUserRoles as $role) { + if (! $targetRoles->contains($role)) { + $targetRoles->add($role); + } + } + } + + $sourceUserPaidSubevents = $sourceUser->getPaidSubevents(); + $targetUserPaidSubevents = $targetUser->getPaidSubevents(); + + // přidání zaplacených podakcí od zdrojového uživatele (kromě podakcí nekompatibilních s jeho stávajícími) + /** @var ArrayCollection $targetSubevents */ + $targetSubevents = new ArrayCollection(); + foreach ($sourceUserPaidSubevents as $subevent) { + if (! $targetSubevents->contains($subevent)) { + foreach ($subevent->getIncompatibleSubevents() as $incompatibleSubevent) { + if ($targetUserPaidSubevents->contains($incompatibleSubevent)) { + continue 2; + } + } + + $targetSubevents->add($subevent); + } + } + + // odebrání podakcí, které už cílový uživatel má, ale budou mu přidány převodem + foreach ($targetUser->getNotCanceledSubeventsApplications() as $application) { + $remainingSubevents = new ArrayCollection(); + + foreach ($application->getSubevents() as $subevent) { + if (! $targetSubevents->contains($subevent)) { + $remainingSubevents->add($subevent); + } + } + + if ($remainingSubevents->isEmpty()) { + $this->cancelSubeventsApplication($application, ApplicationState::CANCELED, $createdBy); + } else { + $this->updateSubeventsApplication($application, $remainingSubevents, $createdBy); + } + } + + $this->updateRoles($targetUser, $targetRoles, $createdBy, false, true); + $this->addSubeventsApplication($targetUser, $targetSubevents, $createdBy, true); + + $this->cancelRegistration($sourceUser, ApplicationState::CANCELED_TRANSFERED, $createdBy); + }); + } + /** * Může uživatel upravovat vlastní pole přihlášky? * @@ -778,7 +860,7 @@ public function isAllowedEditCustomInputs(): bool return $this->queryBus->handle( new SettingDateValueQuery(Settings::EDIT_CUSTOM_INPUTS_TO), ) >= (new DateTimeImmutable()) - ->setTime(0, 0); + ->setTime(0, 0); } /** @@ -791,7 +873,7 @@ public function isAllowedEditCustomInputs(): bool */ private function createRolesApplication(User $user, Collection $roles, User $createdBy, bool $approve = false): RolesApplication { - if (! $user->isInRoleWithSystemName(Role::NONREGISTERED)) { + if ($user->isRegistered()) { throw new InvalidArgumentException('User is already registered.'); } @@ -844,6 +926,7 @@ private function createSubeventsApplication( User $user, Collection $subevents, User $createdBy, + bool $transfered = false, ): SubeventsApplication { $this->incrementSubeventsOccupancy($subevents); @@ -852,7 +935,7 @@ private function createSubeventsApplication( $application->setApplicationDate(new DateTimeImmutable()); $application->setFee($this->countSubeventsFee($user->getRoles(), $subevents)); $application->setMaturityDate($this->countMaturityDate()); - $application->setState($this->getApplicationState($application)); + $application->setState($this->getApplicationState($application, $transfered)); $application->setCreatedBy($createdBy); $application->setValidFrom(new DateTimeImmutable()); $application->setVariableSymbol($this->generateVariableSymbol()); @@ -971,7 +1054,7 @@ private function countSubeventsFee(Collection $roles, Collection $subevents): in /** * Určí stav přihlášky. */ - private function getApplicationState(Application $application): string + private function getApplicationState(Application $application, bool $transfered = false): string { if ($application->getState() === ApplicationState::CANCELED) { return ApplicationState::CANCELED; @@ -981,6 +1064,14 @@ private function getApplicationState(Application $application): string return ApplicationState::CANCELED_NOT_PAID; } + if ($application->getState() === ApplicationState::CANCELED_TRANSFERED) { + return ApplicationState::CANCELED_TRANSFERED; + } + + if ($transfered || $application->getState() === ApplicationState::PAID_TRANSFERED) { + return ApplicationState::PAID_TRANSFERED; + } + if ($application->getFee() === 0) { return ApplicationState::PAID_FREE; } diff --git a/app/Services/SkautIsService.php b/app/Services/SkautIsService.php index 2bdce622a..f34834b0f 100644 --- a/app/Services/SkautIsService.php +++ b/app/Services/SkautIsService.php @@ -9,6 +9,7 @@ use Nette\Caching\Cache; use Nette\Caching\Storage; use Skaut\Skautis\Skautis; +use Skaut\Skautis\Wsdl\AuthenticationException; use stdClass; use Throwable; @@ -50,7 +51,11 @@ public function isLoggedIn(): bool $logoutTime = clone($this->skautIs->getUser()->getLogoutDate()); $hardCheck = $logoutTime->diff(new DateTimeImmutable())->i < 15; // pokud od posledniho obnoveni prihlaseni ubehlo 15 minut - return $this->skautIs->getUser()->isLoggedIn($hardCheck); + try { + return $this->skautIs->getUser()->isLoggedIn($hardCheck); + } catch (AuthenticationException) { + return false; + } } /** diff --git a/app/WebModule/Presenters/WebBasePresenter.php b/app/WebModule/Presenters/WebBasePresenter.php index 5bbdb1f8c..4069bf859 100644 --- a/app/WebModule/Presenters/WebBasePresenter.php +++ b/app/WebModule/Presenters/WebBasePresenter.php @@ -89,8 +89,7 @@ public function beforeRender(): void $this->template->seminarName = $this->queryBus->handle(new SettingStringValueQuery(Settings::SEMINAR_NAME)); $this->template->trackingCode = $this->queryBus->handle(new SettingStringValueQuery(Settings::TRACKING_CODE)); - $this->template->nonregisteredRole = Role::NONREGISTERED; - $this->template->testRole = Role::TEST; + $this->template->testRole = Role::TEST; $this->template->adminAccess = $this->user->isAllowed(SrsResource::ADMIN, Permission::ACCESS); diff --git a/app/WebModule/Presenters/templates/Profile/default.latte b/app/WebModule/Presenters/templates/Profile/default.latte index 2a0e5d03e..435eb7ea2 100644 --- a/app/WebModule/Presenters/templates/Profile/default.latte +++ b/app/WebModule/Presenters/templates/Profile/default.latte @@ -21,7 +21,7 @@ {_web.profile.seminar.attendance}
- {if $dbUser->isInRoleWithSystemName($nonregisteredRole)} + {if !$dbUser->isRegistered()} {_web.profile.seminar.nonregistered} {elseif !$dbUser->isApproved()} {_web.profile.seminar.unapproved} diff --git a/app/lang/admin.cs_CZ.neon b/app/lang/admin.cs_CZ.neon index 5c066933e..59fee6829 100644 --- a/app/lang/admin.cs_CZ.neon +++ b/app/lang/admin.cs_CZ.neon @@ -435,6 +435,9 @@ users: users_attended_detail: "Přítomen" users_private_note: "Neveřejná poznámka" users_not_registered_mandatory_blocks: "Nepřihlášené povinné bloky" + users_target_user: "Cílový uživatel" + users_target_user_empty: "Vyberte cílového uživatele." + users_target_user_same: "Cílový uživatel nesmí být stejný." users_from: "Od" users_to: "Do" users_program_name: "Program" @@ -442,6 +445,7 @@ users: users_lectors: "Lektoři" users_changed_attended: "Účast uživatele byla úspěšně upravena." users_saved: "Uživatel byl úspěšně uložen." + users_transfered: "Registrace byla úspěšně převedena." users_group_action_approve: "Schválit" users_group_action_approved: "Vybraní uživatelé byli úspěšně schváleni." users_group_action_mark_paid_today: "Označit jako zaplacené dnes" @@ -474,6 +478,8 @@ users: users_edit_roles_empty: "Musí být vybrána alespoň jedna role." users_edit_roles_occupied: "Všechna místa v některé roli jsou obsazena." users_edit_roles_nonregistered: "Roli \"Nepřihlášený\" není možné nastavit, použijte odhlášení ze semináře." + users_transfer: "Převést registraci" + users_transfer_confirm: "Opravdu chcete registraci převést na nového uživatele?" users_applications_application_date: "Čas přihlášení" users_applications_roles: "Role" @@ -502,8 +508,9 @@ users: users_applications_application_canceled: "Dodatečná přihláška byla úspěšně zrušena." users_detail_heading: "Detail uživatele: %name%" users_detail_personal_details: "Osobní údaje" - users_detail_seminar: "Účast na semináři" users_detail_applications: "Role a platby" + users_detail_seminar: "Účast na semináři" + users_detail_transfer: "Převod registrace" users_detail_schedule: "Harmonogram" users_detail_birthdate_age: "%birthdate% (%age% let)" diff --git a/app/lang/common.cs_CZ.neon b/app/lang/common.cs_CZ.neon index 525c31ce5..1ffee829d 100644 --- a/app/lang/common.cs_CZ.neon +++ b/app/lang/common.cs_CZ.neon @@ -116,9 +116,11 @@ skautis_event_insert_type: application_state: waiting_for_payment: "Čeká na platbu" canceled_not_paid: "Zrušeno (nezaplaceno)" + canceled_transfered: "Zrušeno (převedeno)" canceled: "Zrušeno" paid: "Zaplaceno" paid_free: "Zaplaceno (zdarma)" + paid_transfered: "Zaplaceno (převedeno)" calendar_view: timeGridSeminar: "Na výšku" diff --git a/composer.lock b/composer.lock index 10024aea7..9b665bb60 100644 --- a/composer.lock +++ b/composer.lock @@ -2014,16 +2014,16 @@ }, { "name": "doctrine/persistence", - "version": "3.3.3", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "b337726451f5d530df338fc7f68dee8781b49779" + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/b337726451f5d530df338fc7f68dee8781b49779", - "reference": "b337726451f5d530df338fc7f68dee8781b49779", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", "shasum": "" }, "require": { @@ -2037,12 +2037,11 @@ "require-dev": { "doctrine/coding-standard": "^12", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.11.1", + "phpstan/phpstan": "1.12.7", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.24.0" + "phpunit/phpunit": "^8.5.38 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -2091,7 +2090,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.3.3" + "source": "https://github.com/doctrine/persistence/tree/3.4.0" }, "funding": [ { @@ -2107,7 +2106,7 @@ "type": "tidelift" } ], - "time": "2024-06-20T10:14:30+00:00" + "time": "2024-10-30T19:48:12+00:00" }, { "name": "eluceo/ical", @@ -2521,16 +2520,16 @@ }, { "name": "guzzlehttp/promises", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { @@ -2584,7 +2583,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -2600,7 +2599,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2024-10-17T10:06:22+00:00" }, { "name": "guzzlehttp/psr7", @@ -2940,27 +2939,27 @@ }, { "name": "laminas/laminas-code", - "version": "4.14.0", + "version": "4.15.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c" + "reference": "877ad42fe9c164785182fca8afa3f416a056884d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/562e02b7d85cb9142b5116cc76c4c7c162a11a1c", - "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/877ad42fe9c164785182fca8afa3f416a056884d", + "reference": "877ad42fe9c164785182fca8afa3f416a056884d", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.5.0", - "laminas/laminas-stdlib": "^3.17.0", - "phpunit/phpunit": "^10.3.3", + "laminas/laminas-coding-standard": "^3.0.0", + "laminas/laminas-stdlib": "^3.18.0", + "phpunit/phpunit": "^10.5.37", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "^5.15.0" }, @@ -2999,7 +2998,7 @@ "type": "community_bridge" } ], - "time": "2024-06-17T08:50:25+00:00" + "time": "2024-10-25T10:15:16+00:00" }, { "name": "latte/latte", @@ -3567,16 +3566,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -3615,7 +3614,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -3623,7 +3622,7 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "nette/application", @@ -6369,16 +6368,16 @@ }, { "name": "symfony/amqp-messenger", - "version": "v5.4.41", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "ccadd8d21b34751f253c88cfc1ac3ae2c6d5ebae" + "reference": "822ad5f425ef362580273a175c45aa765220fe73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/ccadd8d21b34751f253c88cfc1ac3ae2c6d5ebae", - "reference": "ccadd8d21b34751f253c88cfc1ac3ae2c6d5ebae", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/822ad5f425ef362580273a175c45aa765220fe73", + "reference": "822ad5f425ef362580273a175c45aa765220fe73", "shasum": "" }, "require": { @@ -6418,7 +6417,7 @@ "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.41" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.45" }, "funding": [ { @@ -6434,20 +6433,20 @@ "type": "tidelift" } ], - "time": "2024-06-16T20:56:25+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/config", - "version": "v6.4.8", + "version": "v6.4.14", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "12e7e52515ce37191b193cf3365903c4f3951e35" + "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/12e7e52515ce37191b193cf3365903c4f3951e35", - "reference": "12e7e52515ce37191b193cf3365903c4f3951e35", + "url": "https://api.github.com/repos/symfony/config/zipball/4e55e7e4ffddd343671ea972216d4509f46c22ef", + "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef", "shasum": "" }, "require": { @@ -6493,7 +6492,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/v6.4.8" + "source": "https://github.com/symfony/config/tree/v6.4.14" }, "funding": [ { @@ -6509,20 +6508,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-11-04T11:33:53+00:00" }, { "name": "symfony/console", - "version": "v5.4.44", + "version": "v5.4.46", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "5b5a0aa66e3296e303e22490f90f521551835a83" + "reference": "fb0d4760e7147d81ab4d9e2d57d56268261b4e4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83", - "reference": "5b5a0aa66e3296e303e22490f90f521551835a83", + "url": "https://api.github.com/repos/symfony/console/zipball/fb0d4760e7147d81ab4d9e2d57d56268261b4e4e", + "reference": "fb0d4760e7147d81ab4d9e2d57d56268261b4e4e", "shasum": "" }, "require": { @@ -6592,7 +6591,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.44" + "source": "https://github.com/symfony/console/tree/v5.4.46" }, "funding": [ { @@ -6608,7 +6607,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T07:56:40+00:00" + "time": "2024-11-05T14:17:06+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6679,16 +6678,16 @@ }, { "name": "symfony/doctrine-messenger", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "68ae3eeb7ee515d77fe6d0164c8df42c2ebad513" + "reference": "c4afe708134a4506316955d1c009bc6091b16b2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/68ae3eeb7ee515d77fe6d0164c8df42c2ebad513", - "reference": "68ae3eeb7ee515d77fe6d0164c8df42c2ebad513", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/c4afe708134a4506316955d1c009bc6091b16b2d", + "reference": "c4afe708134a4506316955d1c009bc6091b16b2d", "shasum": "" }, "require": { @@ -6731,7 +6730,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.12" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.13" }, "funding": [ { @@ -6747,20 +6746,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:15:52+00:00" + "time": "2024-10-18T09:45:38+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.40", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4" + "reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4", - "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/72982eb416f61003e9bb6e91f8b3213600dcf9e9", + "reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9", "shasum": "" }, "require": { @@ -6816,7 +6815,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/v5.4.40" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.45" }, "funding": [ { @@ -6832,7 +6831,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -6912,16 +6911,16 @@ }, { "name": "symfony/filesystem", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a" + "reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/61fe0566189bf32e8cfee78335d8776f64a66f5a", - "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/c835867b3c62bb05c7fe3d637c871c7ae52024d4", + "reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4", "shasum": "" }, "require": { @@ -6958,7 +6957,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.5" + "source": "https://github.com/symfony/filesystem/tree/v7.1.6" }, "funding": [ { @@ -6974,20 +6973,20 @@ "type": "tidelift" } ], - "time": "2024-09-17T09:16:35+00:00" + "time": "2024-10-25T15:11:02+00:00" }, { "name": "symfony/messenger", - "version": "v5.4.44", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "e37c51b0740300f3a36f98ffb7125389f1e278c1" + "reference": "c21d463ba813a3fe9833f46114310fac99bd66e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/e37c51b0740300f3a36f98ffb7125389f1e278c1", - "reference": "e37c51b0740300f3a36f98ffb7125389f1e278c1", + "url": "https://api.github.com/repos/symfony/messenger/zipball/c21d463ba813a3fe9833f46114310fac99bd66e0", + "reference": "c21d463ba813a3fe9833f46114310fac99bd66e0", "shasum": "" }, "require": { @@ -7048,7 +7047,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v5.4.44" + "source": "https://github.com/symfony/messenger/tree/v5.4.45" }, "funding": [ { @@ -7064,20 +7063,20 @@ "type": "tidelift" } ], - "time": "2024-09-08T09:19:02+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.4.8", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b" + "reference": "0a62a9f2504a8dd27083f89d21894ceb01cc59db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22ab9e9101ab18de37839074f8a1197f55590c1b", - "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0a62a9f2504a8dd27083f89d21894ceb01cc59db", + "reference": "0a62a9f2504a8dd27083f89d21894ceb01cc59db", "shasum": "" }, "require": { @@ -7115,7 +7114,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.8" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.13" }, "funding": [ { @@ -7131,7 +7130,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7674,16 +7673,16 @@ }, { "name": "symfony/property-access", - "version": "v7.1.4", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "6c709f97103355016e5782d0622437ae381012ad" + "reference": "975d7f7fd8fcb952364c6badc46d01a580532bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/6c709f97103355016e5782d0622437ae381012ad", - "reference": "6c709f97103355016e5782d0622437ae381012ad", + "url": "https://api.github.com/repos/symfony/property-access/zipball/975d7f7fd8fcb952364c6badc46d01a580532bf9", + "reference": "975d7f7fd8fcb952364c6badc46d01a580532bf9", "shasum": "" }, "require": { @@ -7730,7 +7729,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.1.4" + "source": "https://github.com/symfony/property-access/tree/v7.1.6" }, "funding": [ { @@ -7746,20 +7745,20 @@ "type": "tidelift" } ], - "time": "2024-08-30T16:12:47+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/property-info", - "version": "v7.1.3", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b" + "reference": "6b630ff585d9fdc72f50369885ad4364a849cf02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", - "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", + "url": "https://api.github.com/repos/symfony/property-info/zipball/6b630ff585d9fdc72f50369885ad4364a849cf02", + "reference": "6b630ff585d9fdc72f50369885ad4364a849cf02", "shasum": "" }, "require": { @@ -7814,7 +7813,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.1.3" + "source": "https://github.com/symfony/property-info/tree/v7.1.6" }, "funding": [ { @@ -7830,20 +7829,20 @@ "type": "tidelift" } ], - "time": "2024-07-26T07:36:36+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/redis-messenger", - "version": "v5.4.43", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "df48a300cc4537c0e152551651e72da59b03f7d5" + "reference": "8e840dd8f9c18ba0863697ad470f6732821922b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/df48a300cc4537c0e152551651e72da59b03f7d5", - "reference": "df48a300cc4537c0e152551651e72da59b03f7d5", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/8e840dd8f9c18ba0863697ad470f6732821922b3", + "reference": "8e840dd8f9c18ba0863697ad470f6732821922b3", "shasum": "" }, "require": { @@ -7881,7 +7880,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.4.43" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.45" }, "funding": [ { @@ -7897,7 +7896,7 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:35:43+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/service-contracts", @@ -7984,16 +7983,16 @@ }, { "name": "symfony/stopwatch", - "version": "v5.4.40", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625" + "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0e9daf3b7c805c747638b2cc48f1649e594f9625", - "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb2c199cf302eb207f8c23e7ee174c1c31a5c004", + "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004", "shasum": "" }, "require": { @@ -8026,7 +8025,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.40" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.45" }, "funding": [ { @@ -8042,20 +8041,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/string", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f8a1ccebd0997e16112dfecfd74220b78e5b284b" + "reference": "38371c60c71c72b3d64d8d76f6b1bb81a2cc3627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f8a1ccebd0997e16112dfecfd74220b78e5b284b", - "reference": "f8a1ccebd0997e16112dfecfd74220b78e5b284b", + "url": "https://api.github.com/repos/symfony/string/zipball/38371c60c71c72b3d64d8d76f6b1bb81a2cc3627", + "reference": "38371c60c71c72b3d64d8d76f6b1bb81a2cc3627", "shasum": "" }, "require": { @@ -8112,7 +8111,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.12" + "source": "https://github.com/symfony/string/tree/v6.4.13" }, "funding": [ { @@ -8128,20 +8127,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:15:52+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/translation", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "cf8360b8352b086be620fae8342c4d96e391a489" + "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/cf8360b8352b086be620fae8342c4d96e391a489", - "reference": "cf8360b8352b086be620fae8342c4d96e391a489", + "url": "https://api.github.com/repos/symfony/translation/zipball/bee9bfabfa8b4045a66bf82520e492cddbaffa66", + "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66", "shasum": "" }, "require": { @@ -8207,7 +8206,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.12" + "source": "https://github.com/symfony/translation/tree/v6.4.13" }, "funding": [ { @@ -8223,7 +8222,7 @@ "type": "tidelift" } ], - "time": "2024-09-16T06:02:54+00:00" + "time": "2024-09-27T18:14:25+00:00" }, { "name": "symfony/translation-contracts", @@ -8305,16 +8304,16 @@ }, { "name": "symfony/type-info", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "9f6094aa900d2c06bd61576a6f279d4ac441515f" + "reference": "a13032128c307470955c45c99201349b15cd7f4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/9f6094aa900d2c06bd61576a6f279d4ac441515f", - "reference": "9f6094aa900d2c06bd61576a6f279d4ac441515f", + "url": "https://api.github.com/repos/symfony/type-info/zipball/a13032128c307470955c45c99201349b15cd7f4a", + "reference": "a13032128c307470955c45c99201349b15cd7f4a", "shasum": "" }, "require": { @@ -8367,7 +8366,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.1.5" + "source": "https://github.com/symfony/type-info/tree/v7.1.6" }, "funding": [ { @@ -8383,20 +8382,20 @@ "type": "tidelift" } ], - "time": "2024-09-19T21:48:23+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.44", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a" + "reference": "a454d47278cc16a5db371fe73ae66a78a633371e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/7025b964f123bbf1896d7563db6ec7f1f63e918a", - "reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a454d47278cc16a5db371fe73ae66a78a633371e", + "reference": "a454d47278cc16a5db371fe73ae66a78a633371e", "shasum": "" }, "require": { @@ -8442,7 +8441,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.44" + "source": "https://github.com/symfony/yaml/tree/v5.4.45" }, "funding": [ { @@ -8458,20 +8457,20 @@ "type": "tidelift" } ], - "time": "2024-09-16T14:36:56+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "tracy/tracy", - "version": "v2.10.8", + "version": "v2.10.9", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "0e0f3312708fb9c179a92072ebacc24aeee7e2e8" + "reference": "e7af75205b184ca8895bc57fafd331f8d5022d26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/0e0f3312708fb9c179a92072ebacc24aeee7e2e8", - "reference": "0e0f3312708fb9c179a92072ebacc24aeee7e2e8", + "url": "https://api.github.com/repos/nette/tracy/zipball/e7af75205b184ca8895bc57fafd331f8d5022d26", + "reference": "e7af75205b184ca8895bc57fafd331f8d5022d26", "shasum": "" }, "require": { @@ -8531,9 +8530,9 @@ ], "support": { "issues": "https://github.com/nette/tracy/issues", - "source": "https://github.com/nette/tracy/tree/v2.10.8" + "source": "https://github.com/nette/tracy/tree/v2.10.9" }, - "time": "2024-08-07T02:04:53+00:00" + "time": "2024-11-07T14:48:00+00:00" }, { "name": "ublaboo/datagrid", @@ -8732,25 +8731,25 @@ "packages-dev": [ { "name": "behat/gherkin", - "version": "v4.9.0", + "version": "v4.10.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" + "reference": "cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6", + "reference": "cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6", "shasum": "" }, "require": { "php": "~7.2|~8.0" }, "require-dev": { - "cucumber/cucumber": "dev-gherkin-22.0.0", + "cucumber/cucumber": "dev-gherkin-24.1.0", "phpunit/phpunit": "~8|~9", - "symfony/yaml": "~3|~4|~5" + "symfony/yaml": "~3|~4|~5|~6|~7" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -8789,9 +8788,9 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" + "source": "https://github.com/Behat/Gherkin/tree/v4.10.0" }, - "time": "2021-10-12T13:05:09+00:00" + "time": "2024-10-19T14:46:06+00:00" }, { "name": "codeception/codeception", @@ -9928,16 +9927,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.7", + "version": "1.12.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0" + "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", - "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6a60a4d66142b8156c9da923f1972657bc4748c", + "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c", "shasum": "" }, "require": { @@ -9982,20 +9981,20 @@ "type": "github" } ], - "time": "2024-10-18T11:12:07+00:00" + "time": "2024-11-06T19:06:49+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.5.5", + "version": "1.5.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "4e9c77fc7bc3293f773fb2d8155c99572a3c89a4" + "reference": "8ba022846e79238872e315fff61e19b42ba2f139" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/4e9c77fc7bc3293f773fb2d8155c99572a3c89a4", - "reference": "4e9c77fc7bc3293f773fb2d8155c99572a3c89a4", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/8ba022846e79238872e315fff61e19b42ba2f139", + "reference": "8ba022846e79238872e315fff61e19b42ba2f139", "shasum": "" }, "require": { @@ -10052,9 +10051,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.5.5" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.5.6" }, - "time": "2024-10-29T12:19:49+00:00" + "time": "2024-11-09T17:34:01+00:00" }, { "name": "phpstan/phpstan-nette", @@ -10541,16 +10540,16 @@ }, { "name": "rector/rector", - "version": "1.2.8", + "version": "1.2.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "05755bf43617449c08ee8e50fb840c85ad3b1240" + "reference": "40f9cf38c05296bd32f444121336a521a293fa61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/05755bf43617449c08ee8e50fb840c85ad3b1240", - "reference": "05755bf43617449c08ee8e50fb840c85ad3b1240", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", + "reference": "40f9cf38c05296bd32f444121336a521a293fa61", "shasum": "" }, "require": { @@ -10588,7 +10587,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.8" + "source": "https://github.com/rectorphp/rector/tree/1.2.10" }, "funding": [ { @@ -10596,7 +10595,7 @@ "type": "github" } ], - "time": "2024-10-18T11:54:27+00:00" + "time": "2024-11-08T13:59:10+00:00" }, { "name": "roave/security-advisories", @@ -10604,20 +10603,20 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "c3c55a0f6643119fa8699577cc83ca6256d98ab5" + "reference": "e63317470a1b96346be224a68f9e64567e1001c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/c3c55a0f6643119fa8699577cc83ca6256d98ab5", - "reference": "c3c55a0f6643119fa8699577cc83ca6256d98ab5", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/e63317470a1b96346be224a68f9e64567e1001c3", + "reference": "e63317470a1b96346be224a68f9e64567e1001c3", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.3.10", + "admidio/admidio": "<4.3.12", "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", "aheinze/cockpit": "<2.2", - "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.04.6", + "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", @@ -10629,6 +10628,7 @@ "alextselegidis/easyappointments": "<1.5", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", + "ameos/ameos_tarteaucitron": "<1.2.23", "amphp/artax": "<1.0.6|>=2,<2.0.6", "amphp/http": "<=1.7.2|>=2,<=2.1", "amphp/http-client": ">=4,<4.4", @@ -10661,7 +10661,7 @@ "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<5.0.9", + "baserproject/basercms": "<=5.1.1", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", "bbpress/bbpress": "<2.6.5", "bcosca/fatfree": "<3.7.2", @@ -10786,13 +10786,14 @@ "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", - "ezyang/htmlpurifier": "<4.1.1", + "ezyang/htmlpurifier": "<=4.2", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", "facturascripts/facturascripts": "<=2022.08", "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", + "filament/actions": ">=3.2,<3.2.123", "filament/infolists": ">=3,<3.2.115", "filament/tables": ">=3,<3.2.115", "filegator/filegator": "<7.8", @@ -10829,7 +10830,7 @@ "froxlor/froxlor": "<=2.2.0.0-RC3", "frozennode/administrator": "<=5.0.12", "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", + "funadmin/funadmin": "<=5.0.2", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", @@ -10928,6 +10929,7 @@ "laravel/fortify": "<1.11.1", "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", "laravel/laravel": ">=5.4,<5.4.22", + "laravel/reverb": "<1.4", "laravel/socialite": ">=1,<2.0.10", "latte/latte": "<2.10.8", "lavalite/cms": "<=9|==10.1", @@ -10946,6 +10948,7 @@ "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", + "maestroerror/php-heic-to-jpg": "<1.0.5", "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch10|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch8|>=2.4.7.0-beta1,<2.4.7.0-patch3", "magento/core": "<=1.9.4.5", "magento/magento1ce": "<1.9.4.3-dev", @@ -10959,9 +10962,10 @@ "matyhtf/framework": "<3.0.6", "mautic/core": "<4.4.13|>=5,<5.1.1", "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", + "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", "mediawiki/cargo": "<3.6.1", - "mediawiki/core": "<1.36.2", + "mediawiki/core": "<1.39.5|==1.40", "mediawiki/matomo": "<2.4.3", "mediawiki/semantic-media-wiki": "<4.0.2", "melisplatform/melis-asset-manager": "<5.0.1", @@ -10981,7 +10985,7 @@ "mojo42/jirafeau": "<4.4", "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1", + "moodle/moodle": "<4.3.6|>=4.4.0.0-beta,<4.4.2", "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", "movingbytes/social-network": "<=1.2.1", @@ -11060,7 +11064,7 @@ "phenx/php-svg-lib": "<0.5.2", "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpbb/phpbb": "<3.3.11", "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", @@ -11068,7 +11072,7 @@ "phpmyadmin/phpmyadmin": "<5.2.1", "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", "phpoffice/common": "<0.2.9", - "phpoffice/phpexcel": "<1.8", + "phpoffice/phpexcel": "<1.8.1", "phpoffice/phpspreadsheet": "<1.29.2|>=2,<2.1.1|>=2.2,<2.3", "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", "phpservermon/phpservermon": "<3.6", @@ -11106,7 +11110,7 @@ "processwire/processwire": "<=3.0.229", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.11.6", + "pterodactyl/panel": "<1.11.8", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", "pubnub/pubnub": "<6.1", @@ -11123,7 +11127,7 @@ "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<=5.15.1", + "redaxo/source": "<=5.17.1", "remdex/livehelperchat": "<4.29", "reportico-web/reportico": "<=8.1", "rhukster/dom-sanitizer": "<1.0.7", @@ -11197,7 +11201,7 @@ "subhh/libconnect": "<7.0.8|>=8,<8.1", "sukohi/surpass": "<1", "sulu/form-bundle": ">=2,<2.5.3", - "sulu/sulu": "<1.6.44|>=2,<2.6.5", + "sulu/sulu": "<1.6.44|>=2,<2.5.21|>=2.6,<2.6.5", "sumocoders/framework-user-bundle": "<1.4", "superbig/craft-audit": "<3.0.2", "swag/paypal": "<5.4.4", @@ -11219,7 +11223,8 @@ "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", - "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-client": ">=4.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/http-foundation": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", @@ -11227,20 +11232,22 @@ "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/polyfill": ">=1,<1.10", "symfony/polyfill-php55": ">=1,<1.10", + "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/routing": ">=2,<2.0.19", + "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3", "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/symfony": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/translation": ">=2,<2.0.17", "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/ux-autocomplete": "<2.11.2", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", "symfony/webhook": ">=6.3,<6.3.8", @@ -11266,14 +11273,14 @@ "tobiasbg/tablepress": "<=2.0.0.0-RC1", "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", "topthink/think": "<=6.1.1", - "topthink/thinkphp": "<=3.2.3", + "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", "torrentpier/torrentpier": "<=2.4.3", "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", "tribalsystems/zenario": "<=9.7.61188", "truckersmp/phpwhois": "<=4.3.1", "ttskch/pagination-service-provider": "<1", "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", - "twig/twig": "<1.44.8|>=2,<2.16.1|>=3,<3.11.1|>=3.12,<3.14", + "twig/twig": "<3.11.2|>=3.12,<3.14.1", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1", "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", @@ -11292,6 +11299,7 @@ "ua-parser/uap-php": "<3.8", "uasoft-indonesia/badaso": "<=2.9.7", "unisharp/laravel-filemanager": "<2.6.4", + "unopim/unopim": "<0.1.4", "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "uvdesk/community-skeleton": "<=1.1.1", @@ -11337,7 +11345,7 @@ "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", "yab/quarx": "<2.4.5", - "yeswiki/yeswiki": "<4.1", + "yeswiki/yeswiki": "<=4.4.4", "yetiforce/yetiforce-crm": "<=6.4", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", @@ -11427,7 +11435,7 @@ "type": "tidelift" } ], - "time": "2024-10-11T18:06:00+00:00" + "time": "2024-11-07T19:04:57+00:00" }, { "name": "sebastian/cli-parser", @@ -12539,16 +12547,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.4.8", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8" + "reference": "65d4b3fd9556e4b5b41287bef93c671f8f9f86ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/62ab90b92066ef6cce5e79365625b4b1432464c8", - "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/65d4b3fd9556e4b5b41287bef93c671f8f9f86ab", + "reference": "65d4b3fd9556e4b5b41287bef93c671f8f9f86ab", "shasum": "" }, "require": { @@ -12587,7 +12595,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.8" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.13" }, "funding": [ { @@ -12603,20 +12611,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-10-25T15:07:50+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.40", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ea43887e9afd2029509662d4f95e8b5ef6fc9bbb" + "reference": "4f7f3c35fba88146b56d0025d20ace3f3901f097" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ea43887e9afd2029509662d4f95e8b5ef6fc9bbb", - "reference": "ea43887e9afd2029509662d4f95e8b5ef6fc9bbb", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4f7f3c35fba88146b56d0025d20ace3f3901f097", + "reference": "4f7f3c35fba88146b56d0025d20ace3f3901f097", "shasum": "" }, "require": { @@ -12653,7 +12661,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.40" + "source": "https://github.com/symfony/css-selector/tree/v5.4.45" }, "funding": [ { @@ -12669,20 +12677,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "9d307ecbcb917001692be333cdc58f474fdb37f0" + "reference": "ae074dffb018c37a57071990d16e6152728dd972" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/9d307ecbcb917001692be333cdc58f474fdb37f0", - "reference": "9d307ecbcb917001692be333cdc58f474fdb37f0", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/ae074dffb018c37a57071990d16e6152728dd972", + "reference": "ae074dffb018c37a57071990d16e6152728dd972", "shasum": "" }, "require": { @@ -12720,7 +12728,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.12" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.13" }, "funding": [ { @@ -12736,20 +12744,20 @@ "type": "tidelift" } ], - "time": "2024-09-15T06:35:36+00:00" + "time": "2024-10-25T15:07:50+00:00" }, { "name": "symfony/finder", - "version": "v5.4.43", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ae25a9145a900764158d439653d5630191155ca0" + "reference": "63741784cd7b9967975eec610b256eed3ede022b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0", - "reference": "ae25a9145a900764158d439653d5630191155ca0", + "url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b", + "reference": "63741784cd7b9967975eec610b256eed3ede022b", "shasum": "" }, "require": { @@ -12783,7 +12791,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.43" + "source": "https://github.com/symfony/finder/tree/v5.4.45" }, "funding": [ { @@ -12799,7 +12807,7 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:03:51+00:00" + "time": "2024-09-28T13:32:08+00:00" }, { "name": "theseer/tokenizer", @@ -12855,10 +12863,10 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "vojtys/nette-forms-gpspicker": 20, - "skautis/skautis": 15, + "roave/security-advisories": 20, "skautis/nette": 15, - "roave/security-advisories": 20 + "skautis/skautis": 15, + "vojtys/nette-forms-gpspicker": 20 }, "prefer-stable": false, "prefer-lowest": false, @@ -12872,6 +12880,6 @@ "ext-mysqli": "*", "ext-soap": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" }