mirror of
				https://gitlab.com/animath/si/plateforme-corres2math.git
				synced 2025-11-04 16:42:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
/** @var Team $team */
 | 
						|
$team = $_SESSION["team"];
 | 
						|
 | 
						|
if (!isset($_SESSION["user_id"]) || $_SESSION["role"] != Role::PARTICIPANT && $_SESSION["role"] != Role::ENCADRANT || $team == null || $team->getValidationStatus() != ValidationStatus::VALIDATED)
 | 
						|
	require_once "server_files/403.php";
 | 
						|
 | 
						|
$has_error = false;
 | 
						|
$error_message = null;
 | 
						|
 | 
						|
if (isset($_POST["upload"])) {
 | 
						|
	$new_video = new NewVideo($_POST);
 | 
						|
	try {
 | 
						|
		$new_video->makeVerifications();
 | 
						|
		$new_video->uploadVideo();
 | 
						|
	} catch (AssertionError $e) {
 | 
						|
		$has_error = true;
 | 
						|
		$error_message = $e->getMessage();
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
class NewVideo
 | 
						|
{
 | 
						|
	public $link;
 | 
						|
	private $valid_link;
 | 
						|
	private $no_change;
 | 
						|
 | 
						|
	public function __construct($data)
 | 
						|
	{
 | 
						|
		foreach ($data as $key => $value)
 | 
						|
			$this->$key = $value;
 | 
						|
	}
 | 
						|
 | 
						|
	public function makeVerifications()
 | 
						|
	{
 | 
						|
		ensure(preg_match("#(https?\:\/\/|)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?#", $this->link), "Ce n'est pas une URL valide.");
 | 
						|
		$this->link = preg_replace('/^(?!https?:\/\/)/', 'https://', $this->link);
 | 
						|
		ensure($this->valid_link != null, "Vous devez confirmer que le lien est valide.");
 | 
						|
		ensure($this->no_change != null, "Vous devez vous engager à ne pas changer le contenu du lien et de la vidéo.");
 | 
						|
	}
 | 
						|
 | 
						|
	public function uploadVideo()
 | 
						|
	{
 | 
						|
		global $DB, $YEAR, $team;
 | 
						|
 | 
						|
		$req = $DB->prepare("INSERT INTO `videos`(`team`, `problem`, `link`, `reason`, `year`) VALUES (?, ?, ?, ?, ?)");
 | 
						|
		$req->execute([$team->getId(), $team->getProblem(), $this->link, Reason::getName(Reason::SOLUTION), $YEAR]);
 | 
						|
 | 
						|
		Mailer::sendNewVideo($this, $team);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
$video = Video::getVideo(Reason::SOLUTION, $team);
 | 
						|
$video_validated = Video::getVideo(Reason::SOLUTION, $team, Video::ACCEPTED);
 | 
						|
 | 
						|
require_once "server_files/views/envoyer_video.php"; |