le_do_workflow('build', $template, $target, ['index' => $index]);
});
// generate feeds
le_add_workflow('generate_feeds', function () use($context) {
if (!isset($context->config['feeds'])) {
return;
}
$config = $context->config['feeds'];
if (!isset($config['source']) || !isset($context->index[$config['source']])) {
return;
}
$config = array_merge(['title' => isset($context->data['title']) ? $context->data['title'] : 'My Feeds', 'description' => isset($context->data['description']) ? $context->data['description'] : 'My Feeds Description', 'recent' => 20, 'target' => 'feeds.xml', 'url' => isset($context->data['url']) ? $context->data['url'] : '/'], $config);
$feedsUrl = rtrim($config['url'], '/') . '/' . ltrim($config['target'], '/');
$feeds = new \Atom();
$feeds->setBaseUrl($config['url']);
$feeds->setFeedUrl($feedsUrl);
$feeds->setTitle($config['title']);
$feeds->setSubTitle($config['description']);
$posts = array_slice($context->index[$config['source']], 0, $config['recent']);
foreach ($posts as $post) {
$post = le_do_workflow('get_post', $config['source'], $post);
$item = ['title' => $post['title'], 'link' => $post['permalink'], 'updated' => $post['date'], 'published' => $post['date'], 'author' => isset($config['author']) ? ['name' => $config['author'], 'url' => $config['url']] : NULL, 'content' => $post['content']];
foreach ($context->config['blocks'] as $type => $val) {
if (isset($val['source']) && is_string($val['source'])) {
continue;
}
if ('archive' != $type && !empty($post[$type])) {
foreach ($post[$type] as $meta) {
$item['category'][] = ['feeds_url' => $meta['url'], 'name' => $meta['name']];
}
}