From de195c2fca2f4b77a54be68fb58cd0ccee10a5b7 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Tue, 15 Jan 2019 03:59:32 +0100 Subject: timeline is ok for messaging --- app/class/modeltimeline.php | 113 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 99 insertions(+), 14 deletions(-) (limited to 'app/class/modeltimeline.php') 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); + } + } -- cgit v1.2.3