Vous avez reçu un message "Your GitLab account has been locked ..." ? Pas d'inquiétude : lisez cet article https://docs.gricad-pages.univ-grenoble-alpes.fr/help/unlock/

Commit 5f90deef authored by Mathieu Loiseau's avatar Mathieu Loiseau
Browse files

Installable version ?

parent 79b26a7a
......@@ -46,3 +46,4 @@ Temporary Items
# =========================
enregistrements/*
sys/db.config.php
sys/config.php
This diff is collapsed.
-- phpMyAdmin SQL Dump
-- version 4.0.10deb1
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Mer 25 Novembre 2015 à 00:34
-- Version du serveur: 5.5.46-MariaDB-1ubuntu0.14.04.2
-- Version de PHP: 5.5.9-1ubuntu4.14
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: `GoW`
--
-- --------------------------------------------------------
--
-- Structure de la table `arbitrage`
--
CREATE TABLE IF NOT EXISTS `arbitrage` (
`arbitrageID` int(11) NOT NULL AUTO_INCREMENT,
`enregistrementID` int(11) NOT NULL,
`idDruide` int(11) NOT NULL,
`tpsArbitrage` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`validation` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
PRIMARY KEY (`arbitrageID`),
KEY `validation` (`validation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `carte`
--
CREATE TABLE IF NOT EXISTS `carte` (
`carteID` int(11) NOT NULL AUTO_INCREMENT,
`theme` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`idDruide` int(30) NOT NULL,
`temps` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`niveau` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`langue` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`mot` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tabou1` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tabou2` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tabou3` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tabou4` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tabou5` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tabou6` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`carteID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `cartes`
--
CREATE TABLE IF NOT EXISTS `cartes` (
`idCarte` int(16) unsigned NOT NULL AUTO_INCREMENT COMMENT 'identifiant',
`langue` varchar(3) CHARACTER SET utf8 NOT NULL COMMENT 'la langue de la carte (ISO 639)',
`extLangue` varchar(16) CHARACTER SET utf8 DEFAULT NULL COMMENT 'extension de langue (IETF)',
`niveau` enum('A1','A1.1','A1.2','A2','B1','B2','C1','C2') CHARACTER SET utf8 NOT NULL COMMENT 'Niveau CECRL',
`categorie` enum('nom','nom propre','adjectif','adverbe','Expression idiomatique') CHARACTER SET utf8 NOT NULL COMMENT 'Une catégorie qui pourra être une aide',
`idDruide` int(16) unsigned NOT NULL COMMENT 'auteur',
`mot` varchar(128) CHARACTER SET utf8 NOT NULL,
`dateCreation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`idCarte`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Les cartes, attention nécessitent jointures' AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `coeff_niveau_langue`
--
CREATE TABLE IF NOT EXISTS `coeff_niveau_langue` (
`niveau_langue` enum('Débutant','Intermédiaire','Avancé','Natif') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`coeff` float NOT NULL,
UNIQUE KEY `niveau_langue_2` (`niveau_langue`),
KEY `niveau_langue` (`niveau_langue`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Contenu de la table `coeff_niveau_langue`
--
INSERT INTO `coeff_niveau_langue` (`niveau_langue`, `coeff`) VALUES
('Débutant', 1.5),
('Intermédiaire', 1.2),
('Avancé', 1),
('Natif', 0.5);
-- --------------------------------------------------------
--
-- Structure de la table `coeff_statut`
--
CREATE TABLE IF NOT EXISTS `coeff_statut` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`coeff` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Contenu de la table `coeff_statut`
--
INSERT INTO `coeff_statut` (`id`, `coeff`) VALUES
(1, 1),
(2, 1.25),
(3, 1.5);
-- --------------------------------------------------------
--
-- Structure de la table `enregistrement`
--
CREATE TABLE IF NOT EXISTS `enregistrement` (
`enregistrementID` int(11) NOT NULL AUTO_INCREMENT,
`cheminEnregistrement` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`idOracle` int(30) NOT NULL,
`OracleLang` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`tpsEnregistrement` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`carteID` int(11) NOT NULL,
`nivcarte` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`validation` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
PRIMARY KEY (`enregistrementID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `game_lvl`
--
CREATE TABLE IF NOT EXISTS `game_lvl` (
`userlvl` enum('easy','medium','hard') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'easy',
`time` int(8) NOT NULL DEFAULT '0',
`points` int(8) NOT NULL DEFAULT '0',
`pointsSanction` int(8) NOT NULL DEFAULT '0',
PRIMARY KEY (`userlvl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Contenu de la table `game_lvl`
--
INSERT INTO `game_lvl` (`userlvl`, `time`, `points`, `pointsSanction`) VALUES
('easy', 90, 10, 0),
('medium', 60, 20, 0),
('hard', 45, 40, 0);
-- --------------------------------------------------------
--
-- Structure de la table `mots_interdits`
--
CREATE TABLE IF NOT EXISTS `mots_interdits` (
`idCarte` int(16) NOT NULL COMMENT 'le mot auquel il se rapporte',
`mot` varchar(48) CHARACTER SET utf8 NOT NULL COMMENT 'le mot interdit',
`ordre` int(4) NOT NULL COMMENT 'l''ordre du mot interdit',
UNIQUE KEY `idCarte` (`idCarte`,`mot`),
UNIQUE KEY `idCarte_2` (`idCarte`,`ordre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Liste des mots tabous pour un mot';
-- --------------------------------------------------------
--
-- Structure de la table `notif`
--
CREATE TABLE IF NOT EXISTS `notif` (
`userid` int(11) NOT NULL,
`message` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`emetteur` int(11) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`state` int(11) NOT NULL,
`game` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`time` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `parties`
--
CREATE TABLE IF NOT EXISTS `parties` (
`partieID` int(11) NOT NULL AUTO_INCREMENT,
`enregistrementID` int(11) NOT NULL,
`tpsDevin` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`idDevin` int(11) NOT NULL,
`tpsdejeu` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`reussie` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`partieID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `sanctionCarte`
--
CREATE TABLE IF NOT EXISTS `sanctionCarte` (
`idDevin` int(11) NOT NULL,
`enregistrementID` int(11) NOT NULL,
UNIQUE KEY `idDevin` (`idDevin`,`enregistrementID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `score`
--
CREATE TABLE IF NOT EXISTS `score` (
`scoreID` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(100) NOT NULL,
`scoreGlobal` int(100) NOT NULL,
`scoreOracle` int(100) NOT NULL,
`scoreDruide` int(100) NOT NULL,
`scoreDevin` int(100) NOT NULL,
`langue` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`first_game_time` text NOT NULL,
PRIMARY KEY (`scoreID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `themes`
--
CREATE TABLE IF NOT EXISTS `themes` (
`idTheme` int(8) unsigned NOT NULL AUTO_INCREMENT,
`themeFR` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT 'la traductions ce sera pour plus tard',
PRIMARY KEY (`idTheme`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='liste des thèmes' AUTO_INCREMENT=5 ;
--
-- Contenu de la table `themes`
--
INSERT INTO `themes` (`idTheme`, `themeFR`) VALUES
(1, 'Objets'),
(2, 'Formation'),
(3, 'Profession'),
(4, 'Art');
-- --------------------------------------------------------
--
-- Structure de la table `themes_cartes`
--
CREATE TABLE IF NOT EXISTS `themes_cartes` (
`idCarte` int(16) NOT NULL,
`idTheme` int(8) NOT NULL,
UNIQUE KEY `idCarte` (`idCarte`,`idTheme`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Table de jointure';
-- --------------------------------------------------------
--
-- Structure de la table `user`
--
CREATE TABLE IF NOT EXISTS `user` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL,
`useremail` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`userpass` varchar(32) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`userlang` varchar(32) NOT NULL,
`valkey` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`userlang_game` varchar(100) NOT NULL,
`photo` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`userlvl` varchar(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Structure de la table `user_niveau`
--
CREATE TABLE IF NOT EXISTS `user_niveau` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`userid` int(50) NOT NULL,
`spoken_lang` varchar(100) NOT NULL,
`niveau` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
......@@ -7,11 +7,13 @@ Requirements
* MySQL
* Tested on firefox (and chrome)
* Javascript activated
* libavtools >= 9
Installation
-------------
* Download from GitHub and unzip
* Edit ./sys/db.config.sample.php, enter identification to your MySQL or MariaDB server and save the file as ./sys/db.config.php
* If you want the recordings stored in mp3 format on the server, libavtools >=9 must be installed and the $conversion variable initialization uncommented in ./sys/config
* Run initializeDB.php
* You're good to go
\ No newline at end of file
* You're good to go
......@@ -18,6 +18,7 @@ Requirements
* MySQL
* Firefox (or chrome)
* Javascript activated
* libavtools >= 9 (see INSTALL.md)
Contributors
--------------
......
<?php
require_once("./models/card.class.php");
class diviner_game
{
......@@ -159,6 +160,8 @@ class diviner_game
FROM carte WHERE carteID='.$this->raisin['carteID'].'';
$res=$db->query($sql);
$this->res3= mysqli_fetch_assoc($res);
//$carte = new Card($this->raisin['carteID']);
//$this->res3 = $carte->dirtify();
//récupération de l'éventuelle partie que le devin aurait fait sur cet enregistrement pour ne pas le re-proposer
$sql = 'SELECT reussie
......
<?php
class diviner_game
{
private $mode = '';
private $errors = array();
private $motadeviner='';
private $nivcarte = '';
private $userlang = '';
private $user= '';
private $diviner= '';
private $raisin ='';
private $res2 = '';
private $res3 = '';
private $res4 = '';
private $res5 = '';
private $result= '';
public $enregistrementID = '';po
private $adresse = '';
private $reussie = 'en cours';
private $temps='';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->selectpartie();
$this->update();
return $this->display();
}
return false;
}
private function init()
{
//récupération des informations de base : id user et sa langue
$this->user = user::getInstance();
$this->diviner = $this->user->id;
$this->userlang = $this->user->userlang;
$this->temps = date("d/m/Y H:i:s");
return true;
}
private function selectpartie()
{
// récupération de plusieurs enregistrements dans sa langue et dont il n'est pas l'oracle
$db = db::getInstance();
$sql = 'SELECT
enregistrementID,cheminEnregistrement,idOracle,carteID,nivcarte
FROM enregistrement WHERE idOracle!='.$this->diviner.' AND OracleLang="'.$this->userlang.'" AND validation="valid" ORDER BY RAND() LIMIT 100';
$this->result=$db->query($sql);
$nb_result=$this->result->num_rows;
//pour chaque enregistrement:
for ($i = 1; $i <= $nb_result; $i++)
{
$this->raisin= mysqli_fetch_assoc($this->result);
// construction de l'adresse de l'enregistrement à partir du nom du fichier son
$this->adresse = "enregistrements/".$this->raisin['cheminEnregistrement'];
//initialisation du booléen qui représentera la condition finale pour que la partie soit acceptée
// Il deviendra faux si le moindre critère n'est pas rempli durant la procédure
$partieok=true;
//Connexion à la BD
$db = db::getInstance();
//récupération du contenu de la carte
$sql = 'SELECT
idDruide,niveau,mot,tabou1,tabou2,tabou3,tabou4,tabou5
FROM carte WHERE carteID='.$this->raisin['carteID'].'';
$res=$db->query($sql);
$this->res3= mysqli_fetch_assoc($res);
//récupération de l'éventuelle partie que le devin aurait fait sur cet enregistrement pour ne pas le re-proposer
$sql = 'SELECT reussie
FROM parties WHERE idDevin ="'.$this->diviner.'" AND enregistrementID= "'.$this->raisin['enregistrementID'].'"';
$res=$db->query($sql);
$this->res5= mysqli_fetch_assoc($res);
// si le créateur de la carte et le devin sont la même personne, on passe à l'enregistrement suivant
if ($this->res3['idDruide'] == $this->diviner)
{
$partieok=false;
}
// si le devin a déjà joué cette carte et a eu un résultat (faux ou juste), on passe à l'enregistrement suivant.
//Si cette partie a été quitté précipitemment ou à cause d'un pb technique (reussie=en cours), il peut la rejouer.
if(($this->res5['reussie']=="oui")|($this->res5['reussie']=="non"))
{
$partieok=false;
}
// si rien de s'oppose à ce que l'enregistrement soit proprosé
if ($partieok)
{
// récupération du pseudo de l'oracle pour savoir qui on écoute
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->raisin['idOracle'].'"';
$res=$db->query($sql);
$this->res2= mysqli_fetch_assoc($res);
//récupération du pseudo du créateur de la carte
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->res3['idDruide'].'"';
$res=$db->query($sql);
$this->res4= mysqli_fetch_assoc($res);
Â
$enregistrementID = $this->raisin['enregistrementID'];
return true;
}
}
// Sinon, aucun enregistrement n'est compatible
echo "aucune partie disponible pour l'instant.";
return false;
}
private function update()
{
if($this->res5['reussie']!="en cours"){
//Insertion des informations dans la table parties
//connexion à la bd
$db = db::getInstance();
echo $this->raisin['enregistrementID'];
$sql = 'INSERT INTO parties
(enregistrementID,idDevin,tpsDevin,reussie)
VALUES(' .
$db->escape((string) $this->raisin['enregistrementID']).','.
$db->escape((string) $this->diviner) . ','.
$db->escape((string) $this->temps) . ','.
$db->escape((string) $this->reussie).')';
$db->query($sql);
return false;
}
}
private function display()
{
include('./views/diviner.game.html');
return true;
}
}
?>
<?php
class diviner_game
{
private $mode = '';
private $errors = array();
private $motadeviner='';
private $nivcarte = '';
private $userlang = '';
private $user= '';
private $diviner= '';
private $raisin ='';
private $res2 = '';
private $res3 = '';
private $res4 = '';
private $res5 = '';
private $result= '';
private $sanction ='';
private $score='';
private $carteValide = false;
private $adresse = '';
private $reussie = 'en cours';
private $temps='';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->sanctionLastPartie();
if($this->selectpartie()){
$this->update();
}
return $this->display();
}
return false;
}
private function init()
{
//récupération des informations de base : id user et sa langue
$this->user = user::getInstance();
$this->diviner = $this->user->id;
$this->userlang = $this->user->userlang;
$this->temps = date("d/m/Y H:i:s");
return true;
}
private function sanctionLastPartie()
{ // fonction qui permet de vérifier l'état de la dernière partie et de sanctionner le joueur de 5 pts s'il a quitté la partitatut = "en cours")
$db = db::getInstance();
$sql = "SELECT *
FROM parties WHERE idDevin = \"".$this->diviner."\"
ORDER BY parties.tpsDevin DESC
LIMIT 1";
$res=$db->query($sql);
$this->sanction = mysqli_fetch_assoc($res);
if($this->sanction['reussie'] == "en cours"){
$sql = "SELECT scoreDevin
FROM score
WHERE userid ='".$this->diviner."'";
$res = $db->query($sql);
$this->score = mysqli_fetch_assoc($res);
if ($this->score['scoreDevin'] >= 5){
$this->score['scoreDevin']-=5;
$sql='UPDATE score
SET scoreDevin="'.$this->score['scoreDevin'].'"
WHERE userid="'.$this->diviner.'"';
$res=$db->query($sql);
echo "blablé";
}
else{
echo "boubou";
}
}