id = (int) $id; $this->date = DateTime::createFromFormat('Y-m-d', $date); $this->shiaiId = (($shiaiId != null) ? ((int)$shiaiId) : (null)); $this->deadline = DateTime::createFromFormat('Y-m-d', $deadline); $this->remarks = $remarks; $this->shiai = $shiai; } public static function loadFromDb(int $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 Event::fromDbArray($response[0]); } /** Representation of an event as (materializeCss) card * * @return string string with the html code of the event */ public function asHtmlCard() { return '
' . '
' . '' . $this->shiai->getHtmlName() . '' . '
' . '
Datum
' . '
' . $this->date->format('Y-m-d') . '
' . '
Meldefrist
' . '
' . $this->deadline->format('Y-m-d') . '
' . '
Altersklassen
' . '
' . $this->shiai->getAgeClasses() . '
' . '
' . '
'; } public function htmlTableRow() { return '' . '' . $this->date->format('Y-m-d') . '' . '' . $this->shiai->getHtmlName() . '' . '' . $this->shiai->getAgeClasses() . '' . 'zoom_in' . ''; } public function htmlModal() { $modal = ''; echo($modal); } public function getHtmlStarterList() { $listOfStarter = $this->getStarter(); if (!isset($listOfStarter) || count($listOfStarter) == 0) { return ''; } $starterList .= 'Bereits eingetragen:
'; foreach ($listOfStarter as $s) { $u = $s->getUser(); $starterList .= '
' . $u->getName() . ', ' . $u->getFirstname() . $this->getHtmlRemoveStarterForm($s->getEventId(), $s->getUserId()) . '
'; } $starterList .= '
'; return $starterList; } /** Returns the currents users starter to this event * * @todo docu */ private function getStarter() { $userId = $_SESSION['user']['userId'] ?? null; $query = 'SELECT `wkParticipo_Starter`.`id` as `starterId` FROM `wkParticipo_Starter` ' . 'LEFT JOIN `vormundschaft` ON `vormundschaft`.`kidId` = `wkParticipo_Starter`.`userId` ' . ' WHERE `wkParticipo_Starter`.`eventId` = :eventId AND `vormundschaft`.`userId` = :userId;'; $params = [ ':eventId' => ['value' => $this->id, 'data_type' => PDO::PARAM_INT], ':userId' => ['value' => $userId, 'data_type' => PDO::PARAM_INT] ]; $response = dbConnector::query($query, $params); $starter = []; foreach ($response as $r) { $starter[] = Starter::loadFromDb($r['starterId']); } return $starter; } public static function fromArray($member) { $shiai = json_decode($member['bemerkungen'], true); return new event( $member['id'] ?? null, $member['date'] ?? null, $member['wkId'] ?? null, $member['meldefrist'] ?? null, $member['bemerkungen'] ?? null, shiai::fromArray(($shiai != null) ? $shiai : $member) ); } /// Einen Starter per userId mit typeId zu einem Event per eventId hinzufügen /// Es erfolgt keine Überprüfung der Meldeberechtigung! public static function addStarter($dbConnection, $starter) { $retMessage = []; $query = 'INSERT INTO `wkParticipo_Starter` (eventId, userId, type) values (:eventId, :userId, :typeId);'; $params = [ ':eventId' => ['value' => $starter->getEventId(), 'data_type' => PDO::PARAM_INT], ':userId' => ['value' => $starter->getUserId(), 'data_type' => PDO::PARAM_INT], ':typeId' => ['value' => $starter->getTypeId(), 'data_type' => PDO::PARAM_INT] ]; return dbConnector::query($query, $params); } // @todo docu public static function getHtmlRemoveStarterForm($eventId, $userId, $class = null) { $form = '
' . '' . '' . '' . '' . '
'; return $form; } public function getHtmlAddStarterForm($user) { $key = isset($_SESSION['apiKey']) ? $_SESSION['apiKey'] : null; $form = '
' . '' . '' . '' . '
' . '' . '' . '
' . '' . '
'; return $form; } } // end class event