You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Scripted/WEB/Model/AdminModel.php

47 lines
1.5 KiB

<?php
class AdminModel
{
private EnigmeGateway $enigme_gateway;
private Nettoyage $nettoyage;
private Validation $validation;
function __construct()
{
global $error, $view, $rep;
$this->enigme_gateway = new EnigmeGateway();
$this->nettoyage = new Nettoyage();
$this->validation = new Validation();
}
public function addNewEnigmeSolo(string $nom,string $enonce,string $aide,string $rappel,string $exemple,string $test,string $solution, string $prompt) : Enigme
{
$last = $this->enigme_gateway->findLastEnigma();
if ($last !== null){
$ordre = $last[0]->getOrdre() + 1;
} else {
$ordre = 1;
}
$enigme = new Enigme(1,$nom, $enonce, $aide, $rappel, $exemple, $solution, $test, $ordre, 0, 0, $prompt);
$this->enigme_gateway->insert($enigme);
var_dump($enigme);
$tabEnigme = $this->enigme_gateway->findLastEnigma();
$js = fopen("View/src/JS/$nom.js", "w");
if (is_resource($js)) {
fwrite($js, "//~ Function that test the user code
async function submit(){
var test = editor.getValue()+`\\n\n". $solution . "\n". $test . "\n`;
exec(\"print ('True')\", \"code\");
exec(test, \"solution\");
result.innerHTML = \"Test en cours...\";
await new Promise(r => setTimeout(r, 1500));
check();
}");
fclose($js);
} else {
throw new Exception("Impossible d'ouvrir le fichier");
}
return $tabEnigme[0];
}
}