58 lines
1.3 KiB
PHP
58 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Services\BundleRenderers\Renderers;
|
|
|
|
use App\Classes\Bundle;
|
|
|
|
class FeedRenderer extends BaseRenderer
|
|
{
|
|
/**
|
|
* Renders a complete HTML view of the bundle
|
|
*/
|
|
public function render()
|
|
{
|
|
$output = $this->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(),
|
|
]);
|
|
}
|
|
}
|