Stripe adatok validálása + extra típus beépítése
2 files modified
1 files added
New file |
| | |
| | | <?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']); |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | |
| | | 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); |
| | | file_put_contents(OVERLAY_DIR . 'generated.html', $html_content); |
| | |
| | | <!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> |