├── .editorconfig ├── .env.example ├── .gitattributes ├── .gitignore ├── LICENSE.md ├── README.md ├── blueprints ├── blocks │ └── mux-video.yml └── files │ └── mux-video.yml ├── classes └── KirbyMux │ ├── Auth.php │ └── Methods.php ├── composer.json ├── composer.lock ├── index.css ├── index.js ├── index.php ├── package-lock.json ├── package.json ├── src ├── components │ ├── VideoBlock.vue │ └── VideoPlayer.vue └── index.js └── vendor ├── autoload.php ├── composer ├── ClassLoader.php ├── InstalledVersions.php ├── autoload_classmap.php ├── autoload_files.php ├── autoload_namespaces.php ├── autoload_psr4.php ├── autoload_real.php ├── autoload_static.php ├── installed.php └── platform_check.php ├── getkirby └── cms │ ├── assets │ └── whoops.css │ ├── bootstrap.php │ ├── cacert.pem │ ├── composer.lock │ ├── config │ ├── aliases.php │ ├── api │ │ ├── authentication.php │ │ ├── collections.php │ │ ├── models.php │ │ ├── models │ │ │ ├── File.php │ │ │ ├── FileBlueprint.php │ │ │ ├── FileVersion.php │ │ │ ├── Language.php │ │ │ ├── Page.php │ │ │ ├── PageBlueprint.php │ │ │ ├── Role.php │ │ │ ├── Site.php │ │ │ ├── SiteBlueprint.php │ │ │ ├── System.php │ │ │ ├── Translation.php │ │ │ ├── User.php │ │ │ └── UserBlueprint.php │ │ ├── routes.php │ │ └── routes │ │ │ ├── auth.php │ │ │ ├── files.php │ │ │ ├── languages.php │ │ │ ├── lock.php │ │ │ ├── pages.php │ │ │ ├── roles.php │ │ │ ├── site.php │ │ │ ├── system.php │ │ │ ├── translations.php │ │ │ └── users.php │ ├── areas │ │ ├── account.php │ │ ├── account │ │ │ ├── dialogs.php │ │ │ ├── dropdowns.php │ │ │ └── views.php │ │ ├── files │ │ │ ├── dialogs.php │ │ │ └── dropdowns.php │ │ ├── installation.php │ │ ├── languages.php │ │ ├── languages │ │ │ ├── dialogs.php │ │ │ └── views.php │ │ ├── login.php │ │ ├── site.php │ │ ├── site │ │ │ ├── dialogs.php │ │ │ ├── dropdowns.php │ │ │ ├── searches.php │ │ │ └── views.php │ │ ├── system.php │ │ ├── system │ │ │ ├── dialogs.php │ │ │ └── views.php │ │ ├── users.php │ │ └── users │ │ │ ├── dialogs.php │ │ │ ├── dropdowns.php │ │ │ ├── searches.php │ │ │ └── views.php │ ├── blocks │ │ ├── code │ │ │ └── code.php │ │ ├── gallery │ │ │ └── gallery.php │ │ ├── heading │ │ │ └── heading.php │ │ ├── image │ │ │ └── image.php │ │ ├── line │ │ │ └── line.php │ │ ├── list │ │ │ └── list.php │ │ ├── markdown │ │ │ └── markdown.php │ │ ├── quote │ │ │ └── quote.php │ │ ├── text │ │ │ └── text.php │ │ └── video │ │ │ └── video.php │ ├── components.php │ ├── fields │ │ ├── checkboxes.php │ │ ├── date.php │ │ ├── email.php │ │ ├── files.php │ │ ├── gap.php │ │ ├── headline.php │ │ ├── hidden.php │ │ ├── info.php │ │ ├── line.php │ │ ├── list.php │ │ ├── mixins │ │ │ ├── datetime.php │ │ │ ├── filepicker.php │ │ │ ├── layout.php │ │ │ ├── min.php │ │ │ ├── options.php │ │ │ ├── pagepicker.php │ │ │ ├── picker.php │ │ │ ├── upload.php │ │ │ └── userpicker.php │ │ ├── multiselect.php │ │ ├── number.php │ │ ├── pages.php │ │ ├── radio.php │ │ ├── range.php │ │ ├── select.php │ │ ├── slug.php │ │ ├── structure.php │ │ ├── tags.php │ │ ├── tel.php │ │ ├── text.php │ │ ├── textarea.php │ │ ├── time.php │ │ ├── toggle.php │ │ ├── url.php │ │ ├── users.php │ │ └── writer.php │ ├── helpers.php │ ├── methods.php │ ├── presets │ │ ├── files.php │ │ ├── page.php │ │ └── pages.php │ ├── routes.php │ ├── sections │ │ ├── fields.php │ │ ├── files.php │ │ ├── info.php │ │ ├── mixins │ │ │ ├── empty.php │ │ │ ├── headline.php │ │ │ ├── help.php │ │ │ ├── layout.php │ │ │ ├── max.php │ │ │ ├── min.php │ │ │ ├── pagination.php │ │ │ └── parent.php │ │ └── pages.php │ ├── setup.php │ ├── tags.php │ └── templates │ │ └── emails │ │ └── auth │ │ ├── login.php │ │ └── password-reset.php │ ├── dependencies │ ├── parsedown-extra │ │ └── ParsedownExtra.php │ ├── parsedown │ │ └── Parsedown.php │ └── spyc │ │ └── Spyc.php │ ├── kirby.pub │ ├── panel │ ├── dist │ │ ├── apple-touch-icon.png │ │ ├── css │ │ │ └── style.css │ │ ├── favicon.png │ │ ├── favicon.svg │ │ ├── img │ │ │ └── icons.svg │ │ └── js │ │ │ ├── index.js │ │ │ ├── plugins.js │ │ │ └── vendor.js │ ├── vite.config.js │ └── vitest.setup.js │ ├── router.php │ ├── src │ ├── Api │ │ ├── Api.php │ │ ├── Collection.php │ │ └── Model.php │ ├── Cache │ │ ├── ApcuCache.php │ │ ├── Cache.php │ │ ├── FileCache.php │ │ ├── MemCached.php │ │ ├── MemoryCache.php │ │ ├── NullCache.php │ │ └── Value.php │ ├── Cms │ │ ├── Api.php │ │ ├── App.php │ │ ├── AppCaches.php │ │ ├── AppErrors.php │ │ ├── AppPlugins.php │ │ ├── AppTranslations.php │ │ ├── AppUsers.php │ │ ├── Auth.php │ │ ├── Auth │ │ │ ├── Challenge.php │ │ │ ├── EmailChallenge.php │ │ │ └── Status.php │ │ ├── Block.php │ │ ├── BlockConverter.php │ │ ├── Blocks.php │ │ ├── Blueprint.php │ │ ├── Collection.php │ │ ├── Collections.php │ │ ├── Content.php │ │ ├── ContentLock.php │ │ ├── ContentLocks.php │ │ ├── ContentTranslation.php │ │ ├── Core.php │ │ ├── Email.php │ │ ├── Event.php │ │ ├── Field.php │ │ ├── Fieldset.php │ │ ├── Fieldsets.php │ │ ├── File.php │ │ ├── FileActions.php │ │ ├── FileBlueprint.php │ │ ├── FileModifications.php │ │ ├── FilePermissions.php │ │ ├── FilePicker.php │ │ ├── FileRules.php │ │ ├── FileVersion.php │ │ ├── Files.php │ │ ├── Find.php │ │ ├── HasChildren.php │ │ ├── HasFiles.php │ │ ├── HasMethods.php │ │ ├── HasSiblings.php │ │ ├── Html.php │ │ ├── Ingredients.php │ │ ├── Item.php │ │ ├── Items.php │ │ ├── Language.php │ │ ├── LanguageRouter.php │ │ ├── LanguageRoutes.php │ │ ├── LanguageRules.php │ │ ├── Languages.php │ │ ├── Layout.php │ │ ├── LayoutColumn.php │ │ ├── LayoutColumns.php │ │ ├── Layouts.php │ │ ├── Loader.php │ │ ├── Media.php │ │ ├── Model.php │ │ ├── ModelPermissions.php │ │ ├── ModelWithContent.php │ │ ├── Nest.php │ │ ├── NestCollection.php │ │ ├── NestObject.php │ │ ├── Page.php │ │ ├── PageActions.php │ │ ├── PageBlueprint.php │ │ ├── PagePermissions.php │ │ ├── PagePicker.php │ │ ├── PageRules.php │ │ ├── PageSiblings.php │ │ ├── Pages.php │ │ ├── Pagination.php │ │ ├── Permissions.php │ │ ├── Picker.php │ │ ├── Plugin.php │ │ ├── PluginAssets.php │ │ ├── R.php │ │ ├── Responder.php │ │ ├── Response.php │ │ ├── Role.php │ │ ├── Roles.php │ │ ├── S.php │ │ ├── Search.php │ │ ├── Section.php │ │ ├── Site.php │ │ ├── SiteActions.php │ │ ├── SiteBlueprint.php │ │ ├── SitePermissions.php │ │ ├── SiteRules.php │ │ ├── Structure.php │ │ ├── StructureObject.php │ │ ├── System.php │ │ ├── Template.php │ │ ├── Translation.php │ │ ├── Translations.php │ │ ├── Url.php │ │ ├── User.php │ │ ├── UserActions.php │ │ ├── UserBlueprint.php │ │ ├── UserPermissions.php │ │ ├── UserPicker.php │ │ ├── UserRules.php │ │ ├── Users.php │ │ └── Visitor.php │ ├── Data │ │ ├── Data.php │ │ ├── Handler.php │ │ ├── Json.php │ │ ├── PHP.php │ │ ├── Txt.php │ │ ├── Xml.php │ │ └── Yaml.php │ ├── Database │ │ ├── Database.php │ │ ├── Db.php │ │ ├── Query.php │ │ ├── Sql.php │ │ └── Sql │ │ │ ├── Mysql.php │ │ │ └── Sqlite.php │ ├── Email │ │ ├── Body.php │ │ ├── Email.php │ │ └── PHPMailer.php │ ├── Exception │ │ ├── BadMethodCallException.php │ │ ├── DuplicateException.php │ │ ├── ErrorPageException.php │ │ ├── Exception.php │ │ ├── InvalidArgumentException.php │ │ ├── LogicException.php │ │ ├── NotFoundException.php │ │ └── PermissionException.php │ ├── Filesystem │ │ ├── Asset.php │ │ ├── Dir.php │ │ ├── F.php │ │ ├── File.php │ │ ├── Filename.php │ │ ├── IsFile.php │ │ └── Mime.php │ ├── Form │ │ ├── Field.php │ │ ├── Field │ │ │ ├── BlocksField.php │ │ │ └── LayoutField.php │ │ ├── FieldClass.php │ │ ├── Fields.php │ │ ├── Form.php │ │ ├── Mixin │ │ │ ├── EmptyState.php │ │ │ ├── Max.php │ │ │ └── Min.php │ │ ├── Options.php │ │ ├── OptionsApi.php │ │ ├── OptionsQuery.php │ │ └── Validations.php │ ├── Http │ │ ├── Cookie.php │ │ ├── Exceptions │ │ │ └── NextRouteException.php │ │ ├── Header.php │ │ ├── Idn.php │ │ ├── Params.php │ │ ├── Path.php │ │ ├── Query.php │ │ ├── Remote.php │ │ ├── Request.php │ │ ├── Request │ │ │ ├── Auth │ │ │ │ ├── BasicAuth.php │ │ │ │ └── BearerAuth.php │ │ │ ├── Body.php │ │ │ ├── Data.php │ │ │ ├── Files.php │ │ │ └── Query.php │ │ ├── Response.php │ │ ├── Route.php │ │ ├── Router.php │ │ ├── Server.php │ │ ├── Uri.php │ │ ├── Url.php │ │ └── Visitor.php │ ├── Image │ │ ├── Camera.php │ │ ├── Darkroom.php │ │ ├── Darkroom │ │ │ ├── GdLib.php │ │ │ └── ImageMagick.php │ │ ├── Dimensions.php │ │ ├── Exif.php │ │ ├── Image.php │ │ └── Location.php │ ├── Panel │ │ ├── Dialog.php │ │ ├── Document.php │ │ ├── Dropdown.php │ │ ├── Field.php │ │ ├── File.php │ │ ├── Home.php │ │ ├── Json.php │ │ ├── Model.php │ │ ├── Page.php │ │ ├── Panel.php │ │ ├── Plugins.php │ │ ├── Redirect.php │ │ ├── Search.php │ │ ├── Site.php │ │ ├── User.php │ │ └── View.php │ ├── Parsley │ │ ├── Element.php │ │ ├── Inline.php │ │ ├── Parsley.php │ │ ├── Schema.php │ │ └── Schema │ │ │ ├── Blocks.php │ │ │ └── Plain.php │ ├── Sane │ │ ├── DomHandler.php │ │ ├── Handler.php │ │ ├── Html.php │ │ ├── Sane.php │ │ ├── Svg.php │ │ ├── Svgz.php │ │ └── Xml.php │ ├── Session │ │ ├── AutoSession.php │ │ ├── FileSessionStore.php │ │ ├── Session.php │ │ ├── SessionData.php │ │ ├── SessionStore.php │ │ └── Sessions.php │ ├── Text │ │ ├── KirbyTag.php │ │ ├── KirbyTags.php │ │ ├── Markdown.php │ │ └── SmartyPants.php │ └── Toolkit │ │ ├── A.php │ │ ├── Collection.php │ │ ├── Component.php │ │ ├── Config.php │ │ ├── Controller.php │ │ ├── Date.php │ │ ├── Dom.php │ │ ├── Escape.php │ │ ├── Facade.php │ │ ├── Html.php │ │ ├── I18n.php │ │ ├── Iterator.php │ │ ├── Locale.php │ │ ├── Obj.php │ │ ├── Pagination.php │ │ ├── Properties.php │ │ ├── Query.php │ │ ├── Silo.php │ │ ├── Str.php │ │ ├── Tpl.php │ │ ├── V.php │ │ ├── View.php │ │ └── Xml.php │ └── views │ ├── browser.php │ ├── fatal.php │ ├── panel.php │ ├── php.php │ └── snippets │ ├── footer.php │ └── header.php ├── graham-campbell └── result-type │ └── src │ ├── Error.php │ ├── Result.php │ └── Success.php ├── guzzlehttp ├── guzzle │ └── src │ │ ├── BodySummarizer.php │ │ ├── BodySummarizerInterface.php │ │ ├── Client.php │ │ ├── ClientInterface.php │ │ ├── ClientTrait.php │ │ ├── Cookie │ │ ├── CookieJar.php │ │ ├── CookieJarInterface.php │ │ ├── FileCookieJar.php │ │ ├── SessionCookieJar.php │ │ └── SetCookie.php │ │ ├── Exception │ │ ├── BadResponseException.php │ │ ├── ClientException.php │ │ ├── ConnectException.php │ │ ├── GuzzleException.php │ │ ├── InvalidArgumentException.php │ │ ├── RequestException.php │ │ ├── ServerException.php │ │ ├── TooManyRedirectsException.php │ │ └── TransferException.php │ │ ├── Handler │ │ ├── CurlFactory.php │ │ ├── CurlFactoryInterface.php │ │ ├── CurlHandler.php │ │ ├── CurlMultiHandler.php │ │ ├── EasyHandle.php │ │ ├── HeaderProcessor.php │ │ ├── MockHandler.php │ │ ├── Proxy.php │ │ └── StreamHandler.php │ │ ├── HandlerStack.php │ │ ├── MessageFormatter.php │ │ ├── MessageFormatterInterface.php │ │ ├── Middleware.php │ │ ├── Pool.php │ │ ├── PrepareBodyMiddleware.php │ │ ├── RedirectMiddleware.php │ │ ├── RequestOptions.php │ │ ├── RetryMiddleware.php │ │ ├── TransferStats.php │ │ ├── Utils.php │ │ ├── functions.php │ │ └── functions_include.php ├── promises │ ├── Makefile │ └── src │ │ ├── AggregateException.php │ │ ├── CancellationException.php │ │ ├── Coroutine.php │ │ ├── Create.php │ │ ├── Each.php │ │ ├── EachPromise.php │ │ ├── FulfilledPromise.php │ │ ├── Is.php │ │ ├── Promise.php │ │ ├── PromiseInterface.php │ │ ├── PromisorInterface.php │ │ ├── RejectedPromise.php │ │ ├── RejectionException.php │ │ ├── TaskQueue.php │ │ ├── TaskQueueInterface.php │ │ ├── Utils.php │ │ ├── functions.php │ │ └── functions_include.php └── psr7 │ └── src │ ├── AppendStream.php │ ├── BufferStream.php │ ├── CachingStream.php │ ├── DroppingStream.php │ ├── Exception │ └── MalformedUriException.php │ ├── FnStream.php │ ├── Header.php │ ├── HttpFactory.php │ ├── InflateStream.php │ ├── LazyOpenStream.php │ ├── LimitStream.php │ ├── Message.php │ ├── MessageTrait.php │ ├── MimeType.php │ ├── MultipartStream.php │ ├── NoSeekStream.php │ ├── PumpStream.php │ ├── Query.php │ ├── Request.php │ ├── Response.php │ ├── Rfc7230.php │ ├── ServerRequest.php │ ├── Stream.php │ ├── StreamDecoratorTrait.php │ ├── StreamWrapper.php │ ├── UploadedFile.php │ ├── Uri.php │ ├── UriNormalizer.php │ ├── UriResolver.php │ └── Utils.php ├── muxinc └── mux-php │ ├── MuxPhp │ ├── Api │ │ ├── AssetsApi.php │ │ ├── DeliveryUsageApi.php │ │ ├── DimensionsApi.php │ │ ├── DirectUploadsApi.php │ │ ├── ErrorsApi.php │ │ ├── ExportsApi.php │ │ ├── FiltersApi.php │ │ ├── IncidentsApi.php │ │ ├── LiveStreamsApi.php │ │ ├── MetricsApi.php │ │ ├── PlaybackIDApi.php │ │ ├── PlaybackRestrictionsApi.php │ │ ├── RealTimeApi.php │ │ ├── URLSigningKeysApi.php │ │ └── VideoViewsApi.php │ ├── ApiException.php │ ├── Configuration.php │ ├── HeaderSelector.php │ ├── Models │ │ ├── AbridgedVideoView.php │ │ ├── Asset.php │ │ ├── AssetErrors.php │ │ ├── AssetMaster.php │ │ ├── AssetNonStandardInputReasons.php │ │ ├── AssetRecordingTimes.php │ │ ├── AssetResponse.php │ │ ├── AssetStaticRenditions.php │ │ ├── AssetStaticRenditionsFiles.php │ │ ├── BreakdownValue.php │ │ ├── CreateAssetRequest.php │ │ ├── CreateLiveStreamRequest.php │ │ ├── CreatePlaybackIDRequest.php │ │ ├── CreatePlaybackIDResponse.php │ │ ├── CreatePlaybackRestrictionRequest.php │ │ ├── CreateSimulcastTargetRequest.php │ │ ├── CreateTrackRequest.php │ │ ├── CreateTrackResponse.php │ │ ├── CreateUploadRequest.php │ │ ├── DeliveryReport.php │ │ ├── DimensionValue.php │ │ ├── DisableLiveStreamResponse.php │ │ ├── EnableLiveStreamResponse.php │ │ ├── Error.php │ │ ├── ExportDate.php │ │ ├── ExportFile.php │ │ ├── FilterValue.php │ │ ├── GetAssetInputInfoResponse.php │ │ ├── GetAssetOrLiveStreamIdResponse.php │ │ ├── GetAssetOrLiveStreamIdResponseData.php │ │ ├── GetAssetOrLiveStreamIdResponseDataObject.php │ │ ├── GetAssetPlaybackIDResponse.php │ │ ├── GetLiveStreamPlaybackIDResponse.php │ │ ├── GetMetricTimeseriesDataResponse.php │ │ ├── GetOverallValuesResponse.php │ │ ├── GetRealTimeBreakdownResponse.php │ │ ├── GetRealTimeHistogramTimeseriesResponse.php │ │ ├── GetRealTimeHistogramTimeseriesResponseMeta.php │ │ ├── GetRealTimeTimeseriesResponse.php │ │ ├── Incident.php │ │ ├── IncidentBreakdown.php │ │ ├── IncidentNotification.php │ │ ├── IncidentNotificationRule.php │ │ ├── IncidentResponse.php │ │ ├── InputFile.php │ │ ├── InputInfo.php │ │ ├── InputSettings.php │ │ ├── InputSettingsOverlaySettings.php │ │ ├── InputTrack.php │ │ ├── Insight.php │ │ ├── ListAllMetricValuesResponse.php │ │ ├── ListAssetsResponse.php │ │ ├── ListBreakdownValuesResponse.php │ │ ├── ListDeliveryUsageResponse.php │ │ ├── ListDimensionValuesResponse.php │ │ ├── ListDimensionsResponse.php │ │ ├── ListErrorsResponse.php │ │ ├── ListExportsResponse.php │ │ ├── ListFilterValuesResponse.php │ │ ├── ListFiltersResponse.php │ │ ├── ListFiltersResponseData.php │ │ ├── ListIncidentsResponse.php │ │ ├── ListInsightsResponse.php │ │ ├── ListLiveStreamsResponse.php │ │ ├── ListPlaybackRestrictionsResponse.php │ │ ├── ListRealTimeDimensionsResponse.php │ │ ├── ListRealTimeDimensionsResponseData.php │ │ ├── ListRealTimeMetricsResponse.php │ │ ├── ListRelatedIncidentsResponse.php │ │ ├── ListSigningKeysResponse.php │ │ ├── ListUploadsResponse.php │ │ ├── ListVideoViewExportsResponse.php │ │ ├── ListVideoViewsResponse.php │ │ ├── LiveStream.php │ │ ├── LiveStreamEmbeddedSubtitleSettings.php │ │ ├── LiveStreamResponse.php │ │ ├── LiveStreamStatus.php │ │ ├── Metric.php │ │ ├── ModelInterface.php │ │ ├── NotificationRule.php │ │ ├── OverallValues.php │ │ ├── PlaybackID.php │ │ ├── PlaybackPolicy.php │ │ ├── PlaybackRestriction.php │ │ ├── PlaybackRestrictionResponse.php │ │ ├── RealTimeBreakdownValue.php │ │ ├── RealTimeHistogramTimeseriesBucket.php │ │ ├── RealTimeHistogramTimeseriesBucketValues.php │ │ ├── RealTimeHistogramTimeseriesDatapoint.php │ │ ├── RealTimeTimeseriesDatapoint.php │ │ ├── ReferrerDomainRestriction.php │ │ ├── Score.php │ │ ├── SignalLiveStreamCompleteResponse.php │ │ ├── SigningKey.php │ │ ├── SigningKeyResponse.php │ │ ├── SimulcastTarget.php │ │ ├── SimulcastTargetResponse.php │ │ ├── Track.php │ │ ├── UpdateAssetMP4SupportRequest.php │ │ ├── UpdateAssetMasterAccessRequest.php │ │ ├── UpdateAssetRequest.php │ │ ├── UpdateLiveStreamEmbeddedSubtitlesRequest.php │ │ ├── UpdateLiveStreamRequest.php │ │ ├── UpdateReferrerDomainRestrictionRequest.php │ │ ├── Upload.php │ │ ├── UploadError.php │ │ ├── UploadResponse.php │ │ ├── VideoView.php │ │ ├── VideoViewEvent.php │ │ └── VideoViewResponse.php │ └── ObjectSerializer.php │ ├── gen │ ├── Makefile │ ├── templates │ │ ├── ApiException.mustache │ │ ├── Configuration.mustache │ │ ├── HeaderSelector.mustache │ │ ├── ModelInterface.mustache │ │ ├── ObjectSerializer.mustache │ │ ├── README.mustache │ │ ├── api.mustache │ │ ├── api_doc.mustache │ │ ├── api_test.mustache │ │ ├── composer.mustache │ │ ├── git_push.sh.mustache │ │ ├── gitignore │ │ ├── model.mustache │ │ ├── model_doc.mustache │ │ ├── model_enum.mustache │ │ ├── model_generic.mustache │ │ ├── model_test.mustache │ │ ├── partial_header.mustache │ │ ├── php_doc_auth_partial.mustache │ │ └── phpunit.xml.mustache │ └── yarn.lock │ └── test.sh ├── phpoption └── phpoption │ ├── Makefile │ └── src │ └── PhpOption │ ├── LazyOption.php │ ├── None.php │ ├── Option.php │ └── Some.php ├── psr ├── http-client │ └── src │ │ ├── ClientExceptionInterface.php │ │ ├── ClientInterface.php │ │ ├── NetworkExceptionInterface.php │ │ └── RequestExceptionInterface.php ├── http-factory │ └── src │ │ ├── RequestFactoryInterface.php │ │ ├── ResponseFactoryInterface.php │ │ ├── ServerRequestFactoryInterface.php │ │ ├── StreamFactoryInterface.php │ │ ├── UploadedFileFactoryInterface.php │ │ └── UriFactoryInterface.php └── http-message │ └── src │ ├── MessageInterface.php │ ├── RequestInterface.php │ ├── ResponseInterface.php │ ├── ServerRequestInterface.php │ ├── StreamInterface.php │ ├── UploadedFileInterface.php │ └── UriInterface.php ├── ralouphie └── getallheaders │ └── src │ └── getallheaders.php ├── symfony ├── deprecation-contracts │ └── function.php ├── polyfill-ctype │ ├── Ctype.php │ ├── bootstrap.php │ └── bootstrap80.php ├── polyfill-mbstring │ ├── Mbstring.php │ ├── Resources │ │ └── unidata │ │ │ ├── lowerCase.php │ │ │ ├── titleCaseRegexp.php │ │ │ └── upperCase.php │ ├── bootstrap.php │ └── bootstrap80.php └── polyfill-php80 │ ├── Php80.php │ ├── PhpToken.php │ ├── Resources │ └── stubs │ │ ├── Attribute.php │ │ ├── PhpToken.php │ │ ├── Stringable.php │ │ ├── UnhandledMatchError.php │ │ └── ValueError.php │ └── bootstrap.php └── vlucas └── phpdotenv └── src ├── Dotenv.php ├── Exception ├── ExceptionInterface.php ├── InvalidEncodingException.php ├── InvalidFileException.php ├── InvalidPathException.php └── ValidationException.php ├── Loader ├── Loader.php ├── LoaderInterface.php └── Resolver.php ├── Parser ├── Entry.php ├── EntryParser.php ├── Lexer.php ├── Lines.php ├── Parser.php ├── ParserInterface.php └── Value.php ├── Repository ├── Adapter │ ├── AdapterInterface.php │ ├── ApacheAdapter.php │ ├── ArrayAdapter.php │ ├── EnvConstAdapter.php │ ├── GuardedWriter.php │ ├── ImmutableWriter.php │ ├── MultiReader.php │ ├── MultiWriter.php │ ├── PutenvAdapter.php │ ├── ReaderInterface.php │ ├── ReplacingWriter.php │ ├── ServerConstAdapter.php │ └── WriterInterface.php ├── AdapterRepository.php ├── RepositoryBuilder.php └── RepositoryInterface.php ├── Store ├── File │ ├── Paths.php │ └── Reader.php ├── FileStore.php ├── StoreBuilder.php ├── StoreInterface.php └── StringStore.php ├── Util ├── Regex.php └── Str.php └── Validator.php /.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.php] 13 | indent_size = 4 14 | 15 | [*.md,*.txt] 16 | trim_trailing_whitespace = false 17 | insert_final_newline = false 18 | 19 | [composer.json] 20 | indent_size = 4 21 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | MUX_TOKEN_ID= 2 | MUX_TOKEN_SECRET= 3 | MUX_DEV=true 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Note: You need to uncomment the lines you want to use; the other lines can be deleted 2 | 3 | # Git 4 | # .gitattributes export-ignore 5 | # .gitignore export-ignore 6 | 7 | # Tests 8 | # /.coveralls.yml export-ignore 9 | # /.travis.yml export-ignore 10 | # /phpunit.xml.dist export-ignore 11 | # /tests/ export-ignore 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS files 2 | .DS_Store 3 | 4 | # npm modules 5 | /node_modules 6 | 7 | # Parcel cache folder 8 | .cache 9 | 10 | # Files of Composer dependencies that are not needed for the plugin 11 | /vendor/**/.* 12 | /vendor/**/*.json 13 | /vendor/**/*.txt 14 | /vendor/**/*.md 15 | /vendor/**/*.yml 16 | /vendor/**/*.yaml 17 | /vendor/**/*.xml 18 | /vendor/**/*.dist 19 | /vendor/**/readme.php 20 | /vendor/**/LICENSE 21 | /vendor/**/COPYING 22 | /vendor/**/VERSION 23 | /vendor/**/docs/* 24 | /vendor/**/example/* 25 | /vendor/**/examples/* 26 | /vendor/**/test/* 27 | /vendor/**/tests/* 28 | /vendor/**/php4/* 29 | /vendor/getkirby/composer-installer 30 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Robin Scholz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /blueprints/blocks/mux-video.yml: -------------------------------------------------------------------------------- 1 | name: field.blocks.video.name 2 | icon: video 3 | fields: 4 | video: 5 | label: field.blocks.video.name 6 | type: files 7 | multiple: false 8 | query: page.files.template('mux-video') 9 | image: 10 | back: black 11 | uploads: 12 | template: mux-video 13 | caption: 14 | label: field.blocks.video.caption 15 | type: writer 16 | inline: true 17 | thumbnail: 18 | label: field.blocks.mux-video.thumbnail 19 | help: fields.blocks.mux-video.thumbnail.help 20 | type: number 21 | default: 0 22 | -------------------------------------------------------------------------------- /blueprints/files/mux-video.yml: -------------------------------------------------------------------------------- 1 | title: 2 | de: Mux video 3 | en: Mux video 4 | 5 | accept: 6 | mime: video/* 7 | type: video 8 | 9 | fields: 10 | mux: 11 | type: hidden 12 | -------------------------------------------------------------------------------- /classes/KirbyMux/Auth.php: -------------------------------------------------------------------------------- 1 | setUsername($_ENV['MUX_TOKEN_ID']) 14 | ->setPassword($_ENV['MUX_TOKEN_SECRET']); 15 | 16 | // API client initialization 17 | $assetsApi = new MuxPhp\Api\AssetsApi( 18 | new GuzzleHttp\Client(), 19 | $config 20 | ); 21 | 22 | return $assetsApi; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /classes/KirbyMux/Methods.php: -------------------------------------------------------------------------------- 1 | $file]); 12 | $createAssetRequest = new MuxPhp\Models\CreateAssetRequest(["input" => $input, "playback_policy" => [MuxPhp\Models\PlaybackPolicy::_PUBLIC] ]); 13 | $result = $assetsApi->createAsset($createAssetRequest); 14 | 15 | return $result; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "robinscholz/kirby-mux", 3 | "description": "Upload videos directly to mux", 4 | "type": "kirby-plugin", 5 | "keywords": [ 6 | "kirby", 7 | "mux", 8 | "video", 9 | "stream" 10 | ], 11 | "license": "MIT", 12 | "homepage": "https://github.com/robinscholz/kirby-mux#readme", 13 | "authors": [ 14 | { 15 | "name": "Robin Scholz", 16 | "email": "dev@studioscholz.info", 17 | "homepage": "https://studioscholz.info" 18 | } 19 | ], 20 | "require": { 21 | "php": ">=7.4.0", 22 | "getkirby/composer-installer": "^1.2", 23 | "muxinc/mux-php": "^3.3", 24 | "vlucas/phpdotenv": "^5.4" 25 | }, 26 | "require-dev": { 27 | "getkirby/cms": "^3.6" 28 | }, 29 | "autoload": { 30 | "psr-4": { 31 | "KirbyMux\\": "classes/KirbyMux/" 32 | } 33 | }, 34 | "scripts": { 35 | "dist": "composer install --no-dev --optimize-autoloader" 36 | }, 37 | "config": { 38 | "optimize-autoloader": true 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | .video-player[data-v-d38eb820]{position:relative;display:flex}.thumb[data-v-d38eb820]{width:100%;position:absolute;top:0;left:0;right:0;bottom:0;z-index:10}.overlay[data-v-d38eb820]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;z-index:20}.overlay__inner[data-v-d38eb820]{width:56px;height:42px;padding-left:3px;background:#000;border:0;display:flex;color:#fff;align-items:center;justify-content:center;transition:width .15s ease-out,height .15s ease-out;cursor:pointer}.overlay__inner svg[data-v-d38eb820]{width:14px;height:auto}.overlay__inner[data-v-d38eb820]:active{width:53.333px;height:40px}video[data-v-d38eb820]{width:100%;cursor:pointer} 2 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kirby-mux", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "hls.js": "^1.1.4" 9 | } 10 | }, 11 | "node_modules/hls.js": { 12 | "version": "1.1.5", 13 | "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.1.5.tgz", 14 | "integrity": "sha512-mQX5TSNtJEzGo5HPpvcQgCu+BWoKDQM6YYtg/KbgWkmVAcqOCvSTi0SuqG2ZJLXxIzdnFcKU2z7Mrw/YQWhPOA==" 15 | } 16 | }, 17 | "dependencies": { 18 | "hls.js": { 19 | "version": "1.1.5", 20 | "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.1.5.tgz", 21 | "integrity": "sha512-mQX5TSNtJEzGo5HPpvcQgCu+BWoKDQM6YYtg/KbgWkmVAcqOCvSTi0SuqG2ZJLXxIzdnFcKU2z7Mrw/YQWhPOA==" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.3.0", 3 | "scripts": { 4 | "dev": "npx -y kirbyup src/index.js --watch", 5 | "build": "npx -y kirbyup src/index.js" 6 | }, 7 | "dependencies": { 8 | "hls.js": "^1.1.4" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/components/VideoBlock.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 65 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import VideoBlock from "./components/VideoBlock.vue"; 2 | 3 | window.panel.plugin("robinscholz/kirby-mux", { 4 | blocks: { 5 | "mux-video": VideoBlock, 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /vendor/autoload.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', 10 | 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', 11 | '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', 12 | '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', 13 | '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 14 | '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 15 | 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', 16 | ); 17 | -------------------------------------------------------------------------------- /vendor/composer/autoload_namespaces.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/symfony/polyfill-php80'), 10 | 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 11 | 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 12 | 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), 13 | 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), 14 | 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), 15 | 'MuxPhp\\' => array($vendorDir . '/muxinc/mux-php/MuxPhp'), 16 | 'Kirby\\' => array($vendorDir . '/getkirby/composer-installer/src'), 17 | 'KirbyMux\\' => array($baseDir . '/classes/KirbyMux'), 18 | 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 19 | 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 20 | 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), 21 | 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), 22 | 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), 23 | ); 24 | -------------------------------------------------------------------------------- /vendor/composer/platform_check.php: -------------------------------------------------------------------------------- 1 | = 80002)) { 8 | $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.'; 9 | } 10 | 11 | if ($issues) { 12 | if (!headers_sent()) { 13 | header('HTTP/1.1 500 Internal Server Error'); 14 | } 15 | if (!ini_get('display_errors')) { 16 | if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { 17 | fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); 18 | } elseif (!headers_sent()) { 19 | echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; 20 | } 21 | } 22 | trigger_error( 23 | 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 | E_USER_ERROR 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/assets/whoops.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #efefef; 3 | font: normal normal 400 12px/1.5 -apple-system, BlinkMacSystemFont, Segoe UI, 4 | Roboto, Helvetica, Arial, sans-serif; 5 | } 6 | 7 | .left-panel { 8 | background: transparent; 9 | } 10 | 11 | header { 12 | background-color: #313740; 13 | } 14 | 15 | .exc-title-primary { 16 | color: hsl(0, 71%, 55%); 17 | } 18 | 19 | .frame.active { 20 | color: hsl(0, 71%, 55%); 21 | box-shadow: inset -5px 0 0 0 #d16464; 22 | } 23 | 24 | .frame:not(.active):hover { 25 | background: rgba(203, 215, 229, 0.5); 26 | } 27 | 28 | .rightButton { 29 | color: #999; 30 | box-shadow: inset 0 0 0 1px #777; 31 | border-radius: 0; 32 | } 33 | 34 | .rightButton:hover { 35 | box-shadow: inset 0 0 0 1px #555; 36 | color: #777; 37 | } 38 | 39 | .details-heading { 40 | color: #7e9abf; 41 | font-weight: 500; 42 | } 43 | 44 | .frame-code { 45 | background: #000; 46 | } 47 | 48 | pre.code-block, 49 | code.code-block, 50 | .frame-args.code-block, 51 | .frame-args.code-block samp { 52 | background: #16171a; 53 | } 54 | 55 | .linenums li.current { 56 | background: transparent; 57 | } 58 | 59 | .linenums li.current.active { 60 | background: rgba(209, 100, 100, 0.3); 61 | } 62 | 63 | pre .atv, 64 | code .atv, 65 | pre .str, 66 | code .str { 67 | color: #a7bd68; 68 | } 69 | 70 | pre .tag, 71 | code .tag { 72 | color: #d16464; 73 | } 74 | 75 | pre .kwd, 76 | code .kwd { 77 | color: #8abeb7; 78 | } 79 | 80 | pre .atn, 81 | code .atn { 82 | color: #de935f; 83 | } 84 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/bootstrap.php: -------------------------------------------------------------------------------- 1 | =') === false || 9 | version_compare(PHP_VERSION, '8.2.0', '<') === false 10 | ) { 11 | die(include __DIR__ . '/views/php.php'); 12 | } 13 | 14 | if (is_file($autoloader = dirname(__DIR__) . '/vendor/autoload.php')) { 15 | 16 | /** 17 | * Always prefer a site-wide Composer autoloader 18 | * if it exists, it means that the user has probably 19 | * installed additional packages 20 | */ 21 | include $autoloader; 22 | } elseif (is_file($autoloader = __DIR__ . '/vendor/autoload.php')) { 23 | 24 | /** 25 | * Fall back to the local autoloader if that exists 26 | */ 27 | include $autoloader; 28 | } else { 29 | 30 | /** 31 | * If neither one exists, don't bother searching; 32 | * it's a custom directory setup and the users need to 33 | * load the autoloader themselves 34 | */ 35 | } 36 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/authentication.php: -------------------------------------------------------------------------------- 1 | kirby()->auth(); 7 | $allowImpersonation = $this->kirby()->option('api.allowImpersonation') ?? false; 8 | 9 | // csrf token check 10 | if ( 11 | $auth->type($allowImpersonation) === 'session' && 12 | $auth->csrf() === false 13 | ) { 14 | throw new PermissionException('Unauthenticated'); 15 | } 16 | 17 | // get user from session or basic auth 18 | if ($user = $auth->user(null, $allowImpersonation)) { 19 | if ($user->role()->permissions()->for('access', 'panel') === false) { 20 | throw new PermissionException(['key' => 'access.panel']); 21 | } 22 | 23 | return $user; 24 | } 25 | 26 | throw new PermissionException('Unauthenticated'); 27 | }; 28 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/collections.php: -------------------------------------------------------------------------------- 1 | [ 12 | 'model' => 'page', 13 | 'type' => 'Kirby\Cms\Pages', 14 | 'view' => 'compact' 15 | ], 16 | 17 | /** 18 | * Files 19 | */ 20 | 'files' => [ 21 | 'model' => 'file', 22 | 'type' => 'Kirby\Cms\Files' 23 | ], 24 | 25 | /** 26 | * Languages 27 | */ 28 | 'languages' => [ 29 | 'model' => 'language', 30 | 'type' => 'Kirby\Cms\Languages' 31 | ], 32 | 33 | /** 34 | * Pages 35 | */ 36 | 'pages' => [ 37 | 'model' => 'page', 38 | 'type' => 'Kirby\Cms\Pages', 39 | 'view' => 'compact' 40 | ], 41 | 42 | /** 43 | * Roles 44 | */ 45 | 'roles' => [ 46 | 'model' => 'role', 47 | 'type' => 'Kirby\Cms\Roles', 48 | 'view' => 'compact' 49 | ], 50 | 51 | /** 52 | * Translations 53 | */ 54 | 'translations' => [ 55 | 'model' => 'translation', 56 | 'type' => 'Kirby\Cms\Translations', 57 | 'view' => 'compact' 58 | ], 59 | 60 | /** 61 | * Users 62 | */ 63 | 'users' => [ 64 | 'default' => fn () => $this->users(), 65 | 'model' => 'user', 66 | 'type' => 'Kirby\Cms\Users', 67 | 'view' => 'compact' 68 | ] 69 | 70 | ]; 71 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models.php: -------------------------------------------------------------------------------- 1 | include __DIR__ . '/models/File.php', 8 | 'FileBlueprint' => include __DIR__ . '/models/FileBlueprint.php', 9 | 'FileVersion' => include __DIR__ . '/models/FileVersion.php', 10 | 'Language' => include __DIR__ . '/models/Language.php', 11 | 'Page' => include __DIR__ . '/models/Page.php', 12 | 'PageBlueprint' => include __DIR__ . '/models/PageBlueprint.php', 13 | 'Role' => include __DIR__ . '/models/Role.php', 14 | 'Site' => include __DIR__ . '/models/Site.php', 15 | 'SiteBlueprint' => include __DIR__ . '/models/SiteBlueprint.php', 16 | 'System' => include __DIR__ . '/models/System.php', 17 | 'Translation' => include __DIR__ . '/models/Translation.php', 18 | 'User' => include __DIR__ . '/models/User.php', 19 | 'UserBlueprint' => include __DIR__ . '/models/UserBlueprint.php', 20 | ]; 21 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/FileBlueprint.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'name' => fn (FileBlueprint $blueprint) => $blueprint->name(), 11 | 'options' => fn (FileBlueprint $blueprint) => $blueprint->options(), 12 | 'tabs' => fn (FileBlueprint $blueprint) => $blueprint->tabs(), 13 | 'title' => fn (FileBlueprint $blueprint) => $blueprint->title(), 14 | ], 15 | 'type' => 'Kirby\Cms\FileBlueprint', 16 | 'views' => [ 17 | ], 18 | ]; 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/Language.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'code' => fn (Language $language) => $language->code(), 11 | 'default' => fn (Language $language) => $language->isDefault(), 12 | 'direction' => fn (Language $language) => $language->direction(), 13 | 'locale' => fn (Language $language) => $language->locale(), 14 | 'name' => fn (Language $language) => $language->name(), 15 | 'rules' => fn (Language $language) => $language->rules(), 16 | 'url' => fn (Language $language) => $language->url(), 17 | ], 18 | 'type' => 'Kirby\Cms\Language', 19 | 'views' => [ 20 | 'default' => [ 21 | 'code', 22 | 'default', 23 | 'direction', 24 | 'locale', 25 | 'name', 26 | 'rules', 27 | 'url' 28 | ] 29 | ] 30 | ]; 31 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/PageBlueprint.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'name' => fn (PageBlueprint $blueprint) => $blueprint->name(), 11 | 'num' => fn (PageBlueprint $blueprint) => $blueprint->num(), 12 | 'options' => fn (PageBlueprint $blueprint) => $blueprint->options(), 13 | 'preview' => fn (PageBlueprint $blueprint) => $blueprint->preview(), 14 | 'status' => fn (PageBlueprint $blueprint) => $blueprint->status(), 15 | 'tabs' => fn (PageBlueprint $blueprint) => $blueprint->tabs(), 16 | 'title' => fn (PageBlueprint $blueprint) => $blueprint->title(), 17 | ], 18 | 'type' => 'Kirby\Cms\PageBlueprint', 19 | 'views' => [ 20 | ], 21 | ]; 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/Role.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'description' => fn (Role $role) => $role->description(), 11 | 'name' => fn (Role $role) => $role->name(), 12 | 'permissions' => fn (Role $role) => $role->permissions()->toArray(), 13 | 'title' => fn (Role $role) => $role->title(), 14 | ], 15 | 'type' => 'Kirby\Cms\Role', 16 | 'views' => [ 17 | 'compact' => [ 18 | 'description', 19 | 'name', 20 | 'title' 21 | ] 22 | ] 23 | ]; 24 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/Site.php: -------------------------------------------------------------------------------- 1 | fn () => $this->site(), 11 | 'fields' => [ 12 | 'blueprint' => fn (Site $site) => $site->blueprint(), 13 | 'children' => fn (Site $site) => $site->children(), 14 | 'content' => fn (Site $site) => Form::for($site)->values(), 15 | 'drafts' => fn (Site $site) => $site->drafts(), 16 | 'files' => fn (Site $site) => $site->files()->sorted(), 17 | 'options' => fn (Site $site) => $site->permissions()->toArray(), 18 | 'previewUrl' => fn (Site $site) => $site->previewUrl(), 19 | 'title' => fn (Site $site) => $site->title()->value(), 20 | 'url' => fn (Site $site) => $site->url(), 21 | ], 22 | 'type' => 'Kirby\Cms\Site', 23 | 'views' => [ 24 | 'compact' => [ 25 | 'title', 26 | 'url' 27 | ], 28 | 'default' => [ 29 | 'content', 30 | 'options', 31 | 'title', 32 | 'url' 33 | ], 34 | 'panel' => [ 35 | 'title', 36 | 'blueprint', 37 | 'content', 38 | 'options', 39 | 'previewUrl', 40 | 'url' 41 | ], 42 | 'selector' => [ 43 | 'title', 44 | 'children' => [ 45 | 'id', 46 | 'title', 47 | 'panelIcon', 48 | 'hasChildren' 49 | ], 50 | ] 51 | ] 52 | ]; 53 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/SiteBlueprint.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'name' => fn (SiteBlueprint $blueprint) => $blueprint->name(), 11 | 'options' => fn (SiteBlueprint $blueprint) => $blueprint->options(), 12 | 'tabs' => fn (SiteBlueprint $blueprint) => $blueprint->tabs(), 13 | 'title' => fn (SiteBlueprint $blueprint) => $blueprint->title(), 14 | ], 15 | 'type' => 'Kirby\Cms\SiteBlueprint', 16 | 'views' => [], 17 | ]; 18 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/Translation.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'author' => fn (Translation $translation) => $translation->author(), 11 | 'data' => fn (Translation $translation) => $translation->dataWithFallback(), 12 | 'direction' => fn (Translation $translation) => $translation->direction(), 13 | 'id' => fn (Translation $translation) => $translation->id(), 14 | 'name' => fn (Translation $translation) => $translation->name(), 15 | ], 16 | 'type' => 'Kirby\Cms\Translation', 17 | 'views' => [ 18 | 'compact' => [ 19 | 'direction', 20 | 'id', 21 | 'name' 22 | ] 23 | ] 24 | ]; 25 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/models/UserBlueprint.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'name' => fn (UserBlueprint $blueprint) => $blueprint->name(), 11 | 'options' => fn (UserBlueprint $blueprint) => $blueprint->options(), 12 | 'tabs' => fn (UserBlueprint $blueprint) => $blueprint->tabs(), 13 | 'title' => fn (UserBlueprint $blueprint) => $blueprint->title(), 14 | ], 15 | 'type' => 'Kirby\Cms\UserBlueprint', 16 | 'views' => [ 17 | ], 18 | ]; 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/routes.php: -------------------------------------------------------------------------------- 1 | option('languages', false) !== false) { 22 | $routes = array_merge($routes, include __DIR__ . '/routes/languages.php'); 23 | } 24 | 25 | return $routes; 26 | }; 27 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/routes/languages.php: -------------------------------------------------------------------------------- 1 | 'languages', 9 | 'method' => 'GET', 10 | 'action' => function () { 11 | return $this->kirby()->languages(); 12 | } 13 | ], 14 | [ 15 | 'pattern' => 'languages', 16 | 'method' => 'POST', 17 | 'action' => function () { 18 | return $this->kirby()->languages()->create($this->requestBody()); 19 | } 20 | ], 21 | [ 22 | 'pattern' => 'languages/(:any)', 23 | 'method' => 'GET', 24 | 'action' => function (string $code) { 25 | return $this->kirby()->languages()->find($code); 26 | } 27 | ], 28 | [ 29 | 'pattern' => 'languages/(:any)', 30 | 'method' => 'PATCH', 31 | 'action' => function (string $code) { 32 | if ($language = $this->kirby()->languages()->find($code)) { 33 | return $language->update($this->requestBody()); 34 | } 35 | } 36 | ], 37 | [ 38 | 'pattern' => 'languages/(:any)', 39 | 'method' => 'DELETE', 40 | 'action' => function (string $code) { 41 | if ($language = $this->kirby()->languages()->find($code)) { 42 | return $language->delete(); 43 | } 44 | } 45 | ] 46 | ]; 47 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/routes/roles.php: -------------------------------------------------------------------------------- 1 | 'roles', 9 | 'method' => 'GET', 10 | 'action' => function () { 11 | switch (get('canBe')) { 12 | case 'changed': 13 | return $this->kirby()->roles()->canBeChanged(); 14 | case 'created': 15 | return $this->kirby()->roles()->canBeCreated(); 16 | default: 17 | return $this->kirby()->roles(); 18 | } 19 | } 20 | ], 21 | [ 22 | 'pattern' => 'roles/(:any)', 23 | 'method' => 'GET', 24 | 'action' => function (string $name) { 25 | return $this->kirby()->roles()->find($name); 26 | } 27 | ] 28 | ]; 29 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/api/routes/translations.php: -------------------------------------------------------------------------------- 1 | 'translations', 9 | 'method' => 'GET', 10 | 'auth' => false, 11 | 'action' => function () { 12 | return $this->kirby()->translations(); 13 | } 14 | ], 15 | [ 16 | 'pattern' => 'translations/(:any)', 17 | 'method' => 'GET', 18 | 'auth' => false, 19 | 'action' => function (string $code) { 20 | return $this->kirby()->translations()->find($code); 21 | } 22 | ] 23 | 24 | ]; 25 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/account.php: -------------------------------------------------------------------------------- 1 | 'account', 6 | 'label' => t('view.account'), 7 | 'search' => 'users', 8 | 'dialogs' => require __DIR__ . '/account/dialogs.php', 9 | 'dropdowns' => require __DIR__ . '/account/dropdowns.php', 10 | 'views' => require __DIR__ . '/account/views.php' 11 | ]; 12 | }; 13 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/account/dropdowns.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'pattern' => '(account)', 8 | 'options' => $dropdowns['user']['options'] 9 | ], 10 | 'account.file' => [ 11 | 'pattern' => '(account)/files/(:any)', 12 | 'options' => $dropdowns['user.file']['options'] 13 | ], 14 | ]; 15 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/account/views.php: -------------------------------------------------------------------------------- 1 | [ 8 | 'pattern' => 'account', 9 | 'action' => fn () => [ 10 | 'component' => 'k-account-view', 11 | 'props' => kirby()->user()->panel()->props(), 12 | ], 13 | ], 14 | 'account.file' => [ 15 | 'pattern' => 'account/files/(:any)', 16 | 'action' => function (string $filename) { 17 | return Find::file('account', $filename)->panel()->view(); 18 | } 19 | ], 20 | 'account.logout' => [ 21 | 'pattern' => 'logout', 22 | 'auth' => false, 23 | 'action' => function () { 24 | if ($user = kirby()->user()) { 25 | $user->logout(); 26 | } 27 | Panel::go('login'); 28 | }, 29 | ], 30 | 'account.password' => [ 31 | 'pattern' => 'reset-password', 32 | 'action' => fn () => ['component' => 'k-reset-password-view'] 33 | ] 34 | ]; 35 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/files/dropdowns.php: -------------------------------------------------------------------------------- 1 | function (string $parent, string $filename) { 7 | return Find::file($parent, $filename)->panel()->dropdown(); 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/installation.php: -------------------------------------------------------------------------------- 1 | 'settings', 8 | 'label' => t('view.installation'), 9 | 'views' => [ 10 | 'installation' => [ 11 | 'pattern' => 'installation', 12 | 'auth' => false, 13 | 'action' => function () use ($kirby) { 14 | $system = $kirby->system(); 15 | return [ 16 | 'component' => 'k-installation-view', 17 | 'props' => [ 18 | 'isInstallable' => $system->isInstallable(), 19 | 'isInstalled' => $system->isInstalled(), 20 | 'isOk' => $system->isOk(), 21 | 'requirements' => $system->status(), 22 | 'translations' => $kirby->translations()->values(function ($translation) { 23 | return [ 24 | 'text' => $translation->name(), 25 | 'value' => $translation->code(), 26 | ]; 27 | }), 28 | ] 29 | ]; 30 | } 31 | ], 32 | 'installation.fallback' => [ 33 | 'pattern' => '(:all)', 34 | 'auth' => false, 35 | 'action' => fn () => Panel::go('installation') 36 | ] 37 | ] 38 | ]; 39 | }; 40 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/languages.php: -------------------------------------------------------------------------------- 1 | 'globe', 6 | 'label' => t('view.languages'), 7 | 'menu' => true, 8 | 'dialogs' => require __DIR__ . '/languages/dialogs.php', 9 | 'views' => require __DIR__ . '/languages/views.php' 10 | ]; 11 | }; 12 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/languages/views.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'pattern' => 'languages', 8 | 'action' => function () { 9 | $kirby = kirby(); 10 | 11 | return [ 12 | 'component' => 'k-languages-view', 13 | 'props' => [ 14 | 'languages' => $kirby->languages()->values(fn ($language) => [ 15 | 'default' => $language->isDefault(), 16 | 'id' => $language->code(), 17 | 'info' => Escape::html($language->code()), 18 | 'text' => Escape::html($language->name()), 19 | ]) 20 | ] 21 | ]; 22 | } 23 | ], 24 | ]; 25 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/login.php: -------------------------------------------------------------------------------- 1 | 'user', 8 | 'label' => t('login'), 9 | 'views' => [ 10 | 'login' => [ 11 | 'pattern' => 'login', 12 | 'auth' => false, 13 | 'action' => function () use ($kirby) { 14 | $system = $kirby->system(); 15 | $status = $kirby->auth()->status(); 16 | return [ 17 | 'component' => 'k-login-view', 18 | 'props' => [ 19 | 'methods' => array_keys($system->loginMethods()), 20 | 'pending' => [ 21 | 'email' => $status->email(), 22 | 'challenge' => $status->challenge() 23 | ] 24 | ], 25 | ]; 26 | } 27 | ], 28 | 'login.fallback' => [ 29 | 'pattern' => '(:all)', 30 | 'auth' => false, 31 | 'action' => function ($path) use ($kirby) { 32 | /** 33 | * Store the current path in the session 34 | * Once the user is logged in, the path will 35 | * be used to redirect to that view again 36 | */ 37 | $kirby->session()->set('panel.path', $path); 38 | Panel::go('login'); 39 | } 40 | ] 41 | ] 42 | ]; 43 | }; 44 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/site.php: -------------------------------------------------------------------------------- 1 | function () use ($kirby) { 7 | return $kirby->site()->title()->or(t('view.site'))->toString(); 8 | }, 9 | 'icon' => 'home', 10 | 'label' => $kirby->site()->blueprint()->title() ?? t('view.site'), 11 | 'menu' => true, 12 | 'dialogs' => require __DIR__ . '/site/dialogs.php', 13 | 'dropdowns' => require __DIR__ . '/site/dropdowns.php', 14 | 'searches' => require __DIR__ . '/site/searches.php', 15 | 'views' => require __DIR__ . '/site/views.php', 16 | ]; 17 | }; 18 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/site/dropdowns.php: -------------------------------------------------------------------------------- 1 | [ 9 | 'pattern' => 'changes', 10 | 'options' => fn () => Dropdown::changes() 11 | ], 12 | 'page' => [ 13 | 'pattern' => 'pages/(:any)', 14 | 'options' => function (string $path) { 15 | return Find::page($path)->panel()->dropdown(); 16 | } 17 | ], 18 | 'page.file' => [ 19 | 'pattern' => '(pages/.*?)/files/(:any)', 20 | 'options' => $files['file'] 21 | ], 22 | 'site.file' => [ 23 | 'pattern' => '(site)/files/(:any)', 24 | 'options' => $files['file'] 25 | ] 26 | ]; 27 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/site/searches.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'label' => t('pages'), 8 | 'icon' => 'page', 9 | 'query' => function (string $query = null) { 10 | $pages = site() 11 | ->index(true) 12 | ->search($query) 13 | ->filter('isReadable', true) 14 | ->limit(10); 15 | 16 | $results = []; 17 | 18 | foreach ($pages as $page) { 19 | $results[] = [ 20 | 'image' => $page->panel()->image(), 21 | 'text' => Escape::html($page->title()->value()), 22 | 'link' => $page->panel()->url(true), 23 | 'info' => Escape::html($page->id()) 24 | ]; 25 | } 26 | 27 | return $results; 28 | } 29 | ], 30 | 'files' => [ 31 | 'label' => t('files'), 32 | 'icon' => 'image', 33 | 'query' => function (string $query = null) { 34 | $files = site() 35 | ->index(true) 36 | ->filter('isReadable', true) 37 | ->files() 38 | ->search($query) 39 | ->limit(10); 40 | 41 | $results = []; 42 | 43 | foreach ($files as $file) { 44 | $results[] = [ 45 | 'image' => $file->panel()->image(), 46 | 'text' => Escape::html($file->filename()), 47 | 'link' => $file->panel()->url(true), 48 | 'info' => Escape::html($file->id()) 49 | ]; 50 | } 51 | 52 | return $results; 53 | } 54 | ] 55 | ]; 56 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/site/views.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'pattern' => 'pages/(:any)', 8 | 'action' => fn (string $path) => Find::page($path)->panel()->view() 9 | ], 10 | 'page.file' => [ 11 | 'pattern' => 'pages/(:any)/files/(:any)', 12 | 'action' => function (string $id, string $filename) { 13 | return Find::file('pages/' . $id, $filename)->panel()->view(); 14 | } 15 | ], 16 | 'site' => [ 17 | 'pattern' => 'site', 18 | 'action' => fn () => site()->panel()->view() 19 | ], 20 | 'site.file' => [ 21 | 'pattern' => 'site/files/(:any)', 22 | 'action' => function (string $filename) { 23 | return Find::file('site', $filename)->panel()->view(); 24 | } 25 | ], 26 | ]; 27 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/system.php: -------------------------------------------------------------------------------- 1 | 'settings', 6 | 'label' => t('view.system'), 7 | 'menu' => true, 8 | 'dialogs' => require __DIR__ . '/system/dialogs.php', 9 | 'views' => require __DIR__ . '/system/views.php' 10 | ]; 11 | }; 12 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/system/dialogs.php: -------------------------------------------------------------------------------- 1 | [ 8 | 'load' => function () { 9 | return [ 10 | 'component' => 'k-form-dialog', 11 | 'props' => [ 12 | 'fields' => [ 13 | 'license' => [ 14 | 'label' => t('license.register.label'), 15 | 'type' => 'text', 16 | 'required' => true, 17 | 'counter' => false, 18 | 'placeholder' => 'K3-', 19 | 'help' => t('license.register.help') 20 | ], 21 | 'email' => Field::email([ 22 | 'required' => true 23 | ]) 24 | ], 25 | 'submitButton' => t('license.register'), 26 | 'value' => [ 27 | 'license' => null, 28 | 'email' => null 29 | ] 30 | ] 31 | ]; 32 | }, 33 | 'submit' => function () { 34 | // @codeCoverageIgnoreStart 35 | kirby()->system()->register(get('license'), get('email')); 36 | return [ 37 | 'event' => 'system.register', 38 | 'message' => t('license.register.success') 39 | ]; 40 | // @codeCoverageIgnoreEnd 41 | } 42 | ], 43 | ]; 44 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/system/views.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'pattern' => 'system', 8 | 'action' => function () { 9 | $kirby = kirby(); 10 | $system = $kirby->system(); 11 | $license = $system->license(); 12 | 13 | // @codeCoverageIgnoreStart 14 | if ($license === true) { 15 | // valid license, but user is not admin 16 | $license = 'Kirby 3'; 17 | } elseif ($license === false) { 18 | // no valid license 19 | $license = null; 20 | } 21 | // @codeCoverageIgnoreEnd 22 | 23 | $plugins = $system->plugins()->values(function ($plugin) { 24 | return [ 25 | 'author' => $plugin->authorsNames(), 26 | 'license' => $plugin->license(), 27 | 'link' => $plugin->link(), 28 | 'name' => $plugin->name(), 29 | 'version' => $plugin->version(), 30 | ]; 31 | }); 32 | 33 | return [ 34 | 'component' => 'k-system-view', 35 | 'props' => [ 36 | 'debug' => $kirby->option('debug', false), 37 | 'license' => $license, 38 | 'plugins' => $plugins, 39 | 'php' => phpversion(), 40 | 'server' => $system->serverSoftware(), 41 | 'https' => Server::https(), 42 | 'version' => $kirby->version(), 43 | ] 44 | ]; 45 | } 46 | ], 47 | ]; 48 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/users.php: -------------------------------------------------------------------------------- 1 | 'users', 6 | 'label' => t('view.users'), 7 | 'search' => 'users', 8 | 'menu' => true, 9 | 'dialogs' => require __DIR__ . '/users/dialogs.php', 10 | 'dropdowns' => require __DIR__ . '/users/dropdowns.php', 11 | 'searches' => require __DIR__ . '/users/searches.php', 12 | 'views' => require __DIR__ . '/users/views.php' 13 | ]; 14 | }; 15 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/users/dropdowns.php: -------------------------------------------------------------------------------- 1 | [ 9 | 'pattern' => 'users/(:any)', 10 | 'options' => function (string $id) { 11 | return Find::user($id)->panel()->dropdown(); 12 | } 13 | ], 14 | 'user.file' => [ 15 | 'pattern' => '(users/.*?)/files/(:any)', 16 | 'options' => $files['file'] 17 | ] 18 | ]; 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/areas/users/searches.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'label' => t('users'), 8 | 'icon' => 'users', 9 | 'query' => function (string $query = null) { 10 | $users = kirby()->users()->search($query)->limit(10); 11 | $results = []; 12 | 13 | foreach ($users as $user) { 14 | $results[] = [ 15 | 'image' => $user->panel()->image(), 16 | 'text' => Escape::html($user->username()), 17 | 'link' => $user->panel()->url(true), 18 | 'info' => Escape::html($user->role()->title()) 19 | ]; 20 | } 21 | 22 | return $results; 23 | } 24 | ] 25 | ]; 26 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/code/code.php: -------------------------------------------------------------------------------- 1 | 2 |
code()->html(false) ?>
3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/gallery/gallery.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 10 |
11 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/heading/heading.php: -------------------------------------------------------------------------------- 1 | 2 | <level()->or('h2') ?>>text() ?>> 3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/image/image.php: -------------------------------------------------------------------------------- 1 | alt(); 5 | $caption = $block->caption(); 6 | $crop = $block->crop()->isTrue(); 7 | $link = $block->link(); 8 | $ratio = $block->ratio()->or('auto'); 9 | $src = null; 10 | 11 | if ($block->location() == 'web') { 12 | $src = $block->src()->esc(); 13 | } elseif ($image = $block->image()->toFile()) { 14 | $alt = $alt ?? $image->alt(); 15 | $src = $image->url(); 16 | } 17 | 18 | ?> 19 | 20 | $ratio, 'data-crop' => $crop], ' ') ?>> 21 | isNotEmpty()): ?> 22 | 23 | <?= $alt->esc() ?> 24 | 25 | 26 | <?= $alt->esc() ?> 27 | 28 | 29 | isNotEmpty()): ?> 30 |
31 | 32 |
33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/line/line.php: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/list/list.php: -------------------------------------------------------------------------------- 1 | 2 | text(); 3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/markdown/markdown.php: -------------------------------------------------------------------------------- 1 | 2 | text()->kt(); 3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/quote/quote.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | text() ?> 4 | citation()->isNotEmpty()): ?> 5 |
6 | citation() ?> 7 |
8 | 9 |
10 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/text/text.php: -------------------------------------------------------------------------------- 1 | 2 | text(); 3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/video/video.php: -------------------------------------------------------------------------------- 1 | 2 | url())): ?> 3 |
4 | 5 | caption()->isNotEmpty()): ?> 6 |
caption() ?>
7 | 8 |
9 | 10 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/checkboxes.php: -------------------------------------------------------------------------------- 1 | ['min', 'options'], 8 | 'props' => [ 9 | /** 10 | * Unset inherited props 11 | */ 12 | 'after' => null, 13 | 'before' => null, 14 | 'icon' => null, 15 | 'placeholder' => null, 16 | 17 | /** 18 | * Arranges the checkboxes in the given number of columns 19 | */ 20 | 'columns' => function (int $columns = 1) { 21 | return $columns; 22 | }, 23 | /** 24 | * Default value for the field, which will be used when a page/file/user is created 25 | */ 26 | 'default' => function ($default = null) { 27 | return Str::split($default, ','); 28 | }, 29 | /** 30 | * Maximum number of checked boxes 31 | */ 32 | 'max' => function (int $max = null) { 33 | return $max; 34 | }, 35 | /** 36 | * Minimum number of checked boxes 37 | */ 38 | 'min' => function (int $min = null) { 39 | return $min; 40 | }, 41 | 'value' => function ($value = null) { 42 | return Str::split($value, ','); 43 | }, 44 | ], 45 | 'computed' => [ 46 | 'default' => function () { 47 | return $this->sanitizeOptions($this->default); 48 | }, 49 | 'value' => function () { 50 | return $this->sanitizeOptions($this->value); 51 | }, 52 | ], 53 | 'save' => function ($value): string { 54 | return A::join($value, ', '); 55 | }, 56 | 'validations' => [ 57 | 'options', 58 | 'max', 59 | 'min' 60 | ] 61 | ]; 62 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/email.php: -------------------------------------------------------------------------------- 1 | 'text', 7 | 'props' => [ 8 | /** 9 | * Unset inherited props 10 | */ 11 | 'converter' => null, 12 | 'counter' => null, 13 | 14 | /** 15 | * Sets the HTML5 autocomplete mode for the input 16 | */ 17 | 'autocomplete' => function (string $autocomplete = 'email') { 18 | return $autocomplete; 19 | }, 20 | 21 | /** 22 | * Changes the email icon to something custom 23 | */ 24 | 'icon' => function (string $icon = 'email') { 25 | return $icon; 26 | }, 27 | 28 | /** 29 | * Custom placeholder text, when the field is empty. 30 | */ 31 | 'placeholder' => function ($value = null) { 32 | return I18n::translate($value, $value) ?? I18n::translate('email.placeholder'); 33 | } 34 | ], 35 | 'validations' => [ 36 | 'minlength', 37 | 'maxlength', 38 | 'email' 39 | ] 40 | ]; 41 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/gap.php: -------------------------------------------------------------------------------- 1 | false 5 | ]; 6 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/headline.php: -------------------------------------------------------------------------------- 1 | false, 5 | 'props' => [ 6 | /** 7 | * Unset inherited props 8 | */ 9 | 'after' => null, 10 | 'autofocus' => null, 11 | 'before' => null, 12 | 'default' => null, 13 | 'disabled' => null, 14 | 'icon' => null, 15 | 'placeholder' => null, 16 | 'required' => null, 17 | 'translate' => null, 18 | 19 | /** 20 | * If `false`, the prepended number will be hidden 21 | */ 22 | 'numbered' => function (bool $numbered = true) { 23 | return $numbered; 24 | } 25 | ] 26 | ]; 27 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/hidden.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Unset inherited props 9 | */ 10 | 'after' => null, 11 | 'autofocus' => null, 12 | 'before' => null, 13 | 'default' => null, 14 | 'disabled' => null, 15 | 'icon' => null, 16 | 'placeholder' => null, 17 | 'required' => null, 18 | 'translate' => null, 19 | 20 | /** 21 | * Text to be displayed 22 | */ 23 | 'text' => function ($value = null) { 24 | return I18n::translate($value, $value); 25 | }, 26 | 27 | /** 28 | * Change the design of the info box 29 | */ 30 | 'theme' => function (string $theme = null) { 31 | return $theme; 32 | } 33 | ], 34 | 'computed' => [ 35 | 'text' => function () { 36 | if ($text = $this->text) { 37 | $text = $this->model()->toSafeString($text); 38 | $text = $this->kirby()->kirbytext($text); 39 | return $text; 40 | } 41 | } 42 | ], 43 | 'save' => false, 44 | ]; 45 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/line.php: -------------------------------------------------------------------------------- 1 | false 5 | ]; 6 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/list.php: -------------------------------------------------------------------------------- 1 | [ 5 | /** 6 | * Sets the allowed HTML formats. Available formats: `bold`, `italic`, `underline`, `strike`, `code`, `link`. Activate them all by passing `true`. Deactivate them all by passing `false` 7 | */ 8 | 'marks' => function ($marks = true) { 9 | return $marks; 10 | } 11 | ], 12 | 'computed' => [ 13 | 'value' => function () { 14 | return trim($this->value ?? ''); 15 | } 16 | ] 17 | ]; 18 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/datetime.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Defines a custom format that is used when the field is saved 9 | */ 10 | 'format' => function (string $format = null) { 11 | return $format; 12 | } 13 | ], 14 | 'methods' => [ 15 | 'toDatetime' => function ($value, string $format = 'Y-m-d H:i:s') { 16 | if ($date = Date::optional($value)) { 17 | if ($this->step) { 18 | $step = Date::stepConfig($this->step); 19 | $date->round($step['unit'], $step['size']); 20 | } 21 | 22 | return $date->format($format); 23 | } 24 | 25 | return null; 26 | } 27 | ], 28 | 'save' => function ($value) { 29 | if ($date = Date::optional($value)) { 30 | return $date->format($this->format); 31 | } 32 | 33 | return ''; 34 | }, 35 | ]; 36 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/filepicker.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'filepicker' => function (array $params = []) { 8 | // fetch the parent model 9 | $params['model'] = $this->model(); 10 | 11 | return (new FilePicker($params))->toArray(); 12 | } 13 | ] 14 | ]; 15 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/layout.php: -------------------------------------------------------------------------------- 1 | [ 5 | /** 6 | * Changes the layout of the selected entries. 7 | * Available layouts: `list`, `cardlets`, `cards` 8 | */ 9 | 'layout' => function (string $layout = 'list') { 10 | $layouts = ['list', 'cardlets', 'cards']; 11 | return in_array($layout, $layouts) ? $layout : 'list'; 12 | }, 13 | 14 | /** 15 | * Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge` 16 | */ 17 | 'size' => function (string $size = 'auto') { 18 | return $size; 19 | }, 20 | ] 21 | ]; 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/min.php: -------------------------------------------------------------------------------- 1 | [ 5 | 'min' => function () { 6 | // set min to at least 1, if required 7 | if ($this->required === true) { 8 | return $this->min ?? 1; 9 | } 10 | 11 | return $this->min; 12 | }, 13 | 'required' => function () { 14 | // set required to true if min is set 15 | if ($this->min) { 16 | return true; 17 | } 18 | 19 | return $this->required; 20 | } 21 | ] 22 | ]; 23 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/options.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * API settings for options requests. This will only take affect when `options` is set to `api`. 9 | */ 10 | 'api' => function ($api = null) { 11 | return $api; 12 | }, 13 | /** 14 | * An array with options 15 | */ 16 | 'options' => function ($options = []) { 17 | return $options; 18 | }, 19 | /** 20 | * Query settings for options queries. This will only take affect when `options` is set to `query`. 21 | */ 22 | 'query' => function ($query = null) { 23 | return $query; 24 | }, 25 | ], 26 | 'computed' => [ 27 | 'options' => function (): array { 28 | return $this->getOptions(); 29 | } 30 | ], 31 | 'methods' => [ 32 | 'getOptions' => function () { 33 | return Options::factory( 34 | $this->options(), 35 | $this->props, 36 | $this->model() 37 | ); 38 | }, 39 | 'sanitizeOption' => function ($option) { 40 | $allowed = array_column($this->options(), 'value'); 41 | return in_array($option, $allowed, true) === true ? $option : null; 42 | }, 43 | 'sanitizeOptions' => function ($options) { 44 | $allowed = array_column($this->options(), 'value'); 45 | return array_intersect($options, $allowed); 46 | }, 47 | ] 48 | ]; 49 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/pagepicker.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'pagepicker' => function (array $params = []) { 8 | // inject the current model 9 | $params['model'] = $this->model(); 10 | 11 | return (new PagePicker($params))->toArray(); 12 | } 13 | ] 14 | ]; 15 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/mixins/userpicker.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'userpicker' => function (array $params = []) { 8 | $params['model'] = $this->model(); 9 | 10 | return (new UserPicker($params))->toArray(); 11 | } 12 | ] 13 | ]; 14 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/multiselect.php: -------------------------------------------------------------------------------- 1 | 'tags', 5 | 'props' => [ 6 | /** 7 | * Unset inherited props 8 | */ 9 | 'accept' => null, 10 | /** 11 | * Custom icon to replace the arrow down. 12 | */ 13 | 'icon' => function (string $icon = null) { 14 | return $icon; 15 | }, 16 | /** 17 | * Enable/disable the search in the dropdown 18 | * Also limit displayed items (display: 20) 19 | * and set minimum number of characters to search (min: 3) 20 | */ 21 | 'search' => function ($search = true) { 22 | return $search; 23 | }, 24 | /** 25 | * If `true`, selected entries will be sorted 26 | * according to their position in the dropdown 27 | */ 28 | 'sort' => function (bool $sort = false) { 29 | return $sort; 30 | }, 31 | ] 32 | ]; 33 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/number.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Default number that will be saved when a new page/user/file is created 9 | */ 10 | 'default' => function ($default = null) { 11 | return $this->toNumber($default); 12 | }, 13 | /** 14 | * The lowest allowed number 15 | */ 16 | 'min' => function (float $min = null) { 17 | return $min; 18 | }, 19 | /** 20 | * The highest allowed number 21 | */ 22 | 'max' => function (float $max = null) { 23 | return $max; 24 | }, 25 | /** 26 | * Allowed incremental steps between numbers (i.e `0.5`) 27 | */ 28 | 'step' => function ($step = null) { 29 | return $this->toNumber($step); 30 | }, 31 | 'value' => function ($value = null) { 32 | return $this->toNumber($value); 33 | } 34 | ], 35 | 'methods' => [ 36 | 'toNumber' => function ($value) { 37 | if ($this->isEmpty($value) === true) { 38 | return null; 39 | } 40 | 41 | return is_float($value) === true ? $value : (float)Str::float($value); 42 | } 43 | ], 44 | 'validations' => [ 45 | 'min', 46 | 'max' 47 | ] 48 | ]; 49 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/radio.php: -------------------------------------------------------------------------------- 1 | ['options'], 5 | 'props' => [ 6 | /** 7 | * Unset inherited props 8 | */ 9 | 'after' => null, 10 | 'before' => null, 11 | 'icon' => null, 12 | 'placeholder' => null, 13 | 14 | /** 15 | * Arranges the radio buttons in the given number of columns 16 | */ 17 | 'columns' => function (int $columns = 1) { 18 | return $columns; 19 | }, 20 | ], 21 | 'computed' => [ 22 | 'default' => function () { 23 | return $this->sanitizeOption($this->default); 24 | }, 25 | 'value' => function () { 26 | return $this->sanitizeOption($this->value) ?? ''; 27 | } 28 | ] 29 | ]; 30 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/range.php: -------------------------------------------------------------------------------- 1 | 'number', 5 | 'props' => [ 6 | /** 7 | * Unset inherited props 8 | */ 9 | 'placeholder' => null, 10 | 11 | /** 12 | * The maximum value on the slider 13 | */ 14 | 'max' => function (float $max = 100) { 15 | return $max; 16 | }, 17 | /** 18 | * Enables/disables the tooltip and set the before and after values 19 | */ 20 | 'tooltip' => function ($tooltip = true) { 21 | return $tooltip; 22 | }, 23 | ] 24 | ]; 25 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/select.php: -------------------------------------------------------------------------------- 1 | 'radio', 5 | 'props' => [ 6 | /** 7 | * Unset inherited props 8 | */ 9 | 'columns' => null, 10 | 11 | /** 12 | * Custom icon to replace the arrow down. 13 | */ 14 | 'icon' => function (string $icon = null) { 15 | return $icon; 16 | }, 17 | /** 18 | * Custom placeholder string for empty option. 19 | */ 20 | 'placeholder' => function (string $placeholder = '—') { 21 | return $placeholder; 22 | }, 23 | ] 24 | ]; 25 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/slug.php: -------------------------------------------------------------------------------- 1 | 'text', 6 | 'props' => [ 7 | /** 8 | * Unset inherited props 9 | */ 10 | 'converter' => null, 11 | 'counter' => null, 12 | 'spellcheck' => null, 13 | 14 | /** 15 | * Set of characters allowed in the slug 16 | */ 17 | 'allow' => function (string $allow = '') { 18 | return $allow; 19 | }, 20 | 21 | /** 22 | * Changes the link icon 23 | */ 24 | 'icon' => function (string $icon = 'url') { 25 | return $icon; 26 | }, 27 | 28 | /** 29 | * Set prefix for the help text 30 | */ 31 | 'path' => function (string $path = null) { 32 | return $path; 33 | }, 34 | 35 | /** 36 | * Name of another field that should be used to 37 | * automatically update this field's value 38 | */ 39 | 'sync' => function (string $sync = null) { 40 | return $sync; 41 | }, 42 | 43 | /** 44 | * Set to object with keys `field` and `text` to add 45 | * button to generate from another field 46 | */ 47 | 'wizard' => function ($wizard = false) { 48 | return $wizard; 49 | } 50 | ], 51 | 'validations' => [ 52 | 'minlength', 53 | 'maxlength' 54 | ], 55 | ]; 56 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/tel.php: -------------------------------------------------------------------------------- 1 | 'text', 5 | 'props' => [ 6 | /** 7 | * Unset inherited props 8 | */ 9 | 'converter' => null, 10 | 'counter' => null, 11 | 'spellcheck' => null, 12 | 13 | /** 14 | * Sets the HTML5 autocomplete attribute 15 | */ 16 | 'autocomplete' => function (string $autocomplete = 'tel') { 17 | return $autocomplete; 18 | }, 19 | 20 | /** 21 | * Changes the phone icon 22 | */ 23 | 'icon' => function (string $icon = 'phone') { 24 | return $icon; 25 | } 26 | ] 27 | ]; 28 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/url.php: -------------------------------------------------------------------------------- 1 | 'text', 7 | 'props' => [ 8 | /** 9 | * Unset inherited props 10 | */ 11 | 'converter' => null, 12 | 'counter' => null, 13 | 'spellcheck' => null, 14 | 15 | /** 16 | * Sets the HTML5 autocomplete attribute 17 | */ 18 | 'autocomplete' => function (string $autocomplete = 'url') { 19 | return $autocomplete; 20 | }, 21 | 22 | /** 23 | * Changes the link icon 24 | */ 25 | 'icon' => function (string $icon = 'url') { 26 | return $icon; 27 | }, 28 | 29 | /** 30 | * Sets custom placeholder text, when the field is empty 31 | */ 32 | 'placeholder' => function ($value = null) { 33 | return I18n::translate($value, $value) ?? 'https://example.com'; 34 | } 35 | ], 36 | 'validations' => [ 37 | 'minlength', 38 | 'maxlength', 39 | 'url' 40 | ], 41 | ]; 42 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/fields/writer.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Enables inline mode, which will not wrap new lines in paragraphs and creates hard breaks instead. 9 | * 10 | * @param bool $inline 11 | */ 12 | 'inline' => function (bool $inline = false) { 13 | return $inline; 14 | }, 15 | /** 16 | * Sets the allowed HTML formats. Available formats: `bold`, `italic`, `underline`, `strike`, `code`, `link`, `email`. Activate them all by passing `true`. Deactivate them all by passing `false` 17 | * @param array|bool $marks 18 | */ 19 | 'marks' => function ($marks = true) { 20 | return $marks; 21 | }, 22 | /** 23 | * Sets the allowed nodes. Available nodes: `paragraph`, `heading`, `bulletList`, `orderedList`. Activate/deactivate them all by passing `true`/`false`. Default nodes are `paragraph`, `heading`, `bulletList`, `orderedList`. 24 | * @param array|bool|null $nodes 25 | */ 26 | 'nodes' => function ($nodes = null) { 27 | return $nodes; 28 | } 29 | ], 30 | 'computed' => [ 31 | 'value' => function () { 32 | $value = trim($this->value ?? ''); 33 | return Sane::sanitize($value, 'html'); 34 | } 35 | ], 36 | ]; 37 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/presets/files.php: -------------------------------------------------------------------------------- 1 | [ 6 | 'headline' => $props['headline'] ?? t('files'), 7 | 'type' => 'files', 8 | 'layout' => $props['layout'] ?? 'cards', 9 | 'template' => $props['template'] ?? null, 10 | 'image' => $props['image'] ?? null, 11 | 'info' => '{{ file.dimensions }}' 12 | ] 13 | ]; 14 | 15 | // remove global options 16 | unset( 17 | $props['headline'], 18 | $props['layout'], 19 | $props['template'], 20 | $props['image'] 21 | ); 22 | 23 | return $props; 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/presets/pages.php: -------------------------------------------------------------------------------- 1 | $headline, 11 | 'type' => 'pages', 12 | 'layout' => 'list', 13 | 'status' => $status 14 | ]; 15 | 16 | if ($props === true) { 17 | $props = []; 18 | } 19 | 20 | if (is_string($props) === true) { 21 | $props = [ 22 | 'headline' => $props 23 | ]; 24 | } 25 | 26 | // inject the global templates definition 27 | if (empty($templates) === false) { 28 | $props['templates'] = $props['templates'] ?? $templates; 29 | } 30 | 31 | return array_replace_recursive($defaults, $props); 32 | }; 33 | 34 | $sections = []; 35 | 36 | $drafts = $props['drafts'] ?? []; 37 | $unlisted = $props['unlisted'] ?? false; 38 | $listed = $props['listed'] ?? []; 39 | 40 | 41 | if ($drafts !== false) { 42 | $sections['drafts'] = $section(t('pages.status.draft'), 'drafts', $drafts); 43 | } 44 | 45 | if ($unlisted !== false) { 46 | $sections['unlisted'] = $section(t('pages.status.unlisted'), 'unlisted', $unlisted); 47 | } 48 | 49 | if ($listed !== false) { 50 | $sections['listed'] = $section(t('pages.status.listed'), 'listed', $listed); 51 | } 52 | 53 | // cleaning up 54 | unset($props['drafts'], $props['unlisted'], $props['listed'], $props['templates']); 55 | 56 | return array_merge($props, ['sections' => $sections]); 57 | }; 58 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/fields.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'fields' => function (array $fields = []) { 8 | return $fields; 9 | } 10 | ], 11 | 'computed' => [ 12 | 'form' => function () { 13 | $fields = $this->fields; 14 | $disabled = $this->model->permissions()->update() === false; 15 | $content = $this->model->content()->toArray(); 16 | 17 | if ($disabled === true) { 18 | foreach ($fields as $key => $props) { 19 | $fields[$key]['disabled'] = true; 20 | } 21 | } 22 | 23 | return new Form([ 24 | 'fields' => $fields, 25 | 'values' => $content, 26 | 'model' => $this->model, 27 | 'strict' => true 28 | ]); 29 | }, 30 | 'fields' => function () { 31 | $fields = $this->form->fields()->toArray(); 32 | 33 | if (is_a($this->model, 'Kirby\Cms\Page') === true || is_a($this->model, 'Kirby\Cms\Site') === true) { 34 | // the title should never be updated directly via 35 | // fields section to avoid conflicts with the rename dialog 36 | unset($fields['title']); 37 | } 38 | 39 | foreach ($fields as $index => $props) { 40 | unset($fields[$index]['value']); 41 | } 42 | 43 | return $fields; 44 | } 45 | ], 46 | 'methods' => [ 47 | 'errors' => function () { 48 | return $this->form->errors(); 49 | } 50 | ], 51 | 'toArray' => function () { 52 | return [ 53 | 'fields' => $this->fields, 54 | ]; 55 | } 56 | ]; 57 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/info.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'headline', 8 | ], 9 | 'props' => [ 10 | 'text' => function ($text = null) { 11 | return I18n::translate($text, $text); 12 | }, 13 | 'theme' => function (string $theme = null) { 14 | return $theme; 15 | } 16 | ], 17 | 'computed' => [ 18 | 'text' => function () { 19 | if ($this->text) { 20 | $text = $this->model()->toSafeString($this->text); 21 | $text = $this->kirby()->kirbytext($text); 22 | return $text; 23 | } 24 | }, 25 | ], 26 | 'toArray' => function () { 27 | return [ 28 | 'headline' => $this->headline, 29 | 'text' => $this->text, 30 | 'theme' => $this->theme 31 | ]; 32 | } 33 | ]; 34 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/empty.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Sets the text for the empty state box 9 | */ 10 | 'empty' => function ($empty = null) { 11 | return I18n::translate($empty, $empty); 12 | } 13 | ], 14 | 'computed' => [ 15 | 'empty' => function () { 16 | if ($this->empty) { 17 | return $this->model()->toSafeString($this->empty); 18 | } 19 | } 20 | ] 21 | ]; 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/headline.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * The headline for the section. This can be a simple string or a template with additional info from the parent page. 9 | */ 10 | 'headline' => function ($headline = null) { 11 | return I18n::translate($headline, $headline); 12 | } 13 | ], 14 | 'computed' => [ 15 | 'headline' => function () { 16 | if ($this->headline) { 17 | return $this->model()->toString($this->headline); 18 | } 19 | 20 | return ucfirst($this->name); 21 | } 22 | ] 23 | ]; 24 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/help.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Sets the help text 9 | */ 10 | 'help' => function ($help = null) { 11 | return I18n::translate($help, $help); 12 | } 13 | ], 14 | 'computed' => [ 15 | 'help' => function () { 16 | if ($this->help) { 17 | $help = $this->model()->toSafeString($this->help); 18 | $help = $this->kirby()->kirbytext($help); 19 | return $help; 20 | } 21 | } 22 | ] 23 | ]; 24 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/layout.php: -------------------------------------------------------------------------------- 1 | [ 5 | /** 6 | * Section layout. 7 | * Available layout methods: `list`, `cardlets`, `cards`. 8 | */ 9 | 'layout' => function (string $layout = 'list') { 10 | $layouts = ['list', 'cardlets', 'cards']; 11 | return in_array($layout, $layouts) ? $layout : 'list'; 12 | } 13 | ] 14 | ]; 15 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/max.php: -------------------------------------------------------------------------------- 1 | [ 5 | /** 6 | * Sets the maximum number of allowed entries in the section 7 | */ 8 | 'max' => function (int $max = null) { 9 | return $max; 10 | } 11 | ], 12 | 'methods' => [ 13 | 'isFull' => function () { 14 | if ($this->max) { 15 | return $this->total >= $this->max; 16 | } 17 | 18 | return false; 19 | }, 20 | 'validateMax' => function () { 21 | if ($this->max && $this->total > $this->max) { 22 | return false; 23 | } 24 | 25 | return true; 26 | } 27 | ] 28 | ]; 29 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/min.php: -------------------------------------------------------------------------------- 1 | [ 5 | /** 6 | * Sets the minimum number of required entries in the section 7 | */ 8 | 'min' => function (int $min = null) { 9 | return $min; 10 | } 11 | ], 12 | 'methods' => [ 13 | 'validateMin' => function () { 14 | if ($this->min && $this->min > $this->total) { 15 | return false; 16 | } 17 | 18 | return true; 19 | } 20 | ] 21 | ]; 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/pagination.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Sets the number of items per page. If there are more items the pagination navigation will be shown at the bottom of the section. 9 | */ 10 | 'limit' => function (int $limit = 20) { 11 | return $limit; 12 | }, 13 | /** 14 | * Sets the default page for the pagination. This will overwrite default pagination. 15 | */ 16 | 'page' => function (int $page = null) { 17 | return get('page', $page); 18 | }, 19 | ], 20 | 'methods' => [ 21 | 'pagination' => function () { 22 | $pagination = new Pagination([ 23 | 'limit' => $this->limit, 24 | 'page' => $this->page, 25 | 'total' => $this->total 26 | ]); 27 | 28 | return [ 29 | 'limit' => $pagination->limit(), 30 | 'offset' => $pagination->offset(), 31 | 'page' => $pagination->page(), 32 | 'total' => $pagination->total(), 33 | ]; 34 | }, 35 | ] 36 | ]; 37 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/sections/mixins/parent.php: -------------------------------------------------------------------------------- 1 | [ 7 | /** 8 | * Sets the query to a parent to find items for the list 9 | */ 10 | 'parent' => function (string $parent = null) { 11 | return $parent; 12 | } 13 | ], 14 | 'methods' => [ 15 | 'parentModel' => function () { 16 | $parent = $this->parent; 17 | 18 | if (is_string($parent) === true) { 19 | $query = $parent; 20 | $parent = $this->model->query($query); 21 | 22 | if (!$parent) { 23 | throw new Exception('The parent for the query "' . $query . '" cannot be found in the section "' . $this->name() . '"'); 24 | } 25 | 26 | if ( 27 | is_a($parent, 'Kirby\Cms\Page') === false && 28 | is_a($parent, 'Kirby\Cms\Site') === false && 29 | is_a($parent, 'Kirby\Cms\File') === false && 30 | is_a($parent, 'Kirby\Cms\User') === false 31 | ) { 32 | throw new Exception('The parent for the section "' . $this->name() . '" has to be a page, site or user object'); 33 | } 34 | } 35 | 36 | if ($parent === null) { 37 | return $this->model; 38 | } 39 | 40 | return $parent; 41 | } 42 | ] 43 | ]; 44 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/setup.php: -------------------------------------------------------------------------------- 1 | language() 16 | ); 17 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/templates/emails/auth/password-reset.php: -------------------------------------------------------------------------------- 1 | language() 16 | ); 17 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/kirby.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Ux4q7LmQ5hfTYTtz3/a 3 | mohFJMWo/iCnxVcY84PZjLwWnT+G2DTKGaEWydB77TteJQnmsgtvO5734oj3Ga3r 4 | QCfwr2gxo/0WDEBq7C5HP+YNJiuZ/iD/tYV+gloF+Aaa3Mo8AK5DYH3dnjuyfHc1 5 | veIlYX1D2MXji2IRqdweAzVi1dfI4I3Ys8awhzv653vFLj5LvAtlwlYlmYeRwci7 6 | GkAOWw709CuKQNdPBXGFQQ/pEB5mnp8mI31j8og845u6v/Sk4+85gFORSufIRfnQ 7 | GFYrPOeavxfAWQGjh7JQjr/sbKSXaJ3nDlrYsOPIrC0Rwn/jsQPO7OLdVwkc9ofL 8 | GQIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/panel/dist/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robinscholz/kirby-mux/6b4330f7853547b17804ee6112adb15219dbe397/vendor/getkirby/cms/panel/dist/apple-touch-icon.png -------------------------------------------------------------------------------- /vendor/getkirby/cms/panel/dist/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robinscholz/kirby-mux/6b4330f7853547b17804ee6112adb15219dbe397/vendor/getkirby/cms/panel/dist/favicon.png -------------------------------------------------------------------------------- /vendor/getkirby/cms/panel/dist/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/panel/vitest.setup.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | 3 | Vue.config.productionTip = false; 4 | Vue.config.devtools = false; 5 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/router.php: -------------------------------------------------------------------------------- 1 | 10 | * @link https://getkirby.com 11 | * @copyright Bastian Allgeier GmbH 12 | * @license https://opensource.org/licenses/MIT 13 | */ 14 | class NullCache extends Cache 15 | { 16 | /** 17 | * Writes an item to the cache for a given number of minutes and 18 | * returns whether the operation was successful 19 | * 20 | * 21 | * // put an item in the cache for 15 minutes 22 | * $cache->set('value', 'my value', 15); 23 | * 24 | * 25 | * @param string $key 26 | * @param mixed $value 27 | * @param int $minutes 28 | * @return bool 29 | */ 30 | public function set(string $key, $value, int $minutes = 0): bool 31 | { 32 | return true; 33 | } 34 | 35 | /** 36 | * Internal method to retrieve the raw cache value; 37 | * needs to return a Value object or null if not found 38 | * 39 | * @param string $key 40 | * @return \Kirby\Cache\Value|null 41 | */ 42 | public function retrieve(string $key) 43 | { 44 | return null; 45 | } 46 | 47 | /** 48 | * Removes an item from the cache and returns 49 | * whether the operation was successful 50 | * 51 | * @param string $key 52 | * @return bool 53 | */ 54 | public function remove(string $key): bool 55 | { 56 | return true; 57 | } 58 | 59 | /** 60 | * Flushes the entire cache and returns 61 | * whether the operation was successful 62 | * 63 | * @return bool 64 | */ 65 | public function flush(): bool 66 | { 67 | return true; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/FilePermissions.php: -------------------------------------------------------------------------------- 1 | 10 | * @link https://getkirby.com 11 | * @copyright Bastian Allgeier GmbH 12 | * @license https://getkirby.com/license 13 | */ 14 | class FilePermissions extends ModelPermissions 15 | { 16 | protected $category = 'files'; 17 | } 18 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/Html.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://getkirby.com/license 15 | */ 16 | class Html extends \Kirby\Toolkit\Html 17 | { 18 | /** 19 | * Generates an `a` tag with an absolute Url 20 | * 21 | * @param string|null $href Relative or absolute Url 22 | * @param string|array|null $text If `null`, the link will be used as link text. If an array is passed, each element will be added unencoded 23 | * @param array $attr Additional attributes for the a tag. 24 | * @return string 25 | */ 26 | public static function link(string $href = null, $text = null, array $attr = []): string 27 | { 28 | return parent::link(Url::to($href), $text, $attr); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/LayoutColumns.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://getkirby.com/license 14 | */ 15 | class LayoutColumns extends Items 16 | { 17 | const ITEM_CLASS = '\Kirby\Cms\LayoutColumn'; 18 | } 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/Nest.php: -------------------------------------------------------------------------------- 1 | 15 | * @link https://getkirby.com 16 | * @copyright Bastian Allgeier GmbH 17 | * @license https://getkirby.com/license 18 | */ 19 | class Nest 20 | { 21 | /** 22 | * @param $data 23 | * @param null $parent 24 | * @return mixed 25 | */ 26 | public static function create($data, $parent = null) 27 | { 28 | if (is_scalar($data) === true) { 29 | return new Field($parent, $data, $data); 30 | } 31 | 32 | $result = []; 33 | 34 | foreach ($data as $key => $value) { 35 | if (is_array($value) === true) { 36 | $result[$key] = static::create($value, $parent); 37 | } elseif (is_scalar($value) === true) { 38 | $result[$key] = new Field($parent, $key, $value); 39 | } 40 | } 41 | 42 | if (is_int(key($data))) { 43 | return new NestCollection($result); 44 | } else { 45 | return new NestObject($result); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/NestCollection.php: -------------------------------------------------------------------------------- 1 | 13 | * @link https://getkirby.com 14 | * @copyright Bastian Allgeier GmbH 15 | * @license https://getkirby.com/license 16 | */ 17 | class NestCollection extends BaseCollection 18 | { 19 | /** 20 | * Converts all objects in the collection 21 | * to an array. This can also take a callback 22 | * function to further modify the array result. 23 | * 24 | * @param \Closure|null $map 25 | * @return array 26 | */ 27 | public function toArray(Closure $map = null): array 28 | { 29 | return parent::toArray($map ?? fn ($object) => $object->toArray()); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/NestObject.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://getkirby.com/license 15 | */ 16 | class NestObject extends Obj 17 | { 18 | /** 19 | * Converts the object to an array 20 | * 21 | * @return array 22 | */ 23 | public function toArray(): array 24 | { 25 | $result = []; 26 | 27 | foreach ((array)$this as $key => $value) { 28 | if (is_a($value, 'Kirby\Cms\Field') === true) { 29 | $result[$key] = $value->value(); 30 | continue; 31 | } 32 | 33 | if (is_object($value) === true && method_exists($value, 'toArray')) { 34 | $result[$key] = $value->toArray(); 35 | continue; 36 | } 37 | 38 | $result[$key] = $value; 39 | } 40 | 41 | return $result; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/PagePermissions.php: -------------------------------------------------------------------------------- 1 | 10 | * @link https://getkirby.com 11 | * @copyright Bastian Allgeier GmbH 12 | * @license https://getkirby.com/license 13 | */ 14 | class PagePermissions extends ModelPermissions 15 | { 16 | /** 17 | * @var string 18 | */ 19 | protected $category = 'pages'; 20 | 21 | /** 22 | * @return bool 23 | */ 24 | protected function canChangeSlug(): bool 25 | { 26 | return $this->model->isHomeOrErrorPage() !== true; 27 | } 28 | 29 | /** 30 | * @return bool 31 | */ 32 | protected function canChangeStatus(): bool 33 | { 34 | return $this->model->isErrorPage() !== true; 35 | } 36 | 37 | /** 38 | * @return bool 39 | */ 40 | protected function canChangeTemplate(): bool 41 | { 42 | if ($this->model->isHomeOrErrorPage() === true) { 43 | return false; 44 | } 45 | 46 | if (count($this->model->blueprints()) <= 1) { 47 | return false; 48 | } 49 | 50 | return true; 51 | } 52 | 53 | /** 54 | * @return bool 55 | */ 56 | protected function canDelete(): bool 57 | { 58 | return $this->model->isHomeOrErrorPage() !== true; 59 | } 60 | 61 | /** 62 | * @return bool 63 | */ 64 | protected function canSort(): bool 65 | { 66 | if ($this->model->isErrorPage() === true) { 67 | return false; 68 | } 69 | 70 | if ($this->model->isListed() !== true) { 71 | return false; 72 | } 73 | 74 | if ($this->model->blueprint()->num() !== 'default') { 75 | return false; 76 | } 77 | 78 | return true; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/R.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://getkirby.com/license 15 | */ 16 | class R extends Facade 17 | { 18 | /** 19 | * @return \Kirby\Http\Request 20 | */ 21 | public static function instance() 22 | { 23 | return App::instance()->request(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/Response.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://getkirby.com/license 14 | */ 15 | class Response extends \Kirby\Http\Response 16 | { 17 | /** 18 | * Adjusted redirect creation which 19 | * parses locations with the Url::to method 20 | * first. 21 | * 22 | * @param string $location 23 | * @param int $code 24 | * @return static 25 | */ 26 | public static function redirect(string $location = '/', int $code = 302) 27 | { 28 | return parent::redirect(Url::to($location), $code); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/S.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://getkirby.com/license 15 | */ 16 | class S extends Facade 17 | { 18 | /** 19 | * @return \Kirby\Session\Session 20 | */ 21 | public static function instance() 22 | { 23 | return App::instance()->session(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/SiteBlueprint.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://getkirby.com/license 14 | */ 15 | class SiteBlueprint extends Blueprint 16 | { 17 | /** 18 | * Creates a new page blueprint object 19 | * with the given props 20 | * 21 | * @param array $props 22 | */ 23 | public function __construct(array $props) 24 | { 25 | parent::__construct($props); 26 | 27 | // normalize all available page options 28 | $this->props['options'] = $this->normalizeOptions( 29 | $props['options'] ?? true, 30 | // defaults 31 | [ 32 | 'changeTitle' => null, 33 | 'update' => null, 34 | ], 35 | // aliases 36 | [ 37 | 'title' => 'changeTitle', 38 | ] 39 | ); 40 | } 41 | 42 | /** 43 | * Returns the preview settings 44 | * The preview setting controls the "Open" 45 | * button in the panel and redirects it to a 46 | * different URL if necessary. 47 | * 48 | * @return string|bool 49 | */ 50 | public function preview() 51 | { 52 | $preview = $this->props['options']['preview'] ?? true; 53 | 54 | if (is_string($preview) === true) { 55 | return $this->model->toString($preview); 56 | } 57 | 58 | return $preview; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/SitePermissions.php: -------------------------------------------------------------------------------- 1 | 10 | * @link https://getkirby.com 11 | * @copyright Bastian Allgeier GmbH 12 | * @license https://getkirby.com/license 13 | */ 14 | class SitePermissions extends ModelPermissions 15 | { 16 | protected $category = 'site'; 17 | } 18 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/UserBlueprint.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://getkirby.com/license 14 | */ 15 | class UserBlueprint extends Blueprint 16 | { 17 | /** 18 | * UserBlueprint constructor. 19 | * 20 | * @param array $props 21 | * @throws \Kirby\Exception\InvalidArgumentException 22 | */ 23 | public function __construct(array $props) 24 | { 25 | // normalize and translate the description 26 | $props['description'] = $this->i18n($props['description'] ?? null); 27 | 28 | // register the other props 29 | parent::__construct($props); 30 | 31 | // normalize all available page options 32 | $this->props['options'] = $this->normalizeOptions( 33 | $props['options'] ?? true, 34 | // defaults 35 | [ 36 | 'create' => null, 37 | 'changeEmail' => null, 38 | 'changeLanguage' => null, 39 | 'changeName' => null, 40 | 'changePassword' => null, 41 | 'changeRole' => null, 42 | 'delete' => null, 43 | 'update' => null, 44 | ] 45 | ); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/UserPermissions.php: -------------------------------------------------------------------------------- 1 | 10 | * @link https://getkirby.com 11 | * @copyright Bastian Allgeier GmbH 12 | * @license https://getkirby.com/license 13 | */ 14 | class UserPermissions extends ModelPermissions 15 | { 16 | /** 17 | * @var string 18 | */ 19 | protected $category = 'users'; 20 | 21 | /** 22 | * UserPermissions constructor 23 | * 24 | * @param \Kirby\Cms\Model $model 25 | */ 26 | public function __construct(Model $model) 27 | { 28 | parent::__construct($model); 29 | 30 | // change the scope of the permissions, when the current user is this user 31 | $this->category = $this->user && $this->user->is($model) ? 'user' : 'users'; 32 | } 33 | 34 | /** 35 | * @return bool 36 | */ 37 | protected function canChangeRole(): bool 38 | { 39 | return $this->model->roles()->count() > 1; 40 | } 41 | 42 | /** 43 | * @return bool 44 | */ 45 | protected function canCreate(): bool 46 | { 47 | // the admin can always create new users 48 | if ($this->user->isAdmin() === true) { 49 | return true; 50 | } 51 | 52 | // users who are not admins cannot create admins 53 | if ($this->model->isAdmin() === true) { 54 | return false; 55 | } 56 | 57 | return true; 58 | } 59 | 60 | /** 61 | * @return bool 62 | */ 63 | protected function canDelete(): bool 64 | { 65 | return $this->model->isLastAdmin() !== true; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Cms/Visitor.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://getkirby.com/license 15 | */ 16 | class Visitor extends Facade 17 | { 18 | /** 19 | * @return \Kirby\Http\Visitor 20 | */ 21 | public static function instance() 22 | { 23 | return App::instance()->visitor(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Data/Handler.php: -------------------------------------------------------------------------------- 1 | 15 | * @link https://getkirby.com 16 | * @copyright Bastian Allgeier GmbH 17 | * @license https://opensource.org/licenses/MIT 18 | */ 19 | abstract class Handler 20 | { 21 | /** 22 | * Parses an encoded string and returns a multi-dimensional array 23 | * 24 | * Needs to throw an Exception if the file can't be parsed. 25 | * 26 | * @param mixed $string 27 | * @return array 28 | */ 29 | abstract public static function decode($string): array; 30 | 31 | /** 32 | * Converts an array to an encoded string 33 | * 34 | * @param mixed $data 35 | * @return string 36 | */ 37 | abstract public static function encode($data): string; 38 | 39 | /** 40 | * Reads data from a file 41 | * 42 | * @param string $file 43 | * @return array 44 | */ 45 | public static function read(string $file): array 46 | { 47 | $contents = F::read($file); 48 | if ($contents === false) { 49 | throw new Exception('The file "' . $file . '" does not exist'); 50 | } 51 | 52 | return static::decode($contents); 53 | } 54 | 55 | /** 56 | * Writes data to a file 57 | * 58 | * @param string $file 59 | * @param mixed $data 60 | * @return bool 61 | */ 62 | public static function write(string $file = null, $data = []): bool 63 | { 64 | return F::write($file, static::encode($data)); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Data/Json.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://opensource.org/licenses/MIT 15 | */ 16 | class Json extends Handler 17 | { 18 | /** 19 | * Converts an array to an encoded JSON string 20 | * 21 | * @param mixed $data 22 | * @return string 23 | */ 24 | public static function encode($data): string 25 | { 26 | return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); 27 | } 28 | 29 | /** 30 | * Parses an encoded JSON string and returns a multi-dimensional array 31 | * 32 | * @param mixed $string 33 | * @return array 34 | */ 35 | public static function decode($string): array 36 | { 37 | if ($string === null || $string === '') { 38 | return []; 39 | } 40 | 41 | if (is_array($string) === true) { 42 | return $string; 43 | } 44 | 45 | if (is_string($string) === false) { 46 | throw new InvalidArgumentException('Invalid JSON data; please pass a string'); 47 | } 48 | 49 | $result = json_decode($string, true); 50 | 51 | if (is_array($result) === true) { 52 | return $result; 53 | } else { 54 | throw new InvalidArgumentException('JSON string is invalid'); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/BadMethodCallException.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://opensource.org/licenses/MIT 14 | */ 15 | class BadMethodCallException extends Exception 16 | { 17 | protected static $defaultKey = 'invalidMethod'; 18 | protected static $defaultFallback = 'The method "{ method }" does not exist'; 19 | protected static $defaultHttpCode = 400; 20 | protected static $defaultData = ['method' => null]; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/DuplicateException.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://opensource.org/licenses/MIT 15 | */ 16 | class DuplicateException extends Exception 17 | { 18 | protected static $defaultKey = 'duplicate'; 19 | protected static $defaultFallback = 'The entry exists'; 20 | protected static $defaultHttpCode = 400; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/ErrorPageException.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://opensource.org/licenses/MIT 15 | */ 16 | class ErrorPageException extends Exception 17 | { 18 | protected static $defaultKey = 'errorPage'; 19 | protected static $defaultFallback = 'Triggered error page'; 20 | protected static $defaultHttpCode = 404; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/InvalidArgumentException.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://opensource.org/licenses/MIT 14 | */ 15 | class InvalidArgumentException extends Exception 16 | { 17 | protected static $defaultKey = 'invalidArgument'; 18 | protected static $defaultFallback = 'Invalid argument "{ argument }" in method "{ method }"'; 19 | protected static $defaultHttpCode = 400; 20 | protected static $defaultData = ['argument' => null, 'method' => null]; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/LogicException.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://opensource.org/licenses/MIT 14 | */ 15 | class LogicException extends Exception 16 | { 17 | protected static $defaultKey = 'logic'; 18 | protected static $defaultFallback = 'This task cannot be finished'; 19 | protected static $defaultHttpCode = 400; 20 | } 21 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/NotFoundException.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://opensource.org/licenses/MIT 14 | */ 15 | class NotFoundException extends Exception 16 | { 17 | protected static $defaultKey = 'notFound'; 18 | protected static $defaultFallback = 'Not found'; 19 | protected static $defaultHttpCode = 404; 20 | } 21 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Exception/PermissionException.php: -------------------------------------------------------------------------------- 1 | 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://opensource.org/licenses/MIT 15 | */ 16 | class PermissionException extends Exception 17 | { 18 | protected static $defaultKey = 'permission'; 19 | protected static $defaultFallback = 'You are not allowed to do this'; 20 | protected static $defaultHttpCode = 403; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Form/Fields.php: -------------------------------------------------------------------------------- 1 | 13 | * @link https://getkirby.com 14 | * @copyright Bastian Allgeier GmbH 15 | * @license https://opensource.org/licenses/MIT 16 | */ 17 | class Fields extends Collection 18 | { 19 | /** 20 | * Internal setter for each object in the Collection. 21 | * This takes care of validation and of setting 22 | * the collection prop on each object correctly. 23 | * 24 | * @param string $name 25 | * @param object|array $field 26 | * @return $this 27 | */ 28 | public function __set(string $name, $field) 29 | { 30 | if (is_array($field) === true) { 31 | // use the array key as name if the name is not set 32 | $field['name'] ??= $name; 33 | $field = Field::factory($field['type'], $field, $this); 34 | } 35 | 36 | return parent::__set($field->name(), $field); 37 | } 38 | 39 | /** 40 | * Converts the fields collection to an 41 | * array and also does that for every 42 | * included field. 43 | * 44 | * @param \Closure|null $map 45 | * @return array 46 | */ 47 | public function toArray(Closure $map = null): array 48 | { 49 | $array = []; 50 | 51 | foreach ($this as $field) { 52 | $array[$field->name()] = $field->toArray(); 53 | } 54 | 55 | return $array; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Form/Mixin/EmptyState.php: -------------------------------------------------------------------------------- 1 | empty = $this->i18n($empty); 12 | } 13 | 14 | public function empty(): ?string 15 | { 16 | return $this->stringTemplate($this->empty); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Form/Mixin/Max.php: -------------------------------------------------------------------------------- 1 | max; 12 | } 13 | 14 | protected function setMax(int $max = null) 15 | { 16 | $this->max = $max; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Form/Mixin/Min.php: -------------------------------------------------------------------------------- 1 | min; 12 | } 13 | 14 | protected function setMin(int $min = null) 15 | { 16 | $this->min = $min; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Http/Exceptions/NextRouteException.php: -------------------------------------------------------------------------------- 1 | 10 | * @link https://getkirby.com 11 | * @copyright Bastian Allgeier GmbH 12 | * @license https://opensource.org/licenses/MIT 13 | */ 14 | class NextRouteException extends \Exception 15 | { 16 | } 17 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Http/Path.php: -------------------------------------------------------------------------------- 1 | 14 | * @link https://getkirby.com 15 | * @copyright Bastian Allgeier GmbH 16 | * @license https://opensource.org/licenses/MIT 17 | */ 18 | class Path extends Collection 19 | { 20 | public function __construct($items) 21 | { 22 | if (is_string($items) === true) { 23 | $items = Str::split($items, '/'); 24 | } 25 | 26 | parent::__construct($items ?? []); 27 | } 28 | 29 | public function __toString(): string 30 | { 31 | return $this->toString(); 32 | } 33 | 34 | public function toString(bool $leadingSlash = false, bool $trailingSlash = false): string 35 | { 36 | if (empty($this->data) === true) { 37 | return ''; 38 | } 39 | 40 | $path = implode('/', $this->data); 41 | 42 | $leadingSlash = $leadingSlash === true ? '/' : null; 43 | $trailingSlash = $trailingSlash === true ? '/' : null; 44 | 45 | return $leadingSlash . $path . $trailingSlash; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Http/Query.php: -------------------------------------------------------------------------------- 1 | 14 | * @link https://getkirby.com 15 | * @copyright Bastian Allgeier GmbH 16 | * @license https://opensource.org/licenses/MIT 17 | */ 18 | class Query extends Obj 19 | { 20 | public function __construct($query) 21 | { 22 | if (is_string($query) === true) { 23 | parse_str(ltrim($query, '?'), $query); 24 | } 25 | 26 | parent::__construct($query ?? []); 27 | } 28 | 29 | public function isEmpty(): bool 30 | { 31 | return empty((array)$this) === true; 32 | } 33 | 34 | public function isNotEmpty(): bool 35 | { 36 | return empty((array)$this) === false; 37 | } 38 | 39 | public function __toString(): string 40 | { 41 | return $this->toString(); 42 | } 43 | 44 | public function toString($questionMark = false): string 45 | { 46 | $query = http_build_query($this, '', '&', PHP_QUERY_RFC3986); 47 | 48 | if (empty($query) === true) { 49 | return ''; 50 | } 51 | 52 | if ($questionMark === true) { 53 | $query = '?' . $query; 54 | } 55 | 56 | return $query; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Http/Request/Auth/BasicAuth.php: -------------------------------------------------------------------------------- 1 | credentials = base64_decode($token); 35 | $this->username = Str::before($this->credentials, ':'); 36 | $this->password = Str::after($this->credentials, ':'); 37 | } 38 | 39 | /** 40 | * Returns the entire unencoded credentials string 41 | * 42 | * @return string 43 | */ 44 | public function credentials(): string 45 | { 46 | return $this->credentials; 47 | } 48 | 49 | /** 50 | * Returns the password 51 | * 52 | * @return string|null 53 | */ 54 | public function password(): ?string 55 | { 56 | return $this->password; 57 | } 58 | 59 | /** 60 | * Returns the authentication type 61 | * 62 | * @return string 63 | */ 64 | public function type(): string 65 | { 66 | return 'basic'; 67 | } 68 | 69 | /** 70 | * Returns the username 71 | * 72 | * @return string|null 73 | */ 74 | public function username(): ?string 75 | { 76 | return $this->username; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Http/Request/Auth/BearerAuth.php: -------------------------------------------------------------------------------- 1 | token = $token; 23 | } 24 | 25 | /** 26 | * Converts the object to a string 27 | * 28 | * @return string 29 | */ 30 | public function __toString(): string 31 | { 32 | return ucfirst($this->type()) . ' ' . $this->token(); 33 | } 34 | 35 | /** 36 | * Returns the authentication token 37 | * 38 | * @return string 39 | */ 40 | public function token(): string 41 | { 42 | return $this->token; 43 | } 44 | 45 | /** 46 | * Returns the auth type 47 | * 48 | * @return string 49 | */ 50 | public function type(): string 51 | { 52 | return 'bearer'; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Panel/Dialog.php: -------------------------------------------------------------------------------- 1 | 13 | * @link https://getkirby.com 14 | * @copyright Bastian Allgeier GmbH 15 | * @license https://getkirby.com/license 16 | */ 17 | class Dialog extends Json 18 | { 19 | protected static $key = '$dialog'; 20 | 21 | /** 22 | * Renders dialogs 23 | * 24 | * @param mixed $data 25 | * @param array $options 26 | * @return \Kirby\Http\Response 27 | */ 28 | public static function response($data, array $options = []) 29 | { 30 | // interpret true as success 31 | if ($data === true) { 32 | $data = [ 33 | 'code' => 200 34 | ]; 35 | } 36 | 37 | return parent::response($data, $options); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Panel/Redirect.php: -------------------------------------------------------------------------------- 1 | 15 | * @link https://getkirby.com 16 | * @copyright Bastian Allgeier GmbH 17 | * @license https://getkirby.com/license 18 | */ 19 | class Redirect extends Exception 20 | { 21 | /** 22 | * Returns the HTTP code for the redirect 23 | * 24 | * @return int 25 | */ 26 | public function code(): int 27 | { 28 | $codes = [301, 302, 303, 307, 308]; 29 | 30 | if (in_array($this->getCode(), $codes) === true) { 31 | return $this->getCode(); 32 | } 33 | 34 | return 302; 35 | } 36 | 37 | /** 38 | * Returns the URL for the redirect 39 | * 40 | * @return string 41 | */ 42 | public function location(): string 43 | { 44 | return $this->getMessage(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Panel/Search.php: -------------------------------------------------------------------------------- 1 | 13 | * @link https://getkirby.com 14 | * @copyright Bastian Allgeier GmbH 15 | * @license https://getkirby.com/license 16 | */ 17 | class Search extends Json 18 | { 19 | protected static $key = '$search'; 20 | 21 | /** 22 | * @param mixed $data 23 | * @param array $options 24 | * @return \Kirby\Http\Response 25 | */ 26 | public static function response($data, array $options = []) 27 | { 28 | if (is_array($data) === true) { 29 | $data = [ 30 | 'results' => $data 31 | ]; 32 | } 33 | 34 | return parent::response($data, $options); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Parsley/Schema.php: -------------------------------------------------------------------------------- 1 | , 12 | * @link https://getkirby.com 13 | * @copyright Bastian Allgeier GmbH 14 | * @license https://getkirby.com/license 15 | */ 16 | class Schema 17 | { 18 | /** 19 | * Returns the fallback block when no 20 | * other block type can be detected 21 | * 22 | * @param \Kirby\Parsley\Element|string $element 23 | * @return array|null 24 | */ 25 | public function fallback($element): ?array 26 | { 27 | return null; 28 | } 29 | 30 | /** 31 | * Returns a list of allowed inline marks 32 | * and their parsing rules 33 | * 34 | * @return array 35 | */ 36 | public function marks(): array 37 | { 38 | return []; 39 | } 40 | 41 | /** 42 | * Returns a list of allowed nodes and 43 | * their parsing rules 44 | * 45 | * @return array 46 | */ 47 | public function nodes(): array 48 | { 49 | return []; 50 | } 51 | 52 | /** 53 | * Returns a list of all elements that should be 54 | * skipped and not be parsed at all 55 | * 56 | * @return array 57 | */ 58 | public function skip(): array 59 | { 60 | return []; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Parsley/Schema/Plain.php: -------------------------------------------------------------------------------- 1 | , 17 | * @link https://getkirby.com 18 | * @copyright Bastian Allgeier GmbH 19 | * @license https://getkirby.com/license 20 | */ 21 | class Plain extends Schema 22 | { 23 | /** 24 | * Creates the fallback block type 25 | * if no other block can be found 26 | * 27 | * @param \Kirby\Parsley\Element|string $element 28 | * @return array|null 29 | */ 30 | public function fallback($element): ?array 31 | { 32 | if (is_a($element, Element::class) === true) { 33 | $text = $element->innerText(); 34 | } elseif (is_string($element) === true) { 35 | $text = trim($element); 36 | 37 | if (Str::length($text) === 0) { 38 | return null; 39 | } 40 | } else { 41 | return null; 42 | } 43 | 44 | return [ 45 | 'content' => [ 46 | 'text' => $text 47 | ], 48 | 'type' => 'text', 49 | ]; 50 | } 51 | 52 | /** 53 | * Returns a list of all elements that 54 | * should be skipped during parsing 55 | * 56 | * @return array 57 | */ 58 | public function skip(): array 59 | { 60 | return [ 61 | 'base', 62 | 'link', 63 | 'meta', 64 | 'script', 65 | 'style', 66 | 'title' 67 | ]; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Toolkit/Config.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://opensource.org/licenses/MIT 14 | */ 15 | class Config extends Silo 16 | { 17 | /** 18 | * @var array 19 | */ 20 | public static $data = []; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Toolkit/Controller.php: -------------------------------------------------------------------------------- 1 | 16 | * @link https://getkirby.com 17 | * @copyright Bastian Allgeier GmbH 18 | * @license https://opensource.org/licenses/MIT 19 | */ 20 | class Controller 21 | { 22 | protected $function; 23 | 24 | public function __construct(Closure $function) 25 | { 26 | $this->function = $function; 27 | } 28 | 29 | public function arguments(array $data = []): array 30 | { 31 | $info = new ReflectionFunction($this->function); 32 | $args = []; 33 | 34 | foreach ($info->getParameters() as $parameter) { 35 | $name = $parameter->getName(); 36 | $args[] = $data[$name] ?? null; 37 | } 38 | 39 | return $args; 40 | } 41 | 42 | public function call($bind = null, $data = []) 43 | { 44 | $args = $this->arguments($data); 45 | 46 | if ($bind === null) { 47 | return call_user_func($this->function, ...$args); 48 | } 49 | 50 | return $this->function->call($bind, ...$args); 51 | } 52 | 53 | public static function load(string $file) 54 | { 55 | if (is_file($file) === false) { 56 | return null; 57 | } 58 | 59 | $function = F::load($file); 60 | 61 | if (is_a($function, 'Closure') === false) { 62 | return null; 63 | } 64 | 65 | return new static($function); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Toolkit/Facade.php: -------------------------------------------------------------------------------- 1 | 11 | * @link https://getkirby.com 12 | * @copyright Bastian Allgeier GmbH 13 | * @license https://opensource.org/licenses/MIT 14 | */ 15 | abstract class Facade 16 | { 17 | /** 18 | * Returns the instance that should be 19 | * available statically 20 | * 21 | * @return mixed 22 | */ 23 | abstract public static function instance(); 24 | 25 | /** 26 | * Proxy for all public instance calls 27 | * 28 | * @param string $method 29 | * @param array $args 30 | * @return mixed 31 | */ 32 | public static function __callStatic(string $method, array $args = null) 33 | { 34 | return static::instance()->$method(...$args); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/src/Toolkit/Tpl.php: -------------------------------------------------------------------------------- 1 | 13 | * @link https://getkirby.com 14 | * @copyright Bastian Allgeier GmbH 15 | * @license https://opensource.org/licenses/MIT 16 | */ 17 | class Tpl 18 | { 19 | /** 20 | * Renders the template 21 | * 22 | * @param string|null $file 23 | * @param array $data 24 | * @return string 25 | * @throws Throwable 26 | */ 27 | public static function load(?string $file = null, array $data = []): string 28 | { 29 | if ($file === null || is_file($file) === false) { 30 | return ''; 31 | } 32 | 33 | ob_start(); 34 | 35 | $exception = null; 36 | try { 37 | F::load($file, null, $data); 38 | } catch (Throwable $e) { 39 | $exception = $e; 40 | } 41 | 42 | $content = ob_get_contents(); 43 | ob_end_clean(); 44 | 45 | if ($exception === null) { 46 | return $content; 47 | } 48 | 49 | throw $exception; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/views/browser.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | We are really sorry, but your browser does not support 5 | all features required for the Kirby Panel. 6 |

7 | 8 |
9 |

10 | Fetch
11 | We use Javascript's new Fetch API. You can find a list of supported browsers for this feature on 12 | caniuse.com 13 |

14 |

15 | CSS Grid
16 | We use CSS Grids for all our layouts. You can find a list of supported browsers for this feature on 17 | caniuse.com 18 |

19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/views/fatal.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | This page is currently offline due to an unexpected error. We are very sorry for the inconvenience and will fix it as soon as possible. 5 |

6 |

7 | Advice for developers and administrators:
8 | Enable debug mode to get further information about the error. 9 |

10 | 11 | 12 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/views/panel.php: -------------------------------------------------------------------------------- 1 | $assets 6 | * @var array $fiber 7 | * @var string $panelUrl 8 | * @var string $nonce 9 | */ ?> 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Kirby Panel 19 | 20 | 29 | 30 | 31 | 32 | 33 | 34 | $icon): ?> 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 46 | 47 | 48 | 49 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/views/php.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | This page is currently offline. We are very sorry for the inconvenience and will fix it as soon as possible. 5 |

6 |

7 | Advice for developers and administrators:
8 | Change the PHP version to one supported by your version of Kirby 9 |

10 | 11 | 12 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/views/snippets/footer.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/views/snippets/header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Error 8 | 9 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /vendor/graham-campbell/result-type/src/Result.php: -------------------------------------------------------------------------------- 1 | 9 | * 10 | * For the full copyright and license information, please view the LICENSE 11 | * file that was distributed with this source code. 12 | */ 13 | 14 | namespace GrahamCampbell\ResultType; 15 | 16 | /** 17 | * @template T 18 | * @template E 19 | */ 20 | abstract class Result 21 | { 22 | /** 23 | * Get the success option value. 24 | * 25 | * @return \PhpOption\Option 26 | */ 27 | abstract public function success(); 28 | 29 | /** 30 | * Map over the success value. 31 | * 32 | * @template S 33 | * 34 | * @param callable(T):S $f 35 | * 36 | * @return \GrahamCampbell\ResultType\Result 37 | */ 38 | abstract public function map(callable $f); 39 | 40 | /** 41 | * Flat map over the success value. 42 | * 43 | * @template S 44 | * @template F 45 | * 46 | * @param callable(T):\GrahamCampbell\ResultType\Result $f 47 | * 48 | * @return \GrahamCampbell\ResultType\Result 49 | */ 50 | abstract public function flatMap(callable $f); 51 | 52 | /** 53 | * Get the error option value. 54 | * 55 | * @return \PhpOption\Option 56 | */ 57 | abstract public function error(); 58 | 59 | /** 60 | * Map over the error value. 61 | * 62 | * @template F 63 | * 64 | * @param callable(E):F $f 65 | * 66 | * @return \GrahamCampbell\ResultType\Result 67 | */ 68 | abstract public function mapError(callable $f); 69 | } 70 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/guzzle/src/BodySummarizer.php: -------------------------------------------------------------------------------- 1 | truncateAt = $truncateAt; 17 | } 18 | 19 | /** 20 | * Returns a summarized message body. 21 | */ 22 | public function summarize(MessageInterface $message): ?string 23 | { 24 | return $this->truncateAt === null 25 | ? \GuzzleHttp\Psr7\Message::bodySummary($message) 26 | : \GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php: -------------------------------------------------------------------------------- 1 | request = $request; 33 | $this->handlerContext = $handlerContext; 34 | } 35 | 36 | /** 37 | * Get the request that caused the exception 38 | */ 39 | public function getRequest(): RequestInterface 40 | { 41 | return $this->request; 42 | } 43 | 44 | /** 45 | * Get contextual information about the error from the underlying handler. 46 | * 47 | * The contents of this array will vary depending on which handler you are 48 | * using. It may also be just an empty array. Relying on this data will 49 | * couple you to a specific handler, but can give more debug information 50 | * when needed. 51 | */ 52 | public function getHandlerContext(): array 53 | { 54 | return $this->handlerContext; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php: -------------------------------------------------------------------------------- 1 | factory = $options['handle_factory'] 34 | ?? new CurlFactory(3); 35 | } 36 | 37 | public function __invoke(RequestInterface $request, array $options): PromiseInterface 38 | { 39 | if (isset($options['delay'])) { 40 | \usleep($options['delay'] * 1000); 41 | } 42 | 43 | $easy = $this->factory->create($request, $options); 44 | \curl_exec($easy->handle); 45 | $easy->errno = \curl_errno($easy->handle); 46 | 47 | return CurlFactory::finish($this, $easy, $this->factory); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php: -------------------------------------------------------------------------------- 1 | getState() === PromiseInterface::PENDING; 15 | } 16 | 17 | /** 18 | * Returns true if a promise is fulfilled or rejected. 19 | * 20 | * @return bool 21 | */ 22 | public static function settled(PromiseInterface $promise) 23 | { 24 | return $promise->getState() !== PromiseInterface::PENDING; 25 | } 26 | 27 | /** 28 | * Returns true if a promise is fulfilled. 29 | * 30 | * @return bool 31 | */ 32 | public static function fulfilled(PromiseInterface $promise) 33 | { 34 | return $promise->getState() === PromiseInterface::FULFILLED; 35 | } 36 | 37 | /** 38 | * Returns true if a promise is rejected. 39 | * 40 | * @return bool 41 | */ 42 | public static function rejected(PromiseInterface $promise) 43 | { 44 | return $promise->getState() === PromiseInterface::REJECTED; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/promises/src/PromisorInterface.php: -------------------------------------------------------------------------------- 1 | reason = $reason; 22 | 23 | $message = 'The promise was rejected'; 24 | 25 | if ($description) { 26 | $message .= ' with reason: ' . $description; 27 | } elseif (is_string($reason) 28 | || (is_object($reason) && method_exists($reason, '__toString')) 29 | ) { 30 | $message .= ' with reason: ' . $this->reason; 31 | } elseif ($reason instanceof \JsonSerializable) { 32 | $message .= ' with reason: ' 33 | . json_encode($this->reason, JSON_PRETTY_PRINT); 34 | } 35 | 36 | parent::__construct($message); 37 | } 38 | 39 | /** 40 | * Returns the rejection reason. 41 | * 42 | * @return mixed 43 | */ 44 | public function getReason() 45 | { 46 | return $this->reason; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/promises/src/TaskQueueInterface.php: -------------------------------------------------------------------------------- 1 | stream = $stream; 27 | $this->maxLength = $maxLength; 28 | } 29 | 30 | public function write($string): int 31 | { 32 | $diff = $this->maxLength - $this->stream->getSize(); 33 | 34 | // Begin returning 0 when the underlying stream is too large. 35 | if ($diff <= 0) { 36 | return 0; 37 | } 38 | 39 | // Write the stream or a subset of the stream if needed. 40 | if (strlen($string) < $diff) { 41 | return $this->stream->write($string); 42 | } 43 | 44 | return $this->stream->write(substr($string, 0, $diff)); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php: -------------------------------------------------------------------------------- 1 | 15 + 32]); 32 | $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource)); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/psr7/src/LazyOpenStream.php: -------------------------------------------------------------------------------- 1 | filename = $filename; 30 | $this->mode = $mode; 31 | } 32 | 33 | /** 34 | * Creates the underlying stream lazily when required. 35 | */ 36 | protected function createStream(): StreamInterface 37 | { 38 | return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode)); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/guzzlehttp/psr7/src/NoSeekStream.php: -------------------------------------------------------------------------------- 1 | @,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m"; 22 | public const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)"; 23 | } 24 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/Makefile: -------------------------------------------------------------------------------- 1 | # per-SDK stuff 2 | GENERATOR_TYPE=php 3 | 4 | ###### helper variables ###### 5 | # this is in case we want to go to Docker or something other than running yarn 6 | # for OAS in the future. also less typing. 7 | OAS_CLI=yarn run -s oas 8 | CONFIG_PATH=./generator-config.json 9 | OUTPUT_DIR=.. 10 | TEMPLATE_DIR=./templates 11 | GENERATED_TEMPLATE_DIR=./tmp/oas-base-templates 12 | 13 | ensure: 14 | yarn install 15 | 16 | clean: 17 | rm -rf tmp 18 | 19 | clean-products: 20 | rm -rf "${OUTPUT_DIR}/lib" 21 | rm -rf "${OUTPUT_DIR}/docs" 22 | 23 | build: ensure clean-products 24 | ${OAS_CLI} generate -g "${GENERATOR_TYPE}" -c "${CONFIG_PATH}" -t "${TEMPLATE_DIR}" -o "${OUTPUT_DIR}" -i "${OAS_SPEC_PATH}" 25 | 26 | config-help: ensure 27 | ${OAS_CLI} config-help -g "${GENERATOR_TYPE}" 28 | 29 | template-diff: ensure 30 | ${OAS_CLI} author template -g "${GENERATOR_TYPE}" -o "${GENERATED_TEMPLATE_DIR}" 31 | diff "${TEMPLATE_DIR}" "${GENERATED_TEMPLATE_DIR}" > ./tmp/template-changes.diff 32 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/composer.mustache: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{gitUserId}}/{{gitRepoId}}", 3 | {{#artifactVersion}} 4 | "version": "{{artifactVersion}}", 5 | {{/artifactVersion}} 6 | "description": "{{{appDescription}}}", 7 | "keywords": [ 8 | "php", 9 | "sdk", 10 | "rest", 11 | "api", 12 | "video", 13 | "streaming" 14 | ], 15 | "homepage": "https://mux.com", 16 | "license": "MIT", 17 | "authors": [ 18 | { 19 | "name": "Mux SDK Team", 20 | "homepage": "https://mux.com", 21 | "email": "sdks@mux.com" 22 | } 23 | ], 24 | "require": { 25 | "php": ">=7.2.5", 26 | "ext-curl": "*", 27 | "ext-json": "*", 28 | "ext-mbstring": "*", 29 | "guzzlehttp/guzzle": "^7.0.0" 30 | }, 31 | "require-dev": { 32 | "phpunit/phpunit": "^8.0 || ^9.0", 33 | "friendsofphp/php-cs-fixer": "^2.12" 34 | }, 35 | "autoload": { 36 | "psr-4": { "{{escapedInvokerPackage}}\\" : "{{srcBasePath}}/" } 37 | }, 38 | "autoload-dev": { 39 | "psr-4": { "{{escapedInvokerPackage}}\\Test\\" : "{{testBasePath}}/" } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/gitignore: -------------------------------------------------------------------------------- 1 | # ref: https://github.com/github/gitignore/blob/master/Composer.gitignore 2 | 3 | composer.phar 4 | /vendor/ 5 | 6 | # Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control 7 | # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file 8 | # composer.lock 9 | 10 | # php-cs-fixer cache 11 | .php_cs.cache 12 | 13 | # PHPUnit cache 14 | .phpunit.result.cache 15 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/model.mustache: -------------------------------------------------------------------------------- 1 | partial_header}} 16 | /** 17 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). 18 | * https://openapi-generator.tech 19 | * Do not edit the class manually. 20 | */ 21 | 22 | namespace {{modelPackage}}; 23 | {{^isEnum}} 24 | {{^parentSchema}} 25 | 26 | use \ArrayAccess; 27 | {{/parentSchema}} 28 | {{/isEnum}} 29 | use \{{invokerPackage}}\ObjectSerializer; 30 | 31 | /** 32 | * {{classname}} Class Doc Comment 33 | * 34 | * @category Class 35 | {{#description}} 36 | * @description {{description}} 37 | {{/description}} 38 | * @package {{invokerPackage}} 39 | * @author Mux API team 40 | * @link https://docs.mux.com 41 | {{^isEnum}} 42 | * @implements \ArrayAccess 43 | * @template TKey int|null 44 | * @template TValue mixed|null 45 | {{/isEnum}} 46 | */ 47 | {{#isEnum}}{{>model_enum}}{{/isEnum}}{{^isEnum}}{{>model_generic}}{{/isEnum}} 48 | {{/model}}{{/models}} 49 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/model_doc.mustache: -------------------------------------------------------------------------------- 1 | # {{#models}}{{#model}}# {{classname}} 2 | 3 | ## Properties 4 | 5 | Name | Type | Description | Notes 6 | ------------ | ------------- | ------------- | ------------- 7 | {{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} |{{^required}} [optional]{{/required}}{{#isReadOnly}} [readonly]{{/isReadOnly}}{{#defaultValue}} [default to {{{.}}}]{{/defaultValue}} 8 | {{/vars}} 9 | 10 | [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md){{/model}}{{/models}} 11 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/model_enum.mustache: -------------------------------------------------------------------------------- 1 | class {{classname}} 2 | { 3 | /** 4 | * Possible values of this enum 5 | */ 6 | {{#allowableValues}}{{#enumVars}}public const {{{name}}} = {{{value}}}; 7 | {{/enumVars}}{{/allowableValues}} 8 | /** 9 | * Gets allowable values of the enum 10 | * @return string[] 11 | */ 12 | public static function getAllowableEnumValues() 13 | { 14 | return [ 15 | {{#allowableValues}}{{#enumVars}}self::{{{name}}},{{^-last}} 16 | {{/-last}}{{/enumVars}}{{/allowableValues}} 17 | ]; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/partial_header.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | {{#appName}} 3 | * {{{appName}}} 4 | * 5 | {{/appName}} 6 | {{#appDescription}} 7 | * {{{appDescription}}} 8 | * 9 | {{/appDescription}} 10 | * {{#version}}The version of the OpenAPI document: {{{version}}}{{/version}} 11 | * {{#infoEmail}}Contact: {{{infoEmail}}}{{/infoEmail}} 12 | * Generated by: https://openapi-generator.tech 13 | * OpenAPI Generator version: {{{generatorVersion}}} 14 | */ 15 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/php_doc_auth_partial.mustache: -------------------------------------------------------------------------------- 1 | {{#hasAuthMethods}}{{#authMethods}} 2 | {{#isBasic}} 3 | {{#isBasicBasic}} 4 | // Configure HTTP basic authorization: {{{name}}} 5 | $config = {{{invokerPackage}}}\Configuration::getDefaultConfiguration() 6 | ->setUsername('YOUR_USERNAME') 7 | ->setPassword('YOUR_PASSWORD'); 8 | {{/isBasicBasic}} 9 | {{#isBasicBearer}} 10 | // Configure Bearer{{#bearerFormat}} ({{{.}}}){{/bearerFormat}} authorization: {{{name}}} 11 | $config = {{{invokerPackage}}}\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN'); 12 | {{/isBasicBearer}} 13 | {{/isBasic}} 14 | {{#isApiKey}} 15 | // Configure API key authorization: {{{name}}} 16 | $config = {{{invokerPackage}}}\Configuration::getDefaultConfiguration()->setApiKey('{{{keyParamName}}}', 'YOUR_API_KEY'); 17 | // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed 18 | // $config = {{{invokerPackage}}}\Configuration::getDefaultConfiguration()->setApiKeyPrefix('{{{keyParamName}}}', 'Bearer'); 19 | {{/isApiKey}} 20 | {{#isOAuth}} 21 | // Configure OAuth2 access token for authorization: {{{name}}} 22 | $config = {{{invokerPackage}}}\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN'); 23 | {{/isOAuth}}{{/authMethods}}{{/hasAuthMethods}} 24 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/gen/templates/phpunit.xml.mustache: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | {{apiTestPath}} 11 | {{modelTestPath}} 12 | 13 | 14 | 15 | 16 | {{apiSrcPath}} 17 | {{modelSrcPath}} 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /vendor/muxinc/mux-php/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | if [ -z "${MUX_TOKEN_ID:-}" ] 5 | then 6 | echo "MUX_TOKEN_ID not set" 7 | exit 255 8 | fi 9 | 10 | if [ -z "${MUX_TOKEN_SECRET:-}" ] 11 | then 12 | echo "MUX_TOKEN_SECRET not set" 13 | exit 255 14 | fi 15 | 16 | VIDEO_TESTS=./examples/video/exercise*.php 17 | for f in $VIDEO_TESTS 18 | do 19 | echo "========== Running $f ==========" 20 | php $f 21 | done 22 | 23 | DATA_TESTS=./examples/data/exercise*.php 24 | for f in $DATA_TESTS 25 | do 26 | echo "========== Running $f ==========" 27 | php $f 28 | done 29 | -------------------------------------------------------------------------------- /vendor/phpoption/phpoption/Makefile: -------------------------------------------------------------------------------- 1 | install: 2 | @docker run -it -w /data -v ${PWD}:/data:delegated -v ~/.composer:/root/.composer:delegated --entrypoint composer --rm registry.gitlab.com/grahamcampbell/php:7.4-base update 3 | @docker run -it -w /data -v ${PWD}:/data:delegated -v ~/.composer:/root/.composer:delegated --entrypoint composer --rm registry.gitlab.com/grahamcampbell/php:7.4-base bin all update 4 | 5 | phpunit: 6 | @rm -f bootstrap/cache/*.php && docker run -it -w /data -v ${PWD}:/data:delegated --entrypoint vendor/bin/phpunit --rm registry.gitlab.com/grahamcampbell/php:7.4-cli 7 | 8 | phpstan-analyze-src: 9 | @docker run -it -w /data -v ${PWD}:/data:delegated --entrypoint vendor/bin/phpstan --rm registry.gitlab.com/grahamcampbell/php:7.4-cli analyze src -c phpstan.src.neon.dist 10 | 11 | phpstan-analyze-tests: 12 | @docker run -it -w /data -v ${PWD}:/data:delegated --entrypoint vendor/bin/phpstan --rm registry.gitlab.com/grahamcampbell/php:7.4-cli analyze tests -c phpstan.tests.neon.dist 13 | 14 | phpstan-baseline: 15 | @docker run -it -w /data -v ${PWD}:/data:delegated --entrypoint vendor/bin/phpstan --rm registry.gitlab.com/grahamcampbell/php:7.4-cli analyze src -c phpstan.src.neon.dist --generate-baseline 16 | 17 | psalm-analyze: 18 | @docker run -it -w /data -v ${PWD}:/data:delegated --entrypoint vendor/bin/psalm.phar --rm registry.gitlab.com/grahamcampbell/php:7.4-cli 19 | 20 | psalm-show-info: 21 | @docker run -it -w /data -v ${PWD}:/data:delegated --entrypoint vendor/bin/psalm .phar--rm registry.gitlab.com/grahamcampbell/php:7.4-cli --show-info=true 22 | 23 | test: phpunit phpstan-analyze-src phpstan-analyze-tests psalm-analyze 24 | 25 | clean: 26 | @rm -rf .phpunit.result.cache composer.lock vendor vendor-bin/*/composer.lock vendor-bin/*/vendor 27 | -------------------------------------------------------------------------------- /vendor/psr/http-client/src/ClientExceptionInterface.php: -------------------------------------------------------------------------------- 1 | 'Content-Type', 16 | 'CONTENT_LENGTH' => 'Content-Length', 17 | 'CONTENT_MD5' => 'Content-Md5', 18 | ); 19 | 20 | foreach ($_SERVER as $key => $value) { 21 | if (substr($key, 0, 5) === 'HTTP_') { 22 | $key = substr($key, 5); 23 | if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) { 24 | $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key)))); 25 | $headers[$key] = $value; 26 | } 27 | } elseif (isset($copy_server[$key])) { 28 | $headers[$copy_server[$key]] = $value; 29 | } 30 | } 31 | 32 | if (!isset($headers['Authorization'])) { 33 | if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { 34 | $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; 35 | } elseif (isset($_SERVER['PHP_AUTH_USER'])) { 36 | $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; 37 | $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass); 38 | } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) { 39 | $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST']; 40 | } 41 | } 42 | 43 | return $headers; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/function.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (!function_exists('trigger_deprecation')) { 13 | /** 14 | * Triggers a silenced deprecation notice. 15 | * 16 | * @param string $package The name of the Composer package that is triggering the deprecation 17 | * @param string $version The version of the package that introduced the deprecation 18 | * @param string $message The message of the deprecation 19 | * @param mixed ...$args Values to insert in the message using printf() formatting 20 | * 21 | * @author Nicolas Grekas 22 | */ 23 | function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void 24 | { 25 | @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/bootstrap.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Ctype as p; 13 | 14 | if (\PHP_VERSION_ID >= 80000) { 15 | return require __DIR__.'/bootstrap80.php'; 16 | } 17 | 18 | if (!function_exists('ctype_alnum')) { 19 | function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } 20 | } 21 | if (!function_exists('ctype_alpha')) { 22 | function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } 23 | } 24 | if (!function_exists('ctype_cntrl')) { 25 | function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } 26 | } 27 | if (!function_exists('ctype_digit')) { 28 | function ctype_digit($text) { return p\Ctype::ctype_digit($text); } 29 | } 30 | if (!function_exists('ctype_graph')) { 31 | function ctype_graph($text) { return p\Ctype::ctype_graph($text); } 32 | } 33 | if (!function_exists('ctype_lower')) { 34 | function ctype_lower($text) { return p\Ctype::ctype_lower($text); } 35 | } 36 | if (!function_exists('ctype_print')) { 37 | function ctype_print($text) { return p\Ctype::ctype_print($text); } 38 | } 39 | if (!function_exists('ctype_punct')) { 40 | function ctype_punct($text) { return p\Ctype::ctype_punct($text); } 41 | } 42 | if (!function_exists('ctype_space')) { 43 | function ctype_space($text) { return p\Ctype::ctype_space($text); } 44 | } 45 | if (!function_exists('ctype_upper')) { 46 | function ctype_upper($text) { return p\Ctype::ctype_upper($text); } 47 | } 48 | if (!function_exists('ctype_xdigit')) { 49 | function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } 50 | } 51 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/bootstrap80.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Ctype as p; 13 | 14 | if (!function_exists('ctype_alnum')) { 15 | function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); } 16 | } 17 | if (!function_exists('ctype_alpha')) { 18 | function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); } 19 | } 20 | if (!function_exists('ctype_cntrl')) { 21 | function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); } 22 | } 23 | if (!function_exists('ctype_digit')) { 24 | function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); } 25 | } 26 | if (!function_exists('ctype_graph')) { 27 | function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); } 28 | } 29 | if (!function_exists('ctype_lower')) { 30 | function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); } 31 | } 32 | if (!function_exists('ctype_print')) { 33 | function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); } 34 | } 35 | if (!function_exists('ctype_punct')) { 36 | function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); } 37 | } 38 | if (!function_exists('ctype_space')) { 39 | function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); } 40 | } 41 | if (!function_exists('ctype_upper')) { 42 | function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); } 43 | } 44 | if (!function_exists('ctype_xdigit')) { 45 | function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php: -------------------------------------------------------------------------------- 1 | flags = $flags; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Php80 as p; 13 | 14 | if (\PHP_VERSION_ID >= 80000) { 15 | return; 16 | } 17 | 18 | if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { 19 | define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); 20 | } 21 | 22 | if (!function_exists('fdiv')) { 23 | function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } 24 | } 25 | if (!function_exists('preg_last_error_msg')) { 26 | function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } 27 | } 28 | if (!function_exists('str_contains')) { 29 | function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } 30 | } 31 | if (!function_exists('str_starts_with')) { 32 | function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } 33 | } 34 | if (!function_exists('str_ends_with')) { 35 | function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } 36 | } 37 | if (!function_exists('get_debug_type')) { 38 | function get_debug_type($value): string { return p\Php80::get_debug_type($value); } 39 | } 40 | if (!function_exists('get_resource_id')) { 41 | function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | public function load(RepositoryInterface $repository, array $entries) 25 | { 26 | return \array_reduce($entries, static function (array $vars, Entry $entry) use ($repository) { 27 | $name = $entry->getName(); 28 | 29 | $value = $entry->getValue()->map(static function (Value $value) use ($repository) { 30 | return Resolver::resolve($repository, $value); 31 | }); 32 | 33 | if ($value->isDefined()) { 34 | $inner = $value->get(); 35 | if ($repository->set($name, $inner)) { 36 | return \array_merge($vars, [$name => $inner]); 37 | } 38 | } else { 39 | if ($repository->clear($name)) { 40 | return \array_merge($vars, [$name => null]); 41 | } 42 | } 43 | 44 | return $vars; 45 | }, []); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | public function load(RepositoryInterface $repository, array $entries); 20 | } 21 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/Entry.php: -------------------------------------------------------------------------------- 1 | name = $name; 36 | $this->value = $value; 37 | } 38 | 39 | /** 40 | * Get the entry name. 41 | * 42 | * @return string 43 | */ 44 | public function getName() 45 | { 46 | return $this->name; 47 | } 48 | 49 | /** 50 | * Get the entry value. 51 | * 52 | * @return \PhpOption\Option<\Dotenv\Parser\Value> 53 | */ 54 | public function getValue() 55 | { 56 | /** @var \PhpOption\Option<\Dotenv\Parser\Value> */ 57 | return Option::fromValue($this->value); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/Lexer.php: -------------------------------------------------------------------------------- 1 | 37 | */ 38 | public static function lex(string $content) 39 | { 40 | static $regex; 41 | 42 | if ($regex === null) { 43 | $regex = '(('.\implode(')|(', self::PATTERNS).'))A'; 44 | } 45 | 46 | $offset = 0; 47 | 48 | while (isset($content[$offset])) { 49 | if (!\preg_match($regex, $content, $matches, 0, $offset)) { 50 | throw new \Error(\sprintf('Lexer encountered unexpected character [%s].', $content[$offset])); 51 | } 52 | 53 | $offset += \strlen($matches[0]); 54 | 55 | yield $matches[0]; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | public static function create(); 15 | } 16 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php: -------------------------------------------------------------------------------- 1 | readers = $readers; 28 | } 29 | 30 | /** 31 | * Read an environment variable, if it exists. 32 | * 33 | * @param string $name 34 | * 35 | * @return \PhpOption\Option 36 | */ 37 | public function read(string $name) 38 | { 39 | foreach ($this->readers as $reader) { 40 | $result = $reader->read($name); 41 | if ($result->isDefined()) { 42 | return $result; 43 | } 44 | } 45 | 46 | return None::create(); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php: -------------------------------------------------------------------------------- 1 | writers = $writers; 26 | } 27 | 28 | /** 29 | * Write to an environment variable, if possible. 30 | * 31 | * @param string $name 32 | * @param string $value 33 | * 34 | * @return bool 35 | */ 36 | public function write(string $name, string $value) 37 | { 38 | foreach ($this->writers as $writers) { 39 | if (!$writers->write($name, $value)) { 40 | return false; 41 | } 42 | } 43 | 44 | return true; 45 | } 46 | 47 | /** 48 | * Delete an environment variable, if possible. 49 | * 50 | * @param string $name 51 | * 52 | * @return bool 53 | */ 54 | public function delete(string $name) 55 | { 56 | foreach ($this->writers as $writers) { 57 | if (!$writers->delete($name)) { 58 | return false; 59 | } 60 | } 61 | 62 | return true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function read(string $name); 17 | } 18 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php: -------------------------------------------------------------------------------- 1 | content = $content; 26 | } 27 | 28 | /** 29 | * Read the content of the environment file(s). 30 | * 31 | * @return string 32 | */ 33 | public function read() 34 | { 35 | return $this->content; 36 | } 37 | } 38 | --------------------------------------------------------------------------------