summaryrefslogtreecommitdiff
path: root/app/Formatter/ProjectActivityEventFormatter.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-04-10 12:13:42 -0400
committerFrederic Guillot <fred@kanboard.net>2016-04-10 12:13:42 -0400
commit2eadfb22912d94e76a479b694070735fbb0298f1 (patch)
tree4280c1bc33851da2188f4bc0aa49310a5923e021 /app/Formatter/ProjectActivityEventFormatter.php
parent7b74f55a285d2785f83be148abdeab95e2b4a7c6 (diff)
Refactor ProjectActivity model to use Filter and Formatter interface
Diffstat (limited to 'app/Formatter/ProjectActivityEventFormatter.php')
-rw-r--r--app/Formatter/ProjectActivityEventFormatter.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/app/Formatter/ProjectActivityEventFormatter.php b/app/Formatter/ProjectActivityEventFormatter.php
new file mode 100644
index 00000000..ae80e5e7
--- /dev/null
+++ b/app/Formatter/ProjectActivityEventFormatter.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Kanboard\Formatter;
+
+use Kanboard\Core\Filter\FormatterInterface;
+
+class ProjectActivityEventFormatter extends BaseFormatter implements FormatterInterface
+{
+ /**
+ * Apply formatter
+ *
+ * @access public
+ * @return array
+ */
+ public function format()
+ {
+ $events = $this->query->findAll();
+
+ foreach ($events as &$event) {
+ $event += $this->unserializeEvent($event['data']);
+ unset($event['data']);
+
+ $event['author'] = $event['author_name'] ?: $event['author_username'];
+ $event['event_title'] = $this->notification->getTitleWithAuthor($event['author'], $event['event_name'], $event);
+ $event['event_content'] = $this->renderEvent($event);
+ }
+
+ return $events;
+ }
+
+ /**
+ * Decode event data, supports unserialize() and json_decode()
+ *
+ * @access protected
+ * @param string $data Serialized data
+ * @return array
+ */
+ protected function unserializeEvent($data)
+ {
+ if ($data{0} === 'a') {
+ return unserialize($data);
+ }
+
+ return json_decode($data, true) ?: array();
+ }
+
+ /**
+ * Get the event html content
+ *
+ * @access protected
+ * @param array $params Event properties
+ * @return string
+ */
+ protected function renderEvent(array $params)
+ {
+ return $this->template->render(
+ 'event/'.str_replace('.', '_', $params['event_name']),
+ $params
+ );
+ }
+}