Remove dependency on PicoFeed

This commit is contained in:
Frédéric Guillot
2018-02-02 15:39:47 -08:00
parent 5c4d06d26b
commit bab2fb3899
345 changed files with 459 additions and 15229 deletions

View File

@@ -2,11 +2,7 @@
namespace Kanboard\Controller;
use DateTime;
use Kanboard\Core\Controller\AccessForbiddenException;
use PicoFeed\Syndication\AtomFeedBuilder;
use PicoFeed\Syndication\AtomItemBuilder;
use PicoFeed\Syndication\FeedBuilder;
/**
* Atom/RSS Feed controller
@@ -26,20 +22,16 @@ class FeedController extends BaseController
$token = $this->request->getStringParam('token');
$user = $this->userModel->getByToken($token);
// Token verification
if (empty($user)) {
throw AccessForbiddenException::getInstance()->withoutLayout();
}
$events = $this->helper->projectActivity->getProjectsEvents($this->projectPermissionModel->getActiveProjectIds($user['id']));
$feedBuilder = AtomFeedBuilder::create()
->withTitle(e('Project activities for %s', $this->helper->user->getFullname($user)))
->withFeedUrl($this->helper->url->to('FeedController', 'user', array('token' => $user['token']), '', true))
->withSiteUrl($this->helper->url->base())
->withDate(new DateTime());
$this->response->xml($this->buildFeedItems($events, $feedBuilder)->build());
$this->response->xml($this->template->render('feed/user', [
'user' => $user,
'events' => $events,
]));
}
/**
@@ -58,42 +50,9 @@ class FeedController extends BaseController
$events = $this->helper->projectActivity->getProjectEvents($project['id']);
$feedBuilder = AtomFeedBuilder::create()
->withTitle(e('%s\'s activity', $project['name']))
->withFeedUrl($this->helper->url->to('FeedController', 'project', array('token' => $project['token']), '', true))
->withSiteUrl($this->helper->url->base())
->withDate(new DateTime());
$this->response->xml($this->buildFeedItems($events, $feedBuilder)->build());
}
/**
* Build feed items
*
* @access protected
* @param array $events
* @param FeedBuilder $feedBuilder
* @return FeedBuilder
*/
protected function buildFeedItems(array $events, FeedBuilder $feedBuilder)
{
foreach ($events as $event) {
$itemDate = new DateTime();
$itemDate->setTimestamp($event['date_creation']);
$itemUrl = $this->helper->url->to('TaskViewController', 'show', array('task_id' => $event['task_id']), '', true);
$feedBuilder
->withItem(AtomItemBuilder::create($feedBuilder)
->withTitle($event['event_title'])
->withUrl($itemUrl.'#event-'.$event['id'])
->withAuthor($event['author'])
->withPublishedDate($itemDate)
->withUpdatedDate($itemDate)
->withContent($event['event_content'])
);
}
return $feedBuilder;
$this->response->xml($this->template->render('feed/project', [
'project' => $project,
'events' => $events,
]));
}
}