2019-09-06 11:48:50 +00:00
< ? php
if ( isset ( $_POST [ " leave_team " ])) {
quitTeam ();
2019-09-06 23:33:05 +00:00
exit ();
2019-09-06 11:48:50 +00:00
}
2019-09-07 23:35:05 +00:00
$tournaments = Tournament :: getAllTournaments ( false , true );
2019-09-06 11:48:50 +00:00
if ( isset ( $_POST [ " send_document " ])) {
$error_message = sendDocument ();
}
if ( isset ( $_POST [ " request_validation " ])) {
if ( ! checkCanValidate ())
$error_message = " Votre équipe ne peut pas demander la validation : il manque soit des participants, soit des documents. " ;
2019-09-06 23:33:05 +00:00
else
$_SESSION [ " team " ] -> setValidationStatus ( ValidationStatus :: WAITING );
2019-09-06 11:48:50 +00:00
}
2019-09-06 23:33:05 +00:00
if ( isset ( $_SESSION [ " user_id " ]) && isset ( $_SESSION [ " team " ]) && $_SESSION [ " team " ] !== null ) {
2019-09-07 23:35:05 +00:00
/**
* @ var User $user
* @ var Team $team
*/
$user = $_SESSION [ " user " ];
2019-09-06 23:33:05 +00:00
$team = $_SESSION [ " team " ];
$tournament = Tournament :: fromId ( $team -> getTournamentId ());
2019-09-07 23:35:05 +00:00
$documents = $user -> getAllDocuments ( $team -> getTournamentId ());
if ( $team -> isSelectedForFinal ())
$documents_final = $user -> getAllDocuments ( $FINAL -> getId ());
2019-09-06 11:48:50 +00:00
}
else
2019-09-07 11:42:36 +00:00
require_once " server_files/403.php " ;
2019-09-06 11:48:50 +00:00
if ( isset ( $_POST [ " team_edit " ])) {
$error_message = updateTeam ();
}
function sendDocument ()
{
2019-09-07 23:35:05 +00:00
global $LOCAL_PATH , $DB , $FINAL ;
2019-09-06 11:48:50 +00:00
$type = strtoupper ( htmlspecialchars ( $_POST [ " type " ]));
if ( ! isset ( $type ) || ( $type != " PARENTAL_CONSENT " && $type != " PHOTO_CONSENT " && $type != " SANITARY_PLUG " ))
return " Le type de document est invalide. Merci de ne pas formuler vos propres requêtes. " ;
$file = $_FILES [ " document " ];
if ( $file [ " size " ] > 5000000 || $file [ " error " ])
return " Une erreur est survenue. Merci de vérifier que le fichier pèse moins que 5 Mo. " ;
if ( finfo_file ( finfo_open ( FILEINFO_MIME_TYPE ), $file [ " tmp_name " ]) != 'application/pdf' )
return " Le fichier doit être au format PDF. " ;
if ( ! is_dir ( " $LOCAL_PATH /files " ) && ! mkdir ( " $LOCAL_PATH /files " ))
return " Les droits sont insuffisants. Veuillez contacter l'administrateur du serveur. " ;
2019-09-08 22:41:52 +00:00
do
$id = genRandomPhrase ( 64 );
while ( file_exists ( " $LOCAL_PATH /files/ $id " ));
2019-09-06 11:48:50 +00:00
if ( ! rename ( $file [ " tmp_name " ], " $LOCAL_PATH /files/ $id " ))
return " Une erreur est survenue lors de l'envoi du fichier. " ;
$req = $DB -> prepare ( " INSERT INTO `documents`(`file_id`, `user`, `team`, `tournament`, `type`)
VALUES ( ? , ? , ? , ? , ? ); " );
2019-09-07 23:35:05 +00:00
$req -> execute ([ $id , $_SESSION [ " user_id " ], $_SESSION [ " team " ] -> getId (), $_SESSION [ " team " ] -> isSelectedForFinal () ? $FINAL -> getId () : $_SESSION [ " team " ] -> getTournamentId (), $type ]);
2019-09-06 11:48:50 +00:00
return false ;
}
function updateTeam ()
{
2019-09-06 23:33:05 +00:00
global $DB , $YEAR , $URL_BASE , $team ;
2019-09-06 11:48:50 +00:00
$name = htmlspecialchars ( $_POST [ " name " ]);
if ( ! isset ( $name ) || $name == " " )
return " Vous devez spécifier un nom d'équipe. " ;
2019-09-06 23:33:05 +00:00
$result = $DB -> query ( " SELECT `id` FROM `teams` WHERE `name` = ' " . $name . " ' AND `id` != " . $team -> getId () . " AND `year` = ' $YEAR '; " );
2019-09-06 11:48:50 +00:00
if ( $result -> fetch ())
2019-09-06 23:33:05 +00:00
return " Une équipe existe déjà avec ce nom. " ;
2019-09-06 11:48:50 +00:00
$trigram = strtoupper ( htmlspecialchars ( $_POST [ " trigram " ]));
if ( ! preg_match ( " #^[A-Z][A-Z][A-Z] $ # " , $trigram ))
return " Le trigramme entré n'est pas valide. " ;
2019-09-06 23:33:05 +00:00
$result = $DB -> query ( " SELECT `id` FROM `teams` WHERE `trigram` = ' " . $trigram . " ' AND `id` != ' " . $team -> getId () . " ' AND `year` = ' $YEAR '; " );
2019-09-06 11:48:50 +00:00
if ( $result -> fetch ())
return " Une équipe a déjà choisi ce trigramme. " ;
$tournament_id = intval ( htmlspecialchars ( $_POST [ " tournament " ]));
2019-09-06 23:33:05 +00:00
$tournament = Tournament :: fromId ( $tournament_id );
if ( $tournament === null )
2019-09-06 11:48:50 +00:00
return " Le tournoi spécifié n'existe pas. " ;
2019-09-06 23:33:05 +00:00
$team -> setName ( $name );
$team -> setTrigram ( $trigram );
$team -> setTournamentId ( $tournament_id );
$_SESSION [ " tournament " ] = $tournament ;
2019-09-06 11:48:50 +00:00
header ( " Location: $URL_BASE /mon_equipe " );
return false ;
}
function checkCanValidate ()
{
2019-09-06 23:33:05 +00:00
global $DB , $team , $tournament , $YEAR ;
$can_validate = $team -> getValidationStatus () == ValidationStatus :: NOT_READY ;
$can_validate &= $team -> getEncadrants ()[ 0 ] != NULL ;
$can_validate &= $team -> getParticipants ()[ 3 ] != NULL ;
2019-09-06 11:48:50 +00:00
for ( $i = 1 ; $i <= 2 ; ++ $i ) {
2019-09-06 23:33:05 +00:00
if ( $team -> getEncadrants ()[ $i - 1 ] === NULL )
2019-09-06 11:48:50 +00:00
continue ;
$req = $DB -> prepare ( " SELECT COUNT(`type`) AS `version` FROM `documents` WHERE `user` = ? AND `type` = ? GROUP BY `uploaded_at` ORDER BY `uploaded_at` DESC; " );
2019-09-06 23:33:05 +00:00
$req -> execute ([ $team -> getEncadrants ()[ $i - 1 ], " PHOTO_CONSENT " ]);
2019-09-06 11:48:50 +00:00
$d = $req -> fetch ();
$can_validate &= $d [ " version " ] > 0 ;
$req = $DB -> prepare ( " SELECT COUNT(`type`) AS `version` FROM `documents` WHERE `user` = ? AND `type` = ? GROUP BY `uploaded_at` ORDER BY `uploaded_at` DESC; " );
2019-09-06 23:33:05 +00:00
$req -> execute ([ $team -> getEncadrants ()[ $i - 1 ], " SANITARY_PLUG " ]);
2019-09-06 11:48:50 +00:00
$d = $req -> fetch ();
$can_validate &= $d [ " version " ] > 0 ;
}
for ( $i = 1 ; $i <= 6 ; ++ $i ) {
2019-09-06 23:33:05 +00:00
if ( $team -> getParticipants ()[ $i ] === NULL )
2019-09-06 11:48:50 +00:00
continue ;
$req = $DB -> prepare ( " SELECT COUNT(`type`) AS `version` FROM `documents` WHERE `user` = ? AND `type` = ? GROUP BY `uploaded_at` ORDER BY `uploaded_at` DESC; " );
2019-09-06 23:33:05 +00:00
$req -> execute ([ $team -> getParticipants ()[ $i ], " PHOTO_CONSENT " ]);
2019-09-06 11:48:50 +00:00
$d = $req -> fetch ();
$can_validate &= $d [ " version " ] > 0 ;
$req = $DB -> prepare ( " SELECT COUNT(`type`) AS `version` FROM `documents` WHERE `user` = ? AND `type` = ? GROUP BY `uploaded_at` ORDER BY `uploaded_at` DESC; " );
2019-09-06 23:33:05 +00:00
$req -> execute ([ $team -> getParticipants ()[ $i ], " SANITARY_PLUG " ]);
2019-09-06 11:48:50 +00:00
$d = $req -> fetch ();
$can_validate &= $d [ " version " ] > 0 ;
2019-09-06 23:33:05 +00:00
$birth_date = $DB -> query ( " SELECT `birth_date` FROM `users` WHERE `id` = " . $team -> getParticipants ()[ $i ] . " ; " ) -> fetch ()[ " birth_date " ];
if ( $birth_date > strval ( $YEAR - 18 ) . substr ( $tournament -> getStartDate (), 4 )) {
2019-09-06 11:48:50 +00:00
$req = $DB -> prepare ( " SELECT COUNT(`type`) AS `version` FROM `documents` WHERE `user` = ? AND `type` = ? GROUP BY `uploaded_at` ORDER BY `uploaded_at` DESC; " );
2019-09-06 23:33:05 +00:00
$req -> execute ([ $team -> getParticipants ()[ $i ], " PARENTAL_CONSENT " ]);
2019-09-06 11:48:50 +00:00
$d = $req -> fetch ();
$can_validate &= $d [ " version " ] > 0 ;
}
}
return $can_validate ;
}
2019-09-07 11:42:36 +00:00
require_once " server_files/views/mon_equipe.php " ;