From fa6f5743ea4cd7f46c96d217c18e4d85fe92f820 Mon Sep 17 00:00:00 2001 From: smarcet Date: Tue, 23 Feb 2021 13:38:43 -0300 Subject: [PATCH] Laravel upgrade * from 5.6.x to 5.7.x * from 5.7.x to 5.8.x * from 5.8.x to 6.x * from 6.x to 7.x * from 7.x to 8.x * php 7.4 support * mysql 8.x support Change-Id: I10a0a626363be3769ba70653b4943eaa2f2fb0b7 Signed-off-by: smarcet --- .gitignore | 3 +- Libs/Utils/CustomDoctrineServiceProvider.php | 54 - Libs/Utils/CustomEntityManagerFactory.php | 88 - Libs/Utils/Doctrine/EscapingQuoteStrategy.php | 176 + Libs/Utils/JsonUtils.php | 2 +- ...inActionsCalendarSyncProcessingCommand.php | 84 - ...erActionsCalendarSyncProcessingCommand.php | 91 - .../SummitEmailFlowEventSeederCommand.php | 4 +- .../SummitEmailFlowTypeSeederCommand.php | 3 +- app/Console/Commands/SummitForwardXDays.php | 7 +- app/Console/Kernel.php | 14 - app/Exceptions/Handler.php | 11 +- .../Apis/CountriesApiController.php | 4 +- .../Apis/LanguagesApiController.php | 4 +- .../AbstractCompanyServiceApiController.php | 17 +- .../Marketplace/AppliancesApiController.php | 10 - .../DistributionsApiController.php | 12 - .../Main/OAuth2GroupsApiController.php | 17 +- .../Main/OAuth2MembersApiController.php | 27 +- .../Main/OAuth2OrganizationsApiController.php | 19 +- .../Main/OAuth2TagsApiController.php | 21 +- .../OAuth2TeamInvitationsApiController.php | 8 +- .../Main/OAuth2TeamsApiController.php | 29 +- ...xtraQuestionTypeValidationRulesFactory.php | 2 +- .../OAuth2PresentationApiController.php | 15 +- ...th2PresentationCategoryGroupController.php | 36 +- ...2SpeakerActiveInvolvementApiController.php | 4 +- ...SpeakerOrganizationalRoleApiController.php | 4 +- .../OAuth2SponsorshipTypeApiController.php | 5 +- .../Summit/OAuth2SummitApiController.php | 6 +- .../OAuth2SummitAttendeesApiController.php | 15 +- .../OAuth2SummitBadgeScanApiController.php | 3 +- ...ookableRoomsAttributeTypeApiController.php | 42 +- .../OAuth2SummitEventsApiController.php | 29 +- .../OAuth2SummitLocationsApiController.php | 93 +- .../OAuth2SummitMembersApiController.php | 39 +- .../OAuth2SummitMetricsApiController.php | 9 +- ...OAuth2SummitNotificationsApiController.php | 5 +- ...mitOrderExtraQuestionTypeApiController.php | 5 +- .../OAuth2SummitOrdersApiController.php | 9 +- ...2SummitPresentationActionApiController.php | 5 +- .../OAuth2SummitPromoCodesApiController.php | 37 +- ...OAuth2SummitRSVPTemplatesApiController.php | 29 +- ...mitRegistrationInvitationApiController.php | 11 +- ...Auth2SummitSelectionPlansApiController.php | 4 +- .../OAuth2SummitSpeakersApiController.php | 15 +- ...2SummitSpeakersAssistanceApiController.php | 35 +- .../OAuth2SummitTicketApiController.php | 3 +- .../OAuth2SummitTrackChairsApiController.php | 3 +- ...Auth2SummitTrackTagGroupsApiController.php | 23 +- .../OAuth2SummitTracksApiController.php | 37 +- .../OAuth2SummitsEventTypesApiController.php | 38 +- .../OAuth2SummitsTicketTypesApiController.php | 35 +- ...th2TrackQuestionsTemplateApiController.php | 25 +- ...ieveAllUnPublishedSummitEventsStrategy.php | 8 +- .../events/RetrieveSummitEventsStrategy.php | 18 +- .../Protected/Summit/Traits/AddEntity.php | 3 +- .../Summit/Traits/AddSummitChildElement.php | 3 +- .../Apis/Protected/Summit/Traits/GetAll.php | 17 +- .../Traits/GetAndValidateJsonPayload.php | 3 +- .../Traits/GetSummitChildElementById.php | 2 +- .../Summit/Traits/ParametrizedAddEntity.php | 3 +- .../Summit/Traits/ParametrizedGetAll.php | 1 - .../Traits/ParametrizedUpdateEntity.php | 3 +- .../Traits/SummitBookableVenueRoomApi.php | 56 +- .../Protected/Summit/Traits/UpdateEntity.php | 3 +- .../Traits/UpdateSummitChildElement.php | 3 +- .../Apis/TimezonesApiController.php | 4 +- .../Controllers/ConfigurationsController.php | 1 - app/Http/Controllers/JsonController.php | 18 +- app/Http/Kernel.php | 32 +- app/Http/Middleware/Authenticate.php | 25 +- app/Http/Middleware/CORSMiddleware.php | 531 -- .../Middleware/CORSRequestPreflightData.php | 82 - .../Middleware/CORSRequestPreflightType.php | 36 - .../Middleware/CheckForMaintenanceMode.php | 17 + app/Http/Middleware/EncryptCookies.php | 55 +- app/Http/Middleware/RateLimitMiddleware.php | 37 +- .../Middleware/RedirectIfAuthenticated.php | 9 +- app/Http/Middleware/TrimStrings.php | 2 +- app/Http/Middleware/TrustProxies.php | 6 +- app/Http/Middleware/UserAuthEndpoint.php | 5 +- app/Http/Middleware/VerifyCsrfToken.php | 9 +- app/Http/Middleware/cors_server_flowchart.png | Bin 99960 -> 0 bytes app/Http/Routes/public.php | 255 - app/Http/Utils/Filters/Filter.php | 26 +- app/Http/Utils/Filters/FilterElement.php | 5 + app/Http/Utils/Filters/FilterParser.php | 1 - app/Http/Utils/Logs/LaravelMailerHandler.php | 15 +- app/Http/routes.php | 1602 ----- app/Jobs/ProcessEventDataImport.php | 5 +- app/Jobs/ProcessTicketDataImport.php | 3 +- app/Jobs/SynchAllPresentationActions.php | 3 +- app/Jobs/SynchPresentationActions.php | 3 +- .../Presentation/PresentationSerializer.php | 3 +- app/Models/Foundation/Main/Member.php | 2 + .../Materials/PresentationMaterial.php | 2 +- .../Foundation/Summit/Events/SummitEvent.php | 6 +- .../Locations/SummitRoomReservation.php | 8 +- .../Attendees/SummitAttendeeTicket.php | 4 +- .../Summit/Registration/SummitOrder.php | 8 +- .../Summit/Speakers/PresentationSpeaker.php | 6 +- app/Models/Foundation/Summit/Sponsor.php | 11 +- app/Models/Foundation/Summit/Summit.php | 6 +- app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 2 +- app/Providers/RouteServiceProvider.php | 73 +- app/Queue/RabbitMQ/RabbitMQConnector.php | 133 - app/Queue/RabbitMQ/RabbitMQJob.php | 176 - app/Queue/RabbitMQ/RabbitMQQueue.php | 803 --- app/Queue/RabbitMQServiceProvider.php | 48 - .../Summit/DoctrineSummitEventRepository.php | 57 +- .../Apis/PaymentGateways/StripeApi.php | 104 +- ...ISummitSelectedPresentationListService.php | 2 +- app/Services/Model/Imp/MemberService.php | 4 +- .../Imp/PresentationCategoryGroupService.php | 14 +- .../Model/Imp/PresentationService.php | 12 +- .../PresentationVideoMediaUploadProcessor.php | 6 +- .../Model/Imp/SponsorUserInfoGrantService.php | 8 +- .../Model/Imp/SummitEventTypeService.php | 8 +- .../Model/Imp/SummitLocationService.php | 32 +- app/Services/Model/Imp/SummitOrderService.php | 63 +- .../SummitSelectedPresentationListService.php | 2 - app/Services/Model/Imp/SummitService.php | 18 +- .../Model/Imp/SummitTicketTypeService.php | 8 +- app/Services/Model/Imp/SummitTrackService.php | 8 +- app/Services/ModelServicesProvider.php | 65 - bindep.txt | 24 +- clear_logs.sh | 2 +- composer.json | 58 +- composer.lock | 5817 ++++++++++++----- config/app.php | 13 +- config/cors.php | 105 +- config/database.php | 1 + config/doctrine.php | 18 +- .../config/Version20190422160409.php | 4 +- .../config/Version20190828142430.php | 4 +- .../config/Version20190828143005.php | 4 +- .../config/Version20200123174717.php | 4 +- .../model/Version20190422151949.php | 4 +- .../model/Version20190506153014.php | 4 +- .../model/Version20190506153909.php | 4 +- .../model/Version20190529015655.php | 4 +- .../model/Version20190529142913.php | 4 +- .../model/Version20190529142927.php | 4 +- .../model/Version20190530205326.php | 4 +- .../model/Version20190530205344.php | 4 +- .../model/Version20190625030955.php | 4 +- .../model/Version20190626125814.php | 4 +- .../model/Version20190629222739.php | 4 +- .../model/Version20190723210551.php | 4 +- .../model/Version20190728200547.php | 4 +- .../model/Version20190730022151.php | 4 +- .../model/Version20190730031422.php | 4 +- .../model/Version20190801211505.php | 4 +- .../model/Version20190824125218.php | 4 +- .../model/Version20190911132806.php | 4 +- .../model/Version20190918111958.php | 4 +- .../model/Version20191016014630.php | 5 +- .../model/Version20191116183316.php | 4 +- .../model/Version20191125210134.php | 4 +- .../model/Version20191202223721.php | 4 +- .../model/Version20191206163423.php | 4 +- .../model/Version20191212002736.php | 4 +- .../model/Version20191220223248.php | 4 +- .../model/Version20191220223253.php | 4 +- .../model/Version20191224021722.php | 4 +- .../model/Version20191224022307.php | 4 +- .../model/Version20191229173636.php | 4 +- .../model/Version20200109171923.php | 4 +- .../model/Version20200110184019.php | 4 +- .../model/Version20200123133515.php | 4 +- .../model/Version20200128184149.php | 4 +- .../model/Version20200128191140.php | 4 +- .../model/Version20200212023535.php | 4 +- .../model/Version20200212125943.php | 4 +- .../model/Version20200213131907.php | 4 +- .../model/Version20200403191418.php | 4 +- .../model/Version20200512132942.php | 4 +- .../model/Version20200512174027.php | 4 +- .../model/Version20200523235306.php | 4 +- .../model/Version20200526174904.php | 4 +- .../model/Version20200601211446.php | 4 +- .../model/Version20200602212951.php | 4 +- .../model/Version20200609105105.php | 4 +- .../model/Version20200616144713.php | 4 +- .../model/Version20200618192655.php | 4 +- .../model/Version20200623191130.php | 4 +- .../model/Version20200623191331.php | 4 +- .../model/Version20200623191754.php | 4 +- .../model/Version20200624132001.php | 4 +- .../model/Version20200629142643.php | 4 +- .../model/Version20200629143447.php | 4 +- .../model/Version20200713164340.php | 4 +- .../model/Version20200713164344.php | 4 +- .../model/Version20200730135823.php | 4 +- .../model/Version20200803171455.php | 4 +- .../model/Version20200817180752.php | 4 +- .../model/Version20200818120409.php | 4 +- .../model/Version20200824140528.php | 4 +- .../model/Version20200831193516.php | 4 +- .../model/Version20200901160152.php | 4 +- .../model/Version20200904155247.php | 4 +- .../model/Version20200910184756.php | 4 +- .../model/Version20200924123949.php | 4 +- .../model/Version20200924203451.php | 10 +- .../model/Version20200924210244.php | 4 +- .../model/Version20200928132323.php | 4 +- .../model/Version20201001182314.php | 4 +- .../model/Version20201008203936.php | 4 +- .../model/Version20201014155708.php | 4 +- .../model/Version20201014155719.php | 4 +- .../model/Version20201014161727.php | 4 +- .../model/Version20201015153512.php | 4 +- .../model/Version20201015153514.php | 4 +- .../model/Version20201015153516.php | 4 +- .../model/Version20201016145706.php | 4 +- .../model/Version20201018045210.php | 4 +- .../model/Version20201021125624.php | 4 +- .../model/Version20201021172434.php | 4 +- .../model/Version20201022181641.php | 4 +- .../model/Version20201027024056.php | 4 +- .../model/Version20201029175540.php | 4 +- .../model/Version20201116151153.php | 4 +- .../model/Version20201119155826.php | 4 +- .../model/Version20201120143925.php | 4 +- .../model/Version20201208150500.php | 4 +- .../model/Version20201208151735.php | 4 +- .../model/Version20210203161916.php | 4 +- .../model/Version20210212151954.php | 6 +- .../model/Version20210212151956.php | 4 +- .../model/Version20210322170708.php | 4 +- .../model/Version20210326171114.php | 4 +- .../model/Version20210326171117.php | 4 +- .../model/Version20210406124904.php | 1 - database/{seeds => seeders}/.gitkeep | 0 .../{seeds => seeders}/ApiEndpointsSeeder.php | 3 +- .../{seeds => seeders}/ApiScopesSeeder.php | 2 +- database/{seeds => seeders}/ApiSeeder.php | 2 +- .../{seeds => seeders}/DatabaseSeeder.php | 14 +- .../DefaultEventTypesSeeder.php | 2 +- .../DefaultPrintRulesSeeder.php | 3 +- .../SummitEmailFlowEventSeeder.php | 2 +- .../SummitEmailFlowTypeSeeder.php | 2 +- .../SummitMediaFileTypeSeeder.php | 2 +- database/{seeds => seeders}/TestSeeder.php | 20 +- migrate.sh | 2 +- public/web.config | 23 - resources/js/app.js | 33 + resources/js/bootstrap.js | 56 + resources/js/components/ExampleComponent.vue | 23 + resources/{assets => }/sass/app.scss | 0 routes/api_v1.php | 1562 +++++ routes/api_v2.php | 37 + routes/channels.php | 16 + routes/console.php | 18 + routes/public_api.php | 237 + routes/web.php | 13 + routes/well_known.php | 16 + ...minActionsCalendarSyncPreProcessorTest.php | 170 - tests/AttendeeServiceTest.php | 6 +- tests/BrowserKitTestCase.php | 9 +- tests/CountriesApiTest.php | 6 +- tests/DoctrineTest.php | 3 +- tests/ExternalFeedIngestionTest.php | 2 +- tests/ExternalRegistrationIngestionTest.php | 6 +- tests/FilterParserTest.php | 14 +- tests/FolderServiceTest.php | 4 - tests/InsertMemberTestData.php | 6 +- tests/InsertOrdersTestData.php | 2 +- tests/InsertSummitTestData.php | 53 +- tests/LanguagesApiTest.php | 6 +- tests/MarketplaceApiTest.php | 6 +- tests/MeetingRoomTest.php | 2 +- ...berActionsCalendarSyncPreProcessorTest.php | 307 - tests/MuxImportTest.php | 2 +- tests/OAuth2AttendeesApiTest.php | 2 +- ...Auth2BookableRoomAttributeTypesApiTest.php | 2 +- tests/OAuth2ChatTeamApiTest.php | 2 +- tests/OAuth2CompaniesApiTest.php | 2 +- tests/OAuth2ConsultantApiTest.php | 7 +- tests/OAuth2EventTypesApiTest.php | 2 +- tests/OAuth2GroupsApiTest.php | 2 +- tests/OAuth2MembersApiTest.php | 52 +- tests/OAuth2OAuth2SponsorshipTypeApiTest.php | 2 +- tests/OAuth2OrganizationsApiTest.php | 2 +- tests/OAuth2PaymentGatewayProfileApiTest.php | 4 +- ...OAuth2PersonalCalendarShareInfoApiTest.php | 2 +- tests/OAuth2PresentationSubmissionTest.php | 6 +- tests/OAuth2PrivateCloudApiTest.php | 6 +- tests/OAuth2PromoCodesApiTest.php | 2 +- tests/OAuth2PublicCloudApiTest.php | 2 +- tests/OAuth2RSVPSummitEventApiTest.php | 2 +- tests/OAuth2SelectionPlansApiTest.php | 14 +- .../OAuth2SpeakerActiveInvolvementApiTest.php | 2 +- ...OAuth2SpeakerOrganizationalRoleApiTest.php | 2 +- tests/OAuth2SpeakersApiTest.php | 3 +- tests/OAuth2SpeakersAssistancesApiTest.php | 2 +- tests/OAuth2SponsoredProjectsApiTest.php | 2 +- tests/OAuth2SummitAccessLevelTypeTest.php | 2 +- ...tratorPermissionGroupApiControllerTest.php | 9 +- tests/OAuth2SummitApiTest.php | 6 +- tests/OAuth2SummitBadgeFeatureTypeApiTest.php | 4 +- ...OAuth2SummitBadgeScanApiControllerTest.php | 2 +- tests/OAuth2SummitBadgeTypeApiTest.php | 2 +- tests/OAuth2SummitBadgesApiTest.php | 2 +- ...OAuth2SummitDocumentsApiControllerTest.php | 6 +- ...2SummitEmailEventFlowApiControllerTest.php | 6 +- tests/OAuth2SummitEventsApiTest.php | 2 +- tests/OAuth2SummitEventsBulkActionsTest.php | 2 +- tests/OAuth2SummitLocationsApiTest.php | 6 +- ...h2SummitMediaFileTypeApiControllerTest.php | 2 +- ...SummitMediaUploadTypeApiControllerTest.php | 8 +- .../OAuth2SummitMetricsApiControllerTest.php | 2 +- ...h2SummitNotificationsApiControllerTest.php | 2 +- ...th2SummitOrderExtraQuestionTypeApiTest.php | 10 +- tests/OAuth2SummitOrdersApiTest.php | 6 +- .../OAuth2SummitPresentationActionApiTest.php | 18 +- tests/OAuth2SummitRSVPTemplateApiTest.php | 2 +- tests/OAuth2SummitRefundPolicyTypeApiTest.php | 2 +- ...egistrationInvitationApiControllerTest.php | 6 +- ...2SummitSelectedPresentationListApiTest.php | 10 +- ...tSelectionPlanExtraQuestionTypeApiTest.php | 14 +- tests/OAuth2SummitSponsorApiTest.php | 2 +- tests/OAuth2SummitTaxTypeApiTest.php | 2 +- tests/OAuth2SummitTicketsApiTest.php | 4 +- tests/OAuth2SummitTrackChairsApiTest.php | 14 +- tests/OAuth2TagsApiTest.php | 2 +- tests/OAuth2TicketTypesApiTest.php | 2 +- tests/OAuth2TrackGroupsApiTest.php | 2 +- tests/OAuth2TrackQuestionsTemplateTest.php | 2 +- tests/OAuth2TrackTagGroupsApiTest.php | 88 +- tests/OAuth2TracksApiTest.php | 180 +- .../ParseMultiPartFormDataInputStreamTest.php | 3 +- tests/PresentationMediaUploadsTests.php | 13 +- tests/ProtectedApiTest.php | 7 +- tests/SearchEmptySpotsTest.php | 4 +- tests/ServicesTest.php | 5 +- tests/SponsoredProjectModelTest.php | 19 +- tests/StripeInterfaceTest.php | 7 +- tests/StripeTest.php | 17 +- tests/SummitDocumentModelTest.php | 6 +- tests/SummitEventMetricsTest.php | 14 +- tests/SummitICloudCalendarSyncTest.php | 108 - tests/SummitOrderJobsTest.php | 7 +- tests/TrackChairTest.php | 8 +- tests/ValidatorTest.php | 41 - update_doctrine.sh | 4 +- update_project.sh | 2 +- webpack.mix.js | 15 + 350 files changed, 8166 insertions(+), 7762 deletions(-) delete mode 100644 Libs/Utils/CustomDoctrineServiceProvider.php delete mode 100644 Libs/Utils/CustomEntityManagerFactory.php create mode 100644 Libs/Utils/Doctrine/EscapingQuoteStrategy.php delete mode 100644 app/Console/Commands/AdminActionsCalendarSyncProcessingCommand.php delete mode 100644 app/Console/Commands/MemberActionsCalendarSyncProcessingCommand.php delete mode 100644 app/Http/Middleware/CORSMiddleware.php delete mode 100644 app/Http/Middleware/CORSRequestPreflightData.php delete mode 100644 app/Http/Middleware/CORSRequestPreflightType.php create mode 100644 app/Http/Middleware/CheckForMaintenanceMode.php delete mode 100644 app/Http/Middleware/cors_server_flowchart.png delete mode 100644 app/Http/Routes/public.php delete mode 100644 app/Http/routes.php create mode 100644 app/Providers/BroadcastServiceProvider.php delete mode 100644 app/Queue/RabbitMQ/RabbitMQConnector.php delete mode 100644 app/Queue/RabbitMQ/RabbitMQJob.php delete mode 100644 app/Queue/RabbitMQ/RabbitMQQueue.php delete mode 100644 app/Queue/RabbitMQServiceProvider.php rename database/{seeds => seeders}/.gitkeep (100%) rename database/{seeds => seeders}/ApiEndpointsSeeder.php (99%) rename database/{seeds => seeders}/ApiScopesSeeder.php (99%) rename database/{seeds => seeders}/ApiSeeder.php (99%) rename database/{seeds => seeders}/DatabaseSeeder.php (51%) rename database/{seeds/summit => seeders}/DefaultEventTypesSeeder.php (99%) rename database/{seeds/summit => seeders}/DefaultPrintRulesSeeder.php (98%) rename database/{seeds => seeders}/SummitEmailFlowEventSeeder.php (97%) rename database/{seeds => seeders}/SummitEmailFlowTypeSeeder.php (99%) rename database/{seeds => seeders}/SummitMediaFileTypeSeeder.php (99%) rename database/{seeds => seeders}/TestSeeder.php (66%) delete mode 100644 public/web.config create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/js/components/ExampleComponent.vue rename resources/{assets => }/sass/app.scss (100%) create mode 100644 routes/api_v1.php create mode 100644 routes/api_v2.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/public_api.php create mode 100644 routes/web.php create mode 100644 routes/well_known.php delete mode 100644 tests/AdminActionsCalendarSyncPreProcessorTest.php delete mode 100644 tests/MemberActionsCalendarSyncPreProcessorTest.php delete mode 100644 tests/SummitICloudCalendarSyncTest.php delete mode 100644 tests/ValidatorTest.php create mode 100644 webpack.mix.js diff --git a/.gitignore b/.gitignore index 6b3e6e66..9e84925d 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,5 @@ storage/* routes.txt /storage/logs/ /ss.sql -phpunit.xml \ No newline at end of file +phpunit.xml +/.phpunit.result.cache diff --git a/Libs/Utils/CustomDoctrineServiceProvider.php b/Libs/Utils/CustomDoctrineServiceProvider.php deleted file mode 100644 index c0606695..00000000 --- a/Libs/Utils/CustomDoctrineServiceProvider.php +++ /dev/null @@ -1,54 +0,0 @@ -app->singleton('registry', function ($app) { - $registry = new IlluminateRegistry($app, $app->make(CustomEntityManagerFactory::class)); - - // Add all managers into the registry - foreach ($app->make('config')->get('doctrine.managers', []) as $manager => $settings) { - $registry->addManager($manager, $settings); - } - - return $registry; - }); - - // Once the registry get's resolved, we will call the resolve callbacks which were waiting for the registry - $this->app->afterResolving('registry', function (ManagerRegistry $registry, Container $container) { - $this->bootExtensionManager(); - - BootChain::boot($registry); - }); - - $this->app->alias('registry', ManagerRegistry::class); - $this->app->alias('registry', IlluminateRegistry::class); - } - -} \ No newline at end of file diff --git a/Libs/Utils/CustomEntityManagerFactory.php b/Libs/Utils/CustomEntityManagerFactory.php deleted file mode 100644 index 9ee31c79..00000000 --- a/Libs/Utils/CustomEntityManagerFactory.php +++ /dev/null @@ -1,88 +0,0 @@ -config->get('doctrine.cache.second_level', []); - - if (!is_array($second_level_cache_config)) return; - if (!isset($second_level_cache_config['enabled'])) return; - if (!$second_level_cache_config['enabled']) return; - - $configuration->setSecondLevelCacheEnabled(true); - - $cacheConfig = $configuration->getSecondLevelCacheConfiguration(); - $regions_config = isset($second_level_cache_config['regions']) ? $second_level_cache_config['regions'] : []; - - if (is_array($regions_config) && count($regions_config) > 0) { - - $regions_configuration = new RegionsConfiguration - ( - isset($second_level_cache_config['region_lifetime']) ? $second_level_cache_config['region_lifetime'] : 3600, - isset($second_level_cache_config['region_lock_lifetime']) ? $second_level_cache_config['region_lock_lifetime'] : 60 - ); - - foreach ($regions_config as $region_name => $region_config) { - if (isset($region_config['lifetime'])) - $regions_configuration->setLifetime($region_name, $region_config['lifetime']); - - if (isset($region_config['lock_lifetime'])) - $regions_configuration->setLockLifetime($region_name, $region_config['lock_lifetime']); - - } - - $cacheConfig->setRegionsConfiguration($regions_configuration); - } - - // Cache logger - if (isset($second_level_cache_config['log_enabled']) && $second_level_cache_config['log_enabled']){ - $logger = new StatisticsCacheLogger(); - $cacheConfig->setCacheLogger($logger); - } - - $factory = new DefaultCacheFactory - ( - $cacheConfig->getRegionsConfiguration(), - $this->cache->driver() - ); - - $file_lock_region_directory = isset($second_level_cache_config['file_lock_region_directory']) ? - $second_level_cache_config['file_lock_region_directory'] : - '/tmp'; - - $factory->setFileLockRegionDirectory($file_lock_region_directory); - - $cacheConfig->setCacheFactory - ( - $factory - ); - - } -} \ No newline at end of file diff --git a/Libs/Utils/Doctrine/EscapingQuoteStrategy.php b/Libs/Utils/Doctrine/EscapingQuoteStrategy.php new file mode 100644 index 00000000..aa60ccf2 --- /dev/null +++ b/Libs/Utils/Doctrine/EscapingQuoteStrategy.php @@ -0,0 +1,176 @@ +fieldMappings[$fieldName]['quoted'])) { + return $platform->quoteIdentifier($class->fieldMappings[$fieldName]['columnName']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($fieldName)) { + return $platform->quoteIdentifier($class->fieldMappings[$fieldName]['columnName']); + } + + return $class->fieldMappings[$fieldName]['columnName']; + } + + /** + * {@inheritdoc} + */ + public function getTableName(ClassMetadata $class, AbstractPlatform $platform) + { + if (isset($class->table['quoted'])) { + return $platform->quoteIdentifier($class->table['name']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($class->table['name'])) { + return $platform->quoteIdentifier($class->table['name']); + } + + return $class->table['name']; + } + + /** + * {@inheritdoc} + */ + public function getSequenceName(array $definition, ClassMetadata $class, AbstractPlatform $platform) + { + if (isset($definition['quoted'])) { + return $platform->quoteIdentifier($class->table['name']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($definition['sequenceName'])) { + return $platform->quoteIdentifier($definition['sequenceName']); + } + + return $definition['sequenceName']; + } + + /** + * {@inheritdoc} + */ + public function getJoinColumnName(array $joinColumn, ClassMetadata $class, AbstractPlatform $platform) + { + if (isset($joinColumn['quoted'])) { + return $platform->quoteIdentifier($joinColumn['name']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($joinColumn['name'])) { + return $platform->quoteIdentifier($joinColumn['name']); + } + + return $joinColumn['name']; + } + + /** + * {@inheritdoc} + */ + public function getReferencedJoinColumnName(array $joinColumn, ClassMetadata $class, AbstractPlatform $platform) + { + if (isset($joinColumn['quoted'])) { + return $platform->quoteIdentifier($joinColumn['referencedColumnName']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($joinColumn['referencedColumnName'])) { + return $platform->quoteIdentifier($joinColumn['referencedColumnName']); + } + + return $joinColumn['referencedColumnName']; + } + + /** + * {@inheritdoc} + */ + public function getJoinTableName(array $association, ClassMetadata $class, AbstractPlatform $platform) + { + if (isset($association['joinTable']['quoted'])) { + return $platform->quoteIdentifier($association['joinTable']['name']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($association['joinTable']['name'])) { + return $platform->quoteIdentifier($association['joinTable']['name']); + } + + return $association['joinTable']['name']; + } + + /** + * {@inheritdoc} + */ + public function getIdentifierColumnNames(ClassMetadata $class, AbstractPlatform $platform) + { + $quotedColumnNames = array(); + + foreach ($class->identifier as $fieldName) { + if (isset($class->fieldMappings[$fieldName])) { + $quotedColumnNames[] = $this->getColumnName($fieldName, $class, $platform); + + continue; + } + + // Association defined as Id field + $joinColumns = $class->associationMappings[$fieldName]['joinColumns']; + $assocQuotedColumnNames = array_map( + function ($joinColumn) use ($platform) { + if (isset($joinColumn['quoted'])) { + return $platform->quoteIdentifier($joinColumn['name']); + } + $reservedKeyList = $platform->getReservedKeywordsList(); + if ($reservedKeyList->isKeyword($joinColumn['name'])) { + return $platform->quoteIdentifier($joinColumn['name']); + } + + return $joinColumn['name']; + }, + $joinColumns + ); + + $quotedColumnNames = array_merge($quotedColumnNames, $assocQuotedColumnNames); + } + + return $quotedColumnNames; + } + + /** + * {@inheritdoc} + */ + public function getColumnAlias($columnName, $counter, AbstractPlatform $platform, ClassMetadata $class = null) + { + // 1 ) Concatenate column name and counter + // 2 ) Trim the column alias to the maximum identifier length of the platform. + // If the alias is to long, characters are cut off from the beginning. + // 3 ) Strip non alphanumeric characters + // 4 ) Prefix with "_" if the result its numeric + $columnName = $columnName.'_'.$counter; + $columnName = substr($columnName, -$platform->getMaxIdentifierLength()); + $columnName = preg_replace('/[^A-Za-z0-9_]/', '', $columnName); + $columnName = is_numeric($columnName) ? '_'.$columnName : $columnName; + + return $platform->getSQLResultCasing($columnName); + } +} \ No newline at end of file diff --git a/Libs/Utils/JsonUtils.php b/Libs/Utils/JsonUtils.php index ae6a1fb3..1ffa6577 100644 --- a/Libs/Utils/JsonUtils.php +++ b/Libs/Utils/JsonUtils.php @@ -38,7 +38,7 @@ abstract class JsonUtils */ public static function toObfuscatedEmail($value){ $em = explode("@", $value); - $name = implode(array_slice($em, 0, count($em) - 1), '@'); + $name = implode( '@', array_slice($em, 0, count($em) - 1)); $len = floor(mb_strlen($name) / 2); $obfuscated_email = mb_substr($name, 0, $len) . str_repeat('*', $len) . "@" . end($em); return $obfuscated_email; diff --git a/app/Console/Commands/AdminActionsCalendarSyncProcessingCommand.php b/app/Console/Commands/AdminActionsCalendarSyncProcessingCommand.php deleted file mode 100644 index 99d49985..00000000 --- a/app/Console/Commands/AdminActionsCalendarSyncProcessingCommand.php +++ /dev/null @@ -1,84 +0,0 @@ -service = $service; - } - - /** - * The console command name. - * - * @var string - */ - protected $name = 'summit:admin-schedule-action-process'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Process Admin External Schedule Sync Actions'; - - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'summit:admin-schedule-action-process {batch_size?}'; - - public function handle() - { - $enabled = boolval(Config::get("cal_sync.enable_cal_sync", true)); - if(!$enabled){ - $this->info("task is not enabled!"); - return false; - } - - $batch_size = $this->argument('batch_size'); - if(empty($batch_size)) - $batch_size = PHP_INT_MAX; - - $start = time(); - - $this->info(sprintf("processing batch size of %s", $batch_size)); - - - $res = $this->service->processActions($batch_size); - - $end = time(); - $delta = $end - $start; - $this->info(sprintf("execution call %s seconds - processed entries %s", $delta, $res)); - - } -} \ No newline at end of file diff --git a/app/Console/Commands/MemberActionsCalendarSyncProcessingCommand.php b/app/Console/Commands/MemberActionsCalendarSyncProcessingCommand.php deleted file mode 100644 index 2e0fa7ce..00000000 --- a/app/Console/Commands/MemberActionsCalendarSyncProcessingCommand.php +++ /dev/null @@ -1,91 +0,0 @@ -service = $service; - } - - /** - * The console command name. - * - * @var string - */ - protected $name = 'summit:member-schedule-action-process'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Process Member External Schedule Sync Actions'; - - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'summit:member-schedule-action-process {provider} {batch_size?}'; - - public function handle() - { - $enabled = boolval(Config::get("cal_sync.enable_cal_sync", true)); - if(!$enabled){ - $this->info("task is not enabled!"); - return false; - } - - $batch_size = $this->argument('batch_size'); - $provider = $this->argument('provider'); - if(!CalendarSyncInfo::isValidProvider($provider)){ - $this->error("provider param is not valid , valid values are [Google, Outlook, iCloud]"); - log::error("provider param is not valid , valid values are [Google, Outlook, iCloud]"); - return false; - } - if(empty($batch_size)) - $batch_size = 1000; - - $start = time(); - - $this->info(sprintf("processing provider %s - batch size of %s", $provider, $batch_size)); - log::info(sprintf("processing provider %s - batch size of %s", $provider, $batch_size)); - - $res = $this->service->processActions($provider, $batch_size); - - $end = time(); - $delta = $end - $start; - $this->info(sprintf("execution call %s seconds - processed entries %s", $delta, $res)); - log::info(sprintf("execution call %s seconds - processed entries %s", $delta, $res)); - } -} \ No newline at end of file diff --git a/app/Console/Commands/SummitEmailFlowEventSeederCommand.php b/app/Console/Commands/SummitEmailFlowEventSeederCommand.php index 08c586ea..3e0c0239 100644 --- a/app/Console/Commands/SummitEmailFlowEventSeederCommand.php +++ b/app/Console/Commands/SummitEmailFlowEventSeederCommand.php @@ -13,6 +13,8 @@ **/ use Illuminate\Console\Command; use Illuminate\Support\Facades\Log; +use Database\Seeders\SummitEmailFlowEventSeeder; +use Exception; /** * Class SummitEmailFlowEventSeederCommand * @package App\Console\Commands @@ -51,7 +53,7 @@ class SummitEmailFlowEventSeederCommand extends Command try { $start = time(); - \SummitEmailFlowEventSeeder::seed(); + SummitEmailFlowEventSeeder::seed(); $end = time(); $delta = $end - $start; $this->info(sprintf("execution call %s seconds", $delta)); diff --git a/app/Console/Commands/SummitEmailFlowTypeSeederCommand.php b/app/Console/Commands/SummitEmailFlowTypeSeederCommand.php index 9771c50c..91dc4c3b 100644 --- a/app/Console/Commands/SummitEmailFlowTypeSeederCommand.php +++ b/app/Console/Commands/SummitEmailFlowTypeSeederCommand.php @@ -13,6 +13,7 @@ **/ use Illuminate\Console\Command; use Illuminate\Support\Facades\Log; +use Database\Seeders\SummitEmailFlowTypeSeeder; use Exception; /** * Class SummitEmailFlowTypeSeederCommand @@ -52,7 +53,7 @@ class SummitEmailFlowTypeSeederCommand extends Command try { $start = time(); - \SummitEmailFlowTypeSeeder::seed(); + SummitEmailFlowTypeSeeder::seed(); $end = time(); $delta = $end - $start; $this->info(sprintf("execution call %s seconds", $delta)); diff --git a/app/Console/Commands/SummitForwardXDays.php b/app/Console/Commands/SummitForwardXDays.php index 21683852..a3fa2fc1 100644 --- a/app/Console/Commands/SummitForwardXDays.php +++ b/app/Console/Commands/SummitForwardXDays.php @@ -22,11 +22,6 @@ use Exception; */ class SummitForwardXDays extends Command { - /** - * @var ISummitService - */ - private $service; - /** * The console command name. @@ -80,7 +75,7 @@ class SummitForwardXDays extends Command Log::debug(sprintf("SummitForwardXDays::handle tenant %s current_tenant %s", $tenant, $current_tenant)); - if($tenant != $current_tenant){ + if(strtoupper($tenant) != strtoupper($current_tenant)){ Log::warning(sprintf("SummitForwardXDays::handle exiting bc tenants are not the same")); return; } diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index b02bc71d..a63fbd27 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -31,8 +31,6 @@ class Kernel extends ConsoleKernel */ protected $commands = [ \App\Console\Commands\SummitJsonGenerator::class, - \App\Console\Commands\MemberActionsCalendarSyncProcessingCommand::class, - \App\Console\Commands\AdminActionsCalendarSyncProcessingCommand::class, \App\Console\Commands\ChatTeamMessagesSender::class, \App\Console\Commands\SummitListJsonGenerator::class, \App\Console\Commands\PromoCodesRedeemProcessor::class, @@ -71,18 +69,6 @@ class Kernel extends ConsoleKernel // list of available summits $schedule->command('summit-list:json-generator')->everyFiveMinutes()->withoutOverlapping()->onOneServer(); - // Calendar Sync Jobs - - // Admin Actions - //$schedule->command('summit:admin-schedule-action-process')->withoutOverlapping(); - // Member Actions - // Google Calendar - //$schedule->command('summit:member-schedule-action-process', [CalendarSyncInfo::ProviderGoogle, 1000])->withoutOverlapping(); - // Outlook - //$schedule->command('summit:member-schedule-action-process', [CalendarSyncInfo::ProviderOutlook, 1000])->withoutOverlapping(); - // iCloud - //$schedule->command('summit:member-schedule-action-process', [CalendarSyncInfo::ProvideriCloud, 1000])->withoutOverlapping(); - // redeem code processor //$schedule->command('summit:promo-codes-redeem-processor', [end($summit_ids)])->daily()->withoutOverlapping(); diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 63d0beb4..835c7f5d 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -11,13 +11,14 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use Exception; +use Throwable; use Illuminate\Validation\ValidationException; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Database\Eloquent\ModelNotFoundException; use Predis\Connection\ConnectionException as RedisConnectionException; use Symfony\Component\HttpKernel\Exception\HttpException; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; + /** * Class Handler * @package App\Exceptions @@ -42,10 +43,10 @@ class Handler extends ExceptionHandler * * This is a great spot to send exceptions to Sentry, Bugsnag, etc. * - * @param \Exception $e + * @param Throwable $e * @return void */ - public function report(Exception $e) + public function report(Throwable $e) { parent::report($e); } @@ -54,10 +55,10 @@ class Handler extends ExceptionHandler * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request - * @param \Exception $e + * @param \Throwable $e * @return \Illuminate\Http\Response */ - public function render($request, Exception $e) + public function render($request, Throwable $e) { if (config('app.debug')) { return parent::render($request, $e); diff --git a/app/Http/Controllers/Apis/CountriesApiController.php b/app/Http/Controllers/Apis/CountriesApiController.php index b25c54f0..1129f20e 100644 --- a/app/Http/Controllers/Apis/CountriesApiController.php +++ b/app/Http/Controllers/Apis/CountriesApiController.php @@ -12,11 +12,11 @@ * limitations under the License. **/ use App\Models\Foundation\Main\CountryCodes; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; use utils\PagingResponse; +use Illuminate\Support\Facades\Request; /** * Class CountriesApiController * @package App\Http\Controllers @@ -45,7 +45,7 @@ final class CountriesApiController extends JsonController $countries ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); diff --git a/app/Http/Controllers/Apis/LanguagesApiController.php b/app/Http/Controllers/Apis/LanguagesApiController.php index b63b7801..ecf4d989 100644 --- a/app/Http/Controllers/Apis/LanguagesApiController.php +++ b/app/Http/Controllers/Apis/LanguagesApiController.php @@ -12,11 +12,11 @@ * limitations under the License. **/ use App\Models\Foundation\Main\Repositories\ILanguageRepository; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; use utils\PagingResponse; +use Illuminate\Support\Facades\Request; /** * Class LanguagesApiController * @package App\Http\Controllers @@ -52,7 +52,7 @@ final class LanguagesApiController extends JsonController $languages ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); diff --git a/app/Http/Controllers/Apis/Marketplace/AbstractCompanyServiceApiController.php b/app/Http/Controllers/Apis/Marketplace/AbstractCompanyServiceApiController.php index ac686985..0f17cd63 100644 --- a/app/Http/Controllers/Apis/Marketplace/AbstractCompanyServiceApiController.php +++ b/app/Http/Controllers/Apis/Marketplace/AbstractCompanyServiceApiController.php @@ -14,7 +14,6 @@ use models\utils\IBaseRepository; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; use utils\Filter; use utils\FilterParser; @@ -46,7 +45,7 @@ abstract class AbstractCompanyServiceApiController extends JsonController * @return mixed */ public function getAll(){ - $values = Input::all(); + $values = Request::all(); $rules = array ( @@ -67,15 +66,15 @@ abstract class AbstractCompanyServiceApiController extends JsonController $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), array + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), array ( 'name' => ['=@', '=='], 'company' => ['=@', '=='], @@ -84,9 +83,9 @@ abstract class AbstractCompanyServiceApiController extends JsonController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), array + $order = OrderParser::parse(Request::input('order'), array ( 'name', 'company', diff --git a/app/Http/Controllers/Apis/Marketplace/AppliancesApiController.php b/app/Http/Controllers/Apis/Marketplace/AppliancesApiController.php index 54397a79..7a6a9fd8 100644 --- a/app/Http/Controllers/Apis/Marketplace/AppliancesApiController.php +++ b/app/Http/Controllers/Apis/Marketplace/AppliancesApiController.php @@ -12,16 +12,6 @@ * limitations under the License. **/ use App\Models\Foundation\Marketplace\IApplianceRepository; -use models\exceptions\EntityNotFoundException; -use models\exceptions\ValidationException; -use Illuminate\Support\Facades\Input; -use Illuminate\Support\Facades\Validator; -use utils\Filter; -use utils\FilterParser; -use utils\OrderParser; -use Illuminate\Support\Facades\Request; -use Illuminate\Support\Facades\Log; -use utils\PagingInfo; /** * Class AppliancesApiController * @package App\Http\Controllers diff --git a/app/Http/Controllers/Apis/Marketplace/DistributionsApiController.php b/app/Http/Controllers/Apis/Marketplace/DistributionsApiController.php index df72faf5..2158a74b 100644 --- a/app/Http/Controllers/Apis/Marketplace/DistributionsApiController.php +++ b/app/Http/Controllers/Apis/Marketplace/DistributionsApiController.php @@ -11,19 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use App\Http\Controllers\JsonController; use App\Models\Foundation\Marketplace\IDistributionRepository; -use models\exceptions\EntityNotFoundException; -use models\exceptions\ValidationException; -use Exception; -use Illuminate\Support\Facades\Log; -use Illuminate\Support\Facades\Validator; -use utils\FilterParser; -use Illuminate\Support\Facades\Input; -use utils\Filter; -use utils\PagingInfo; -use Illuminate\Support\Facades\Request; -use utils\OrderParser; /** * Class DistributionsApiController * @package App\Http\Controllers\Apis\Marketplace diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2GroupsApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2GroupsApiController.php index 859c6c67..16ad7fd2 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2GroupsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2GroupsApiController.php @@ -22,7 +22,6 @@ use Illuminate\Support\Facades\Log; use utils\PagingInfo; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; /** * Class OAuth2GroupsApiController @@ -47,7 +46,7 @@ final class OAuth2GroupsApiController extends OAuth2ProtectedController public function getAll(){ - $values = Input::all(); + $values = Request::all(); $rules = array ( @@ -68,15 +67,15 @@ final class OAuth2GroupsApiController extends OAuth2ProtectedController $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), array + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), array ( 'code' => ['=@', '=='], 'title' => ['=@', '=='], @@ -85,9 +84,9 @@ final class OAuth2GroupsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), array + $order = OrderParser::parse(Request::input('order'), array ( 'code', 'title', diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php index a4bc4862..89875b2e 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php @@ -17,7 +17,6 @@ use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; use models\main\IMemberRepository; use models\oauth2\IResourceServerContext; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; use ModelSerializers\SerializerRegistry; use utils\Filter; @@ -63,7 +62,7 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController */ public function getAll(){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -83,15 +82,15 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController $page = 1; $per_page = PagingConstants::DefaultPageSize;; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'irc' => ['=@', '=='], 'twitter' => ['=@', '=='], @@ -129,9 +128,9 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'first_name', 'last_name', 'id', @@ -234,7 +233,7 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController $affiliations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (EntityNotFoundException $ex1) { @@ -269,7 +268,7 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController public function addAffiliation($member_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $member = (strtolower($member_id) == 'me') ? $this->resource_server_context->getCurrentUser() : @@ -302,7 +301,7 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController return $this->created(SerializerRegistry::getInstance()->getSerializer($affiliation)->serialize ( - Input::get('expand','') + Request::input('expand','') )); } catch (ValidationException $ex1) { @@ -337,7 +336,7 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController public function updateAffiliation($member_id, $affiliation_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $member = (strtolower($member_id) == 'me') ? $this->resource_server_context->getCurrentUser() : @@ -369,7 +368,7 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController $affiliation = $this->member_service->updateAffiliation($member, $affiliation_id, $data->all()); return $this->updated(SerializerRegistry::getInstance()->getSerializer($affiliation)->serialize( - Input::get('expand','') + Request::input('expand','') )); } catch (ValidationException $ex1) { diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2OrganizationsApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2OrganizationsApiController.php index 1fbffcd0..f8c3fd9e 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2OrganizationsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2OrganizationsApiController.php @@ -24,7 +24,6 @@ use Illuminate\Support\Facades\Log; use utils\PagingInfo; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; /** * Class OAuth2OrganizationsApiController @@ -57,7 +56,7 @@ final class OAuth2OrganizationsApiController extends OAuth2ProtectedController public function getAll(){ - $values = Input::all(); + $values = Request::all(); $rules = [ @@ -78,15 +77,15 @@ final class OAuth2OrganizationsApiController extends OAuth2ProtectedController $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], ]); @@ -94,9 +93,9 @@ final class OAuth2OrganizationsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'name', 'id', @@ -145,7 +144,7 @@ final class OAuth2OrganizationsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = [ 'name' => 'required|string|max:255', diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2TagsApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2TagsApiController.php index 9d51553c..95268afc 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2TagsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2TagsApiController.php @@ -13,7 +13,6 @@ **/ use models\main\ITagRepository; use models\oauth2\IResourceServerContext; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; use ModelSerializers\SerializerRegistry; use utils\Filter; @@ -57,7 +56,7 @@ final class OAuth2TagsApiController extends OAuth2ProtectedController public function getAll(){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -77,15 +76,15 @@ final class OAuth2TagsApiController extends OAuth2ProtectedController $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'tag' => ['=@', '=='], ]); @@ -93,9 +92,9 @@ final class OAuth2TagsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'tag', 'id', ]); @@ -141,7 +140,7 @@ final class OAuth2TagsApiController extends OAuth2ProtectedController public function addTag(){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = [ 'tag' => 'required|string', @@ -163,7 +162,7 @@ final class OAuth2TagsApiController extends OAuth2ProtectedController return $this->created(SerializerRegistry::getInstance()->getSerializer($tag)->serialize ( - Input::get('expand','') + Request::input('expand','') )); } catch (ValidationException $ex1) { diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamInvitationsApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamInvitationsApiController.php index 348daff8..ce84f5a4 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamInvitationsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamInvitationsApiController.php @@ -19,7 +19,7 @@ use models\oauth2\IResourceServerContext; use ModelSerializers\SerializerRegistry; use services\model\IChatTeamService; use utils\PagingResponse; -use Illuminate\Support\Facades\Input; +use Illuminate\Support\Facades\Request; /** * Class OAuth2TeamInvitationsApiController * @package App\Http\Controllers @@ -69,7 +69,7 @@ final class OAuth2TeamInvitationsApiController extends OAuth2ProtectedController $invitations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); @@ -106,7 +106,7 @@ final class OAuth2TeamInvitationsApiController extends OAuth2ProtectedController $invitations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); @@ -143,7 +143,7 @@ final class OAuth2TeamInvitationsApiController extends OAuth2ProtectedController $invitations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamsApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamsApiController.php index a612e283..c49357d7 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2TeamsApiController.php @@ -11,7 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -100,7 +99,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController ( $response->toArray ( - $expand = Input::get('expand',''), + $expand = Request::input('expand',''), $fields = [], $relations = [], $params = [ @@ -148,7 +147,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController ->getSerializer($team) ->serialize ( - $expand = Input::get('expand',''), + $expand = Request::input('expand',''), $fields = [], $relations = [], $params = [ @@ -181,7 +180,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = array ( @@ -268,7 +267,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = array ( @@ -323,7 +322,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController */ public function getMyTeamMessages($team_id){ - $values = Input::all(); + $values = Request::all(); $rules = array ( @@ -345,15 +344,15 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), array + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), array ( 'owner_id' => ['=='], 'sent_date' => ['>', '<', '<=', '>=', '=='], @@ -362,9 +361,9 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), array + $order = OrderParser::parse(Request::input('order'), array ( 'sent_date', 'id', @@ -417,7 +416,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = array ( @@ -472,7 +471,7 @@ final class OAuth2TeamsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = array ( diff --git a/app/Http/Controllers/Apis/Protected/Summit/Factories/Registration/SummitOrderExtraQuestionTypeValidationRulesFactory.php b/app/Http/Controllers/Apis/Protected/Summit/Factories/Registration/SummitOrderExtraQuestionTypeValidationRulesFactory.php index dbdb71d2..326ee95d 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Factories/Registration/SummitOrderExtraQuestionTypeValidationRulesFactory.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Factories/Registration/SummitOrderExtraQuestionTypeValidationRulesFactory.php @@ -26,7 +26,7 @@ extends ExtraQuestionTypeValidationRulesFactory */ public static function build(array $data, $update = false){ - $rules = parent::build($data,$update); + $rules = parent::build($data, $update); if($update){ return array_merge([ diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php index 3c4696d8..651f882f 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationApiController.php @@ -26,7 +26,6 @@ use models\summit\ISummitEventRepository; use models\summit\ISummitRepository; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Http\Request as LaravelRequest; use Exception; @@ -160,7 +159,7 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. @@ -208,7 +207,8 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); + $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationVideoValidationRulesFactory::build($data, true)); @@ -283,7 +283,8 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $data = Input::json(); + $data = Request::json(); + $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data, SummitEventValidationRulesFactory::buildForSubmission($data)); @@ -333,11 +334,11 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $data = Input::json(); + $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. - $validation = Validator::make($data, SummitEventValidationRulesFactory::buildForSubmission($data . true)); + $validation = Validator::make($data, SummitEventValidationRulesFactory::buildForSubmission($data, true)); if ($validation->fails()) { $ex = new ValidationException; @@ -1195,7 +1196,7 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $data = Input::json(); + $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data,[ diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationCategoryGroupController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationCategoryGroupController.php index 057dc736..f4582241 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationCategoryGroupController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationCategoryGroupController.php @@ -17,7 +17,6 @@ use App\Models\Foundation\Summit\Events\Presentations\PresentationCategoryGroupC use App\Models\Foundation\Summit\Repositories\IPresentationCategoryGroupRepository; use App\Services\Model\IPresentationCategoryGroupService; use Illuminate\Support\Facades\Request; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use models\exceptions\ValidationException; @@ -30,7 +29,6 @@ use utils\FilterParser; use utils\OrderParser; use utils\PagingInfo; use Exception; -use utils\PagingResponse; /** * Class OAuth2PresentationCategoryGroupController * @package App\Http\Controllers @@ -74,7 +72,7 @@ final class OAuth2PresentationCategoryGroupController * @return mixed */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -97,15 +95,15 @@ final class OAuth2PresentationCategoryGroupController $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'description' => ['=@', '=='], 'slug' => ['=@', '=='], @@ -143,9 +141,9 @@ final class OAuth2PresentationCategoryGroupController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', 'slug' @@ -200,15 +198,15 @@ final class OAuth2PresentationCategoryGroupController $page = 1; $per_page = PHP_INT_MAX; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'description' => ['=@', '=='], 'slug' => ['=@', '=='], @@ -246,9 +244,9 @@ final class OAuth2PresentationCategoryGroupController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', 'slug' @@ -328,7 +326,7 @@ final class OAuth2PresentationCategoryGroupController try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -403,7 +401,7 @@ final class OAuth2PresentationCategoryGroupController try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerActiveInvolvementApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerActiveInvolvementApiController.php index 70ad0e67..efd5ee26 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerActiveInvolvementApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerActiveInvolvementApiController.php @@ -13,11 +13,11 @@ **/ use App\Models\Foundation\Summit\Repositories\ISpeakerActiveInvolvementRepository; use models\oauth2\IResourceServerContext; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; use utils\PagingResponse; +use Illuminate\Support\Facades\Request; /** * Class OAuth2SpeakerActiveInvolvementApiController * @package App\Http\Controllers @@ -55,7 +55,7 @@ final class OAuth2SpeakerActiveInvolvementApiController extends OAuth2ProtectedC $involvements ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerOrganizationalRoleApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerOrganizationalRoleApiController.php index faad2e87..9df3d807 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerOrganizationalRoleApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SpeakerOrganizationalRoleApiController.php @@ -13,11 +13,11 @@ **/ use App\Models\Foundation\Summit\Repositories\ISpeakerOrganizationalRoleRepository; use models\oauth2\IResourceServerContext; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; use utils\PagingResponse; +use Illuminate\Support\Facades\Request; /** * Class OAuth2SpeakerOrganizationalRoleApiController * @package App\Http\Controllers @@ -56,7 +56,7 @@ final class OAuth2SpeakerOrganizationalRoleApiController extends OAuth2Protected $roles ); - return $this->ok($response->toArray($expand = Input::get('expand', ''))); + return $this->ok($response->toArray($expand = Request::input('expand', ''))); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SponsorshipTypeApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SponsorshipTypeApiController.php index 3ccb4303..f9fad9c8 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SponsorshipTypeApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SponsorshipTypeApiController.php @@ -14,7 +14,6 @@ use App\Models\Foundation\Summit\Repositories\ISponsorshipTypeRepository; use App\Services\Model\ISponsorshipTypeService; use Illuminate\Support\Facades\Validator; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use models\exceptions\EntityNotFoundException; @@ -111,7 +110,7 @@ final class OAuth2SponsorshipTypeApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. @@ -172,7 +171,7 @@ final class OAuth2SponsorshipTypeApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php index fa5b610e..e852b9ec 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php @@ -15,13 +15,11 @@ use App\Http\Exceptions\HTTP403ForbiddenException; use App\Models\Foundation\Main\IGroup; use App\Models\Foundation\Summit\Registration\IBuildDefaultPaymentGatewayProfileStrategy; use Exception; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; -use models\main\SummitAdministratorPermissionGroup; use models\oauth2\IResourceServerContext; use models\summit\ConfirmationExternalOrderRequest; use models\summit\IEventFeedbackRepository; @@ -400,7 +398,7 @@ final class OAuth2SummitApiController extends OAuth2ProtectedController try { if (!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = SummitValidationRulesFactory::build($payload); // Creates a Validator instance and validates the data. @@ -442,7 +440,7 @@ final class OAuth2SummitApiController extends OAuth2ProtectedController try { if (!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = SummitValidationRulesFactory::build($payload, true); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php index 917b4e42..a39e5708 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php @@ -36,7 +36,6 @@ use ModelSerializers\SerializerRegistry; use services\model\ISummitService; use utils\Filter; use utils\FilterElement; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; use utils\FilterParser; @@ -504,7 +503,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -590,7 +589,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -647,7 +646,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -832,7 +831,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -859,8 +858,8 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'first_name' => ['=@', '=='], 'last_name' => ['=@', '=='], 'full_name' => ['=@', '=='], @@ -898,7 +897,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController 'has_tickets'=> 'sometimes|required|string|in:true,false', ]); - $this->attendee_service->triggerSend($summit, $payload, Input::get('filter')); + $this->attendee_service->triggerSend($summit, $payload, Request::input('filter')); return $this->ok(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBadgeScanApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBadgeScanApiController.php index 4d82f1c0..7b08f7c7 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBadgeScanApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBadgeScanApiController.php @@ -17,7 +17,6 @@ use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use models\exceptions\EntityNotFoundException; use models\summit\ISponsorUserInfoGrantRepository; -use Illuminate\Support\Facades\Input; use models\exceptions\ValidationException; use models\oauth2\IResourceServerContext; use App\Services\Model\ISponsorUserInfoGrantService; @@ -358,7 +357,7 @@ final class OAuth2SummitBadgeScanApiController 'attendee_company' ]; - $columns_param = Input::get("columns", ""); + $columns_param = Request::input("columns", ""); $columns = []; if(!empty($columns_param)) $columns = explode(',', $columns_param); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBookableRoomsAttributeTypeApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBookableRoomsAttributeTypeApiController.php index 577ccabf..218d04f9 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBookableRoomsAttributeTypeApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitBookableRoomsAttributeTypeApiController.php @@ -14,8 +14,6 @@ use App\Http\Utils\PagingConstants; use App\Models\Foundation\Summit\Repositories\ISummitBookableVenueRoomAttributeTypeRepository; use App\Models\Foundation\Summit\Repositories\ISummitBookableVenueRoomAttributeValueRepository; -use App\Services\Model\ILocationService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -86,7 +84,7 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr * @return \Illuminate\Http\JsonResponse|mixed */ public function getAllBookableRoomAttributeTypes($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -109,15 +107,15 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'type' => ['==', '=@'], 'summit_id' => ['=='], ]); @@ -131,9 +129,9 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'type', ]); @@ -182,7 +180,7 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr public function addBookableRoomAttributeType($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -259,7 +257,7 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr public function updateBookableRoomAttributeType($summit_id, $type_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -335,7 +333,7 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr * @return \Illuminate\Http\JsonResponse|mixed */ public function getAllBookableRoomAttributeValues($summit_id, $type_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -361,15 +359,15 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'value' => ['==', '=@'], 'summit_id' => ['=='], 'type_id' => ['=='], @@ -385,9 +383,9 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'value', ]); @@ -473,7 +471,7 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr public function addBookableRoomAttributeValue($summit_id, $type_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -521,7 +519,7 @@ final class OAuth2SummitBookableRoomsAttributeTypeApiController extends OAuth2Pr public function updateBookableRoomAttributeValue($summit_id, $type_id, $value_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php index 7d26fd26..cebceebc 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php @@ -16,7 +16,6 @@ use App\Http\Utils\EpochCellFormatter; use App\Http\Utils\MultipartFormDataCleaner; use Exception; use Illuminate\Http\Request as LaravelRequest; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -436,7 +435,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $current_member = $this->resource_server_context->getCurrentUser(); $payload = $data->all(); @@ -490,7 +489,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController if (is_null($summit)) return $this->error404(); if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); @@ -547,7 +546,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController if (is_null($summit)) return $this->error404(); if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = array ( @@ -668,7 +667,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); - $values = Input::all(); + $values = Request::all(); $rules = array ( @@ -695,16 +694,16 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController $page = 1; $per_page = 5; - if (Input::has('page')) + if (Request::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), array + $order = OrderParser::parse(Request::input('order'), array ( 'created_date', 'owner_id', @@ -1027,8 +1026,8 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'location_id' => ['=='], 'start_date' => ['>='], 'end_date' => ['<='], @@ -1088,7 +1087,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = [ 'events' => 'required|int_array', @@ -1137,7 +1136,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = [ 'events' => 'required|event_dto_publish_array', @@ -1186,7 +1185,7 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $rules = [ 'events' => 'required|event_dto_array', diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php index c0a7d61a..bc598901 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php @@ -20,7 +20,6 @@ use App\Models\Foundation\Summit\Repositories\ISummitRoomReservationRepository; use App\Services\Model\ILocationService; use Exception; use Illuminate\Http\Request as LaravelRequest; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -146,7 +145,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController */ public function getLocations($summit_id) { - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -169,15 +168,15 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'class_name' => ['=='], 'name' => ['==', '=@'], 'description' => ['=@'], @@ -215,9 +214,9 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', 'order' @@ -285,7 +284,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $locations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (Exception $ex) { Log::error($ex); @@ -319,7 +318,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $locations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (Exception $ex) { Log::error($ex); @@ -353,7 +352,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $locations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (Exception $ex) { Log::error($ex); @@ -387,7 +386,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $locations ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (Exception $ex) { Log::error($ex); @@ -445,7 +444,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController throw new EntityNotFoundException; } - $values = Input::all(); + $values = Request::all(); $rules = [ @@ -464,15 +463,15 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'title' => ['=@', '=='], 'start_date' => ['>', '<', '<=', '>=', '=='], @@ -486,9 +485,9 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), + $order = OrderParser::parse(Request::input('order'), [ 'title', 'start_date', @@ -747,7 +746,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -791,7 +790,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addVenue($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitVenue::ClassName; @@ -834,7 +833,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addExternalLocation($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitExternalLocation::ClassName; @@ -877,7 +876,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addHotel($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitHotel::ClassName; @@ -920,7 +919,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addAirport($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitAirport::ClassName; @@ -965,7 +964,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addVenueFloor($summit_id, $venue_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $rules = [ @@ -1012,7 +1011,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addVenueRoom($summit_id, $venue_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitVenueRoom::ClassName; @@ -1056,7 +1055,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function addVenueFloorRoom($summit_id, $venue_id, $floor_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitVenueRoom::ClassName; @@ -1107,7 +1106,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -1153,7 +1152,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -1199,7 +1198,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function updateVenueFloor($summit_id, $venue_id, $floor_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $rules = [ @@ -1247,7 +1246,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function updateVenueRoom($summit_id, $venue_id, $room_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitVenueRoom::ClassName; @@ -1293,7 +1292,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController public function updateVenueFloorRoom($summit_id, $venue_id, $floor_id, $room_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitVenueRoom::ClassName; @@ -1342,7 +1341,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -1388,7 +1387,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -1434,7 +1433,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -1565,7 +1564,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController * @return mixed */ public function getLocationBanners($summit_id, $location_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', 'per_page' => sprintf('required_with:page|integer|min:%s|max:%s', PagingConstants::MinPageSize, PagingConstants::MaxPageSize), @@ -1590,15 +1589,15 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'class_name' => ['=='], 'title' => ['==', '=@'], 'content' => ['=@'], @@ -1629,9 +1628,9 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'title', 'start_date', @@ -1682,7 +1681,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -1775,7 +1774,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMembersApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMembersApiController.php index 7fa8a198..5c2f32d1 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMembersApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMembersApiController.php @@ -32,7 +32,6 @@ use utils\FilterParserException; use utils\OrderParser; use utils\PagingInfo; use utils\PagingResponse; -use Illuminate\Support\Facades\Input; use Exception; /** * Class OAuth2SummitMembersApiController @@ -129,7 +128,7 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $favorites ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { @@ -265,7 +264,7 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $schedule ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { @@ -378,7 +377,7 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController * @return \Illuminate\Http\JsonResponse|mixed */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -401,15 +400,15 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $page = 1; $per_page = PagingConstants::DefaultPageSize;; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'irc' => ['=@', '=='], 'twitter' => ['=@', '=='], 'first_name' => ['=@', '=='], @@ -448,9 +447,9 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'first_name', 'last_name', 'id', @@ -501,7 +500,7 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController * @return \Illuminate\Http\JsonResponse|mixed */ public function getAllBySummitCSV($summit_id){ - $values = Input::all(); + $values = Request::all(); $allowed_columns = [ "id", @@ -545,15 +544,15 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $page = 1; $per_page = PHP_INT_MAX; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'irc' => ['=@', '=='], 'twitter' => ['=@', '=='], 'first_name' => ['=@', '=='], @@ -592,9 +591,9 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'first_name', 'last_name', 'id', @@ -613,7 +612,7 @@ final class OAuth2SummitMembersApiController extends OAuth2ProtectedController $relations = Request::input('relations', ''); $relations = !empty($relations) ? explode(',', $relations) : []; - $columns_param = Input::get("columns", ""); + $columns_param = Request::input("columns", ""); $columns = []; if(!empty($columns_param)) $columns = explode(',', $columns_param); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php index 64bcc8af..cf7e9b24 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php @@ -12,7 +12,6 @@ * limitations under the License. **/ use App\Services\Model\ISummitMetricService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -76,9 +75,9 @@ final class OAuth2SummitMetricsApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $payload = Input::all(); + $payload = Request::all(); if(Request::isJson()){ - $payload = Input::json()->all(); + $payload = Request::json()->all(); } $validation = Validator::make($payload, @@ -134,9 +133,9 @@ final class OAuth2SummitMetricsApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $payload = Input::all(); + $payload = Request::all(); if(Request::isJson()){ - $payload = Input::json()->all(); + $payload = Request::json()->all(); } $validation = Validator::make($payload, diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitNotificationsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitNotificationsApiController.php index f0ae3da9..ef87f871 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitNotificationsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitNotificationsApiController.php @@ -20,7 +20,6 @@ use models\main\IMemberRepository; use models\oauth2\IResourceServerContext; use models\summit\ISummitNotificationRepository; use Illuminate\Support\Facades\Log; -use Illuminate\Support\Facades\Input; use models\summit\ISummitRepository; use ModelSerializers\SerializerRegistry; use utils\Filter; @@ -287,7 +286,7 @@ class OAuth2SummitNotificationsApiController extends OAuth2ProtectedController $notification = $summit->getNotificationById($notification_id); if(is_null($notification)) return $this->error404(); - return $this->ok(SerializerRegistry::getInstance()->getSerializer($notification)->serialize( Request::input('expand', ''))); + return $this->ok(SerializerRegistry::getInstance()->getSerializer($notification)->serialize(Request::input('expand', ''))); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); @@ -380,7 +379,7 @@ class OAuth2SummitNotificationsApiController extends OAuth2ProtectedController try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrderExtraQuestionTypeApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrderExtraQuestionTypeApiController.php index 73f26892..1da8a7ad 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrderExtraQuestionTypeApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrderExtraQuestionTypeApiController.php @@ -14,7 +14,6 @@ use App\Models\Foundation\Summit\Repositories\ISummitOrderExtraQuestionTypeRepository; use App\Services\Model\ISummitOrderExtraQuestionTypeService; use Illuminate\Support\Facades\Validator; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use libs\utils\HTMLCleaner; @@ -204,7 +203,7 @@ final class OAuth2SummitOrderExtraQuestionTypeApiController public function addQuestionValue($summit_id, $question_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -250,7 +249,7 @@ final class OAuth2SummitOrderExtraQuestionTypeApiController try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrdersApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrdersApiController.php index 1f4abff6..70e73eb2 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrdersApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrdersApiController.php @@ -115,12 +115,14 @@ final class OAuth2SummitOrdersApiController ], $validation_rules); } else{ - if(empty($owner->getFirstName())){ + + if(is_null($owner->getFirstName())){ $validation_rules = array_merge([ 'owner_first_name' => 'required|string|max:255', ], $validation_rules); } - if(empty($owner->getLastName())){ + + if(is_null($owner->getLastName())){ $validation_rules = array_merge([ 'owner_last_name' => 'required|string|max:255', ], $validation_rules); @@ -128,6 +130,7 @@ final class OAuth2SummitOrdersApiController } $payload = $this->getJsonPayload($validation_rules); + if(!is_null($owner)){ $payload_ex = [ 'owner_first_name' => !empty($owner->getFirstName()) ? $owner->getFirstName() : $payload['owner_first_name'], @@ -519,7 +522,7 @@ final class OAuth2SummitOrdersApiController $order = $this->service->cancelRequestRefundOrder(intval($order_id)); - return $this->updated(SerializerRegistry::getInstance()->getSerializer($order)->serialize( Request::input('expand', ''))); + return $this->updated(SerializerRegistry::getInstance()->getSerializer($order)->serialize(Request::input('expand', ''))); } catch (ValidationException $ex) { diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPresentationActionApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPresentationActionApiController.php index 0af37f56..70e0e290 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPresentationActionApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPresentationActionApiController.php @@ -12,7 +12,6 @@ * limitations under the License. **/ use App\Services\Model\ISummitPresentationActionService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use models\exceptions\EntityNotFoundException; @@ -80,7 +79,7 @@ final class OAuth2SummitPresentationActionApiController return $this->error403(); $action = $this->service->updateAction($summit, intval($selection_plan_id), intval($presentation_id), intval($action_id), true ); - return $this->updated(SerializerRegistry::getInstance()->getSerializer($action)->serialize(Input::get('expand', ''))); + return $this->updated(SerializerRegistry::getInstance()->getSerializer($action)->serialize(Request::input('expand', ''))); } catch (ValidationException $ex) { Log::warning($ex); @@ -118,7 +117,7 @@ final class OAuth2SummitPresentationActionApiController $action = $this->service->updateAction($summit, intval($selection_plan_id), intval($presentation_id), intval($action_id), false ); - return $this->updated(SerializerRegistry::getInstance()->getSerializer($action)->serialize(Input::get('expand', ''))); + return $this->updated(SerializerRegistry::getInstance()->getSerializer($action)->serialize(Request::input('expand', ''))); } catch (ValidationException $ex) { Log::warning($ex); return $this->error412($ex->getMessages()); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPromoCodesApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPromoCodesApiController.php index cb05ba3b..e7faacb5 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPromoCodesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitPromoCodesApiController.php @@ -28,7 +28,6 @@ use services\model\ISummitPromoCodeService; use utils\Filter; use utils\FilterParser; use utils\OrderParser; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; use utils\PagingInfo; use Exception; @@ -87,7 +86,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle * @return mixed */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -110,15 +109,15 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle $page = 1; $per_page = PagingConstants::DefaultPageSize;; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'code' => ['=@', '=='], 'creator' => ['=@', '=='], @@ -161,9 +160,9 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'code', @@ -209,7 +208,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle * @return \Illuminate\Http\Response|mixed */ public function getAllBySummitCSV($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = []; $allowed_columns = [ "id", @@ -246,8 +245,8 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle $per_page = PHP_INT_MAX; $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'code' => ['=@', '=='], 'creator' => ['=@', '=='], 'creator_email' => ['=@', '=='], @@ -289,15 +288,15 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'code', ]); } - $columns_param = Input::get("columns", ""); + $columns_param = Request::input("columns", ""); $columns = []; if(!empty($columns_param)) $columns = explode(',', $columns_param); @@ -308,7 +307,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle $data = $this->promo_code_repository->getBySummit($summit, new PagingInfo($page, $per_page), $filter, $order); $filename = "promocodes-" . date('Ymd'); - $list = $data->toArray(Input::get("expand", "")); + $list = $data->toArray(Request::input("expand", "")); return $this->export ( @@ -366,7 +365,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle public function addPromoCodeBySummit($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -412,7 +411,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -587,7 +586,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle if (is_null($summit)) return $this->error404(); $payload = []; if (Request::isJson()) { - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $discount_code_rules = [ 'amount' => 'sometimes|required_without:rate|numeric|min:0', diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRSVPTemplatesApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRSVPTemplatesApiController.php index e31e8a2c..35eea9d6 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRSVPTemplatesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRSVPTemplatesApiController.php @@ -15,7 +15,6 @@ use App\Http\Utils\PagingConstants; use App\Models\Foundation\Summit\Events\RSVP\RSVPMultiValueQuestionTemplate; use App\Models\Foundation\Summit\Repositories\IRSVPTemplateRepository; use App\Services\Model\IRSVPTemplateService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -91,7 +90,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', 'per_page' => sprintf('required_with:page|integer|min:%s|max:%s', PagingConstants::MinPageSize, PagingConstants::MaxPageSize), @@ -114,15 +113,15 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'title' => ['=@', '=='], 'is_enabled' => [ '=='], ]); @@ -137,9 +136,9 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'title', ]); @@ -270,7 +269,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -316,7 +315,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -400,7 +399,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -447,7 +446,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -570,7 +569,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -618,7 +617,7 @@ final class OAuth2SummitRSVPTemplatesApiController extends OAuth2ProtectedContro try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index 67e20f8d..e844ddf9 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -18,7 +18,6 @@ use App\Jobs\Emails\Registration\Invitations\ReInviteSummitRegistrationEmail; use App\Models\Foundation\Summit\Repositories\ISummitRegistrationInvitationRepository; use App\Services\Model\ISummitRegistrationInvitationService; use Illuminate\Http\Request as LaravelRequest; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -307,7 +306,7 @@ final class OAuth2SummitRegistrationInvitationApiController extends OAuth2Protec 'is_sent', ]; - $columns_param = Input::get("columns", ""); + $columns_param = Request::input("columns", ""); $columns = []; if(!empty($columns_param)) $columns = explode(',', $columns_param); @@ -411,7 +410,7 @@ final class OAuth2SummitRegistrationInvitationApiController extends OAuth2Protec try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -438,8 +437,8 @@ final class OAuth2SummitRegistrationInvitationApiController extends OAuth2Protec $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'is_accepted' => ['=='], 'is_sent' => ['=='], ]); @@ -453,7 +452,7 @@ final class OAuth2SummitRegistrationInvitationApiController extends OAuth2Protec 'is_sent' => 'sometimes|required|string|in:true,false', ]); - $this->service->triggerSend($summit, $payload, Input::get('filter')); + $this->service->triggerSend($summit, $payload, Request::input('filter')); return $this->ok(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSelectionPlansApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSelectionPlansApiController.php index 8c9d95d3..dcdace28 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSelectionPlansApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSelectionPlansApiController.php @@ -743,8 +743,8 @@ final class OAuth2SummitSelectionPlansApiController extends OAuth2ProtectedContr 'summit_id' => ['=='], 'new_category_id' => ['=='], 'old_category_id' => ['=='], - 'new_category_title' => ['=@', '=='], - 'old_category_title' => ['=@', '=='], + 'new_category_name' => ['=@', '=='], + 'old_category_name' => ['=@', '=='], 'requester_fullname' => ['=@', '=='], 'requester_email' => ['=@', '=='], 'aprover_fullname' => ['=@', '=='], diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php index ef2baaef..a687c736 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php @@ -14,7 +14,6 @@ use App\Models\Foundation\Summit\Repositories\ISelectionPlanRepository; use Exception; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -551,7 +550,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -627,7 +626,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -729,7 +728,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $speaker_from = $this->speaker_repository->getById($speaker_from_id); if (is_null($speaker_from)) return $this->error404(); @@ -759,7 +758,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); @@ -833,7 +832,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); @@ -971,7 +970,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController $presentations ); - return $this->ok($response->toArray($expand = Input::get('expand', ''))); + return $this->ok($response->toArray($expand = Request::input('expand', ''))); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); @@ -1025,7 +1024,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController $presentations ); - return $this->ok($response->toArray($expand = Input::get('expand', ''))); + return $this->ok($response->toArray($expand = Request::input('expand', ''))); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersAssistanceApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersAssistanceApiController.php index 2654bada..899b7cbc 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersAssistanceApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersAssistanceApiController.php @@ -15,7 +15,6 @@ use App\Http\Utils\BooleanCellFormatter; use App\Http\Utils\EpochCellFormatter; use App\Models\Foundation\Summit\Repositories\IPresentationSpeakerSummitAssistanceConfirmationRequestRepository; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -83,7 +82,7 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); - $values = Input::all(); + $values = Request::all(); $rules = array ( @@ -103,15 +102,15 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC $page = 1; $per_page = 10; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'id' => ['=='], 'on_site_phone' => ['==', '=@'], 'speaker_email' => ['==', '=@'], @@ -123,8 +122,8 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC } $order = null; - if (Input::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + if (Request::has('order')) { + $order = OrderParser::parse(Request::input('order'), [ 'id', 'is_confirmed', 'confirmation_date', @@ -175,15 +174,15 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC $page = 1; $per_page = PHP_INT_MAX; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'id' => ['=='], 'on_site_phone' => ['==', '=@'], 'speaker_email' => ['==', '=@'], @@ -195,8 +194,8 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC } $order = null; - if (Input::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + if (Request::has('order')) { + $order = OrderParser::parse(Request::input('order'), [ 'id', 'is_confirmed', 'confirmation_date', @@ -244,7 +243,7 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC { try { if(!Request::isJson()) return $this->error400(); - $data = Input::json()->all(); + $data = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -296,7 +295,7 @@ final class OAuth2SummitSpeakersAssistanceApiController extends OAuth2ProtectedC { try { if(!Request::isJson()) return $this->error400(); - $data = Input::json()->all(); + $data = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTicketApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTicketApiController.php index d1a731da..344d2488 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTicketApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTicketApiController.php @@ -15,7 +15,6 @@ use App\Http\Utils\EpochCellFormatter; use App\Jobs\IngestSummitExternalRegistrationData; use App\ModelSerializers\ISummitAttendeeTicketSerializerTypes; use App\Services\Model\ISummitOrderService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use models\exceptions\EntityNotFoundException; @@ -236,7 +235,7 @@ final class OAuth2SummitTicketApiController extends OAuth2ProtectedController $allowed_columns[] = $question->getLabel(); } - $columns_param = Input::get("columns", ""); + $columns_param = Request::input("columns", ""); $columns = []; if(!empty($columns_param)) $columns = explode(',', $columns_param); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php index b21b7f9d..bc94ec58 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php @@ -16,7 +16,6 @@ use App\Http\Exceptions\HTTP403ForbiddenException; use App\Http\Utils\EpochCellFormatter; use App\Models\Foundation\Summit\Repositories\ISummitTrackChairRepository; use App\Services\Model\ITrackChairService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use models\exceptions\EntityNotFoundException; @@ -196,7 +195,7 @@ final class OAuth2SummitTrackChairsApiController 'summit_id' ]; - $columns_param = Input::get("columns", ""); + $columns_param = Request::input("columns", ""); $columns = []; if(!empty($columns_param)) $columns = explode(',', $columns_param); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackTagGroupsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackTagGroupsApiController.php index f0247799..d2ba7473 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackTagGroupsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackTagGroupsApiController.php @@ -14,7 +14,6 @@ use App\Models\Foundation\Summit\Repositories\ITrackTagGroupAllowedTagsRepository; use App\Services\Model\ISummitTrackTagGroupService; use models\oauth2\IResourceServerContext; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; use ModelSerializers\SerializerRegistry; use utils\Filter; @@ -88,7 +87,7 @@ final class OAuth2SummitTrackTagGroupsApiController extends OAuth2ProtectedContr $track_tag_groups ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (EntityNotFoundException $ex1) { @@ -115,7 +114,7 @@ final class OAuth2SummitTrackTagGroupsApiController extends OAuth2ProtectedContr */ public function getAllowedTags($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -138,15 +137,15 @@ final class OAuth2SummitTrackTagGroupsApiController extends OAuth2ProtectedContr $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), array + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), array ( 'tag' => ['=@', '=='], )); @@ -154,9 +153,9 @@ final class OAuth2SummitTrackTagGroupsApiController extends OAuth2ProtectedContr $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), array + $order = OrderParser::parse(Request::input('order'), array ( 'tag', 'id', @@ -207,7 +206,7 @@ final class OAuth2SummitTrackTagGroupsApiController extends OAuth2ProtectedContr public function addTrackTagGroup($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -258,7 +257,7 @@ final class OAuth2SummitTrackTagGroupsApiController extends OAuth2ProtectedContr public function updateTrackTagGroup($summit_id, $track_tag_group_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build ( diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTracksApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTracksApiController.php index c49af8aa..d02e29ab 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTracksApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTracksApiController.php @@ -18,7 +18,6 @@ use App\Models\Foundation\Summit\Repositories\ISummitTrackRepository; use App\Services\Model\ISummitTrackService; use Illuminate\Http\Request as LaravelRequest; use Illuminate\Support\Facades\Request; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use models\exceptions\ValidationException; @@ -75,7 +74,7 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController * @return mixed */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -98,15 +97,15 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController $page = 1; $per_page = PagingConstants::DefaultPageSize;; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'description' => ['=@', '=='], 'code' => ['=@', '=='], @@ -130,9 +129,9 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'code', @@ -179,7 +178,7 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController * @return mixed */ public function getAllBySummitCSV($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = []; try { @@ -198,15 +197,15 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController $page = 1; $per_page = PHP_INT_MAX; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'title' => ['=@', '=='], 'description' => ['=@', '=='], 'code' => ['=@', '=='], @@ -229,9 +228,9 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'code', @@ -446,7 +445,7 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController public function addTrackBySummit($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -546,7 +545,7 @@ final class OAuth2SummitTracksApiController extends OAuth2ProtectedController public function updateTrackBySummit($summit_id, $track_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsEventTypesApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsEventTypesApiController.php index 0435c026..76364574 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsEventTypesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsEventTypesApiController.php @@ -17,7 +17,6 @@ use App\Services\Model\ISummitEventTypeService; use Illuminate\Support\Facades\Request; use App\Models\Foundation\Summit\Events\SummitEventTypeConstants; use App\Models\Foundation\Summit\Repositories\ISummitEventTypeRepository; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use models\exceptions\ValidationException; @@ -26,7 +25,6 @@ use models\summit\ISummitRepository; use models\exceptions\EntityNotFoundException; use ModelSerializers\SerializerRegistry; use utils\Filter; -use utils\FilterElement; use utils\FilterParser; use utils\OrderParser; use utils\PagingInfo; @@ -74,7 +72,7 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll * @return mixed */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -97,15 +95,15 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'class_name' => ['=='], 'is_default' => ['=='], @@ -146,9 +144,9 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', @@ -194,7 +192,7 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll * @return mixed */ public function getAllBySummitCSV($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ ]; @@ -214,15 +212,15 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll $page = 1; $per_page = PHP_INT_MAX; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'class_name' => ['=='], 'is_default' => ['=='], @@ -263,9 +261,9 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', @@ -351,7 +349,7 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -397,7 +395,7 @@ final class OAuth2SummitsEventTypesApiController extends OAuth2ProtectedControll { try { if (!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsTicketTypesApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsTicketTypesApiController.php index d8577172..ff4721b8 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsTicketTypesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitsTicketTypesApiController.php @@ -16,7 +16,6 @@ use App\Http\Utils\PagingConstants; use App\Services\Model\ISummitTicketTypeService; use Illuminate\Support\Facades\Request; use models\summit\ISummitTicketTypeRepository; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use models\exceptions\ValidationException; @@ -72,7 +71,7 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl * @return mixed */ public function getAllBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -95,15 +94,15 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'description' => ['=@', '=='], 'external_id' => ['=@', '=='], @@ -120,9 +119,9 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', 'external_id' @@ -179,15 +178,15 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl $page = 1; $per_page = PHP_INT_MAX; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'description' => ['=@', '=='], 'external_id' => ['=@', '=='], @@ -205,9 +204,9 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', 'external_id' @@ -283,7 +282,7 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); @@ -329,7 +328,7 @@ final class OAuth2SummitsTicketTypesApiController extends OAuth2ProtectedControl try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2TrackQuestionsTemplateApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2TrackQuestionsTemplateApiController.php index bf09991a..c606ecd4 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2TrackQuestionsTemplateApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2TrackQuestionsTemplateApiController.php @@ -15,7 +15,6 @@ use App\Models\Foundation\Summit\Events\Presentations\TrackQuestions\TrackMultiV use App\Models\Foundation\Summit\Events\Presentations\TrackQuestions\TrackQuestionTemplateConstants; use App\Models\Foundation\Summit\Repositories\ITrackQuestionTemplateRepository; use App\Services\Model\ITrackQuestionTemplateService; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use models\exceptions\EntityNotFoundException; @@ -66,7 +65,7 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon * @return mixed */ public function getTrackQuestionTemplates(){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -86,15 +85,15 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['=@', '=='], 'label' => ['=@', '=='], 'class_name' => ['=='], @@ -117,9 +116,9 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', @@ -168,7 +167,7 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = TrackQuestionTemplateValidationRulesFactory::build($payload); // Creates a Validator instance and validates the data. @@ -242,7 +241,7 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = TrackQuestionTemplateValidationRulesFactory::build($payload, true); // Creates a Validator instance and validates the data. @@ -358,7 +357,7 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = TrackQuestionValueTemplateValidationRulesFactory::build($payload); // Creates a Validator instance and validates the data. @@ -407,7 +406,7 @@ final class OAuth2TrackQuestionsTemplateApiController extends OAuth2ProtectedCon try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = TrackQuestionValueTemplateValidationRulesFactory::build($payload, true); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveAllUnPublishedSummitEventsStrategy.php b/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveAllUnPublishedSummitEventsStrategy.php index 2577056d..d8acf7af 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveAllUnPublishedSummitEventsStrategy.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveAllUnPublishedSummitEventsStrategy.php @@ -11,13 +11,11 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ - -use Illuminate\Support\Facades\Input; use utils\Filter; use utils\FilterParser; use utils\Order; use utils\OrderParser; - +use Illuminate\Support\Facades\Request; /** * Class RetrieveAllUnPublishedSummitEventsStrategy * @package App\Http\Controllers @@ -49,9 +47,9 @@ class RetrieveAllUnPublishedSummitEventsStrategy extends RetrieveAllSummitEvents */ protected function buildOrder(){ $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'title', 'start_date', 'end_date', diff --git a/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php b/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php index ca9b5bc4..9b14bd59 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php @@ -17,9 +17,9 @@ use utils\Order; use utils\OrderParser; use utils\PagingResponse; use Illuminate\Support\Facades\Validator; -use Illuminate\Support\Facades\Input; use utils\FilterParser; use utils\PagingInfo; +use Illuminate\Support\Facades\Request; /** * Class RetrieveSummitEventsStrategy * @package App\Http\Controllers @@ -32,9 +32,9 @@ abstract class RetrieveSummitEventsStrategy $page = 1; $per_page = 5; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } return [$page, $per_page]; @@ -47,7 +47,7 @@ abstract class RetrieveSummitEventsStrategy */ public function getEvents(array $params = []) { - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -77,8 +77,8 @@ abstract class RetrieveSummitEventsStrategy $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), $this->getValidFilters()); + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), $this->getValidFilters()); } if(is_null($filter)) $filter = new Filter(); @@ -96,9 +96,9 @@ abstract class RetrieveSummitEventsStrategy */ protected function buildOrder(){ $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'title', 'start_date', diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/AddEntity.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/AddEntity.php index 7d97f116..3516f6b3 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/AddEntity.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/AddEntity.php @@ -12,7 +12,6 @@ * limitations under the License. **/ use App\Http\Exceptions\HTTP403ForbiddenException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -47,7 +46,7 @@ trait AddEntity public function add(){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/AddSummitChildElement.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/AddSummitChildElement.php index f736df06..d1971da1 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/AddSummitChildElement.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/AddSummitChildElement.php @@ -14,7 +14,6 @@ use App\Http\Exceptions\HTTP403ForbiddenException; use models\summit\Summit; use models\utils\IEntity; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -54,7 +53,7 @@ trait AddSummitChildElement public function add($summit_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); $summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAll.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAll.php index ca70b6b0..243e7788 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAll.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAll.php @@ -11,7 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -64,7 +63,7 @@ trait GetAll * @return \Illuminate\Http\JsonResponse|mixed */ public function getAll(){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -84,15 +83,15 @@ trait GetAll $page = 1; $per_page = PagingConstants::DefaultPageSize;; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), $this->getFilterRules()); + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), $this->getFilterRules()); } if(is_null($filter)) $filter = new Filter(); @@ -104,9 +103,9 @@ trait GetAll $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), $this->getOrderRules()); + $order = OrderParser::parse(Request::input('order'), $this->getOrderRules()); } $data = $this->getRepository()->getAllByPage(new PagingInfo($page, $per_page), $this->applyExtraFilters($filter), $order); diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAndValidateJsonPayload.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAndValidateJsonPayload.php index 983b4788..82d04fe5 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAndValidateJsonPayload.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/GetAndValidateJsonPayload.php @@ -11,7 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; use models\exceptions\ValidationException; @@ -30,7 +29,7 @@ trait GetAndValidateJsonPayload if(!Request::isJson()){ throw new \InvalidArgumentException("invalid request format"); } - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($payload, $validation_rules); diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/GetSummitChildElementById.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/GetSummitChildElementById.php index 5ad024ac..968d1e52 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/GetSummitChildElementById.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/GetSummitChildElementById.php @@ -53,7 +53,7 @@ trait GetSummitChildElementById $child = $this->getChildFromSummit($summit, $child_id); if(is_null($child)) return $this->error404(); - return $this->ok(SerializerRegistry::getInstance()->getSerializer($child, $this->getChildSerializer())->serialize( Request::input('expand', ''))); + return $this->ok(SerializerRegistry::getInstance()->getSerializer($child, $this->getChildSerializer())->serialize(Request::input('expand', ''))); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412($ex1->getMessages()); diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedAddEntity.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedAddEntity.php index 34531633..12843bc2 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedAddEntity.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedAddEntity.php @@ -12,7 +12,6 @@ * limitations under the License. **/ use App\Http\Exceptions\HTTP403ForbiddenException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -36,7 +35,7 @@ trait ParametrizedAddEntity ){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedGetAll.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedGetAll.php index f0ac8237..688f9d7a 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedGetAll.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedGetAll.php @@ -26,7 +26,6 @@ use utils\OrderParser; use utils\PagingInfo; use App\Http\Utils\PagingConstants; use Exception; - /** * Trait ParametrizedGetAll * @package App\Http\Controllers diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedUpdateEntity.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedUpdateEntity.php index b4da5570..be6e77b9 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedUpdateEntity.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/ParametrizedUpdateEntity.php @@ -12,7 +12,6 @@ * limitations under the License. **/ use App\Http\Exceptions\HTTP403ForbiddenException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -41,7 +40,7 @@ trait ParametrizedUpdateEntity ...$args){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/SummitBookableVenueRoomApi.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/SummitBookableVenueRoomApi.php index 854e8d90..1a06ed4b 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/SummitBookableVenueRoomApi.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/SummitBookableVenueRoomApi.php @@ -12,11 +12,9 @@ * limitations under the License. **/ -use App\Http\Utils\BooleanCellFormatter; use App\Http\Utils\EpochCellFormatter; use App\Http\Utils\PagingConstants; use Exception; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -28,12 +26,10 @@ use models\summit\SummitRoomReservation; use models\summit\SummitVenue; use ModelSerializers\SerializerRegistry; use utils\Filter; -use utils\FilterElement; use utils\FilterParser; use utils\OrderParser; use utils\PagingInfo; use utils\PagingResponse; -use Illuminate\Http\Request as LaravelRequest; /** * Trait SummitBookableVenueRoomApi * @package App\Http\Controllers @@ -80,7 +76,7 @@ trait SummitBookableVenueRoomApi * @return \Illuminate\Http\JsonResponse|mixed */ public function getBookableVenueRooms($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', 'per_page' => sprintf('required_with:page|integer|min:%s|max:%s', PagingConstants::MinPageSize, PagingConstants::MaxPageSize), @@ -102,15 +98,15 @@ trait SummitBookableVenueRoomApi $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'name' => ['==', '=@'], 'description' => ['=@'], 'capacity' => ['>', '<', '<=', '>=', '=='], @@ -130,9 +126,9 @@ trait SummitBookableVenueRoomApi $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'name', 'capacity', @@ -180,7 +176,7 @@ trait SummitBookableVenueRoomApi * @return mixed */ public function getAllReservationsBySummit($summit_id){ - $values = Input::all(); + $values = Request::all(); $rules = [ 'page' => 'integer|min:1', @@ -203,15 +199,15 @@ trait SummitBookableVenueRoomApi $page = 1; $per_page = PagingConstants::DefaultPageSize; - if (Input::has('page')) { - $page = intval(Input::get('page')); - $per_page = intval(Input::get('per_page')); + if (Request::has('page')) { + $page = intval(Request::input('page')); + $per_page = intval(Request::input('per_page')); } $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'summit_id' => ['=='], 'room_name' => ['==', '=@'], 'room_id' => ['=='], @@ -246,9 +242,9 @@ trait SummitBookableVenueRoomApi $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'start_datetime', 'end_datetime', @@ -311,8 +307,8 @@ trait SummitBookableVenueRoomApi $filter = null; - if (Input::has('filter')) { - $filter = FilterParser::parse(Input::get('filter'), [ + if (Request::has('filter')) { + $filter = FilterParser::parse(Request::input('filter'), [ 'summit_id' => ['=='], 'room_name' => ['==', '=@'], 'room_id' => ['=='], @@ -347,9 +343,9 @@ trait SummitBookableVenueRoomApi $order = null; - if (Input::has('order')) + if (Request::has('order')) { - $order = OrderParser::parse(Input::get('order'), [ + $order = OrderParser::parse(Request::input('order'), [ 'id', 'start_datetime', 'end_datetime', @@ -574,7 +570,7 @@ trait SummitBookableVenueRoomApi if(!$room instanceof SummitBookableVenueRoom) return $this->error404(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $payload['owner_id'] = $current_member->getId(); $rules = SummitRoomReservationValidationRulesFactory::build($payload); // Creates a Validator instance and validates the data. @@ -716,7 +712,7 @@ trait SummitBookableVenueRoomApi public function updateVenueBookableRoom($summit_id, $venue_id, $room_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitBookableVenueRoom::ClassName; @@ -811,7 +807,7 @@ trait SummitBookableVenueRoomApi public function updateVenueFloorBookableRoom($summit_id, $venue_id, $floor_id, $room_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitBookableVenueRoom::ClassName; @@ -883,7 +879,7 @@ trait SummitBookableVenueRoomApi public function addVenueBookableRoom($summit_id, $venue_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitBookableVenueRoom::ClassName; @@ -927,7 +923,7 @@ trait SummitBookableVenueRoomApi public function addVenueFloorBookableRoom($summit_id, $venue_id, $floor_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $payload['class_name'] = SummitBookableVenueRoom::ClassName; @@ -1031,7 +1027,7 @@ trait SummitBookableVenueRoomApi public function refundBookableVenueRoomReservation($summit_id, $room_id, $reservation_id){ try { if(!Request::isJson()) return $this->error400(); - $payload = Input::json()->all(); + $payload = Request::json()->all(); $rules = [ 'amount' => 'required|integer|greater_than:0', ]; diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateEntity.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateEntity.php index 405b768b..5c939feb 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateEntity.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateEntity.php @@ -13,7 +13,6 @@ **/ use App\Http\Exceptions\HTTP403ForbiddenException; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -50,7 +49,7 @@ trait UpdateEntity public function update($id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $payload = $data->all(); // Creates a Validator instance and validates the data. diff --git a/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateSummitChildElement.php b/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateSummitChildElement.php index 20e89e4d..dbcf0dff 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateSummitChildElement.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Traits/UpdateSummitChildElement.php @@ -13,7 +13,6 @@ **/ use models\summit\Summit; use models\utils\IEntity; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Validator; @@ -55,7 +54,7 @@ trait UpdateSummitChildElement public function update($summit_id, $child_id){ try { if(!Request::isJson()) return $this->error400(); - $data = Input::json(); + $data = Request::json(); $summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id); if (is_null($summit)) return $this->error404(); diff --git a/app/Http/Controllers/Apis/TimezonesApiController.php b/app/Http/Controllers/Apis/TimezonesApiController.php index d3e43d20..92acd5a2 100644 --- a/app/Http/Controllers/Apis/TimezonesApiController.php +++ b/app/Http/Controllers/Apis/TimezonesApiController.php @@ -12,7 +12,7 @@ * limitations under the License. **/ -use Illuminate\Support\Facades\Input; +use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Log; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; @@ -38,7 +38,7 @@ final class TimezonesApiController extends JsonController $timezones ); - return $this->ok($response->toArray($expand = Input::get('expand',''))); + return $this->ok($response->toArray($expand = Request::input('expand',''))); } catch (ValidationException $ex1) { Log::warning($ex1); diff --git a/app/Http/Controllers/ConfigurationsController.php b/app/Http/Controllers/ConfigurationsController.php index 30374158..965f5b80 100644 --- a/app/Http/Controllers/ConfigurationsController.php +++ b/app/Http/Controllers/ConfigurationsController.php @@ -12,7 +12,6 @@ * limitations under the License. **/ use App\Models\ResourceServer\IApiRepository; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Route; diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/JsonController.php index 43532086..589fa99c 100644 --- a/app/Http/Controllers/JsonController.php +++ b/app/Http/Controllers/JsonController.php @@ -13,9 +13,9 @@ **/ use App\Http\Utils\CSVExporter; use Exception; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Request; /** * Class JsonController * @package App\Http\Controllers @@ -39,8 +39,8 @@ abstract class JsonController extends Controller { $res = Response::json($data, 201); //jsonp - if (Input::has('callback')) { - $res->setCallback(Input::get('callback')); + if (Request::has('callback')) { + $res->setCallback(Request::input('callback')); } return $res; @@ -50,8 +50,8 @@ abstract class JsonController extends Controller { $res = Response::json($data, 204); //jsonp - if (Input::has('callback')) { - $res->setCallback(Input::get('callback')); + if (Request::has('callback')) { + $res->setCallback(Request::input('callback')); } return $res; @@ -61,8 +61,8 @@ abstract class JsonController extends Controller { $res = Response::json($data, $has_content ? 201 : 204); //jsonp - if (Input::has('callback')) { - $res->setCallback(Input::get('callback')); + if (Request::has('callback')) { + $res->setCallback(Request::input('callback')); } return $res; } @@ -77,8 +77,8 @@ abstract class JsonController extends Controller $res = $this->response2XX(200, $data); //jsonp - if (Input::has('callback')) { - $res->setCallback(Input::get('callback')); + if (Request::has('callback')) { + $res->setCallback(Request::input('callback')); } return $res; diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c3e0b8cb..5c6177d0 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -14,12 +14,12 @@ class Kernel extends HttpKernel * @var array */ protected $middleware = [ - \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \Spatie\Cors\Cors::class, + //\App\Http\Middleware\TrustProxies::class, + \App\Http\Middleware\CheckForMaintenanceMode::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + //\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + \Fruitcake\Cors\HandleCors::class, \App\Http\Middleware\SecurityHTTPHeadersWriterMiddleware::class, \App\Http\Middleware\ParseMultipartFormDataInputForNonPostRequests::class, \App\Http\Middleware\DoctrineMiddleware::class, @@ -32,9 +32,29 @@ class Kernel extends HttpKernel */ protected $middlewareGroups = [ 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ + 'ssl', + 'oauth2.protected', + 'rate.limit', + 'etags' ], + 'public_api' => [ + 'ssl', + 'rate.limit:10000,1', // 10000 request per minute + 'etags' + ], + 'well_known' => [ + 'ssl', + 'rate.limit:1000,1', // 1000 request per minute + ] ]; /** diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 67abcaea..6d6648d3 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -2,29 +2,20 @@ namespace App\Http\Middleware; -use Closure; -use Illuminate\Support\Facades\Auth; +use Illuminate\Auth\Middleware\Authenticate as Middleware; -class Authenticate +class Authenticate extends Middleware { /** - * Handle an incoming request. + * Get the path the user should be redirected to when they are not authenticated. * * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @param string|null $guard - * @return mixed + * @return string|null */ - public function handle($request, Closure $next, $guard = null) + protected function redirectTo($request) { - if (Auth::guard($guard)->guest()) { - if ($request->ajax() || $request->wantsJson()) { - return response('Unauthorized.', 401); - } else { - return redirect()->guest('login'); - } + if (! $request->expectsJson()) { + return route('login'); } - - return $next($request); } -} +} \ No newline at end of file diff --git a/app/Http/Middleware/CORSMiddleware.php b/app/Http/Middleware/CORSMiddleware.php deleted file mode 100644 index 199e9194..00000000 --- a/app/Http/Middleware/CORSMiddleware.php +++ /dev/null @@ -1,531 +0,0 @@ -endpoint_repository = $endpoint_repository; - $this->cache_service = $cache_service; - $this->allowed_headers = Config::get('cors.allowed_headers', self::DefaultAllowedHeaders); - $this->allowed_methods = Config::get('cors.allowed_methods', self::DefaultAllowedMethods); - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if ($response = $this->preProcess($request)) - { - return $response; - } - //normal processing - $response = $next($request); - $this->postProcess($request, $response); - return $response; - } - - private function generatePreflightCacheKey($request) - { - $cache_id = 'pre-flight-'. $request->getClientIp(). '-' . $request->getRequestUri(). '-' . $request->getMethod(); - if($request->headers->has('Origin')){ - $origin = $request->headers->get('Origin'); - $cache_id .= "-".$origin; - } - return $cache_id; - } - - /** - * @param Request $request - * @return Response - */ - public function preProcess(Request $request) - { - $actual_request = false; - Log::debug(sprintf("CORSMiddleware::preProcess ip %s uri %s method %s", $request->getClientIp(), $request->getRequestUri(), $request->getMethod())); - if ($this->isValidCORSRequest($request)) - { - Log::debug(sprintf("CORSMiddleware::preProcess isValidCORSRequest true")); - - /* Step 01 : Determine the type of the incoming request */ - $type = $this->getRequestType($request); - /* Step 02 : Process request according to is type */ - Log::debug(sprintf("CORSMiddleware::preProcess getRequestType %s", $type)); - switch($type) - { - case CORSRequestPreflightType::REQUEST_FOR_PREFLIGHT: - { - // HTTP request send by client to preflight a further 'Complex' request - // sets the original method on request in order to be able to find the - // correct route - $real_method = $request->headers->get('Access-Control-Request-Method'); - $request->setMethod($real_method); - - $route_path = RequestUtils::getCurrentRoutePath($request); - if (!$route_path || !$this->checkEndPoint($route_path, $real_method)) - { - Log::debug(sprintf("CORSMiddleware::preProcess checkEndPoint path %s real method %s returning 403", $route_path, $real_method)); - $response = new Response(); - $response->setStatusCode(403); - return $response; - } - // ----Step 2b: Store pre-flight request data in the Cache to keep (mark) the request as correctly followed the request pre-flight process - $data = new CORSRequestPreflightData($request, is_null($this->current_endpoint)? false : $this->current_endpoint->isAllowCredentials()); - $cache_id = $this->generatePreflightCacheKey($request); - $this->cache_service->storeHash($cache_id, $data->toArray(), CORSRequestPreflightData::$cache_lifetime); - // ----Step 2c: Return corresponding response - This part should be customized with application specific constraints..... - return $this->makePreflightResponse($request); - } - break; - case CORSRequestPreflightType::COMPLEX_REQUEST: - { - $cache_id = $this->generatePreflightCacheKey($request); - // ----Step 2a: Check if the current request has an entry into the preflighted requests Cache - $data = $this->cache_service->getHash($cache_id, CORSRequestPreflightData::$cache_attributes); - if (!count($data)) - { - // there wasnt preflight so just regular processing - return null; - } - // ----Step 2b: Check that pre-flight information declared during the pre-flight request match the current request on key information - $match = false; - // ------Start with comparison of "Origin" HTTP header (according to utility method impl. used to retrieve header reference cannot be null)... - if ($request->headers->get('Origin') === $data['origin']) - { - // ------Continue with HTTP method... - if ($request->getMethod() === $data['expected_method']) - { - // ------Finish with custom HTTP headers (use an method to avoid manual iteration on collection to increase the speed)... - $x_headers = self::getCustomHeaders($request); - $x_headers_pre = explode(',', $data['expected_custom_headers']); - sort($x_headers); - sort($x_headers_pre); - if (count(array_diff($x_headers, $x_headers_pre)) === 0) - { - $match = true; - } - } - } - if (!$match) - { - Log::debug(sprintf("CORSMiddleware::preProcess checkEndPoint match false returning 403")); - $response = new Response(); - $response->setStatusCode(403); - return $response; - } - $actual_request = true; - } - break; - case CORSRequestPreflightType::SIMPLE_REQUEST: - { - // origins, do not set any additional headers and terminate this set of steps. - if (!$this->isAllowedOrigin($request)) { - Log::debug(sprintf("CORSMiddleware::preProcess isAllowedOrigin false returning 403")); - $response = new Response(); - $response->setStatusCode(403); - return $response; - } - $actual_request = true; - // If the resource supports credentials add a single Access-Control-Allow-Origin header, with the value - // of the Origin header as value, and add a single Access-Control-Allow-Credentials header with the - // case-sensitive string "true" as value. - // Otherwise, add a single Access-Control-Allow-Origin header, with either the value of the Origin header - // or the string "*" as value. - } - break; - } - } - if ($actual_request) - { - Log::debug(sprintf("CORSMiddleware::preProcess actual_request is true")); - // Save response headers - $cache_id = $this->generatePreflightCacheKey($request); - // ----Step 2a: Check if the current request has an entry into the preflighted requests Cache - $data = $this->cache_service->getHash($cache_id, CORSRequestPreflightData::$cache_attributes); - $this->headers['Access-Control-Allow-Origin'] = $request->headers->get('Origin'); - if (isset($data['allows_credentials']) && $data['allows_credentials'] == true) - { - $this->headers['Access-Control-Allow-Credentials'] = 'true'; - } - /** - * During a CORS request, the getResponseHeader() method can only access simple response headers. - * Simple response headers are defined as follows: - ** Cache-Control - ** Content-Language - ** Content-Type - ** Expires - ** Last-Modified - ** Pragma - * If you want clients to be able to access other headers, - * you have to use the Access-Control-Expose-Headers header. - * The value of this header is a comma-delimited list of response headers you want to expose - * to the client. - */ - $exposed_headers = Config::get('cors.exposed_headers', 'Content-Type, Expires'); - if (!empty($exposed_headers)) - { - $this->headers['Access-Control-Expose-Headers'] = $exposed_headers ; - } - } - } - - public function postProcess(Request $request, Response $response) - { - // add CORS response headers - if (count($this->headers) > 0) - { - $response->headers->add($this->headers); - } - return $response; - } - - /** - * @param Request $request - * @return Response - */ - private function makePreflightResponse(Request $request) - { - $response = new Response(); - if (!$this->isAllowedOrigin($request)) - { - Log::debug(sprintf("CORSMiddleware::makePreflightResponse isAllowedOrigin is false returning 403")); - $response->headers->set('Access-Control-Allow-Origin', 'null'); - $response->setStatusCode(403); - return $response; - } - $response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin')); - // The Access-Control-Request-Method header indicates which method will be used in the actual - // request as part of the preflight request - // check request method - if (!is_null($this->current_endpoint) && $request->headers->get('Access-Control-Request-Method') != $this->current_endpoint->getHttpMethod()) - { - Log::debug(sprintf("CORSMiddleware::makePreflightResponse returning 405")); - $response->setStatusCode(405); - return $response; - } - // The Access-Control-Allow-Credentials header indicates whether the response to request - // can be exposed when the omit credentials flag is unset. When part of the response to a preflight request - // it indicates that the actual request can include user credentials. - if (!is_null($this->current_endpoint) && $this->current_endpoint->isAllowCredentials()) - { - $response->headers->set('Access-Control-Allow-Credentials', 'true'); - } - if (Config::get('cors.use_pre_flight_caching', false)) - { - // The Access-Control-Max-Age header indicates how long the response can be cached, so that for - // subsequent requests, within the specified time, no preflight request has to be made. - $response->headers->set('Access-Control-Max-Age', Config::get('cors.max_age', 32000)); - } - // The Access-Control-Allow-Headers header indicates, as part of the response to a preflight request, - // which header field names can be used during the actual request - $response->headers->set('Access-Control-Allow-Headers', $this->allowed_headers); - - //The Access-Control-Allow-Methods header indicates, as part of the response to a preflight request, - // which methods can be used during the actual request. - $response->headers->set('Access-Control-Allow-Methods', $this->allowed_methods); - // The Access-Control-Request-Headers header indicates which headers will be used in the actual request - // as part of the preflight request. - $headers = $request->headers->get('Access-Control-Request-Headers'); - if ($headers) - { - $headers = trim(strtolower($headers)); - $allow_headers = explode(', ', $this->allowed_headers); - foreach (preg_split('{, *}', $headers) as $header) - { - //if they are simple headers then skip them - if (in_array($header, self::$simple_headers, true)) - { - continue; - } - //check is the requested header is on the list of allowed headers - if (!in_array($header, $allow_headers, true)) - { - Log::debug(sprintf("CORSMiddleware::makePreflightResponse header %s is not on allowed headers returning 400", $header)); - $response->setStatusCode(400); - $response->setContent('Unauthorized header '.$header); - break; - } - } - } - //OK - No Content - $response->setStatusCode(204); - return $response; - } - - /** - * @param Request $request - * @returns bool - */ - private function isValidCORSRequest(Request $request) - { - /** - * The presence of the Origin header does not necessarily mean that the request is a cross-origin request. - * While all cross-origin requests will contain an Origin header, - - * Origin header on same-origin requests. But Chrome and Safari include an Origin header on - * same-origin POST/PUT/DELETE requests (same-origin GET requests will not have an Origin header). - */ - return $request->headers->has('Origin'); - } - - /** - * https://www.owasp.org/index.php/CORS_OriginHeaderScrutiny - * Filter that will ensure the following points for each incoming HTTP CORS requests: - * - Have only one and non empty instance of the origin header, - * - Have only one and non empty instance of the host header, - * - The value of the origin header is present in a internal allowed domains list (white list). As we act before the - * step 2 of the CORS HTTP requests/responses exchange process, allowed domains list is yet provided to client, - * - Cache IP of the sender for 1 hour. If the sender send one time a origin domain that is not in the white list - * then all is requests will return an HTTP 403 response (protract allowed domain guessing). - * We use the method above because it's not possible to identify up to 100% that the request come from one expected - * client application, since: - * - All information of a HTTP request can be faked, - * - It's the browser (or others tools) that send the HTTP request then the IP address that we have access to is the - * client IP address. - * @param Request $request - * @return bool - */ - private function testOriginHeaderScrutiny(Request $request) - { - /* Step 0 : Check presence of client IP in black list */ - $client_ip = $request->getClientIp(); - if (Cache::has(self::CORS_IP_BLACKLIST_PREFIX . $client_ip)) - { - Log::debug(sprintf("CORSMiddleware::testOriginHeaderScrutiny ip %s is blacklisted", $client_ip)); - return false; - } - /* Step 1 : Check that we have only one and non empty instance of the "Origin" header */ - $origin = $request->headers->get('Origin', null, false); - if (is_array($origin) && count($origin) > 1) - { - // If we reach this point it means that we have multiple instance of the "Origin" header - // Add client IP address to black listed client - $expiresAt = Carbon::now()->addMinutes(60); - Cache::put(self::CORS_IP_BLACKLIST_PREFIX . $client_ip, self::CORS_IP_BLACKLIST_PREFIX . $client_ip, $expiresAt); - Log::debug(sprintf("CORSMiddleware::testOriginHeaderScrutiny ip %s is blacklisted", $client_ip)); - return false; - } - /* Step 2 : Check that we have only one and non empty instance of the "Host" header */ - $host = $request->headers->get('Host', null, false); - //Have only one and non empty instance of the host header, - if (is_array($host) && count($host) > 1) - { - // If we reach this point it means that we have multiple instance of the "Host" header - $expiresAt = Carbon::now()->addMinutes(60); - Cache::put(self::CORS_IP_BLACKLIST_PREFIX . $client_ip, self::CORS_IP_BLACKLIST_PREFIX . $client_ip, $expiresAt); - Log::debug(sprintf("CORSMiddleware::testOriginHeaderScrutiny ip %s is blacklisted", $client_ip)); - return false; - } - /* Step 3 : Perform analysis - Origin header is required */ - - $origin = $request->headers->get('Origin'); - $host = $request->headers->get('Host'); - $server_name = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : null; - $origin_host = @parse_url($origin, PHP_URL_HOST); - - // check origin not empty and allowed - - if (!$this->isAllowedOrigin($origin)) - { - $expiresAt = Carbon::now()->addMinutes(60); - Cache::put(self::CORS_IP_BLACKLIST_PREFIX . $client_ip, self::CORS_IP_BLACKLIST_PREFIX . $client_ip, $expiresAt); - Log::debug(sprintf("CORSMiddleware::testOriginHeaderScrutiny ip %s is blacklisted", $client_ip)); - return false; - } - - if (is_null($host) || $server_name != $host || is_null($origin_host) || $origin_host == $server_name) - { - $expiresAt = Carbon::now()->addMinutes(60); - Cache::put(self::CORS_IP_BLACKLIST_PREFIX . $client_ip, self::CORS_IP_BLACKLIST_PREFIX . $client_ip, $expiresAt); - Log::debug(sprintf("CORSMiddleware::testOriginHeaderScrutiny ip %s is blacklisted", $client_ip)); - return false; - } - - /* Step 4 : Finalize request next step */ - return true; - } - - /** - * @param $endpoint_path - * @param $http_method - * @return bool - */ - private function checkEndPoint($endpoint_path, $http_method) - { - $this->current_endpoint = $this->endpoint_repository->getApiEndpointByUrlAndMethod($endpoint_path, $http_method); - if (is_null($this->current_endpoint)) - { - return true; - } - if (!$this->current_endpoint->isAllowCors() || !$this->current_endpoint->isActive()) - { - return false; - } - return true; - } - - /** - * @param string $origin - * @return bool - */ - private function isAllowedOrigin($origin) - { - return true; - } - - private static function getRequestType(Request $request) - { - - $type = CORSRequestPreflightType::UNKNOWN; - $http_method = $request->getMethod(); - $content_type = $request->headers->has('Content-Type') ? strtolower( $request->headers->get('Content-Type')) : null; - - if (false !== $pos = strpos($content_type, ';')) { - $content_type = substr($content_type, 0, $pos); - } - - $http_method = strtoupper($http_method); - - if ($http_method === 'OPTIONS' && $request->headers->has('Access-Control-Request-Method')) - { - $type = CORSRequestPreflightType::REQUEST_FOR_PREFLIGHT; - } - else - { - if (self::hasCustomHeaders($request)) - { - $type = CORSRequestPreflightType::COMPLEX_REQUEST; - } - elseif ($http_method === 'POST' && !in_array($content_type, self::$simple_content_header_values, true)) - { - $type = CORSRequestPreflightType::COMPLEX_REQUEST; - } - elseif (!in_array($http_method, self::$simple_http_methods, true)) - { - $type = CORSRequestPreflightType::COMPLEX_REQUEST; - } - else - { - $type = CORSRequestPreflightType::SIMPLE_REQUEST; - } - } - return $type; - } - - - private static function getCustomHeaders(Request $request) - { - $custom_headers = array(); - foreach ($request->headers->all() as $k => $h) - { - if (starts_with('X-', strtoupper(trim($k)))) - { - array_push($custom_headers, strtoupper(trim($k))); - } - } - return $custom_headers; - } - - private static function hasCustomHeaders(Request $request) - { - return count(self::getCustomHeaders($request)) > 0; - } -} diff --git a/app/Http/Middleware/CORSRequestPreflightData.php b/app/Http/Middleware/CORSRequestPreflightData.php deleted file mode 100644 index ffeb1bac..00000000 --- a/app/Http/Middleware/CORSRequestPreflightData.php +++ /dev/null @@ -1,82 +0,0 @@ -sender = $request->getClientIp(); - $this->uri = $request->getRequestUri(); - $this->origin = $request->headers->get('Origin'); - $this->expected_method = $request->headers->get('Access-Control-Request-Method'); - $this->allows_credentials = $allows_credentials; - - $tmp = $request->headers->get("Access-Control-Request-Headers"); - if (!empty($tmp)) - { - $hs = explode(',', $tmp); - foreach ($hs as $h) - { - array_push($this->expected_custom_headers, strtoupper(trim($h))); - } - } - } - - /** - * @return array - */ - public function toArray() - { - $res = []; - $res['sender'] = $this->sender; - $res['uri'] = $this->uri; - $res['origin'] = $this->origin; - $res['allows_credentials'] = $this->allows_credentials; - $res['expected_method'] = $this->expected_method; - $res['expected_custom_headers'] = implode(',', $this->expected_custom_headers); - return $res; - } - -} \ No newline at end of file diff --git a/app/Http/Middleware/CORSRequestPreflightType.php b/app/Http/Middleware/CORSRequestPreflightType.php deleted file mode 100644 index 4dcf2a82..00000000 --- a/app/Http/Middleware/CORSRequestPreflightType.php +++ /dev/null @@ -1,36 +0,0 @@ -cookies as $key => $cookie) { - if ($this->isDisabled($key)) { - continue; - } - - try { - $request->cookies->set($key, $this->decryptCookie($key, $cookie)); - } catch (DecryptException $e) { - $request->cookies->set($key, null); - } - catch(\ErrorException $e1){ - $request->cookies->set($key, null); - } - } - - return $request; - } - -} +} \ No newline at end of file diff --git a/app/Http/Middleware/RateLimitMiddleware.php b/app/Http/Middleware/RateLimitMiddleware.php index c003b2ad..eab6c350 100644 --- a/app/Http/Middleware/RateLimitMiddleware.php +++ b/app/Http/Middleware/RateLimitMiddleware.php @@ -54,13 +54,18 @@ final class RateLimitMiddleware extends ThrottleRequests } /** - * @param \Illuminate\Http\Request $request - * @param Closure $next - * @param int $max_attempts - * @param int $decay_minutes - * @return \Illuminate\Http\Response|mixed + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param int|string $maxAttempts + * @param float|int $decayMinutes + * @param string $prefix + * @return \Symfony\Component\HttpFoundation\Response + * + * @throws \Illuminate\Http\Exceptions\ThrottleRequestsException */ - public function handle($request, Closure $next, $max_attempts = 0, $decay_minutes = 0) + public function handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1, $prefix = '') { $route = RequestUtils::getCurrentRoutePath($request); $method = $request->getMethod(); @@ -69,11 +74,11 @@ final class RateLimitMiddleware extends ThrottleRequests $client_ip = $request->getClientIp(); if (!is_null($endpoint) && $endpoint->getRateLimit() > 0) { - $max_attempts = $endpoint->getRateLimit(); + $maxAttempts = $endpoint->getRateLimit(); } if (!is_null($endpoint) && $endpoint->getRateLimitDecay() > 0) { - $decay_minutes = $endpoint->getRateLimitDecay(); + $decayMinutes = $endpoint->getRateLimitDecay(); } $endpoint_rate_limit_by_ip = $this->endpoint_rate_limit_by_ip_repository->getByIPRouteMethod @@ -84,26 +89,26 @@ final class RateLimitMiddleware extends ThrottleRequests ); if(!is_null($endpoint_rate_limit_by_ip)){ - $max_attempts = $endpoint_rate_limit_by_ip->getRateLimit(); - $decay_minutes = $endpoint_rate_limit_by_ip->getRateLimitDecay(); + $maxAttempts = $endpoint_rate_limit_by_ip->getRateLimit(); + $decayMinutes = $endpoint_rate_limit_by_ip->getRateLimitDecay(); } - if ($max_attempts == 0 || $decay_minutes == 0) { + if ($maxAttempts == 0 || $decayMinutes == 0) { // short circuit (infinite) return $next($request); } - if ($this->limiter->tooManyAttempts($key, $max_attempts)) { - return $this->buildException($key, $max_attempts); + if ($this->limiter->tooManyAttempts($key, $maxAttempts)) { + throw $this->buildException($key, $maxAttempts); } - $this->limiter->hit($key, $decay_minutes); + $this->limiter->hit($key, $decayMinutes); $response = $next($request); return $this->addHeaders( - $response, $max_attempts, - $this->calculateRemainingAttempts($key, $max_attempts) + $response, $maxAttempts, + $this->calculateRemainingAttempts($key, $maxAttempts) ); } } \ No newline at end of file diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index d4d20374..fd705aeb 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -1,7 +1,8 @@ -check()) { - return redirect('/'); + return redirect(RouteServiceProvider::HOME); } return $next($request); } -} +} \ No newline at end of file diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php index 5a50e7b5..28609f1a 100644 --- a/app/Http/Middleware/TrimStrings.php +++ b/app/Http/Middleware/TrimStrings.php @@ -15,4 +15,4 @@ class TrimStrings extends Middleware 'password', 'password_confirmation', ]; -} +} \ No newline at end of file diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 7daf51f1..6ead9768 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -2,15 +2,15 @@ namespace App\Http\Middleware; -use Illuminate\Http\Request; use Fideloper\Proxy\TrustProxies as Middleware; +use Illuminate\Http\Request; class TrustProxies extends Middleware { /** * The trusted proxies for this application. * - * @var array + * @var array|string */ protected $proxies; @@ -20,4 +20,4 @@ class TrustProxies extends Middleware * @var int */ protected $headers = Request::HEADER_X_FORWARDED_ALL; -} +} \ No newline at end of file diff --git a/app/Http/Middleware/UserAuthEndpoint.php b/app/Http/Middleware/UserAuthEndpoint.php index 817c4163..50b1a0a5 100644 --- a/app/Http/Middleware/UserAuthEndpoint.php +++ b/app/Http/Middleware/UserAuthEndpoint.php @@ -81,10 +81,13 @@ final class UserAuthEndpoint Log::debug(sprintf("UserAuthEndpoint::handle route %s method %s member %s (%s) required group %s", $route, $method, $current_member->getId(), $current_member->getEmail(), $required_group->getSlug())); - if($current_member->isOnGroup($required_group->getSlug())) + if($current_member->isOnGroup($required_group->getSlug())) { + Log::debug(sprintf("UserAuthEndpoint::handle member %s is on group %s request %s", $current_member->getId(), $required_group->getSlug(), $request->path())); return $next($request); + } } + Log::warning(sprintf("UserAuthEndpoint::handle member %s is not authorized", $current_member->getId())); $http_response = Response::json(['error' => 'unauthorized member'], 403); return $http_response; } diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index 0c13b854..e686b035 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -6,6 +6,13 @@ use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { + /** + * Indicates whether the XSRF-TOKEN cookie should be set on the response. + * + * @var bool + */ + protected $addHttpCookie = true; + /** * The URIs that should be excluded from CSRF verification. * @@ -14,4 +21,4 @@ class VerifyCsrfToken extends Middleware protected $except = [ // ]; -} +} \ No newline at end of file diff --git a/app/Http/Middleware/cors_server_flowchart.png b/app/Http/Middleware/cors_server_flowchart.png deleted file mode 100644 index cffd59741659b490a32f8651adfc1deb1b403c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99960 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

4$y&@xqh>-skAyeW`C3gCLhw`95cH}r5ZI*1N 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 diff --git a/app/Http/Routes/public.php b/app/Http/Routes/public.php deleted file mode 100644 index 449d71d4..00000000 --- a/app/Http/Routes/public.php +++ /dev/null @@ -1,255 +0,0 @@ - 'App\Http\Controllers', - 'prefix' => 'api/public/v1', - 'before' => [], - 'after' => [], - 'middleware' => [ - 'ssl', - 'rate.limit:10000,1', // 10000 request per minute - 'etags' - ] -], function () { - - Route::group(['prefix' => 'sponsored-projects'], function(){ - Route::get('', 'OAuth2SponsoredProjectApiController@getAll'); - Route::group(['prefix'=>'{id}'], function(){ - Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@get']); - Route::group(['prefix'=>'sponsorship-types'], function(){ - Route::get('', 'OAuth2SponsoredProjectApiController@getAllSponsorshipTypes'); - Route::group(['prefix'=>'{sponsorship_type_id}'], function(){ - Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@getSponsorshipType']); - Route::group(['prefix'=>'supporting-companies'], function(){ - Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@getSupportingCompanies']); - }); - }); - }); - }); - }); - - // files - Route::group(['prefix' => 'files'], function () { - Route::post('upload','OAuth2ChunkedFilesApiController@uploadFile' ); - }); - - // members - Route::group(['prefix' => 'members'], function () { - Route::get('', 'OAuth2MembersApiController@getAll'); - }); - - // members - Route::group(['prefix' => 'legal-documents'], function () { - Route::get('{id}', 'OAuth2LegalDocumentsApiController@getById'); - }); - - // speakers - Route::group(['prefix' => 'speakers'], function () { - Route::group(['prefix' => '{speaker_id}'], function () { - Route::group(['prefix' => 'edit-permission'], function () { - Route::group(['prefix' => '{token}'], function () { - Route::get('approve', 'OAuth2SummitSpeakersApiController@approveSpeakerEditPermission'); - Route::get('decline', 'OAuth2SummitSpeakersApiController@declineSpeakerEditPermission'); - }); - }); - }); - }); - - // summits - Route::group(['prefix' => 'summits'], function () { - Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_summit_response_lifetime', 600), 'uses' => 'OAuth2SummitApiController@getSummits']); - - Route::group(['prefix' => 'all'], function () { - - Route::get('', 'OAuth2SummitApiController@getAllSummits'); - Route::get('current', 'OAuth2SummitApiController@getAllCurrentSummit'); - Route::get('{id}', 'OAuth2SummitApiController@getAllSummitByIdOrSlug'); - - Route::group(['prefix' => 'payments'], function () { - Route::group(['prefix' => '{application_name}'], function () { - Route::post('confirm', 'PaymentGatewayWebHookController@genericConfirm'); - }); - }); - - Route::group(['prefix' => 'orders'], function () { - Route::group(['prefix' => '{order_hash}'], function () { - Route::group(['prefix' => 'tickets'], function () { - Route::put('', "OAuth2SummitOrdersApiController@updateTicketsByOrderHash"); - }); - }); - - Route::group(['prefix' => 'all'], function () { - Route::group(['prefix' => 'tickets'], function () { - Route::group(['prefix' => '{hash}'], function () { - Route::get('', "OAuth2SummitOrdersApiController@getTicketByHash"); - Route::put('', "OAuth2SummitOrdersApiController@updateTicketByHash"); - Route::put('regenerate', "OAuth2SummitOrdersApiController@regenerateTicketHash"); - Route::get('pdf', "OAuth2SummitOrdersApiController@getTicketPDFByHash"); - }); - }); - }); - }); - }); - - Route::group(['prefix' => '{id}'], function () { - - Route::group(['prefix' => 'payments'], function () { - Route::group(['prefix' => '{application_name}'], function () { - Route::post('confirm', 'PaymentGatewayWebHookController@confirm'); - }); - }); - - Route::group(['prefix' => 'selection-plans'], function () { - Route::get('current/{status}', 'OAuth2SummitSelectionPlansApiController@getCurrentSelectionPlanByStatus')->where('status', 'submission|selection|voting'); - }); - - - Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_summit_response_lifetime', 1200), 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); - // members - Route::group(['prefix' => 'members'], function () { - Route::group(['prefix' => 'all'], function () { - Route::group(['prefix' => 'schedule'], function () { - Route::group(['prefix' => 'ics'], function () { - Route::get('{cid}', 'OAuth2SummitMembersApiController@getCalendarFeedICS'); - }); - }); - }); - }); - // events - Route::group(['prefix' => 'events'], function () { - Route::group(['prefix' => 'published'], function () { - Route::get('', [ 'middleware' => 'cache:1200', 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvents']); - }); - - Route::group(array('prefix' => '{event_id}'), function () { - Route::group(['prefix' => 'published'], function () { - Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_published_event_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvent']); - }); - }); - - Route::group(['prefix' => 'all'], function () { - Route::group(['prefix' => 'published'], function () { - Route::get('tags', 'OAuth2SummitEventsApiController@getScheduledEventsTags'); - }); - }); - }); - - // locations - Route::group(['prefix' => 'locations'], function () { - Route::group(['prefix' => '{location_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getLocation'); - Route::get('/events/published', 'OAuth2SummitLocationsApiController@getLocationPublishedEvents'); - Route::group(['prefix' => 'banners'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getLocationBanners'); - }); - }); - }); - - // notifications - Route::group(['prefix' => 'notifications'], function () { - Route::get('sent', 'OAuth2SummitNotificationsApiController@getAllApprovedByUser'); - }); - - // speakers - Route::group(['prefix' => 'speakers'], function () { - Route::get('', 'OAuth2SummitSpeakersApiController@getSpeakers'); - Route::group(['prefix' => '{speaker_id}'], function () { - Route::get('', 'OAuth2SummitSpeakersApiController@getSummitSpeaker')->where('speaker_id', '[0-9]+'); - }); - }); - - // orders - Route::group(['prefix' => 'orders'], function () { - Route::post('reserve', 'OAuth2SummitOrdersApiController@reserve'); - Route::group(['prefix' => '{hash}'], function () { - Route::put('checkout', 'OAuth2SummitOrdersApiController@checkout'); - Route::group(['prefix' => 'tickets'], function () { - Route::get('mine', 'OAuth2SummitOrdersApiController@getMyTicketByOrderHash'); - }); - Route::delete('', 'OAuth2SummitOrdersApiController@cancel'); - }); - }); - - // registration invitations - Route::group(['prefix' => 'registration-invitations'], function () { - Route::group(['prefix' => '{email}'], function () { - Route::get('', 'OAuth2SummitOrdersApiController@getByEmail'); - }); - }); - }); - }); - - // marketplace - Route::group(array('prefix' => 'marketplace'), function () { - - Route::group(array('prefix' => 'appliances'), function () { - Route::get('', 'AppliancesApiController@getAll'); - }); - - Route::group(array('prefix' => 'distros'), function () { - Route::get('', 'DistributionsApiController@getAll'); - }); - - Route::group(array('prefix' => 'consultants'), function () { - Route::get('', 'ConsultantsApiController@getAll'); - }); - - Route::group(array('prefix' => 'hosted-private-clouds'), function () { - Route::get('', 'PrivateCloudsApiController@getAll'); - }); - - Route::group(array('prefix' => 'remotely-managed-private-clouds'), function () { - Route::get('', 'RemoteCloudsApiController@getAll'); - }); - - Route::group(array('prefix' => 'public-clouds'), function () { - Route::get('', 'PublicCloudsApiController@getAll'); - }); - }); - - // countries - Route::group(array('prefix' => 'countries'), function () { - Route::get('', 'CountriesApiController@getAll'); - }); - - // languages - Route::group(array('prefix' => 'languages'), function () { - Route::get('', 'LanguagesApiController@getAll'); - }); - - - // timezones - Route::group(array('prefix' => 'timezones'), function () { - Route::get('', 'TimezonesApiController@getAll'); - }); - -}); - -Route::group([ - 'namespace' => 'App\Http\Controllers', - 'prefix' => '.well-known', - 'before' => [], - 'after' => [], - 'middleware' => [ - 'ssl', - 'rate.limit:1000,1', // 1000 request per minute - ] -], function(){ - Route::get('endpoints', 'ConfigurationsController@getEndpointsDefinitions'); -}); \ No newline at end of file diff --git a/app/Http/Utils/Filters/Filter.php b/app/Http/Utils/Filters/Filter.php index 6b0a924a..a4bfd9cb 100644 --- a/app/Http/Utils/Filters/Filter.php +++ b/app/Http/Utils/Filters/Filter.php @@ -70,7 +70,9 @@ final class Filter $or_res[] = $e; } } - if (count($or_res)) $res[] = $or_res; + foreach ($or_res as $e){ + $res[] = $e; + } } } return $res; @@ -569,4 +571,26 @@ final class Filter } return $list; } + + public function __toString():string + { + $res = ""; + foreach ($this->filters as $filter) { + + if ($filter instanceof FilterElement) { + $res .= '('.$filter.')'; + } + else if (is_array($filter)) { + // OR + $or_res = []; + foreach ($filter as $e) { + if ($e instanceof FilterElement) { + $or_res[] = '('.$e.')'; + } + } + if (count($or_res)) $res = '('.implode("|",$or_res).')'; + } + } + return $res; + } } \ No newline at end of file diff --git a/app/Http/Utils/Filters/FilterElement.php b/app/Http/Utils/Filters/FilterElement.php index 98631039..76aa17b7 100644 --- a/app/Http/Utils/Filters/FilterElement.php +++ b/app/Http/Utils/Filters/FilterElement.php @@ -124,4 +124,9 @@ class FilterElement extends AbstractFilterElement { return new self($field, $value, 'like', $same_field_op); } + + public function __toString():string + { + return sprintf("%s%s%s", $this->field, $this->operator, is_array($this->value)? json_encode($this->value):$this->value); + } } \ No newline at end of file diff --git a/app/Http/Utils/Filters/FilterParser.php b/app/Http/Utils/Filters/FilterParser.php index 866cc093..6cedecc7 100644 --- a/app/Http/Utils/Filters/FilterParser.php +++ b/app/Http/Utils/Filters/FilterParser.php @@ -1,5 +1,4 @@ cacheService = $cacheService; $this->from = $from; $this->to = is_array($to) ? $to : array($to); - $this->subject = $subject; + $this->subject = empty($subject) ? 'API ERROR' : $subject; $this->addHeader(sprintf('From: %s', $from)); $this->maxColumnWidth = $maxColumnWidth; } @@ -132,7 +133,7 @@ final class LaravelMailerHandler extends MailHandler /** * {@inheritdoc} */ - protected function send($content, array $records) + protected function send($content, array $records):void { $content = wordwrap($content, $this->maxColumnWidth); @@ -210,4 +211,14 @@ final class LaravelMailerHandler extends MailHandler return $this; } + + /** + * Gets the default formatter. + * + * @return FormatterInterface + */ + protected function getDefaultFormatter(): FormatterInterface + { + return new LineFormatter(); + } } diff --git a/app/Http/routes.php b/app/Http/routes.php deleted file mode 100644 index 48669ec0..00000000 --- a/app/Http/routes.php +++ /dev/null @@ -1,1602 +0,0 @@ - 'App\Http\Controllers', - 'prefix' => 'api/v1', - 'before' => [], - 'after' => [], - 'middleware' => ['ssl', 'oauth2.protected', 'rate.limit','etags'] -], function () { - - // members - Route::group(['prefix'=>'members'], function(){ - Route::get('', 'OAuth2MembersApiController@getAll'); - - Route::group(['prefix'=>'me'], function(){ - // get my member info - Route::get('', 'OAuth2MembersApiController@getMyMember'); - - // my affiliations - Route::group(['prefix' => 'affiliations'], function(){ - Route::get('', [ 'uses' => 'OAuth2MembersApiController@getMyMemberAffiliations']); - Route::post('', [ 'uses' => 'OAuth2MembersApiController@addMyAffiliation']); - Route::group(['prefix' => '{affiliation_id}'], function(){ - Route::put('', ['uses' => 'OAuth2MembersApiController@updateMyAffiliation']); - Route::delete('', [ 'uses' => 'OAuth2MembersApiController@deleteMyAffiliation']); - }); - }); - - Route::group(['prefix' => 'membership'], function(){ - Route::put('foundation', ['uses' => 'OAuth2MembersApiController@signFoundationMembership']); - Route::put('community', ['uses' => 'OAuth2MembersApiController@signCommunityMembership']); - Route::delete('resign', ['uses' => 'OAuth2MembersApiController@resignMembership']); - }); - }); - - Route::group(['prefix'=>'{member_id}'], function(){ - - Route::group(['prefix' => 'affiliations'], function(){ - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@getMemberAffiliations']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@addAffiliation']); - Route::group(['prefix' => '{affiliation_id}'], function(){ - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@updateAffiliation']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@deleteAffiliation']); - }); - }); - - Route::group(array('prefix' => 'rsvp'), function () { - Route::group(['prefix' => '{rsvp_id}'], function () { - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@deleteRSVP']); - }); - }); - }); - }); - - // tags - Route::group(['prefix'=>'tags'], function(){ - Route::get('', 'OAuth2TagsApiController@getAll'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2TagsApiController@addTag']); - }); - - // companies - - Route::group(['prefix'=>'companies'], function(){ - Route::get('', 'OAuth2CompaniesApiController@getAllCompanies'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@add']); - Route::group(['prefix'=>'{id}'], function(){ - Route::get('', [ 'uses' => 'OAuth2CompaniesApiController@get']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@update']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@delete']); - Route::group(['prefix'=>'logo'], function(){ - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@addCompanyLogo']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@deleteCompanyLogo']); - Route::group(['prefix'=>'big'], function(){ - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@addCompanyBigLogo']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@deleteCompanyBigLogo']); - }); - }); - }); - }); - - // sponsored projects - - Route::group(['prefix'=>'sponsored-projects'], function(){ - Route::get('', 'OAuth2SponsoredProjectApiController@getAll'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@add']); - - Route::group(['prefix'=>'{id}'], function(){ - - Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@get']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@update']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@delete']); - - Route::group(['prefix'=>'sponsorship-types'], function(){ - Route::get('', 'OAuth2SponsoredProjectApiController@getAllSponsorshipTypes'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@addSponsorshipType']); - Route::group(['prefix'=>'{sponsorship_type_id}'], function(){ - - Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@getSponsorshipType']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@updateSponsorshipType']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@deleteSponsorshipType']); - - Route::group(['prefix'=>'supporting-companies'], function(){ - Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@getSupportingCompanies']); - Route::post('', [ 'uses' => 'OAuth2SponsoredProjectApiController@addSupportingCompanies']); - Route::group(['prefix'=>'{company_id}'], function(){ - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@getSupportingCompany']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@updateSupportingCompanies']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@deleteSupportingCompanies']); - }); - }); - }); - }); - }); - }); - - // organizations - Route::group(['prefix'=>'organizations'], function(){ - Route::get('', 'OAuth2OrganizationsApiController@getAll'); - Route::post('', 'OAuth2OrganizationsApiController@addOrganization'); - }); - - // groups - Route::group(['prefix'=>'groups'], function(){ - Route::get('', 'OAuth2GroupsApiController@getAll'); - }); - - // summit-media-file-types - Route::group(['prefix'=>'summit-media-file-types'], function(){ - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@getAll']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@add']); - Route::group(['prefix'=>'{id}'], function(){ - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@get']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@update']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@delete']); - }); - }); - - // summits - Route::group(array('prefix' => 'summits'), function () { - - Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_summits_response_lifetime', 600), 'uses' => 'OAuth2SummitApiController@getSummits']); - - Route::group(['prefix' => 'all'], function () { - - Route::get('', 'OAuth2SummitApiController@getAllSummits'); - Route::get('{id}', 'OAuth2SummitApiController@getAllSummitByIdOrSlug'); - - Route::group(['prefix' => 'locations'], function () { - // GET /api/v1/summits/all/locations/bookable-rooms/all/reservations/{id} - Route::get('bookable-rooms/all/reservations/{id}', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getReservationById']); - }); - - Route::group(['prefix' => 'registration-invitations'], function () { - Route::group(['prefix' => '{token}'], function () { - Route::get('', ['uses' => 'OAuth2SummitRegistrationInvitationApiController@getInvitationByToken']); - }); - }); - - Route::group(['prefix' => 'orders'], function () { - Route::get('me', 'OAuth2SummitOrdersApiController@getAllMyOrders'); - - Route::group(['prefix' => 'all'], function () { - Route::group(['prefix' => 'tickets'], function () { - Route::group(['prefix' => '{ticket_id}'], function () { - Route::put('', 'OAuth2SummitOrdersApiController@updateTicketById'); - Route::get('pdf', 'OAuth2SummitOrdersApiController@getTicketPDFById'); - }); - - Route::group(['prefix' => 'me'], function () { - Route::get('', 'OAuth2SummitTicketApiController@getAllMyTickets'); - }); - }); - }); - - Route::group(['prefix' => '{order_id}'], function () { - Route::group(['prefix' => 'refund'], function () { - Route::delete('', 'OAuth2SummitOrdersApiController@requestRefundMyOrder'); - Route::delete('cancel', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@cancelRefundRequestOrder']); - }); - - Route::put('resend', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@reSendOrderEmail']); - Route::put('', 'OAuth2SummitOrdersApiController@updateMyOrder'); - Route::group(['prefix' => 'tickets'], function () { - Route::group(['prefix' => '{ticket_id}'], function () { - Route::get('pdf', 'OAuth2SummitOrdersApiController@getTicketPDFByOrderId'); - Route::group(['prefix' => 'refund'], function () { - Route::delete('', 'OAuth2SummitOrdersApiController@requestRefundMyTicket'); - Route::delete('cancel', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@cancelRefundRequestTicket']); - }); - - Route::group(['prefix' => 'attendee'], function () { - Route::put('', 'OAuth2SummitOrdersApiController@assignAttendee'); - Route::put('reinvite', 'OAuth2SummitOrdersApiController@reInviteAttendee'); - Route::delete('', 'OAuth2SummitOrdersApiController@removeAttendee'); - }); - }); - }); - }); - - }); - }); - - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@addSummit']); - - Route::group(['prefix' => '{id}'], function () { - - Route::group(['prefix' => 'metrics'], function () { - Route::put('enter', 'OAuth2SummitMetricsApiController@enter'); - Route::post('leave', 'OAuth2SummitMetricsApiController@leave'); - }); - - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@updateSummit']); - Route::post('logo', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@addSummitLogo']); - Route::delete('logo', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@deleteSummitLogo']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@deleteSummit']); - Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_summit_response_lifetime', 1200), 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); - - // selection plans crud - Route::group(['prefix' => 'selection-plans'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addSelectionPlan']); - Route::group(['prefix' => '{selection_plan_id}'], function () { - - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@updateSelectionPlan']); - Route::get('', ['uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlan']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@deleteSelectionPlan']); - - Route::group(['prefix' => 'track-groups'], function () { - Route::put('{track_group_id}', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addTrackGroupToSelectionPlan']); - Route::delete('{track_group_id}', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@deleteTrackGroupToSelectionPlan']); - }); - - // extra questions - - Route::group(['prefix' => 'extra-questions'], function(){ - Route::get('', ['uses' => 'OAuth2SummitSelectionPlansApiController@getExtraQuestions']); - Route::get('metadata', [ 'uses' => 'OAuth2SummitSelectionPlansApiController@getExtraQuestionsMetadata']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addExtraQuestion']); - Route::group(['prefix' => '{question_id}'], function(){ - Route::get('', ['uses' => 'OAuth2SummitSelectionPlansApiController@getExtraQuestion']); - Route::put('', ['uses' => 'OAuth2SummitSelectionPlansApiController@updateExtraQuestion']); - Route::delete('', ['uses' => 'OAuth2SummitSelectionPlansApiController@deleteExtraQuestion']); - Route::group(['prefix' => 'values'], function () { - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addExtraQuestionValue']); - Route::group(['prefix' => '{value_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@updateExtraQuestionValue']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@deleteExtraQuestionValue']); - }); - }); - }); - }); - - // presentations - - Route::group(['prefix' => 'presentations'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlanPresentations']); - Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlanPresentationsCSV']); - - Route::group(['prefix' => 'all'], function () { - // category-change-requests - Route::group(['prefix' => 'category-change-requests'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getAllPresentationCategoryChangeRequest']); - }); - }); - - Route::group(['prefix' => '{presentation_id}'], function () { - - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlanPresentation']); - Route::put('view', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@markPresentationAsViewed']); - Route::group(['prefix' => 'comments'], function () { - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addCommentToPresentation']); - }); - - // category-change-requests - Route::group(['prefix' => 'category-change-requests'], function () { - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@createPresentationCategoryChangeRequest']); - Route::group(['prefix' => '{category_change_request_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@resolvePresentationCategoryChangeRequest']); - }); - }); - // presentation actions - - Route::group(['prefix' => 'actions'], function () { - Route::group(['prefix' => '{action_id}'], function () { - Route::put('complete', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionApiController@complete']); - Route::delete('incomplete', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionApiController@uncomplete']); - }); - }); - - }); - }); - }); - }); - - // RSVP templates - Route::group(['prefix' => 'rsvp-templates'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getAllBySummit']); - - Route::group(['prefix' => 'questions'], function () { - Route::get('metadata', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplateQuestionsMetadata']); - }); - - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@addRSVPTemplate']); - Route::group(['prefix' => '{template_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplate']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@updateRSVPTemplate']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@deleteRSVPTemplate']); - Route::group(['prefix' => 'questions'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@addRSVPTemplateQuestion']); - Route::group(['prefix' => '{question_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@updateRSVPTemplateQuestion']); - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplateQuestion']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@deleteRSVPTemplateQuestion']); - // multi values questions - Route::group(['prefix' => 'values'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@addRSVPTemplateQuestionValue']); - Route::group(['prefix' => '{value_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplateQuestionValue']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@updateRSVPTemplateQuestionValue']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@deleteRSVPTemplateQuestionValue']); - }); - }); - }); - }); - }); - }); - - Route::get('entity-events', 'OAuth2SummitApiController@getSummitEntityEvents'); - - // notifications - Route::group(['prefix' => 'notifications'], function () { - Route::get('sent', 'OAuth2SummitNotificationsApiController@getAllApprovedByUser'); - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@getAll']); - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@getAllCSV']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@addPushNotification']); - Route::group(['prefix' => '{notification_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@getById']); - Route::put('approve', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@approveNotification']); - Route::delete('approve', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@unApproveNotification']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@deleteNotification']); - }); - }); - - // speakers - Route::group(['prefix' => 'speakers'], function () { - - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersApiController@addSpeakerBySummit']); - Route::get('', 'OAuth2SummitSpeakersApiController@getSpeakers'); - Route::get('on-schedule', 'OAuth2SummitSpeakersApiController@getSpeakersOnSchedule'); - Route::get('me', 'OAuth2SummitSpeakersApiController@getMySummitSpeaker'); - - Route::group(['prefix' => '{speaker_id}'], function () { - Route::get('', 'OAuth2SummitSpeakersApiController@getSummitSpeaker')->where('speaker_id', '[0-9]+'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersApiController@updateSpeakerBySummit'])->where('speaker_id', 'me|[0-9]+'); - }); - }); - - // speakers assistance - Route::group(['prefix' => 'speakers-assistances'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@getBySummit']); - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@getBySummitCSV']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@addSpeakerSummitAssistance']); - Route::group(['prefix' => '{assistance_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@getSpeakerSummitAssistanceBySummit']); - Route::delete('',[ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@deleteSpeakerSummitAssistance']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@updateSpeakerSummitAssistance']); - Route::post('mail', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@sendSpeakerSummitAssistanceAnnouncementMail']); - }); - }); - - // events - Route::group(array('prefix' => 'events'), function () { - - Route::get('',[ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@getEvents']); - - - Route::group(['prefix' => 'csv'], function () { - Route::get('',[ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@getEventsCSV']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitEventsApiController@importEventData']); - }); - // bulk actions - Route::delete('/publish', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@unPublishEvents']); - Route::put('/publish', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@updateAndPublishEvents']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@updateEvents']); - - Route::group(array('prefix' => 'unpublished'), function () { - Route::get('', 'OAuth2SummitEventsApiController@getUnpublishedEvents'); - //Route::get('{event_id}', 'OAuth2SummitEventsApiController@getUnpublisedEvent'); - }); - - Route::group(array('prefix' => 'published'), function () { - Route::get('', 'OAuth2SummitEventsApiController@getScheduledEvents'); - Route::get('/empty-spots', 'OAuth2SummitEventsApiController@getScheduleEmptySpots'); - }); - - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@addEvent']); - Route::group(['prefix' => '{event_id}'], function () { - - Route::post('/clone', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@cloneEvent']); - Route::get('', 'OAuth2SummitEventsApiController@getEvent'); - - Route::group(['prefix' => 'published'], function () { - Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_published_event_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvent']); - Route::post('mail', 'OAuth2SummitEventsApiController@shareScheduledEventByEmail'); - }); - - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@updateEvent' ]); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@deleteEvent' ]); - Route::put('/publish', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@publishEvent']); - Route::delete('/publish', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@unPublishEvent']); - - Route::post('/attachment', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@addEventAttachment']); - - Route::group(['prefix' => 'feedback'], function () { - Route::get('', ['middleware' => 'cache:'.Config::get('cache_api_response.get_event_feedback_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getEventFeedback']); - }); - - Route::group(['prefix' => 'image'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@addEventImage']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@deleteEventImage']); - }); - }); - }); - - // presentations - Route::group(['prefix' => 'presentations'], function () { - // opened without role CFP - valid selection plan on CFP status - Route::post('', 'OAuth2PresentationApiController@submitPresentation'); - // import from mux - Route::post('all/import/mux', 'OAuth2PresentationApiController@importAssetsFromMUX'); - - Route::group(['prefix' => '{presentation_id}'], function () { - - // opened without role CFP - valid selection plan on CFP status - Route::put('', 'OAuth2PresentationApiController@updatePresentationSubmission'); - - Route::put('completed', 'OAuth2PresentationApiController@completePresentationSubmission'); - - Route::delete('', 'OAuth2PresentationApiController@deletePresentation'); - - // videos - Route::group(['prefix' => 'videos'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationVideos'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@addVideo' ]); - Route::group(['prefix' => '{video_id}'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationVideo'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@updateVideo' ]); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@deleteVideo' ]); - }); - }); - - // slides - Route::group(['prefix' => 'slides'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationSlides'); - Route::post('', 'OAuth2PresentationApiController@addPresentationSlide' ); - Route::group(['prefix' => '{slide_id}'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationSlide'); - Route::put('', 'OAuth2PresentationApiController@updatePresentationSlide' ); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@deletePresentationSlide' ]); - }); - }); - - // links - Route::group(['prefix' => 'links'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationLinks'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@addPresentationLink' ]); - Route::group(['prefix' => '{link_id}'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationLink'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@updatePresentationLink' ]); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@deletePresentationLink' ]); - }); - }); - - // media uploads - - Route::group(['prefix' => 'media-uploads'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationMediaUploads'); - Route::post('', 'OAuth2PresentationApiController@addPresentationMediaUpload' ); - Route::group(['prefix' => '{media_upload_id}'], function () { - Route::get('', 'OAuth2PresentationApiController@getPresentationMediaUpload'); - Route::put('','OAuth2PresentationApiController@updatePresentationMediaUpload' ); - Route::delete('', 'OAuth2PresentationApiController@deletePresentationMediaUpload' ); - }); - }); - }); - }); - - // locations - Route::group(['prefix' => 'locations'], function () { - - Route::get('', 'OAuth2SummitLocationsApiController@getLocations'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocation']); - - Route::get('metadata', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getMetadata']); - - // bookable-rooms - Route::group(['prefix' => 'bookable-rooms'], function () { - // GET /api/v1/summits/{id}/locations/bookable-rooms - Route::get('', 'OAuth2SummitLocationsApiController@getBookableVenueRooms'); - - Route::group(['prefix' => 'all'], function () { - Route::group(['prefix' => 'reservations'], function () { - // GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getAllReservationsBySummit']); - // GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/csv - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getAllReservationsBySummitCSV']); - // GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/me - Route::get('me', 'OAuth2SummitLocationsApiController@getMyBookableVenueRoomReservations'); - Route::group(['prefix' => '{reservation_id}'], function () { - // DELETE /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/{reservation_id} - Route::delete('', 'OAuth2SummitLocationsApiController@cancelMyBookableVenueRoomReservation'); - }); - }); - }); - - Route::group(['prefix' => '{room_id}'], function () { - // GET /api/v1/summits/{id}/locations/bookable-rooms/{room_id} - Route::get('', 'OAuth2SummitLocationsApiController@getBookableVenueRoom'); - // GET /api/v1/summits/{id}/locations/bookable-rooms/{room_id}/availability/{day} - Route::get('availability/{day}', 'OAuth2SummitLocationsApiController@getBookableVenueRoomAvailability'); - - Route::group(['prefix' => 'reservations'], function () { - // POST /api/v1/summits/{id}/locations/bookable-rooms/{room_id}/reservations - Route::post('', 'OAuth2SummitLocationsApiController@createBookableVenueRoomReservation'); - - Route::group(['prefix' => '{reservation_id}'], function () { - // GET /api/v1/summits/{id}/bookable-rooms/{room_id}/reservations/{reservation_id} - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getBookableVenueRoomReservation']); - // DELETE /api/v1/summits/{id}/bookable-rooms/{room_id}/reservations/{reservation_id}/refund - Route::delete('refund', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@refundBookableVenueRoomReservation']); - }); - }); - - }); - }); - - // venues - - Route::group(['prefix' => 'venues'], function () { - - Route::get('', 'OAuth2SummitLocationsApiController@getVenues'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenue']); - - Route::group(['prefix' => '{venue_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenue']); - - Route::group(['prefix' => 'rooms'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueRoom']); - Route::group(['prefix' => '{room_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getVenueRoom'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueRoom']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueRoom']); - Route::group(['prefix' => 'image'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueRoomImage']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@removeVenueRoomImage']); - }); - }); - }); - - // bookable-rooms - Route::group(['prefix' => 'bookable-rooms'], function () { - // POST /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueBookableRoom']); - Route::group(['prefix' => '{room_id}'], function () { - // GET /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id} - Route::get('', 'OAuth2SummitLocationsApiController@getBookableVenueRoomByVenue'); - // PUT /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id} - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueBookableRoom']); - // DELETE /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id} - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueBookableRoom']); - // attributes - - Route::group(['prefix' => 'attributes'], function () { - Route::group(['prefix' => '{attribute_id}'], function () { - // PUT /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id}/attributes/{attribute_id} - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueBookableRoomAttribute']); - // DELETE /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id}/attributes/{attribute_id} - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueBookableRoomAttribute']); - }); - - }); - }); - }); - - Route::group(['prefix' => 'floors'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloor']); - Route::group(['prefix' => '{floor_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getVenueFloor'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueFloor']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueFloor']); - Route::group(['prefix' => 'image'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloorImage']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@removeVenueFloorImage']); - }); - Route::group(['prefix' => 'rooms'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloorRoom']); - Route::group(['prefix' => '{room_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getVenueFloorRoom'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueFloorRoom']); - }); - }); - Route::group(['prefix' => 'bookable-rooms'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloorBookableRoom']); - Route::group(['prefix' => '{room_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getVenueFloorBookableRoom'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueFloorBookableRoom']); - }); - }); - }); - }); - }); - }); - - Route::group(['prefix' => 'airports'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getAirports'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addAirport']); - Route::group(['prefix' => '{airport_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateAirport']); - }); - }); - - Route::group(['prefix' => 'hotels'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getHotels'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addExternalLocation']); - Route::group(['prefix' => '{hotel_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateExternalLocation']); - }); - }); - - Route::group(['prefix' => 'external-locations'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getExternalLocations'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addHotel']); - Route::group(['prefix' => '{external_location_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateHotel']); - }); - }); - - Route::group(['prefix' => '{location_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getLocation'); - - // locations maps - Route::group(['prefix' => 'maps'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocationMap']); - Route::group(['prefix' => '{map_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getLocationMap'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocationMap']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocationMap']); - }); - }); - - // locations images - Route::group(['prefix' => 'images'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocationImage']); - Route::group(['prefix' => '{image_id}'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getLocationImage'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocationImage']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocationImage']); - }); - }); - - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocation']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocation']); - Route::get('/events/published','OAuth2SummitLocationsApiController@getLocationPublishedEvents')->where('location_id', 'tbd|[0-9]+'); - Route::get('/events','OAuth2SummitLocationsApiController@getLocationEvents')->where('location_id', 'tbd|[0-9]+'); - // location banners - Route::group(['prefix' => 'banners'], function () { - Route::get('', 'OAuth2SummitLocationsApiController@getLocationBanners'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocationBanner']); - Route::group(['prefix' => '{banner_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocationBanner']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocationBanner']); - }); - }); - }); - }); - - // bookable rooms attributes - Route::group(['prefix' => 'bookable-room-attribute-types'], function () { - Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getAllBookableRoomAttributeTypes'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@addBookableRoomAttributeType']); - Route::group(['prefix' => '{type_id}'], function () { - Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getBookableRoomAttributeType'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@updateBookableRoomAttributeType']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@deleteBookableRoomAttributeType']); - Route::group(['prefix' => 'values'], function () { - Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getAllBookableRoomAttributeValues'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@addBookableRoomAttributeValue']); - Route::group(['prefix' => '{value_id}'], function () { - Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getBookableRoomAttributeValue'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@updateBookableRoomAttributeValue']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@deleteBookableRoomAttributeValue']); - }); - }); - }); - }); - - // event types - Route::group(['prefix' => 'event-types'], function () { - Route::get('', 'OAuth2SummitsEventTypesApiController@getAllBySummit'); - Route::get('csv', 'OAuth2SummitsEventTypesApiController@getAllBySummitCSV'); - Route::post('seed-defaults', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@seedDefaultEventTypesBySummit']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@addEventTypeBySummit']); - Route::group(['prefix' => '{event_type_id}'], function () { - Route::get('', 'OAuth2SummitsEventTypesApiController@getEventTypeBySummit'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@updateEventTypeBySummit']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@deleteEventTypeBySummit']); - - Route::group(['prefix' => 'summit-documents'], function () { - Route::group(['prefix' => '{document_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@addSummitDocument']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@removeSummitDocument']); - }); - }); - }); - }); - - // documents - Route::group(['prefix' => 'summit-documents'], function () { - Route::get('', 'OAuth2SummitDocumentsApiController@getAllBySummit'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@add']); - Route::group(['prefix' => '{document_id}'], function () { - Route::get('', 'OAuth2SummitDocumentsApiController@get'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@update']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@delete']); - Route::group(['prefix' => 'event-types'], function () { - Route::group(['prefix' => '{event_type_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@addEventType']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@removeEventType']); - }); - }); - }); - }); - - // ticket types - Route::group(['prefix' => 'ticket-types'], function () { - Route::get('', 'OAuth2SummitsTicketTypesApiController@getAllBySummit'); - Route::get('csv', 'OAuth2SummitsTicketTypesApiController@getAllBySummitCSV'); - Route::post('seed-defaults', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@seedDefaultTicketTypesBySummit']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@addTicketTypeBySummit']); - Route::group(['prefix' => '{ticket_type_id}'], function () { - Route::get('', 'OAuth2SummitsTicketTypesApiController@getTicketTypeBySummit'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@updateTicketTypeBySummit']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@deleteTicketTypeBySummit']); - }); - }); - - // begin registration endpoints - - // tax-types - Route::group(['prefix' => 'tax-types'], function () { - Route::get('', [ 'uses' => 'OAuth2SummitTaxTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@add']); - Route::group(['prefix' => '{tax_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@delete']); - - Route::group(['prefix' => 'ticket-types'], function () { - Route::group(['prefix' => '{ticket_type_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@addTaxToTicketType']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@removeTaxFromTicketType']); - }); - }); - }); - }); - - // payment-gateway-profiles - Route::group(['prefix' => 'payment-gateway-profiles'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@getAllBySummit']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@add']); - Route::group(['prefix' => '{payment_profile_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@get']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@update']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@delete']); - }); - }); - - // refund-policies - Route::group(['prefix' => 'refund-policies'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@add']); - Route::group(['prefix' => '{policy_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@delete']); - }); - }); - - // sponsors - Route::group(['prefix' => 'sponsors'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@add']); - Route::group(['prefix' => '{sponsor_id}'], function () { - Route::group(['prefix' => 'user-info-grants'], function () { - Route::post('me', ['uses' => 'OAuth2SummitBadgeScanApiController@addGrant']); - }); - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@delete']); - Route::group(['prefix' => 'users'], function () { - Route::group(['prefix' => '{member_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@addSponsorUser']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@removeSponsorUser']); - }); - }); - }); - }); - - // order-extra-questions - Route::group(['prefix' => 'order-extra-questions'], function () { - Route::get('metadata', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@getMetadata']); - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@add']); - Route::group(['prefix' => '{question_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@delete']); - Route::group(['prefix' => 'values'], function () { - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@addQuestionValue']); - Route::group(['prefix' => '{value_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@updateQuestionValue']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@deleteQuestionValue']); - }); - }); - }); - }); - - // access-levels - Route::group(['prefix' => 'access-level-types'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@add']); - Route::group(['prefix' => '{level_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@delete']); - }); - }); - - // badge-feature-types - Route::group(['prefix' => 'badge-feature-types'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@add']); - Route::group(['prefix' => '{feature_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@delete']); - Route::group(['prefix' => 'image'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@addFeatureImage']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@deleteFeatureImage']); - }); - }); - }); - - // badge-scans - Route::group(['prefix' => 'badge-scans'], function () { - Route::get('me','OAuth2SummitBadgeScanApiController@getAllMyBadgeScans' ); - Route::get('', 'OAuth2SummitBadgeScanApiController@getAllBySummit'); - Route::get('csv','OAuth2SummitBadgeScanApiController@getAllBySummitCSV'); - Route::post('', "OAuth2SummitBadgeScanApiController@add"); - }); - - // badge-types - Route::group(['prefix' => 'badge-types'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@add']); - Route::group(['prefix' => '{badge_type_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@delete']); - Route::group(['prefix' => 'access-levels'], function () { - Route::group(['prefix' => '{access_level_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@addAccessLevelToBadgeType']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@removeAccessLevelFromBadgeType']); - }); - }); - Route::group(['prefix' => 'features'], function () { - Route::group(['prefix' => '{feature_id}'], function () { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@addFeatureToBadgeType']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@removeFeatureFromBadgeType']); - }); - }); - - }); - }); - - // orders - Route::group(['prefix' => 'orders'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@getAllBySummit']); - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@getAllBySummitCSV']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@add']); - Route::group(['prefix' => '{order_id}', 'where' => [ - 'order_id' => '[0-9]+' - ]], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@get']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@update']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@delete']); - Route::delete('refund', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@refundOrder']); - - Route::group(['prefix' => 'tickets'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@addTicket']); - Route::group(['prefix' => '{ticket_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@updateTicket']); - Route::group(['prefix' => 'activate'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@activateTicket']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@deActivateTicket']); - }); - Route::get('pdf', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitOrdersApiController@getTicketPDFBySummit']); - }); - }); - }); - Route::post('reserve', 'OAuth2SummitOrdersApiController@reserve'); - Route::group(['prefix' => '{hash}', 'where' => [ - 'hash' => '[a-zA-Z0-9]+' - ]], function () { - Route::put('checkout', 'OAuth2SummitOrdersApiController@checkout'); - Route::group(['prefix' => 'tickets'], function () { - Route::get('mine', 'OAuth2SummitOrdersApiController@getMyTicketByOrderHash'); - }); - Route::delete('', 'OAuth2SummitOrdersApiController@cancel'); - }); - }); - - // tickets - Route::group(['prefix' => 'tickets'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@getAllBySummit']); - Route::group(['prefix' => 'csv'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@getAllBySummitCSV']); - Route::get('template', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@getImportTicketDataTemplate']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@importTicketData']); - }); - - Route::post('ingest', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@ingestExternalTicketData']); - - Route::group(['prefix' => '{ticket_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@get']); - // badge endpoints - Route::group(['prefix' => 'badge'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@createAttendeeBadge']); - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@getAttendeeBadge']); - Route::group(['prefix' => 'current'], function () { - Route::delete('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@deleteAttendeeBadge']); - Route::put('print', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@printAttendeeBadge']); - Route::group(['prefix' => 'features'], function () { - Route::group(['prefix' => '{feature_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@addAttendeeBadgeFeature']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@removeAttendeeBadgeFeature']); - }); - }); - Route::group(['prefix' => 'type'], function () { - Route::group(['prefix' => '{type_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@updateAttendeeBadgeType']); - }); - }); - }); - }); - // badge endpoints - Route::delete('refund', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitTicketApiController@refundTicket']); - }); - }); - - // attendees - Route::group(array('prefix' => 'attendees'), function () { - - Route::group(['prefix' => 'all'], function (){ - Route::put('send', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@send']); - }); - - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@getAttendeesBySummit']); - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@getAttendeesBySummitCSV']); - Route::get('me', 'OAuth2SummitAttendeesApiController@getOwnAttendee'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@addAttendee']); - - Route::group(array('prefix' => '{attendee_id}'), function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@getAttendee']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@updateAttendee']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@deleteAttendee']); - // attendee schedule - Route::group(array('prefix' => 'schedule'), function () - { - Route::get('', 'OAuth2SummitAttendeesApiController@getAttendeeSchedule')->where('attendee_id', 'me'); - - Route::group(array('prefix' => '{event_id}'), function (){ - Route::post('', 'OAuth2SummitAttendeesApiController@addEventToAttendeeSchedule')->where('attendee_id', 'me|[0-9]+'); - Route::delete('', 'OAuth2SummitAttendeesApiController@removeEventFromAttendeeSchedule')->where('attendee_id', 'me|[0-9]+'); - Route::delete('/rsvp', 'OAuth2SummitAttendeesApiController@deleteEventRSVP')->where('attendee_id', 'me|[0-9]+'); - Route::put('/check-in', 'OAuth2SummitAttendeesApiController@checkingAttendeeOnEvent')->where('attendee_id', 'me|[0-9]+'); - }); - }); - - // attendee tickets - Route::group(array('prefix' => 'tickets'), function () - { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@addAttendeeTicket']); - Route::group(array('prefix' => '{ticket_id}'), function (){ - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@deleteAttendeeTicket']); - Route::group(array('prefix' => 'reassign'), function (){ - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@reassignAttendeeTicket']); - Route::put('{other_member_id}', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@reassignAttendeeTicketByMember']); - }); - }); - }); - }); - }); - - // invitations - Route::group(array('prefix' => 'registration-invitations'), function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@getAllBySummit']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@add']); - Route::group(['prefix' => 'csv'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@ingestInvitations']); - Route::get('', [ 'middleware' => 'auth.user', 'uses' =>'OAuth2SummitRegistrationInvitationApiController@getAllBySummitCSV']); - }); - - Route::group(['prefix' => 'all'], function () { - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@deleteAll']); - Route::put('send', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@send']); - }); - - Route::group(['prefix' => '{invitation_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@update'])->where('invitation_id', '[0-9]+');; - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@get'])->where('invitation_id', '[0-9]+');; - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@delete'])->where('invitation_id', '[0-9]+');; - }); - - - }); - - // badges - Route::group(['prefix' => 'badges'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgesApiController@getAllBySummit']); - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgesApiController@getAllBySummitCSV']); - }); - - // external orders @todo to deprecate - Route::group(['prefix' => 'external-orders'], function () { - Route::get('{external_order_id}', 'OAuth2SummitApiController@getExternalOrder'); - Route::post('{external_order_id}/external-attendees/{external_attendee_id}/confirm', 'OAuth2SummitApiController@confirmExternalOrderAttendee'); - }); - - // members - Route::group(array('prefix' => 'members'), function () { - Route::get("", [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMembersApiController@getAllBySummit']); - Route::get("csv", [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitMembersApiController@getAllBySummitCSV']); - Route::group(array('prefix' => '{member_id}'), function () { - - Route::get('', 'OAuth2SummitMembersApiController@getMyMember')->where('member_id', 'me'); - - - // favorites - Route::group(['prefix' => 'favorites'], function () - { - Route::get('', 'OAuth2SummitMembersApiController@getMemberFavoritesSummitEvents')->where('member_id', 'me'); - - Route::group(array('prefix' => '{event_id}'), function (){ - Route::post('', 'OAuth2SummitMembersApiController@addEventToMemberFavorites')->where('member_id', 'me'); - Route::delete('', 'OAuth2SummitMembersApiController@removeEventFromMemberFavorites')->where('member_id', 'me'); - }); - }); - - // schedule - Route::group(array('prefix' => 'schedule'), function () - { - Route::get('', 'OAuth2SummitMembersApiController@getMemberScheduleSummitEvents')->where('member_id', 'me'); - - Route::group(['prefix' => 'shareable-link'], function(){ - Route::post('', 'OAuth2SummitMembersApiController@createScheduleShareableLink')->where('member_id', 'me'); - Route::delete('', 'OAuth2SummitMembersApiController@revokeScheduleShareableLink')->where('member_id', 'me'); - }); - - Route::group(array('prefix' => '{event_id}'), function (){ - - Route::group(['prefix' => 'rsvp'], function (){ - Route::post('', 'OAuth2SummitMembersApiController@addEventRSVP')->where('member_id', 'me'); - Route::put('', 'OAuth2SummitMembersApiController@updateEventRSVP')->where('member_id', 'me'); - Route::delete('', 'OAuth2SummitMembersApiController@deleteEventRSVP')->where('member_id', 'me'); - }); - - Route::group(['prefix' => 'feedback'], function (){ - Route::get('','OAuth2SummitMembersApiController@getMyEventFeedback')->where('member_id', 'me'); - Route::post('', 'OAuth2SummitMembersApiController@addMyEventFeedback')->where('member_id', 'me'); - Route::put('', 'OAuth2SummitMembersApiController@updateMyEventFeedback')->where('member_id', 'me'); - Route::delete('', 'OAuth2SummitMembersApiController@deleteMyEventFeedback')->where('member_id', 'me'); - }); - - Route::post('', 'OAuth2SummitMembersApiController@addEventToMemberSchedule')->where('member_id', 'me'); - Route::delete('', 'OAuth2SummitMembersApiController@removeEventFromMemberSchedule')->where('member_id', 'me'); - - - Route::put('enter', 'OAuth2SummitMetricsApiController@enterToEvent')->where('member_id', 'me'); - Route::post('leave', 'OAuth2SummitMetricsApiController@leaveFromEvent')->where('member_id', 'me'); - }); - }); - }); - - }); - - // tracks - Route::group(['prefix' => 'tracks'], function () { - Route::get('', 'OAuth2SummitTracksApiController@getAllBySummit'); - Route::get('csv', 'OAuth2SummitTracksApiController@getAllBySummitCSV'); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@addTrackBySummit']); - Route::post('copy/{to_summit_id}', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@copyTracksToSummit']); - Route::group(['prefix' => '{track_id}'], function () { - Route::get('', 'OAuth2SummitTracksApiController@getTrackBySummit'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@updateTrackBySummit']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@deleteTrackBySummit']); - - Route::group(['prefix' => 'allowed-tags'], function () { - Route::get('', 'OAuth2SummitTracksApiController@getTrackAllowedTagsBySummit'); - }); - - Route::group(['prefix' => 'icon'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@addTrackIcon']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@deleteTrackIcon']); - }); - - Route::group(['prefix' => 'extra-questions'], function () { - Route::get('', 'OAuth2SummitTracksApiController@getTrackExtraQuestionsBySummit'); - Route::group(['prefix' => '{question_id}'], function () { - - Route::put('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTracksApiController@addTrackExtraQuestion'] - ); - - Route::delete('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTracksApiController@removeTrackExtraQuestion' - ]); - }); - }); - - // selection lists ( track chairs ) - - Route::group(['prefix' => 'selection-lists'], function () { - - Route::group(['prefix' => 'team'], function () { - Route::get('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@getTeamSelectionList' - ]); - - Route::post('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@createTeamSelectionList' - ]); - }); - - Route::group(['prefix' => 'individual'], function () { - Route::group(['prefix' => 'owner'], function () { - - Route::group(['prefix' => 'me'], function () { - Route::post('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@createIndividualSelectionList' - ]); - }); - - Route::group(['prefix' => '{owner_id}'], function () { - Route::get('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@getIndividualSelectionList' - ]); - }); - - }); - }); - - Route::group(['prefix' => 'individual'], function () { - - Route::group(['prefix' => 'presentation-selections'], function () { - - Route::group(['prefix' => '{collection}'], function () { - - Route::group(['prefix' => 'presentations'], function () { - - Route::group(['prefix' => '{presentation_id}'], function () { - - Route::post('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@assignPresentationToMyIndividualList' - ]); - - Route::delete('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@removePresentationFromMyIndividualList' - ]); - - }); - - }); - - }); - - }); - - }); - - Route::group(['prefix' => '{list_id}'], function () { - Route::put('reorder', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitSelectedPresentationListApiController@reorderSelectionList' - ]); - }); - }); - - }); - }); - - // track chairs - Route::group(['prefix' => 'track-chairs'], function () { - Route::get('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackChairsApiController@getAllBySummit' - ]); - - Route::get('csv', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackChairsApiController@getAllBySummitCSV' - ]); - - Route::post('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackChairsApiController@add' - ]); - - Route::group(['prefix' => '{track_chair_id}'], function () { - - Route::get('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackChairsApiController@get' - ]); - - Route::put('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackChairsApiController@update' - ]); - Route::delete('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackChairsApiController@delete' - ]); - - Route::group(['prefix' => 'categories'], function () { - Route::group(['prefix' => '{track_id}'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTrackChairsApiController@addTrack2TrackChair']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitTrackChairsApiController@removeFromTrackChair']); - }); - }); - }); - }); - - // track groups - Route::group(['prefix' => 'track-groups'], function () { - Route::get('', 'OAuth2PresentationCategoryGroupController@getAllBySummit'); - Route::get('csv', 'OAuth2PresentationCategoryGroupController@getAllBySummitCSV'); - Route::get('metadata', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@getMetadata']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@addTrackGroupBySummit']); - - Route::group(['prefix' => '{track_group_id}'], function () { - Route::get('', 'OAuth2PresentationCategoryGroupController@getTrackGroupBySummit'); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@updateTrackGroupBySummit']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@deleteTrackGroupBySummit']); - - Route::group(['prefix' => 'tracks'], function () { - - Route::group(['prefix' => '{track_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@associateTrack2TrackGroup']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@disassociateTrack2TrackGroup']); - }); - }); - Route::group(['prefix' => 'allowed-groups'], function () { - - Route::group(['prefix' => '{group_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@associateAllowedGroup2TrackGroup']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@disassociateAllowedGroup2TrackGroup']); - }); - }); - }); - }); - - // promo codes - Route::group(['prefix' => 'promo-codes'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getAllBySummit']); - Route::get('csv', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getAllBySummitCSV']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@addPromoCodeBySummit']); - Route::get('metadata', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getMetadata']); - Route::group(['prefix' => '{promo_code_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getPromoCodeBySummit']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@updatePromoCodeBySummit']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@deletePromoCodeBySummit']); - Route::post('mail', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@sendPromoCodeMail']); - Route::group(['prefix' => 'badge-features'], function () { - Route::group(['prefix' => '{badge_feature_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@addBadgeFeatureToPromoCode']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@removeBadgeFeatureFromPromoCode']); - }); - }); - - Route::group(['prefix' => 'ticket-types'], function () { - Route::group(['prefix' => '{ticket_type_id}'], function () { - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@addTicketTypeToPromoCode']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@removeTicketTypeFromPromoCode']); - }); - }); - }); - }); - - // track tag groups - Route::group(['prefix' => 'track-tag-groups'], function(){ - - Route::get('', ['uses' => 'OAuth2SummitTrackTagGroupsApiController@getTrackTagGroupsBySummit']); - - Route::post('', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@addTrackTagGroup']); - - Route::post('seed-defaults', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@seedDefaultTrackTagGroups']); - - Route::group(['prefix' => '{track_tag_group_id}'], function(){ - Route::get('', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@getTrackTagGroup']); - Route::put('', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@updateTrackTagGroup']); - Route::delete('', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@deleteTrackTagGroup']); - - Route::group(['prefix' => 'allowed-tags'], function(){ - - Route::group(['prefix' => 'all'], function(){ - Route::post('copy/tracks/{track_id}', - [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@seedTagTrackGroupOnTrack']); - }); - }); - - }); - - Route::group(['prefix' => 'all'], function(){ - Route::group(['prefix' => 'allowed-tags'], function(){ - - Route::get('', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@getAllowedTags']); - - - Route::group(['prefix' => '{tag_id}'], function(){ - Route::post('seed-on-tracks', - [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2SummitTrackTagGroupsApiController@seedTagOnAllTracks']); - }); - }); - }); - }); - - // email-flows-events - Route::group(['prefix' => 'email-flows-events'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@getAllBySummit']); - Route::group(['prefix' => '{event_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@delete']); - }); - }); - - // media-upload-types - - Route::group(['prefix' => 'media-upload-types'], function(){ - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@getAllBySummit']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@add']); - Route::group(['prefix' => '{media_upload_type_id}'], function () { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@delete']); - Route::group(['prefix' => 'presentation-types'] , function(){ - Route::group(['prefix' => '{event_type_id}'] , function(){ - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@addToPresentationType']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@deleteFromPresentationType']); - }); - }); - }); - - Route::group(['prefix' => 'all'], function () { - Route::post('clone/{to_summit_id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@cloneMediaUploadTypes']); - }); - }); - - // featured speakers - - Route::group(['prefix' => 'featured-speakers'], function(){ - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@getAllFeatureSpeaker']); - Route::group(['prefix' => '{speaker_id}'], function() { - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@addFeatureSpeaker']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@removeFeatureSpeaker']); - }); - }); - - // presentation action types - - Route::group(['prefix' => 'presentation-action-types'], function(){ - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@getAllBySummit']); - Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@getAllBySummitCSV']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@add']); - Route::group(['prefix' => '{action_id}'], function() { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@delete']); - }); - }); - }); - }); - - // sponsorship-types - Route::group(['prefix' => 'sponsorship-types'], function () { - Route::get('', ['uses' => 'OAuth2SponsorshipTypeApiController@getAll']); - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsorshipTypeApiController@add']); - Route::group(['prefix' => '{id}'], function () { - Route::get('', ['uses' => 'OAuth2SponsorshipTypeApiController@get']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsorshipTypeApiController@update']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsorshipTypeApiController@delete']); - }); - }); - - // speakers - Route::group(['prefix' => 'speakers'], function () { - - Route::get('', 'OAuth2SummitSpeakersApiController@getAll'); - Route::post('', 'OAuth2SummitSpeakersApiController@addSpeaker'); - Route::put('merge/{speaker_from_id}/{speaker_to_id}', 'OAuth2SummitSpeakersApiController@merge'); - - Route::group(['prefix' => 'active-involvements'], function(){ - Route::get('', 'OAuth2SpeakerActiveInvolvementApiController@getAll'); - }); - - Route::group(['prefix' => 'organizational-roles'], function(){ - Route::get('', 'OAuth2SpeakerOrganizationalRoleApiController@getAll'); - }); - - Route::group(['prefix' => 'me'], function(){ - Route::get('', 'OAuth2SummitSpeakersApiController@getMySpeaker'); - Route::post('', 'OAuth2SummitSpeakersApiController@createMySpeaker'); - Route::put('', 'OAuth2SummitSpeakersApiController@updateMySpeaker'); - Route::post('/photo', 'OAuth2SummitSpeakersApiController@addMySpeakerPhoto'); - - Route::group(['prefix' => 'presentations'], function(){ - - Route::group(['prefix' => '{presentation_id}'], function(){ - - Route::group(['prefix' => 'speakers'], function(){ - Route::put('{speaker_id}', 'OAuth2SummitSpeakersApiController@addSpeakerToMyPresentation'); - Route::delete('{speaker_id}', 'OAuth2SummitSpeakersApiController@removeSpeakerFromMyPresentation'); - }); - Route::group(['prefix' => 'moderators'], function(){ - Route::put('{speaker_id}', 'OAuth2SummitSpeakersApiController@addModeratorToMyPresentation'); - Route::delete('{speaker_id}', 'OAuth2SummitSpeakersApiController@removeModeratorFromMyPresentation'); - }); - }); - Route::group(['prefix' => '{role}'], function(){ - Route::group(['prefix' => 'selection-plans'], function(){ - Route::group(['prefix' => '{selection_plan_id}'], function(){ - Route::get("", "OAuth2SummitSpeakersApiController@getMySpeakerPresentationsByRoleAndBySelectionPlan") - ->where('role', 'creator|speaker|moderator'); - }); - }); - - Route::group(['prefix' => 'summits'], function(){ - Route::group(['prefix' => '{summit_id}'], function(){ - Route::get("", "OAuth2SummitSpeakersApiController@getMySpeakerPresentationsByRoleAndBySummit") - ->where('role', 'creator|speaker|moderator'); - }); - }); - }); - }); - }); - - Route::group(['prefix' => '{speaker_id}'], function () { - Route::put('/edit-permission', 'OAuth2SummitSpeakersApiController@requestSpeakerEditPermission')->where('speaker_id', '[0-9]+'); - Route::get('/edit-permission', 'OAuth2SummitSpeakersApiController@getSpeakerEditPermission')->where('speaker_id', '[0-9]+'); - Route::put('','OAuth2SummitSpeakersApiController@updateSpeaker')->where('speaker_id', 'me|[0-9]+'); - Route::delete('',[ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersApiController@deleteSpeaker'])->where('speaker_id', 'me|[0-9]+'); - Route::get('', 'OAuth2SummitSpeakersApiController@getSpeaker'); - // speaker photos - Route::group(['prefix' => 'photo'], function () { - Route::post('', [ 'uses' => 'OAuth2SummitSpeakersApiController@addSpeakerPhoto']); - Route::delete('', ['uses' => 'OAuth2SummitSpeakersApiController@deleteSpeakerPhoto']); - }); - - Route::group(['prefix' => 'big-photo'], function () { - Route::post('', [ 'uses' => 'OAuth2SummitSpeakersApiController@addSpeakerBigPhoto']); - Route::delete('', [ 'uses' => 'OAuth2SummitSpeakersApiController@deleteSpeakerBigPhoto']); - }); - - }); - }); - - // track question templates - Route::group(['prefix' => 'track-question-templates'], function () { - - Route::get('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplates']); - Route::get('metadata', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplateMetadata' - ]); - - Route::post('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2TrackQuestionsTemplateApiController@addTrackQuestionTemplate']); - - Route::group(['prefix' => '{track_question_template_id}'], function () { - - Route::get('', [ 'middleware' => 'auth.user', - 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplate']); - - Route::put('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2TrackQuestionsTemplateApiController@updateTrackQuestionTemplate']); - - Route::delete('', [ - 'middleware' => 'auth.user', - 'uses' => 'OAuth2TrackQuestionsTemplateApiController@deleteTrackQuestionTemplate']); - - // multi values questions - Route::group(['prefix' => 'values'], function () { - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@addTrackQuestionTemplateValue']); - Route::group(['prefix' => '{track_question_template_value_id}'], function () { - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplateValue']); - Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@updateTrackQuestionTemplateValue']); - Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@deleteTrackQuestionTemplateValue']); - }); - }); - }); - }); - - // summit-administrator-groups - Route::group(['prefix'=>'summit-administrator-groups'], function(){ - Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@getAll']); - Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@add']); - Route::group(['prefix'=>'{group_id}'], function() { - Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@get']); - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@delete']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@update']); - - Route::group(['prefix'=>'members'], function() { - Route::group(['prefix'=>'{member_id}'], function() { - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@addMember']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@removeMember']); - }); - }); - - Route::group(['prefix'=>'summits'], function() { - Route::group(['prefix'=>'{summit_id}'], function() { - Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@addSummit']); - Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@removeSummit']); - }); - }); - }); - }); - -}); - -//OAuth2 Protected API V2 -Route::group([ - 'namespace' => 'App\Http\Controllers', - 'prefix' => 'api/v2', - 'before' => [], - 'after' => [], - 'middleware' => ['ssl', 'oauth2.protected', 'rate.limit','etags'] -], function () { - - // summits - Route::group(['prefix' => 'summits'], function () { - - Route::group(['prefix' => '{id}'], function () { - - Route::get('', ['uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); - // events - Route::group(['prefix' => 'events'], function () { - - Route::group(['prefix' => '{event_id}'], function () { - Route::group(['prefix' => 'feedback'], function () { - Route::post('', 'OAuth2SummitEventsApiController@addMyEventFeedbackReturnId'); - Route::put('', 'OAuth2SummitEventsApiController@updateMyEventFeedbackReturnId'); - }); - }); - }); - }); - }); -}); \ No newline at end of file diff --git a/app/Jobs/ProcessEventDataImport.php b/app/Jobs/ProcessEventDataImport.php index a5f19d09..8bc85a8d 100644 --- a/app/Jobs/ProcessEventDataImport.php +++ b/app/Jobs/ProcessEventDataImport.php @@ -29,9 +29,10 @@ class ProcessEventDataImport implements ShouldQueue public $tries = 2; - public $timeout = PHP_INT_MAX; + // no timeout + public $timeout = 0; - /** + /* * @var int */ private $summit_id; diff --git a/app/Jobs/ProcessTicketDataImport.php b/app/Jobs/ProcessTicketDataImport.php index 37ba58f4..7ae4193a 100644 --- a/app/Jobs/ProcessTicketDataImport.php +++ b/app/Jobs/ProcessTicketDataImport.php @@ -32,7 +32,8 @@ class ProcessTicketDataImport implements ShouldQueue public $tries = 2; - public $timeout = PHP_INT_MAX; + // no timeout + public $timeout = 0; /** * @var int diff --git a/app/Jobs/SynchAllPresentationActions.php b/app/Jobs/SynchAllPresentationActions.php index a82dca2e..e3cc35a0 100644 --- a/app/Jobs/SynchAllPresentationActions.php +++ b/app/Jobs/SynchAllPresentationActions.php @@ -28,7 +28,8 @@ class SynchAllPresentationActions implements ShouldQueue { public $tries = 2; - public $timeout = PHP_INT_MAX; + // no timeout + public $timeout = 0; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; diff --git a/app/Jobs/SynchPresentationActions.php b/app/Jobs/SynchPresentationActions.php index 6f0b77c6..e0258723 100644 --- a/app/Jobs/SynchPresentationActions.php +++ b/app/Jobs/SynchPresentationActions.php @@ -30,7 +30,8 @@ class SynchPresentationActions implements ShouldQueue { public $tries = 2; - public $timeout = PHP_INT_MAX; + // no timeout + public $timeout = 0; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; diff --git a/app/ModelSerializers/Summit/Presentation/PresentationSerializer.php b/app/ModelSerializers/Summit/Presentation/PresentationSerializer.php index 4545db09..cabbcc35 100644 --- a/app/ModelSerializers/Summit/Presentation/PresentationSerializer.php +++ b/app/ModelSerializers/Summit/Presentation/PresentationSerializer.php @@ -31,7 +31,6 @@ class PresentationSerializer extends SummitEventSerializer 'ProgressNice' => 'progress:json_string', 'Slug' => 'slug:json_string', 'SelectionStatus' => 'selection_status:string', - 'WillAllSpeakersAttend' => 'will_all_speakers_attend:json_boolean', 'DisclaimerAcceptedDate' => 'disclaimer_accepted_date:datetime_epoch', 'DisclaimerAccepted' => 'disclaimer_accepted:json_boolean', ]; @@ -49,7 +48,7 @@ class PresentationSerializer extends SummitEventSerializer 'progress', 'selection_status', 'disclaimer_accepted_date', - 'disclaimer_accepted' + 'disclaimer_accepted', ]; protected static $allowed_relations = [ diff --git a/app/Models/Foundation/Main/Member.php b/app/Models/Foundation/Main/Member.php index 809ec3dc..71707e1c 100644 --- a/app/Models/Foundation/Main/Member.php +++ b/app/Models/Foundation/Main/Member.php @@ -1472,6 +1472,7 @@ SQL; */ public function setFirstName(string $first_name): void { + Log::debug(sprintf("Member::setFirstName %s (%s)", $first_name, $this->id)); $this->first_name = $first_name; } @@ -1488,6 +1489,7 @@ SQL; */ public function setLastName(string $last_name): void { + Log::debug(sprintf("Member::setLastName %s (%s)", $last_name, $this->id)); $this->last_name = $last_name; } diff --git a/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMaterial.php b/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMaterial.php index 1fc49569..8b36cdf4 100644 --- a/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMaterial.php +++ b/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMaterial.php @@ -198,7 +198,7 @@ abstract class PresentationMaterial extends SilverstripeBaseModel implements IOr * @ORM\PostPersist */ public function inserted($args){ - Event::fire(new PresentationMaterialCreated($this)); + Event::dispatch(new PresentationMaterialCreated($this)); } public function clearPresentation(){ diff --git a/app/Models/Foundation/Summit/Events/SummitEvent.php b/app/Models/Foundation/Summit/Events/SummitEvent.php index dc474f8a..d2790b24 100644 --- a/app/Models/Foundation/Summit/Events/SummitEvent.php +++ b/app/Models/Foundation/Summit/Events/SummitEvent.php @@ -802,7 +802,7 @@ class SummitEvent extends SilverstripeBaseModel { if (is_null($this->summit)) return; if ($this->summit->isDeleting()) return; - Event::fire(new SummitEventDeleted(null, $this->pre_remove_events)); + Event::dispatch(new SummitEventDeleted(null, $this->pre_remove_events)); $this->pre_remove_events = null; } @@ -819,7 +819,7 @@ class SummitEvent extends SilverstripeBaseModel */ public function updated($args) { - Event::fire(new SummitEventUpdated($this, $this->pre_update_args)); + Event::dispatch(new SummitEventUpdated($this, $this->pre_update_args)); $this->pre_update_args = null; } @@ -830,7 +830,7 @@ class SummitEvent extends SilverstripeBaseModel */ public function inserted($args) { - Event::fire(new SummitEventCreated($this, $args)); + Event::dispatch(new SummitEventCreated($this, $args)); } /** diff --git a/app/Models/Foundation/Summit/Locations/SummitRoomReservation.php b/app/Models/Foundation/Summit/Locations/SummitRoomReservation.php index ae141932..96feee22 100644 --- a/app/Models/Foundation/Summit/Locations/SummitRoomReservation.php +++ b/app/Models/Foundation/Summit/Locations/SummitRoomReservation.php @@ -133,7 +133,7 @@ class SummitRoomReservation extends SilverstripeBaseModel public function refund(int $amount){ $this->status = self::RefundedStatus; $this->refunded_amount = $amount; - Event::fire(new BookableRoomReservationRefundAccepted($this->getId())); + Event::dispatch(new BookableRoomReservationRefundAccepted($this->getId())); } /** @@ -332,17 +332,17 @@ class SummitRoomReservation extends SilverstripeBaseModel $this->status = self::PaidStatus; $now = new \DateTime('now', new \DateTimeZone('UTC')); $this->approved_payment_date = $now; - Event::fire(new PaymentBookableRoomReservationConfirmed($this->getId())); + Event::dispatch(new PaymentBookableRoomReservationConfirmed($this->getId())); } public function cancel():void{ $this->status = self::Canceled; - Event::fire(new BookableRoomReservationCanceled($this->id)); + Event::dispatch(new BookableRoomReservationCanceled($this->id)); } public function requestRefund():void{ $this->status = self::RequestedRefundStatus; - Event::fire(new RequestedBookableRoomReservationRefund($this->getId())); + Event::dispatch(new RequestedBookableRoomReservationRefund($this->getId())); } /** diff --git a/app/Models/Foundation/Summit/Registration/Attendees/SummitAttendeeTicket.php b/app/Models/Foundation/Summit/Registration/Attendees/SummitAttendeeTicket.php index 39fd0d39..8c11baf1 100644 --- a/app/Models/Foundation/Summit/Registration/Attendees/SummitAttendeeTicket.php +++ b/app/Models/Foundation/Summit/Registration/Attendees/SummitAttendeeTicket.php @@ -661,7 +661,7 @@ class SummitAttendeeTicket extends SilverstripeBaseModel $promo_codes_to_return[$this->getPromoCode()->getCode()] +=1; } - Event::fire(new SummitAttendeeTicketRefundAccepted($this->getId(), $tickets_to_return, $promo_codes_to_return)); + Event::dispatch(new SummitAttendeeTicketRefundAccepted($this->getId(), $tickets_to_return, $promo_codes_to_return)); } /** @@ -757,7 +757,7 @@ class SummitAttendeeTicket extends SilverstripeBaseModel $this->status = IOrderConstants::RefundRequestedStatus; if (!$refund_entire_order) - Event::fire(new RequestedSummitAttendeeTicketRefund($this->getId(), $days_before_event_starts)); + Event::dispatch(new RequestedSummitAttendeeTicketRefund($this->getId(), $days_before_event_starts)); } /** diff --git a/app/Models/Foundation/Summit/Registration/SummitOrder.php b/app/Models/Foundation/Summit/Registration/SummitOrder.php index d977b278..f976c408 100644 --- a/app/Models/Foundation/Summit/Registration/SummitOrder.php +++ b/app/Models/Foundation/Summit/Registration/SummitOrder.php @@ -314,7 +314,7 @@ class SummitOrder extends SilverstripeBaseModel implements IQREntity $ticket->setPaid(); } - Event::fire(new PaymentSummitRegistrationOrderConfirmed($this->getId())); + Event::dispatch(new PaymentSummitRegistrationOrderConfirmed($this->getId())); } /** @@ -345,7 +345,7 @@ class SummitOrder extends SilverstripeBaseModel implements IQREntity $ticket->setCancelled(); } - Event::fire(new SummitOrderCanceled($this->id, $sendMail, $tickets_to_return, $promo_codes_to_return)); + Event::dispatch(new SummitOrderCanceled($this->id, $sendMail, $tickets_to_return, $promo_codes_to_return)); } /** @@ -412,7 +412,7 @@ class SummitOrder extends SilverstripeBaseModel implements IQREntity $ticket->setRefundRequests(); } - Event::fire(new RequestedSummitOrderRefund($this->getId(), $days_before_event_starts)); + Event::dispatch(new RequestedSummitOrderRefund($this->getId(), $days_before_event_starts)); } function cancelRefundRequest():void { @@ -957,7 +957,7 @@ class SummitOrder extends SilverstripeBaseModel implements IQREntity $ticket->setRefunded(); } - Event::fire(new SummitOrderRefundAccepted($this->getId(), $tickets_to_return, $promo_codes_to_return)); + Event::dispatch(new SummitOrderRefundAccepted($this->getId(), $tickets_to_return, $promo_codes_to_return)); } /** diff --git a/app/Models/Foundation/Summit/Speakers/PresentationSpeaker.php b/app/Models/Foundation/Summit/Speakers/PresentationSpeaker.php index 12626d33..320e24d4 100644 --- a/app/Models/Foundation/Summit/Speakers/PresentationSpeaker.php +++ b/app/Models/Foundation/Summit/Speakers/PresentationSpeaker.php @@ -1316,7 +1316,7 @@ SQL; */ public function deleted($args){ - Event::fire(new PresentationSpeakerDeleted(null, $this->pre_remove_events)); + Event::dispatch(new PresentationSpeakerDeleted(null, $this->pre_remove_events)); $this->pre_remove_events = null; } @@ -1337,7 +1337,7 @@ SQL; */ public function updated($args) { - Event::fire(new PresentationSpeakerUpdated($this, $this->pre_update_args)); + Event::dispatch(new PresentationSpeakerUpdated($this, $this->pre_update_args)); $this->pre_update_args = null; } @@ -1347,7 +1347,7 @@ SQL; */ public function inserted($args){ if(self::$bypass_events) return; - Event::fire(new PresentationSpeakerCreated($this, $args)); + Event::dispatch(new PresentationSpeakerCreated($this, $args)); } /** diff --git a/app/Models/Foundation/Summit/Sponsor.php b/app/Models/Foundation/Summit/Sponsor.php index 758cac92..d62f4475 100644 --- a/app/Models/Foundation/Summit/Sponsor.php +++ b/app/Models/Foundation/Summit/Sponsor.php @@ -182,12 +182,21 @@ class Sponsor extends SilverstripeBaseModel implements IOrderable * @return bool */ public function hasGrant(Member $member):bool { + return !is_null($this->getGrant($member)); + } + + /** + * @param Member $member + * @return SponsorUserInfoGrant|null + */ + public function getGrant(Member $member):?SponsorUserInfoGrant { $criteria = Criteria::create(); $criteria->where(Criteria::expr()->eq('allowed_user', $member)); $grant = $this->user_info_grants->matching($criteria)->first(); - return $grant !== false; + return $grant === false ? null : $grant; } + public function hasCompany():bool{ return $this->getCompanyId() > 0; } diff --git a/app/Models/Foundation/Summit/Summit.php b/app/Models/Foundation/Summit/Summit.php index b3813cc5..edddf6e0 100644 --- a/app/Models/Foundation/Summit/Summit.php +++ b/app/Models/Foundation/Summit/Summit.php @@ -5025,13 +5025,13 @@ SQL; $days = $this->getSummitDays(); $list = []; foreach ($days as $day){ - Log::debug(sprintf("Summit::getSummitDaysWithEvents day %s", $day->format('Y-m-d H:i:s'))); + //Log::debug(sprintf("Summit::getSummitDaysWithEvents day %s", $day->format('Y-m-d H:i:s'))); $begin = clone($day); $begin = $begin->setTime(0,0,0)->setTimezone(new \DateTimeZone('UTC')); $end = clone($day); $end = $end->setTime(23,59,59)->setTimezone(new \DateTimeZone('UTC')); - Log::debug(sprintf("Summit::getSummitDaysWithEvents UTC begin date %s UTC end date %s", $begin->format('Y-m-d H:i:s'), $end->format('Y-m-d H:i:s'))); + //Log::debug(sprintf("Summit::getSummitDaysWithEvents UTC begin date %s UTC end date %s", $begin->format('Y-m-d H:i:s'), $end->format('Y-m-d H:i:s'))); $count = 0; try { $sql = << 0){ - Log::debug(sprintf("Summit::getSummitDaysWithEvents UTC begin date %s UTC end date %s count %s", $begin->format('Y-m-d H:i:s'), $end->format('Y-m-d H:i:s'), $count)); + //Log::debug(sprintf("Summit::getSummitDaysWithEvents UTC begin date %s UTC end date %s count %s", $begin->format('Y-m-d H:i:s'), $end->format('Y-m-d H:i:s'), $count)); $list[] = $day; } } diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 00000000..352cce44 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ +getSummitEvent()->getId()); + SynchPresentationActions::dispatch($event->getSummitEvent()->getId())->delay(now()->addSecond(5)); }); diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 0513bea8..c81619d2 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -1,6 +1,6 @@ mapWebRoutes($router); + $this->mapApiRoutes(); + + $this->mapPublicApiRoutes(); + + $this->mapWebRoutes(); - // } /** @@ -57,11 +68,53 @@ class RouteServiceProvider extends ServiceProvider * * These routes all receive session state, CSRF protection, etc. * - * @param \Illuminate\Routing\Router $router * @return void */ - protected function mapWebRoutes(Router $router) + protected function mapWebRoutes() { - require app_path('Http/routes.php'); + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); } -} + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api/v1') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api_v1.php')); + + + Route::prefix('api/v2') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api_v2.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapPublicApiRoutes() + { + Route::prefix('api/public/v1') + ->middleware('public_api') + ->namespace($this->namespace) + ->group(base_path('routes/public_api.php')); + + Route::prefix('.well-known') + ->middleware('well_known') + ->namespace($this->namespace) + ->group(base_path('routes/well_known.php')); + } +} \ No newline at end of file diff --git a/app/Queue/RabbitMQ/RabbitMQConnector.php b/app/Queue/RabbitMQ/RabbitMQConnector.php deleted file mode 100644 index 012c094a..00000000 --- a/app/Queue/RabbitMQ/RabbitMQConnector.php +++ /dev/null @@ -1,133 +0,0 @@ -dispatcher = $dispatcher; - } - - /** - * Establish a queue connection. - * - * @param array $config - * - * @return RabbitMQQueue - * @throws Exception - */ - public function connect(array $config): Queue - { - $connection = $this->createConnection(Arr::except($config, 'options.queue')); - - $queue = $this->createQueue( - Arr::get($config, 'worker', 'default'), - $connection, - $config['queue'], - Arr::get($config, 'options.queue', []) - ); - - if (! $queue instanceof RabbitMQQueue) { - throw new InvalidArgumentException('Invalid worker.'); - } - - $this->dispatcher->listen(WorkerStopping::class, static function () use ($queue): void { - $queue->close(); - }); - - return $queue; - } - - /** - * @param array $config - * @return AbstractConnection - * @throws Exception - */ - protected function createConnection(array $config): AbstractConnection - { - /** @var AbstractConnection $connection */ - $connection = Arr::get($config, 'connection', AMQPLazyConnection::class); - - // manually disable heartbeat so long-running tasks will not fail - Arr::add($config, 'options.heartbeat', 0); - - return $connection::create_connection( - Arr::shuffle(Arr::get($config, 'hosts', [])), - $this->filter(Arr::get($config, 'options', [])) - ); - } - - /** - * Create a queue for the worker. - * - * @param string $worker - * @param AbstractConnection $connection - * @param string $queue - * @param array $options - * @return RabbitMQQueue|Queue - */ - protected function createQueue(string $worker, AbstractConnection $connection, string $queue, array $options = []) - { - switch ($worker) { - case 'default': - return new RabbitMQQueue($connection, $queue, $options); - default: - return new $worker($connection, $queue, $options); - } - } - - /** - * Recursively filter only null values. - * - * @param array $array - * @return array - */ - private function filter(array $array): array - { - foreach ($array as $index => &$value) { - if (is_array($value)) { - $value = $this->filter($value); - continue; - } - - // If the value is null then remove it. - if ($value === null) { - unset($array[$index]); - continue; - } - } - - return $array; - } -} diff --git a/app/Queue/RabbitMQ/RabbitMQJob.php b/app/Queue/RabbitMQ/RabbitMQJob.php deleted file mode 100644 index 9bc96d9f..00000000 --- a/app/Queue/RabbitMQ/RabbitMQJob.php +++ /dev/null @@ -1,176 +0,0 @@ -container = $container; - $this->rabbitmq = $rabbitmq; - $this->message = $message; - $this->connectionName = $connectionName; - $this->queue = $queue; - $this->decoded = $this->payload(); - } - - /** - * {@inheritdoc} - */ - public function getJobId() - { - return $this->decoded['id'] ?? null; - } - - /** - * {@inheritdoc} - */ - public function getRawBody(): string - { - return $this->message->getBody(); - } - - /** - * {@inheritdoc} - */ - public function attempts(): int - { - if (! $data = $this->getRabbitMQMessageHeaders()) { - return 1; - } - - $laravelAttempts = (int) Arr::get($data, 'laravel.attempts', 0); - - return $laravelAttempts + 1; - } - - /** - * {@inheritdoc} - */ - public function markAsFailed(): void - { - parent::markAsFailed(); - - // We must tel rabbitMQ this Job is failed - // The message must be rejected when the Job marked as failed, in case rabbitMQ wants to do some extra magic. - // like: Death lettering the message to an other exchange/routing-key. - $this->rabbitmq->reject($this); - } - - /** - * {@inheritdoc} - * - * @throws BindingResolutionException - */ - public function delete(): void - { - parent::delete(); - - // When delete is called and the Job was not failed, the message must be acknowledged. - // This is because this is a controlled call by a developer. So the message was handled correct. - if (! $this->failed) { - $this->rabbitmq->ack($this); - } - } - - /** - * Release the job back into the queue. - * - * @param int $delay - * @throws AMQPProtocolChannelException - */ - public function release($delay = 0): void - { - parent::release(); - - // Always create a new message when this Job is released - $this->rabbitmq->laterRaw($delay, $this->message->getBody(), $this->queue, $this->attempts()); - - // Releasing a Job means the message was failed to process. - // Because this Job message is always recreated and pushed as new message, this Job message is correctly handled. - // We must tell rabbitMQ this job message can be removed by acknowledging the message. - $this->rabbitmq->ack($this); - } - - /** - * Get the underlying RabbitMQ connection. - * - * @return RabbitMQQueue - */ - public function getRabbitMQ(): RabbitMQQueue - { - return $this->rabbitmq; - } - - /** - * Get the underlying RabbitMQ message. - * - * @return AMQPMessage - */ - public function getRabbitMQMessage(): AMQPMessage - { - return $this->message; - } - - /** - * Get the headers from the rabbitMQ message. - * - * @return array|null - */ - protected function getRabbitMQMessageHeaders(): ?array - { - /** @var AMQPTable|null $headers */ - if (! $headers = Arr::get($this->message->get_properties(), 'application_headers')) { - return null; - } - - return $headers->getNativeData(); - } -} diff --git a/app/Queue/RabbitMQ/RabbitMQQueue.php b/app/Queue/RabbitMQ/RabbitMQQueue.php deleted file mode 100644 index 05f431f2..00000000 --- a/app/Queue/RabbitMQ/RabbitMQQueue.php +++ /dev/null @@ -1,803 +0,0 @@ -connection = $connection; - $this->channel = $connection->channel(); - $this->default = $default; - $this->options = $options; - } - - /** - * {@inheritdoc} - * - * @throws AMQPProtocolChannelException - */ - public function size($queue = null): int - { - $queue = $this->getQueue($queue); - - if (! $this->isQueueExists($queue)) { - return 0; - } - - // create a temporary channel, so the main channel will not be closed on exception - $channel = $this->connection->channel(); - [, $size] = $channel->queue_declare($queue, true); - $channel->close(); - - return $size; - } - - /** - * {@inheritdoc} - * - * @throws AMQPProtocolChannelException - */ - public function push($job, $data = '', $queue = null) - { - return $this->pushRaw($this->createPayload($job, $data), $queue, []); - } - - /** - * {@inheritdoc} - * - * @throws AMQPProtocolChannelException - */ - public function pushRaw($payload, $queue = null, array $options = []) - { - [$destination, $exchange, $exchangeType, $attempts] = $this->publishProperties($queue, $options); - - $this->declareDestination($destination, $exchange, $exchangeType); - - [$message, $correlationId] = $this->createMessage($payload, $attempts); - - $this->channel->basic_publish($message, $exchange, $destination, true, false); - - return $correlationId; - } - - /** - * {@inheritdoc} - * - * @throws AMQPProtocolChannelException - */ - public function later($delay, $job, $data = '', $queue = null) - { - return $this->laterRaw( - $delay, - $this->createPayload($job, $data), - $queue - ); - } - - /** - * @param $delay - * @param $payload - * @param null $queue - * @param int $attempts - * @return mixed - * @throws AMQPProtocolChannelException - */ - public function laterRaw($delay, $payload, $queue = null, $attempts = 0) - { - $ttl = $this->secondsUntil($delay) * 1000; - - // When no ttl just publish a new message to the exchange or queue - if ($ttl <= 0) { - return $this->pushRaw($payload, $queue, ['delay' => $delay, 'attempts' => $attempts]); - } - - $destination = $this->getQueue($queue).'.delay.'.$ttl; - - $this->declareQueue($destination, true, false, $this->getDelayQueueArguments($this->getQueue($queue), $ttl)); - - [$message, $correlationId] = $this->createMessage($payload, $attempts); - - // Publish directly on the delayQueue, no need to publish trough an exchange. - $this->channel->basic_publish($message, null, $destination, true, false); - - return $correlationId; - } - - /** - * {@inheritdoc} - * - * @throws AMQPProtocolChannelException - */ - public function bulk($jobs, $data = '', $queue = null): void - { - foreach ((array) $jobs as $job) { - $this->bulkRaw($this->createPayload($job, $data), $queue, ['job' => $job]); - } - - $this->channel->publish_batch(); - } - - /** - * @param string $payload - * @param null $queue - * @param array $options - * @return mixed - * @throws AMQPProtocolChannelException - */ - public function bulkRaw(string $payload, $queue = null, array $options = []) - { - [$destination, $exchange, $exchangeType, $attempts] = $this->publishProperties($queue, $options); - - $this->declareDestination($destination, $exchange, $exchangeType); - - [$message, $correlationId] = $this->createMessage($payload, $attempts); - - $this->channel->batch_basic_publish($message, $exchange, $destination); - - return $correlationId; - } - - /** - * {@inheritdoc} - * - * @throws Exception - */ - public function pop($queue = null) - { - try { - $queue = $this->getQueue($queue); - - /** @var AMQPMessage|null $message */ - if ($message = $this->channel->basic_get($queue)) { - return $this->currentJob = new RabbitMQJob( - $this->container, - $this, - $message, - $this->connectionName, - $queue - ); - } - } - catch(AMQPConnectionClosedException $ex){ - // recovery from closed connection - Log::warning($ex); - try { - usleep(RabbitMQQueue::RECONNECT_WAIT); - $this->connection->reconnect(); - $this->channel = $this->connection->channel(); - } - catch (Exception $ex){ - Log::warning($ex); - } - return null; - } - catch (AMQPProtocolChannelException $exception) { - // If there is not exchange or queue AMQP will throw exception with code 404 - // We need to catch it and return null - - Log::warning($exception); - - if ($exception->amqp_reply_code === 404) { - - Log::warning(sprintf("RabbitMQQueue::pop amqp_reply_code 404 trying reconnect ...")); - // Because of the channel exception the channel was closed and removed. - // We have to open a new channel. Because else the worker(s) are stuck in a loop, without processing. - $this->channel = $this->connection->channel(); - - return null; - } - - throw $exception; - } - - return null; - } - - /** - * @return AbstractConnection - */ - public function getConnection(): AbstractConnection - { - return $this->connection; - } - - /** - * @return AMQPChannel - */ - public function getChannel(): AMQPChannel - { - return $this->channel; - } - - /** - * Gets a queue/destination, by default the queue option set on the connection. - * - * @param null $queue - * @return string - */ - public function getQueue($queue = null) - { - return $queue ?: $this->default; - } - - /** - * Checks if the given exchange already present/defined in RabbitMQ. - * Returns false when when the exchange is missing. - * - * @param string $exchange - * @return bool - * @throws AMQPProtocolChannelException - */ - public function isExchangeExists(string $exchange): bool - { - try { - // create a temporary channel, so the main channel will not be closed on exception - $channel = $this->connection->channel(); - $channel->exchange_declare($exchange, '', true); - $channel->close(); - - return true; - } catch (AMQPProtocolChannelException $exception) { - if ($exception->amqp_reply_code === 404) { - return false; - } - - throw $exception; - } - } - - /** - * Declare a exchange in rabbitMQ, when not already declared. - * - * @param string $name - * @param string $type - * @param bool $durable - * @param bool $autoDelete - * @param array $arguments - * @return void - */ - public function declareExchange(string $name, string $type = AMQPExchangeType::DIRECT, bool $durable = true, bool $autoDelete = false, array $arguments = []): void - { - if ($this->isExchangeDeclared($name)) { - return; - } - - $this->channel->exchange_declare( - $name, - $type, - false, - $durable, - $autoDelete, - false, - true, - new AMQPTable($arguments) - ); - } - - /** - * Delete a exchange from rabbitMQ, only when present in RabbitMQ. - * - * @param string $name - * @param bool $unused - * @return void - * @throws AMQPProtocolChannelException - */ - public function deleteExchange(string $name, bool $unused = false): void - { - if (! $this->isExchangeExists($name)) { - return; - } - - $this->channel->exchange_delete( - $name, - $unused - ); - } - - /** - * Checks if the given queue already present/defined in RabbitMQ. - * Returns false when when the queue is missing. - * - * @param string $name - * @return bool - * @throws AMQPProtocolChannelException - */ - public function isQueueExists(string $name = null): bool - { - try { - Log::debug(sprintf("RabbitMQQueue::isQueueExists %s", $name)); - // create a temporary channel, so the main channel will not be closed on exception - $channel = $this->connection->channel(); - $channel->queue_declare($this->getQueue($name), true); - $channel->close(); - Log::debug(sprintf("RabbitMQQueue::isQueueExists %s exists", $name)); - return true; - } catch (AMQPProtocolChannelException $exception) { - if ($exception->amqp_reply_code === 404) { - Log::debug(sprintf("RabbitMQQueue::isQueueExists %s not found", $name)); - return false; - } - - throw $exception; - } - } - - /** - * Declare a queue in rabbitMQ, when not already declared. - * - * @param string $name - * @param bool $durable - * @param bool $autoDelete - * @param array $arguments - * @return void - */ - public function declareQueue(string $name, bool $durable = true, bool $autoDelete = false, array $arguments = []): void - { - Log::debug(sprintf("RabbitMQQueue::declareQueue %s ", $name)); - if ($this->isQueueDeclared($name)) { - return; - } - - $this->channel->queue_declare( - $name, - false, - $durable, - false, - $autoDelete, - false, - new AMQPTable($arguments) - ); - } - - /** - * Delete a queue from rabbitMQ, only when present in RabbitMQ. - * - * @param string $name - * @param bool $if_unused - * @param bool $if_empty - * @return void - * @throws AMQPProtocolChannelException - */ - public function deleteQueue(string $name, bool $if_unused = false, bool $if_empty = false): void - { - if (! $this->isQueueExists($name)) { - return; - } - - $this->channel->queue_delete($name, $if_unused, $if_empty); - } - - /** - * Bind a queue to an exchange. - * - * @param string $queue - * @param string $exchange - * @param string $routingKey - * @return void - */ - public function bindQueue(string $queue, string $exchange, string $routingKey = ''): void - { - if (in_array( - implode('', compact('queue', 'exchange', 'routingKey')), - $this->boundQueues, - true - )) { - return; - } - - $this->channel->queue_bind($queue, $exchange, $routingKey); - } - - /** - * Purge the queue of messages. - * - * @param string $queue - * @return void - */ - public function purge(string $queue = null): void - { - // create a temporary channel, so the main channel will not be closed on exception - $channel = $this->connection->channel(); - $channel->queue_purge($this->getQueue($queue)); - $channel->close(); - } - - /** - * Acknowledge the message. - * - * @param RabbitMQJob $job - * @return void - */ - public function ack(RabbitMQJob $job): void - { - $this->channel->basic_ack($job->getRabbitMQMessage()->getDeliveryTag()); - } - - /** - * Reject the message. - * - * @param RabbitMQJob $job - * @param bool $requeue - * - * @return void - */ - public function reject(RabbitMQJob $job, bool $requeue = false): void - { - $this->channel->basic_reject($job->getRabbitMQMessage()->getDeliveryTag(), $requeue); - } - - /** - * Create a AMQP message. - * - * @param $payload - * @param int $attempts - * @return array - */ - protected function createMessage($payload, int $attempts = 0): array - { - $properties = [ - 'content_type' => 'application/json', - 'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT, - ]; - - if ($correlationId = json_decode($payload, true)['id'] ?? null) { - $properties['correlation_id'] = $correlationId; - } - - if ($this->isPrioritizeDelayed()) { - $properties['priority'] = $attempts; - } - - $message = new AMQPMessage($payload, $properties); - - $message->set('application_headers', new AMQPTable([ - 'laravel' => [ - 'attempts' => $attempts, - ], - ])); - - return [ - $message, - $correlationId, - ]; - } - - /** - * Create a payload array from the given job and data. - * - * @param object|string $job - * @param string $data - * @return array - */ - protected function createPayloadArray($job, $data = '') - { - return array_merge(parent::createPayloadArray($job, $data), [ - 'id' => $this->getRandomId(), - ]); - } - - /** - * Get a random ID string. - * - * @return string - */ - protected function getRandomId(): string - { - return Str::random(32); - } - - /** - * Close the connection to RabbitMQ. - * - * @return void - * @throws Exception - */ - public function close(): void - { - if ($this->currentJob && ! $this->currentJob->isDeletedOrReleased()) { - $this->reject($this->currentJob, true); - } - - try { - $this->connection->close(); - } catch (ErrorException $exception) { - // Ignore the exception - } - } - - /** - * Get the Queue arguments. - * - * @param string $destination - * @return array - */ - protected function getQueueArguments(string $destination): array - { - $arguments = []; - - // Messages without a priority property are treated as if their priority were 0. - // Messages with a priority which is higher than the queue's maximum, are treated as if they were - // published with the maximum priority. - if ($this->isPrioritizeDelayed()) { - $arguments['x-max-priority'] = $this->getQueueMaxPriority(); - } - - if ($this->isRerouteFailed()) { - $arguments['x-dead-letter-exchange'] = $this->getFailedExchange() ?? ''; - $arguments['x-dead-letter-routing-key'] = $this->getFailedRoutingKey($destination); - } - - return $arguments; - } - - /** - * Get the Delay queue arguments. - * - * @param string $destination - * @param int $ttl - * @return array - */ - protected function getDelayQueueArguments(string $destination, int $ttl): array - { - return [ - 'x-dead-letter-exchange' => $this->getExchange() ?? '', - 'x-dead-letter-routing-key' => $this->getRoutingKey($destination), - 'x-message-ttl' => $ttl, - 'x-expires' => $ttl * 2, - ]; - } - - /** - * Returns &true;, if delayed messages should be prioritized. - * - * @return bool - */ - protected function isPrioritizeDelayed(): bool - { - return boolval(Arr::get($this->options, 'prioritize_delayed') ?: false); - } - - /** - * Returns a integer with a default of '2' for when using prioritization on delayed messages. - * If priority queues are desired, we recommend using between 1 and 10. - * Using more priority layers, will consume more CPU resources and would affect runtimes. - * - * @see https://www.rabbitmq.com/priority.html - * @return int - */ - protected function getQueueMaxPriority(): int - { - return intval(Arr::get($this->options, 'queue_max_priority') ?: 2); - } - - /** - * Get the exchange name, or &null; as default value. - * - * @param string $exchange - * @return string|null - */ - protected function getExchange(string $exchange = null): ?string - { - return $exchange ?: Arr::get($this->options, 'exchange') ?: null; - } - - /** - * Get the routing-key for when you use exchanges - * The default routing-key is the given destination. - * - * @param string $destination - * @return string - */ - protected function getRoutingKey(string $destination): string - { - return ltrim(sprintf(Arr::get($this->options, 'exchange_routing_key') ?: '%s', $destination), '.'); - } - - /** - * Get the exchangeType, or AMQPExchangeType::DIRECT as default. - * - * @param string|null $type - * @return string - */ - protected function getExchangeType(?string $type = null): string - { - return @constant(AMQPExchangeType::class.'::'.Str::upper($type ?: Arr::get($this->options, 'exchange_type') ?: 'direct')) ?: AMQPExchangeType::DIRECT; - } - - /** - * Returns &true;, if failed messages should be rerouted. - * - * @return bool - */ - protected function isRerouteFailed(): bool - { - return boolval(Arr::get($this->options, 'reroute_failed') ?: false); - } - - /** - * Get the exchange for failed messages. - * - * @param string|null $exchange - * @return string|null - */ - protected function getFailedExchange(string $exchange = null): ?string - { - return $exchange ?: Arr::get($this->options, 'failed_exchange') ?: null; - } - - /** - * Get the routing-key for failed messages - * The default routing-key is the given destination substituted by '.failed'. - * - * @param string $destination - * @return string - */ - protected function getFailedRoutingKey(string $destination): string - { - return ltrim(sprintf(Arr::get($this->options, 'failed_routing_key') ?: '%s.failed', $destination), '.'); - } - - /** - * Checks if the exchange was already declared. - * - * @param string $name - * @return bool - */ - protected function isExchangeDeclared(string $name): bool - { - return in_array($name, $this->exchanges, true); - } - - /** - * Checks if the queue was already declared. - * - * @param string $name - * @return bool - */ - protected function isQueueDeclared(string $name): bool - { - return in_array($name, $this->queues, true); - } - - /** - * Declare the destination when necessary. - * - * @param string $destination - * @param string|null $exchange - * @param string|null $exchangeType - * @return void - * @throws AMQPProtocolChannelException - */ - protected function declareDestination(string $destination, ?string $exchange = null, string $exchangeType = AMQPExchangeType::DIRECT): void - { - // When a exchange is provided and no exchange is present in RabbitMQ, create an exchange. - if ($exchange && ! $this->isExchangeExists($exchange)) { - $this->declareExchange($exchange, $exchangeType); - } - - // When a exchange is provided, just return. - if ($exchange) { - return; - } - - // When the queue already exists, just return. - if ($this->isQueueExists($destination)) { - return; - } - - // Create a queue for amq.direct publishing. - $this->declareQueue($destination, true, false, $this->getQueueArguments($destination)); - } - - /** - * Determine all publish properties. - * - * @param $queue - * @param array $options - * @return array - */ - protected function publishProperties($queue, array $options = []): array - { - $queue = $this->getQueue($queue); - $attempts = Arr::get($options, 'attempts') ?: 0; - - $destination = $this->getRoutingKey($queue); - $exchange = $this->getExchange(); - $exchangeType = $this->getExchangeType(); - - return [$destination, $exchange, $exchangeType, $attempts]; - } -} diff --git a/app/Queue/RabbitMQServiceProvider.php b/app/Queue/RabbitMQServiceProvider.php deleted file mode 100644 index 3903f8a6..00000000 --- a/app/Queue/RabbitMQServiceProvider.php +++ /dev/null @@ -1,48 +0,0 @@ -app['queue']; - - $queue->addConnector('rabbitmq', function () { - return new RabbitMQConnector($this->app['events']); - }); - } -} \ No newline at end of file diff --git a/app/Repositories/Summit/DoctrineSummitEventRepository.php b/app/Repositories/Summit/DoctrineSummitEventRepository.php index 7693774b..a1076099 100644 --- a/app/Repositories/Summit/DoctrineSummitEventRepository.php +++ b/app/Repositories/Summit/DoctrineSummitEventRepository.php @@ -73,7 +73,7 @@ final class DoctrineSummitEventRepository $idx = 1; foreach(self::$forbidden_classes as $forbidden_class){ $query = $query - ->andWhere("not e INSTANCE OF :forbidden_class".$idx); + ->andWhere("not e INSTANCE OF :forbidden_class".$idx); $query->setParameter("forbidden_class".$idx, $forbidden_class); $idx++; } @@ -176,27 +176,27 @@ final class DoctrineSummitEventRepository "(sprs.name :operator :value)" ), 'selection_status' => new DoctrineSwitchFilterMapping([ - 'selected' => new DoctrineCaseFilterMapping( - 'selected', - "ssp.order is not null and sspl.list_type = 'Group' and sspl.category = e.category" - ), - 'accepted' => new DoctrineCaseFilterMapping( - 'accepted', - "ssp.order is not null and ssp.order <= cc.session_count and sspl.list_type = 'Group' and sspl.list_class = 'Session' and sspl.category = e.category" - ), - 'alternate' => new DoctrineCaseFilterMapping( + 'selected' => new DoctrineCaseFilterMapping( + 'selected', + "ssp.order is not null and sspl.list_type = 'Group' and sspl.category = e.category" + ), + 'accepted' => new DoctrineCaseFilterMapping( + 'accepted', + "ssp.order is not null and ssp.order <= cc.session_count and sspl.list_type = 'Group' and sspl.list_class = 'Session' and sspl.category = e.category" + ), + 'alternate' => new DoctrineCaseFilterMapping( 'alternate', "ssp.order is not null and ssp.order > cc.session_count and sspl.list_type = 'Group' and sspl.list_class = 'Session' and sspl.category = e.category" - ), - 'lightning-accepted' => new DoctrineCaseFilterMapping( + ), + 'lightning-accepted' => new DoctrineCaseFilterMapping( 'lightning-accepted', "ssp.order is not null and ssp.order <= cc.lightning_count and sspl.list_type = 'Group' and sspl.list_class = 'Lightning' and sspl.category = e.category" - ), - 'lightning-alternate' => new DoctrineCaseFilterMapping( + ), + 'lightning-alternate' => new DoctrineCaseFilterMapping( 'lightning-alternate', "ssp.order is not null and ssp.order > cc.lightning_count and sspl.list_type = 'Group' and sspl.list_class = 'Lightning' and sspl.category = e.category" - ), - ] + ), + ] ), 'track_chairs_status' => new DoctrineSwitchFilterMapping ( @@ -242,14 +242,20 @@ final class DoctrineSummitEventRepository 'moved', sprintf ( - "not exists (select vw1 from models\summit\PresentationTrackChairView vw1 - inner join vw1.presentation p1 join vw1.viewer v1 where p1.id = p.id and v1.id = %s) - and exists (select cch from models\summit\PSummitCategoryChange cch - inner join cch.presentation p2 - inner join cch.new_category nc - where p2.id = p.id and - cch.status = %s and - nc.id = %s) ", + "not exists + ( + select vw1 from models\summit\PresentationTrackChairView vw1 + inner join vw1.presentation p1 join vw1.viewer v1 where p1.id = p.id and v1.id = %s + ) + and exists + ( + select cch from models\summit\SummitCategoryChange cch + inner join cch.presentation p2 + inner join cch.new_category nc + where p2.id = p.id and + cch.status = %s and + nc.id = %s + ) ", $current_member_id, ISummitCategoryChangeStatus::Approved, $current_track_id @@ -299,11 +305,11 @@ final class DoctrineSummitEventRepository public function getAllByPage(PagingInfo $paging_info, Filter $filter = null, Order $order = null) { - Log::debug("DoctrineSummitEventRepository::getAllByPage"); $current_track_id = 0; $current_member_id = 0; if(!is_null($filter)){ + Log::debug(sprintf("DoctrineSummitEventRepository::getAllByPage filter %s", $filter)); // check for dependant filtering $track_id_filter = $filter->getUniqueFilter('track_id'); if (!is_null($track_id_filter)) { @@ -372,7 +378,6 @@ final class DoctrineSummitEventRepository foreach($paginator as $entity) $data[]= $entity; - Log::debug("DoctrineSummitEventRepository::getAllByPage End"); return new PagingResponse ( $total, diff --git a/app/Services/Apis/PaymentGateways/StripeApi.php b/app/Services/Apis/PaymentGateways/StripeApi.php index d837c0df..e65c9b24 100644 --- a/app/Services/Apis/PaymentGateways/StripeApi.php +++ b/app/Services/Apis/PaymentGateways/StripeApi.php @@ -17,9 +17,10 @@ use App\Services\Apis\IPaymentGatewayAPI; use Illuminate\Http\Request as LaravelRequest; use models\exceptions\ValidationException; use Stripe\Charge; -use Stripe\Error\InvalidRequest; -use Stripe\Error\SignatureVerification; +use Stripe\Exception\ApiErrorException; +use Stripe\Exception\SignatureVerificationException; use Stripe\Event; +use Stripe\Refund; use Stripe\Stripe; use Stripe\PaymentIntent; use Stripe\WebhookSignature; @@ -162,7 +163,7 @@ final class StripeApi implements IPaymentGatewayAPI /** * @param LaravelRequest $request * @return array - * @throws SignatureVerification + * @throws SignatureVerificationException * @throws \Exception * @throws \InvalidArgumentException */ @@ -219,7 +220,7 @@ final class StripeApi implements IPaymentGatewayAPI } catch (\UnexpectedValueException $e) { // Invalid payload throw $e; - } catch (SignatureVerification $e) { + } catch (SignatureVerificationException $e) { // Invalid signature throw $e; } catch (\Exception $e) { @@ -263,36 +264,52 @@ final class StripeApi implements IPaymentGatewayAPI */ public function refundPayment(string $cart_id, float $amount, string $currency): void { - if (empty($this->secret_key)) - throw new \InvalidArgumentException(); + try { - Stripe::setApiKey($this->secret_key); - Stripe::setApiVersion(self::Version); + Log::debug(sprintf("StripeApi::refundPayment calling cart_id %s amount %s currency %s", $cart_id, $amount, $currency)); - $intent = PaymentIntent::retrieve($cart_id); + if (empty($this->secret_key)) + throw new \InvalidArgumentException(); - if (is_null($intent)) - throw new \InvalidArgumentException(); - if (count($intent->charges->data) == 0) - throw new \InvalidArgumentException("this intent payment has no charges"); - $charge = $intent->charges->data[0]; - if (!$charge instanceof Charge) - throw new \InvalidArgumentException(); - $params = []; - if ($amount > 0) { - if (!self::isZeroDecimalCurrency($currency)) { - /** - * All API requests expect amounts to be provided in a currency’s smallest unit. For example, - * to charge $10 USD, provide an amount value of 1000 (i.e, 1000 cents). - * For zero-decimal currencies, still provide amounts as an integer but without multiplying by 100. - * For example, to charge Â¥500, simply provide an amount value of 500. - */ - $amount = $amount * 100; + Stripe::setApiKey($this->secret_key); + Stripe::setApiVersion(self::Version); + + $intent = PaymentIntent::retrieve($cart_id); + + if (is_null($intent)) + throw new \InvalidArgumentException(); + if (count($intent->charges->data) == 0) + throw new \InvalidArgumentException("this intent payment has no charges"); + $charge = $intent->charges->data[0]; + if (!$charge instanceof Charge) + throw new \InvalidArgumentException(); + $params = [ + 'charge' => $charge->id, + 'reason' => 'requested_by_customer' + ]; + if ($amount > 0) { + if (!self::isZeroDecimalCurrency($currency)) { + /** + * All API requests expect amounts to be provided in a currency’s smallest unit. For example, + * to charge $10 USD, provide an amount value of 1000 (i.e, 1000 cents). + * For zero-decimal currencies, still provide amounts as an integer but without multiplying by 100. + * For example, to charge Â¥500, simply provide an amount value of 500. + */ + $amount = $amount * 100; + } + $params['amount'] = intval($amount); } - $params['amount'] = intval($amount); + // $charge->refund($params); + // @see https://github.com/stripe/stripe-php/wiki/Migration-guide-for-v7 + $refund = Refund::create($params); + + Log::debug(sprintf("StripeApi::refundPayment refund requested for cart_id %s amount %s response %s", $cart_id, $amount, $refund->toJSON())); + } + catch (\Exception $ex){ + Log::error($ex); + throw $ex; } - $charge->refund($params); } /** @@ -372,7 +389,7 @@ final class StripeApi implements IPaymentGatewayAPI return $intent->status; } - catch(InvalidRequest $ex){ + catch(ApiErrorException $ex){ Log::warning(sprintf("StripeApi::getCartStatus cart_id %s code %s message %s", $cart_id, $ex->getCode(), $ex->getMessage())); return null; } @@ -411,13 +428,19 @@ final class StripeApi implements IPaymentGatewayAPI */ public function getWebHookById(string $id){ - if (empty($this->secret_key)) - throw new \InvalidArgumentException(); + try { + if (empty($this->secret_key)) + throw new \InvalidArgumentException(); - Stripe::setApiKey($this->secret_key); - Stripe::setApiVersion(self::Version); + Stripe::setApiKey($this->secret_key); + Stripe::setApiVersion(self::Version); - return WebhookEndpoint::retrieve($id); + return WebhookEndpoint::retrieve($id); + } + catch (\Exception $ex){ + Log::error($ex); + throw $ex; + } } /** @@ -425,9 +448,14 @@ final class StripeApi implements IPaymentGatewayAPI * @return void */ public function deleteWebHookById(string $id):void{ - - $webhook = $this->getWebHookById($id); - if(!$webhook) return; - $webhook->delete(); + try { + $webhook = $this->getWebHookById($id); + if (!$webhook) return; + $webhook->delete(); + } + catch (\Exception $ex){ + Log::error($ex); + throw $ex; + } } } \ No newline at end of file diff --git a/app/Services/Model/ISummitSelectedPresentationListService.php b/app/Services/Model/ISummitSelectedPresentationListService.php index e41bb0b0..c13c88a0 100644 --- a/app/Services/Model/ISummitSelectedPresentationListService.php +++ b/app/Services/Model/ISummitSelectedPresentationListService.php @@ -60,7 +60,7 @@ interface ISummitSelectedPresentationListService * @param Summit $summit * @param int $track_id * @param int $list_id - * @param array$payload + * @param array $payload * @return SummitSelectedPresentationList * @throws EntityNotFoundException * @throws ValidationException diff --git a/app/Services/Model/Imp/MemberService.php b/app/Services/Model/Imp/MemberService.php index 5a7bff23..b17def69 100644 --- a/app/Services/Model/Imp/MemberService.php +++ b/app/Services/Model/Imp/MemberService.php @@ -296,7 +296,7 @@ final class MemberService $member->setLastName($userDTO->getLastName()); $member->setUserExternalId($userDTO->getId()); $this->member_repository->add($member, true); - Event::fire(new NewMember($member->getId())); + Event::dispatch(new NewMember($member->getId())); return $member; }); } @@ -364,7 +364,7 @@ final class MemberService } if($is_new) - Event::fire(new NewMember($member->getId())); + Event::dispatch(new NewMember($member->getId())); return $member; }); diff --git a/app/Services/Model/Imp/PresentationCategoryGroupService.php b/app/Services/Model/Imp/PresentationCategoryGroupService.php index cc4cddee..e46fec4e 100644 --- a/app/Services/Model/Imp/PresentationCategoryGroupService.php +++ b/app/Services/Model/Imp/PresentationCategoryGroupService.php @@ -83,7 +83,7 @@ final class PresentationCategoryGroupService return $track_group; }); - Event::fire + Event::dispatch ( new TrackGroupInserted ( @@ -136,7 +136,7 @@ final class PresentationCategoryGroupService ); } - Event::fire + Event::dispatch ( new TrackGroupUpdated ( @@ -179,7 +179,7 @@ final class PresentationCategoryGroupService ); } - Event::fire + Event::dispatch ( new TrackGroupDeleted ( @@ -238,7 +238,7 @@ final class PresentationCategoryGroupService $track_group->addCategory($track); - Event::fire + Event::dispatch ( new TrackGroupUpdated ( @@ -296,7 +296,7 @@ final class PresentationCategoryGroupService $track_group->removeCategory($track); - Event::fire + Event::dispatch ( new TrackGroupUpdated ( @@ -368,7 +368,7 @@ final class PresentationCategoryGroupService $track_group->addToGroup($group); - Event::fire + Event::dispatch ( new TrackGroupUpdated ( @@ -439,7 +439,7 @@ final class PresentationCategoryGroupService $track_group->removeFromGroup($group); - Event::fire + Event::dispatch ( new TrackGroupUpdated ( diff --git a/app/Services/Model/Imp/PresentationService.php b/app/Services/Model/Imp/PresentationService.php index d1a18ddb..75098d9f 100644 --- a/app/Services/Model/Imp/PresentationService.php +++ b/app/Services/Model/Imp/PresentationService.php @@ -185,7 +185,7 @@ final class PresentationService return $video; }); - Event::fire(new PresentationMaterialUpdated($video)); + Event::dispatch(new PresentationMaterialUpdated($video)); return $video; } @@ -216,7 +216,7 @@ final class PresentationService $presentation->removeVideo($video); - Event::fire(new PresentationMaterialDeleted($presentation, $video_id, 'PresentationVideo')); + Event::dispatch(new PresentationMaterialDeleted($presentation, $video_id, 'PresentationVideo')); }); } @@ -788,7 +788,7 @@ final class PresentationService }); - Event::fire(new PresentationMaterialUpdated($slide)); + Event::dispatch(new PresentationMaterialUpdated($slide)); return $slide; } @@ -820,7 +820,7 @@ final class PresentationService $presentation->removeSlide($slide); - Event::fire(new PresentationMaterialDeleted($presentation, $slide_id, 'PresentationSlide')); + Event::dispatch(new PresentationMaterialDeleted($presentation, $slide_id, 'PresentationSlide')); }); } @@ -889,7 +889,7 @@ final class PresentationService return $link; }); - Event::fire(new PresentationMaterialUpdated($link)); + Event::dispatch(new PresentationMaterialUpdated($link)); return $link; } @@ -921,7 +921,7 @@ final class PresentationService $presentation->removeLink($link); - Event::fire(new PresentationMaterialDeleted($presentation, $link_id, 'PresentationLink')); + Event::dispatch(new PresentationMaterialDeleted($presentation, $link_id, 'PresentationLink')); }); } diff --git a/app/Services/Model/Imp/PresentationVideoMediaUploadProcessor.php b/app/Services/Model/Imp/PresentationVideoMediaUploadProcessor.php index 83b4057a..7aee92d2 100644 --- a/app/Services/Model/Imp/PresentationVideoMediaUploadProcessor.php +++ b/app/Services/Model/Imp/PresentationVideoMediaUploadProcessor.php @@ -308,7 +308,7 @@ final class PresentationVideoMediaUploadProcessor foreach ($event_ids as $event_id) { - Log::warning(sprintf("PresentationVideoMediaUploadProcessor::processMuxAssetsFromStreamUrl processing event %s", $event_id)); + Log::debug(sprintf("PresentationVideoMediaUploadProcessor::processMuxAssetsFromStreamUrl processing event %s", $event_id)); try { $this->tx_service->transaction(function () use ($event_id, $credentials, &$excerpt) { try { @@ -380,6 +380,8 @@ final class PresentationVideoMediaUploadProcessor Mail::queue(new MUXExportExcerptMail($mail_to, "MUX Assets MP4 Enabling Process", $excerpt)); if(count($event_ids) > 0) { + + Log::debug(sprintf("PresentationVideoMediaUploadProcessor::processMuxAssetsFromStreamUrl triggering CreateVideosFromMUXAssetsForSummitJob")); // fire exporting // @see https://docs.mux.com/guides/video/download-your-videos#download-videos CreateVideosFromMUXAssetsForSummitJob::dispatch( @@ -387,7 +389,7 @@ final class PresentationVideoMediaUploadProcessor $credentials->getTokenId(), $credentials->getTokenSecret(), $mail_to - )->delay(now()->addMinutes(1)); + )->delay(now()->addMinutes(10)); } return count($event_ids); diff --git a/app/Services/Model/Imp/SponsorUserInfoGrantService.php b/app/Services/Model/Imp/SponsorUserInfoGrantService.php index c625ab5e..12d1a0fd 100644 --- a/app/Services/Model/Imp/SponsorUserInfoGrantService.php +++ b/app/Services/Model/Imp/SponsorUserInfoGrantService.php @@ -71,7 +71,6 @@ final class SponsorUserInfoGrantService */ public function addGrant(Summit $summit, int $sponsor_id, Member $current_member):SponsorUserInfoGrant { return $this->tx_service->transaction(function() use($summit, $sponsor_id, $current_member){ - $grant = SponsorUserInfoGrantFactory::build(['class_name' => SponsorUserInfoGrant::ClassName]); $sponsor = $summit->getSummitSponsorById($sponsor_id); if(is_null($sponsor)){ throw new EntityNotFoundException(sprintf("Sponsor not found.")); @@ -85,12 +84,9 @@ final class SponsorUserInfoGrantService $sponsor_id ) ); - - throw new ValidationException - ( - "Thanks for sharing your info!" - ); + return $sponsor->getGrant($current_member); } + $grant = SponsorUserInfoGrantFactory::build(['class_name' => SponsorUserInfoGrant::ClassName]); $grant->setAllowedUser($current_member); $sponsor->addUserInfoGrant($grant); return $grant; diff --git a/app/Services/Model/Imp/SummitEventTypeService.php b/app/Services/Model/Imp/SummitEventTypeService.php index 6d1b23fd..de1ce444 100644 --- a/app/Services/Model/Imp/SummitEventTypeService.php +++ b/app/Services/Model/Imp/SummitEventTypeService.php @@ -88,7 +88,7 @@ final class SummitEventTypeService }); - Event::fire + Event::dispatch ( new SummitEventTypeInserted ( @@ -130,7 +130,7 @@ final class SummitEventTypeService $event_type = SummitEventTypeFactory::populate($event_type, $summit, $data); - Event::fire + Event::dispatch ( new SummitEventTypeUpdated ( @@ -180,7 +180,7 @@ final class SummitEventTypeService ); } - Event::fire + Event::dispatch ( new SummitEventTypeDeleted ( @@ -219,7 +219,7 @@ final class SummitEventTypeService }); foreach ($added_types as $event_type){ - Event::fire + Event::dispatch ( new SummitEventTypeInserted ( diff --git a/app/Services/Model/Imp/SummitLocationService.php b/app/Services/Model/Imp/SummitLocationService.php index 368ee2c6..30ecff27 100644 --- a/app/Services/Model/Imp/SummitLocationService.php +++ b/app/Services/Model/Imp/SummitLocationService.php @@ -202,7 +202,7 @@ final class SummitLocationService return $location; }); - Event::fire + Event::dispatch ( new LocationInserted ( @@ -319,7 +319,7 @@ final class SummitLocationService $summit->recalculateLocationOrder($location, intval($data['order'])); } - Event::fire + Event::dispatch ( new LocationUpdated ( @@ -381,7 +381,7 @@ final class SummitLocationService ); } - Event::fire(new LocationDeleted + Event::dispatch(new LocationDeleted ( $location->getSummitId(), $location->getId(), @@ -473,7 +473,7 @@ final class SummitLocationService return $floor; }); - Event::fire + Event::dispatch ( new FloorInserted ( @@ -582,7 +582,7 @@ final class SummitLocationService $floor = SummitVenueFloorFactory::populate($floor, $data); - Event::fire + Event::dispatch ( new FloorUpdated ( @@ -654,7 +654,7 @@ final class SummitLocationService ); } - Event::fire(new FloorDeleted + Event::dispatch(new FloorDeleted ( $floor->getVenue()->getSummitId(), $floor->getVenueId(), @@ -765,7 +765,7 @@ final class SummitLocationService return $room; }); - Event::fire + Event::dispatch ( new SummitVenueRoomInserted ( @@ -911,7 +911,7 @@ final class SummitLocationService } } - Event::fire + Event::dispatch ( new SummitVenueRoomUpdated ( @@ -993,7 +993,7 @@ final class SummitLocationService $floor->removeRoom($room); } - Event::fire + Event::dispatch ( new SummitVenueRoomDeleted ( @@ -1222,7 +1222,7 @@ final class SummitLocationService return $map; }); - Event::fire + Event::dispatch ( new LocationImageInserted ( @@ -1329,7 +1329,7 @@ final class SummitLocationService $location->recalculateMapOrder($map, intval($metadata['order'])); } - Event::fire + Event::dispatch ( new LocationImageUpdated ( @@ -1402,7 +1402,7 @@ final class SummitLocationService ); } - Event::fire + Event::dispatch ( new LocationImageDeleted ( @@ -1490,7 +1490,7 @@ final class SummitLocationService return $image; }); - Event::fire + Event::dispatch ( new LocationImageInserted ( @@ -1597,7 +1597,7 @@ final class SummitLocationService $location->recalculateImageOrder($image, intval($metadata['order'])); } - Event::fire + Event::dispatch ( new LocationImageUpdated ( @@ -1670,7 +1670,7 @@ final class SummitLocationService ); } - Event::fire + Event::dispatch ( new LocationImageDeleted ( @@ -1785,7 +1785,7 @@ final class SummitLocationService $reservation->setPaymentGatewayCartId($result['cart_id']); $reservation->setPaymentGatewayClientToken($result['client_token']); - Event::fire(new CreatedBookableRoomReservation($reservation->getId())); + Event::dispatch(new CreatedBookableRoomReservation($reservation->getId())); return $reservation; }); } diff --git a/app/Services/Model/Imp/SummitOrderService.php b/app/Services/Model/Imp/SummitOrderService.php index 242df195..3f0c5617 100644 --- a/app/Services/Model/Imp/SummitOrderService.php +++ b/app/Services/Model/Imp/SummitOrderService.php @@ -396,7 +396,7 @@ final class ReserveOrderTask extends AbstractTask // generate the key to access $order->generateHash(); $order->generateQRCode(); - Event::fire(new CreatedSummitRegistrationOrder($order->getId())); + Event::dispatch(new CreatedSummitRegistrationOrder($order->getId())); return ['order' => $order]; }); } @@ -900,18 +900,21 @@ final class SummitOrderService $owner = $this->tx_service->transaction(function () use ($owner, $payload) { if (is_null($owner)) return null; + Log::debug(sprintf("SummitOrderService::reserve trying to get member %s", $owner->getId())); + $owner = $this->member_repository->getByIdExclusiveLock($owner->getId()); if (empty($owner->getFirstName())) { - $owner->setFirstName($payload['owner_first_name']); + $owner->setFirstName(trim($payload['owner_first_name'])); } if (empty($owner->getLastName())) { - $owner->setLastName($payload['owner_last_name']); + $owner->setLastName(trim($payload['owner_last_name'])); } return $owner; }); + $state = Saga::start() ->addTask(new PreOrderValidationTask($summit, $payload, $this->tx_service)) ->addTask(new PreProcessReservationTask($payload)) @@ -965,7 +968,7 @@ final class SummitOrderService } // validation of zip code its only for paid events - if(!$order->isFree() && empty($order->getBillingAddressZipCode())) + if (!$order->isFree() && empty($order->getBillingAddressZipCode())) throw new ValidationException(sprintf("Zip Code is mandatory.")); $order->setConfirmed(); @@ -1257,7 +1260,8 @@ final class SummitOrderService * @return SummitOrder * @throws \Exception */ - public function reSendOrderEmail(int $order_id):SummitOrder { + public function reSendOrderEmail(int $order_id): SummitOrder + { return $this->tx_service->transaction(function () use ($order_id) { $order = $this->order_repository->getByIdExclusiveLock($order_id); @@ -1400,7 +1404,7 @@ final class SummitOrderService * @throws EntityNotFoundException * @throws ValidationException */ - public function cancelRequestRefundTicket(int $order_id,int $ticket_id): SummitAttendeeTicket + public function cancelRequestRefundTicket(int $order_id, int $ticket_id): SummitAttendeeTicket { return $this->tx_service->transaction(function () use ($order_id, $ticket_id) { @@ -1791,7 +1795,7 @@ final class SummitOrderService $attendee = $this->attendee_repository->getBySummitAndEmail($summit, trim($payload['owner_email'])); } - if(is_null($attendee) && isset($payload['attendee'])){ + if (is_null($attendee) && isset($payload['attendee'])) { $attendee = $payload['attendee']; } @@ -1800,14 +1804,14 @@ final class SummitOrderService Log::debug(sprintf("SummitOrderService::createOrderSingleTicket attendee is null")); //first name $first_name = isset($payload['owner_first_name']) ? trim($payload['owner_first_name']) : null; - if (empty($first_name) && !is_null($owner) && !empty($owner->getFirstName())) $first_name = $owner->getFirstName(); + if (empty($first_name) && !is_null($owner) && !is_null($owner->getFirstName())) $first_name = $owner->getFirstName(); if (empty($first_name)) { Log::warning("SummitOrderService::createOrderSingleTicket owner firstname is null"); throw new ValidationException("you must provide an owner_first_name or a valid owner_id"); } // surname $surname = isset($payload['owner_last_name']) ? trim($payload['owner_last_name']) : null; - if (empty($surname) && !is_null($owner) && !empty($owner->getLastName())) $surname = $owner->getLastName(); + if (empty($surname) && !is_null($owner) && !is_null($owner->getLastName())) $surname = $owner->getLastName(); if (empty($surname)) { Log::warning("SummitOrderService::createOrderSingleTicket owner surname is null"); throw new ValidationException("you must provide an owner_last_name or a valid owner_id"); @@ -1946,7 +1950,7 @@ final class SummitOrderService $summit->removeOrder($order); - Event::fire(new OrderDeleted($order->getId(), $summit->getId(), $tickets_to_return, $promo_codes_to_return)); + Event::dispatch(new OrderDeleted($order->getId(), $summit->getId(), $tickets_to_return, $promo_codes_to_return)); }); } @@ -2591,7 +2595,7 @@ final class SummitOrderService } } - if(!is_null($attendee)) { + if (!is_null($attendee)) { // update it SummitAttendeeFactory::populate($summit, $attendee, $payload, !empty($email) ? $this->member_repository->getByEmail($email) : null); $attendee->addTicket($ticket); @@ -2684,7 +2688,7 @@ final class SummitOrderService } } - if(!is_null($attendee)) { + if (!is_null($attendee)) { // update it SummitAttendeeFactory::populate($summit, $attendee, $payload, !empty($email) ? $this->member_repository->getByEmail($email) : null); $attendee->updateStatus(); @@ -2772,7 +2776,7 @@ final class SummitOrderService $csv_data = Storage::disk('local')->get($filename); - $summit = $this->tx_service->transaction(function () use($summit_id) { + $summit = $this->tx_service->transaction(function () use ($summit_id) { $summit = $this->summit_repository->getById($summit_id); if (is_null($summit) || !$summit instanceof Summit) throw new EntityNotFoundException(sprintf("summit %s does not exists.", $summit_id)); @@ -2850,7 +2854,7 @@ final class SummitOrderService } } - if(!is_null($attendee)) { + if (!is_null($attendee)) { if (is_null($ticket)) { Log::debug(sprintf("SummitOrderService::processTicketData ticket is null, trying to create a new one")); @@ -2983,7 +2987,7 @@ final class SummitOrderService } Log::debug(sprintf("SummitOrderService::processTicketData - ticket %s (%s) - trying to add new features to ticket badge (%s)", $ticket->getId(), $ticket->getNumber(), $feature_name)); $feature = $summit->getFeatureTypeByName(trim($feature_name)); - if (is_null($feature)){ + if (is_null($feature)) { Log::warning(sprintf("SummitOrderService::processTicketData feature %s does not exist on summit %s", $feature, $summit->getId())); continue; } @@ -3083,7 +3087,7 @@ final class SummitOrderService } foreach ($order->getTickets() as $ticket) { try { - if(!$ticket->isActive()){ + if (!$ticket->isActive()) { Log::warning(sprintf("SummitOrderService::processSummitOrderReminders - summit %s order %s skipping ticket %s ( not active)", $summit->getId(), $order->getId(), $ticket->getId())); continue; } @@ -3121,7 +3125,7 @@ final class SummitOrderService $needs_action = false; foreach ($order->getTickets() as $ticket) { - if(!$ticket->isActive()){ + if (!$ticket->isActive()) { Log::warning(sprintf("SummitOrderService::processOrderReminder - order %s skipping ticket %s ( NOT ACTIVE ).", $order->getId(), $ticket->getId())); continue; } @@ -3216,6 +3220,7 @@ final class SummitOrderService } }); } + /** * @param Summit $summit * @param string $order_hash @@ -3300,7 +3305,7 @@ final class SummitOrderService Log::debug(sprintf("SummitOrderService::processOrderPaymentConfirmation - trying to get order id %s", $orderId)); $order = $this->order_repository->getByIdExclusiveLock($orderId); - if (is_null($order) || !$order instanceof SummitOrder){ + if (is_null($order) || !$order instanceof SummitOrder) { Log::warning(sprintf("SummitOrderService::processOrderPaymentConfirmation order %s not found.", $orderId)); } @@ -3369,15 +3374,15 @@ final class SummitOrderService // we have an user on idp $member = $this->member_service->registerExternalUser ( - new ExternalUserDTO - ( - $user['id'], - $user['email'], - $user['first_name'], - $user['last_name'], - boolval($user['active']), - boolval($user['email_verified']) - ) + new ExternalUserDTO + ( + $user['id'], + $user['email'], + $user['first_name'], + $user['last_name'], + boolval($user['active']), + boolval($user['email_verified']) + ) ); // add the order to newly created member $member->addSummitRegistrationOrder($order); @@ -3407,7 +3412,7 @@ final class SummitOrderService */ public function activateTicket(Summit $summit, int $order_id, int $ticket_id): SummitAttendeeTicket { - return $this->tx_service->transaction(function() use($summit, $order_id, $ticket_id){ + return $this->tx_service->transaction(function () use ($summit, $order_id, $ticket_id) { // lock and get the order $order = $this->order_repository->getByIdExclusiveLock($order_id); @@ -3430,7 +3435,7 @@ final class SummitOrderService */ public function deActivateTicket(Summit $summit, int $order_id, int $ticket_id): SummitAttendeeTicket { - return $this->tx_service->transaction(function() use($summit, $order_id, $ticket_id){ + return $this->tx_service->transaction(function () use ($summit, $order_id, $ticket_id) { // lock and get the order $order = $this->order_repository->getByIdExclusiveLock($order_id); diff --git a/app/Services/Model/Imp/SummitSelectedPresentationListService.php b/app/Services/Model/Imp/SummitSelectedPresentationListService.php index 1c0ab03c..fd2ca042 100644 --- a/app/Services/Model/Imp/SummitSelectedPresentationListService.php +++ b/app/Services/Model/Imp/SummitSelectedPresentationListService.php @@ -219,9 +219,7 @@ final class SummitSelectedPresentationListService } if ($selection_list->isGroup()){ - $hash = $payload['hash'] ?? ""; - if(!$selection_list->compareHash(trim($hash))) throw new ValidationException("The Teams List was modified by someone else. Please refresh the page."); } diff --git a/app/Services/Model/Imp/SummitService.php b/app/Services/Model/Imp/SummitService.php index f1894dde..862b25eb 100644 --- a/app/Services/Model/Imp/SummitService.php +++ b/app/Services/Model/Imp/SummitService.php @@ -35,7 +35,7 @@ use App\Permissions\IPermissionsManager; use App\Services\Model\AbstractService; use App\Services\Model\IFolderService; use App\Services\Model\IMemberService; -use CalDAVClient\Facade\Utils\ICalTimeZoneBuilder; +use libs\utils\ICalTimeZoneBuilder; use DateInterval; use DateTime; use Doctrine\DBAL\Exception\UniqueConstraintViolationException; @@ -321,7 +321,7 @@ final class SummitService extends AbstractService implements ISummitService } }); - Event::fire(new MyScheduleAdd($member, $summit, $event_id)); + Event::dispatch(new MyScheduleAdd($member, $summit, $event_id)); } catch (UniqueConstraintViolationException $ex) { throw new ValidationException ( @@ -362,7 +362,7 @@ final class SummitService extends AbstractService implements ISummitService } }); - Event::fire(new MyScheduleRemove($member, $summit, $event_id)); + Event::dispatch(new MyScheduleRemove($member, $summit, $event_id)); } /** @@ -385,7 +385,7 @@ final class SummitService extends AbstractService implements ISummitService $member->addFavoriteSummitEvent($event); }); - Event::fire(new MyFavoritesAdd($member, $summit, $event_id)); + Event::dispatch(new MyFavoritesAdd($member, $summit, $event_id)); } catch (UniqueConstraintViolationException $ex) { throw new ValidationException ( @@ -409,7 +409,7 @@ final class SummitService extends AbstractService implements ISummitService $member->removeFavoriteSummitEvent($event); }); - Event::fire(new MyFavoritesRemove($member, $summit, $event_id)); + Event::dispatch(new MyFavoritesRemove($member, $summit, $event_id)); } /** @@ -1671,7 +1671,7 @@ final class SummitService extends AbstractService implements ISummitService $summit = SummitFactory::populate($summit, $data); - Event::fire(new SummitUpdated($summit_id)); + Event::dispatch(new SummitUpdated($summit_id)); return $summit; }); @@ -1703,7 +1703,7 @@ final class SummitService extends AbstractService implements ISummitService $summit->markAsDeleted(); $this->summit_repository->delete($summit); - Event::fire(new SummitDeleted($summit_id)); + Event::dispatch(new SummitDeleted($summit_id)); }); } @@ -2207,7 +2207,7 @@ final class SummitService extends AbstractService implements ISummitService return SummitRSVPFactory::build($event, $member, $data); }); - Event::fire(new RSVPCreated($rsvp)); + Event::dispatch(new RSVPCreated($rsvp)); return $rsvp; } @@ -2264,7 +2264,7 @@ final class SummitService extends AbstractService implements ISummitService $rsvp = SummitRSVPFactory::populate($rsvp, $event, $member, $data); - Event::fire(new RSVPUpdated($rsvp)); + Event::dispatch(new RSVPUpdated($rsvp)); return $rsvp; }); diff --git a/app/Services/Model/Imp/SummitTicketTypeService.php b/app/Services/Model/Imp/SummitTicketTypeService.php index 580deb13..2949920e 100644 --- a/app/Services/Model/Imp/SummitTicketTypeService.php +++ b/app/Services/Model/Imp/SummitTicketTypeService.php @@ -134,7 +134,7 @@ final class SummitTicketTypeService return $ticket_type; }); - Event::fire + Event::dispatch ( new SummitTicketTypeInserted ( @@ -217,7 +217,7 @@ final class SummitTicketTypeService $ticket_type = SummitTicketTypeFactory::populate($ticket_type, self::getPromoCodeParams($summit, $data)); - Event::fire + Event::dispatch ( new SummitTicketTypeUpdated ( @@ -257,7 +257,7 @@ final class SummitTicketTypeService ); } - Event::fire + Event::dispatch ( new SummitTicketTypeDeleted ( @@ -321,7 +321,7 @@ final class SummitTicketTypeService } foreach ($res as $ticket_type){ - Event::fire + Event::dispatch ( new SummitTicketTypeInserted ( diff --git a/app/Services/Model/Imp/SummitTrackService.php b/app/Services/Model/Imp/SummitTrackService.php index 9b468d3c..d48930da 100644 --- a/app/Services/Model/Imp/SummitTrackService.php +++ b/app/Services/Model/Imp/SummitTrackService.php @@ -121,7 +121,7 @@ final class SummitTrackService return $track; }); - Event::fire(new TrackInserted($track->getSummitId(), $track->getId())); + Event::dispatch(new TrackInserted($track->getSummitId(), $track->getId())); return $track; } @@ -173,7 +173,7 @@ final class SummitTrackService } } - Event::fire(new TrackUpdated($track->getSummitId(), $track->getId())); + Event::dispatch(new TrackUpdated($track->getSummitId(), $track->getId())); return $track; @@ -208,7 +208,7 @@ final class SummitTrackService ); } - Event::fire(new TrackDeleted($track->getSummitId(), $track->getId())); + Event::dispatch(new TrackDeleted($track->getSummitId(), $track->getId())); $this->track_repository->delete($track); }); @@ -266,7 +266,7 @@ final class SummitTrackService }); foreach ($added_tracks as $track){ - Event::fire(new TrackInserted($track->getSummitId(), $track->getId())); + Event::dispatch(new TrackInserted($track->getSummitId(), $track->getId())); } return $added_tracks; diff --git a/app/Services/ModelServicesProvider.php b/app/Services/ModelServicesProvider.php index f5adadfd..8cdadc26 100644 --- a/app/Services/ModelServicesProvider.php +++ b/app/Services/ModelServicesProvider.php @@ -14,22 +14,14 @@ use App\Models\Foundation\Summit\Registration\BuildDefaultPaymentGatewayProfileStrategy; use App\Models\Foundation\Summit\Registration\IBuildDefaultPaymentGatewayProfileStrategy; -use App\Services\Apis\CalendarSync\ICalendarSyncRemoteFacadeFactory; use App\Services\Apis\ExternalRegistrationFeeds\ExternalRegistrationFeedFactory; use App\Services\Apis\ExternalRegistrationFeeds\IExternalRegistrationFeedFactory; use App\Services\Apis\ExternalScheduleFeeds\ExternalScheduleFeedFactory; use App\Services\Apis\ExternalScheduleFeeds\IExternalScheduleFeedFactory; -use App\Services\Model\AdminActionsCalendarSyncPreProcessor; -use App\Services\Model\AdminActionsCalendarSyncProcessingService; -use App\Services\Model\AdminScheduleWorkQueueManager; use App\Services\Model\AttendeeService; -use App\Services\Model\IAdminActionsCalendarSyncProcessingService; use App\Services\Model\IAttendeeService; -use App\Services\Model\ICalendarSyncWorkRequestPreProcessor; -use App\Services\Model\ICalendarSyncWorkRequestQueueManager; use App\Services\Model\ICompanyService; use App\Services\Model\ILocationService; -use App\Services\Model\IMemberActionsCalendarSyncProcessingService; use App\Services\Model\IMemberService; use App\Services\Model\Imp\CompanyService; use App\Services\Model\Imp\PaymentGatewayProfileService; @@ -86,17 +78,12 @@ use App\Services\Model\ISummitTrackTagGroupService; use App\Services\Model\ITagService; use App\Services\Model\ITrackChairService; use App\Services\Model\ITrackQuestionTemplateService; -use App\Services\Model\MemberActionsCalendarSyncPreProcessor; -use App\Services\Model\MemberActionsCalendarSyncProcessingService; -use App\Services\Model\MemberScheduleWorkQueueManager; use App\Services\Model\MemberService; use App\Services\Model\OrganizationService; use App\Services\Model\PresentationCategoryGroupService; use App\Services\Model\RSVPTemplateService; use App\Services\Model\ScheduleIngestionService; use App\Services\Model\SponsorshipTypeService; -use App\Services\Model\Strategies\CalendarSyncWorkRequestPreProcessorStrategyFactory; -use App\Services\Model\Strategies\ICalendarSyncWorkRequestPreProcessorStrategyFactory; use App\Services\Model\SummitAccessLevelTypeService; use App\Services\Model\SummitBadgeFeatureTypeService; use App\Services\Model\SummitBadgeTypeService; @@ -117,7 +104,6 @@ use App\Services\SummitRefundPolicyTypeService; use App\Services\SummitSponsorService; use Illuminate\Support\Facades\App; use Illuminate\Support\ServiceProvider; -use services\apis\CalendarSync\CalendarSyncRemoteFacadeFactory; use services\model\ChatTeamService; use services\model\IChatTeamService; use services\model\IPresentationService; @@ -158,50 +144,6 @@ final class ModelServicesProvider extends ServiceProvider AttendeeService::class ); - App::singleton - ( - ICalendarSyncRemoteFacadeFactory::class, - CalendarSyncRemoteFacadeFactory::class - ); - - // work request pre processors - - App::singleton - ( - ICalendarSyncWorkRequestPreProcessorStrategyFactory::class, - CalendarSyncWorkRequestPreProcessorStrategyFactory::class - ); - - App::when(MemberActionsCalendarSyncPreProcessor::class) - ->needs(ICalendarSyncWorkRequestQueueManager::class) - ->give(MemberScheduleWorkQueueManager::class); - - App::when(AdminActionsCalendarSyncPreProcessor::class) - ->needs(ICalendarSyncWorkRequestQueueManager::class) - ->give(AdminScheduleWorkQueueManager::class); - - // work request process services - - App::when(MemberActionsCalendarSyncProcessingService::class) - ->needs(ICalendarSyncWorkRequestPreProcessor::class) - ->give(MemberActionsCalendarSyncPreProcessor::class); - - App::singleton - ( - IMemberActionsCalendarSyncProcessingService::class, - MemberActionsCalendarSyncProcessingService::class - ); - - App::when(AdminActionsCalendarSyncProcessingService::class) - ->needs(ICalendarSyncWorkRequestPreProcessor::class) - ->give(AdminActionsCalendarSyncPreProcessor::class); - - App::singleton - ( - IAdminActionsCalendarSyncProcessingService::class, - AdminActionsCalendarSyncProcessingService::class - ); - App::singleton( IMemberService::class, MemberService::class @@ -456,13 +398,6 @@ final class ModelServicesProvider extends ServiceProvider IPresentationService::class, IChatTeamService::class, IAttendeeService::class, - ICalendarSyncRemoteFacadeFactory::class, - ICalendarSyncWorkRequestPreProcessorStrategyFactory::class, - ICalendarSyncWorkRequestQueueManager::class, - ICalendarSyncWorkRequestPreProcessor::class, - IMemberActionsCalendarSyncProcessingService::class, - ICalendarSyncWorkRequestPreProcessor::class, - IAdminActionsCalendarSyncProcessingService::class, IMemberService::class, ISummitPromoCodeService::class, ISummitEventTypeService::class, diff --git a/bindep.txt b/bindep.txt index aee48ba1..16be3c76 100644 --- a/bindep.txt +++ b/bindep.txt @@ -1,22 +1,24 @@ -php7.2 [platform:dpkg] +php7.4 [platform:dpkg] -php7.2-cli [platform:dpkg] +php7.4-cli [platform:dpkg] -php7.2-common [platform:dpkg] +php7.4-common [platform:dpkg] -php7.2-curl [platform:dpkg] +php7.4-curl [platform:dpkg] -php7.2-gd [platform:dpkg] +php7.4-gd [platform:dpkg] -php7.2-json [platform:dpkg] +php7.4-json [platform:dpkg] -php7.2-mysqlnd [platform:dpkg] +php7.4-mysqlnd [platform:dpkg] -php7.2-xml [platform:dpkg] +php7.4-xml [platform:dpkg] -php7.2-mbstring [platform:dpkg] +php7.4-mbstring [platform:dpkg] -php7.2-gmp [platform:dpkg] +php7.4-gmp [platform:dpkg] -php7.2-ssh2 [platform:dpkg] +php7.4-ssh2 [platform:dpkg] + +php7.4-imagick [platform:dpkg] diff --git a/clear_logs.sh b/clear_logs.sh index a8e1de13..25b49da8 100755 --- a/clear_logs.sh +++ b/clear_logs.sh @@ -1,2 +1,2 @@ -#!/usr/bin/env bash +#!/usr/bin/bash sudo rm -R storage/logs/* diff --git a/composer.json b/composer.json index 1c4c4965..1084d0c8 100644 --- a/composer.json +++ b/composer.json @@ -14,50 +14,52 @@ } ], "require": { - "php": "^7.1.3", + "php": "^7.3|^8.0", "ext-gd": "*", "ext-imagick": "*", "ext-json": "*", "ext-pdo": "*", + "beberlei/doctrineextensions": "1.3.*", "behat/transliterator": "^1.2", "cocur/slugify": "^2.3", - "doctrine/orm": "2.6.4", - "doctrine/persistence": "1.1.1", + "eluceo/ical": "^0.15.0", "ezyang/htmlpurifier": "4.7.0", - "fideloper/proxy": "^4.0", + "fideloper/proxy": "^4.4", + "fruitcake/laravel-cors": "^2.0", "glenscott/url-normalizer": "^1.4", "google/apiclient": "^2.2", - "guzzlehttp/guzzle": "^7", - "laravel-doctrine/extensions": "1.0.*", - "laravel-doctrine/migrations": "^1.2", - "laravel-doctrine/orm": "1.4.*", - "laravel/framework": "5.6.*", - "laravel/tinker": "^1.0", + "guzzlehttp/guzzle": "^7.0.1", + "laravel-doctrine/extensions": "1.4.*", + "laravel-doctrine/migrations": "2.3.*", + "laravel-doctrine/orm": "1.7.*", + "laravel/framework": "^8.12", + "laravel/helpers": "^1.4", + "laravel/tinker": "^2.5", "league/csv": "^9.6", + "league/flysystem-aws-s3-v3": "^1.0.29", "league/oauth2-client": "^2.4", - "muxinc/mux-php": "^0.9.0", - "php-amqplib/php-amqplib": "^2.11", - "php-opencloud/openstack": "dev-master", + "muxinc/mux-php": "0.9.0", + "php-opencloud/openstack": "dev-feature/guzzle_7_x", "pion/laravel-chunk-upload": "^1.4", - "predis/predis": "1.0.*", - "s-ichikawa/laravel-sendgrid-driver": "^2.0", + "predis/predis": "v1.1.6", + "s-ichikawa/laravel-sendgrid-driver": "~3.0", "simplesoftwareio/simple-qrcode": "^2.0", "sokil/php-isocodes": "^3.0", "spatie/flysystem-dropbox": "^1.2", - "spatie/laravel-cors": "^1.6", - "stripe/stripe-php": "^6.37", - "symfony/yaml": "4.2.2", + "stripe/stripe-php": "^7.75.0", + "symfony/yaml": "^5.0", "tecnickcom/tcpdf": "^6.2", - "league/flysystem-aws-s3-v3": "^1.0", - "eluceo/ical": "^0.15.0" + "vladimir-yuldashev/laravel-queue-rabbitmq": "v11.1.*" }, "require-dev": { "filp/whoops": "^2.0", - "fzaninotto/faker": "^1.4", - "mockery/mockery": "^1.0", - "nunomaduro/collision": "^2.0", - "phpunit/phpunit": "^7.0", - "laravel/browser-kit-testing": "4.0.2" + "laravel/browser-kit-testing": "6.2.*", + "facade/ignition": "^2.5", + "fakerphp/faker": "^1.9.1", + "laravel/sail": "^1.0.1", + "mockery/mockery": "^1.4.2", + "nunomaduro/collision": "^5.0", + "phpunit/phpunit": "^9.3.3" }, "suggest":{ "lib-openssl": "Required to use AES algorithms (except AES GCM)", @@ -66,7 +68,7 @@ }, "autoload": { "classmap": [ - "database/seeds", + "database/seeders", "database/factories", "database", "app", @@ -79,7 +81,9 @@ }, "autoload-dev": { "psr-4": { - "Tests\\": "tests/" + "Tests\\": "tests/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" } }, "extra": { diff --git a/composer.lock b/composer.lock index 150929c6..91870ab6 100644 --- a/composer.lock +++ b/composer.lock @@ -1,23 +1,79 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5c278ba8a545150643c1d55aa6a8f570", + "content-hash": "783ede669e576a2bb4206dbf8144c2e3", "packages": [ { - "name": "aws/aws-sdk-php", - "version": "3.185.2", + "name": "asm89/stack-cors", + "version": "v2.0.3", "source": { "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "0e6ece3f9c4ab26bb20183c697fd36e1d55c1053" + "url": "https://github.com/asm89/stack-cors.git", + "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0e6ece3f9c4ab26bb20183c697fd36e1d55c1053", - "reference": "0e6ece3f9c4ab26bb20183c697fd36e1d55c1053", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/9cb795bf30988e8c96dd3c40623c48a877bc6714", + "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.0.3" + }, + "time": "2021-03-11T06:42:03+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.184.7", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "d5d5fe5fdfca6c7a56f2f8364d09c3100d5c2149" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d5d5fe5fdfca6c7a56f2f8364d09c3100d5c2149", + "reference": "d5d5fe5fdfca6c7a56f2f8364d09c3100d5c2149", "shasum": "" }, "require": { @@ -89,7 +145,12 @@ "s3", "sdk" ], - "time": "2021-06-25T18:19:14+00:00" + "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.184.7" + }, + "time": "2021-06-21T18:37:16+00:00" }, { "name": "bacon/bacon-qr-code", @@ -135,8 +196,69 @@ ], "description": "BaconQrCode is a QR code generator for PHP.", "homepage": "https://github.com/Bacon/BaconQrCode", + "support": { + "issues": "https://github.com/Bacon/BaconQrCode/issues", + "source": "https://github.com/Bacon/BaconQrCode/tree/master" + }, "time": "2017-10-17T09:59:25+00:00" }, + { + "name": "beberlei/doctrineextensions", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/beberlei/DoctrineExtensions.git", + "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", + "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", + "shasum": "" + }, + "require": { + "doctrine/orm": "^2.7", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "nesbot/carbon": "*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "symfony/yaml": "^4.2 || ^5.0", + "zf1/zend-date": "^1.12", + "zf1/zend-registry": "^1.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "DoctrineExtensions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Steve Lacey", + "email": "steve@steve.ly" + } + ], + "description": "A set of extensions to Doctrine 2 that add support for additional query functions available in MySQL, Oracle, PostgreSQL and SQLite.", + "keywords": [ + "database", + "doctrine", + "orm" + ], + "support": { + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" + }, + "time": "2020-11-29T07:37:23+00:00" + }, { "name": "behat/transliterator", "version": "v1.3.0", @@ -180,8 +302,68 @@ "slug", "transliterator" ], + "support": { + "issues": "https://github.com/Behat/Transliterator/issues", + "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" + }, "time": "2020-01-14T16:39:13+00:00" }, + { + "name": "brick/math", + "version": "0.9.2", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", + "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-01-20T22:51:39+00:00" + }, { "name": "cocur/slugify", "version": "v2.5", @@ -244,40 +426,84 @@ "slug", "slugify" ], + "support": { + "issues": "https://github.com/cocur/slugify/issues", + "source": "https://github.com/cocur/slugify/tree/master" + }, "time": "2017-03-23T21:52:55+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", + "name": "composer/package-versions-deprecated", + "version": "1.11.99.2", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c6522afe5540d5fc46675043d3ed5a45a740b27c", + "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c", "shasum": "" }, "require": { - "php": ">=5.3.2" + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" }, "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" + "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "implementation of xdg base directory specification for php", - "time": "2019-12-04T15:06:13+00:00" + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-05-24T07:46:03+00:00" }, { "name": "doctrine/annotations", @@ -345,6 +571,10 @@ "docblock", "parser" ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.1" + }, "time": "2021-05-16T18:07:53+00:00" }, { @@ -426,6 +656,24 @@ "redis", "xcache" ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/1.11.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], "time": "2021-05-25T09:01:55+00:00" }, { @@ -491,47 +739,40 @@ "iterators", "php" ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.6.7" + }, "time": "2020-07-27T17:53:49+00:00" }, { "name": "doctrine/common", - "version": "2.12.0", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6" + "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", + "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.1", - "doctrine/reflection": "^1.0", - "php": "^7.1" + "doctrine/persistence": "^2.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", + "doctrine/coding-standard": "^6.0 || ^8.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" + "symfony/phpunit-bridge": "^4.0.5", + "vimeo/psalm": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -567,14 +808,32 @@ "email": "ocramius@gmail.com" } ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ "common", "doctrine", "php" ], - "time": "2020-01-10T15:49:25+00:00" + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.1.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", + "type": "tidelift" + } + ], + "time": "2021-02-10T20:18:51+00:00" }, { "name": "doctrine/dbal", @@ -664,6 +923,24 @@ "sqlserver", "sqlsrv" ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/2.13.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], "time": "2021-06-18T21:48:39+00:00" }, { @@ -703,6 +980,10 @@ ], "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + }, "time": "2021-03-21T12:59:47+00:00" }, { @@ -779,6 +1060,24 @@ "event system", "events" ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], "time": "2020-05-29T18:28:51+00:00" }, { @@ -857,6 +1156,24 @@ "uppercase", "words" ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/1.4.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], "time": "2021-04-16T17:34:40+00:00" }, { @@ -908,6 +1225,24 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], "time": "2020-11-10T18:47:58+00:00" }, { @@ -970,36 +1305,61 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], "time": "2020-05-25T17:44:05+00:00" }, { "name": "doctrine/migrations", - "version": "v1.8.1", + "version": "2.3.3", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6" + "reference": "c4c46f7064f6e7795bd7f26549579918b46790fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6", - "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/c4c46f7064f6e7795bd7f26549579918b46790fa", + "reference": "c4c46f7064f6e7795bd7f26549579918b46790fa", "shasum": "" }, "require": { - "doctrine/dbal": "~2.6", - "ocramius/proxy-manager": "^1.0|^2.0", - "php": "^7.1", - "symfony/console": "~3.3|^4.0" + "composer/package-versions-deprecated": "^1.8", + "doctrine/dbal": "^2.9", + "friendsofphp/proxy-manager-lts": "^1.0", + "php": "^7.1 || ^8.0", + "symfony/console": "^3.4||^4.4.16||^5.0", + "symfony/stopwatch": "^3.4||^4.0||^5.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "doctrine/orm": "~2.5", - "jdorn/sql-formatter": "~1.1", + "doctrine/coding-standard": "^8.2", + "doctrine/orm": "^2.6", + "ext-pdo_sqlite": "*", + "jdorn/sql-formatter": "^1.1", "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "~7.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/yaml": "~3.3|^4.0" + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/process": "^3.4||^4.0||^5.0", + "symfony/yaml": "^3.4||^4.0||^5.0" }, "suggest": { "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1011,12 +1371,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "v1.8.x-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations", "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" } }, @@ -1038,56 +1397,83 @@ "email": "contact@mikesimonson.com" } ], - "description": "Database Schema migrations using Doctrine DBAL", + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", "homepage": "https://www.doctrine-project.org/projects/migrations.html", "keywords": [ "database", - "migrations" + "dbal", + "migrations", + "php" ], - "time": "2018-06-06T21:00:30+00:00" + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/2.3.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2021-03-14T10:22:48+00:00" }, { "name": "doctrine/orm", - "version": "v2.6.4", + "version": "2.9.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43" + "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43", - "reference": "b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43", + "url": "https://api.github.com/repos/doctrine/orm/zipball/82e77cf5089a1303733f75f0f0ed01be3ab9ec22", + "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22", "shasum": "" }, "require": { - "doctrine/annotations": "~1.5", - "doctrine/cache": "~1.6", - "doctrine/collections": "^1.4", - "doctrine/common": "^2.7.1", - "doctrine/dbal": "^2.6", - "doctrine/instantiator": "~1.1", + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.13", + "doctrine/cache": "^1.11.3|^2.0.3", + "doctrine/collections": "^1.5", + "doctrine/common": "^3.0.3", + "doctrine/dbal": "^2.13.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.1", + "doctrine/inflector": "^1.4|^2.0", + "doctrine/instantiator": "^1.3", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^2.2", "ext-pdo": "*", - "php": "^7.1", - "symfony/console": "~3.0|~4.0" + "php": "^7.1|^8.0", + "psr/cache": "^1 || ^2 || ^3", + "symfony/console": "^3.0|^4.0|^5.0|^6.0" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpunit/phpunit": "^7.5", - "symfony/yaml": "~3.4|~4.0" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^0.12.83", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "squizlabs/php_codesniffer": "3.6.0", + "symfony/cache": "^4.4|^5.2", + "symfony/yaml": "^3.4|^4.0|^5.0|^6.0", + "vimeo/psalm": "4.7.0" }, "suggest": { + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, "bin": [ "bin/doctrine" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\ORM\\": "lib/Doctrine/ORM" @@ -1120,52 +1506,57 @@ } ], "description": "Object-Relational-Mapper for PHP", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org/projects/orm.html", "keywords": [ "database", "orm" ], - "time": "2019-09-20T14:30:26+00:00" + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.9.3" + }, + "time": "2021-06-13T10:29:22+00:00" }, { "name": "doctrine/persistence", - "version": "1.1.1", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48" + "reference": "d138f3ab5f761055cab1054070377cfd3222e368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/3da7c9d125591ca83944f477e65ed3d7b4617c48", - "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/d138f3ab5f761055cab1054070377cfd3222e368", + "reference": "d138f3ab5f761055cab1054070377cfd3222e368", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", + "doctrine/cache": "^1.11 || ^2.0", "doctrine/collections": "^1.0", + "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.0", - "php": "^7.1" + "php": "^7.1 || ^8.0", + "psr/cache": "^1.0|^2.0|^3.0" }, "conflict": { "doctrine/common": "<2.10@dev" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpstan/phpstan": "^0.8", - "phpunit/phpunit": "^7.0" + "composer/package-versions-deprecated": "^1.11", + "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/common": "^3.0", + "phpstan/phpstan": "0.12.84", + "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", + "symfony/cache": "^4.4|^5.0", + "vimeo/psalm": "4.7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "lib/Doctrine/Common", + "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -1173,6 +1564,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -1181,10 +1576,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -1207,113 +1598,40 @@ "orm", "persistence" ], - "time": "2019-04-23T08:28:24+00:00" - }, - { - "name": "doctrine/reflection", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/2.2.1" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.2.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0 || ^0.12.20", - "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", - "phpunit/phpunit": "^7.5 || ^9.1.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection", - "static" - ], - "abandoned": "roave/better-reflection", - "time": "2020-10-27T21:46:55+00:00" + "time": "2021-05-19T07:07:01+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.1", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2" + "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/65b2d8ee1f10915efb3b55597da3404f096acba2", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", + "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", "shasum": "" }, "require": { - "php": "^7.0|^8.0" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.7.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^6.4|^7.0|^8.0|^9.0" + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-webmozart-assert": "^0.12.7", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -1324,11 +1642,6 @@ "MIT" ], "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, { "name": "Chris Tankersley", "email": "chris@ctankersley.com", @@ -1340,31 +1653,41 @@ "cron", "schedule" ], - "time": "2020-10-13T00:52:37+00:00" + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2020-11-24T19:55:57+00:00" }, { "name": "egulias/email-validator", - "version": "3.1.1", + "version": "2.1.25", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", - "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1372,7 +1695,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -1398,7 +1721,17 @@ "validation", "validator" ], - "time": "2021-04-01T18:37:14+00:00" + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-12-29T14:50:06+00:00" }, { "name": "eluceo/ical", @@ -1449,54 +1782,12 @@ "ics", "php calendar" ], + "support": { + "issues": "https://github.com/markuspoerschke/iCal/issues", + "source": "https://github.com/markuspoerschke/iCal" + }, "time": "2019-08-06T20:33:43+00:00" }, - { - "name": "erusev/parsedown", - "version": "1.7.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2019-12-30T22:54:17+00:00" - }, { "name": "ezyang/htmlpurifier", "version": "v4.7.0", @@ -1539,6 +1830,10 @@ "keywords": [ "html" ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.7.0" + }, "time": "2015-08-05T01:03:42+00:00" }, { @@ -1593,20 +1888,24 @@ "proxy", "trusted proxy" ], + "support": { + "issues": "https://github.com/fideloper/TrustedProxy/issues", + "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.1" + }, "time": "2020-10-22T13:48:01+00:00" }, { "name": "firebase/php-jwt", - "version": "v5.4.0", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "d2113d9b2e0e349796e72d2a63cf9319100382d2" + "reference": "3c2d70f2e64e2922345e89f2ceae47d2463faae1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d2113d9b2e0e349796e72d2a63cf9319100382d2", - "reference": "d2113d9b2e0e349796e72d2a63cf9319100382d2", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/3c2d70f2e64e2922345e89f2ceae47d2463faae1", + "reference": "3c2d70f2e64e2922345e89f2ceae47d2463faae1", "shasum": "" }, "require": { @@ -1615,9 +1914,6 @@ "require-dev": { "phpunit/phpunit": ">=4.8 <=9" }, - "suggest": { - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" - }, "type": "library", "autoload": { "psr-4": { @@ -1646,7 +1942,170 @@ "jwt", "php" ], - "time": "2021-06-23T19:00:23+00:00" + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v5.3.0" + }, + "time": "2021-05-20T17:37:02+00:00" + }, + { + "name": "friendsofphp/proxy-manager-lts", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", + "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", + "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "shasum": "" + }, + "require": { + "laminas/laminas-code": "~3.4.1|^4.0", + "php": ">=7.1", + "symfony/filesystem": "^4.4.17|^5.0|^6.0" + }, + "conflict": { + "laminas/laminas-stdlib": "<3.2.1", + "zendframework/zend-stdlib": "<3.2.1" + }, + "replace": { + "ocramius/proxy-manager": "^2.1" + }, + "require-dev": { + "ext-phar": "*", + "symfony/phpunit-bridge": "^5.2|^6.0" + }, + "type": "library", + "extra": { + "thanks": { + "name": "ocramius/proxy-manager", + "url": "https://github.com/Ocramius/ProxyManager" + } + }, + "autoload": { + "psr-4": { + "ProxyManager\\": "src/ProxyManager" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.io/" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + } + ], + "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", + "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "support": { + "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", + "type": "tidelift" + } + ], + "time": "2021-05-22T16:11:15+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/a8ccedc7ca95189ead0e407c43b530dc17791d6a", + "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2", + "symfony/http-foundation": "^4|^5", + "symfony/http-kernel": "^4.3.4|^5" + }, + "require-dev": { + "laravel/framework": "^6|^7|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.4" + }, + "funding": [ + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2021-04-26T11:24:25+00:00" }, { "name": "glenscott/url-normalizer", @@ -1683,25 +2142,29 @@ } ], "description": "Syntax based normalization of URL's", + "support": { + "issues": "https://github.com/glenscott/url-normalizer/issues", + "source": "https://github.com/glenscott/url-normalizer/tree/master" + }, "time": "2015-06-11T16:06:02+00:00" }, { "name": "google/apiclient", - "version": "v2.10.1", + "version": "v2.9.2", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client.git", - "reference": "11871e94006ce7a419bb6124d51b6f9ace3f679b" + "reference": "e9ef4c26a044b8d39a46bcf296be795fe24a1849" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/11871e94006ce7a419bb6124d51b6f9ace3f679b", - "reference": "11871e94006ce7a419bb6124d51b6f9ace3f679b", + "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/e9ef4c26a044b8d39a46bcf296be795fe24a1849", + "reference": "e9ef4c26a044b8d39a46bcf296be795fe24a1849", "shasum": "" }, "require": { "firebase/php-jwt": "~2.0||~3.0||~4.0||~5.0", - "google/apiclient-services": "~0.200", + "google/apiclient-services": "~0.13", "google/auth": "^1.10", "guzzlehttp/guzzle": "~5.3.3||~6.0||~7.0", "guzzlehttp/psr7": "^1.2", @@ -1748,20 +2211,24 @@ "keywords": [ "google" ], - "time": "2021-06-25T14:25:44+00:00" + "support": { + "issues": "https://github.com/googleapis/google-api-php-client/issues", + "source": "https://github.com/googleapis/google-api-php-client/tree/v2.9.2" + }, + "time": "2021-06-09T22:15:08+00:00" }, { "name": "google/apiclient-services", - "version": "v0.201.1", + "version": "v0.201.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "ee1072221acf7c32e3de9b18e11fec3ab23ec38f" + "reference": "0375af405757b36f3bcc82e19d7daf61e0b4cfd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/ee1072221acf7c32e3de9b18e11fec3ab23ec38f", - "reference": "ee1072221acf7c32e3de9b18e11fec3ab23ec38f", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/0375af405757b36f3bcc82e19d7daf61e0b4cfd8", + "reference": "0375af405757b36f3bcc82e19d7daf61e0b4cfd8", "shasum": "" }, "require": { @@ -1788,7 +2255,11 @@ "keywords": [ "google" ], - "time": "2021-06-27T11:20:22+00:00" + "support": { + "issues": "https://github.com/googleapis/google-api-php-client-services/issues", + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.201.0" + }, + "time": "2021-06-18T15:00:35+00:00" }, { "name": "google/auth", @@ -1840,6 +2311,11 @@ "google", "oauth2" ], + "support": { + "docs": "https://googleapis.github.io/google-auth-library-php/master/", + "issues": "https://github.com/googleapis/google-auth-library-php/issues", + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.16.0" + }, "time": "2021-06-22T18:06:03+00:00" }, { @@ -1889,8 +2365,88 @@ "Guzzle-Factory", "http" ], + "support": { + "issues": "https://github.com/GrahamCampbell/Guzzle-Factory/issues", + "source": "https://github.com/GrahamCampbell/Guzzle-Factory/tree/v5.0.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/guzzle-factory", + "type": "tidelift" + } + ], "time": "2021-01-24T20:39:09+00:00" }, + { + "name": "graham-campbell/result-type", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb", + "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "phpoption/phpoption": "^1.7.3" + }, + "require-dev": { + "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2020-04-13T13:17:36+00:00" + }, { "name": "guzzlehttp/guzzle", "version": "7.3.0", @@ -1970,6 +2526,28 @@ "rest", "web service" ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://github.com/alexeyshockov", + "type": "github" + }, + { + "url": "https://github.com/gmponos", + "type": "github" + } + ], "time": "2021-03-23T11:33:13+00:00" }, { @@ -2021,6 +2599,10 @@ "keywords": [ "promise" ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.4.1" + }, "time": "2021-03-07T09:25:29+00:00" }, { @@ -2092,6 +2674,10 @@ "uri", "url" ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.2" + }, "time": "2021-04-26T09:17:50+00:00" }, { @@ -2145,98 +2731,22 @@ "guzzlehttp", "uri-template" ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/master" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/gmponos", + "type": "github" + } + ], "time": "2020-07-21T13:45:09+00:00" }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "abandoned": "php-parallel-lint/php-console-color", - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "abandoned": "php-parallel-lint/php-console-highlighter", - "time": "2018-09-29T18:48:56+00:00" - }, { "name": "justinrainbow/json-schema", "version": "5.2.10", @@ -2301,85 +2811,111 @@ "json", "schema" ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + }, "time": "2020-05-27T16:41:55+00:00" }, { - "name": "kylekatarnls/update-helper", - "version": "1.2.1", + "name": "laminas/laminas-code", + "version": "4.4.0", "source": { "type": "git", - "url": "https://github.com/kylekatarnls/update-helper.git", - "reference": "429be50660ed8a196e0798e5939760f168ec8ce9" + "url": "https://github.com/laminas/laminas-code.git", + "reference": "2b0bb59ade31a045fd3ff0097dc558bb896f6596" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9", - "reference": "429be50660ed8a196e0798e5939760f168ec8ce9", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/2b0bb59ade31a045fd3ff0097dc558bb896f6596", + "reference": "2b0bb59ade31a045fd3ff0097dc558bb896f6596", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": ">=5.3.0" + "php": "^7.4 || ~8.0.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0" }, "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "composer/composer": "2.0.x-dev || ^2.0.0-dev", - "phpunit/phpunit": ">=4.8.35 <6.0" + "doctrine/annotations": "^1.10.4", + "ext-phar": "*", + "laminas/laminas-coding-standard": "^2.1.4", + "laminas/laminas-stdlib": "^3.3.0", + "phpunit/phpunit": "^9.4.2", + "psalm/plugin-phpunit": "^0.14.0", + "vimeo/psalm": "^4.3.1" }, - "type": "composer-plugin", - "extra": { - "class": "UpdateHelper\\ComposerPlugin" + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "laminas/laminas-stdlib": "Laminas\\Stdlib component", + "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" }, + "type": "library", "autoload": { - "psr-0": { - "UpdateHelper\\": "src/" + "psr-4": { + "Laminas\\Code\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "authors": [ + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", + "homepage": "https://laminas.dev", + "keywords": [ + "code", + "laminas", + "laminasframework" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, + "funding": [ { - "name": "Kyle", - "email": "kylekatarnls@gmail.com" + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" } ], - "description": "Update helper", - "time": "2020-04-07T20:44:10+00:00" + "time": "2021-06-17T13:39:43+00:00" }, { "name": "laravel-doctrine/extensions", - "version": "1.0.14", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/laravel-doctrine/extensions.git", - "reference": "a2e7896100559ecc64504252dbc74ec18ad59813" + "reference": "db71ff95e2abce202240e647bbc881ee9cd622e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-doctrine/extensions/zipball/a2e7896100559ecc64504252dbc74ec18ad59813", - "reference": "a2e7896100559ecc64504252dbc74ec18ad59813", + "url": "https://api.github.com/repos/laravel-doctrine/extensions/zipball/db71ff95e2abce202240e647bbc881ee9cd622e0", + "reference": "db71ff95e2abce202240e647bbc881ee9cd622e0", "shasum": "" }, "require": { - "illuminate/auth": "~5.1", - "illuminate/config": "~5.1", - "illuminate/contracts": "~5.1", - "illuminate/http": "~5.1", - "illuminate/support": "~5.1", - "laravel-doctrine/orm": "~1.0", - "php": ">=5.5.9" + "illuminate/auth": "^6.0|^7.0|^8.0", + "illuminate/config": "^6.0|^7.0|^8.0", + "illuminate/contracts": "^6.0|^7.0|^8.0", + "illuminate/http": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "laravel-doctrine/orm": "^1", + "php": "^7.2.5|^8.0" }, "require-dev": { "beberlei/doctrineextensions": "^1.0", - "gedmo/doctrine-extensions": "^2.4", - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0" + "gedmo/doctrine-extensions": "^2.4|^3.0", + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^7.0 | ^8.3 | ^9.3" }, "suggest": { - "beberlei/DoctrineExtensions": "Query/Type Doctrine2 extensions (^1.0)", - "gedmo/doctrine-extensions": "Behavioral Doctrine2 extensions (^2.4)" + "beberlei/doctrineextensions": "Query/Type Doctrine2 extensions (^1.0)", + "gedmo/doctrine-extensions": "Behavioral Doctrine2 extensions" }, "type": "library", "autoload": { @@ -2397,7 +2933,7 @@ "email": "patrick@maatwebsite.nl" } ], - "description": "Doctrine extensions for Doctrine 2 and Laravel 5", + "description": "Doctrine extensions for Doctrine 2 and Laravel", "keywords": [ "beberlei", "data mapper", @@ -2407,33 +2943,37 @@ "laravel", "orm" ], - "time": "2018-03-01T17:07:28+00:00" + "support": { + "issues": "https://github.com/laravel-doctrine/extensions/issues", + "source": "https://github.com/laravel-doctrine/extensions/tree/1.4.0" + }, + "time": "2021-02-01T06:48:25+00:00" }, { "name": "laravel-doctrine/migrations", - "version": "1.2.1", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/laravel-doctrine/migrations.git", - "reference": "78bb95cc4bd57c2a76f6003630e37a6f60904938" + "reference": "7c7130f3d5e76e3beaea9f6f676e1afd5ae4d5cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-doctrine/migrations/zipball/78bb95cc4bd57c2a76f6003630e37a6f60904938", - "reference": "78bb95cc4bd57c2a76f6003630e37a6f60904938", + "url": "https://api.github.com/repos/laravel-doctrine/migrations/zipball/7c7130f3d5e76e3beaea9f6f676e1afd5ae4d5cc", + "reference": "7c7130f3d5e76e3beaea9f6f676e1afd5ae4d5cc", "shasum": "" }, "require": { - "doctrine/migrations": "~1.8", - "illuminate/config": "~5.1", - "illuminate/console": "~5.1", - "illuminate/contracts": "~5.1", - "laravel-doctrine/orm": "~1.0", - "php": "^7.1" + "doctrine/migrations": "~2.2", + "illuminate/config": "^6.0|^7.0|^8.0", + "illuminate/console": "^6.0|^7.0|^8.0", + "illuminate/contracts": "^6.0|^7.0|^8.0", + "laravel-doctrine/orm": "^1", + "php": "^7.2.5|^8.0" }, "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0" + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^7.0 | ^8.3 | ^9.3" }, "type": "library", "extra": { @@ -2467,44 +3007,51 @@ "migrations", "orm" ], - "time": "2020-10-22T21:10:21+00:00" + "support": { + "issues": "https://github.com/laravel-doctrine/migrations/issues", + "source": "https://github.com/laravel-doctrine/migrations/tree/2.3.1" + }, + "time": "2021-01-31T09:45:58+00:00" }, { "name": "laravel-doctrine/orm", - "version": "1.4.18", + "version": "1.7.8", "source": { "type": "git", "url": "https://github.com/laravel-doctrine/orm.git", - "reference": "e3d8692c0c0f1fe1c180afc85e0fab5a185df879" + "reference": "4d9795b5e89543a261755d983a32a63252daa21d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-doctrine/orm/zipball/e3d8692c0c0f1fe1c180afc85e0fab5a185df879", - "reference": "e3d8692c0c0f1fe1c180afc85e0fab5a185df879", + "url": "https://api.github.com/repos/laravel-doctrine/orm/zipball/4d9795b5e89543a261755d983a32a63252daa21d", + "reference": "4d9795b5e89543a261755d983a32a63252daa21d", "shasum": "" }, "require": { - "doctrine/orm": "2.5.*|2.6.*", - "illuminate/auth": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/console": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/container": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/contracts": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/pagination": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/routing": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/validation": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/view": "5.5.*|5.6.*|5.7.*|5.8.*", - "php": ">=7.0", + "doctrine/cache": "^1", + "doctrine/inflector": "^1.4", + "doctrine/orm": "^2.6|^2.7|^2.8", + "doctrine/persistence": "^1.3.5|^2.0", + "illuminate/auth": "^8.0", + "illuminate/console": "^8.0", + "illuminate/container": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/pagination": "^8.0", + "illuminate/routing": "^8.0", + "illuminate/support": "^8.0", + "illuminate/validation": "^8.0", + "illuminate/view": "^8.0", + "php": "^7.3|^8.0", "symfony/serializer": "^2.7|^3.0|^4.0|^5.0" }, "require-dev": { - "barryvdh/laravel-debugbar": "~2.0|~3.0", - "illuminate/log": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/notifications": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/queue": "5.5.*|5.6.*|5.7.*|5.8.*", - "itsgoingd/clockwork": "~1.9", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "~5.0" + "barryvdh/laravel-debugbar": "~3.0", + "illuminate/log": "^8.0", + "illuminate/notifications": "^8.0", + "illuminate/queue": "^8.0", + "itsgoingd/clockwork": "~1.9|^5.0", + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^9.3" }, "suggest": { "fzaninotto/faker": "Required to use the entity factory builder (~1.4).", @@ -2553,55 +3100,74 @@ "laravel", "orm" ], - "time": "2020-05-17T10:22:40+00:00" + "support": { + "issues": "https://github.com/laravel-doctrine/orm/issues", + "source": "https://github.com/laravel-doctrine/orm/tree/1.7.8" + }, + "funding": [ + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2021-05-31T06:38:45+00:00" }, { "name": "laravel/framework", - "version": "v5.6.40", + "version": "v8.48.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "5ceadf91f13be89a3338c3d4166a4676272a23bf" + "reference": "014443366257e4fa34071882e2b04217274a3ec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/5ceadf91f13be89a3338c3d4166a4676272a23bf", - "reference": "5ceadf91f13be89a3338c3d4166a4676272a23bf", + "url": "https://api.github.com/repos/laravel/framework/zipball/014443366257e4fa34071882e2b04217274a3ec9", + "reference": "014443366257e4fa34071882e2b04217274a3ec9", "shasum": "" }, "require": { - "doctrine/inflector": "~1.1", - "dragonmantank/cron-expression": "~2.0", - "erusev/parsedown": "~1.7", + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^3.0.2", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "league/flysystem": "^1.0.8", - "monolog/monolog": "~1.12", - "nesbot/carbon": "1.26.*", - "php": "^7.1.3", - "psr/container": "~1.0", + "league/commonmark": "^1.3", + "league/flysystem": "^1.1", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.31", + "opis/closure": "^3.6", + "php": "^7.3|^8.0", + "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~4.0", - "symfony/debug": "~4.0", - "symfony/finder": "~4.0", - "symfony/http-foundation": "~4.0", - "symfony/http-kernel": "~4.0", - "symfony/process": "~4.0", - "symfony/routing": "~4.0", - "symfony/var-dumper": "~4.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "~2.2" + "ramsey/uuid": "^4.0", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^5.1.4", + "symfony/error-handler": "^5.1.4", + "symfony/finder": "^5.1.4", + "symfony/http-foundation": "^5.1.4", + "symfony/http-kernel": "^5.1.4", + "symfony/mime": "^5.1.4", + "symfony/process": "^5.1.4", + "symfony/routing": "^5.1.4", + "symfony/var-dumper": "^5.1.4", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.2", + "voku/portable-ascii": "^1.4.8" }, "conflict": { "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", "illuminate/bus": "self.version", "illuminate/cache": "self.version", + "illuminate/collections": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", "illuminate/container": "self.version", @@ -2614,6 +3180,7 @@ "illuminate/hashing": "self.version", "illuminate/http": "self.version", "illuminate/log": "self.version", + "illuminate/macroable": "self.version", "illuminate/mail": "self.version", "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", @@ -2623,57 +3190,72 @@ "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.6", - "filp/whoops": "^2.1.4", - "league/flysystem-cached-adapter": "~1.0", - "mockery/mockery": "~1.0", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.6.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~7.0", - "predis/predis": "^1.1.1", - "symfony/css-selector": "~4.0", - "symfony/dom-crawler": "~4.0" + "aws/aws-sdk-php": "^3.155", + "doctrine/dbal": "^2.6|^3.0", + "filp/whoops": "^2.8", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.4.2", + "orchestra/testbench-core": "^6.23", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "predis/predis": "^1.1.2", + "symfony/cache": "^5.1.4" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6|^3.0).", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~4.0).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~4.0).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.8).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.4.2).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.5.8|^9.3.3).", + "predis/predis": "Required to use the predis connector (^1.1.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "8.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { - "Illuminate\\": "src/Illuminate/" + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -2692,40 +3274,101 @@ "framework", "laravel" ], - "time": "2020-04-14T14:16:50+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-06-22T13:41:32+00:00" }, { - "name": "laravel/tinker", - "version": "v1.0.10", + "name": "laravel/helpers", + "version": "v1.4.1", "source": { "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" + "url": "https://github.com/laravel/helpers.git", + "reference": "febb10d8daaf86123825de2cb87f789a3371f0ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "url": "https://api.github.com/repos/laravel/helpers/zipball/febb10d8daaf86123825de2cb87f789a3371f0ac", + "reference": "febb10d8daaf86123825de2cb87f789a3371f0ac", "shasum": "" }, "require": { - "illuminate/console": "~5.1|^6.0", - "illuminate/contracts": "~5.1|^6.0", - "illuminate/support": "~5.1|^6.0", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" + "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0", + "php": "^7.1.3|^8.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Dries Vints", + "email": "dries.vints@gmail.com" + } + ], + "description": "Provides backwards compatibility for helpers in the latest Laravel release.", + "keywords": [ + "helpers", + "laravel" + ], + "support": { + "source": "https://github.com/laravel/helpers/tree/v1.4.1" + }, + "time": "2021-02-16T15:27:11+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.6.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "04ad32c1a3328081097a181875733fa51f402083" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/04ad32c1a3328081097a181875733fa51f402083", + "reference": "04ad32c1a3328081097a181875733fa51f402083", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0", + "illuminate/contracts": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4", + "symfony/var-dumper": "^4.3.4|^5.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -2755,26 +3398,131 @@ "laravel", "psysh" ], - "time": "2019-08-07T15:10:45+00:00" + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.6.1" + }, + "time": "2021-03-02T16:53:12+00:00" }, { - "name": "league/csv", - "version": "9.6.2", + "name": "league/commonmark", + "version": "1.6.4", "source": { "type": "git", - "url": "https://github.com/thephpleague/csv.git", - "reference": "f28da6e483bf979bac10e2add384c90ae9983e4e" + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "c3c8b7217c52572fb42aaf84211abccf75a151b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/f28da6e483bf979bac10e2add384c90ae9983e4e", - "reference": "f28da6e483bf979bac10e2add384c90ae9983e4e", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c3c8b7217c52572fb42aaf84211abccf75a151b2", + "reference": "c3c8b7217c52572fb42aaf84211abccf75a151b2", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "scrutinizer/ocular": "1.7.*" + }, + "require-dev": { + "cebe/markdown": "~1.0", + "commonmark/commonmark.js": "0.29.2", + "erusev/parsedown": "~1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "~1.4", + "mikehaertl/php-shellcommand": "^1.4", + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", + "scrutinizer/ocular": "^1.5", + "symfony/finder": "^4.2" + }, + "bin": [ + "bin/commonmark" + ], + "type": "library", + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", + "type": "custom" + }, + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://www.patreon.com/colinodell", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2021-06-19T20:08:14+00:00" + }, + { + "name": "league/csv", + "version": "9.7.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "0ec57e8264ec92565974ead0d1724cf1026e10c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/0ec57e8264ec92565974ead0d1724cf1026e10c1", + "reference": "0ec57e8264ec92565974ead0d1724cf1026e10c1", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": ">=7.2.5" + "php": "^7.3 || ^8.0" }, "require-dev": { "ext-curl": "*", @@ -2783,7 +3531,7 @@ "phpstan/phpstan": "^0.12.0", "phpstan/phpstan-phpunit": "^0.12.0", "phpstan/phpstan-strict-rules": "^0.12.0", - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.5" }, "suggest": { "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", @@ -2827,20 +3575,32 @@ "transform", "write" ], - "time": "2020-12-10T19:40:30+00:00" + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-04-17T16:32:08+00:00" }, { "name": "league/flysystem", - "version": "1.1.4", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32" + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f3ad69181b8afed2c9edf7be5a2918144ff4ea32", - "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a", + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a", "shasum": "" }, "require": { @@ -2856,6 +3616,7 @@ "phpunit/phpunit": "^8.5.8" }, "suggest": { + "ext-fileinfo": "Required for MimeType", "ext-ftp": "Allows you to use FTP server storage", "ext-openssl": "Allows you to use FTPS server storage", "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", @@ -2911,7 +3672,17 @@ "sftp", "storage" ], - "time": "2021-06-23T21:56:05+00:00" + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.x" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2020-08-23T07:39:11+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -2958,6 +3729,10 @@ } ], "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "support": { + "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.29" + }, "time": "2020-10-08T18:58:37+00:00" }, { @@ -3000,6 +3775,20 @@ } ], "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.7.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], "time": "2021-01-18T20:58:21+00:00" }, { @@ -3066,25 +3855,29 @@ "oauth2", "single sign on" ], + "support": { + "issues": "https://github.com/thephpleague/oauth2-client/issues", + "source": "https://github.com/thephpleague/oauth2-client/tree/2.6.0" + }, "time": "2020-10-28T02:03:40+00:00" }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084", + "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1" }, "provide": { "psr/log-implementation": "1.0.0" @@ -3092,29 +3885,39 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.6.1", "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <7.0.1", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -3128,17 +3931,31 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", "psr-3" ], - "time": "2021-05-28T08:32:12+00:00" + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-12-14T13:15:25+00:00" }, { "name": "mtdowling/jmespath.php", @@ -3195,6 +4012,10 @@ "json", "jsonpath" ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + }, "time": "2021-06-14T00:11:39+00:00" }, { @@ -3249,42 +4070,65 @@ "streaming", "video" ], + "support": { + "issues": "https://github.com/muxinc/mux-php/issues", + "source": "https://github.com/muxinc/mux-php/tree/0.9.0" + }, "time": "2021-03-17T18:06:14+00:00" }, { "name": "nesbot/carbon", - "version": "1.26.6", + "version": "2.49.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "c6820f814496d71da7498d423427e6193d1f57c9" + "reference": "93d9db91c0235c486875d22f1e08b50bdf3e6eee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/c6820f814496d71da7498d423427e6193d1f57c9", - "reference": "c6820f814496d71da7498d423427e6193d1f57c9", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/93d9db91c0235c486875d22f1e08b50bdf3e6eee", + "reference": "93d9db91c0235c486875d22f1e08b50bdf3e6eee", "shasum": "" }, "require": { - "kylekatarnls/update-helper": "^1.1", - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { - "composer/composer": "^1.2", - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54", + "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "squizlabs/php_codesniffer": "^3.4" }, "bin": [ - "bin/upgrade-carbon" + "bin/carbon" ], "type": "library", "extra": { - "update-helper": "Carbon\\Upgrade" + "branch-alias": { + "dev-master": "2.x-dev", + "dev-3.x": "3.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } }, "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3296,16 +4140,34 @@ "name": "Brian Nesbitt", "email": "brian@nesbot.com", "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" } ], - "description": "A simple API extension for DateTime.", + "description": "An API extension for DateTime that supports 281 different languages.", "homepage": "http://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], - "time": "2019-06-03T15:42:58+00:00" + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2021-06-02T07:31:40+00:00" }, { "name": "nikic/php-parser", @@ -3357,105 +4219,46 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.5" + }, "time": "2021-05-03T19:11:20+00:00" }, { - "name": "ocramius/package-versions", - "version": "1.4.2", + "name": "opis/closure", + "version": "3.6.2", "source": { "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d" + "url": "https://github.com/opis/closure.git", + "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", - "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", + "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6", + "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" + "php": "^5.4 || ^7.0 || ^8.0" }, "require-dev": { - "composer/composer": "^1.6.3", - "doctrine/coding-standard": "^5.0.1", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.5.17" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2019-11-15T16:17:10+00:00" - }, - { - "name": "ocramius/proxy-manager", - "version": "2.2.3", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "4d154742e31c35137d5374c998e8f86b54db2e2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/4d154742e31c35137d5374c998e8f86b54db2e2f", - "reference": "4d154742e31c35137d5374c998e8f86b54db2e2f", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.1.3", - "php": "^7.2.0", - "zendframework/zend-code": "^3.3.0" - }, - "require-dev": { - "couscous/couscous": "^1.6.1", - "ext-phar": "*", - "humbug/humbug": "1.0.0-RC.0@RC", - "nikic/php-parser": "^3.1.1", - "padraic/phpunit-accelerator": "dev-master@DEV", - "phpbench/phpbench": "^0.12.2", - "phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999", - "phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761", - "phpunit/phpunit": "^6.4.3", - "squizlabs/php_codesniffer": "^2.9.1" - }, - "suggest": { - "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", - "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", - "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", - "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.6.x-dev" } }, "autoload": { - "psr-0": { - "ProxyManager\\": "src" - } + "psr-4": { + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3463,21 +4266,29 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", - "homepage": "https://github.com/Ocramius/ProxyManager", + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" ], - "time": "2019-08-10T08:37:15+00:00" + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.2" + }, + "time": "2021-04-09T13:42:10+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -3539,6 +4350,11 @@ "hex2bin", "rfc4648" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, "time": "2020-12-06T15:14:20+00:00" }, { @@ -3584,6 +4400,11 @@ "pseudorandom", "random" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, "time": "2020-10-15T08:29:30+00:00" }, { @@ -3661,33 +4482,37 @@ "queue", "rabbitmq" ], + "support": { + "issues": "https://github.com/php-amqplib/php-amqplib/issues", + "source": "https://github.com/php-amqplib/php-amqplib/tree/v2.12.3" + }, "time": "2021-03-01T12:21:31+00:00" }, { "name": "php-opencloud/openstack", - "version": "dev-master", + "version": "dev-feature/guzzle_7_x", "source": { "type": "git", "url": "https://github.com/OpenStackweb/openstack.git", - "reference": "eafc3de006ad505355556c0d2f3c4af2c6b5a44e" + "reference": "3d1de1deb94c8ed805b2b08546b3c1b14935806c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OpenStackweb/openstack/zipball/eafc3de006ad505355556c0d2f3c4af2c6b5a44e", - "reference": "eafc3de006ad505355556c0d2f3c4af2c6b5a44e", + "url": "https://api.github.com/repos/OpenStackweb/openstack/zipball/3d1de1deb94c8ed805b2b08546b3c1b14935806c", + "reference": "3d1de1deb94c8ed805b2b08546b3c1b14935806c", "shasum": "" }, "require": { "guzzlehttp/guzzle": "^7.0", "guzzlehttp/uri-template": "0.2", "justinrainbow/json-schema": "^5.2", - "php": "^7.2.5|^8.0" + "php": "^7.2.5" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", + "friendsofphp/php-cs-fixer": "^2.13", + "jakub-onderka/php-parallel-lint": "^1.0", "php-coveralls/php-coveralls": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpunit/phpunit": "^8.0", + "phpunit/phpunit": "^6.5", "psr/log": "^1.0" }, "type": "library", @@ -3701,7 +4526,12 @@ "OpenStack\\": "src/" } }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "OpenStack\\Test\\": "tests/unit/", + "OpenStack\\Integration\\": "tests/integration/" + } + }, "license": [ "Apache-2.0" ], @@ -3720,12 +4550,84 @@ "description": "PHP SDK for OpenStack APIs. Supports BlockStorage, Compute, Identity, Images, Networking and Metric Gnocchi", "homepage": "https://github.com/php-opencloud/openstack", "keywords": [ - "Openstack", "api", + "openstack", "php", "sdk" ], - "time": "2021-04-02T15:01:50+00:00" + "support": { + "source": "https://github.com/OpenStackweb/openstack/tree/feature/guzzle_7_x" + }, + "time": "2021-02-17T14:36:26+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.7.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.7.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2020-07-20T17:29:33+00:00" }, { "name": "phpseclib/phpseclib", @@ -3818,6 +4720,24 @@ "x.509", "x509" ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.9" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], "time": "2021-06-14T06:54:45+00:00" }, { @@ -3871,26 +4791,31 @@ } ], "description": "Service for chunked upload with several js providers", + "support": { + "issues": "https://github.com/pionl/laravel-chunk-upload/issues", + "source": "https://github.com/pionl/laravel-chunk-upload/tree/v1.4.1" + }, "time": "2020-12-07T18:02:05+00:00" }, { "name": "predis/predis", - "version": "v1.0.4", + "version": "v1.1.6", "source": { "type": "git", "url": "https://github.com/predis/predis.git", - "reference": "9ead747663bb1b1ae017dfa0d152aca87792b42f" + "reference": "9930e933c67446962997b05201c69c2319bf26de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/predis/predis/zipball/9ead747663bb1b1ae017dfa0d152aca87792b42f", - "reference": "9ead747663bb1b1ae017dfa0d152aca87792b42f", + "url": "https://api.github.com/repos/predis/predis/zipball/9930e933c67446962997b05201c69c2319bf26de", + "reference": "9930e933c67446962997b05201c69c2319bf26de", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.3.9" }, "require-dev": { + "cweagans/composer-patches": "^1.6", "phpunit/phpunit": "~4.8" }, "suggest": { @@ -3898,6 +4823,18 @@ "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" }, "type": "library", + "extra": { + "composer-exit-on-patch-failure": true, + "patches": { + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "./tests/phpunit_mock_objects.patch" + }, + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "./tests/phpunit_php7.patch", + "Fix PHP 8 compatibility": "./tests/phpunit_php8.patch" + } + } + }, "autoload": { "psr-4": { "Predis\\": "src/" @@ -3911,17 +4848,33 @@ { "name": "Daniele Alessandri", "email": "suppakilla@gmail.com", - "homepage": "http://clorophilla.net" + "homepage": "http://clorophilla.net", + "role": "Creator & Maintainer" + }, + { + "name": "Till Krüss", + "homepage": "https://till.im", + "role": "Maintainer" } ], "description": "Flexible and feature-complete Redis client for PHP and HHVM", - "homepage": "http://github.com/nrk/predis", + "homepage": "http://github.com/predis/predis", "keywords": [ "nosql", "predis", "redis" ], - "time": "2016-05-30T15:25:52+00:00" + "support": { + "issues": "https://github.com/predis/predis/issues", + "source": "https://github.com/predis/predis/tree/v1.1.6" + }, + "funding": [ + { + "url": "https://github.com/sponsors/tillkruss", + "type": "github" + } + ], + "time": "2020-09-11T19:18:05+00:00" }, { "name": "psr/cache", @@ -3967,6 +4920,9 @@ "psr", "psr-6" ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, "time": "2016-08-06T20:24:11+00:00" }, { @@ -4011,8 +4967,62 @@ "container-interop", "psr" ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, "time": "2021-03-05T17:36:06+00:00" }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, { "name": "psr/http-client", "version": "1.0.1", @@ -4060,6 +5070,9 @@ "psr", "psr-18" ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, "time": "2020-06-29T06:28:15+00:00" }, { @@ -4110,6 +5123,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { @@ -4157,6 +5173,9 @@ "psr", "psr-3" ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, "time": "2021-05-03T11:20:27+00:00" }, { @@ -4205,36 +5224,36 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { "name": "psy/psysh", - "version": "v0.9.12", + "version": "v0.10.8", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" + "reference": "e4573f47750dd6c92dca5aee543fa77513cbd8d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e4573f47750dd6c92dca5aee543fa77513cbd8d3", + "reference": "e4573f47750dd6c92dca5aee543fa77513cbd8d3", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" + "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", + "php": "^8.0 || ^7.0 || ^5.5.9", + "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", + "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "hoa/console": "3.17.*" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -4249,7 +5268,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-main": "0.10.x-dev" } }, "autoload": { @@ -4279,7 +5298,11 @@ "interactive", "shell" ], - "time": "2019-12-06T14:19:43+00:00" + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.10.8" + }, + "time": "2021-04-10T16:23:39+00:00" }, { "name": "ralouphie/getallheaders", @@ -4319,57 +5342,147 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { - "name": "ramsey/uuid", - "version": "3.x-dev", + "name": "ramsey/collection", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "ec2f6b00414daacdd2c4fc97e87710fd1c3df409" + "url": "https://github.com/ramsey/collection.git", + "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/ec2f6b00414daacdd2c4fc97e87710fd1c3df409", - "reference": "ec2f6b00414daacdd2c4fc97e87710fd1c3df409", + "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", + "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", "shasum": "" }, "require": { + "php": "^7.2 || ^8" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP 7.2+ library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-01-21T17:40:04+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "cd4032040a750077205918c86049aa0f43d22947" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947", + "reference": "cd4032040a750077205918c86049aa0f43d22947", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "php": "^5.4 | ^7 | ^8", + "php": "^7.2 || ^8", + "ramsey/collection": "^1.0", "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", + "codeception/aspect-mock": "^3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", + "doctrine/annotations": "^1.8", + "goaop/framework": "^2", + "mockery/mockery": "^1.3", "moontoast/math": "^1.1", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" + "php-mock/php-mock-mockery": "^1.3", + "php-mock/php-mock-phpunit": "^2.5", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^0.17.1", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "psy/psysh": "^0.10.0", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "3.9.4" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -4384,52 +5497,51 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "homepage": "https://github.com/ramsey/uuid", "keywords": [ "guid", "identifier", "uuid" ], - "time": "2021-02-01T16:54:58+00:00" + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "rss": "https://github.com/ramsey/uuid/releases.atom", + "source": "https://github.com/ramsey/uuid" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + } + ], + "time": "2020-08-18T17:17:46+00:00" }, { "name": "s-ichikawa/laravel-sendgrid-driver", - "version": "2.1.2", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/s-ichikawa/laravel-sendgrid-driver.git", - "reference": "f5b763824768fab5602cba9066e9eb2d34252318" + "reference": "55cddf5288cde0fdd49083bba9fe5a2023c59d8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/s-ichikawa/laravel-sendgrid-driver/zipball/f5b763824768fab5602cba9066e9eb2d34252318", - "reference": "f5b763824768fab5602cba9066e9eb2d34252318", + "url": "https://api.github.com/repos/s-ichikawa/laravel-sendgrid-driver/zipball/55cddf5288cde0fdd49083bba9fe5a2023c59d8f", + "reference": "55cddf5288cde0fdd49083bba9fe5a2023c59d8f", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "~5.3|~6.2|~7.0", - "illuminate/mail": "~5.5|~6.0" + "guzzlehttp/guzzle": "^6.3 || ^7.0", + "illuminate/mail": ">=7.0", + "illuminate/support": ">=7.0" }, "require-dev": { - "illuminate/container": "~5.5|~6.0", - "illuminate/filesystem": "~5.5|~6.0", - "phpunit/phpunit": "~5.7" + "illuminate/container": ">=7.0", + "illuminate/filesystem": ">=7.0", + "laravel/helpers": "^1.2", + "phpunit/phpunit": "^8.5", + "vlucas/phpdotenv": "^4.1 || ^5.2" }, "suggest": { "s-ichikawa/sendgrid-api-builder": "support to build json for sendgrid api" @@ -4462,7 +5574,25 @@ "laravel", "sendgrid" ], - "time": "2021-01-06T01:39:36+00:00" + "support": { + "issues": "https://github.com/s-ichikawa/laravel-sendgrid-driver/issues", + "source": "https://github.com/s-ichikawa/laravel-sendgrid-driver/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/[user1", + "type": "github" + }, + { + "url": "https://github.com/s-ichikawa]# Replace with up to 4 GitHub Sponsors-enabled usernames e.g.", + "type": "github" + }, + { + "url": "https://github.com/user2", + "type": "github" + } + ], + "time": "2021-06-06T15:18:57+00:00" }, { "name": "simplesoftwareio/simple-qrcode", @@ -4523,6 +5653,10 @@ "qrcode", "wrapper" ], + "support": { + "issues": "https://github.com/SimpleSoftwareIO/simple-qrcode/issues", + "source": "https://github.com/SimpleSoftwareIO/simple-qrcode/tree/2.0.0" + }, "time": "2017-11-26T15:27:12+00:00" }, { @@ -4577,6 +5711,10 @@ } ], "description": "ISO country, subdivision, language, currency and script definitions and their translations. Based on pythons pycountry and Debian's iso-codes.", + "support": { + "issues": "https://github.com/sokil/php-isocodes/issues", + "source": "https://github.com/sokil/php-isocodes/tree/3.3.9" + }, "time": "2021-06-02T22:44:46+00:00" }, { @@ -4634,6 +5772,20 @@ "spatie", "v2" ], + "support": { + "issues": "https://github.com/spatie/dropbox-api/issues", + "source": "https://github.com/spatie/dropbox-api/tree/1.19.0" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], "time": "2021-06-18T06:34:17+00:00" }, { @@ -4686,93 +5838,38 @@ "spatie", "v2" ], + "support": { + "issues": "https://github.com/spatie/flysystem-dropbox/issues", + "source": "https://github.com/spatie/flysystem-dropbox/tree/1.2.3" + }, "time": "2020-11-28T22:17:09+00:00" }, - { - "name": "spatie/laravel-cors", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-cors.git", - "reference": "3ef534929531c609bc395610590b5bba204a4b44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-cors/zipball/3ef534929531c609bc395610590b5bba204a4b44", - "reference": "3ef534929531c609bc395610590b5bba204a4b44", - "shasum": "" - }, - "require": { - "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*|^6.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "orchestra/testbench": "3.5.*|3.6.*|3.7.*|3.8.*|^4.0", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\Cors\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Send CORS headers in a Laravel or Lumen application", - "homepage": "https://github.com/spatie/laravel-cors", - "keywords": [ - "ajax", - "api", - "cors", - "laravel-cors", - "request", - "spatie" - ], - "abandoned": "laravel/framework", - "time": "2021-06-10T21:37:38+00:00" - }, { "name": "stripe/stripe-php", - "version": "v6.43.1", + "version": "v7.85.0", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "42fcdaf99c44bb26937223f8eae1f263491d5ab8" + "reference": "c3bdde76ddb626b4f17fd746962104b0d917506a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/42fcdaf99c44bb26937223f8eae1f263491d5ab8", - "reference": "42fcdaf99c44bb26937223f8eae1f263491d5ab8", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/c3bdde76ddb626b4f17fd746962104b0d917506a", + "reference": "c3bdde76ddb626b4f17fd746962104b0d917506a", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.4.0" + "php": ">=5.6.0" }, "require-dev": { - "php-coveralls/php-coveralls": "1.*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0", - "symfony/process": "~2.8" + "friendsofphp/php-cs-fixer": "2.17.1", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^3.3", + "symfony/process": "~3.4" }, "type": "library", "extra": { @@ -4802,7 +5899,11 @@ "payment processing", "stripe" ], - "time": "2019-08-29T16:56:12+00:00" + "support": { + "issues": "https://github.com/stripe/stripe-php/issues", + "source": "https://github.com/stripe/stripe-php/tree/v7.85.0" + }, + "time": "2021-06-18T04:53:41+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -4863,46 +5964,63 @@ "mail", "mailer" ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.7" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], "time": "2021-03-09T12:30:35+00:00" }, { "name": "symfony/console", - "version": "v4.4.25", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a62acecdf5b50e314a4f305cd01b5282126f3095" + "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a62acecdf5b50e314a4f305cd01b5282126f3095", - "reference": "a62acecdf5b50e314a4f305cd01b5282126f3095", + "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1", + "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -4935,24 +6053,47 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "time": "2021-05-26T11:20:16+00:00" + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-12T09:42:48+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.25", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "c1e29de6dc893b130b45d20d8051efbb040560a9" + "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1e29de6dc893b130b45d20d8051efbb040560a9", - "reference": "c1e29de6dc893b130b45d20d8051efbb040560a9", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", + "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5" }, "type": "library", "autoload": { @@ -4983,59 +6124,24 @@ ], "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", - "time": "2021-05-26T17:39:37+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.25", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.3.0" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", - "time": "2021-05-26T17:39:37+00:00" + "time": "2021-05-26T17:40:38+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5085,30 +6191,47 @@ ], "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-23T23:28:01+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.25", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "310a756cec00d29d89a08518405aded046a54a8b" + "reference": "0e6768b8c0dcef26df087df2bbbaa143867a59b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/310a756cec00d29d89a08518405aded046a54a8b", - "reference": "310a756cec00d29d89a08518405aded046a54a8b", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/0e6768b8c0dcef26df087df2bbbaa143867a59b2", + "reference": "0e6768b8c0dcef26df087df2bbbaa143867a59b2", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", + "php": ">=7.2.5", + "psr/log": "^1.0", "symfony/polyfill-php80": "^1.15", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { + "symfony/deprecation-contracts": "^2.1", "symfony/http-kernel": "^4.4|^5.0", "symfony/serializer": "^4.4|^5.0" }, @@ -5137,42 +6260,61 @@ ], "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", - "time": "2021-05-26T17:39:37+00:00" + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T17:43:10+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce", + "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/stopwatch": "^4.4|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -5203,33 +6345,50 @@ ], "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "time": "2021-05-26T17:39:37+00:00" + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T17:43:10+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5265,24 +6424,103 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:19:58+00:00" + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-23T23:28:01+00:00" }, { - "name": "symfony/finder", - "version": "v4.4.25", + "name": "symfony/filesystem", + "version": "v5.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ed33314396d968a8936c95f5bd1b88bd3b3e94a3" + "url": "https://github.com/symfony/filesystem.git", + "reference": "348116319d7fb7d1faa781d26a48922428013eb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ed33314396d968a8936c95f5bd1b88bd3b3e94a3", - "reference": "ed33314396d968a8936c95f5bd1b88bd3b3e94a3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/348116319d7fb7d1faa781d26a48922428013eb2", + "reference": "348116319d7fb7d1faa781d26a48922428013eb2", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", + "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" }, "type": "library", "autoload": { @@ -5309,7 +6547,24 @@ ], "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "time": "2021-05-26T11:20:16+00:00" + "support": { + "source": "https://github.com/symfony/finder/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T12:52:38+00:00" }, { "name": "symfony/http-client-contracts", @@ -5370,31 +6625,53 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-04-11T23:07:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.25", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0c79d5a65ace4fe66e49702658c024a419d2438b" + "reference": "7b6dd714d95106b831aaa7f3c9c612ab886516bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0c79d5a65ace4fe66e49702658c024a419d2438b", - "reference": "0c79d5a65ace4fe66e49702658c024a419d2438b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7b6dd714d95106b831aaa7f3c9c612ab886516bd", + "reference": "7b6dd714d95106b831aaa7f3c9c612ab886516bd", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.15" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "autoload": { @@ -5421,61 +6698,86 @@ ], "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "time": "2021-05-26T11:20:16+00:00" + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-12T10:15:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.25", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "3795165596fe81a52296b78c9aae938d434069cc" + "reference": "e7021165d9dbfb4051296b8de827e92c8a7b5c87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3795165596fe81a52296b78c9aae938d434069cc", - "reference": "3795165596fe81a52296b78c9aae938d434069cc", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e7021165d9dbfb4051296b8de827e92c8a7b5c87", + "reference": "e7021165d9dbfb4051296b8de827e92c8a7b5c87", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -5508,7 +6810,24 @@ ], "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", - "time": "2021-06-01T07:12:08+00:00" + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-17T14:18:27+00:00" }, { "name": "symfony/mime", @@ -5574,6 +6893,23 @@ "mime", "mime-type" ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-06-09T10:58:01+00:00" }, { @@ -5636,6 +6972,23 @@ "polyfill", "portable" ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-19T12:13:01+00:00" }, { @@ -5699,8 +7052,106 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-05-27T09:27:20+00:00" }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", + "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T09:17:38+00:00" + }, { "name": "symfony/polyfill-intl-idn", "version": "v1.23.0", @@ -5769,6 +7220,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-05-27T09:27:20+00:00" }, { @@ -5836,6 +7304,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-19T12:13:01+00:00" }, { @@ -5899,6 +7384,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-05-27T09:27:20+00:00" }, { @@ -5958,6 +7460,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-05-27T09:17:38+00:00" }, { @@ -6020,6 +7539,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-19T12:13:01+00:00" }, { @@ -6086,24 +7622,42 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/process", - "version": "v4.4.25", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cd61e6dd273975c6625316de9d141ebd197f93c9" + "reference": "714b47f9196de61a196d86c4bad5f09201b307df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cd61e6dd273975c6625316de9d141ebd197f93c9", - "reference": "cd61e6dd273975c6625316de9d141ebd197f93c9", + "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df", + "reference": "714b47f9196de61a196d86c4bad5f09201b307df", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" }, "type": "library", "autoload": { @@ -6130,41 +7684,60 @@ ], "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "time": "2021-05-26T11:20:16+00:00" + "support": { + "source": "https://github.com/symfony/process/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-12T10:15:01+00:00" }, { "name": "symfony/routing", - "version": "v4.4.25", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "reference": "368e81376a8e049c37cb80ae87dbfbf411279199" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/symfony/routing/zipball/368e81376a8e049c37cb80ae87dbfbf411279199", + "reference": "368e81376a8e049c37cb80ae87dbfbf411279199", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12", "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.3", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", @@ -6201,55 +7774,81 @@ "uri", "url" ], - "time": "2021-05-26T17:39:37+00:00" + "support": { + "source": "https://github.com/symfony/routing/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T17:43:10+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.25", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "6db3eb4f1bb437cd3730f52353ba4b568acaddf5" + "reference": "96f6ff6582d1bf1bf08281b563a6c7c917efe6c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/6db3eb4f1bb437cd3730f52353ba4b568acaddf5", - "reference": "6db3eb4f1bb437cd3730f52353ba4b568acaddf5", + "url": "https://api.github.com/repos/symfony/serializer/zipball/96f6ff6582d1bf1bf08281b563a6c7c917efe6c1", + "reference": "96f6ff6582d1bf1bf08281b563a6c7c917efe6c1", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<4.4", + "symfony/property-info": "<5.3", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4.41|^4.4.9|^5.0.9", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/property-access": "^4.4.9|^5.0.9", + "symfony/property-info": "^5.3", + "symfony/uid": "^5.1", + "symfony/validator": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0", + "symfony/var-exporter": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping.", "psr/cache-implementation": "For using the metadata cache.", "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", "symfony/property-access": "For using the ObjectNormalizer.", "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", @@ -6277,7 +7876,24 @@ ], "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", - "time": "2021-05-26T11:20:16+00:00" + "support": { + "source": "https://github.com/symfony/serializer/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-10T18:05:39+00:00" }, { "name": "symfony/service-contracts", @@ -6339,46 +7955,212 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-04-01T10:43:52+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.25", + "name": "symfony/stopwatch", + "version": "v5.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "dfe132c5c6d89f90ce7f961742cc532e9ca16dd4" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "313d02f59d6543311865007e5ff4ace05b35ee65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/dfe132c5c6d89f90ce7f961742cc532e9ca16dd4", - "reference": "dfe132c5c6d89f90ce7f961742cc532e9ca16dd4", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/313d02f59d6543311865007e5ff4ace05b35ee65", + "reference": "313d02f59d6543311865007e5ff4ace05b35ee65", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/service-contracts": "^1.0|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/string", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "0732e97e41c0a590f77e231afc16a327375d50b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/0732e97e41c0a590f77e231afc16a327375d50b0", + "reference": "0732e97e41c0a590f77e231afc16a327375d50b0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-06T09:51:56+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "7e2603bcc598e14804c4d2359d8dc4ee3c40391b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/7e2603bcc598e14804c4d2359d8dc4ee3c40391b", + "reference": "7e2603bcc598e14804c4d2359d8dc4ee3c40391b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^2.3" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "^1.21", "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -6387,6 +8169,9 @@ }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -6410,7 +8195,24 @@ ], "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "time": "2021-05-26T17:39:37+00:00" + "support": { + "source": "https://github.com/symfony/translation/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-06T09:51:56+00:00" }, { "name": "symfony/translation-contracts", @@ -6471,37 +8273,53 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-23T23:28:01+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.25", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0" + "reference": "905a22c68b292ffb6f20d7636c36b220d1fba5ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0", - "reference": "31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/905a22c68b292ffb6f20d7636c36b220d1fba5ae", + "reference": "905a22c68b292ffb6f20d7636c36b220d1fba5ae", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", "symfony/polyfill-php80": "^1.15" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", + "symfony/console": "^4.4|^5.0", "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -6543,41 +8361,57 @@ "debug", "dump" ], - "time": "2021-05-27T09:48:32+00:00" + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-06T09:51:56+00:00" }, { "name": "symfony/yaml", - "version": "v4.2.2", + "version": "v5.3.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6" + "reference": "71719ab2409401711d619765aa255f9d352a59b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d0aa6c0ea484087927b49fd513383a7d36190ca6", - "reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6", + "url": "https://api.github.com/repos/symfony/yaml/zipball/71719ab2409401711d619765aa255f9d352a59b2", + "reference": "71719ab2409401711d619765aa255f9d352a59b2", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<4.4" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "symfony/console": "^4.4|^5.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -6600,9 +8434,26 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", - "time": "2019-01-03T09:07:35+00:00" + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-06T09:51:56+00:00" }, { "name": "tecnickcom/tcpdf", @@ -6664,6 +8515,16 @@ "pdf417", "qrcode" ], + "support": { + "issues": "https://github.com/tecnickcom/TCPDF/issues", + "source": "https://github.com/tecnickcom/TCPDF/tree/6.4.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations¤cy_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20tcpdf%20project", + "type": "custom" + } + ], "time": "2021-03-27T16:00:33+00:00" }, { @@ -6713,39 +8574,110 @@ ], "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.3" + }, "time": "2020-07-13T06:12:54+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v2.6.7", + "name": "vladimir-yuldashev/laravel-queue-rabbitmq", + "version": "v11.1.2", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e" + "url": "https://github.com/vyuldashev/laravel-queue-rabbitmq.git", + "reference": "3a39d3569c0768253ebac90fb8d0fb061f2a0783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b786088918a884258c9e3e27405c6a4cf2ee246e", - "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e", + "url": "https://api.github.com/repos/vyuldashev/laravel-queue-rabbitmq/zipball/3a39d3569c0768253ebac90fb8d0fb061f2a0783", + "reference": "3a39d3569c0768253ebac90fb8d0fb061f2a0783", "shasum": "" }, "require": { - "php": "^5.3.9 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.17" + "ext-json": "*", + "illuminate/queue": "^8.0", + "php": "^7.3", + "php-amqplib/php-amqplib": "^2.12" }, "require-dev": { - "ext-filter": "*", - "ext-pcre": "*", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20" + "friendsofphp/php-cs-fixer": "^2.17", + "laravel/horizon": "^5.0", + "mockery/mockery": "^1.0", + "orchestra/testbench": "^6.0", + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-filter": "Required to use the boolean validator.", - "ext-pcre": "Required to use most of the library." + "ext-pcntl": "Required to use all features of the queue consumer." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "11.0-dev" + }, + "laravel": { + "providers": [ + "VladimirYuldashev\\LaravelQueueRabbitMQ\\LaravelQueueRabbitMQServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "VladimirYuldashev\\LaravelQueueRabbitMQ\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vladimir Yuldashev", + "email": "misterio92@gmail.com" + } + ], + "description": "RabbitMQ driver for Laravel Queue. Supports Laravel Horizon.", + "support": { + "issues": "https://github.com/vyuldashev/laravel-queue-rabbitmq/issues", + "source": "https://github.com/vyuldashev/laravel-queue-rabbitmq/tree/v11.1.2" + }, + "time": "2021-03-06T23:36:58+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", + "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.1", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.7.4", + "symfony/polyfill-ctype": "^1.17", + "symfony/polyfill-mbstring": "^1.17", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5.1" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3-dev" } }, "autoload": { @@ -6775,123 +8707,416 @@ "env", "environment" ], - "time": "2021-01-20T14:39:13+00:00" + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-01-20T15:23:13+00:00" }, { - "name": "zendframework/zend-code", - "version": "3.4.1", + "name": "voku/portable-ascii", + "version": "1.5.6", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-code.git", - "reference": "268040548f92c2bfcba164421c1add2ba43abaaa" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "80953678b19901e5165c56752d087fc11526017c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/268040548f92c2bfcba164421c1add2ba43abaaa", - "reference": "268040548f92c2bfcba164421c1add2ba43abaaa", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c", + "reference": "80953678b19901e5165c56752d087fc11526017c", "shasum": "" }, "require": { - "php": "^7.1", - "zendframework/zend-eventmanager": "^2.6 || ^3.0" + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.5.6" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2020-11-12T00:07:28+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "phpspec/prophecy": "<1.9.0" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "doctrine/annotations": "^1.7", - "ext-phar": "*", - "phpunit/phpunit": "^7.5.16 || ^8.4", - "zendframework/zend-coding-standard": "^1.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "zendframework/zend-stdlib": "Zend\\Stdlib component" + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4.x-dev", - "dev-develop": "3.5.x-dev", - "dev-dev-4.0": "4.0.x-dev" + "dev-master": "1.10-dev" } }, "autoload": { "psr-4": { - "Zend\\Code\\": "src/" + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "keywords": [ - "ZendFramework", - "code", - "zf" - ], - "abandoned": "laminas/laminas-code", - "time": "2019-12-10T19:21:15+00:00" - }, - { - "name": "zendframework/zend-eventmanager", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "a5e2583a211f73604691586b8406ff7296a946dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", - "reference": "a5e2583a211f73604691586b8406ff7296a946dd", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0" - }, - "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } - }, - "autoload": { - "psr-4": { - "Zend\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://github.com/zendframework/zend-eventmanager", + "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "event", - "eventmanager", - "events", - "zf2" + "assert", + "check", + "validate" ], - "abandoned": "laminas/laminas-eventmanager", - "time": "2018-04-25T15:33:34+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" } ], "packages-dev": [ + { + "name": "facade/flare-client-php", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/facade/flare-client-php.git", + "reference": "47b639dc02bcfdfc4ebb83de703856fa01e35f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/47b639dc02bcfdfc4ebb83de703856fa01e35f5f", + "reference": "47b639dc02bcfdfc4ebb83de703856fa01e35f5f", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", + "php": "^7.1|^8.0", + "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/mime": "^3.4|^4.0|^5.1", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpunit/phpunit": "^7.5.16", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Facade\\FlareClient\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "support": { + "issues": "https://github.com/facade/flare-client-php/issues", + "source": "https://github.com/facade/flare-client-php/tree/1.8.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2021-05-31T19:23:29+00:00" + }, + { + "name": "facade/ignition", + "version": "2.10.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "43688227bbf27c43bc1ad83af224f135b6ef0ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/43688227bbf27c43bc1ad83af224f135b6ef0ff4", + "reference": "43688227bbf27c43bc1ad83af224f135b6ef0ff4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.6", + "facade/ignition-contracts": "^1.0.2", + "filp/whoops": "^2.4", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" + }, + "suggest": { + "laravel/telescope": "^3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + } + } + }, + "autoload": { + "psr-4": { + "Facade\\Ignition\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/facade/ignition/issues", + "source": "https://github.com/facade/ignition" + }, + "time": "2021-06-11T06:57:25+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.14.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1", + "reference": "ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/container": "^1.0", + "symfony/deprecation-contracts": "^2.2" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-intl": "*", + "symfony/phpunit-bridge": "^4.4 || ^5.2" + }, + "suggest": { + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.15-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v.1.14.1" + }, + "time": "2021-03-30T06:27:33+00:00" + }, { "name": "filp/whoops", "version": "2.13.0", @@ -6951,58 +9176,17 @@ "throwable", "whoops" ], - "time": "2021-06-04T12:00:00+00:00" - }, - { - "name": "fzaninotto/faker", - "version": "v1.9.2", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.13.0" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "François Zaninotto" + "url": "https://github.com/denis-sokolov", + "type": "github" } ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "abandoned": true, - "time": "2020-12-11T09:56:16+00:00" + "time": "2021-06-04T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7049,33 +9233,50 @@ "keywords": [ "test" ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, "time": "2020-07-09T08:09:16+00:00" }, { "name": "laravel/browser-kit-testing", - "version": "v4.0.2", + "version": "v6.2.2", "source": { "type": "git", "url": "https://github.com/laravel/browser-kit-testing.git", - "reference": "efe038f40fb8ad06655ddfcb64e8b603e9e1f999" + "reference": "a8bc92f2bb91db210ed2d8cbf4d6b16fa49453dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/efe038f40fb8ad06655ddfcb64e8b603e9e1f999", - "reference": "efe038f40fb8ad06655ddfcb64e8b603e9e1f999", + "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/a8bc92f2bb91db210ed2d8cbf4d6b16fa49453dc", + "reference": "a8bc92f2bb91db210ed2d8cbf4d6b16fa49453dc", "shasum": "" }, "require": { - "illuminate/support": "^5.6", - "php": ">=7.1.3", - "phpunit/phpunit": "~7.0", - "symfony/css-selector": "~4.0", - "symfony/dom-crawler": "~4.0" + "ext-dom": "*", + "ext-json": "*", + "illuminate/contracts": "^7.0|^8.0", + "illuminate/database": "^7.0|^8.0", + "illuminate/http": "^7.0|^8.0", + "illuminate/support": "^7.0|^8.0", + "illuminate/testing": "^7.0|^8.0", + "mockery/mockery": "^1.0", + "php": "^7.2|^8.0", + "phpunit/phpunit": "^8.5|^9.0", + "symfony/console": "^5.0", + "symfony/css-selector": "^5.0", + "symfony/dom-crawler": "^5.0", + "symfony/http-foundation": "^5.0", + "symfony/http-kernel": "^5.0" + }, + "require-dev": { + "laravel/framework": "^7.0|^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "6.x-dev" } }, "autoload": { @@ -7093,39 +9294,106 @@ "email": "taylor@laravel.com" } ], - "description": "Provides backwards compatibility for BrowserKit testing in Laravel 5.4.", + "description": "Provides backwards compatibility for BrowserKit testing in the latest Laravel release.", "keywords": [ "laravel", "testing" ], - "time": "2018-09-26T13:42:46+00:00" + "support": { + "issues": "https://github.com/laravel/browser-kit-testing/issues", + "source": "https://github.com/laravel/browser-kit-testing/tree/v6.2.2" + }, + "time": "2020-11-24T16:37:28+00:00" }, { - "name": "mockery/mockery", - "version": "1.3.4", + "name": "laravel/sail", + "version": "v1.8.1", "source": { "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "31467aeb3ca3188158613322d66df81cedd86626" + "url": "https://github.com/laravel/sail.git", + "reference": "77fb31eb48de9971af1fe0c6b47be3da6b869dfd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/31467aeb3ca3188158613322d66df81cedd86626", - "reference": "31467aeb3ca3188158613322d66df81cedd86626", + "url": "https://api.github.com/repos/laravel/sail/zipball/77fb31eb48de9971af1fe0c6b47be3da6b869dfd", + "reference": "77fb31eb48de9971af1fe0c6b47be3da6b869dfd", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.0|^9.0", + "illuminate/contracts": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "php": "^7.3|^8.0" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2021-06-08T15:18:38+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea", + "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + "phpunit/phpunit": "^8.5 || ^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -7163,7 +9431,11 @@ "test double", "testing" ], - "time": "2021-02-24T09:51:00+00:00" + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.4.3" + }, + "time": "2021-02-24T09:51:49+00:00" }, { "name": "myclabs/deep-copy", @@ -7211,33 +9483,49 @@ "object", "object graph" ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], "time": "2020-11-13T09:40:50+00:00" }, { "name": "nunomaduro/collision", - "version": "v2.1.1", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63" + "reference": "b5cb36122f1c142c3c3ee20a0ae778439ef0244b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5feb0c0d92978ec7169232ce5d70d6da6b29f63", - "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5cb36122f1c142c3c3ee20a0ae778439ef0244b", + "reference": "b5cb36122f1c142c3c3ee20a0ae778439ef0244b", "shasum": "" }, "require": { - "filp/whoops": "^2.1.4", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "php": "^7.1", - "symfony/console": "~2.8|~3.3|~4.0" + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.7.2", + "php": "^7.3 || ^8.0", + "symfony/console": "^5.0" }, "require-dev": { - "laravel/framework": "5.7.*", - "nunomaduro/larastan": "^0.3.0", - "phpstan/phpstan": "^0.10", - "phpunit/phpunit": "~7.3" + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "friendsofphp/php-cs-fixer": "^2.17.3", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "^9.0", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^7.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" }, "type": "library", "extra": { @@ -7275,32 +9563,51 @@ "php", "symfony" ], - "time": "2018-11-21T21:40:54+00:00" + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2021-06-22T20:47:22+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -7330,24 +9637,28 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2018-07-08T19:23:20+00:00" + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, + "time": "2020-06-27T14:33:11+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "bae7c545bef187884426f042434e561ab1ddb182" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -7377,7 +9688,11 @@ } ], "description": "Library for handling version information and constraints", - "time": "2018-07-08T19:19:57+00:00" + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -7426,6 +9741,10 @@ "reflection", "static analysis" ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, "time": "2020-06-27T09:03:43+00:00" }, { @@ -7478,6 +9797,10 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, "time": "2020-09-03T19:13:55+00:00" }, { @@ -7523,6 +9846,10 @@ } ], "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.4.0" + }, "time": "2020-09-17T18:55:26+00:00" }, { @@ -7586,44 +9913,52 @@ "spy", "stub" ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + }, "time": "2021-03-17T13:42:18+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "9.2.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "f6293e1b30a2354e8428e004689671b83871edde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", + "reference": "f6293e1b30a2354e8428e004689671b83871edde", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -7649,32 +9984,42 @@ "testing", "xunit" ], - "time": "2018-10-31T16:06:48+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-03-28T07:26:59+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357" + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357", - "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -7699,26 +10044,107 @@ "filesystem", "iterator" ], - "time": "2020-11-30T08:25:21+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -7740,32 +10166,42 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7789,107 +10225,69 @@ "keywords": [ "timer" ], - "time": "2020-11-30T08:20:02+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "472b687829041c24b25f475e14c2f38a09edf1c2" + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/472b687829041c24b25f475e14c2f38a09edf1c2", - "reference": "472b687829041c24b25f475e14c2f38a09edf1c2", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "abandoned": true, - "time": "2020-11-30T08:38:46+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "7.5.20", + "version": "9.5.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "reference": "89ff45ea9d70e35522fb6654a2ebc221158de276" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/89ff45ea9d70e35522fb6654a2ebc221158de276", + "reference": "89ff45ea9d70e35522fb6654a2ebc221158de276", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.1", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.2", + "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -7897,12 +10295,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-master": "9.5-dev" } }, "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7923,32 +10324,158 @@ "testing", "xunit" ], - "time": "2020-01-08T08:45:45+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.5" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-05T04:49:07+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -7968,34 +10495,44 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2020-11-30T08:15:22+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.3", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -8032,33 +10569,100 @@ "compare", "equality" ], - "time": "2020-11-30T08:04:30+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.3", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -8088,27 +10692,37 @@ "unidiff", "unified diff" ], - "time": "2020-11-30T07:59:04+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -8116,7 +10730,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -8141,34 +10755,44 @@ "environment", "hhvm" ], - "time": "2020-11-30T07:53:42+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.3", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -8208,27 +10832,40 @@ "export", "exporter" ], - "time": "2020-11-30T07:47:53+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -8236,7 +10873,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -8259,34 +10896,101 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.4", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -8306,32 +11010,42 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2020-11-30T07:40:27+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -8351,32 +11065,42 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2020-11-30T07:37:18+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -8404,29 +11128,42 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2020-11-30T07:34:24+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -8446,29 +11183,95 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2020-11-30T07:30:19+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/version", - "version": "2.0.1", + "name": "sebastian/type", + "version": "2.3.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" } }, "autoload": { @@ -8489,33 +11292,45 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.25", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef" + "reference": "55fff62b19f413f897a752488ade1bc9c8a19cdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/41d15bb6d6b95d2be763c514bb2494215d9c5eef", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/55fff62b19f413f897a752488ade1bc9c8a19cdd", + "reference": "55fff62b19f413f897a752488ade1bc9c8a19cdd", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "masterminds/html5": "<2.6" }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0" }, "suggest": { "symfony/css-selector": "" @@ -8545,7 +11360,24 @@ ], "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", - "time": "2021-05-26T11:20:16+00:00" + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-26T17:43:10+00:00" }, { "name": "theseer/tokenizer", @@ -8585,61 +11417,17 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2020-07-12T23:59:07+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/master" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2021-03-09T10:59:23+00:00" + "time": "2020-07-12T23:59:07+00:00" } ], "aliases": [], @@ -8650,11 +11438,12 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.1.3", + "php": "^7.3|^8.0", "ext-gd": "*", "ext-imagick": "*", "ext-json": "*", "ext-pdo": "*" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.0.0" } diff --git a/config/app.php b/config/app.php index faa3d073..729842e7 100644 --- a/config/app.php +++ b/config/app.php @@ -13,7 +13,7 @@ return [ | | This value determines the "environment" your application is currently | running in. This may determine how you prefer to configure various - | services your application utilizes. Set this in your ".env" file. + | services your application utilizes. Set this in your "..env" file. | */ @@ -124,8 +124,8 @@ return [ 'providers' => [ /* - * Laravel Framework Service Providers... - */ + * Laravel Framework Service Providers... + */ Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, @@ -138,6 +138,7 @@ return [ Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class, Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, @@ -152,8 +153,10 @@ return [ */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, + // Services App\Repositories\RepositoriesProvider::class, App\Services\FileSystem\Swift\SwiftServiceProvider::class, \App\Services\FileSystem\Dropbox\DropboxServiceProvider::class, @@ -161,12 +164,12 @@ return [ services\ModelServicesProvider::class, factories\FactoriesProvider::class, App\Http\Utils\UtilsProvider::class, - libs\utils\CustomDoctrineServiceProvider::class, + // Doctrine ORM + LaravelDoctrine\ORM\DoctrineServiceProvider::class, LaravelDoctrine\Extensions\BeberleiExtensionsServiceProvider::class, Sichikawa\LaravelSendgridDriver\SendgridTransportServiceProvider::class, LaravelDoctrine\Migrations\MigrationsServiceProvider::class, SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class, - \App\Queue\RabbitMQServiceProvider::class, ], /* diff --git a/config/cors.php b/config/cors.php index fe6da0ce..9c025a9a 100644 --- a/config/cors.php +++ b/config/cors.php @@ -1,64 +1,57 @@ Spatie\Cors\CorsProfile\DefaultProfile::class, + |-------------------------------------------------------------------------- + | Cross-Origin Resource Sharing (CORS) Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure your settings for cross-origin resource sharing + | or "CORS". This determines what cross-origin operations may execute + | in web browsers. You are free to adjust these settings as needed. + | + | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS + | + */ - /* - * This configuration is used by `DefaultProfile`. - */ - 'default_profile' => [ + 'paths' => ['api/*'], - 'allow_credentials' => false, - - 'allow_origins' => [ - '*', - ], - - 'allow_methods' => [ - 'POST', - 'GET', - 'OPTIONS', - 'PUT', - 'PATCH', - 'DELETE', - ], - - 'allow_headers' => [ - 'Accept', - 'Content-Type', - 'X-Auth-Token', - 'Origin', - 'Authorization', - 'X-Requested-With', - 'Cache-Control', - ], - - 'expose_headers' => [ - 'Cache-Control', - 'Content-Language', - 'Content-Type', - 'Expires', - 'Last-Modified', - 'Pragma', - ], - - 'forbidden_response' => [ - 'message' => 'Forbidden (cors).', - 'status' => 403, - ], - - /* - * Preflight request will respond with value for the max age header. - */ - 'max_age' => 60 * 60 * 24, + 'allowed_methods' => [ + 'POST', + 'GET', + 'OPTIONS', + 'PUT', + 'PATCH', + 'DELETE', ], -]; + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => [ + 'Accept', + 'Content-Type', + 'X-Auth-Token', + 'Origin', + 'Authorization', + 'X-Requested-With', + 'Cache-Control', + ], + + 'exposed_headers' => [ + 'Cache-Control', + 'Content-Language', + 'Content-Type', + 'Expires', + 'Last-Modified', + 'Pragma', + ], + + 'max_age' => 60 * 60 * 24, + + 'supports_credentials' => false, + +]; \ No newline at end of file diff --git a/config/database.php b/config/database.php index 0e8ba5f5..0cbb9bce 100644 --- a/config/database.php +++ b/config/database.php @@ -98,6 +98,7 @@ return [ */ 'redis' => [ + 'client' => env('REDIS_CLIENT', 'predis'), 'cluster' => false, diff --git a/config/doctrine.php b/config/doctrine.php index eacad589..8f60b3d4 100644 --- a/config/doctrine.php +++ b/config/doctrine.php @@ -1,4 +1,5 @@ [ 'config' => [ 'dev' => env('APP_DEBUG', true), + 'quote_strategy' => EscapingQuoteStrategy::class, 'meta' => env('DOCTRINE_METADATA', 'annotations'), 'connection' => env('DB_CONNECTION', 'config'), 'namespaces' => [ @@ -80,6 +82,7 @@ return [ 'model' => [ 'dev' => env('APP_DEBUG'), 'meta' => env('DOCTRINE_METADATA', 'annotations'), + 'quote_strategy' => EscapingQuoteStrategy::class, 'connection' => 'model', 'namespaces' => [ 'App' @@ -249,8 +252,19 @@ return [ ], 'log_enabled' => true, 'file_lock_region_directory' => '/tmp' - ] - + ], + 'metadata' => [ + 'driver' => env('DOCTRINE_METADATA_CACHE', env('DOCTRINE_CACHE', 'redis')), + 'namespace' => null, + ], + 'query' => [ + 'driver' => env('DOCTRINE_QUERY_CACHE', env('DOCTRINE_CACHE', 'redis')), + 'namespace' => null, + ], + 'result' => [ + 'driver' => env('DOCTRINE_RESULT_CACHE', env('DOCTRINE_CACHE', 'redis')), + 'namespace' => null, + ], ], /* |-------------------------------------------------------------------------- diff --git a/database/migrations/config/Version20190422160409.php b/database/migrations/config/Version20190422160409.php index 8ded1944..b9c6e816 100644 --- a/database/migrations/config/Version20190422160409.php +++ b/database/migrations/config/Version20190422160409.php @@ -24,7 +24,7 @@ final class Version20190422160409 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -117,7 +117,7 @@ final class Version20190422160409 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/config/Version20190828142430.php b/database/migrations/config/Version20190828142430.php index aae3970b..52fd8c1d 100644 --- a/database/migrations/config/Version20190828142430.php +++ b/database/migrations/config/Version20190828142430.php @@ -24,7 +24,7 @@ class Version20190828142430 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if(!$schema->hasTable("queue_jobs")) { @@ -56,7 +56,7 @@ class Version20190828142430 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $schema->dropTable("failed_jobs"); $schema->dropTable("jobs"); diff --git a/database/migrations/config/Version20190828143005.php b/database/migrations/config/Version20190828143005.php index 3f9f6959..821be84e 100644 --- a/database/migrations/config/Version20190828143005.php +++ b/database/migrations/config/Version20190828143005.php @@ -25,7 +25,7 @@ class Version20190828143005 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $this->addSql("ALTER TABLE queue_jobs MODIFY payload longtext NOT NULL;"); $this->addSql("ALTER TABLE queue_failed_jobs MODIFY payload longtext NOT NULL;"); @@ -35,7 +35,7 @@ class Version20190828143005 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/config/Version20200123174717.php b/database/migrations/config/Version20200123174717.php index 271f45c4..1ae406da 100644 --- a/database/migrations/config/Version20200123174717.php +++ b/database/migrations/config/Version20200123174717.php @@ -24,7 +24,7 @@ class Version20200123174717 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -45,7 +45,7 @@ class Version20200123174717 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); $builder->dropIfExists('endpoint_api_authz_groups'); diff --git a/database/migrations/model/Version20190422151949.php b/database/migrations/model/Version20190422151949.php index 59cce889..4b1c20c9 100644 --- a/database/migrations/model/Version20190422151949.php +++ b/database/migrations/model/Version20190422151949.php @@ -24,7 +24,7 @@ final class Version20190422151949 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -48,7 +48,7 @@ final class Version20190422151949 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20190506153014.php b/database/migrations/model/Version20190506153014.php index 6866c404..c0b41e37 100644 --- a/database/migrations/model/Version20190506153014.php +++ b/database/migrations/model/Version20190506153014.php @@ -24,7 +24,7 @@ class Version20190506153014 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if(!$builder->hasTable("PresentationCreatorNotificationEmailRequest")) { @@ -37,7 +37,7 @@ class Version20190506153014 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); $this->addSql("ALTER TABLE `PresentationCreatorNotificationEmailRequest` DROP FOREIGN KEY `FK_B302D49879B1711B`;"); diff --git a/database/migrations/model/Version20190506153909.php b/database/migrations/model/Version20190506153909.php index 77a2a31f..0be75e70 100644 --- a/database/migrations/model/Version20190506153909.php +++ b/database/migrations/model/Version20190506153909.php @@ -24,7 +24,7 @@ class Version20190506153909 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if(!$builder->hasTable("PresentationSpeakerNotificationEmailRequest")){ @@ -38,7 +38,7 @@ class Version20190506153909 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); $this->addSql("ALTER TABLE `PresentationSpeakerNotificationEmailRequest` DROP FOREIGN KEY `FK_2BFDC212FEC5CBA6`;"); diff --git a/database/migrations/model/Version20190529015655.php b/database/migrations/model/Version20190529015655.php index 861a6156..35c7cc21 100644 --- a/database/migrations/model/Version20190529015655.php +++ b/database/migrations/model/Version20190529015655.php @@ -24,7 +24,7 @@ class Version20190529015655 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if(!$builder->hasColumn("Summit","MeetingRoomBookingStartTime")) { @@ -40,7 +40,7 @@ class Version20190529015655 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20190529142913.php b/database/migrations/model/Version20190529142913.php index 6e62f574..8755c896 100644 --- a/database/migrations/model/Version20190529142913.php +++ b/database/migrations/model/Version20190529142913.php @@ -24,7 +24,7 @@ class Version20190529142913 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { if(!$schema->hasTable("SummitBookableVenueRoom")) { $sql = <<hasTable("SummitRoomReservation")) { @@ -57,7 +57,7 @@ class Version20190529142927 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { (new Builder($schema))->drop('SummitRoomReservation'); } diff --git a/database/migrations/model/Version20190530205326.php b/database/migrations/model/Version20190530205326.php index 6aeff2a3..f7b4cb94 100644 --- a/database/migrations/model/Version20190530205326.php +++ b/database/migrations/model/Version20190530205326.php @@ -24,7 +24,7 @@ class Version20190530205326 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if(!$schema->hasTable("SummitBookableVenueRoomAttributeType")) { @@ -47,7 +47,7 @@ class Version20190530205326 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { (new Builder($schema))->drop('BookableSummitVenueRoomAttributeType'); } diff --git a/database/migrations/model/Version20190530205344.php b/database/migrations/model/Version20190530205344.php index f9bd3357..f498b9d1 100644 --- a/database/migrations/model/Version20190530205344.php +++ b/database/migrations/model/Version20190530205344.php @@ -24,7 +24,7 @@ class Version20190530205344 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -60,7 +60,7 @@ class Version20190530205344 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { (new Builder($schema))->drop('SummitBookableVenueRoomAttributeValue'); (new Builder($schema))->drop('SummitBookableVenueRoom_Attributes'); diff --git a/database/migrations/model/Version20190625030955.php b/database/migrations/model/Version20190625030955.php index dfe8f8c4..eaa23837 100644 --- a/database/migrations/model/Version20190625030955.php +++ b/database/migrations/model/Version20190625030955.php @@ -24,7 +24,7 @@ class Version20190625030955 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if(!$builder->hasColumn("Summit","ApiFeedType")) { @@ -45,7 +45,7 @@ class Version20190625030955 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20190626125814.php b/database/migrations/model/Version20190626125814.php index ad1a5448..daf0ed2e 100644 --- a/database/migrations/model/Version20190626125814.php +++ b/database/migrations/model/Version20190626125814.php @@ -25,7 +25,7 @@ final class Version20190626125814 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($builder->hasTable("SummitRoomReservation") && !$builder->hasColumns("SummitRoomReservation", ["PaymentGatewayClientToken","RefundedAmount"])) { @@ -39,7 +39,7 @@ final class Version20190626125814 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($builder->hasTable("SummitRoomReservation") && $builder->hasColumns("SummitRoomReservation", ["PaymentGatewayClientToken","RefundedAmount"])) { diff --git a/database/migrations/model/Version20190629222739.php b/database/migrations/model/Version20190629222739.php index a4939534..5a0181bc 100644 --- a/database/migrations/model/Version20190629222739.php +++ b/database/migrations/model/Version20190629222739.php @@ -25,7 +25,7 @@ final class Version20190629222739 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitRoomReservation")) { @@ -47,7 +47,7 @@ final class Version20190629222739 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20190723210551.php b/database/migrations/model/Version20190723210551.php index 10b1ba02..8d587c85 100644 --- a/database/migrations/model/Version20190723210551.php +++ b/database/migrations/model/Version20190723210551.php @@ -24,7 +24,7 @@ final class Version20190723210551 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitPresentationComment") && !$builder->hasColumn("SummitPresentationComment", "IsPublic")) { @@ -37,7 +37,7 @@ final class Version20190723210551 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitPresentationComment") && $builder->hasColumn("SummitPresentationComment", "IsPublic")) { diff --git a/database/migrations/model/Version20190728200547.php b/database/migrations/model/Version20190728200547.php index bd24a4c6..882e1eb0 100644 --- a/database/migrations/model/Version20190728200547.php +++ b/database/migrations/model/Version20190728200547.php @@ -24,7 +24,7 @@ class Version20190728200547 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Member") && !$builder->hasColumn("Member", "ExternalUserId")) { @@ -38,7 +38,7 @@ class Version20190728200547 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Member") && $builder->hasColumn("Member", "ExternalUserId")) { diff --git a/database/migrations/model/Version20190730022151.php b/database/migrations/model/Version20190730022151.php index db09e55c..f38b989c 100644 --- a/database/migrations/model/Version20190730022151.php +++ b/database/migrations/model/Version20190730022151.php @@ -24,7 +24,7 @@ final class Version20190730022151 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sql = <<timestamp('ScanDate'); }); } - } /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20191116183316.php b/database/migrations/model/Version20191116183316.php index 755bb298..1d6d9e5a 100644 --- a/database/migrations/model/Version20191116183316.php +++ b/database/migrations/model/Version20191116183316.php @@ -25,7 +25,7 @@ final class Version20191116183316 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -59,7 +59,7 @@ final class Version20191116183316 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20191125210134.php b/database/migrations/model/Version20191125210134.php index 0bcbf696..575b0c30 100644 --- a/database/migrations/model/Version20191125210134.php +++ b/database/migrations/model/Version20191125210134.php @@ -24,7 +24,7 @@ class Version20191125210134 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sql = <<hasTable("SummitBadgeType_BadgeFeatures")) { diff --git a/database/migrations/model/Version20191212002736.php b/database/migrations/model/Version20191212002736.php index b39bdc4e..7a23e30c 100644 --- a/database/migrations/model/Version20191212002736.php +++ b/database/migrations/model/Version20191212002736.php @@ -25,7 +25,7 @@ final class Version20191212002736 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && !$builder->hasColumn("Summit", "BeginAllowBookingDate")) { @@ -39,7 +39,7 @@ final class Version20191212002736 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && $builder->hasColumn("Summit", "BeginAllowBookingDate")) { diff --git a/database/migrations/model/Version20191220223248.php b/database/migrations/model/Version20191220223248.php index bb9020f5..8b37fc80 100644 --- a/database/migrations/model/Version20191220223248.php +++ b/database/migrations/model/Version20191220223248.php @@ -25,7 +25,7 @@ class Version20191220223248 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -39,7 +39,7 @@ class Version20191220223248 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20191220223253.php b/database/migrations/model/Version20191220223253.php index abd81ad6..bf4e358c 100644 --- a/database/migrations/model/Version20191220223253.php +++ b/database/migrations/model/Version20191220223253.php @@ -24,7 +24,7 @@ class Version20191220223253 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { // make enum $sql = <<hasTable("RSVP") && !$builder->hasColumn("RSVP", "EventUri")) { @@ -37,7 +37,7 @@ class Version20200212125943 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("RSVP") && $builder->hasColumn("RSVP", "EventUri")) { diff --git a/database/migrations/model/Version20200213131907.php b/database/migrations/model/Version20200213131907.php index 7103d7d5..ae50054a 100644 --- a/database/migrations/model/Version20200213131907.php +++ b/database/migrations/model/Version20200213131907.php @@ -24,7 +24,7 @@ class Version20200213131907 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && !$builder->hasColumn("Summit", "ScheduleEventDetailUrl")) { @@ -57,7 +57,7 @@ class Version20200213131907 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && $builder->hasColumn("Summit", "ScheduleEventDetailUrl")) { diff --git a/database/migrations/model/Version20200403191418.php b/database/migrations/model/Version20200403191418.php index 977e4d14..8732c931 100644 --- a/database/migrations/model/Version20200403191418.php +++ b/database/migrations/model/Version20200403191418.php @@ -22,7 +22,7 @@ class Version20200403191418 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sentence = <<hasTable("Summit") && !$builder->hasColumn("Summit", "DefaultPageUrl")) { @@ -38,7 +38,7 @@ class Version20200523235306 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20200526174904.php b/database/migrations/model/Version20200526174904.php index 0a6821bd..1b2e0bf6 100644 --- a/database/migrations/model/Version20200526174904.php +++ b/database/migrations/model/Version20200526174904.php @@ -25,7 +25,7 @@ class Version20200526174904 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -67,7 +67,7 @@ class Version20200526174904 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20200601211446.php b/database/migrations/model/Version20200601211446.php index 2126dbea..d4a328ad 100644 --- a/database/migrations/model/Version20200601211446.php +++ b/database/migrations/model/Version20200601211446.php @@ -25,7 +25,7 @@ class Version20200601211446 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitEvent") && !$builder->hasColumn("SummitEvent", "StreamingUrl")) { @@ -39,7 +39,7 @@ class Version20200601211446 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitEvent") && $builder->hasColumn("SummitEvent", "StreamingUrl")) { diff --git a/database/migrations/model/Version20200602212951.php b/database/migrations/model/Version20200602212951.php index 6aef21cf..f6a011a7 100644 --- a/database/migrations/model/Version20200602212951.php +++ b/database/migrations/model/Version20200602212951.php @@ -25,7 +25,7 @@ class Version20200602212951 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -70,7 +70,7 @@ class Version20200602212951 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20200609105105.php b/database/migrations/model/Version20200609105105.php index 705f7372..5fdedaa1 100644 --- a/database/migrations/model/Version20200609105105.php +++ b/database/migrations/model/Version20200609105105.php @@ -25,7 +25,7 @@ class Version20200609105105 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitEvent") && !$builder->hasColumn("SummitEvent", "MeetingUrl")) { @@ -38,7 +38,7 @@ class Version20200609105105 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitEvent") && $builder->hasColumn("SummitEvent", "MeetingUrl")) { diff --git a/database/migrations/model/Version20200616144713.php b/database/migrations/model/Version20200616144713.php index cc31f76e..26a6df45 100644 --- a/database/migrations/model/Version20200616144713.php +++ b/database/migrations/model/Version20200616144713.php @@ -22,7 +22,7 @@ class Version20200616144713 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { // make enum $sql = <<dropIfExists('PresentationMediaUpload'); diff --git a/database/migrations/model/Version20200713164344.php b/database/migrations/model/Version20200713164344.php index 9215d356..9666f18c 100644 --- a/database/migrations/model/Version20200713164344.php +++ b/database/migrations/model/Version20200713164344.php @@ -21,7 +21,7 @@ class Version20200713164344 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -73,7 +73,7 @@ SQL; /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); } diff --git a/database/migrations/model/Version20200730135823.php b/database/migrations/model/Version20200730135823.php index 96e1fca2..c130d003 100644 --- a/database/migrations/model/Version20200730135823.php +++ b/database/migrations/model/Version20200730135823.php @@ -25,7 +25,7 @@ class Version20200730135823 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -40,7 +40,7 @@ class Version20200730135823 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); diff --git a/database/migrations/model/Version20200803171455.php b/database/migrations/model/Version20200803171455.php index 7e3a91da..a1d3d771 100644 --- a/database/migrations/model/Version20200803171455.php +++ b/database/migrations/model/Version20200803171455.php @@ -25,7 +25,7 @@ class Version20200803171455 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($builder->hasTable("SummitEvent") && !$builder->hasColumn("SummitEvent",'Title')) { @@ -39,7 +39,7 @@ class Version20200803171455 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20200817180752.php b/database/migrations/model/Version20200817180752.php index a082be91..af94f577 100644 --- a/database/migrations/model/Version20200817180752.php +++ b/database/migrations/model/Version20200817180752.php @@ -22,7 +22,7 @@ class Version20200817180752 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $indexes = $this->sm->listTableIndexes("Member"); @@ -49,7 +49,7 @@ SQL; /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20200818120409.php b/database/migrations/model/Version20200818120409.php index 5ae7036d..4feca562 100644 --- a/database/migrations/model/Version20200818120409.php +++ b/database/migrations/model/Version20200818120409.php @@ -24,7 +24,7 @@ class Version20200818120409 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($builder->hasTable("PresentationSpeaker") && !$builder->hasColumn("PresentationSpeaker",'Company')) { @@ -38,7 +38,7 @@ class Version20200818120409 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($builder->hasTable("PresentationSpeaker") && $builder->hasColumn("PresentationSpeaker",'Company')) { diff --git a/database/migrations/model/Version20200824140528.php b/database/migrations/model/Version20200824140528.php index e2fd2248..66a533a6 100644 --- a/database/migrations/model/Version20200824140528.php +++ b/database/migrations/model/Version20200824140528.php @@ -24,7 +24,7 @@ class Version20200824140528 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Member") && !$builder->hasColumn("Member","ExternalPic") ) { @@ -37,7 +37,7 @@ class Version20200824140528 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Member") && $builder->hasColumn("Member","ExternalPic") ) { diff --git a/database/migrations/model/Version20200831193516.php b/database/migrations/model/Version20200831193516.php index 2e158290..46cf1e13 100644 --- a/database/migrations/model/Version20200831193516.php +++ b/database/migrations/model/Version20200831193516.php @@ -24,7 +24,7 @@ class Version20200831193516 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && !$builder->hasColumn("Summit","MarketingSiteOAuth2ClientId") ) { @@ -38,7 +38,7 @@ class Version20200831193516 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && $builder->hasColumn("Summit","MarketingSiteOAuth2ClientId") ) { diff --git a/database/migrations/model/Version20200901160152.php b/database/migrations/model/Version20200901160152.php index f5e8db33..c3b1692f 100644 --- a/database/migrations/model/Version20200901160152.php +++ b/database/migrations/model/Version20200901160152.php @@ -24,7 +24,7 @@ class Version20200901160152 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && !$builder->hasColumn("Summit","SupportEmail") ) { @@ -37,7 +37,7 @@ class Version20200901160152 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("Summit") && $builder->hasColumn("Summit","SupportEmail") ) { diff --git a/database/migrations/model/Version20200904155247.php b/database/migrations/model/Version20200904155247.php index 7c4416be..b91e3bba 100644 --- a/database/migrations/model/Version20200904155247.php +++ b/database/migrations/model/Version20200904155247.php @@ -24,7 +24,7 @@ class Version20200904155247 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("PresentationCategory") && !$builder->hasColumn("PresentationCategory","Color") ) { @@ -37,7 +37,7 @@ class Version20200904155247 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("PresentationCategory") && $builder->hasColumn("PresentationCategory","Color") ) { diff --git a/database/migrations/model/Version20200910184756.php b/database/migrations/model/Version20200910184756.php index 691c1a2a..6ff6a7a3 100644 --- a/database/migrations/model/Version20200910184756.php +++ b/database/migrations/model/Version20200910184756.php @@ -23,7 +23,7 @@ class Version20200910184756 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sql = <<hasTable("StripePaymentProfile") && !$builder->hasColumn("StripePaymentProfile","SendEmailReceipt") ) { @@ -37,7 +37,7 @@ class Version20200924123949 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("StripePaymentProfile") && $builder->hasColumn("StripePaymentProfile","SendEmailReceipt") ) { diff --git a/database/migrations/model/Version20200924203451.php b/database/migrations/model/Version20200924203451.php index be38da11..cbca1406 100644 --- a/database/migrations/model/Version20200924203451.php +++ b/database/migrations/model/Version20200924203451.php @@ -13,15 +13,11 @@ **/ use Doctrine\Migrations\AbstractMigration; use Doctrine\DBAL\Schema\Schema as Schema; -use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use App\Models\Foundation\Summit\EmailFlows\SummitEmailFlowType; -use App\Jobs\Emails\InviteAttendeeTicketEditionMail; -use App\Models\Foundation\Summit\EmailFlows\SummitEmailEventFlowType; use LaravelDoctrine\ORM\Facades\Registry; use models\utils\SilverstripeBaseModel; -use SummitEmailFlowTypeSeeder; -use LaravelDoctrine\ORM\Facades\EntityManager; +use Database\Seeders\SummitEmailFlowTypeSeeder; use App\Jobs\Emails\PresentationSubmissions\ImportEventSpeakerEmail; /** * Class Version20200924203451 @@ -32,7 +28,7 @@ class Version20200924203451 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { DB::setDefaultConnection("model"); $em = Registry::getManager(SilverstripeBaseModel::EntityManager); @@ -59,7 +55,7 @@ class Version20200924203451 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20200924210244.php b/database/migrations/model/Version20200924210244.php index c6976adf..a83814ea 100644 --- a/database/migrations/model/Version20200924210244.php +++ b/database/migrations/model/Version20200924210244.php @@ -25,7 +25,7 @@ class Version20200924210244 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $em = Registry::getManager(SilverstripeBaseModel::EntityManager); $repository = $em->getRepository(Summit::class); @@ -40,7 +40,7 @@ class Version20200924210244 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20200928132323.php b/database/migrations/model/Version20200928132323.php index 741926cb..7d34cfa5 100644 --- a/database/migrations/model/Version20200928132323.php +++ b/database/migrations/model/Version20200928132323.php @@ -24,7 +24,7 @@ class Version20200928132323 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("PresentationMediaUpload") && !$builder->hasColumn("PresentationMediaUpload","LegacyPathFormat") ) { @@ -37,7 +37,7 @@ class Version20200928132323 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("PresentationMediaUpload") && $builder->hasColumn("PresentationMediaUpload","LegacyPathFormat") ) { diff --git a/database/migrations/model/Version20201001182314.php b/database/migrations/model/Version20201001182314.php index 03325be5..35f03b8d 100644 --- a/database/migrations/model/Version20201001182314.php +++ b/database/migrations/model/Version20201001182314.php @@ -25,7 +25,7 @@ class Version20201001182314 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if (!$builder->hasTable("Summit_FeaturedSpeakers")) { @@ -50,7 +50,7 @@ class Version20201001182314 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); $builder->dropIfExists("Summit_FeaturedSpeakers"); diff --git a/database/migrations/model/Version20201008203936.php b/database/migrations/model/Version20201008203936.php index f2e922ed..f64adfd8 100644 --- a/database/migrations/model/Version20201008203936.php +++ b/database/migrations/model/Version20201008203936.php @@ -24,7 +24,7 @@ final class Version20201008203936 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitEvent") && !$builder->hasColumn("SummitEvent","MuxPlaybackID") ) { @@ -38,7 +38,7 @@ final class Version20201008203936 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitEvent") && $builder->hasColumn("SummitEvent","MuxPlaybackID") ) { diff --git a/database/migrations/model/Version20201014155708.php b/database/migrations/model/Version20201014155708.php index 03525c04..305d18d4 100644 --- a/database/migrations/model/Version20201014155708.php +++ b/database/migrations/model/Version20201014155708.php @@ -24,7 +24,7 @@ class Version20201014155708 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $builder = new Builder($schema); @@ -74,7 +74,7 @@ class Version20201014155708 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20201014155719.php b/database/migrations/model/Version20201014155719.php index daa766a8..e7094478 100644 --- a/database/migrations/model/Version20201014155719.php +++ b/database/migrations/model/Version20201014155719.php @@ -22,7 +22,7 @@ class Version20201014155719 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { // make enum $sql = <<hasTable("SummitMetric") && !$builder->hasColumn("SummitMetric","Location") ) { @@ -37,7 +37,7 @@ class Version20201016145706 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SummitMetric") && $builder->hasColumn("SummitMetric","Location") ) { diff --git a/database/migrations/model/Version20201018045210.php b/database/migrations/model/Version20201018045210.php index 25f67b2c..a712d5f1 100644 --- a/database/migrations/model/Version20201018045210.php +++ b/database/migrations/model/Version20201018045210.php @@ -23,7 +23,7 @@ class Version20201018045210 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sql = <<hasTable("SelectionPlan") && !$builder->hasColumn("SelectionPlan","AllowNewPresentations") ) { @@ -37,7 +37,7 @@ class Version20201021125624 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { $builder = new Builder($schema); if($schema->hasTable("SelectionPlan") && $builder->hasColumn("SelectionPlan","AllowNewPresentations") ) { diff --git a/database/migrations/model/Version20201021172434.php b/database/migrations/model/Version20201021172434.php index d57186a3..22fa72ce 100644 --- a/database/migrations/model/Version20201021172434.php +++ b/database/migrations/model/Version20201021172434.php @@ -22,7 +22,7 @@ class Version20201021172434 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sql = <<getRepository(Summit::class); @@ -40,7 +40,7 @@ class Version20210212151956 extends AbstractMigration /** * @param Schema $schema */ - public function down(Schema $schema) + public function down(Schema $schema):void { } diff --git a/database/migrations/model/Version20210322170708.php b/database/migrations/model/Version20210322170708.php index 447ab7fe..63bfc1a3 100644 --- a/database/migrations/model/Version20210322170708.php +++ b/database/migrations/model/Version20210322170708.php @@ -23,7 +23,7 @@ class Version20210322170708 extends AbstractMigration /** * @param Schema $schema */ - public function up(Schema $schema) + public function up(Schema $schema):void { $sql = <<call(UsersTableSeeder::class); Model::unguard(); - $this->call('ApiSeeder'); - $this->call('ApiScopesSeeder'); - $this->call('ApiEndpointsSeeder'); + $this->call(ApiSeeder::class); + $this->call(ApiScopesSeeder::class); + $this->call(ApiEndpointsSeeder::class); // summit - $this->call('DefaultEventTypesSeeder'); - $this->call('DefaultPrintRulesSeeder'); - $this->call('SummitMediaFileTypeSeeder'); + $this->call(DefaultEventTypesSeeder::class); + $this->call(DefaultPrintRulesSeeder::class); + $this->call(SummitMediaFileTypeSeeder::class); } } diff --git a/database/seeds/summit/DefaultEventTypesSeeder.php b/database/seeders/DefaultEventTypesSeeder.php similarity index 99% rename from database/seeds/summit/DefaultEventTypesSeeder.php rename to database/seeders/DefaultEventTypesSeeder.php index 15c20575..5d5267de 100644 --- a/database/seeds/summit/DefaultEventTypesSeeder.php +++ b/database/seeders/DefaultEventTypesSeeder.php @@ -1,4 +1,4 @@ -call('ApiSeeder'); - $this->call('ApiScopesSeeder'); - $this->call('ApiEndpointsSeeder'); + $this->call(ApiSeeder::class); + $this->call(ApiScopesSeeder::class); + $this->call(ApiEndpointsSeeder::class); // summit - $this->call('DefaultEventTypesSeeder'); - $this->call('DefaultPrintRulesSeeder'); - $this->call('SummitEmailFlowTypeSeeder'); - $this->call('SummitEmailFlowEventSeeder'); - $this->call('SummitMediaFileTypeSeeder'); + $this->call(DefaultEventTypesSeeder::class); + $this->call(DefaultPrintRulesSeeder::class); + $this->call(SummitEmailFlowTypeSeeder::class); + $this->call(SummitEmailFlowEventSeeder::class); + $this->call(SummitMediaFileTypeSeeder::class); } } \ No newline at end of file diff --git a/migrate.sh b/migrate.sh index df3d9d2c..7a0aedec 100755 --- a/migrate.sh +++ b/migrate.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/.env bash php artisan doctrine:migrations:migrate --connection=config php artisan doctrine:migrations:migrate --connection=model \ No newline at end of file diff --git a/public/web.config b/public/web.config deleted file mode 100644 index 624c1760..00000000 --- a/public/web.config +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 00000000..32d79b48 --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1,33 @@ + +/** + * First we will load all of this project's JavaScript dependencies which + * includes Vue and other libraries. It is a great starting point when + * building robust, powerful web applications using Vue and Laravel. + */ + +require('./bootstrap'); + +window.Vue = require('vue'); + +/** + * The following block of code may be used to automatically register your + * Vue components. It will recursively scan this directory for the Vue + * components and automatically register them with their "basename". + * + * Eg. ./components/ExampleComponent.vue -> + */ + +// const files = require.context('./', true, /\.vue$/i) +// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default)) + +Vue.component('example-component', require('./components/ExampleComponent.vue').default); + +/** + * Next, we will create a fresh Vue application instance and attach it to + * the page. Then, you may begin adding components to this application + * or customize the JavaScript scaffolding to fit your unique needs. + */ + +const app = new Vue({ + el: '#app' +}); diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 00000000..77ecac1e --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,56 @@ + +window._ = require('lodash'); + +/** + * We'll load jQuery and the Bootstrap jQuery plugin which provides support + * for JavaScript based Bootstrap features such as modals and tabs. This + * code may be modified to fit the specific needs of your application. + */ + +try { + window.Popper = require('popper.js').default; + window.$ = window.jQuery = require('jquery'); + + require('bootstrap'); +} catch (e) {} + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +window.axios = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Next we will register the CSRF Token as a common header with Axios so that + * all outgoing HTTP requests automatically have it attached. This is just + * a simple convenience so we don't have to attach every token manually. + */ + +let token = document.head.querySelector('meta[name="csrf-token"]'); + +if (token) { + window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; +} else { + console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); +} + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo' + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process..env.MIX_PUSHER_APP_KEY, +// cluster: process..env.MIX_PUSHER_APP_CLUSTER, +// encrypted: true +// }); diff --git a/resources/js/components/ExampleComponent.vue b/resources/js/components/ExampleComponent.vue new file mode 100644 index 00000000..3fb9f9aa --- /dev/null +++ b/resources/js/components/ExampleComponent.vue @@ -0,0 +1,23 @@ + + + diff --git a/resources/assets/sass/app.scss b/resources/sass/app.scss similarity index 100% rename from resources/assets/sass/app.scss rename to resources/sass/app.scss diff --git a/routes/api_v1.php b/routes/api_v1.php new file mode 100644 index 00000000..9626ebac --- /dev/null +++ b/routes/api_v1.php @@ -0,0 +1,1562 @@ + 'members'], function () { + Route::get('', 'OAuth2MembersApiController@getAll'); + + Route::group(['prefix' => 'me'], function () { + // get my member info + Route::get('', 'OAuth2MembersApiController@getMyMember'); + + // my affiliations + Route::group(['prefix' => 'affiliations'], function () { + Route::get('', ['uses' => 'OAuth2MembersApiController@getMyMemberAffiliations']); + Route::post('', ['uses' => 'OAuth2MembersApiController@addMyAffiliation']); + Route::group(['prefix' => '{affiliation_id}'], function () { + Route::put('', ['uses' => 'OAuth2MembersApiController@updateMyAffiliation']); + Route::delete('', ['uses' => 'OAuth2MembersApiController@deleteMyAffiliation']); + }); + }); + + Route::group(['prefix' => 'membership'], function () { + Route::put('foundation', ['uses' => 'OAuth2MembersApiController@signFoundationMembership']); + Route::put('community', ['uses' => 'OAuth2MembersApiController@signCommunityMembership']); + Route::delete('resign', ['uses' => 'OAuth2MembersApiController@resignMembership']); + }); + }); + + Route::group(['prefix' => '{member_id}'], function () { + + Route::group(['prefix' => 'affiliations'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@getMemberAffiliations']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@addAffiliation']); + Route::group(['prefix' => '{affiliation_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@updateAffiliation']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@deleteAffiliation']); + }); + }); + + Route::group(array('prefix' => 'rsvp'), function () { + Route::group(['prefix' => '{rsvp_id}'], function () { + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2MembersApiController@deleteRSVP']); + }); + }); + }); +}); + +// tags +Route::group(['prefix' => 'tags'], function () { + Route::get('', 'OAuth2TagsApiController@getAll'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2TagsApiController@addTag']); +}); + +// companies + +Route::group(['prefix' => 'companies'], function () { + Route::get('', 'OAuth2CompaniesApiController@getAllCompanies'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@add']); + Route::group(['prefix' => '{id}'], function () { + Route::get('', ['uses' => 'OAuth2CompaniesApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@delete']); + Route::group(['prefix' => 'logo'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@addCompanyLogo']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@deleteCompanyLogo']); + Route::group(['prefix' => 'big'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@addCompanyBigLogo']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@deleteCompanyBigLogo']); + }); + }); + }); +}); + +// sponsored projects +Route::group(['prefix' => 'sponsored-projects'], function () { + Route::get('', 'OAuth2SponsoredProjectApiController@getAll'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@add']); + + Route::group(['prefix' => '{id}'], function () { + + Route::get('', ['uses' => 'OAuth2SponsoredProjectApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@delete']); + + Route::group(['prefix' => 'sponsorship-types'], function () { + Route::get('', 'OAuth2SponsoredProjectApiController@getAllSponsorshipTypes'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@addSponsorshipType']); + Route::group(['prefix' => '{sponsorship_type_id}'], function () { + + Route::get('', ['uses' => 'OAuth2SponsoredProjectApiController@getSponsorshipType']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@updateSponsorshipType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@deleteSponsorshipType']); + + Route::group(['prefix' => 'supporting-companies'], function () { + Route::get('', ['uses' => 'OAuth2SponsoredProjectApiController@getSupportingCompanies']); + Route::post('', ['uses' => 'OAuth2SponsoredProjectApiController@addSupportingCompanies']); + Route::group(['prefix' => '{company_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@getSupportingCompany']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@updateSupportingCompanies']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsoredProjectApiController@deleteSupportingCompanies']); + }); + }); + }); + }); + }); +}); + +// organizations +Route::group(['prefix' => 'organizations'], function () { + Route::get('', 'OAuth2OrganizationsApiController@getAll'); + Route::post('', 'OAuth2OrganizationsApiController@addOrganization'); +}); + +// groups +Route::group(['prefix' => 'groups'], function () { + Route::get('', 'OAuth2GroupsApiController@getAll'); +}); + +// summit-media-file-types +Route::group(['prefix' => 'summit-media-file-types'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@getAll']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@add']); + Route::group(['prefix' => '{id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaFileTypeApiController@delete']); + }); +}); + +// summits +Route::group(array('prefix' => 'summits'), function () { + + Route::get('', ['uses' => 'OAuth2SummitApiController@getSummits']); + + Route::group(['prefix' => 'all'], function () { + + Route::get('', 'OAuth2SummitApiController@getAllSummits'); + Route::get('{id}', 'OAuth2SummitApiController@getAllSummitByIdOrSlug'); + + Route::group(['prefix' => 'locations'], function () { + // GET /api/v1/summits/all/locations/bookable-rooms/all/reservations/{id} + Route::get('bookable-rooms/all/reservations/{id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getReservationById']); + }); + + Route::group(['prefix' => 'registration-invitations'], function () { + Route::group(['prefix' => '{token}'], function () { + Route::get('', ['uses' => 'OAuth2SummitRegistrationInvitationApiController@getInvitationByToken']); + }); + }); + + Route::group(['prefix' => 'orders'], function () { + Route::get('me', 'OAuth2SummitOrdersApiController@getAllMyOrders'); + + Route::group(['prefix' => 'all'], function () { + Route::group(['prefix' => 'tickets'], function () { + Route::group(['prefix' => '{ticket_id}'], function () { + Route::put('', 'OAuth2SummitOrdersApiController@updateTicketById'); + Route::get('pdf', 'OAuth2SummitOrdersApiController@getTicketPDFById'); + }); + + Route::group(['prefix' => 'me'], function () { + Route::get('', 'OAuth2SummitTicketApiController@getAllMyTickets'); + }); + }); + }); + + Route::group(['prefix' => '{order_id}'], function () { + Route::group(['prefix' => 'refund'], function () { + Route::delete('', 'OAuth2SummitOrdersApiController@requestRefundMyOrder'); + Route::delete('cancel', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@cancelRefundRequestOrder']); + }); + + Route::put('resend', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@reSendOrderEmail']); + Route::put('', 'OAuth2SummitOrdersApiController@updateMyOrder'); + Route::group(['prefix' => 'tickets'], function () { + Route::group(['prefix' => '{ticket_id}'], function () { + Route::get('pdf', 'OAuth2SummitOrdersApiController@getTicketPDFByOrderId'); + Route::group(['prefix' => 'refund'], function () { + Route::delete('', 'OAuth2SummitOrdersApiController@requestRefundMyTicket'); + Route::delete('cancel', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@cancelRefundRequestTicket']); + }); + + Route::group(['prefix' => 'attendee'], function () { + Route::put('', 'OAuth2SummitOrdersApiController@assignAttendee'); + Route::put('reinvite', 'OAuth2SummitOrdersApiController@reInviteAttendee'); + Route::delete('', 'OAuth2SummitOrdersApiController@removeAttendee'); + }); + }); + }); + }); + + }); + }); + + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@addSummit']); + + Route::group(['prefix' => '{id}'], function () { + + Route::group(['prefix' => 'metrics'], function () { + Route::put('enter', 'OAuth2SummitMetricsApiController@enter'); + Route::post('leave', 'OAuth2SummitMetricsApiController@leave'); + }); + + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@updateSummit']); + Route::post('logo', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@addSummitLogo']); + Route::delete('logo', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@deleteSummitLogo']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@deleteSummit']); + Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_summit_response_lifetime', 1200), 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); + + // selection plans crud + Route::group(['prefix' => 'selection-plans'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addSelectionPlan']); + Route::group(['prefix' => '{selection_plan_id}'], function () { + + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@updateSelectionPlan']); + Route::get('', ['uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlan']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@deleteSelectionPlan']); + + Route::group(['prefix' => 'track-groups'], function () { + Route::put('{track_group_id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addTrackGroupToSelectionPlan']); + Route::delete('{track_group_id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@deleteTrackGroupToSelectionPlan']); + }); + + // extra questions + + Route::group(['prefix' => 'extra-questions'], function(){ + Route::get('', ['uses' => 'OAuth2SummitSelectionPlansApiController@getExtraQuestions']); + Route::get('metadata', [ 'uses' => 'OAuth2SummitSelectionPlansApiController@getExtraQuestionsMetadata']); + Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addExtraQuestion']); + Route::group(['prefix' => '{question_id}'], function(){ + Route::get('', ['uses' => 'OAuth2SummitSelectionPlansApiController@getExtraQuestion']); + Route::put('', ['uses' => 'OAuth2SummitSelectionPlansApiController@updateExtraQuestion']); + Route::delete('', ['uses' => 'OAuth2SummitSelectionPlansApiController@deleteExtraQuestion']); + Route::group(['prefix' => 'values'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addExtraQuestionValue']); + Route::group(['prefix' => '{value_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@updateExtraQuestionValue']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@deleteExtraQuestionValue']); + }); + }); + }); + }); + + // presentations + + Route::group(['prefix' => 'presentations'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlanPresentations']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlanPresentationsCSV']); + Route::group(['prefix' => 'all'], function () { + // category-change-requests + Route::group(['prefix' => 'category-change-requests'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getAllPresentationCategoryChangeRequest']); + }); + }); + + Route::group(['prefix' => '{presentation_id}'], function () { + + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@getSelectionPlanPresentation']); + Route::put('view', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@markPresentationAsViewed']); + Route::group(['prefix' => 'comments'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@addCommentToPresentation']); + }); + + // category-change-requests + Route::group(['prefix' => 'category-change-requests'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@createPresentationCategoryChangeRequest']); + Route::group(['prefix' => '{category_change_request_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSelectionPlansApiController@resolvePresentationCategoryChangeRequest']); + }); + }); + + // presentation actions + + Route::group(['prefix' => 'actions'], function () { + Route::group(['prefix' => '{action_id}'], function () { + Route::put('complete', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionApiController@complete']); + Route::delete('incomplete', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionApiController@uncomplete']); + }); + }); + + }); + }); + }); + }); + + // RSVP templates + Route::group(['prefix' => 'rsvp-templates'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getAllBySummit']); + + Route::group(['prefix' => 'questions'], function () { + Route::get('metadata', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplateQuestionsMetadata']); + }); + + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@addRSVPTemplate']); + Route::group(['prefix' => '{template_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplate']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@updateRSVPTemplate']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@deleteRSVPTemplate']); + Route::group(['prefix' => 'questions'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@addRSVPTemplateQuestion']); + Route::group(['prefix' => '{question_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@updateRSVPTemplateQuestion']); + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplateQuestion']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@deleteRSVPTemplateQuestion']); + // multi values questions + Route::group(['prefix' => 'values'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@addRSVPTemplateQuestionValue']); + Route::group(['prefix' => '{value_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@getRSVPTemplateQuestionValue']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@updateRSVPTemplateQuestionValue']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRSVPTemplatesApiController@deleteRSVPTemplateQuestionValue']); + }); + }); + }); + }); + }); + }); + + Route::get('entity-events', 'OAuth2SummitApiController@getSummitEntityEvents'); + + // notifications + Route::group(['prefix' => 'notifications'], function () { + Route::get('sent', 'OAuth2SummitNotificationsApiController@getAllApprovedByUser'); + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@getAll']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@getAllCSV']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@addPushNotification']); + Route::group(['prefix' => '{notification_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@getById']); + Route::put('approve', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@approveNotification']); + Route::delete('approve', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@unApproveNotification']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitNotificationsApiController@deleteNotification']); + }); + }); + + // speakers + Route::group(['prefix' => 'speakers'], function () { + + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersApiController@addSpeakerBySummit']); + Route::get('', 'OAuth2SummitSpeakersApiController@getSpeakers'); + Route::get('on-schedule', 'OAuth2SummitSpeakersApiController@getSpeakersOnSchedule'); + Route::get('me', 'OAuth2SummitSpeakersApiController@getMySummitSpeaker'); + + Route::group(['prefix' => '{speaker_id}'], function () { + Route::get('', 'OAuth2SummitSpeakersApiController@getSummitSpeaker')->where('speaker_id', '[0-9]+'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersApiController@updateSpeakerBySummit'])->where('speaker_id', 'me|[0-9]+'); + }); + }); + + // speakers assistance + Route::group(['prefix' => 'speakers-assistances'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@getBySummit']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@getBySummitCSV']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@addSpeakerSummitAssistance']); + Route::group(['prefix' => '{assistance_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@getSpeakerSummitAssistanceBySummit']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@deleteSpeakerSummitAssistance']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@updateSpeakerSummitAssistance']); + Route::post('mail', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersAssistanceApiController@sendSpeakerSummitAssistanceAnnouncementMail']); + }); + }); + + // events + Route::group(array('prefix' => 'events'), function () { + + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@getEvents']); + + + Route::group(['prefix' => 'csv'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@getEventsCSV']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@importEventData']); + }); + // bulk actions + Route::delete('/publish', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@unPublishEvents']); + Route::put('/publish', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@updateAndPublishEvents']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@updateEvents']); + + Route::group(array('prefix' => 'unpublished'), function () { + Route::get('', 'OAuth2SummitEventsApiController@getUnpublishedEvents'); + //Route::get('{event_id}', 'OAuth2SummitEventsApiController@getUnpublisedEvent'); + }); + + Route::group(array('prefix' => 'published'), function () { + Route::get('', 'OAuth2SummitEventsApiController@getScheduledEvents'); + Route::get('/empty-spots', 'OAuth2SummitEventsApiController@getScheduleEmptySpots'); + }); + + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@addEvent']); + Route::group(['prefix' => '{event_id}'], function () { + + Route::post('/clone', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@cloneEvent']); + Route::get('', 'OAuth2SummitEventsApiController@getEvent'); + + Route::group(['prefix' => 'published'], function () { + Route::get('', [ 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvent']); + Route::post('mail', 'OAuth2SummitEventsApiController@shareScheduledEventByEmail'); + }); + + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@updateEvent']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@deleteEvent']); + Route::put('/publish', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@publishEvent']); + Route::delete('/publish', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@unPublishEvent']); + + Route::post('/attachment', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@addEventAttachment']); + + Route::group(['prefix' => 'feedback'], function () { + Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_event_feedback_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getEventFeedback']); + }); + + Route::group(['prefix' => 'image'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@addEventImage']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEventsApiController@deleteEventImage']); + }); + }); + }); + + // presentations + Route::group(['prefix' => 'presentations'], function () { + // opened without role CFP - valid selection plan on CFP status + Route::post('', 'OAuth2PresentationApiController@submitPresentation'); + // import from mux + Route::post('all/import/mux', 'OAuth2PresentationApiController@importAssetsFromMUX'); + + Route::group(['prefix' => '{presentation_id}'], function () { + + // opened without role CFP - valid selection plan on CFP status + Route::put('', 'OAuth2PresentationApiController@updatePresentationSubmission'); + + Route::put('completed', 'OAuth2PresentationApiController@completePresentationSubmission'); + + Route::delete('', 'OAuth2PresentationApiController@deletePresentation'); + + // videos + Route::group(['prefix' => 'videos'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationVideos'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@addVideo']); + Route::group(['prefix' => '{video_id}'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationVideo'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@updateVideo']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@deleteVideo']); + }); + }); + + // slides + Route::group(['prefix' => 'slides'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationSlides'); + Route::post('', 'OAuth2PresentationApiController@addPresentationSlide'); + Route::group(['prefix' => '{slide_id}'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationSlide'); + Route::put('', 'OAuth2PresentationApiController@updatePresentationSlide'); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@deletePresentationSlide']); + }); + }); + + // links + Route::group(['prefix' => 'links'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationLinks'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@addPresentationLink']); + Route::group(['prefix' => '{link_id}'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationLink'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@updatePresentationLink']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationApiController@deletePresentationLink']); + }); + }); + + // media uploads + + Route::group(['prefix' => 'media-uploads'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationMediaUploads'); + Route::post('', 'OAuth2PresentationApiController@addPresentationMediaUpload'); + Route::group(['prefix' => '{media_upload_id}'], function () { + Route::get('', 'OAuth2PresentationApiController@getPresentationMediaUpload'); + Route::put('', 'OAuth2PresentationApiController@updatePresentationMediaUpload'); + Route::delete('', 'OAuth2PresentationApiController@deletePresentationMediaUpload'); + }); + }); + }); + }); + + // locations + Route::group(['prefix' => 'locations'], function () { + + Route::get('', 'OAuth2SummitLocationsApiController@getLocations'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocation']); + + Route::get('metadata', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getMetadata']); + + // bookable-rooms + Route::group(['prefix' => 'bookable-rooms'], function () { + // GET /api/v1/summits/{id}/locations/bookable-rooms + Route::get('', 'OAuth2SummitLocationsApiController@getBookableVenueRooms'); + + Route::group(['prefix' => 'all'], function () { + Route::group(['prefix' => 'reservations'], function () { + // GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getAllReservationsBySummit']); + // GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/csv + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getAllReservationsBySummitCSV']); + // GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/me + Route::get('me', 'OAuth2SummitLocationsApiController@getMyBookableVenueRoomReservations'); + Route::group(['prefix' => '{reservation_id}'], function () { + // DELETE /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/{reservation_id} + Route::delete('', 'OAuth2SummitLocationsApiController@cancelMyBookableVenueRoomReservation'); + }); + }); + }); + + Route::group(['prefix' => '{room_id}'], function () { + // GET /api/v1/summits/{id}/locations/bookable-rooms/{room_id} + Route::get('', 'OAuth2SummitLocationsApiController@getBookableVenueRoom'); + // GET /api/v1/summits/{id}/locations/bookable-rooms/{room_id}/availability/{day} + Route::get('availability/{day}', 'OAuth2SummitLocationsApiController@getBookableVenueRoomAvailability'); + + Route::group(['prefix' => 'reservations'], function () { + // POST /api/v1/summits/{id}/locations/bookable-rooms/{room_id}/reservations + Route::post('', 'OAuth2SummitLocationsApiController@createBookableVenueRoomReservation'); + + Route::group(['prefix' => '{reservation_id}'], function () { + // GET /api/v1/summits/{id}/bookable-rooms/{room_id}/reservations/{reservation_id} + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@getBookableVenueRoomReservation']); + // DELETE /api/v1/summits/{id}/bookable-rooms/{room_id}/reservations/{reservation_id}/refund + Route::delete('refund', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@refundBookableVenueRoomReservation']); + }); + }); + + }); + }); + + // venues + + Route::group(['prefix' => 'venues'], function () { + + Route::get('', 'OAuth2SummitLocationsApiController@getVenues'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenue']); + + Route::group(['prefix' => '{venue_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenue']); + + Route::group(['prefix' => 'rooms'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueRoom']); + Route::group(['prefix' => '{room_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getVenueRoom'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueRoom']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueRoom']); + Route::group(['prefix' => 'image'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueRoomImage']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@removeVenueRoomImage']); + }); + }); + }); + + // bookable-rooms + Route::group(['prefix' => 'bookable-rooms'], function () { + // POST /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueBookableRoom']); + Route::group(['prefix' => '{room_id}'], function () { + // GET /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id} + Route::get('', 'OAuth2SummitLocationsApiController@getBookableVenueRoomByVenue'); + // PUT /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id} + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueBookableRoom']); + // DELETE /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id} + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueBookableRoom']); + // attributes + + Route::group(['prefix' => 'attributes'], function () { + Route::group(['prefix' => '{attribute_id}'], function () { + // PUT /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id}/attributes/{attribute_id} + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueBookableRoomAttribute']); + // DELETE /api/v1/summits/{id}/locations/venues/{venue_id}/bookable-rooms/{room_id}/attributes/{attribute_id} + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueBookableRoomAttribute']); + }); + + }); + }); + }); + + Route::group(['prefix' => 'floors'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloor']); + Route::group(['prefix' => '{floor_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getVenueFloor'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueFloor']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteVenueFloor']); + Route::group(['prefix' => 'image'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloorImage']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@removeVenueFloorImage']); + }); + Route::group(['prefix' => 'rooms'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloorRoom']); + Route::group(['prefix' => '{room_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getVenueFloorRoom'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueFloorRoom']); + }); + }); + Route::group(['prefix' => 'bookable-rooms'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addVenueFloorBookableRoom']); + Route::group(['prefix' => '{room_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getVenueFloorBookableRoom'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateVenueFloorBookableRoom']); + }); + }); + }); + }); + }); + }); + + Route::group(['prefix' => 'airports'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getAirports'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addAirport']); + Route::group(['prefix' => '{airport_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateAirport']); + }); + }); + + Route::group(['prefix' => 'hotels'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getHotels'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addExternalLocation']); + Route::group(['prefix' => '{hotel_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateExternalLocation']); + }); + }); + + Route::group(['prefix' => 'external-locations'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getExternalLocations'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addHotel']); + Route::group(['prefix' => '{external_location_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateHotel']); + }); + }); + + Route::group(['prefix' => '{location_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getLocation'); + + // locations maps + Route::group(['prefix' => 'maps'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocationMap']); + Route::group(['prefix' => '{map_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getLocationMap'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocationMap']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocationMap']); + }); + }); + + // locations images + Route::group(['prefix' => 'images'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocationImage']); + Route::group(['prefix' => '{image_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getLocationImage'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocationImage']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocationImage']); + }); + }); + + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocation']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocation']); + Route::get('/events/published', 'OAuth2SummitLocationsApiController@getLocationPublishedEvents')->where('location_id', 'tbd|[0-9]+'); + Route::get('/events', 'OAuth2SummitLocationsApiController@getLocationEvents')->where('location_id', 'tbd|[0-9]+'); + // location banners + Route::group(['prefix' => 'banners'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getLocationBanners'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@addLocationBanner']); + Route::group(['prefix' => '{banner_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@updateLocationBanner']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitLocationsApiController@deleteLocationBanner']); + }); + }); + }); + }); + + // bookable rooms attributes + Route::group(['prefix' => 'bookable-room-attribute-types'], function () { + Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getAllBookableRoomAttributeTypes'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@addBookableRoomAttributeType']); + Route::group(['prefix' => '{type_id}'], function () { + Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getBookableRoomAttributeType'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@updateBookableRoomAttributeType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@deleteBookableRoomAttributeType']); + Route::group(['prefix' => 'values'], function () { + Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getAllBookableRoomAttributeValues'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@addBookableRoomAttributeValue']); + Route::group(['prefix' => '{value_id}'], function () { + Route::get('', 'OAuth2SummitBookableRoomsAttributeTypeApiController@getBookableRoomAttributeValue'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@updateBookableRoomAttributeValue']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBookableRoomsAttributeTypeApiController@deleteBookableRoomAttributeValue']); + }); + }); + }); + }); + + // event types + Route::group(['prefix' => 'event-types'], function () { + Route::get('', 'OAuth2SummitsEventTypesApiController@getAllBySummit'); + Route::get('csv', 'OAuth2SummitsEventTypesApiController@getAllBySummitCSV'); + Route::post('seed-defaults', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@seedDefaultEventTypesBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@addEventTypeBySummit']); + Route::group(['prefix' => '{event_type_id}'], function () { + Route::get('', 'OAuth2SummitsEventTypesApiController@getEventTypeBySummit'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@updateEventTypeBySummit']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@deleteEventTypeBySummit']); + + Route::group(['prefix' => 'summit-documents'], function () { + Route::group(['prefix' => '{document_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@addSummitDocument']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsEventTypesApiController@removeSummitDocument']); + }); + }); + }); + }); + + // documents + Route::group(['prefix' => 'summit-documents'], function () { + Route::get('', 'OAuth2SummitDocumentsApiController@getAllBySummit'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@add']); + Route::group(['prefix' => '{document_id}'], function () { + Route::get('', 'OAuth2SummitDocumentsApiController@get'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@delete']); + Route::group(['prefix' => 'event-types'], function () { + Route::group(['prefix' => '{event_type_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@addEventType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitDocumentsApiController@removeEventType']); + }); + }); + }); + }); + + // ticket types + Route::group(['prefix' => 'ticket-types'], function () { + Route::get('', 'OAuth2SummitsTicketTypesApiController@getAllBySummit'); + Route::get('csv', 'OAuth2SummitsTicketTypesApiController@getAllBySummitCSV'); + Route::post('seed-defaults', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@seedDefaultTicketTypesBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@addTicketTypeBySummit']); + Route::group(['prefix' => '{ticket_type_id}'], function () { + Route::get('', 'OAuth2SummitsTicketTypesApiController@getTicketTypeBySummit'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@updateTicketTypeBySummit']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitsTicketTypesApiController@deleteTicketTypeBySummit']); + }); + }); + + // begin registration endpoints + + // tax-types + Route::group(['prefix' => 'tax-types'], function () { + Route::get('', ['uses' => 'OAuth2SummitTaxTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@add']); + Route::group(['prefix' => '{tax_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@delete']); + + Route::group(['prefix' => 'ticket-types'], function () { + Route::group(['prefix' => '{ticket_type_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@addTaxToTicketType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTaxTypeApiController@removeTaxFromTicketType']); + }); + }); + }); + }); + + // payment-gateway-profiles + Route::group(['prefix' => 'payment-gateway-profiles'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@add']); + Route::group(['prefix' => '{payment_profile_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PaymentGatewayProfileApiController@delete']); + }); + }); + + // refund-policies + Route::group(['prefix' => 'refund-policies'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@add']); + Route::group(['prefix' => '{policy_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRefundPolicyTypeApiController@delete']); + }); + }); + + // sponsors + Route::group(['prefix' => 'sponsors'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@add']); + Route::group(['prefix' => '{sponsor_id}'], function () { + Route::group(['prefix' => 'user-info-grants'], function () { + Route::post('me', ['uses' => 'OAuth2SummitBadgeScanApiController@addGrant']); + }); + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@delete']); + Route::group(['prefix' => 'users'], function () { + Route::group(['prefix' => '{member_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@addSponsorUser']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@removeSponsorUser']); + }); + }); + }); + }); + + // order-extra-questions + Route::group(['prefix' => 'order-extra-questions'], function () { + Route::get('metadata', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@getMetadata']); + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@add']); + Route::group(['prefix' => '{question_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@delete']); + Route::group(['prefix' => 'values'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@addQuestionValue']); + Route::group(['prefix' => '{value_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@updateQuestionValue']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrderExtraQuestionTypeApiController@deleteQuestionValue']); + }); + }); + }); + }); + + // access-levels + Route::group(['prefix' => 'access-level-types'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@add']); + Route::group(['prefix' => '{level_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAccessLevelTypeApiController@delete']); + }); + }); + + // badge-feature-types + Route::group(['prefix' => 'badge-feature-types'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@add']); + Route::group(['prefix' => '{feature_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@delete']); + Route::group(['prefix' => 'image'], function () { + Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@addFeatureImage']); + Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeFeatureTypeApiController@deleteFeatureImage']); + }); + }); + }); + + // badge-scans + Route::group(['prefix' => 'badge-scans'], function () { + Route::get('me', 'OAuth2SummitBadgeScanApiController@getAllMyBadgeScans'); + Route::get('', 'OAuth2SummitBadgeScanApiController@getAllBySummit'); + Route::get('csv', 'OAuth2SummitBadgeScanApiController@getAllBySummitCSV'); + Route::post('', "OAuth2SummitBadgeScanApiController@add"); + }); + + // badge-types + Route::group(['prefix' => 'badge-types'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@add']); + Route::group(['prefix' => '{badge_type_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@delete']); + Route::group(['prefix' => 'access-levels'], function () { + Route::group(['prefix' => '{access_level_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@addAccessLevelToBadgeType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@removeAccessLevelFromBadgeType']); + }); + }); + Route::group(['prefix' => 'features'], function () { + Route::group(['prefix' => '{feature_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@addFeatureToBadgeType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgeTypeApiController@removeFeatureFromBadgeType']); + }); + }); + + }); + }); + + // orders + Route::group(['prefix' => 'orders'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@getAllBySummit']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@getAllBySummitCSV']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@add']); + Route::group(['prefix' => '{order_id}', 'where' => [ + 'order_id' => '[0-9]+' + ]], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@delete']); + Route::delete('refund', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@refundOrder']); + + Route::group(['prefix' => 'tickets'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@addTicket']); + Route::group(['prefix' => '{ticket_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@updateTicket']); + Route::group(['prefix' => 'activate'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@activateTicket']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@deActivateTicket']); + }); + Route::get('pdf', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitOrdersApiController@getTicketPDFBySummit']); + }); + }); + }); + Route::post('reserve', 'OAuth2SummitOrdersApiController@reserve'); + Route::group(['prefix' => '{hash}', 'where' => [ + 'hash' => '[a-zA-Z0-9]+' + ]], function () { + Route::put('checkout', 'OAuth2SummitOrdersApiController@checkout'); + Route::group(['prefix' => 'tickets'], function () { + Route::get('mine', 'OAuth2SummitOrdersApiController@getMyTicketByOrderHash'); + }); + Route::delete('', 'OAuth2SummitOrdersApiController@cancel'); + }); + }); + + // tickets + Route::group(['prefix' => 'tickets'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@getAllBySummit']); + Route::group(['prefix' => 'csv'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@getAllBySummitCSV']); + Route::get('template', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@getImportTicketDataTemplate']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@importTicketData']); + }); + + Route::post('ingest', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@ingestExternalTicketData']); + + Route::group(['prefix' => '{ticket_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@get']); + // badge endpoints + Route::group(['prefix' => 'badge'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@createAttendeeBadge']); + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@getAttendeeBadge']); + Route::group(['prefix' => 'current'], function () { + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@deleteAttendeeBadge']); + Route::put('print', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@printAttendeeBadge']); + Route::group(['prefix' => 'features'], function () { + Route::group(['prefix' => '{feature_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@addAttendeeBadgeFeature']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@removeAttendeeBadgeFeature']); + }); + }); + Route::group(['prefix' => 'type'], function () { + Route::group(['prefix' => '{type_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@updateAttendeeBadgeType']); + }); + }); + }); + }); + // badge endpoints + Route::delete('refund', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTicketApiController@refundTicket']); + }); + }); + + // attendees + Route::group(array('prefix' => 'attendees'), function () { + + Route::group(['prefix' => 'all'], function () { + Route::put('send', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@send']); + }); + + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@getAttendeesBySummit']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@getAttendeesBySummitCSV']); + Route::get('me', 'OAuth2SummitAttendeesApiController@getOwnAttendee'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@addAttendee']); + + Route::group(array('prefix' => '{attendee_id}'), function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@getAttendee']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@updateAttendee']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@deleteAttendee']); + // attendee schedule + Route::group(array('prefix' => 'schedule'), function () { + Route::get('', 'OAuth2SummitAttendeesApiController@getAttendeeSchedule')->where('attendee_id', 'me'); + + Route::group(array('prefix' => '{event_id}'), function () { + Route::post('', 'OAuth2SummitAttendeesApiController@addEventToAttendeeSchedule')->where('attendee_id', 'me|[0-9]+'); + Route::delete('', 'OAuth2SummitAttendeesApiController@removeEventFromAttendeeSchedule')->where('attendee_id', 'me|[0-9]+'); + Route::delete('/rsvp', 'OAuth2SummitAttendeesApiController@deleteEventRSVP')->where('attendee_id', 'me|[0-9]+'); + Route::put('/check-in', 'OAuth2SummitAttendeesApiController@checkingAttendeeOnEvent')->where('attendee_id', 'me|[0-9]+'); + }); + }); + + // attendee tickets + Route::group(array('prefix' => 'tickets'), function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@addAttendeeTicket']); + Route::group(array('prefix' => '{ticket_id}'), function () { + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@deleteAttendeeTicket']); + Route::group(array('prefix' => 'reassign'), function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@reassignAttendeeTicket']); + Route::put('{other_member_id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAttendeesApiController@reassignAttendeeTicketByMember']); + }); + }); + }); + }); + }); + + // invitations + Route::group(array('prefix' => 'registration-invitations'), function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@add']); + Route::group(['prefix' => 'csv'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@ingestInvitations']); + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@getAllBySummitCSV']); + }); + + Route::group(['prefix' => 'all'], function () { + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@deleteAll']); + Route::put('send', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@send']); + }); + + Route::group(['prefix' => '{invitation_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@update'])->where('invitation_id', '[0-9]+');; + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@get'])->where('invitation_id', '[0-9]+');; + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitRegistrationInvitationApiController@delete'])->where('invitation_id', '[0-9]+');; + }); + + + }); + + // badges + Route::group(['prefix' => 'badges'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgesApiController@getAllBySummit']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitBadgesApiController@getAllBySummitCSV']); + }); + + // external orders @todo to deprecate + Route::group(['prefix' => 'external-orders'], function () { + Route::get('{external_order_id}', 'OAuth2SummitApiController@getExternalOrder'); + Route::post('{external_order_id}/external-attendees/{external_attendee_id}/confirm', 'OAuth2SummitApiController@confirmExternalOrderAttendee'); + }); + + // members + Route::group(array('prefix' => 'members'), function () { + Route::get("", ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMembersApiController@getAllBySummit']); + Route::get("csv", ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMembersApiController@getAllBySummitCSV']); + Route::group(array('prefix' => '{member_id}'), function () { + + Route::get('', 'OAuth2SummitMembersApiController@getMyMember')->where('member_id', 'me'); + + + // favorites + Route::group(['prefix' => 'favorites'], function () { + Route::get('', 'OAuth2SummitMembersApiController@getMemberFavoritesSummitEvents')->where('member_id', 'me'); + + Route::group(array('prefix' => '{event_id}'), function () { + Route::post('', 'OAuth2SummitMembersApiController@addEventToMemberFavorites')->where('member_id', 'me'); + Route::delete('', 'OAuth2SummitMembersApiController@removeEventFromMemberFavorites')->where('member_id', 'me'); + }); + }); + + // schedule + Route::group(array('prefix' => 'schedule'), function () { + Route::get('', 'OAuth2SummitMembersApiController@getMemberScheduleSummitEvents')->where('member_id', 'me'); + + Route::group(['prefix' => 'shareable-link'], function () { + Route::post('', 'OAuth2SummitMembersApiController@createScheduleShareableLink')->where('member_id', 'me'); + Route::delete('', 'OAuth2SummitMembersApiController@revokeScheduleShareableLink')->where('member_id', 'me'); + }); + + Route::group(array('prefix' => '{event_id}'), function () { + + Route::group(['prefix' => 'rsvp'], function () { + Route::post('', 'OAuth2SummitMembersApiController@addEventRSVP')->where('member_id', 'me'); + Route::put('', 'OAuth2SummitMembersApiController@updateEventRSVP')->where('member_id', 'me'); + Route::delete('', 'OAuth2SummitMembersApiController@deleteEventRSVP')->where('member_id', 'me'); + }); + + Route::group(['prefix' => 'feedback'], function () { + Route::get('', 'OAuth2SummitMembersApiController@getMyEventFeedback')->where('member_id', 'me'); + Route::post('', 'OAuth2SummitMembersApiController@addMyEventFeedback')->where('member_id', 'me'); + Route::put('', 'OAuth2SummitMembersApiController@updateMyEventFeedback')->where('member_id', 'me'); + Route::delete('', 'OAuth2SummitMembersApiController@deleteMyEventFeedback')->where('member_id', 'me'); + }); + + Route::post('', 'OAuth2SummitMembersApiController@addEventToMemberSchedule')->where('member_id', 'me'); + Route::delete('', 'OAuth2SummitMembersApiController@removeEventFromMemberSchedule')->where('member_id', 'me'); + + + Route::put('enter', 'OAuth2SummitMetricsApiController@enterToEvent')->where('member_id', 'me'); + Route::post('leave', 'OAuth2SummitMetricsApiController@leaveFromEvent')->where('member_id', 'me'); + }); + }); + }); + + }); + + // tracks + Route::group(['prefix' => 'tracks'], function () { + Route::get('', 'OAuth2SummitTracksApiController@getAllBySummit'); + Route::get('csv', 'OAuth2SummitTracksApiController@getAllBySummitCSV'); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@addTrackBySummit']); + Route::post('copy/{to_summit_id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@copyTracksToSummit']); + Route::group(['prefix' => '{track_id}'], function () { + Route::get('', 'OAuth2SummitTracksApiController@getTrackBySummit'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@updateTrackBySummit']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@deleteTrackBySummit']); + + Route::group(['prefix' => 'allowed-tags'], function () { + Route::get('', 'OAuth2SummitTracksApiController@getTrackAllowedTagsBySummit'); + }); + + Route::group(['prefix' => 'icon'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@addTrackIcon']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTracksApiController@deleteTrackIcon']); + }); + + Route::group(['prefix' => 'extra-questions'], function () { + Route::get('', 'OAuth2SummitTracksApiController@getTrackExtraQuestionsBySummit'); + Route::group(['prefix' => '{question_id}'], function () { + + Route::put('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTracksApiController@addTrackExtraQuestion'] + ); + + Route::delete('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTracksApiController@removeTrackExtraQuestion' + ]); + }); + }); + + // selection lists ( track chairs ) + + Route::group(['prefix' => 'selection-lists'], function () { + + Route::group(['prefix' => 'team'], function () { + Route::get('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@getTeamSelectionList' + ]); + + Route::post('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@createTeamSelectionList' + ]); + }); + + Route::group(['prefix' => 'individual'], function () { + Route::group(['prefix' => 'owner'], function () { + + Route::group(['prefix' => 'me'], function () { + Route::post('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@createIndividualSelectionList' + ]); + }); + + Route::group(['prefix' => '{owner_id}'], function () { + Route::get('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@getIndividualSelectionList' + ]); + }); + + }); + }); + + Route::group(['prefix' => 'individual'], function () { + + Route::group(['prefix' => 'presentation-selections'], function () { + + Route::group(['prefix' => '{collection}'], function () { + + Route::group(['prefix' => 'presentations'], function () { + + Route::group(['prefix' => '{presentation_id}'], function () { + + Route::post('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@assignPresentationToMyIndividualList' + ]); + + Route::delete('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@removePresentationFromMyIndividualList' + ]); + + }); + + }); + + }); + + }); + + }); + + Route::group(['prefix' => '{list_id}'], function () { + Route::put('reorder', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitSelectedPresentationListApiController@reorderSelectionList' + ]); + }); + }); + + }); + }); + + // track chairs + Route::group(['prefix' => 'track-chairs'], function () { + Route::get('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackChairsApiController@getAllBySummit' + ]); + + Route::get('csv', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackChairsApiController@getAllBySummitCSV' + ]); + + Route::post('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackChairsApiController@add' + ]); + + Route::group(['prefix' => '{track_chair_id}'], function () { + + Route::get('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackChairsApiController@get' + ]); + + Route::put('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackChairsApiController@update' + ]); + Route::delete('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackChairsApiController@delete' + ]); + + Route::group(['prefix' => 'categories'], function () { + Route::group(['prefix' => '{track_id}'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTrackChairsApiController@addTrack2TrackChair']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitTrackChairsApiController@removeFromTrackChair']); + }); + }); + }); + }); + + // track groups + Route::group(['prefix' => 'track-groups'], function () { + Route::get('', 'OAuth2PresentationCategoryGroupController@getAllBySummit'); + Route::get('csv', 'OAuth2PresentationCategoryGroupController@getAllBySummitCSV'); + Route::get('metadata', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@getMetadata']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@addTrackGroupBySummit']); + + Route::group(['prefix' => '{track_group_id}'], function () { + Route::get('', 'OAuth2PresentationCategoryGroupController@getTrackGroupBySummit'); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@updateTrackGroupBySummit']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@deleteTrackGroupBySummit']); + + Route::group(['prefix' => 'tracks'], function () { + + Route::group(['prefix' => '{track_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@associateTrack2TrackGroup']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@disassociateTrack2TrackGroup']); + }); + }); + Route::group(['prefix' => 'allowed-groups'], function () { + + Route::group(['prefix' => '{group_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@associateAllowedGroup2TrackGroup']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2PresentationCategoryGroupController@disassociateAllowedGroup2TrackGroup']); + }); + }); + }); + }); + + // promo codes + Route::group(['prefix' => 'promo-codes'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getAllBySummit']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getAllBySummitCSV']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@addPromoCodeBySummit']); + Route::get('metadata', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getMetadata']); + Route::group(['prefix' => '{promo_code_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@getPromoCodeBySummit']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@updatePromoCodeBySummit']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@deletePromoCodeBySummit']); + Route::post('mail', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@sendPromoCodeMail']); + Route::group(['prefix' => 'badge-features'], function () { + Route::group(['prefix' => '{badge_feature_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@addBadgeFeatureToPromoCode']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@removeBadgeFeatureFromPromoCode']); + }); + }); + + Route::group(['prefix' => 'ticket-types'], function () { + Route::group(['prefix' => '{ticket_type_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@addTicketTypeToPromoCode']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPromoCodesApiController@removeTicketTypeFromPromoCode']); + }); + }); + }); + }); + + // track tag groups + Route::group(['prefix' => 'track-tag-groups'], function () { + + Route::get('', ['uses' => 'OAuth2SummitTrackTagGroupsApiController@getTrackTagGroupsBySummit']); + + Route::post('', ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@addTrackTagGroup']); + + Route::post('seed-defaults', ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@seedDefaultTrackTagGroups']); + + Route::group(['prefix' => '{track_tag_group_id}'], function () { + Route::get('', ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@getTrackTagGroup']); + Route::put('', ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@updateTrackTagGroup']); + Route::delete('', ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@deleteTrackTagGroup']); + + Route::group(['prefix' => 'allowed-tags'], function () { + + Route::group(['prefix' => 'all'], function () { + Route::post('copy/tracks/{track_id}', + ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@seedTagTrackGroupOnTrack']); + }); + }); + + }); + + Route::group(['prefix' => 'all'], function () { + Route::group(['prefix' => 'allowed-tags'], function () { + + Route::get('', ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@getAllowedTags']); + + + Route::group(['prefix' => '{tag_id}'], function () { + Route::post('seed-on-tracks', + ['middleware' => 'auth.user', + 'uses' => 'OAuth2SummitTrackTagGroupsApiController@seedTagOnAllTracks']); + }); + }); + }); + }); + + // email-flows-events + Route::group(['prefix' => 'email-flows-events'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@getAllBySummit']); + Route::group(['prefix' => '{event_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitEmailEventFlowApiController@delete']); + }); + }); + + // media-upload-types + + Route::group(['prefix' => 'media-upload-types'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@getAllBySummit']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@add']); + Route::group(['prefix' => '{media_upload_type_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@delete']); + Route::group(['prefix' => 'presentation-types'], function () { + Route::group(['prefix' => '{event_type_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@addToPresentationType']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@deleteFromPresentationType']); + }); + }); + }); + + Route::group(['prefix' => 'all'], function () { + Route::post('clone/{to_summit_id}', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitMediaUploadTypeApiController@cloneMediaUploadTypes']); + }); + }); + + // featured speakers + + Route::group(['prefix' => 'featured-speakers'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@getAllFeatureSpeaker']); + Route::group(['prefix' => '{speaker_id}'], function () { + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@addFeatureSpeaker']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitApiController@removeFeatureSpeaker']); + }); + }); + + // presentation action types + + Route::group(['prefix' => 'presentation-action-types'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@getAllBySummit']); + Route::get('csv', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@getAllBySummitCSV']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@add']); + Route::group(['prefix' => '{action_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitPresentationActionTypeApiController@delete']); + }); + }); + + }); +}); + +// sponsorship-types +Route::group(['prefix' => 'sponsorship-types'], function () { + Route::get('', ['uses' => 'OAuth2SponsorshipTypeApiController@getAll']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsorshipTypeApiController@add']); + Route::group(['prefix' => '{id}'], function () { + Route::get('', ['uses' => 'OAuth2SponsorshipTypeApiController@get']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsorshipTypeApiController@update']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SponsorshipTypeApiController@delete']); + }); +}); + +// speakers +Route::group(['prefix' => 'speakers'], function () { + + Route::get('', 'OAuth2SummitSpeakersApiController@getAll'); + Route::post('', 'OAuth2SummitSpeakersApiController@addSpeaker'); + Route::put('merge/{speaker_from_id}/{speaker_to_id}', 'OAuth2SummitSpeakersApiController@merge'); + + Route::group(['prefix' => 'active-involvements'], function () { + Route::get('', 'OAuth2SpeakerActiveInvolvementApiController@getAll'); + }); + + Route::group(['prefix' => 'organizational-roles'], function () { + Route::get('', 'OAuth2SpeakerOrganizationalRoleApiController@getAll'); + }); + + Route::group(['prefix' => 'me'], function () { + Route::get('', 'OAuth2SummitSpeakersApiController@getMySpeaker'); + Route::post('', 'OAuth2SummitSpeakersApiController@createMySpeaker'); + Route::put('', 'OAuth2SummitSpeakersApiController@updateMySpeaker'); + Route::post('/photo', 'OAuth2SummitSpeakersApiController@addMySpeakerPhoto'); + + Route::group(['prefix' => 'presentations'], function () { + + Route::group(['prefix' => '{presentation_id}'], function () { + + Route::group(['prefix' => 'speakers'], function () { + Route::put('{speaker_id}', 'OAuth2SummitSpeakersApiController@addSpeakerToMyPresentation'); + Route::delete('{speaker_id}', 'OAuth2SummitSpeakersApiController@removeSpeakerFromMyPresentation'); + }); + Route::group(['prefix' => 'moderators'], function () { + Route::put('{speaker_id}', 'OAuth2SummitSpeakersApiController@addModeratorToMyPresentation'); + Route::delete('{speaker_id}', 'OAuth2SummitSpeakersApiController@removeModeratorFromMyPresentation'); + }); + }); + Route::group(['prefix' => '{role}'], function () { + Route::group(['prefix' => 'selection-plans'], function () { + Route::group(['prefix' => '{selection_plan_id}'], function () { + Route::get("", "OAuth2SummitSpeakersApiController@getMySpeakerPresentationsByRoleAndBySelectionPlan") + ->where('role', 'creator|speaker|moderator'); + }); + }); + + Route::group(['prefix' => 'summits'], function () { + Route::group(['prefix' => '{summit_id}'], function () { + Route::get("", "OAuth2SummitSpeakersApiController@getMySpeakerPresentationsByRoleAndBySummit") + ->where('role', 'creator|speaker|moderator'); + }); + }); + }); + }); + }); + + Route::group(['prefix' => '{speaker_id}'], function () { + Route::put('/edit-permission', 'OAuth2SummitSpeakersApiController@requestSpeakerEditPermission')->where('speaker_id', '[0-9]+'); + Route::get('/edit-permission', 'OAuth2SummitSpeakersApiController@getSpeakerEditPermission')->where('speaker_id', '[0-9]+'); + Route::put('', 'OAuth2SummitSpeakersApiController@updateSpeaker')->where('speaker_id', 'me|[0-9]+'); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSpeakersApiController@deleteSpeaker'])->where('speaker_id', 'me|[0-9]+'); + Route::get('', 'OAuth2SummitSpeakersApiController@getSpeaker'); + // speaker photos + Route::group(['prefix' => 'photo'], function () { + Route::post('', ['uses' => 'OAuth2SummitSpeakersApiController@addSpeakerPhoto']); + Route::delete('', ['uses' => 'OAuth2SummitSpeakersApiController@deleteSpeakerPhoto']); + }); + + Route::group(['prefix' => 'big-photo'], function () { + Route::post('', ['uses' => 'OAuth2SummitSpeakersApiController@addSpeakerBigPhoto']); + Route::delete('', ['uses' => 'OAuth2SummitSpeakersApiController@deleteSpeakerBigPhoto']); + }); + + }); +}); + +// track question templates +Route::group(['prefix' => 'track-question-templates'], function () { + + Route::get('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplates']); + Route::get('metadata', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplateMetadata' + ]); + + Route::post('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2TrackQuestionsTemplateApiController@addTrackQuestionTemplate']); + + Route::group(['prefix' => '{track_question_template_id}'], function () { + + Route::get('', ['middleware' => 'auth.user', + 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplate']); + + Route::put('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2TrackQuestionsTemplateApiController@updateTrackQuestionTemplate']); + + Route::delete('', [ + 'middleware' => 'auth.user', + 'uses' => 'OAuth2TrackQuestionsTemplateApiController@deleteTrackQuestionTemplate']); + + // multi values questions + Route::group(['prefix' => 'values'], function () { + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@addTrackQuestionTemplateValue']); + Route::group(['prefix' => '{track_question_template_value_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@getTrackQuestionTemplateValue']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@updateTrackQuestionTemplateValue']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2TrackQuestionsTemplateApiController@deleteTrackQuestionTemplateValue']); + }); + }); + }); +}); + +// summit-administrator-groups +Route::group(['prefix' => 'summit-administrator-groups'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@getAll']); + Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@add']); + Route::group(['prefix' => '{group_id}'], function () { + Route::get('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@get']); + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@delete']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@update']); + + Route::group(['prefix' => 'members'], function () { + Route::group(['prefix' => '{member_id}'], function () { + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@addMember']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@removeMember']); + }); + }); + + Route::group(['prefix' => 'summits'], function () { + Route::group(['prefix' => '{summit_id}'], function () { + Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@addSummit']); + Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitAdministratorPermissionGroupApiController@removeSummit']); + }); + }); + }); +}); + + diff --git a/routes/api_v2.php b/routes/api_v2.php new file mode 100644 index 00000000..9ecacc61 --- /dev/null +++ b/routes/api_v2.php @@ -0,0 +1,37 @@ + 'summits'], function () { + + Route::group(['prefix' => '{id}'], function () { + + Route::get('', ['uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); + // events + Route::group(['prefix' => 'events'], function () { + + Route::group(['prefix' => '{event_id}'], function () { + Route::group(['prefix' => 'feedback'], function () { + Route::post('', 'OAuth2SummitEventsApiController@addMyEventFeedbackReturnId'); + Route::put('', 'OAuth2SummitEventsApiController@updateMyEventFeedbackReturnId'); + }); + }); + }); + }); +}); diff --git a/routes/channels.php b/routes/channels.php new file mode 100644 index 00000000..f16a20b9 --- /dev/null +++ b/routes/channels.php @@ -0,0 +1,16 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 00000000..75dd0cde --- /dev/null +++ b/routes/console.php @@ -0,0 +1,18 @@ +comment(Inspiring::quote()); +})->describe('Display an inspiring quote'); diff --git a/routes/public_api.php b/routes/public_api.php new file mode 100644 index 00000000..eff75372 --- /dev/null +++ b/routes/public_api.php @@ -0,0 +1,237 @@ + 'sponsored-projects'], function(){ + Route::get('', 'OAuth2SponsoredProjectApiController@getAll'); + Route::group(['prefix'=>'{id}'], function(){ + Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@get']); + Route::group(['prefix'=>'sponsorship-types'], function(){ + Route::get('', 'OAuth2SponsoredProjectApiController@getAllSponsorshipTypes'); + Route::group(['prefix'=>'{sponsorship_type_id}'], function(){ + Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@getSponsorshipType']); + Route::group(['prefix'=>'supporting-companies'], function(){ + Route::get('', [ 'uses' => 'OAuth2SponsoredProjectApiController@getSupportingCompanies']); + }); + }); + }); + }); +}); + +// files +Route::group(['prefix' => 'files'], function () { + Route::post('upload', 'OAuth2ChunkedFilesApiController@uploadFile'); +}); + +// members +Route::group(['prefix' => 'members'], function () { + Route::get('', 'OAuth2MembersApiController@getAll'); +}); + +// members +Route::group(['prefix' => 'legal-documents'], function () { + Route::get('{id}', 'OAuth2LegalDocumentsApiController@getById'); +}); + +// speakers +Route::group(['prefix' => 'speakers'], function () { + Route::group(['prefix' => '{speaker_id}'], function () { + Route::group(['prefix' => 'edit-permission'], function () { + Route::group(['prefix' => '{token}'], function () { + Route::get('approve', 'OAuth2SummitSpeakersApiController@approveSpeakerEditPermission'); + Route::get('decline', 'OAuth2SummitSpeakersApiController@declineSpeakerEditPermission'); + }); + }); + }); +}); + +// summits +Route::group(['prefix' => 'summits'], function () { + Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_summit_response_lifetime', 600), 'uses' => 'OAuth2SummitApiController@getSummits']); + + Route::group(['prefix' => 'all'], function () { + + Route::get('', 'OAuth2SummitApiController@getAllSummits'); + Route::get('current', 'OAuth2SummitApiController@getAllCurrentSummit'); + Route::get('{id}', 'OAuth2SummitApiController@getAllSummitByIdOrSlug'); + + Route::group(['prefix' => 'payments'], function () { + Route::group(['prefix' => '{application_name}'], function () { + Route::post('confirm', 'PaymentGatewayWebHookController@genericConfirm'); + }); + }); + + Route::group(['prefix' => 'orders'], function () { + Route::group(['prefix' => '{order_hash}'], function () { + Route::group(['prefix' => 'tickets'], function () { + Route::put('', "OAuth2SummitOrdersApiController@updateTicketsByOrderHash"); + }); + }); + + Route::group(['prefix' => 'all'], function () { + Route::group(['prefix' => 'tickets'], function () { + Route::group(['prefix' => '{hash}'], function () { + Route::get('', "OAuth2SummitOrdersApiController@getTicketByHash"); + Route::put('', "OAuth2SummitOrdersApiController@updateTicketByHash"); + Route::put('regenerate', "OAuth2SummitOrdersApiController@regenerateTicketHash"); + Route::get('pdf', "OAuth2SummitOrdersApiController@getTicketPDFByHash"); + }); + }); + }); + }); + }); + + Route::group(['prefix' => '{id}'], function () { + + Route::group(['prefix' => 'payments'], function () { + Route::group(['prefix' => '{application_name}'], function () { + Route::post('confirm', 'PaymentGatewayWebHookController@confirm'); + }); + }); + + Route::group(['prefix' => 'selection-plans'], function () { + Route::get('current/{status}', 'OAuth2SummitSelectionPlansApiController@getCurrentSelectionPlanByStatus')->where('status', 'submission|selection|voting'); + }); + + Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_summit_response_lifetime', 1200), 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); + // members + Route::group(['prefix' => 'members'], function () { + Route::group(['prefix' => 'all'], function () { + Route::group(['prefix' => 'schedule'], function () { + Route::group(['prefix' => 'ics'], function () { + Route::get('{cid}', 'OAuth2SummitMembersApiController@getCalendarFeedICS'); + }); + }); + }); + }); + // events + Route::group(['prefix' => 'events'], function () { + Route::group(['prefix' => 'published'], function () { + Route::get('', ['middleware' => 'cache:1200', 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvents']); + }); + + Route::group(array('prefix' => '{event_id}'), function () { + Route::group(['prefix' => 'published'], function () { + Route::get('', ['middleware' => 'cache:' . Config::get('cache_api_response.get_published_event_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvent']); + }); + }); + + Route::group(['prefix' => 'all'], function () { + Route::group(['prefix' => 'published'], function () { + Route::get('tags', 'OAuth2SummitEventsApiController@getScheduledEventsTags'); + }); + }); + }); + // locations + Route::group(['prefix' => 'locations'], function () { + Route::group(['prefix' => '{location_id}'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getLocation'); + Route::get('/events/published', 'OAuth2SummitLocationsApiController@getLocationPublishedEvents'); + Route::group(['prefix' => 'banners'], function () { + Route::get('', 'OAuth2SummitLocationsApiController@getLocationBanners'); + }); + }); + }); + // notifications + Route::group(['prefix' => 'notifications'], function () { + Route::get('sent', 'OAuth2SummitNotificationsApiController@getAllApprovedByUser'); + }); + // speakers + Route::group(['prefix' => 'speakers'], function () { + Route::get('', 'OAuth2SummitSpeakersApiController@getSpeakers'); + Route::group(['prefix' => '{speaker_id}'], function () { + Route::get('', 'OAuth2SummitSpeakersApiController@getSummitSpeaker')->where('speaker_id', '[0-9]+'); + }); + }); + // orders + Route::group(['prefix' => 'orders'], function () { + Route::post('reserve', 'OAuth2SummitOrdersApiController@reserve'); + Route::group(['prefix' => '{hash}'], function () { + Route::put('checkout', 'OAuth2SummitOrdersApiController@checkout'); + Route::group(['prefix' => 'tickets'], function () { + Route::get('mine', 'OAuth2SummitOrdersApiController@getMyTicketByOrderHash'); + }); + Route::delete('', 'OAuth2SummitOrdersApiController@cancel'); + }); + }); + // registration invitations + Route::group(['prefix' => 'registration-invitations'], function () { + Route::group(['prefix' => '{email}'], function () { + Route::get('', 'OAuth2SummitOrdersApiController@getByEmail'); + }); + }); + + // taxes types -- only dev + + if(\Illuminate\Support\Facades\App::environment("dev")){ + Route::group(['prefix' => 'tax-types'], function () { + Route::get('', ['uses' => 'OAuth2SummitTaxTypeApiController@getAllBySummit']); + Route::post('', ['uses' => 'OAuth2SummitTaxTypeApiController@add']); + Route::group(['prefix' => '{tax_id}'], function () { + Route::get('', [ 'uses' => 'OAuth2SummitTaxTypeApiController@get']); + Route::put('', [ 'uses' => 'OAuth2SummitTaxTypeApiController@update']); + Route::delete('', ['uses' => 'OAuth2SummitTaxTypeApiController@delete']); + }); + }); + } + }); +}); + +// marketplace +Route::group(array('prefix' => 'marketplace'), function () { + + Route::group(array('prefix' => 'appliances'), function () { + Route::get('', 'AppliancesApiController@getAll'); + }); + + Route::group(array('prefix' => 'distros'), function () { + Route::get('', 'DistributionsApiController@getAll'); + }); + + Route::group(array('prefix' => 'consultants'), function () { + Route::get('', 'ConsultantsApiController@getAll'); + }); + + Route::group(array('prefix' => 'hosted-private-clouds'), function () { + Route::get('', 'PrivateCloudsApiController@getAll'); + }); + + Route::group(array('prefix' => 'remotely-managed-private-clouds'), function () { + Route::get('', 'RemoteCloudsApiController@getAll'); + }); + + Route::group(array('prefix' => 'public-clouds'), function () { + Route::get('', 'PublicCloudsApiController@getAll'); + }); +}); + +// countries +Route::group(array('prefix' => 'countries'), function () { + Route::get('', 'CountriesApiController@getAll'); +}); + +// languages +Route::group(array('prefix' => 'languages'), function () { + Route::get('', 'LanguagesApiController@getAll'); +}); + +// timezones +Route::group(array('prefix' => 'timezones'), function () { + Route::get('', 'TimezonesApiController@getAll'); +}); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 00000000..52401b6c --- /dev/null +++ b/routes/web.php @@ -0,0 +1,13 @@ +shouldIgnoreMissing(); - $app->instance(IAbstractCalendarSyncWorkRequestRepository::class, $repo_mock); - - $repo_mock = Mockery::mock(ICalendarSyncInfoRepository::class)->shouldIgnoreMissing(); - $app->instance(ICalendarSyncInfoRepository::class, $repo_mock); - return $app; - } - - public function testUpdateFourthSameEvent(){ - $preprocessor = App::make('App\Services\Model\AdminActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $mock_update_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_update_request1 = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request1->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request1->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_update_request2 = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request2->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request2->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_update_request3 = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request3->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request3->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $purged_requests = $preprocessor->preProcessActions([ - $mock_update_request, - $mock_update_request1, - $mock_update_request2, - $mock_update_request3 - ]); - - $this->assertTrue(count($purged_requests) == 1); - } - - public function testUpdateFourthTimesDeleteSameEvent(){ - $preprocessor = App::make('App\Services\Model\AdminActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $mock_update_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_update_request1 = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request1->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request1->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_update_request2 = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request2->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request2->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_update_request3 = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request3->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request3->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $mock_delete_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_delete_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_delete_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - - $purged_requests = $preprocessor->preProcessActions([ - $mock_update_request, - $mock_update_request1, - $mock_delete_request, - $mock_update_request2, - $mock_update_request3 - ]); - - $this->assertTrue(count($purged_requests) == 1); - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeUpdate); - } - - public function testDeleteUpdateSameEvent(){ - $preprocessor = App::make('App\Services\Model\AdminActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $mock_delete_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_delete_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_delete_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - - $mock_update_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $purged_requests = $preprocessor->preProcessActions([ - $mock_delete_request, - $mock_update_request - ]); - - $this->assertTrue(count($purged_requests) == 1); - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeUpdate); - } - - - public function testUpdateDeleteSameEvent(){ - - $preprocessor = App::make('App\Services\Model\AdminActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $mock_delete_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_delete_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_delete_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - - $mock_update_request = Mockery::mock(AdminSummitEventActionSyncWorkRequest::class); - $mock_update_request->shouldReceive('getSummitEvent')->andReturn($summit_event); - $mock_update_request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - - $purged_requests = $preprocessor->preProcessActions([ - $mock_update_request, - $mock_delete_request, - ]); - - $this->assertTrue(count($purged_requests) == 1); - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeRemove); - } - -} \ No newline at end of file diff --git a/tests/AttendeeServiceTest.php b/tests/AttendeeServiceTest.php index 358fafd3..0d9c0a1b 100644 --- a/tests/AttendeeServiceTest.php +++ b/tests/AttendeeServiceTest.php @@ -1,4 +1,4 @@ -getById(24); - $service->updateRedeemedPromoCodes($summit); } } \ No newline at end of file diff --git a/tests/BrowserKitTestCase.php b/tests/BrowserKitTestCase.php index 31f11fe5..f101a671 100644 --- a/tests/BrowserKitTestCase.php +++ b/tests/BrowserKitTestCase.php @@ -33,7 +33,7 @@ abstract class BrowserKitTestCase extends BaseTestCase */ protected $baseUrl = 'http://localhost'; - protected function setUp() + protected function setUp():void { parent::setUp(); // Don't forget this! $this->redis = Redis::connection(); @@ -49,11 +49,11 @@ abstract class BrowserKitTestCase extends BaseTestCase protected function prepareForTests() { Model::unguard(); + // clean up DB::setDefaultConnection("model"); DB::table('Group_Members')->delete(); DB::table('Member')->delete(); DB::table('Group')->delete(); - DB::table('Summit')->delete(); DB::table('SummitEventType')->delete(); DB::table('PresentationType')->delete(); @@ -62,8 +62,9 @@ abstract class BrowserKitTestCase extends BaseTestCase DB::table('SummitVenue')->delete(); DB::table('PresentationTrackChairView')->delete(); - Artisan::call('doctrine:migrations:migrate', ["--connection" => 'config']); - Artisan::call('doctrine:migrations:migrate', ["--connection" => 'model']); + Artisan::call('doctrine:migrations:migrate', ["--connection" => 'config', '--force'=> '']); + Artisan::call('doctrine:migrations:migrate', ["--connection" => 'model', '--force'=> '']); + //Mail::pretend(true); $this->seed('TestSeeder'); } diff --git a/tests/CountriesApiTest.php b/tests/CountriesApiTest.php index 28024a75..12e791cf 100644 --- a/tests/CountriesApiTest.php +++ b/tests/CountriesApiTest.php @@ -1,4 +1,4 @@ - 'at', + ], + [ + 'type_id' => 'at.id', + 'is_completed' => 'a.is_completed' ] ) ]); @@ -93,8 +96,11 @@ class FilterParserTest extends TestCase 'p.actions', "a", [ - 'type_id', - 'is_completed' + "type" => 'at', + ], + [ + 'type_id' => 'at.id', + 'is_completed' => 'a.is_completed' ] ) ]); diff --git a/tests/FolderServiceTest.php b/tests/FolderServiceTest.php index 75eecc8d..daeabd33 100644 --- a/tests/FolderServiceTest.php +++ b/tests/FolderServiceTest.php @@ -11,10 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ - - - - use App\Services\Model\IFolderService; use Illuminate\Support\Facades\App; /** diff --git a/tests/InsertMemberTestData.php b/tests/InsertMemberTestData.php index 8bb8bb1d..dcebbdce 100644 --- a/tests/InsertMemberTestData.php +++ b/tests/InsertMemberTestData.php @@ -1,4 +1,4 @@ -setApiFeedKey(""); self::$summit->setTimeZoneId("America/Chicago"); $time_zone = new DateTimeZone("America/Chicago"); - $begin_date = new \DateTime("now", $time_zone); + $begin_date = new DateTime("now", $time_zone); self::$summit->setBeginDate($begin_date); self::$summit->setEndDate((clone $begin_date)->add(new DateInterval("P30D"))); self::$summit->setRegistrationBeginDate($begin_date); @@ -166,12 +188,27 @@ trait InsertSummitTestData self::$secondaryTrack->setChairVisible(true); self::$secondaryTrack->setVotingVisible(true); - $track_group = new PresentationCategoryGroup(); - $track_group->setName("DEFAULT TRACK GROUP"); - $track_group->addCategory(self::$defaultTrack); + self::$defaultTrackGroup = new PresentationCategoryGroup(); + self::$defaultTrackGroup->setName("DEFAULT TRACK GROUP"); + self::$defaultTrackGroup->addCategory(self::$defaultTrack); + + self::$defaultTrackTagGroup = New TrackTagGroup(); + self::$defaultTrackTagGroup->setName("DEFAULT TRACK TAG GROUP"); + self::$defaultTrackTagGroup->setOrder(1); + self::$defaultTrackTagGroup->setLabel("DEFAULT TRACK TAG GROUP"); + + $tags = ['101','Case Study', 'Demo']; + + foreach ($tags as $t){ + $tag = new Tag($t); + self::$defaultTags[] = $tag; + self::$defaultTrackTagGroup->addTag($tag, false); + } + + self::$summit->addTrackTagGroup(self::$defaultTrackTagGroup); self::$summit->addPresentationCategory(self::$defaultTrack); self::$summit->addPresentationCategory(self::$secondaryTrack); - self::$summit->addCategoryGroup($track_group); + self::$summit->addCategoryGroup(self::$defaultTrackGroup); self::$defaultEventType = new PresentationType(); self::$defaultEventType->setType(IPresentationType::Presentation); @@ -197,7 +234,7 @@ trait InsertSummitTestData self::$default_selection_plan->setSelectionBeginDate($submission_begin_date); self::$default_selection_plan->setSelectionEndDate($submission_end_date); self::$default_selection_plan->setIsEnabled(true); - self::$default_selection_plan->addTrackGroup($track_group); + self::$default_selection_plan->addTrackGroup(self::$defaultTrackGroup); self::$summit->addSelectionPlan(self::$default_selection_plan); diff --git a/tests/LanguagesApiTest.php b/tests/LanguagesApiTest.php index f8669cd4..36994dab 100644 --- a/tests/LanguagesApiTest.php +++ b/tests/LanguagesApiTest.php @@ -1,4 +1,4 @@ -redis = Redis::connection(); diff --git a/tests/MemberActionsCalendarSyncPreProcessorTest.php b/tests/MemberActionsCalendarSyncPreProcessorTest.php deleted file mode 100644 index 91329293..00000000 --- a/tests/MemberActionsCalendarSyncPreProcessorTest.php +++ /dev/null @@ -1,307 +0,0 @@ -shouldIgnoreMissing(); - $app->instance(IAbstractCalendarSyncWorkRequestRepository::class, $repo_mock); - - $repo_mock = Mockery::mock(ICalendarSyncInfoRepository::class)->shouldIgnoreMissing(); - $app->instance(ICalendarSyncInfoRepository::class, $repo_mock); - return $app; - } - - public function testSynchronizedRemoveUpdateAdd(){ - - $preprocessor = App::make('App\Services\Model\MemberActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $member_mock = Mockery::mock(Member::class); - $member_mock->shouldReceive("isEventSynchronized")->andReturn(true); - - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class); - $calendar_sync_info->shouldReceive("getId")->andReturn(1); - - $request_delete_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_delete_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_delete_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - $request_delete_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_delete_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - $request_update_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_update_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_update_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - $request_update_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_update_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - $request_add_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_add_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_add_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request_add_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - $request_add_mock->shouldReceive("getOwner")->andReturn($member_mock); - - - // preconditions event id 1 is already synchronized with user external calendar - // we pass over the time this work load - // delete , update, add - // bc event is already synchronized, the purged actions should only emmit an update - $purged_requests = $preprocessor->preProcessActions([ - $request_delete_mock, - $request_update_mock, - $request_add_mock - ]); - - $this->assertTrue(count($purged_requests) == 1); - - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeUpdate); - } - - public function testSynchronizedRemoveAdd(){ - - $preprocessor = App::make('App\Services\Model\MemberActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $member_mock = Mockery::mock(Member::class); - $member_mock->shouldReceive("isEventSynchronized")->andReturn(true); - - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class); - $calendar_sync_info->shouldReceive("getId")->andReturn(1); - - $request_delete_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_delete_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_delete_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - $request_delete_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_delete_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - $request_add_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_add_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_add_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request_add_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - $request_add_mock->shouldReceive("getOwner")->andReturn($member_mock); - - - // preconditions event id 1 is already synchronized with user external calendar - // we pass over the time this work load - // delete , add - // bc event is already synchronized, the purged actions should only emmit zero elements ( no action) - $purged_requests = $preprocessor->preProcessActions([ - $request_delete_mock, - $request_add_mock - ]); - - $this->assertTrue(count($purged_requests) == 0); - } - - public function testSynchronizedRemoveUpdate(){ - - $preprocessor = App::make('App\Services\Model\MemberActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $member_mock = Mockery::mock(Member::class); - $member_mock->shouldReceive("isEventSynchronized")->andReturn(true); - - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class); - $calendar_sync_info->shouldReceive("getId")->andReturn(1); - - $request_delete_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_delete_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_delete_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - $request_delete_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_delete_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - $request_update_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_update_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_update_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - $request_update_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_update_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - - // preconditions event id 1 is already synchronized with user external calendar - // we pass over the time this work load - // delete, update - // bc event is already synchronized, the purged actions should only emmit an delete - $purged_requests = $preprocessor->preProcessActions([ - $request_delete_mock, - $request_update_mock, - ]); - - $this->assertTrue(count($purged_requests) == 1); - - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeRemove); - } - - public function testSynchronizedUpdateRemove(){ - - $preprocessor = App::make('App\Services\Model\MemberActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $member_mock = Mockery::mock(Member::class); - $member_mock->shouldReceive("isEventSynchronized")->andReturn(true); - - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class); - $calendar_sync_info->shouldReceive("getId")->andReturn(1); - - $request_delete_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_delete_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_delete_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - $request_delete_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_delete_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - $request_update_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_update_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_update_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeUpdate); - $request_update_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_update_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - - // preconditions event id 1 is already synchronized with user external calendar - // we pass over the time this work load - // update, delete - // bc event is already synchronized, the purged actions should only emmit an delete - $purged_requests = $preprocessor->preProcessActions([ - $request_update_mock, - $request_delete_mock, - ]); - - $this->assertTrue(count($purged_requests) == 1); - - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeRemove); - } - - public function testUnSynchronizedAddRemoveAdd(){ - - $preprocessor = App::make('App\Services\Model\MemberActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $member_mock = Mockery::mock(Member::class); - $member_mock->shouldReceive("isEventSynchronized")->andReturn(false); - - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class); - $calendar_sync_info->shouldReceive("getId")->andReturn(1); - - - $request_add_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_add_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_add_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request_add_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - $request_add_mock->shouldReceive("getOwner")->andReturn($member_mock); - - - $request_delete_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_delete_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_delete_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeRemove); - $request_delete_mock->shouldReceive("getOwner")->andReturn($member_mock); - $request_delete_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - - $request_add_mock2 = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_add_mock2->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_add_mock2->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request_add_mock2->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - $request_add_mock2->shouldReceive("getOwner")->andReturn($member_mock); - - - // preconditions event id 1 is not synchronized - // we pass over the time this work load - // add , delete, add - // bc event is already synchronized, the purged actions should only emmit 1 element : add - $purged_requests = $preprocessor->preProcessActions([ - $request_add_mock, - $request_delete_mock, - $request_add_mock2 - ]); - - $this->assertTrue(count($purged_requests) == 1); - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeAdd); - } - - public function testUnSynchronizedAddAdd(){ - - $preprocessor = App::make('App\Services\Model\MemberActionsCalendarSyncPreProcessor'); - - $summit_event = Mockery::mock(SummitEvent::class); - $summit_event->shouldReceive('getId')->andReturn(1); - - $member_mock = Mockery::mock(Member::class); - $member_mock->shouldReceive("isEventSynchronized")->andReturn(false); - - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class); - $calendar_sync_info->shouldReceive("getId")->andReturn(1); - - - $request_add_mock = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_add_mock->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_add_mock->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request_add_mock->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - $request_add_mock->shouldReceive("getOwner")->andReturn($member_mock); - - $request_add_mock2 = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class); - $request_add_mock2->shouldReceive('getSummitEvent')->andReturn($summit_event); - $request_add_mock2->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request_add_mock2->shouldReceive("getCalendarSyncInfo")->andReturn($calendar_sync_info); - $request_add_mock2->shouldReceive("getOwner")->andReturn($member_mock); - - - // preconditions event id 1 is not synchronized - // we pass over the time this work load - // add , delete, add - // bc event is already synchronized, the purged actions should only emmit 1 element : add - $purged_requests = $preprocessor->preProcessActions([ - $request_add_mock, - $request_add_mock2 - ]); - - $this->assertTrue(count($purged_requests) == 1); - $this->assertTrue($purged_requests[0]->getType() == AbstractCalendarSyncWorkRequest::TypeAdd); - } -} \ No newline at end of file diff --git a/tests/MuxImportTest.php b/tests/MuxImportTest.php index bcb6ce1e..f7eefd5f 100644 --- a/tests/MuxImportTest.php +++ b/tests/MuxImportTest.php @@ -21,7 +21,7 @@ use DateInterval; */ final class MuxImportTest extends TestCase { - use \InsertSummitTestData; + use InsertSummitTestData; protected function tearDown():void { diff --git a/tests/OAuth2AttendeesApiTest.php b/tests/OAuth2AttendeesApiTest.php index c805614a..1f2a636d 100644 --- a/tests/OAuth2AttendeesApiTest.php +++ b/tests/OAuth2AttendeesApiTest.php @@ -1,4 +1,4 @@ - 1 , 'per_page' => 10, - 'status' => ICompanyServiceRepository::Status_active, + 'status' => "active", ); $headers = array("HTTP_Authorization" => " Bearer " .$this->access_token); @@ -53,7 +52,7 @@ class OAuth2ConsultantApiTest extends ProtectedApiTest $params = array( 'page' => 1 , 'per_page' => 10, - 'status' => ICompanyServiceRepository::Status_active, + 'status' => "active", ); $headers = array( diff --git a/tests/OAuth2EventTypesApiTest.php b/tests/OAuth2EventTypesApiTest.php index d28f353b..776963b6 100644 --- a/tests/OAuth2EventTypesApiTest.php +++ b/tests/OAuth2EventTypesApiTest.php @@ -1,4 +1,4 @@ -setCurrentGroup(IGroup::TrackChairs); parent::setUp(); self::insertTestData(); self::$summit_permission_group->addMember(self::$member); + self::$summit_permission_group->addMember(self::$member2); self::$em->persist(self::$summit); self::$em->persist(self::$summit_permission_group); self::$em->flush(); @@ -32,7 +37,7 @@ final class OAuth2MembersApiTest extends ProtectedApiTest self::$em->flush(); } - public function tearDown() + public function tearDown():void { self::clearTestData(); Mockery::close(); @@ -375,31 +380,6 @@ final class OAuth2MembersApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } - public function testGetAllSummitPermissions(){ - self::$member2->addSummitEditPermission(self::$summit); - self::$member2->addSummitEditPermission(self::$summit2); - - $params = [ - 'order' => '-id' - ]; - - $headers = ["HTTP_Authorization" => " Bearer " . $this->access_token]; - $response = $this->action( - "GET", - "OAuth2MembersApiController@getAllSummitEditPermissions", - $params, - [], - [], - [], - $headers - ); - - $content = $response->getContent(); - $pemissions = json_decode($content); - $this->assertTrue(!is_null($pemissions)); - $this->assertResponseStatus(200); - } - public function testSignFoundationMembership(){ $params = [ 'member_id' => 'me', @@ -430,7 +410,7 @@ final class OAuth2MembersApiTest extends ProtectedApiTest public function testSignResignFoundationMembership(){ $params = [ - 'member_id' => 'me', + 'member_id' => 'me', ]; $headers = [ @@ -455,8 +435,8 @@ final class OAuth2MembersApiTest extends ProtectedApiTest $this->assertTrue(!is_null($member)); $response = $this->action( - "PUT", - "OAuth2MembersApiController@resignFoundationMembership", + "DELETE", + "OAuth2MembersApiController@resignMembership", $params, [], [], @@ -466,9 +446,7 @@ final class OAuth2MembersApiTest extends ProtectedApiTest ); $content = $response->getContent(); - $this->assertResponseStatus(201); - $member = json_decode($content); - $this->assertTrue(!is_null($member)); + $this->assertResponseStatus(204); return $member; } } \ No newline at end of file diff --git a/tests/OAuth2OAuth2SponsorshipTypeApiTest.php b/tests/OAuth2OAuth2SponsorshipTypeApiTest.php index 801d2ab8..0c4abd98 100644 --- a/tests/OAuth2OAuth2SponsorshipTypeApiTest.php +++ b/tests/OAuth2OAuth2SponsorshipTypeApiTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2PersonalCalendarShareInfoApiTest.php b/tests/OAuth2PersonalCalendarShareInfoApiTest.php index e4b84657..0392ace4 100644 --- a/tests/OAuth2PersonalCalendarShareInfoApiTest.php +++ b/tests/OAuth2PersonalCalendarShareInfoApiTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2PrivateCloudApiTest.php b/tests/OAuth2PrivateCloudApiTest.php index 2163e66b..76400766 100644 --- a/tests/OAuth2PrivateCloudApiTest.php +++ b/tests/OAuth2PrivateCloudApiTest.php @@ -1,4 +1,4 @@ - 1 , 'per_page' => 10, - 'status' => ICompanyServiceRepository::Status_active, + 'status' => "active", ); $headers = array("HTTP_Authorization" => " Bearer " .$this->access_token); diff --git a/tests/OAuth2PromoCodesApiTest.php b/tests/OAuth2PromoCodesApiTest.php index bf24df10..9fef26e0 100644 --- a/tests/OAuth2PromoCodesApiTest.php +++ b/tests/OAuth2PromoCodesApiTest.php @@ -1,4 +1,4 @@ -assertResponseStatus(201); $params = [ - 'status' => $status, + 'status' => $status, 'expand' => 'track_groups,summit' ]; @@ -401,7 +401,7 @@ final class OAuth2SelectionPlansApiTest extends ProtectedApiTest $this->assertResponseStatus(200); $presentations = json_decode($content); $this->assertTrue(!is_null($presentations)); - $this->assertTrue($presentations->total >= 1); + $this->assertTrue($presentations->total > 1); } public function testGetPresentationsBySelectionPlanAndConditionsCSV(){ @@ -466,11 +466,13 @@ final class OAuth2SelectionPlansApiTest extends ProtectedApiTest $params = [ 'id' => self::$summit->getId(), 'selection_plan_id' => self::$default_selection_plan->getId(), - 'filter' => [ + /* 'filter' => [ 'status==Received', 'is_chair_visible==1', - 'track_chairs_status==voted' - ], + 'track_id=='.self::$defaultTrack->getId() + ],*/ + + 'filter' => sprintf("status==Received,is_chair_visible==1,track_id==%s", self::$defaultTrack->getId()) ]; $headers = [ diff --git a/tests/OAuth2SpeakerActiveInvolvementApiTest.php b/tests/OAuth2SpeakerActiveInvolvementApiTest.php index 6293bb53..e3ce6a76 100644 --- a/tests/OAuth2SpeakerActiveInvolvementApiTest.php +++ b/tests/OAuth2SpeakerActiveInvolvementApiTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2SummitEmailEventFlowApiControllerTest.php b/tests/OAuth2SummitEmailEventFlowApiControllerTest.php index ad7dbd34..e6deec2e 100644 --- a/tests/OAuth2SummitEmailEventFlowApiControllerTest.php +++ b/tests/OAuth2SummitEmailEventFlowApiControllerTest.php @@ -1,4 +1,4 @@ -seedDefaultEmailFlowEvents(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2SummitEventsApiTest.php b/tests/OAuth2SummitEventsApiTest.php index 3fea8c3d..fa065f5e 100644 --- a/tests/OAuth2SummitEventsApiTest.php +++ b/tests/OAuth2SummitEventsApiTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2SummitMediaFileTypeApiControllerTest.php b/tests/OAuth2SummitMediaFileTypeApiControllerTest.php index 41d6b9dd..41955c9d 100644 --- a/tests/OAuth2SummitMediaFileTypeApiControllerTest.php +++ b/tests/OAuth2SummitMediaFileTypeApiControllerTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2SummitMetricsApiControllerTest.php b/tests/OAuth2SummitMetricsApiControllerTest.php index d2789f71..fd1964c8 100644 --- a/tests/OAuth2SummitMetricsApiControllerTest.php +++ b/tests/OAuth2SummitMetricsApiControllerTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearMemberTestData(); self::clearTestData(); diff --git a/tests/OAuth2SummitOrdersApiTest.php b/tests/OAuth2SummitOrdersApiTest.php index 68813990..53d4e818 100644 --- a/tests/OAuth2SummitOrdersApiTest.php +++ b/tests/OAuth2SummitOrdersApiTest.php @@ -1,4 +1,4 @@ -setCurrentGroup(IGroup::TrackChairs); parent::setUp(); @@ -57,7 +53,7 @@ final class OAuth2SummitPresentationActionApiTest extends ProtectedApiTest self::$em->flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); @@ -65,7 +61,7 @@ final class OAuth2SummitPresentationActionApiTest extends ProtectedApiTest public function testCompleteAction(){ $params = [ - 'summit_id' => self::$summit->getId(), + 'id' => self::$summit->getId(), 'selection_plan_id' => self::$default_selection_plan->getId(), 'presentation_id' => self::$presentations[0]->getId(), 'action_id' => self::$presentations[0]->getPresentationActions()[0]->getId(), diff --git a/tests/OAuth2SummitRSVPTemplateApiTest.php b/tests/OAuth2SummitRSVPTemplateApiTest.php index f1eb185d..94601f90 100644 --- a/tests/OAuth2SummitRSVPTemplateApiTest.php +++ b/tests/OAuth2SummitRSVPTemplateApiTest.php @@ -1,4 +1,4 @@ -seedDefaultEmailFlowEvents(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2SummitSelectedPresentationListApiTest.php b/tests/OAuth2SummitSelectedPresentationListApiTest.php index fbd43f96..5c32a33f 100644 --- a/tests/OAuth2SummitSelectedPresentationListApiTest.php +++ b/tests/OAuth2SummitSelectedPresentationListApiTest.php @@ -18,13 +18,13 @@ use models\summit\SummitSelectedPresentation; * @package Tests */ final class OAuth2SummitSelectedPresentationListApiTest - extends \ProtectedApiTest + extends ProtectedApiTest { - use \InsertSummitTestData; + use InsertSummitTestData; - use \InsertMemberTestData; + use InsertMemberTestData; - protected function setUp() + protected function setUp():void { $this->setCurrentGroup(IGroup::TrackChairs); parent::setUp(); @@ -38,7 +38,7 @@ final class OAuth2SummitSelectedPresentationListApiTest self::$em->flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/OAuth2SummitSelectionPlanExtraQuestionTypeApiTest.php b/tests/OAuth2SummitSelectionPlanExtraQuestionTypeApiTest.php index a3af26f2..7a6a412b 100644 --- a/tests/OAuth2SummitSelectionPlanExtraQuestionTypeApiTest.php +++ b/tests/OAuth2SummitSelectionPlanExtraQuestionTypeApiTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearMemberTestData(); self::clearTestData(); diff --git a/tests/OAuth2SummitSponsorApiTest.php b/tests/OAuth2SummitSponsorApiTest.php index 402f1f58..41e70d65 100644 --- a/tests/OAuth2SummitSponsorApiTest.php +++ b/tests/OAuth2SummitSponsorApiTest.php @@ -1,4 +1,4 @@ -setCurrentGroup(IGroup::TrackChairs); parent::setUp(); @@ -36,7 +36,7 @@ class OAuth2SummitTrackChairsApiTest extends \ProtectedApiTest self::$em->flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); @@ -44,7 +44,7 @@ class OAuth2SummitTrackChairsApiTest extends \ProtectedApiTest public function testGetAllTrackChairsPerSummit(){ $params = [ - 'summit_id' => self::$summit->getId(), + 'id' => self::$summit->getId(), 'filter' => 'track_id=='.self::$defaultTrack->getId(), 'page' => 1, 'per_page' => 10, @@ -77,7 +77,7 @@ class OAuth2SummitTrackChairsApiTest extends \ProtectedApiTest public function testGetAllTrackChairsPerSummitAndLastName(){ $params = [ - 'summit_id' => self::$summit->getId(), + 'id' => self::$summit->getId(), 'filter' => sprintf('member_first_name=@%s,member_last_name=@%s,member_email=@%s', self::$member->getLastName(), self::$member->getLastName(), diff --git a/tests/OAuth2TagsApiTest.php b/tests/OAuth2TagsApiTest.php index aefffc83..76047c93 100644 --- a/tests/OAuth2TagsApiTest.php +++ b/tests/OAuth2TagsApiTest.php @@ -1,4 +1,4 @@ -setCurrentGroup(IGroup::TrackChairs); + parent::setUp(); + self::insertTestData(); + self::$summit_permission_group->addMember(self::$member); + self::$em->persist(self::$summit); + self::$em->persist(self::$summit_permission_group); + self::$em->flush(); + self::$summit->addTrackChair(self::$member, [ self::$defaultTrack ] ); + self::$em->persist(self::$summit); + self::$em->flush(); + } + + protected function tearDown():void + { + self::clearTestData(); + parent::tearDown(); + } + + public function testGetTrackTagGroups() { $params = [ - 'id' => $summit_id, + 'id' => self::$summit->getId(), 'expand' => 'allowed_tags,tag', ]; @@ -42,13 +66,10 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } - /** - * @param int $summit_id - * @return mixed - */ - public function testAddTrackTagGroup($summit_id = 25){ + + public function testAddTrackTagGroup(){ $params = [ - 'id' => $summit_id, + 'id' => self::$summit->getId(), 'expand' => 'allowed_tags,tag' ]; @@ -85,14 +106,13 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest } /** - * @param int $summit_id * @return mixed */ - public function testUpdateTrackTagGroup($summit_id = 27){ - //$new_track_tag_group = $this->testAddTrackTagGroup($summit_id); + public function testUpdateTrackTagGroup(){ + $params = [ - 'id' => $summit_id, - 'track_tag_group_id' => 25, + 'id' => self::$summit->getId(), + 'track_tag_group_id' => self::$defaultTrackTagGroup->getId(), 'expand' => 'allowed_tags,tag' ]; @@ -129,11 +149,11 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest return $track_tag_group; } - public function testDeleteTrackTagGroup($summit_id = 25){ - $new_track_tag_group = $this->testAddTrackTagGroup($summit_id); + public function testDeleteTrackTagGroup(){ + $params = [ - 'id' => $summit_id, - 'track_tag_group_id' => $new_track_tag_group->id, + 'id' => self::$summit->getId(), + 'track_tag_group_id' => self::$defaultTrackTagGroup->getId(), ]; $headers = [ @@ -155,11 +175,10 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest $this->assertResponseStatus(204); } - public function testGetTrackTagGroupById($summit_id = 25){ - $new_track_tag_group = $this->testAddTrackTagGroup($summit_id); + public function testGetTrackTagGroupById(){ $params = [ - 'id' => $summit_id, - 'track_tag_group_id' => $new_track_tag_group->id, + 'id' => self::$summit->getId(), + 'track_tag_group_id' => self::$defaultTrackTagGroup->getId(), 'expand' => 'allowed_tags,tag' ]; @@ -182,11 +201,11 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } - public function testGetTags($summit_id = 25) + public function testGetTags() { $params = [ - 'id' => $summit_id, + 'id' => self::$summit->getId(), //AND FILTER 'filter' => ['tag=@101||104'], 'order' => '+id', @@ -210,11 +229,11 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } - public function testSeedDefaultTrackTagGroups($summit_id = 26) + public function testSeedDefaultTrackTagGroups() { $params = [ - 'id' => $summit_id, + 'id' => self::$summit->getId(), ]; $headers = ["HTTP_Authorization" => " Bearer " . $this->access_token]; @@ -238,12 +257,12 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest * @param int $summit_id * @param int $tag_id */ - public function testSeedTagOnAllTracks($summit_id = 25, $tag_id = 4590) + public function testSeedTagOnAllTracks() { $params = [ - 'id' => $summit_id, - 'tag_id' => $tag_id, + 'id' => self::$summit->getId(), + 'tag_id' => self::$defaultTags[0]->getId(), ]; $headers = ["HTTP_Authorization" => " Bearer " . $this->access_token]; @@ -267,13 +286,12 @@ final class OAuth2TrackTagGroupsApiTest extends ProtectedApiTest * @param int $track_tag_group_id * @param $track_id */ - public function testSeedTagTrackGroupOnTrack($summit_id = 25, $track_tag_group_id = 6, $track_id = 268) + public function testSeedTagTrackGroupOnTrack() { - $params = [ - 'id' => $summit_id, - 'track_tag_group_id' => $track_tag_group_id, - 'track_id' => $track_id, + 'id' => self::$summit->getId(), + 'track_tag_group_id' => self::$defaultTrackTagGroup->getId(), + 'track_id' => self::$defaultTrack->getId(), ]; $headers = ["HTTP_Authorization" => " Bearer " . $this->access_token]; diff --git a/tests/OAuth2TracksApiTest.php b/tests/OAuth2TracksApiTest.php index 7284ecea..872c5200 100644 --- a/tests/OAuth2TracksApiTest.php +++ b/tests/OAuth2TracksApiTest.php @@ -1,4 +1,4 @@ -setCurrentGroup(IGroup::TrackChairs); + parent::setUp(); + self::insertTestData(); + self::$summit_permission_group->addMember(self::$member); + self::$em->persist(self::$summit); + self::$em->persist(self::$summit_permission_group); + self::$em->flush(); + self::$summit->addTrackChair(self::$member, [ self::$defaultTrack ] ); + self::$em->persist(self::$summit); + self::$em->flush(); + } + + protected function tearDown():void + { + self::clearTestData(); + parent::tearDown(); + } + + public function testGetTracksByTitle(){ $params = [ - 'id' => $summit_id, + 'id' => self::$summit->getId(), 'page' => 1, 'per_page' => 10, - 'filter' => 'name=@con', + 'filter' => sprintf('name=@%s', self::$defaultTrack->getTitle()), 'order' => '+code', 'expand' => 'track_groups,allowed_tags' ]; @@ -53,6 +73,8 @@ final class OAuth2TracksApiTest extends ProtectedApiTest $this->assertResponseStatus(200); $tracks = json_decode($content); $this->assertTrue(!is_null($tracks)); + $this->assertTrue($tracks->total >= 1); + $this->assertTrue($tracks->data[0]->name == self::$defaultTrack->getTitle()); return $tracks; } @@ -61,11 +83,11 @@ final class OAuth2TracksApiTest extends ProtectedApiTest * @param int $track_id * @return mixed */ - public function testGetTracksById($summit_id = 25, $track_id = 248){ + public function testGetTracksById(){ $params = [ - 'id' => $summit_id, - 'track_id' => $track_id, + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId(), 'expand' =>'extra_questions' ]; @@ -92,15 +114,13 @@ final class OAuth2TracksApiTest extends ProtectedApiTest } /** - * @param int $summit_id - * @param int $track_id * @return mixed */ - public function testGetTracksExtraQuestionById($summit_id = 25, $track_id = 248){ + public function testGetTracksExtraQuestionById(){ $params = [ - 'id' => $summit_id, - 'track_id' => $track_id, + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId(), ]; $headers = [ @@ -126,15 +146,13 @@ final class OAuth2TracksApiTest extends ProtectedApiTest } /** - * @param int $summit_id - * @param int $track_id * @return mixed */ - public function testGetTracksAllowedTagsById($summit_id = 25, $track_id = 248){ + public function testGetTracksAllowedTagsById(){ $params = [ - 'id' => $summit_id, - 'track_id' => $track_id, + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId(), ]; $headers = [ @@ -159,13 +177,10 @@ final class OAuth2TracksApiTest extends ProtectedApiTest return $allowes_tags; } - /** - * @param int $summit_id - */ - public function testGetTracksByTitleCSV($summit_id = 23){ - $params = [ - 'id' => $summit_id, + public function testGetTracksByTitleCSV(){ + $params = [ + 'id' => self::$summit->getId(), 'page' => 1, 'per_page' => 10, 'filter' => 'title=@con', @@ -193,19 +208,18 @@ final class OAuth2TracksApiTest extends ProtectedApiTest } /** - * @param int $summit_id * @return mixed */ - public function testAddTrack($summit_id = 25){ + public function testAddTrack(){ $params = [ - 'id' => $summit_id, + 'id' => self::$summit->getId(), ]; $name = str_random(16).'_track'; $data = [ 'name' => $name, 'description' => 'test desc', - 'code' => '', + 'code' => 'CDB', 'allowed_tags' => ['101','Case Study', 'Demo'], ]; @@ -233,16 +247,13 @@ final class OAuth2TracksApiTest extends ProtectedApiTest } /** - * @param int $summit_id * @return mixed */ - public function testUpdateTrack($summit_id = 23){ - - $new_track = $this->testAddTrack($summit_id); + public function testUpdateTrack(){ $params = [ - 'id' => $summit_id, - 'track_id' => $new_track->id + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId() ]; $name = str_random(16).'_track'; @@ -276,17 +287,12 @@ final class OAuth2TracksApiTest extends ProtectedApiTest return $track; } - /** - * @param int $summit_id - * @return mixed - */ - public function testDeleteNewTrack($summit_id = 23){ - $new_track = $this->testAddTrack($summit_id); + public function testDeleteNewTrack(){ $params = [ - 'id' => $summit_id, - 'track_id' => $new_track->id + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId() ]; $headers = [ @@ -308,37 +314,11 @@ final class OAuth2TracksApiTest extends ProtectedApiTest $this->assertResponseStatus(204); } - public function testDeleteOldTrack($summit_id = 23){ + public function testCopyTracks(){ $params = [ - 'id' => $summit_id, - 'track_id' => 155 - ]; - - $headers = [ - "HTTP_Authorization" => " Bearer " . $this->access_token, - "CONTENT_TYPE" => "application/json" - ]; - - $response = $this->action( - "DELETE", - "OAuth2SummitTracksApiController@deleteTrackBySummit", - $params, - [], - [], - [], - $headers - ); - - $content = $response->getContent(); - $this->assertResponseStatus(412); - } - - public function testCopyTracks($from_summit_id = 24, $to_summit_id = 25){ - - $params = [ - 'id' => $from_summit_id, - 'to_summit_id' => $to_summit_id + 'id' => self::$summit->getId(), + 'to_summit_id' => self::$summit2->getId() ]; $headers = [ @@ -362,17 +342,11 @@ final class OAuth2TracksApiTest extends ProtectedApiTest $this->assertTrue(!is_null($added_tracks)); } - public function testAddTrackIcon($summit_id=25){ - - $repo = EntityManager::getRepository(\models\summit\Summit::class); - $summit = $repo->getById($summit_id); - if(!$summit instanceof \models\summit\Summit) - throw new Exception(); - $track = $summit->getPresentationCategories()[0]; + public function testAddTrackIcon(){ $params = array ( - 'id' => $summit_id, - 'track_id' => $track->getId(), + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId(), ); $headers = array @@ -381,7 +355,6 @@ final class OAuth2TracksApiTest extends ProtectedApiTest // "CONTENT_TYPE" => "multipart/form-data; boundary=----WebKitFormBoundaryBkSYnzBIiFtZu4pb" ); - $response = $this->action ( "POST", @@ -401,17 +374,38 @@ final class OAuth2TracksApiTest extends ProtectedApiTest return intval($video_id); } - public function testRemoveTrackIcon($summit_id=25){ + public function testRemoveTrackIcon(){ - $repo = EntityManager::getRepository(\models\summit\Summit::class); - $summit = $repo->getById($summit_id); - if(!$summit instanceof \models\summit\Summit) - throw new Exception(); - $track = $summit->getPresentationCategories()[0]; $params = array ( - 'id' => $summit_id, - 'track_id' => $track->getId(), + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId(), + ); + + $headers = array + ( + "HTTP_Authorization" => " Bearer " . $this->access_token, + // "CONTENT_TYPE" => "multipart/form-data; boundary=----WebKitFormBoundaryBkSYnzBIiFtZu4pb" + ); + + $response = $this->action + ( + "POST", + "OAuth2SummitTracksApiController@addTrackIcon", + $params, + array(), + array(), + [ + 'file' => UploadedFile::fake()->image('icon.jpg') + ], + $headers, + [] + ); + + $params = array + ( + 'id' => self::$summit->getId(), + 'track_id' => self::$defaultTrack->getId(), ); $headers = array diff --git a/tests/ParseMultiPartFormDataInputStreamTest.php b/tests/ParseMultiPartFormDataInputStreamTest.php index 59e5fc4c..950f6202 100644 --- a/tests/ParseMultiPartFormDataInputStreamTest.php +++ b/tests/ParseMultiPartFormDataInputStreamTest.php @@ -1,4 +1,4 @@ -setMaxSize(2048); self::$media_upload_type->setPrivateStorageType(\App\Models\Utils\IStorageTypesConstants::DropBox); - self::$media_upload_type->setPublicStorageType(\App\Models\Utils\IStorageTypesConstants::DropBox); + self::$media_upload_type->setPublicStorageType(\App\Models\Utils\IStorageTypesConstants::Swift); self::$presentation = new Presentation(); $event_types = self::$summit->getEventTypes(); self::$presentation->setTitle("TEST PRESENTATION"); @@ -64,7 +63,7 @@ class PresentationMediaUploadsTests self::$em->flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/ProtectedApiTest.php b/tests/ProtectedApiTest.php index 414ce7ea..08d06529 100644 --- a/tests/ProtectedApiTest.php +++ b/tests/ProtectedApiTest.php @@ -1,4 +1,4 @@ -current_group = $group; } - protected function setUp() + protected function setUp():void { $this->access_token = 'TEST_ACCESS_TOKEN'; parent::setUp(); @@ -278,7 +279,7 @@ abstract class ProtectedApiTest extends \Tests\BrowserKitTestCase self::$service->setUserExternalId(self::$member->getUserExternalId()); } - protected function tearDown() + protected function tearDown():void { self::clearMemberTestData(); Mockery::close(); diff --git a/tests/SearchEmptySpotsTest.php b/tests/SearchEmptySpotsTest.php index dada25b8..8a1e5eda 100644 --- a/tests/SearchEmptySpotsTest.php +++ b/tests/SearchEmptySpotsTest.php @@ -1,4 +1,4 @@ -flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/StripeInterfaceTest.php b/tests/StripeInterfaceTest.php index 42b8d601..be02d2b8 100644 --- a/tests/StripeInterfaceTest.php +++ b/tests/StripeInterfaceTest.php @@ -1,4 +1,4 @@ - env("STRIPE_SECRET_KEY") + ] ); - $api->refundPayment("pi_1Epa7kL4yik3a08Jlf8SN6YS", 30); + $response = $api->generatePayment([ + 'amount' => 1, + 'currency' => 'USD', + ]); + + $this->assertTrue(!is_null($response)); + $this->assertTrue(isset($response['cart_id'])); + $this->assertTrue(!empty($response['cart_id'])); } } \ No newline at end of file diff --git a/tests/SummitDocumentModelTest.php b/tests/SummitDocumentModelTest.php index ad1e9404..c0b0b8f9 100644 --- a/tests/SummitDocumentModelTest.php +++ b/tests/SummitDocumentModelTest.php @@ -20,9 +20,9 @@ use Illuminate\Http\UploadedFile; */ class SummitDocumentModelTest extends BrowserKitTestCase { - use \InsertSummitTestData; + use InsertSummitTestData; - protected function setUp() + protected function setUp():void { parent::setUp(); @@ -31,7 +31,7 @@ class SummitDocumentModelTest extends BrowserKitTestCase self::$em->flush(); } - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); diff --git a/tests/SummitEventMetricsTest.php b/tests/SummitEventMetricsTest.php index 49685653..bde074ac 100644 --- a/tests/SummitEventMetricsTest.php +++ b/tests/SummitEventMetricsTest.php @@ -1,4 +1,4 @@ -delete(); self::$event_repository = EntityManager::getRepository(SummitEvent::class); $time_zone = new DateTimeZone("America/Chicago"); - $now = new \DateTime("now", $time_zone); + $now = new DateTime("now", $time_zone); self::$event1 = new Presentation(); self::$event1->setTitle("PRESENTATION 1"); self::$event1->setStartDate((clone $now)->add(new DateInterval("P1D"))); @@ -60,7 +64,7 @@ class SummitEventMetricsTest extends ProtectedApiTest self::$em->flush(); } - public function tearDown() + public function tearDown():void { self::clearTestData(); Mockery::close(); diff --git a/tests/SummitICloudCalendarSyncTest.php b/tests/SummitICloudCalendarSyncTest.php deleted file mode 100644 index 13768765..00000000 --- a/tests/SummitICloudCalendarSyncTest.php +++ /dev/null @@ -1,108 +0,0 @@ -shouldIgnoreMissing(); - - $repo_mock->shouldReceive('getUnprocessedMemberScheduleWorkRequestActionByPage')->andReturn(new PagingResponse(1, 10, 1, 1, [])); - - $app->instance(IAbstractCalendarSyncWorkRequestRepository::class, $repo_mock); - - $repo_mock = Mockery::mock(ICalendarSyncInfoRepository::class)->shouldIgnoreMissing(); - $app->instance(ICalendarSyncInfoRepository::class, $repo_mock); - - $values = []; - $request = Mockery::mock(MemberEventScheduleSummitActionSyncWorkRequest::class)->shouldIgnoreMissing(); - $request->shouldReceive('getSummitEventId')->andReturn(1); - $summit_event = Mockery::mock(SummitEvent::class)->shouldIgnoreMissing(); - $member = Mockery::mock(Member::class)->shouldIgnoreMissing(); - $calendar_sync_info = Mockery::mock(CalendarSyncInfo::class)->shouldIgnoreMissing(); - $summit_event->shouldReceive('getId')->andReturn(1); - - $request->shouldReceive('getSummitEvent')->andReturn($summit_event); - - $request->shouldReceive('getCalendarSyncInfo')->andReturn($calendar_sync_info); - $request->shouldReceive('getOwner')->andReturn($member); - $request->shouldReceive('getType')->andReturn(AbstractCalendarSyncWorkRequest::TypeAdd); - $request->shouldReceive('getSubType')->andReturn(MemberEventScheduleSummitActionSyncWorkRequest::SubType); - - $values[] = $request; - - $repo_email = Mockery::mock(IEmailCreationRequestRepository::class) - ->shouldIgnoreMissing(); - $app->instance(IEmailCreationRequestRepository::class, $repo_email); - - $processor = Mockery::mock(ICalendarSyncWorkRequestPreProcessor::class)->shouldIgnoreMissing(); - $processor->shouldReceive('preProcessActions')->andReturn($values); - - $app->instance(ICalendarSyncWorkRequestPreProcessor::class, $processor); - - $facade = Mockery::mock(ICalendarSyncRemoteFacade::class)->shouldIgnoreMissing(); - $message = <<Conflict

Conflict

cannot -PUT to non-existent parent

-HTML; - $error = new ConflictException($message, 409); - $facade->shouldReceive('addEvent')->andThrow($error); - - $factory = Mockery::mock(ICalendarSyncRemoteFacadeFactory::class)->shouldIgnoreMissing(); - $factory->shouldReceive('build')->andReturn($facade); - $app->instance(ICalendarSyncRemoteFacadeFactory::class, $factory); - return $app; - } - - public function test409ResponseFromCalDav(){ - - $service = App::make(MemberActionsCalendarSyncProcessingService::class); - - $service->processActions(CalendarSyncInfo::ProvideriCloud, 1000); - } -} \ No newline at end of file diff --git a/tests/SummitOrderJobsTest.php b/tests/SummitOrderJobsTest.php index a968336d..6e074128 100644 --- a/tests/SummitOrderJobsTest.php +++ b/tests/SummitOrderJobsTest.php @@ -17,7 +17,6 @@ use App\Services\Apis\IExternalUserApi; use App\Services\Model\ISummitOrderService; use Illuminate\Support\Facades\App; use models\main\IMemberRepository; -use models\summit\Summit; use models\summit\SummitOrder; /** * Class SummitOrderJobsTest @@ -25,9 +24,9 @@ use models\summit\SummitOrder; */ final class SummitOrderJobsTest extends TestCase { - use \InsertSummitTestData; + use InsertSummitTestData; - protected function tearDown() + protected function tearDown():void { self::clearTestData(); parent::tearDown(); @@ -35,7 +34,7 @@ final class SummitOrderJobsTest extends TestCase } - protected function setUp() + protected function setUp():void { parent::setUp(); self::insertTestData(); diff --git a/tests/TrackChairTest.php b/tests/TrackChairTest.php index 4feaa21a..8461d11e 100644 --- a/tests/TrackChairTest.php +++ b/tests/TrackChairTest.php @@ -20,11 +20,11 @@ use models\exceptions\ValidationException; */ class TrackChairTest extends BrowserKitTestCase { - use \InsertSummitTestData; + use InsertSummitTestData; - use \InsertMemberTestData; + use InsertMemberTestData; - protected function setUp() + protected function setUp():void { parent::setUp(); self::insertTestData(); @@ -35,7 +35,7 @@ class TrackChairTest extends BrowserKitTestCase self::$em->flush(); } - protected function tearDown() + protected function tearDown():void { self::clearMemberTestData(); self::clearTestData(); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php deleted file mode 100644 index 038b0fad..00000000 --- a/tests/ValidatorTest.php +++ /dev/null @@ -1,41 +0,0 @@ - 'sometimes|required|string|max:100', - 'description' => 'sometimes|required|string', - 'social_summary' => 'sometimes|string|max:100', - 'location_id' => 'sometimes|integer', - 'start_date' => 'sometimes|date_format:U', - 'end_date' => 'sometimes|required_with:start_date|date_format:U|after:start_date', - 'allow_feedback' => 'sometimes|boolean', - 'type_id' => 'sometimes|required|integer', - 'track_id' => 'sometimes|required|integer', - 'tags' => 'sometimes|string_array', - ]; - - // Creates a Validator instance and validates the data. - $validation = Validator::make(['title' => 'test','description'=> '' ], $rules); - - $res = $validation->fails(); - if($res){ - $messages = $validation->messages()->toArray(); - echo $messages; - } - } -} \ No newline at end of file diff --git a/update_doctrine.sh b/update_doctrine.sh index e854698f..ae73ff15 100755 --- a/update_doctrine.sh +++ b/update_doctrine.sh @@ -1,5 +1,5 @@ -#!/usr/bin/env bash -composer dump-autoload --optimize; +#!/usr/bin/bash +php composer.phar dump-autoload --optimize; php artisan config:cache php artisan route:cache diff --git a/update_project.sh b/update_project.sh index d1bf0e9d..ea58a926 100755 --- a/update_project.sh +++ b/update_project.sh @@ -1,3 +1,3 @@ -#!/usr/bin/env bash +#!/usr/bin/bash php composer.phar update --prefer-dist; php composer.phar dump-autoload --optimize; \ No newline at end of file diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 00000000..19a48fa1 --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,15 @@ +const mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel application. By default, we are compiling the Sass + | file for the application as well as bundling up all the JS files. + | + */ + +mix.js('resources/js/app.js', 'public/js') + .sass('resources/sass/app.scss', 'public/css');