/** * @expectedException \bmtmgr\utils\DuplicateEntryException */ public function testSeasonDuplicates() { Model::connect(); $s = Season::create('dup', false, 'http://example.org/foo3'); $s->save(); $s2 = Season::create('dup', true, 'http://example.org/foo4'); $s2->save(); }
public function testEntryCreation() { Model::connect(); $club1 = User::create('entry_test1', 'entry_test1', '*****@*****.**', []); $club1->save(); $club2 = User::create('entry_test2', 'entry_test2', '*****@*****.**', []); $club2->save(); $s = Season::create('foobar', true, 'http://base/url'); $this->assertEquals($s->id, null); $this->assertEquals($s->_is_new, true); $this->assertEquals($s->name, 'foobar'); $this->assertEquals($s->visible, true); $this->assertEquals($s->baseurl, 'http://base/url'); $s->save(); $id = $s->id; $this->assertNotEquals($s->id, null); $this->assertEquals($s->_is_new, false); $this->assertEquals($s->name, 'foobar'); $this->assertEquals($s->visible, true); $s->save(); $this->assertEquals($s->id, $id); $this->assertEquals($s->_is_new, false); }
utils\require_post_params(['tournament_url']); if (!\preg_match('#^(https?://.*?/)[a-z]+(\\.aspx.*)$#', $_POST['tournament_url'], $m)) { render_ajax_error('Entschuldigung, die turnier-URL "' . $_POST['tournament_url'] . '" kann leider nicht bearbeitet werden.'); exit; } $base_url = $m[1]; $clubs_url = $base_url . 'clubs' . $m[2]; $clubs_content = \file_get_contents($clubs_url); if (!preg_match('#<div id="divTournamentHeader" class="header">\\s*<div class="title"><h3>(.*)</h3>#', $clubs_content, $m)) { throw new \Exception('Cannot find season name'); } $name = \html_entity_decode($m[1], ENT_QUOTES | ENT_HTML5, 'utf-8'); Model::beginTransaction(); $season = Season::fetch_optional('WHERE name=?', [$name]); if (!$season) { $season = Season::create($name, false, $_POST['tournament_url']); $season->save(); } $players = []; if (!\preg_match_all('#<td><a href="club\\.aspx(?P<club_path>\\?id=[^"]+)&club=(?P<club_num>[0-9]+)">(?P<name>[^<]+)</a></td><td class="right">(?P<id>[0-9-]+)</td>#', $clubs_content, $matches, PREG_SET_ORDER)) { throw new \Exception('Cannot find any club entries!'); } foreach ($matches as $m) { $club = User::by_id_optional($m['id']); if (!$club) { $club = new User($m['id'], $m['name'], null, ['register']); $club->save(); } $players_url = $base_url . 'clubplayers.aspx' . $m['club_path'] . '&cid=' . $m['club_num']; $players_page = \file_get_contents($players_url); $genders = ['Männer' => 'm', 'Frauen' => 'f'];
if ($ret && mysql_num_rows($ret) > 0) { $row = mysql_fetch_array($ret); if ($row) { $earliest->enctime($row[0]); } } $ret = mysql_query("select matchdate from lgmatch order by matchdate desc limit 1"); if ($ret && mysql_num_rows($ret) > 0) { $row = mysql_fetch_array($ret); if ($row) { $latest->enctime($row[0]); } } $Seas->Startdate = $earliest; $Seas->Enddate = $latest; $Seas->create(); // Create the historic teams from the current ones $Full_teams = list_all_teams(); foreach ($Full_teams as $team) { $team->fetchdets(); $hteam = new Histteam($Seas); $hteam->Name = $team->Name; $hteam->Description = $team->Description; $hteam->Division = $team->Division; $hteam->Playing = $team->Playing; $hteam->Sortrank = $team->get_scores($Pars); // Also sets Wonm etc $hteam->Playedm = $team->Playedm; $hteam->Wonm = $team->Wonm; $hteam->Drawnm = $team->Drawnm; $hteam->Lostm = $team->Lostm;
if ($ret && mysql_num_rows($ret) > 0) { $row = mysql_fetch_array($ret); if ($row) { $earliest->enctime($row[0]); } } $ret = mysql_query("select matchdate from game order by matchdate desc limit 1"); if ($ret && mysql_num_rows($ret) > 0) { $row = mysql_fetch_array($ret); if ($row) { $latest->enctime($row[0]); } } $Seas->Startdate = $earliest; $Seas->Enddate = $latest; $Seasind = $Seas->create(); // OK so all we have to do is convert individual league games to historic ones // by turning off "current" and setting the season number $ret = mysql_query("update game set current=0,seasind={$Seasind} where current!=0 and league='I'"); if (!$ret) { $mess = mysql_error(); include 'php/dataerror.php'; exit(0); } $Ngames = mysql_affected_rows(); // I think that just about does it. Create a news item unless we didn't do anything. if ($Ngames > 0) { $nws = new News('ADMINS', "Individual League season now closed and archived as {$Sname}.", true, "ileague.php"); $nws->addnews(); } ?>
<?php namespace bmtmgr; require_once dirname(__DIR__) . '/src/common.php'; utils\csrf_protect(); $u = user\check_current(); $u->require_perm('admin'); utils\require_post_params(['name']); try { $season = Season::create($_POST['name'], false); $season->save(); } catch (utils\DuplicateEntryException $e) { render_ajax_error('Die Liga "' . $_POST['name'] . '" existiert bereits'); exit; } render_ajax('season/' . $season->id . '/', ['season' => $season]);
/** * @return void */ public function show() { if (!Team::isSuperAdmin()) { HTMLResponse::exitWithRoute('/'); } if (!($csrf = $_SESSION['csrf'])) { $_SESSION['csrf'] = $csrf = rand(1, 1000000); } $postCsrf = HTMLResponse::fromPOST('csrf', ''); if ($postCsrf == $csrf) { $newSeason = Season::create(); $newSeason->ispublic = false; $newSeason->isdefault = false; $newSeason->save(); $newSeason->name = "Temporada {$newSeason->seasonid}"; $newSeason->save(); } ?> <table style="width: 512px; margin: 0 auto"> <thead> <tr> <td>#</td> <td>Nombre</td> <td>Opciones</td> <td>Acciones</td> </tr> </thead> <? foreach(Season::find('1=1') as $season) { ?> <tr> <td><?=$season->seasonid?></td> <td><?=htmlentities($season->name)?></td> <td> <?= $season->ispublic ? 'Pública' : 'Oculta' ?> <?= $season->isdefault ? '(por defecto)' : '' ?> </td> <td style="text-align: left"> <a href="/admin/temporadas/<?=$season->seasonid?>/"> Editar temporada </a><br> <a href="/admin/temporadas/<?=$season->seasonid?>/jornadas/"> Editar jornadas </a><br> <a href="/admin/temporadas/<?=$season->seasonid?>/eventos/"> Editar eventos </a> </td> </tr> <? } ?> </table><br> <form action="<?=HTMLResponse::getRoute()?>" method="post"> <input type="hidden" name="csrf" value="<?=$csrf?>"> <button type="submit">Añadir nueva temporada</button> </form><br> <? }