aboutsummaryrefslogtreecommitdiff
path: root/app/class/modeltimeline.php
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2019-01-15 03:59:32 +0100
committervincent-peugnet <v.peugnet@free.fr>2019-01-15 03:59:32 +0100
commitde195c2fca2f4b77a54be68fb58cd0ccee10a5b7 (patch)
treea0717b936d4b1474cc766b85578e42d94ad7e512 /app/class/modeltimeline.php
parent8130427ec508f1d66553b52052c840c311081061 (diff)
downloadwcms-de195c2fca2f4b77a54be68fb58cd0ccee10a5b7.tar.gz
wcms-de195c2fca2f4b77a54be68fb58cd0ccee10a5b7.zip
timeline is ok for messaging
Diffstat (limited to 'app/class/modeltimeline.php')
-rw-r--r--app/class/modeltimeline.php113
1 files changed, 99 insertions, 14 deletions
diff --git a/app/class/modeltimeline.php b/app/class/modeltimeline.php
index b914605..b575dda 100644
--- a/app/class/modeltimeline.php
+++ b/app/class/modeltimeline.php
@@ -2,30 +2,67 @@
class Modeltimeline extends Modeldb
{
+ const EVENT_BASE = ['message'];
+ const EVENT_ART = ['art_add', 'art_edit', 'art_delete'];
+ const EVENT_MEDIA = ['media_add', 'media_delete'];
+ const EVENT_FONT = ['font_add', 'font_delete'];
public function __construct()
{
parent::__construct();
$this->storeinit('timeline');
- }
-
- /**
- * Retrun a list of Event objects
- *
- * @return array array of Event where the key is the Event id.
- */
- public function getlister() : array
+ }
+
+ public function get(int $id)
+ {
+ $eventdata = $this->repo->findById($id);
+ if ($eventdata !== false) {
+ return new Event($eventdata);
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Retrun a list of Event objects
+ *
+ * @return array array of Event where the key is the Event id.
+ */
+ public function getlister() : array
{
$eventlist = [];
$datalist = $this->repo->findAll();
foreach ($datalist as $eventdata) {
$event = new Event($eventdata);
- $eventlist[$event->id()] = $event;
+ $id = intval($event->id());
+ $eventlist[$id] = $event;
}
return $eventlist;
}
- public function add(Event $event)
+
+ public function getlisterid(array $idlist = []) : array
+ {
+ $eventdatalist = $this->repo->query()
+ ->where('__id', 'IN', $idlist)
+ ->execute();
+
+ $eventlist = [];
+ foreach ($eventdatalist as $id => $eventdata) {
+ $eventlist[$id] = new Event($eventdata);
+ }
+ return $eventlist;
+ }
+
+
+ /**
+ * Store event
+ *
+ * @param Event The event to be stored in the repositery
+ *
+ * @return bool retrun true if it works, false if it fails
+ */
+ public function add(Event $event) : bool
{
$eventdata = new \JamesMoss\Flywheel\Document($event->dry());
$eventdata->setId($event->id());
@@ -33,20 +70,68 @@ class Modeltimeline extends Modeldb
return $result;
}
- public function getlastfreeid()
+ /**
+ * Return last free id
+ *
+ * @return int id
+ */
+ public function getlastfreeid() : int
{
$idlist = $this->list();
- if(!empty($idlist)) {
+ if (!empty($idlist)) {
$id = max($idlist);
- $id ++;
+ $id++;
} else {
$id = 1;
}
-
return $id;
}
+ public function group(array $events)
+ {
+ $id = 0;
+ $subid = 0;
+ $lastuser = null;
+ foreach ($events as $event) {
+ if($event->user() !== $lastuser) {
+ $subid = 0;
+ $id ++;
+ $groupedevents[$id]['user'] = $event->user();
+ } else {
+ $subid ++;
+ }
+ $groupedevents[$id][$subid] = $event;
+ $lastuser = $event->user();
+ }
+ return $groupedevents;
+ }
+
+ public function showlast(array $types, int $qty = 25, int $offset = 0)
+ {
+ $types = array_intersect($types, $this->types());
+
+ $eventdatalist = $this->repo->query()
+ ->where('type', 'IN', $types)
+ ->orderBy('date DESC')
+ ->limit($qty, $offset)
+ ->execute();
+
+ $eventlist = [];
+ foreach ($eventdatalist as $id => $eventdata) {
+ $eventlist[] = new Event($eventdata);
+ }
+
+ $eventlist = array_reverse($eventlist);
+ return $eventlist;
+ }
+
+
+ public function types()
+ {
+ return array_merge(self::EVENT_ART, self::EVENT_BASE, self::EVENT_MEDIA, self::EVENT_MEDIA);
+ }
+
}