From fff970dca3f2d26898791eae767f7703adfad8bf Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Thu, 9 May 2024 01:12:02 +0200 Subject: [PATCH] Added a rennderer specific to the feed --- .../BundleRendererServiceProvider.php | 1 + .../Renderers/FeedRenderer.php | 57 +++++++++++++++++++ .../Renderers/ListRenderer.php | 36 ------------ 3 files changed, 58 insertions(+), 36 deletions(-) create mode 100644 app/Services/BundleRenderers/Renderers/FeedRenderer.php diff --git a/app/Providers/BundleRendererServiceProvider.php b/app/Providers/BundleRendererServiceProvider.php index 65cfbf6..4cb01ed 100644 --- a/app/Providers/BundleRendererServiceProvider.php +++ b/app/Providers/BundleRendererServiceProvider.php @@ -8,6 +8,7 @@ class BundleRendererServiceProvider extends ServiceProvider { protected array $bundleRenderers = [ + \App\Services\BundleRenderers\Renderers\FeedRenderer::class, \App\Services\BundleRenderers\Renderers\DossiersListRenderer::class, \App\Services\BundleRenderers\Renderers\DossierRenderer::class, \App\Services\BundleRenderers\Renderers\DateBasedListRenderer::class, diff --git a/app/Services/BundleRenderers/Renderers/FeedRenderer.php b/app/Services/BundleRenderers/Renderers/FeedRenderer.php new file mode 100644 index 0000000..706cc5a --- /dev/null +++ b/app/Services/BundleRenderers/Renderers/FeedRenderer.php @@ -0,0 +1,57 @@ +renderFeed(); + + $baseRender['/index.xml'] = [ + 'output' => $output, + 'validation' => null, + ]; + + dd($baseRender['/index.xml']['validation']); + + $baseRender += parent::render(); + + return $baseRender; + } + + /** + * Return a boolean value indicating if this creator in particular can + * create bundles for specified section + */ + public static function handles(Bundle $bundle): bool + { + return $bundle->getPath() === '/'; + } + + private function renderFeed() + { + $bundles = $this->getSubBundles(); + $lastBundles = array_map( + function ($item) { + $bundle = new Bundle($item, $this->bundle->getDisk()); + $bundle->load(); + + return $bundle; + }, + array_slice($bundles, 0, 10) + ); + + $lastBundle = collect($lastBundles)->first(); + + return (string) view('feed', [ + 'bundles' => $lastBundles, + 'lastBuildDate' => now()->toRssString(), + ]); + } +} diff --git a/app/Services/BundleRenderers/Renderers/ListRenderer.php b/app/Services/BundleRenderers/Renderers/ListRenderer.php index f731d68..baa6779 100644 --- a/app/Services/BundleRenderers/Renderers/ListRenderer.php +++ b/app/Services/BundleRenderers/Renderers/ListRenderer.php @@ -3,24 +3,9 @@ namespace App\Services\BundleRenderers\Renderers; use App\Classes\Bundle; -use Carbon\Carbon; class ListRenderer extends BaseRenderer { - /** - * Renders a complete HTML view of the bundle - */ - public function render() - { - $baseRender = parent::render(); - - if ($this->bundle->getPath() === '/') { - $baseRender['/index.xml'] = $this->renderFeed(); - } - - return $baseRender; - } - /** * Return a boolean value indicating if this creator in particular can * create bundles for specified section @@ -31,25 +16,4 @@ public static function handles(Bundle $bundle): bool // can handle the path return false; } - - private function renderFeed() - { - $bundles = $this->getSubBundles(); - $lastBundles = array_map( - function ($item) { - $bundle = new Bundle($item, $this->bundle->getDisk()); - $bundle->load(); - - return $bundle; - }, - array_slice($bundles, 0, 10) - ); - - $lastBundle = collect($lastBundles)->first(); - - return (string) view('feed', [ - 'bundles' => $lastBundles, - 'lastBuildDate' => Carbon::parse($lastBundle->metadata()->get('date')), - ]); - } }