Commit 090183f5 authored by Mathieu Loiseau's avatar Mathieu Loiseau
Browse files

With alternate scoring & rankings (before debugging)

parent 54a9f129
......@@ -49,3 +49,4 @@ sys/db.config.php
sys/config.php
/add_cards.php
/debug.txt
/profil/test1/mimas.jpg
......@@ -134,8 +134,7 @@ class diviner_game
private function selectpartie(){
$res = false;
try{
$recordingFactory = new ItemFactory($this->diviner,$this->userlang);
//$this->user->langGame); langGame n'a pas l'air d'être ce qu'on pense
$recordingFactory = new ItemFactory($this->diviner,$this->user->langGame);
$this->raisin = $recordingFactory->get_recording(ItemFactory::VALID_RECORDING_NOT_ME);
if(is_object($this->raisin)){
// construction de l'adresse de l'enregistrement à  partir du nom du fichier son
......
<?php
require_once('./models/recording.class.php');
class diviner_result
{
private $mode = '';
private $user = '';
private $devin = '';
private $oracle = '';
private $userlvl = '';
private $lang = '';
private $devinName ='';
private $previousSGDev = 0;
private $previousSDev = 0;
private $previousSGOracle = 0;
private $previousSOracle = 0;
private $pointsDev = 10;
private $reussie = 'oui';
public function set_mode($mode)
......@@ -25,12 +18,11 @@ class diviner_result
public function process()
{
if ( $this->init() )
{
$this->score();;
return $this->display();
}
return false;
if ( $this->init() ){
$this->score();
return $this->display();
}
return false;
}
public function __construct(){
......@@ -38,7 +30,6 @@ class diviner_result
}
private function init()
{
$lang_iso = new IsoLang();
$db = db::getInstance();
......@@ -47,35 +38,6 @@ class diviner_result
$this->devin = $this->user->id;
$this->devinName = $this->user->username;
$this->lang = $_SESSION["langDevin"];
$sql = 'SELECT * FROM user_niveau WHERE userid=' . $this->devin;
$result = $db->query($sql);
$res = mysqli_fetch_assoc($result);
$spoken_lang = explode(';',$res['spoken_lang']);
$i=0;
while ($i<count($spoken_lang)) {
if(strcmp($lang_iso->french_for($this->lang),$spoken_lang[$i]) == 0){
break;
}
$i++;
}
if($i!=count($spoken_lang)){
$lang_lvl = explode(';',$res['niveau'])[$i];
$sql = 'SELECT * FROM coeff_niveau_langue WHERE niveau_langue="' . $lang_lvl . '"';
$result = $db->query($sql);
$this->lang_lvl_pts = mysqli_fetch_assoc($result)['coeff'];
}
else{
$this->lang_lvl_pts = 1; //par défaut
}
$this->userlvl = userlvl::getInstance();
$this->points= $this->userlvl->get_points();
//$this->time = $this->userlvl->get_time(); /*can't understand why we would need it now…)*/
return true;
}
......@@ -84,47 +46,26 @@ class diviner_result
if(!isset($_SESSION["motDeviner"]))
{
$lang_iso = new IsoLang();
require_once('./controllers/update_score_coeff.php');
//connexion à la BD
//Récupération des infos nécessaires
$db = db::getInstance();
updateScoreDevinSucces($this->devin,$lang_iso->french_for($_SESSION["langDevin"]),$this->points);
$pointsCoef = $this->points*$this->lang_lvl_pts;
$_SESSION["pointsCoef"] = $pointsCoef;
$db = db::getInstance();
$sql = 'UPDATE parties
SET reussie='.$db->escape((string) $this->reussie).'
WHERE idDevin='.$this->devin.' ORDER BY tpsDevin DESC LIMIT 1 ';
$db->query($sql);
//Récupération de enregistrementID
$sql = 'SELECT enregistrementID FROM parties WHERE idDevin="'.$this->devin.'" ORDER BY tpsDevin DESC LIMIT 1 ';
$res1=$db->query($sql);
$this->res2= mysqli_fetch_assoc($res1);
// récupération de l'id de l'oracle et de la carte grâce à enregistrementID
$sql = 'SELECT idOracle,carteID,OracleLang
FROM enregistrement WHERE enregistrementID='.$this->res2['enregistrementID'].'';
$res1=$db->query($sql);
$res3= mysqli_fetch_assoc($res1);
updateScoreOracleDevinSucces($res3["idOracle"],$lang_iso->french_for($res3["OracleLang"]),$this->res2['enregistrementID']);
echo "updateScoreOracleDevinSucces(".$res3["idOracle"].",".$lang_iso->french_for($res3["OracleLang"]).",".$this->res2['enregistrementID'].");";/**/
$this->oracle=$res3["idOracle"];
$query = "SET @id_enr := null;
UPDATE `parties` SET `reussie`=".$db->escape((string) $this->reussie).", `enregistrementID` = (SELECT @id_enr := `enregistrementID`) WHERE idDevin='".$this->devin."' ORDER BY tpsDevin DESC LIMIT 1;
SELECT @id_enr;";
$db->multi_query_last_result($query);
$this->record_id = $db->fetch_assoc()["@id_enr"];
$tmpRecording = new Recording($this->record_id);
$this->oracle = $tmpRecording->get_oracle_id();
//mise à jour des scores
require_once('./controllers/update_score_coeff.php');
$sh = new ScoreHandler($this->devin, ScoreHandler::AUGUR, $tmpRecording);
$sh->update_scores(true); //because they won…
// récupération du contenu de la carte avec carteID
require_once("./models/card.class.php");
$carte = new Card($res3['carteID']);
$this->res= $carte->dirtify();
$_SESSION["motDeviner"] = true;//pour éviter de s'ajouter des points à l'infini avec des refresh
$this->carte = new Card($tmpRecording->get_card_id());
$_SESSION["motDeviner"] = true;//pour éviter de s'ajouter des points à l'infini avec des refresh
return true;
}
else{
header('Location: index.php?page.home.html');
......@@ -134,9 +75,10 @@ class diviner_result
private function display()
{
//for dynamic notification don't want to take the time to understand them…
$_SESSION["notif"]["notification_done"]["Devin"] = 'points';
include('./views/diviner.result.html');
return true;
return true;
}
}
......
......@@ -10,11 +10,7 @@ class diviner_timeout
private $devinName='';
private $oracle = '';
private $previousSGO = 0;
private $previousSO = 0;
private $res = '';
private $carte = '';
private $reussie ='non';
......@@ -26,12 +22,12 @@ class diviner_timeout
public function process()
{
if ( $this->init() )
{
$this->carte_et_scoreOracle();
$this->updateparties();
return $this->display();
}
return false;
{
$this->carte_et_scoreOracle();
$this->updateparties();
return $this->display();
}
return false;
}
private function init()
......@@ -40,17 +36,13 @@ class diviner_timeout
$this->user = user::getInstance();
$this->diviner = $this->user->id;
$this->devinName = $this->user->username;
$this->userlvl = userlvl::getInstance();
$this->points= $this->userlvl->get_points();
return true;
}
private function carte_et_scoreOracle()
{
require_once('./sys/load_iso.php');
require_once('./controllers/update_score_coeff.php');
$lang_iso = new IsoLang();
if(!isset($_SESSION["timeOutOracle"])){
// récupération d'enregistrementID pour récupérer l'id de l'Oracle et l'id de la carte
......@@ -58,25 +50,18 @@ class diviner_timeout
$db = db::getInstance();
//Récupération de enregistrementID
$sql = 'SELECT enregistrementID FROM parties WHERE idDevin="'.$this->diviner.'" ORDER BY tpsDevin DESC LIMIT 1 ';
$res1=$db->query($sql);
$this->res2= mysqli_fetch_assoc($res1);
// récupération de l'id de l'oracle et de la carte grâce à enregistrementID
$sql = 'SELECT idOracle,carteID,OracleLang
FROM enregistrement WHERE enregistrementID='.$this->res2['enregistrementID'].'';
$res1=$db->query($sql);
$res3= mysqli_fetch_assoc($res1);
$sql = 'SELECT `enregistrementID` FROM `parties` WHERE `idDevin`="'.$this->diviner.'" ORDER BY `tpsDevin` DESC LIMIT 1 ';
$db->query($sql);
require_once("./models/recording.class.php");
$this->rec= new Recording($db->fetch_assoc()['enregistrementID']);
$this->oracle = $res3['idOracle'];
//mise à jour des scores
require_once('./controllers/update_score_coeff.php');
$sh = new ScoreHandler($this->diviner, ScoreHandler::AUGUR, $this->rec);
$sh->update_scores(false); //because they lost…
// récupération du contenu de la carte avec carteID
$carte = new Card($res3['carteID']);
$this->res= $carte->dirtify();
// Requête de modification des scores de l'Oracle qui a fait une description non trouvée par le devin
$lang_iso = new IsoLang();
updateScoreOracleDevinEchec($this->oracle,$lang_iso->french_for($res3["OracleLang"]),$this->res2['enregistrementID']);
$this->carte = new Card($this->rec->get_card_id());
$_SESSION["timeOutOracle"]=true;
return false;
......@@ -94,8 +79,8 @@ class diviner_timeout
$sql = 'UPDATE parties
SET reussie='.$db->escape((string) $this->reussie).'
WHERE idDevin='.$this->diviner.' ORDER BY tpsDevin DESC LIMIT 1 ';
$db->query($sql);
//for dynamic notification don't want to take the time to understand them…
$_SESSION["notif"]["notification_error"]["Devin"] = 'diviner_timeout';
return false;
}
......@@ -103,7 +88,7 @@ class diviner_timeout
private function display()
{
include('./views/diviner.timeout.html');
return true;
return true;
}
}
......
......@@ -22,13 +22,6 @@ class druid_arbitrage
private $oracle = '';
private $enregistrement='';
private $previousSGO = 0;
private $previousSO = 0;
private $previousSGDr = 0;
private $previousSDr = 0;
private $pointsDr = 10;
private $et_c_est_le_temps_qui_court ='d/m/Y H:i';
private $valid = 'valid';
......@@ -57,9 +50,6 @@ class druid_arbitrage
$this->userlang = $this->user->langGame;
//récupération des points en fonction du niveau de jeu
$this->userlvl = userlvl::getInstance();
$this->points= $this->userlvl->get_points();
$this->et_c_est_le_temps_qui_court = date("d/m/Y H:i");
return true;
......@@ -72,9 +62,9 @@ class druid_arbitrage
//Dans le cas où le joueur souhaite arbitrer la carte après une partie en tant que devin
if(isset($_SESSION["idCard"]) && isset($_SESSION["idEnregistrement"])){
$idCarte = $_SESSION["idCard"];
$idEnregistrement = $_SESSION["idEnregistrement"];
$this->enregistrement = $_SESSION["idEnregistrement"];
$sql = "SELECT * FROM `enregistrement` WHERE `enregistrementID` = $idEnregistrement";
$sql = "SELECT * FROM `enregistrement` WHERE `enregistrementID` =".$this->enregistrement;
$db->query($sql);
if($db->num_rows()>0){
$this->raisin = $db->fetch_object();
......@@ -119,6 +109,10 @@ class druid_arbitrage
//récupération de la carte jouée
$this->card = new Card($this->raisin->carteID,'./views/card.inline.display.php');
$this->partie=true;
require_once("./models/userlvl.class.php");
$gh = new GameHandler();
$this->card->set_forbidden_count($gh->get_forbidden_count($this->raisin->nivpartie));
unset($gh);
}
else{//$this->partie reste faux
array_push($this->errors, 'noEnregistrement');
......@@ -140,6 +134,11 @@ class druid_arbitrage
require_once('./sys/load_iso.php');
$lang_iso = new IsoLang();
require_once('./controllers/update_score_coeff.php');
if(isset($this->card)){
$sh = new ScoreHandler($this->druid, ScoreHandler::DRUID,(int) $this->enregistrement);
}
//connexion à la BD
$db = db::getInstance();
if(isset($_POST["enregistrement1"]) && isset($_POST["oracle"])){
$this->enregistrement = $_POST["enregistrement1"];
......@@ -148,10 +147,6 @@ class druid_arbitrage
// après avoir cliqué sur "au bûcher" = description vide ou fautive
if(isset($_POST['invalidate']))
{
//connexion à la BD
$db = db::getInstance();
// Requête d'insertion des info dans la table 'arbitrage'
$sql = 'INSERT INTO arbitrage
(enregistrementID,idDruide,tpsArbitrage,validation)
......@@ -161,53 +156,44 @@ class druid_arbitrage
$db->escape((string) $this->et_c_est_le_temps_qui_court) . ', ' .
$db->escape((string) $this->invalid ) . ')' ;
$db->query($sql);
// mettre à jour le champs "validation" de la table enregistrement pour que cet enregistrement devienne jouable
$sql = 'UPDATE enregistrement
$db->query($sql);
// mettre à jour le champs "validation" de la table enregistrement pour que cet enregistrement devienne jouable
$sql = 'UPDATE enregistrement
SET validation = ' .$db->escape((string) $this->invalid ) . '
WHERE enregistrementID="'.$this->enregistrement .'" ' ;
$db->query($sql);
// Requête de modification du score de l'Oracle dont la description est jetée en pâture aux flammes du bûcher purificateur
updateScoreOracleDruideRefuse($this->oracle,$lang_iso->french_for($this->userlang),$this->enregistrement);
//Requête de modification du score du Druide après l'accomplissement de son fastidieux travail d'inquisition
//récupération du score précédent;
updateScoreDruideArbitrage($this->druid,$lang_iso->french_for($this->userlang),$this->pointsDr);
// Requête de modification du score de l'Oracle dont la description est jetée en pâture aux flammes du bûcher purificateur
//Requête de modification du score du Druide après l'accomplissement de son fastidieux travail d'inquisition
$sh->update_scores(false);
//for dynamic notification don't want to take the time to understand them…
$_SESSION["notif"]["notification_done"]["Druide"] = 'pointsDruide';
header('Location: index.php?page.home.html');
// après avoir cliqué sur "valider" = description correcte et jouable
}elseif (isset($_POST['validate'])){
//connexion à la BD
$db = db::getInstance();
// insertion des informations dans la table arbitrage
$sql = 'INSERT INTO arbitrage
(enregistrementID,idDruide,tpsArbitrage,validation)
VALUES(' .
$db->escape((string) $this->enregistrement ) . ', ' .
$db->escape((string) $this->druid) . ', ' .
$db->escape((string) $this->et_c_est_le_temps_qui_court) . ', ' .
$db->escape((string) $this->valid ) . ') ' ;
$db->query($sql);
// mettre à jour le champs "validation" de la table enregistrement pour que cet enregistrement devienne jouable
$sql = 'UPDATE enregistrement
SET validation = ' .$db->escape((string) $this->valid ) . '
WHERE enregistrementID="'.$this->enregistrement .'" ' ;
// insertion des informations dans la table arbitrage
$sql = 'INSERT INTO arbitrage
(enregistrementID,idDruide,tpsArbitrage,validation)
VALUES(' .
$db->escape((string) $this->enregistrement ) . ', ' .
$db->escape((string) $this->druid) . ', ' .
$db->escape((string) $this->et_c_est_le_temps_qui_court) . ', ' .
$db->escape((string) $this->valid ) . ') ' ;
$db->query($sql);
// Requête de modification du score de l'Oracle dont la description est élevée au rang de prediction divine
// mettre à jour le champs "validation" de la table enregistrement pour que cet enregistrement devienne jouable
$sql = 'UPDATE enregistrement
SET validation = ' .$db->escape((string) $this->valid ) . '
WHERE enregistrementID="'.$this->enregistrement .'" ' ;
$db->query($sql);
updateScoreOracleDruideAccepte($this->oracle,$lang_iso->french_for($this->userlang),$this->enregistrement);
//Requête de modification du score du Druide l'accomplissement de son fastidieux travail d'inquisition
//récupération du score précédent;
updateScoreDruideArbitrage($this->druid,$lang_iso->french_for($this->userlang),$this->pointsDr);
// Requête de modification du score de l'Oracle dont la description est élevée au rang de prediction divine
//Requête de modification du score du Druide l'accomplissement de son fastidieux travail d'inquisition
$sh->update_scores(true);
//for dynamic notification don't want to take the time to understand them…
$_SESSION["notif"]["notification_done"]["Druide"] = 'pointsDruide';
header('Location: index.php?page.home.html');
// sinon, c'est le premier passage dans la page, il n'y a pas encore eu d'arbitrage donc on affiche la page d'arbitrage
......
......@@ -24,10 +24,6 @@ class druid_card
private $card;
private $res2 = '';
private $previousSGDr = 0;
private $previousSDr = 0;
private $pointsDr = "";
private $mode = '';
public function set_mode($mode)
......@@ -57,9 +53,6 @@ class druid_card
//récupération de la date au format jour/mois/année/heure
$this->et_c_est_le_temps_qui_court = date("d/m/Y H:i");
//récupération des points druides
$this->pointsDr = pointsDruid;
// récupération du formulaire de création de carte
......@@ -148,8 +141,8 @@ class druid_card
require_once('./controllers/update_score_coeff.php');
//Requête de modification du score du Druide l'accomplissement de son fastidieux travail de création de carte
updateScoreDruideCreation($this->createur,$lang_iso->french_for($this->userlang),$this->pointsDr);
$_SESSION["notif"]["notification_done"]["Druide"] = 'pointsDruide';
$sh = new ScoreHandler($this->createur, $this->userlang);
$sh->update_scores();
$_SESSION["CreateCard"]=true;
//affichage de l'aperçu de la carte avec son identifiant
......
......@@ -2,215 +2,215 @@
class edit
{
private $submit = false;
private $userid = 0;
private $username = '';
private $useremail = '';
private $password = '';
private $password_confirm = '';
private $userlang = '';
private $errors = array();
private $mode = '';
private $spoken_lang='';
private $niveau='';
private $photo ='';
private $userlvl = '';
private $userlang_game = '';
private $userlang_interface = '';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->check();
$this->validate();
return $this->display();
}
return false;
}
private function init(){
require_once('./sys/load_iso.php');
$lang_iso = new IsoLang();
$db = db::getInstance();
$user = user::getInstance();
$this->userlang = $user->get_lang();
// initialisation
$this->submit = isset($_POST['submit_form']);
$this->userid = ($this->mode == 'profile') ? intval($_SESSION['userid']) : (isset($_REQUEST['userid']) && intval($_REQUEST['userid']) ? intval($_REQUEST['userid']) : 0 );
// recherche dans la BDD
$sql = 'SELECT *
FROM user
WHERE userid = ' . intval($this->userid);
$result = $db->query($sql);
$row = $result->fetch_assoc();
$result->free();
if ( !$row )
{
die('Game over.');
}
$this->username = $row['username'];
$this->useremail = $row['useremail'];
$this->photo = $row['photo'];
$this->userlvl = $row['userlvl'];
if (!file_exists($this->photo)) {
$this->photo = "profil/unknow.jpg";
}
private $submit = false;
private $userid = 0;
private $username = '';
private $useremail = '';
private $password = '';
private $password_confirm = '';
private $userlang = '';
private $errors = array();
private $mode = '';
private $spoken_lang='';
private $niveau='';
private $photo ='';
private $userlvl = '';
private $userlang_game = '';
private $userlang_interface = '';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->check();
$this->validate();
return $this->display();
}
return false;
}
private function init(){
require_once('./sys/load_iso.php');
$lang_iso = new IsoLang();
$db = db::getInstance();
$user = user::getInstance();
$this->userlang = $user->get_lang();
// initialisation
$this->submit = isset($_POST['submit_form']);
$this->userid = ($this->mode == 'profile') ? intval($_SESSION['userid']) : (isset($_REQUEST['userid']) && intval($_REQUEST['userid']) ? intval($_REQUEST['userid']) : 0 );
// recherche dans la BDD
$sql = 'SELECT *
FROM user
WHERE userid = ' . intval($this->userid);
$result = $db->query($sql);
$row = $result->fetch_assoc();
$result->free();
if ( !$row )
{
die('Game over.');
}
$this->username = $row['username'];
$this->useremail = $row['useremail'];
$this->photo = $row['photo'];
$this->userlvl = $row['userlvl'];
if (!file_exists($this->photo)) {
$this->photo = "profil/unknow.jpg";
}
$this->userlang_interface = $row['userlang'];
$this->userlang_game = $row['userlang_game'];
// TODO initialiser les datalist (edit.form.html) avec les langues parlées dans la bd
$sql = 'SELECT *
FROM user_niveau
WHERE userid = ' . intval($this->userid);
$result = $db->query($sql);
$row = $result->fetch_assoc();
$result->free();
FROM user_niveau
WHERE userid = ' . intval($this->userid);
$result = $db->query($sql);
$row = $result->fetch_assoc();
$result->free();
$this->spoken_lang = $row['spoken_lang'];
$this->niveau = $row['niveau'];
// recherche sur le formulaire
if ( $this->submit )