From 73c47d9461cbfea88c84f3f2b01cdeb2d22c2f87 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 19 Jun 2015 19:38:23 -0400 Subject: Add RSS feed for users and change address of project feeds --- app/Controller/Feed.php | 56 +++++++++++++++++++++++++++++++++++ app/Controller/Project.php | 21 ------------- app/Model/Acl.php | 4 +-- app/Template/feed/project.php | 27 +++++++++++++++++ app/Template/feed/user.php | 27 +++++++++++++++++ app/Template/project/feed.php | 27 ----------------- app/Template/project/share.php | 2 +- app/Template/project/show.php | 2 +- app/Template/projectinfo/activity.php | 2 +- app/Template/user/share.php | 1 + app/Template/user/show.php | 1 + 11 files changed, 117 insertions(+), 53 deletions(-) create mode 100644 app/Controller/Feed.php create mode 100644 app/Template/feed/project.php create mode 100644 app/Template/feed/user.php delete mode 100644 app/Template/project/feed.php (limited to 'app') diff --git a/app/Controller/Feed.php b/app/Controller/Feed.php new file mode 100644 index 00000000..c08919c2 --- /dev/null +++ b/app/Controller/Feed.php @@ -0,0 +1,56 @@ +request->getStringParam('token'); + $user = $this->user->getByToken($token); + + // Token verification + if (empty($user)) { + $this->forbidden(true); + } + + $projects = $this->projectPermission->getActiveMemberProjects($user['id']); + + $this->response->xml($this->template->render('feed/user', array( + 'events' => $this->projectActivity->getProjects(array_keys($projects)), + 'user' => $user, + ))); + } + + /** + * RSS feed for a project + * + * @access public + */ + public function project() + { + $token = $this->request->getStringParam('token'); + $project = $this->project->getByToken($token); + + // Token verification + if (empty($project)) { + $this->forbidden(true); + } + + $this->response->xml($this->template->render('feed/project', array( + 'events' => $this->projectActivity->getProject($project['id']), + 'project' => $project, + ))); + } +} diff --git a/app/Controller/Project.php b/app/Controller/Project.php index ba039b7d..faebac38 100644 --- a/app/Controller/Project.php +++ b/app/Controller/Project.php @@ -394,27 +394,6 @@ class Project extends Base ))); } - /** - * RSS feed for a project (public) - * - * @access public - */ - public function feed() - { - $token = $this->request->getStringParam('token'); - $project = $this->project->getByToken($token); - - // Token verification - if (empty($project)) { - $this->forbidden(true); - } - - $this->response->xml($this->template->render('project/feed', array( - 'events' => $this->projectActivity->getProject($project['id']), - 'project' => $project, - ))); - } - /** * Display a form to create a new project * diff --git a/app/Model/Acl.php b/app/Model/Acl.php index 8cfc7120..90944128 100644 --- a/app/Model/Acl.php +++ b/app/Model/Acl.php @@ -21,10 +21,10 @@ class Acl extends Base 'user' => array('google', 'github'), 'task' => array('readonly'), 'board' => array('readonly'), - 'project' => array('feed'), - 'webhook' => '*', 'app' => array('colors'), + 'webhook' => '*', 'ical' => '*', + 'feed' => '*', ); /** diff --git a/app/Template/feed/project.php b/app/Template/feed/project.php new file mode 100644 index 00000000..60b7ee96 --- /dev/null +++ b/app/Template/feed/project.php @@ -0,0 +1,27 @@ +' ?> + + <?= t('%s\'s activity', $project['name']) ?> + + + + url->base().$this->url->href('feed', 'project', array('token' => $project['token'])) ?> + url->base() ?>assets/img/favicon.png + + + + <?= $e['event_title'] ?> + + + + + + e($e['author']) ?> + + + + ]]> + + + + \ No newline at end of file diff --git a/app/Template/feed/user.php b/app/Template/feed/user.php new file mode 100644 index 00000000..b3279a0c --- /dev/null +++ b/app/Template/feed/user.php @@ -0,0 +1,27 @@ +' ?> + + <?= t('Project activities for %s', $user['name'] ?: $user['username']) ?> + + + + url->base().$this->url->href('feed', 'user', array('token' => $user['token'])) ?> + url->base() ?>assets/img/favicon.png + + + + <?= $e['event_title'] ?> + + + + + + e($e['author']) ?> + + + + ]]> + + + + \ No newline at end of file diff --git a/app/Template/project/feed.php b/app/Template/project/feed.php deleted file mode 100644 index 2062e801..00000000 --- a/app/Template/project/feed.php +++ /dev/null @@ -1,27 +0,0 @@ -' ?> - - <?= t('%s\'s activity', $project['name']) ?> - - - - url->base() ?> - url->base() ?>assets/img/favicon.png - - - - <?= $e['event_title'] ?> - - - - - - e($e['author']) ?> - - - - ]]> - - - - \ No newline at end of file diff --git a/app/Template/project/share.php b/app/Template/project/share.php index a9146599..6f66c97e 100644 --- a/app/Template/project/share.php +++ b/app/Template/project/share.php @@ -7,7 +7,7 @@
diff --git a/app/Template/project/show.php b/app/Template/project/show.php index 4869d8a4..beb5a1fa 100644 --- a/app/Template/project/show.php +++ b/app/Template/project/show.php @@ -10,7 +10,7 @@
  • url->link(t('Public link'), 'board', 'readonly', array('token' => $project['token']), false, '', '', true) ?>
  • -
  • url->link(t('RSS feed'), 'project', 'feed', array('token' => $project['token']), false, '', '', true) ?>
  • +
  • url->link(t('RSS feed'), 'feed', 'project', array('token' => $project['token']), false, '', '', true) ?>
  • url->link(t('iCal feed'), 'ical', 'project', array('token' => $project['token'])) ?>
  • diff --git a/app/Template/projectinfo/activity.php b/app/Template/projectinfo/activity.php index 528cdbee..d458ea3d 100644 --- a/app/Template/projectinfo/activity.php +++ b/app/Template/projectinfo/activity.php @@ -20,7 +20,7 @@ url->link(t('All projects'), 'project', 'index') ?> -
  • url->link(t('RSS feed'), 'project', 'feed', array('token' => $project['token']), false, '', '', true) ?>
  • +
  • url->link(t('RSS feed'), 'feed', 'project', array('token' => $project['token']), false, '', '', true) ?>
  • url->link(t('iCal feed'), 'ical', 'project', array('token' => $project['token'])) ?>
  • diff --git a/app/Template/user/share.php b/app/Template/user/share.php index 8f333a6b..56dc8675 100644 --- a/app/Template/user/share.php +++ b/app/Template/user/share.php @@ -6,6 +6,7 @@
    diff --git a/app/Template/user/show.php b/app/Template/user/show.php index 5442e2e7..a9de6d85 100644 --- a/app/Template/user/show.php +++ b/app/Template/user/show.php @@ -33,6 +33,7 @@
    -- cgit v1.2.3