aboutsummaryrefslogtreecommitdiff
path: root/app/class/event.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/class/event.php')
-rw-r--r--app/class/event.php133
1 files changed, 133 insertions, 0 deletions
diff --git a/app/class/event.php b/app/class/event.php
new file mode 100644
index 0000000..7661aa3
--- /dev/null
+++ b/app/class/event.php
@@ -0,0 +1,133 @@
+<?php
+
+class Event extends Dbitem
+{
+ protected $id;
+ protected $date;
+ protected $type;
+ protected $user;
+ protected $target;
+ protected $message;
+
+ const EVENT_TYPES = ['message', 'art_add', 'art_edit', 'art_delete', 'media_add', 'media_delete', 'font_add'];
+ 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'];
+ const MESSAGE_MAX_LENGTH = 2**10;
+
+ public function __contruct($datas)
+ {
+ $this->hydrate($datas);
+ }
+
+ public function conform()
+ {
+ $this->user = idclean($this->user);
+ if(in_array($this->type, self::EVENT_ART)) {
+ $this->target = idclean($this->target);
+ }
+ }
+
+ // _____________________ G E T __________________________
+
+ public function id()
+ {
+ return $this->id;
+ }
+
+ public function date($type = 'datetime')
+ {
+ switch ($type) {
+ case 'datetime':
+ return $this->date;
+ break;
+
+ case 'string':
+ return $this->date->format(DateTime::ISO8601);
+ break;
+
+ case 'hrdi':
+ $now = new DateTimeImmutable(null, timezone_open("Europe/Paris"));
+ return hrdi($this->date->diff($now));
+ break;
+
+ }
+ }
+
+ public function type()
+ {
+ return $this->type;
+ }
+
+ public function user()
+ {
+ return $this->user;
+ }
+
+ public function target()
+ {
+ return $this->target;
+ }
+
+ public function message()
+ {
+ return $this->message;
+ }
+
+
+
+ // ________________________ S E T ____________________
+
+ public function setid($id)
+ {
+ if(is_int($id)) {
+ $this->id = $id;
+ }
+ }
+
+ public function setdate($date)
+ {
+ if ($date instanceof DateTimeImmutable) {
+ $this->date = $date;
+ } else {
+ $this->date = DateTimeImmutable::createFromFormat(DateTime::ISO8601, $date, new DateTimeZone('Europe/Paris'));
+ }
+ }
+
+ public function settype($type)
+ {
+ if(in_array($type, self::EVENT_TYPES)) {
+ $this->type = $type;
+ }
+ }
+
+ public function setuser($user)
+ {
+ if(is_string($user) && strlen($user) < Model::MAX_ID_LENGTH) {
+ $this->user = $user;
+ }
+ }
+
+ public function settarget($target)
+ {
+ if(is_string($target) && strlen($target) < Model::MAX_ID_LENGTH) {
+ $this->target = $target;
+ }
+ }
+
+ public function setmessage($message)
+ {
+ if(is_string($message) && strlen($message) < self::MESSAGE_MAX_LENGTH) {
+ $this->message = $message;
+ }
+ }
+
+
+
+
+
+}
+
+
+?> \ No newline at end of file