2019-08-21 20:56:46 +00:00
< ? php
include 'config.php' ;
$tournament_name = htmlspecialchars ( $_GET [ " nom " ]);
$response = $DB -> prepare ( " SELECT * FROM `tournaments` WHERE `name` = ? AND `year` = $YEAR ; " );
$response -> execute ([ $tournament_name ]);
$data = $response -> fetch ();
2019-09-02 17:52:13 +00:00
$orgas_req = $DB -> query ( " SELECT `users`.`id` AS `id`, `surname`, `first_name` FROM `users` JOIN `organizers` ON `users`.`id` = `organizer` WHERE `tournament` = " . $data [ " id " ] . " ; " );
2019-08-26 18:14:29 +00:00
$orgas = [];
while (( $orga_data = $orgas_req -> fetch ()) !== false ) {
2019-09-02 17:52:13 +00:00
$orgas [] = [ $orga_data [ " id " ], $orga_data [ " first_name " ] . " " . $orga_data [ " surname " ]];
2019-08-26 18:14:29 +00:00
}
if ( isset ( $_POST [ " edit_tournament " ])) {
$error_message = updateTournament ();
}
2019-08-21 20:56:46 +00:00
$teams_response = $DB -> query ( " SELECT `id`, `name`, `trigram`, `inscription_date`, `validation_status` FROM `teams` WHERE `tournament` = " . $data [ " id " ] . " AND `year` = $YEAR ; " );
2019-08-26 18:14:29 +00:00
$orgas_response = $DB -> query ( " SELECT `id`, `surname`, `first_name` FROM `users` WHERE (`role` = 'ORGANIZER' OR `role` = 'ADMIN') AND `year` = ' $YEAR '; " );
function updateTournament () {
global $DB , $URL_BASE , $YEAR , $MAIL_ADDRESS , $data ;
$tournament_id = $data [ " id " ];
$name = htmlspecialchars ( $_POST [ " name " ]);
$result = $DB -> query ( " SELECT `id` FROM `tournaments` WHERE `name` = ' " . $name . " ' AND `id` != $tournament_id AND `year` = ' $YEAR '; " );
if ( $result -> fetch ())
return " Un tournoi existe déjà avec ce nom. " ;
if ( ! isset ( $_POST [ " organizer " ]) || sizeof ( $_POST [ " organizer " ]) == 0 )
return " Aucun organisateur n'a été choisi. " ;
if ( $_SESSION [ " role " ] == " ADMIN " ) {
$organizers = $_POST [ " organizer " ];
$orga_mails = [];
foreach ( $organizers as $orga ) {
$result = $DB -> query ( " SELECT `role`, `email` FROM `users` WHERE `id` = ' " . $orga . " ' AND `year` = ' $YEAR '; " );
$data = $result -> fetch ();
if ( $data === FALSE )
return " L'organisateur spécifié n'existe pas. " ;
if ( $data [ " role " ] != " ORGANIZER " && $data [ " role " ] != " ADMIN " )
return " L'organisateur indiqué ne peut pas organiser de tournoi. " ;
$orga_mails [] = $data [ " email " ];
}
}
try {
$size = intval ( htmlspecialchars ( $_POST [ " size " ]));
}
catch ( Exception $ex ) {
return " Le nombre d'équipes indiqué n'est pas un entier valide. " ;
}
if ( $size < 3 || $size > 12 )
return " Un tournoi doit comporter entre 3 et 12 équipes. " ;
$place = htmlspecialchars ( $_POST [ " place " ]);
try {
$price = intval ( htmlspecialchars ( $_POST [ " price " ]));
}
catch ( Throwable $t ) {
return " Le tarif pour les participants n'est pas un nombre valide. " ;
}
if ( $price < 0 )
return " Le TFJM² ne va pas payer les élèves pour venir. " ;
if ( $price > 50 )
return " Soyons raisonnable sur le prix. " ;
$date_start = htmlspecialchars ( $_POST [ " date_start " ]);
$date_start_parsed = date_parse_from_format ( " yyyy-mm-dd " , $date_start );
$date_end = htmlspecialchars ( $_POST [ " date_end " ]);
$date_end_parsed = date_parse_from_format ( " yyyy-mm-dd " , $date_end );
$date_inscription = htmlspecialchars ( $_POST [ " date_inscription " ]);
$time_inscription = htmlspecialchars ( $_POST [ " time_inscription " ]);
$date_inscription_parsed = date_parse_from_format ( " yyyy-mm-dd " , $date_inscription . ' ' . $time_inscription );
$date_solutions = htmlspecialchars ( $_POST [ " date_solutions " ]);
$time_solutions = htmlspecialchars ( $_POST [ " time_solutions " ]);
$date_solutions_parsed = date_parse_from_format ( " yyyy-mm-dd " , $date_solutions . ' ' . $time_solutions );
$date_syntheses = htmlspecialchars ( $_POST [ " date_syntheses " ]);
$time_syntheses = htmlspecialchars ( $_POST [ " time_syntheses " ]);
$date_syntheses_parsed = date_parse_from_format ( " yyyy-mm-dd " , $date_syntheses . ' ' . $time_syntheses );
if ( ! $date_start_parsed || ! $date_end_parsed || ! $date_inscription_parsed || ! $date_solutions_parsed || ! $date_syntheses_parsed )
return " Une date est mal formée. " ;
$description = htmlspecialchars ( $_POST [ " description " ]);
$req = $DB -> prepare ( " UPDATE `tournaments` SET `name` = ?, `size` = ?, `place` = ?, `price` = ?, `description` = ?,
`date_start` = ? , `date_end` = ? , `date_inscription` = ? , `date_solutions` = ? , `date_syntheses` = ?
WHERE `id` = $tournament_id ; " );
$req -> execute ([ $name , $size , $place , $price , $description , $date_start , $date_end ,
" $date_inscription $time_inscription " , " $date_solutions $time_solutions " , " $date_syntheses $time_syntheses " ]);
if ( $_SESSION [ " role " ] == " ADMIN " ) {
$DB -> exec ( " DELETE FROM `organizers` WHERE `tournament` = $tournament_id ; " );
foreach ( $organizers as $orga ) {
$req = $DB -> prepare ( " INSERT INTO `organizers`(`organizer`, `tournament`) VALUES(?, ?); " );
$req -> execute ([ $orga , $tournament_id ]);
}
}
header ( " Location: $URL_BASE /tournoi/ " . $name );
exit ();
}
2019-08-21 20:56:46 +00:00
?>
< ? php include " header.php " ?>
< h2 > Tournoi de < ? php echo $data [ " name " ] ?> </h2>
2019-08-26 18:14:29 +00:00
< strong > Organisateur < ? = sizeof ( $orgas ) >= 2 ? 's' : '' ?> :</strong>
< ? php
$s = " " ;
2019-09-02 17:52:13 +00:00
foreach ( $orgas as $orga ) {
if ( $_SESSION [ " role " ] == " ORGANIZER " || $_SESSION [ " role " ] == " ADMIN " )
$s .= " <a href= \" $URL_BASE /informations/ $orga[0] / $orga[1] \" > $orga[1] </a> " ;
else
$s .= $orga [ 1 ];
$s .= " , " ;
}
2019-08-26 18:14:29 +00:00
echo substr ( $s , 0 , - 2 );
?>
< br />
2019-08-21 20:56:46 +00:00
< strong > Nombre d ' équipes maximal :</ strong > < ? php echo $data [ " size " ] ?> <br />
< strong > Lieu :</ strong > < ? php echo $data [ " place " ] ?> <br />
< strong > Prix par partipant :</ strong > < ? php echo $data [ " price " ] == 0 ? " Gratuit " : $data [ " price " ] . " € " ?> <br />
< strong > Dates :</ strong > Du < ? php echo echo_date ( $data [ " date_start " ]) ?> au <?php echo echo_date($data["date_end"]) ?><br />
< strong > Clôture des inscriptions :</ strong > < ? php echo echo_date ( $data [ " date_inscription " ], true ) ?> <br />
< strong > Date limite d ' envoi des solutions :</ strong > < ? php echo echo_date ( $data [ " date_solutions " ], true ) ?> <br />
< strong > Date limite d ' envoi des notes de synthèse :</ strong > < ? php echo echo_date ( $data [ " date_syntheses " ], true ) ?> <br />
2019-08-26 18:14:29 +00:00
< strong > Description :</ strong > < ? php echo $data [ " description " ] ?> <br />
< ? php if ( ! isset ( $_GET [ " modifier " ])) { ?>
< a href = " <?= $URL_BASE ?>/tournoi/<?= $data["name"] ?>/modifier " > Éditer le tournoi </ a >
< hr />
2019-08-21 20:56:46 +00:00
< h2 > Équipes inscrites à ce tournoi :</ h2 >
< table style = " border: 1px solid black; width: 100%; " >
< thead >
< tr >
< th style = " border: 1px solid black; text-align: center " >
Équipe
</ th >
< th style = " border: 1px solid black; text-align: center " >
Trigramme
</ th >
< th style = " border: 1px solid black; text-align: center " >
Date d ' inscription
</ th >
< th style = " border: 1px solid black; text-align: center " >
État de validation de l ' inscription
</ th >
</ tr >
</ thead >
< tbody >
2019-08-26 18:14:29 +00:00
< ? php
while (( $team_data = $teams_response -> fetch ()) != false ) {
?>
2019-08-21 20:56:46 +00:00
< tr >
< td style = " border: 1px solid black; text-align: center " >
2019-08-26 18:14:29 +00:00
< ? php
if ( isset ( $_SESSION [ " role " ]) && ( $_SESSION [ " role " ] == " ADMIN " || ( $_SESSION [ " role " ] == " ORGANIZER " && $data [ " organizer " ] == $_SESSION [ " user_id " ])))
echo " <a href= \" $URL_BASE /equipe/ " . $team_data [ " trigram " ] . " \" > " . $team_data [ " name " ] . " </a> " ;
else
echo $team_data [ " name " ];
?>
2019-08-21 20:56:46 +00:00
</ td >
< td style = " border: 1px solid black; text-align: center " >< ? php echo $team_data [ " trigram " ] ?> </td>
< td style = " border: 1px solid black; text-align: center " >< ? php echo echo_date ( $team_data [ " inscription_date " ]) ?> </td>
< td style = " border: 1px solid black; text-align: center " >
2019-08-26 18:14:29 +00:00
< ? php
switch ( $team_data [ " validation_status " ]) {
case " NOT_READY " :
echo " Inscription non terminée " ;
break ;
case " WAITING " :
echo " En attente de validation " ;
break ;
case " VALIDATED " :
echo " Inscription validée " ;
break ;
default :
echo " Statut inconnu " ;
break ;
}
?>
2019-08-21 20:56:46 +00:00
</ td >
</ tr >
2019-08-26 18:14:29 +00:00
< ? php
}
?>
2019-08-21 20:56:46 +00:00
</ tbody >
< tfoot >
< tr >
< th style = " border: 1px solid black; text-align: center " >
Équipe
</ th >
< th style = " border: 1px solid black; text-align: center " >
Trigramme
</ th >
< th style = " border: 1px solid black; text-align: center " >
Date d ' inscription
</ th >
< th style = " border: 1px solid black; text-align: center " >
État de validation de l ' inscription
</ th >
</ tr >
</ tfoot >
</ table >
2019-08-26 18:14:29 +00:00
< ? php
}
else {
?>
< form method = " POST " >
< input type = " hidden " name = " submitted " value = " true " />
< table style = " width: 100%; " >
< tbody >
< tr >
< td style = " width: 30%; " >
< label for = " name " > Nom :</ label >
</ td >
< td style = " width: 70%; " >
< input style = " width: 100%; " type = " text " id = " name " name = " name " value = " <?= $data["name"] ?> " required />
</ td >
</ tr >
< ? php if ( $_SESSION [ " role " ] == " ADMIN " ) { ?>
< tr >
< td >
< label for = " organizer " > Organisateur :</ label >
</ td >
< td >
< select style = " width: 100%; " id = " organizer " name = " organizer[] " multiple size = " 4 " required >
< ? php
while (( $orga_data = $orgas_response -> fetch ()) !== FALSE ) {
echo " <option value= \" " . $orga_data [ " id " ] . " \" " . ( in_array ( $orga_data [ " first_name " ] . " " . $orga_data [ " surname " ], $orgas ) ? " selected " : " " )
. " > " . $orga_data [ " first_name " ] . " " . $orga_data [ " surname " ] . " </option> \n " ;
}
?>
</ select >
</ td >
</ tr >
< ? php } ?>
< tr >
< td >
< label for = " size " > Nombre d ' équipes :</ label >
</ td >
< td >
< input style = " width: 100%; " type = " number " id = " size " name = " size " min = " 3 " max = " 12 " value = " <?= $data["size"] ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " place " > Lieu :</ label >
</ td >
< td >
< input style = " width: 100%; " type = " text " id = " place " name = " place " value = " <?= $data["place"] ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " price " > Prix par participant </ label >
</ td >
< td >
< input style = " width: 100%; " type = " number " id = " price " name = " price " min = " 0 " max = " 21 " value = " <?= $data["price"] ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " date_start " > Dates :</ label >
</ td >
< td >
Du < input style = " width: 45%; " type = " date " id = " date_start " name = " date_start " value = " <?= $data["date_start"] ?> " required />
au < input style = " width: 45%; " type = " date " id = " date_end " name = " date_end " value = " <?= $data["date_end"] ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " date_inscription " > Date limite d ' inscription :</ label >
</ td >
< td >
< input style = " width: 49%; " type = " date " id = " date_inscription " name = " date_inscription " value = " <?= substr( $data["date_inscription"] , 0, 10) ?> " required />
< input style = " width: 49%; " type = " time " id = " time_inscription " name = " time_inscription " value = " <?= substr( $data["date_inscription"] , 11) ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " date_solutions " > Date limite pour rendre les solutions :</ label >
</ td >
< td >
< input style = " width: 49%; " type = " date " id = " date_solutions " name = " date_solutions " value = " <?= substr( $data["date_solutions"] , 0, 10) ?> " required />
< input style = " width: 49%; " type = " time " id = " time_solutions " name = " time_solutions " value = " <?= substr( $data["date_solutions"] ,11) ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " date_syntheses " > Date limite pour rendre les notes de synthèse :</ label >
</ td >
< td >
< input style = " width: 100%; " type = " date " id = " date_syntheses " name = " date_syntheses " value = " <?= substr( $data["date_syntheses"] , 0, 10) ?> " required />
< input style = " width: 100%; " type = " time " id = " time_syntheses " name = " time_syntheses " value = " <?= substr( $data["date_syntheses"] , 11) ?> " required />
</ td >
</ tr >
< tr >
< td >
< label for = " description " > Description :</ label >
</ td >
< td >
< textarea style = " width: 100%; " name = " description " id = " description " required >< ? = $data [ " description " ] ?> </textarea>
</ td >
</ tr >
< tr >
< td colspan = " 2 " >
< input style = " width: 100%; " type = " submit " name = " edit_tournament " value = " Modifier le tournoi " />
</ td >
</ tr >
</ tbody >
</ table >
</ form >
< ? php
}
?>
2019-08-21 20:56:46 +00:00
< ? php include " footer.php " ?>