id = filterId($id); $this->date = DateTime::createFromFormat('Y-m-d', $date); $this->shiaiId = filterId($shiaiId); $this->deadline = DateTime::createFromFormat('Y-m-d', $deadline); $this->remarks = $remarks; } // Getter /** Getter for the id * * @return (int) Id of the event */ public function getId() { return $this->id; } /** Getter for the date * * @return DateTime date of the event */ public function getDate() { return $this->date; } /** Getter for the shiaiId * * @return int>0 id for the shiai in the db */ public function getShiaiId() { return $this->shiaiId; } /** Getter for the deadline * * @return DateTime deadline for the event */ public function getDeadLine() { return $this->deadline; } /** Getter for the linked Shiai * * - lazy loading: only load if not already loaded (overridable by the $forceLoading param) * * @param boolean $forceLoading if true, the loading is enforced even if there already is a shiai linked * * @return Shiai reference to the linked Shiai */ public function shiai($forceLoading = false) { // We want to load if it isn't loaded yet or we want to enforce it. But in either case we need an id to load if ((!isset($this->shiai) || $forceLoading) && isset($this->shiaiId)) { $this->shiai = Shiai::loadFromDb($this->shiaiId); } if ($this->shiai == null){ $this->shiai = Shiai::fromDbArray(json_decode($this->remarks, true)); } return $this->shiai; } public static function loadFromDb(int $id) { $id = filterId($id); $query = 'SELECT * FROM `cwsvjudo`.`wkParticipo_Events` WHERE `id` = :id;'; $params = [':id' => ['value' => $id, 'data_type' => PDO::PARAM_INT]]; $response = dbConnector::query($query, $params); // ids are considered unique. so every other count then 1 is treated as error to prevent unprivileged access if (count($response) != 1) { return null; } return self::fromDbArray($response[0]); } /** Representation of an event as (materializeCss) card * * @return string string with the html code of the event */ public function asHtmlCard() { $shiai = $this->shiai(); return '