2024-04-23 21:04:20 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Services\BundleRenderers\Renderers;
|
|
|
|
|
|
|
|
use App\Classes\Bundle;
|
|
|
|
|
|
|
|
class ListRenderer extends BaseRenderer
|
|
|
|
{
|
2024-04-26 21:55:05 +02:00
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|
|
|
|
|
2024-04-23 21:04:20 +02:00
|
|
|
/**
|
|
|
|
* Return a boolean value indicating if this creator in particular can
|
|
|
|
* create bundles for specified section
|
|
|
|
*/
|
|
|
|
public static function handles(Bundle $bundle): bool
|
|
|
|
{
|
|
|
|
// This renderer is used by default when no other renderer claimed it
|
|
|
|
// can handle the path
|
|
|
|
return false;
|
|
|
|
}
|
2024-04-26 21:55:05 +02:00
|
|
|
|
|
|
|
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)
|
|
|
|
);
|
|
|
|
|
|
|
|
return (string) view('feed', [
|
|
|
|
'bundles' => $lastBundles,
|
|
|
|
'lastBuildDate' => now()->toRssString(),
|
|
|
|
]);
|
|
|
|
}
|
2024-04-23 21:04:20 +02:00
|
|
|
}
|