From 888906fd2d4b12b1e5fd315092a7c8d0ef47a098 Mon Sep 17 00:00:00 2001 From: Fibinger Ádám <adam.fibinger@wup.hu> Date: Thu, 10 Oct 2019 16:36:12 +0200 Subject: [PATCH] Stripe adatok validálása + extra típus beépítése --- EOG/Models/Stripe.php | 126 +++++++++++++++++++++++++++++++ create.php | 29 +------ templates/overlay-base.twig | 83 +++++++++++--------- 3 files changed, 174 insertions(+), 64 deletions(-) diff --git a/EOG/Models/Stripe.php b/EOG/Models/Stripe.php new file mode 100644 index 0000000..dce29c0 --- /dev/null +++ b/EOG/Models/Stripe.php @@ -0,0 +1,126 @@ +<?php + +namespace EOG\Models; + +class Stripe +{ + const TEAM_BLUE = 'blue'; + const TEAM_ORANGE = 'orange'; + + private $allowedColors = [self::TEAM_BLUE, self::TEAM_ORANGE]; + private $allowedStripeClasses = ['team', 'simple']; + private $allowedOperators = [ + 'alibi', 'amaru', 'ash', 'bandit', 'blackbeard', 'blitz', 'buck', 'capitao', 'castle', + 'caveira', 'clash', 'doc', 'dokkaebi', 'echo', 'ela', 'finka', 'frost', 'fuze', + 'glaz', 'goyo', 'gridlock', 'hibana', 'iq', 'jackal', 'jager', 'kaid', 'kapkan', + 'lesion', 'lion', 'maestro', 'maverick', 'mira', 'montagne', 'mozzie', 'mute', 'nokk', + 'nomad', 'pulse', 'rook', 'sledge', 'smoke', 'tachanka', 'thatcher', 'thermite', 'twitch', + 'valkyrie', 'vigil', 'warden', 'ying', 'zofia']; + protected $state = [ + 'stripe' => [ + 'class' => 'team', + ], + 'cup' => [ + 'number' => '#75', + 'name' => '5on5 Open Cup', + ], + 'team' => [ + 'orange' => + [ + 'name' => 'Narancs Csapat', + 'ban' => [ + 'mira', + 'jackal' + ] + ], + 'blue' => [ + 'name' => 'Kék csapat', + 'ban' => [ + 'rook', + 'blitz' + ] + ] + ] + ]; + + public function setClass(string $class): self + { + if (!in_array($class, $this->allowedStripeClasses)) { + throw new \InvalidArgumentException("Given class " . $class . " not allowed. Allowed classes: " . implode(', ', $this->allowedStripeClasses)); + } + + if ($class === 'simple') { + $this->setSimpleStripe(); + } + + $this->state['stripe']['class'] = $class; + + return $this; + } + + private function setSimpleStripe() + { + unset($this->state['team']); + } + + public function setCup(string $number, string $name) + { + $this->state['cup']['number'] = $number; + $this->state['cup']['name'] = $name; + } + + /** + * @param string $color Csapat szín validáció + * + * Dob egy Exception-t ha nem orange / blue + */ + private function testColor(string $color) + { + if (!in_array($color, $this->allowedColors)) { + throw new \InvalidArgumentException("Given colour " . $team_color . " not allowed. Allowed colours: " . implode(', ', $this->allowedColors)); + } + } + + public function setTeamName(string $team_color = self::TEAM_BLUE, $name) + { + $this->testColor($team_color); + $this->state['team'][$team_color]['name'] = $name; + } + + public function addTeamBan(string $team_color = self::TEAM_BLUE, $operator) + { + $this->testColor($team_color); + if (!in_array($operator, $this->allowedOperators)) { + //FIXME: védő és támadó operátorok külön + throw new \InvalidArgumentException("Given operator not allowed: " . $operator . " Allowed operators: " . implode(', ', $this->allowedOperators)); + } + } + + public function __get($name) + { + if ($this->__isset($name)) { + return $this->state[$name]; + } + + return null; + } + + public function __isset($name) + { + return isset($this->state[$name]); + } + + public function loadJson(string $json) + { + $state = json_decode($json); + + if (!empty($state['stripe']["class"])) { + $this->setClass($state['stripe']["class"]); + } + + if (!empty($state['cup']['name']) && !empty($state['cup']['number'])) { + $this->setCup($state['cup']['number'], $state['cup']['name']); + } + + } +} \ No newline at end of file diff --git a/create.php b/create.php index 40fdd35..58664dd 100644 --- a/create.php +++ b/create.php @@ -3,33 +3,12 @@ define('IS_DEV', true); define('SITE_ROOT', __DIR__); +define('OVERLAY_DIR', dirname(__DIR__) . '/esl-overlay/'); $twig = \EOG\Utils\TwigFactory::getEnvironment(SITE_ROOT); -$variables = [ - 'cup' => [ - 'number' => '#75', - 'name' => '5on5 Open Cup', - ], - 'team' => [ - 'orange' => - [ - 'name' => 'Dompa Esports Community', - 'ban' => [ - 'mira', - 'jackal' - ] - ], - 'blue' => [ - 'name' => 'The Grizz Esports', - 'ban' => [ - 'rook', - 'blitz' - ] - ] - ] -]; +$s = new \EOG\Models\Stripe(); +$html_content = $twig->render('templates/overlay-base.twig', ['stripe' => $s ]); -$html_content = $twig->render('templates/overlay-base.twig', $variables); -file_put_contents('overlay/generated.html', $html_content); \ No newline at end of file +file_put_contents(OVERLAY_DIR . 'generated.html', $html_content); \ No newline at end of file diff --git a/templates/overlay-base.twig b/templates/overlay-base.twig index fc44d75..68083f3 100644 --- a/templates/overlay-base.twig +++ b/templates/overlay-base.twig @@ -1,57 +1,62 @@ <!DOCTYPE html> <html> <head> - <meta charset="UTF-8"> - <link href="https://fonts.googleapis.com/css?family=Oswald&display=swap" rel="stylesheet"> - <link rel="stylesheet" href="/assets/overlay.css"> - <link rel="stylesheet" href="/assets/operators-color.css"> + <meta charset="UTF-8"> + <link href="https://fonts.googleapis.com/css?family=Oswald&display=swap" rel="stylesheet"> + <link rel="stylesheet" href="/assets/overlay.css"> + <link rel="stylesheet" href="/assets/operators-color.css"> </head> <body> {% block stripe %} - <div id="stripe"> - {% block info_left %} - <span class="info left"> + <div id="stripe" class="{{ stripe.stripe.class }}"> + {% block info_left %} + <span class="info left"> <img src="/assets/hun.png" class="flag hun"> <span class="text"> - <em>{{ cup.number }}</em> {{ cup.name }} + <em>{{ stripe.cup.number }}</em> {{ stripe.cup.name }} </span> </span> - {% endblock %} - {% block team_blue %} - <span class="team blue"> - <span class="name">{{ team.blue.name }}</span> - </span> - <span class="ban blue"> - {% for op in team.blue.ban %} - <span class="operator {{ op }}"> + {% endblock %} + {% block team_blue %} + {% if stripe.team.blue %} + <span class="team blue"> + <span class="name">{{ stripe.team.blue.name }}</span> + </span> + <span class="ban blue"> + {% for op in stripe.team.blue.ban %} + <span class="operator {{ op }}"> <span class="prohibit">x</span> </span> - {% endfor %} + {% endfor %} </span> - {% endblock %} - {% block logo %} - <span class="logo"></span> - {% endblock %} + {% endif %} + {% endblock %} + {% block logo %} + <span class="logo"></span> + {% endblock %} - {% block team_orange %} - <span class="team orange"> - <span class="name">{{ team.orange.name }}</span> - </span> - <span class="ban orange"> - {% for op in team.orange.ban %} - <span class="operator {{ op }}"> - <span class="prohibit">x</span> - </span> - {% endfor %} + {% block team_orange %} + {% if stripe.team.orange %} + <span class="team orange"> + <span class="name">{{ stripe.team.orange.name }}</span> + </span> + + <span class="ban orange"> + {% for op in stripe.team.orange.ban %} + <span class="operator {{ op }}"> + <span class="prohibit">x</span> + </span> + {% endfor %} + </span> + {% endif %} + {% endblock %} + + {% block info_right %} + <span class="info right"> + <img class="esl-logo" src="/assets/ESL_Logo.png"/> </span> - {% endblock %} - - {% block info_right %} - <span class="info right"> - <img class="esl-logo" src="/assets/ESL_Logo.png"/> - </span> - {% endblock %} - </div> + {% endblock %} + </div> {% endblock %} </body> </html> -- Gitblit v1.8.0