diff --git a/app/Config/Fediverse.php b/app/Config/Fediverse.php new file mode 100644 index 00000000..56c460f0 --- /dev/null +++ b/app/Config/Fediverse.php @@ -0,0 +1,40 @@ +podcastBannerDefaultPaths[service('settings')->get('App.theme')] ?? config( + 'Images' + )->podcastBannerDefaultPaths['default']; + + ['dirname' => $dirname, 'extension' => $extension, 'filename' => $filename] = pathinfo( + $defaultBanner['path'] + ); + $defaultBannerPath = $filename; + if ($dirname !== '.') { + $defaultBannerPathList = [$dirname, $filename]; + $defaultBannerPath = implode('/', $defaultBannerPathList); + } + + helper('media'); + + $this->defaultCoverImagePath = media_path($defaultBannerPath . '_federation.' . $extension); + $this->defaultCoverImageMimetype = $defaultBanner['mimetype']; + } +} diff --git a/app/Config/Images.php b/app/Config/Images.php index e48805ad..449a76d8 100644 --- a/app/Config/Images.php +++ b/app/Config/Images.php @@ -126,11 +126,43 @@ class Images extends BaseConfig ], ]; - public string $avatarDefaultPath = 'castopod-avatar-default.jpg'; + public string $avatarDefaultPath = 'castopod-avatar.jpg'; public string $avatarDefaultMimeType = 'image/jpg'; - public string $podcastBannerDefaultPath = 'castopod-banner-default.jpg'; + /** + * @var array> + */ + public array $podcastBannerDefaultPaths = [ + 'default' => [ + 'path' => 'castopod-banner-pine.jpg', + 'mimetype' => 'image/jpeg', + ], + 'pine' => [ + 'path' => 'castopod-banner-pine.jpg', + 'mimetype' => 'image/jpeg', + ], + 'crimson' => [ + 'path' => 'castopod-banner-crimson.jpg', + 'mimetype' => 'image/jpeg', + ], + 'amber' => [ + 'path' => 'castopod-banner-amber.jpg', + 'mimetype' => 'image/jpeg', + ], + 'lake' => [ + 'path' => 'castopod-banner-lake.jpg', + 'mimetype' => 'image/jpeg', + ], + 'jacaranda' => [ + 'path' => 'castopod-banner-jacaranda.jpg', + 'mimetype' => 'image/jpeg', + ], + 'onyx' => [ + 'path' => 'castopod-banner-onyx.jpg', + 'mimetype' => 'image/jpeg', + ], + ]; public string $podcastBannerDefaultMimeType = 'image/jpeg'; @@ -144,6 +176,10 @@ class Images extends BaseConfig * @var array> */ public array $personAvatarSizes = [ + 'federation' => [ + 'width' => 400, + 'height' => 400, + ], 'tiny' => [ 'width' => 40, 'height' => 40, diff --git a/app/Controllers/WebmanifestController.php b/app/Controllers/WebmanifestController.php index 4e98aecc..c001b12d 100644 --- a/app/Controllers/WebmanifestController.php +++ b/app/Controllers/WebmanifestController.php @@ -42,8 +42,7 @@ class WebmanifestController extends Controller 'background' => '#F9F3F0', ], 'onyx' => [ - 'theme' => - '#040406', + 'theme' => '#040406', 'background' => '#F3F3F7', ], ]; diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index 7d13531d..55a2ec3c 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -271,11 +271,13 @@ class Podcast extends Entity public function getBanner(): Image { if ($this->banner_id === null) { + $defaultBanner = config('Images') + ->podcastBannerDefaultPaths[service('settings')->get('App.theme')] ?? config( + 'Images' + )->podcastBannerDefaultPaths['default']; return new Image([ - 'file_path' => config('Images') - ->podcastBannerDefaultPath, - 'file_mimetype' => config('Images') - ->podcastBannerDefaultMimeType, + 'file_path' => $defaultBanner['path'], + 'file_mimetype' => $defaultBanner['mimetype'], 'file_size' => 0, 'file_metadata' => [ 'sizes' => config('Images') diff --git a/modules/Admin/Controllers/PodcastController.php b/modules/Admin/Controllers/PodcastController.php index 5f39fe12..cf564860 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -12,6 +12,7 @@ namespace Modules\Admin\Controllers; use App\Entities\Location; use App\Entities\Podcast; +use App\Models\ActorModel; use App\Models\CategoryModel; use App\Models\EpisodeModel; use App\Models\LanguageModel; @@ -369,6 +370,10 @@ class PodcastController extends BaseController return redirect()->back(); } + $db = db_connect(); + + $db->transStart(); + $mediaModel = new MediaModel(); if (! $mediaModel->deleteMedia($this->podcast->banner)) { return redirect() @@ -377,6 +382,18 @@ class PodcastController extends BaseController ->with('errors', $mediaModel->errors()); } + // remove banner url from actor + $actor = (new ActorModel())->getActorById($this->podcast->actor_id); + + if ($actor !== null) { + $actor->cover_image_url = null; + $actor->cover_image_mimetype = null; + + (new ActorModel())->update($actor->id, $actor); + } + + $db->transComplete(); + return redirect()->back(); } diff --git a/modules/Fediverse/Config/Fediverse.php b/modules/Fediverse/Config/Fediverse.php index 19dfebb9..96a12b50 100644 --- a/modules/Fediverse/Config/Fediverse.php +++ b/modules/Fediverse/Config/Fediverse.php @@ -30,11 +30,11 @@ class Fediverse extends BaseConfig * Default avatar and cover images * -------------------------------------------------------------------- */ - public string $defaultAvatarImagePath = 'media/castopod-avatar-default_thumbnail.jpg'; + public string $defaultAvatarImagePath = 'media/castopod-avatar_fediveration.jpg'; public string $defaultAvatarImageMimetype = 'image/jpeg'; - public string $defaultCoverImagePath = 'media/castopod-cover-default.jpg'; + public string $defaultCoverImagePath = 'media/castopod-banner-pine_fediveration.jpg'; public string $defaultCoverImageMimetype = 'image/jpeg'; diff --git a/public/media/castopod-avatar-default.jpg b/public/media/castopod-avatar.jpg similarity index 100% rename from public/media/castopod-avatar-default.jpg rename to public/media/castopod-avatar.jpg diff --git a/public/media/castopod-avatar-default_medium.webp b/public/media/castopod-avatar_medium.webp similarity index 100% rename from public/media/castopod-avatar-default_medium.webp rename to public/media/castopod-avatar_medium.webp diff --git a/public/media/castopod-avatar-default_thumbnail.webp b/public/media/castopod-avatar_thumbnail.webp similarity index 100% rename from public/media/castopod-avatar-default_thumbnail.webp rename to public/media/castopod-avatar_thumbnail.webp diff --git a/public/media/castopod-avatar-default_tiny.webp b/public/media/castopod-avatar_tiny.webp similarity index 100% rename from public/media/castopod-avatar-default_tiny.webp rename to public/media/castopod-avatar_tiny.webp diff --git a/public/media/castopod-banner-amber.jpg b/public/media/castopod-banner-amber.jpg new file mode 100644 index 00000000..65373352 Binary files /dev/null and b/public/media/castopod-banner-amber.jpg differ diff --git a/public/media/castopod-banner-amber_federation.jpg b/public/media/castopod-banner-amber_federation.jpg new file mode 100644 index 00000000..425305f3 Binary files /dev/null and b/public/media/castopod-banner-amber_federation.jpg differ diff --git a/public/media/castopod-banner-amber_medium.webp b/public/media/castopod-banner-amber_medium.webp new file mode 100644 index 00000000..234ec532 Binary files /dev/null and b/public/media/castopod-banner-amber_medium.webp differ diff --git a/public/media/castopod-banner-amber_small.webp b/public/media/castopod-banner-amber_small.webp new file mode 100644 index 00000000..8c9ec454 Binary files /dev/null and b/public/media/castopod-banner-amber_small.webp differ diff --git a/public/media/castopod-banner-crimson.jpg b/public/media/castopod-banner-crimson.jpg new file mode 100644 index 00000000..3acd8e17 Binary files /dev/null and b/public/media/castopod-banner-crimson.jpg differ diff --git a/public/media/castopod-banner-crimson_federation.jpg b/public/media/castopod-banner-crimson_federation.jpg new file mode 100644 index 00000000..a016c399 Binary files /dev/null and b/public/media/castopod-banner-crimson_federation.jpg differ diff --git a/public/media/castopod-banner-default_medium.webp b/public/media/castopod-banner-crimson_medium.webp similarity index 63% rename from public/media/castopod-banner-default_medium.webp rename to public/media/castopod-banner-crimson_medium.webp index d0acadd7..48589283 100644 Binary files a/public/media/castopod-banner-default_medium.webp and b/public/media/castopod-banner-crimson_medium.webp differ diff --git a/public/media/castopod-banner-crimson_small.webp b/public/media/castopod-banner-crimson_small.webp new file mode 100644 index 00000000..1291f73b Binary files /dev/null and b/public/media/castopod-banner-crimson_small.webp differ diff --git a/public/media/castopod-banner-default_small.webp b/public/media/castopod-banner-default_small.webp deleted file mode 100644 index ada9220e..00000000 Binary files a/public/media/castopod-banner-default_small.webp and /dev/null differ diff --git a/public/media/castopod-banner-jacaranda.jpg b/public/media/castopod-banner-jacaranda.jpg new file mode 100644 index 00000000..d636d0c7 Binary files /dev/null and b/public/media/castopod-banner-jacaranda.jpg differ diff --git a/public/media/castopod-banner-default_federation.jpg b/public/media/castopod-banner-jacaranda_federation.jpg similarity index 69% rename from public/media/castopod-banner-default_federation.jpg rename to public/media/castopod-banner-jacaranda_federation.jpg index 938e3bef..33eada3c 100644 Binary files a/public/media/castopod-banner-default_federation.jpg and b/public/media/castopod-banner-jacaranda_federation.jpg differ diff --git a/public/media/castopod-banner-jacaranda_medium.webp b/public/media/castopod-banner-jacaranda_medium.webp new file mode 100644 index 00000000..ffca50ee Binary files /dev/null and b/public/media/castopod-banner-jacaranda_medium.webp differ diff --git a/public/media/castopod-banner-jacaranda_small.webp b/public/media/castopod-banner-jacaranda_small.webp new file mode 100644 index 00000000..b1154d22 Binary files /dev/null and b/public/media/castopod-banner-jacaranda_small.webp differ diff --git a/public/media/castopod-banner-lake.jpg b/public/media/castopod-banner-lake.jpg new file mode 100644 index 00000000..982a362f Binary files /dev/null and b/public/media/castopod-banner-lake.jpg differ diff --git a/public/media/castopod-banner-lake_federation.jpg b/public/media/castopod-banner-lake_federation.jpg new file mode 100644 index 00000000..f7527948 Binary files /dev/null and b/public/media/castopod-banner-lake_federation.jpg differ diff --git a/public/media/castopod-banner-lake_medium.webp b/public/media/castopod-banner-lake_medium.webp new file mode 100644 index 00000000..4dcd70df Binary files /dev/null and b/public/media/castopod-banner-lake_medium.webp differ diff --git a/public/media/castopod-banner-lake_small.webp b/public/media/castopod-banner-lake_small.webp new file mode 100644 index 00000000..b3e5c539 Binary files /dev/null and b/public/media/castopod-banner-lake_small.webp differ diff --git a/public/media/castopod-banner-onyx.jpg b/public/media/castopod-banner-onyx.jpg new file mode 100644 index 00000000..ef5839d5 Binary files /dev/null and b/public/media/castopod-banner-onyx.jpg differ diff --git a/public/media/castopod-banner-onyx_federation.jpg b/public/media/castopod-banner-onyx_federation.jpg new file mode 100644 index 00000000..73e4423a Binary files /dev/null and b/public/media/castopod-banner-onyx_federation.jpg differ diff --git a/public/media/castopod-banner-onyx_medium.webp b/public/media/castopod-banner-onyx_medium.webp new file mode 100644 index 00000000..189f77f5 Binary files /dev/null and b/public/media/castopod-banner-onyx_medium.webp differ diff --git a/public/media/castopod-banner-onyx_small.webp b/public/media/castopod-banner-onyx_small.webp new file mode 100644 index 00000000..81bd7fff Binary files /dev/null and b/public/media/castopod-banner-onyx_small.webp differ diff --git a/public/media/castopod-banner-pine.jpg b/public/media/castopod-banner-pine.jpg new file mode 100644 index 00000000..b6ab145f Binary files /dev/null and b/public/media/castopod-banner-pine.jpg differ diff --git a/public/media/castopod-banner-pine_federation.jpg b/public/media/castopod-banner-pine_federation.jpg new file mode 100644 index 00000000..9e9df5cb Binary files /dev/null and b/public/media/castopod-banner-pine_federation.jpg differ diff --git a/public/media/castopod-banner-pine_medium.webp b/public/media/castopod-banner-pine_medium.webp new file mode 100644 index 00000000..6371a5e5 Binary files /dev/null and b/public/media/castopod-banner-pine_medium.webp differ diff --git a/public/media/castopod-banner-pine_small.webp b/public/media/castopod-banner-pine_small.webp new file mode 100644 index 00000000..ac43b616 Binary files /dev/null and b/public/media/castopod-banner-pine_small.webp differ diff --git a/themes/cp_admin/episode/_card.php b/themes/cp_admin/episode/_card.php index 43199d55..87f552f1 100644 --- a/themes/cp_admin/episode/_card.php +++ b/themes/cp_admin/episode/_card.php @@ -1,6 +1,6 @@
-
+
<?= $episode->title ?>
diff --git a/themes/cp_admin/person/_card.php b/themes/cp_admin/person/_card.php index 174963a4..8bdba05a 100644 --- a/themes/cp_admin/person/_card.php +++ b/themes/cp_admin/person/_card.php @@ -1,6 +1,6 @@