diff --git a/src/flextype/Media/Fields/CreatedAtField.php b/src/flextype/Media/Fields/CreatedAtField.php new file mode 100644 index 00000000..648fabf5 --- /dev/null +++ b/src/flextype/Media/Fields/CreatedAtField.php @@ -0,0 +1,29 @@ +get('flextype.settings.entries.media.fields.created_at.enabled')) { + emitter()->addListener('onMediaFetchSingleHasResult', static function (): void { + if (media()->registry()->get('fetch.data.created_at') === null) { + media()->registry()->set('fetch.data.created_at', (int) filesystem()->file(media()->getFileLocation(media()->registry()->get('fetch.id')))->lastModified()); + } else { + media()->registry()->set('fetch.data.created_at', (int) strtotime((string) media()->registry()->get('fetch.data.created_at'))); + } + }); + + emitter()->addListener('onMediaCreate', static function (): void { + if (media()->registry()->get('create.data.created_at') !== null) { + return; + } + + media()->registry()->set('create.data.created_at', date(registry()->get('flextype.settings.date_format'), time())); + }); +} + + diff --git a/src/flextype/Media/Fields/CreatedByField.php b/src/flextype/Media/Fields/CreatedByField.php new file mode 100644 index 00000000..bff919cf --- /dev/null +++ b/src/flextype/Media/Fields/CreatedByField.php @@ -0,0 +1,18 @@ +get('flextype.settings.entries.media.fields.created_by.enabled')) { + emitter()->addListener('onMediaCreate', static function (): void { + if (media()->registry()->get('create.data.created_by') !== null) { + return; + } + + media()->registry()->set('create.data.created_by', ''); + }); +} diff --git a/src/flextype/Media/Fields/IdField.php b/src/flextype/Media/Fields/IdField.php new file mode 100644 index 00000000..418dab97 --- /dev/null +++ b/src/flextype/Media/Fields/IdField.php @@ -0,0 +1,21 @@ +get('flextype.settings.entries.media.fields.id.enabled')) { + + emitter()->addListener('onMediaFetchSingleHasResult', static function (): void { + + if (media()->registry()->get('fetch.data.id') !== null) { + return; + } + + media()->registry()->set('fetch.data.id', (string) strings(media()->registry()->get('fetch.id'))->trimSlashes()); + }); +} diff --git a/src/flextype/Media/Fields/ModifiedAtField.php b/src/flextype/Media/Fields/ModifiedAtField.php new file mode 100644 index 00000000..c33c6580 --- /dev/null +++ b/src/flextype/Media/Fields/ModifiedAtField.php @@ -0,0 +1,18 @@ +get('flextype.settings.entries.media.fields.modified_at.enabled')) { + emitter()->addListener('onMediaFetchSingleHasResult', static function (): void { + if (content()->registry()->get('fetch.data.modified_at') !== null) { + return; + } + + content()->registry()->set('fetch.data.modified_at', (int) filesystem()->file(content()->getFileLocation(content()->registry()->get('fetch.id')))->lastModified()); + }); +} diff --git a/src/flextype/Media/Fields/UuidField.php b/src/flextype/Media/Fields/UuidField.php new file mode 100644 index 00000000..6bbb14ef --- /dev/null +++ b/src/flextype/Media/Fields/UuidField.php @@ -0,0 +1,20 @@ +get('flextype.settings.entries.media.fields.uuid.enabled')) { + emitter()->addListener('onMediaCreate', static function (): void { + if (media()->registry()->get('create.data.uuid') !== null) { + return; + } + + media()->registry()->set('create.data.uuid', Uuid::uuid4()->toString()); + }); +}