Merge branch 'master' into feature/page_classement
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing

This commit is contained in:
nemunaire 2021-01-01 20:07:42 +00:00
commit 61de35ed4f
9 changed files with 100 additions and 52 deletions

View file

@ -288,7 +288,7 @@ class FileTerrestre extends FileCommun implements File
} else {
$temps_moins = 0;
}
$out[$keyF][$keyE] = array($element[0], $element[1], $element[2], ceil($temps * $element[1] - $temps_moins), ceil($temps - $temps_moins), $prems, dTerrestre::type($element[0]));
$out[$keyF][$keyE] = array($element[0], $element[1], $element[2], ceil($temps * $element[1] - $temps_moins), ceil($temps - $temps_moins), $prems, dTerrestre::type($element[0], $planete));
} else {
$temps = dTerrestre::temps($element[0], 1, $planete);
if ($prems) {
@ -296,7 +296,7 @@ class FileTerrestre extends FileCommun implements File
} else {
$temps_moins = 0;
}
$out[$keyF][$keyE] = array($element[0], $element[1], $element[2], ceil($temps * $element[1] - $temps_moins), ceil($temps - $temps_moins), $prems, dTerrestre::type($element[0]));
$out[$keyF][$keyE] = array($element[0], $element[1], $element[2], ceil($temps * $element[1] - $temps_moins), ceil($temps - $temps_moins), $prems, dTerrestre::type($element[0], $planete));
}
$prems = false;
}

View file

@ -322,8 +322,8 @@ class Planete extends Surface
//Surlogement
//Effets des batiments loisirs et commerces
$this->moral += 0.0025*$this->batiments[15] + 0.1*$this->batiments[16];
//Effets des batiments modules résidentiels, centre commercials et centre de loisir
$this->moral += 0.0010*$this->batiments[12] + 0.0025*$this->batiments[15] + 0.1*$this->batiments[16];
//Ajustement du moral en fonction de la politique
if ($this->politique == 1 && $this->moral > 0.7) {

View file

@ -113,6 +113,7 @@ class User
public function addPoints($metal, $cristal, $hydrogene, $credits = 0, $demolition = false)
{
/* Ancien code, fait des calculs boursier dans le système de points, wtf ?
global $table_bourse_ressources;
//On charge les 3 valeurs boursières
$bdd = new BDD();
@ -129,6 +130,11 @@ class User
$points = bourse_calcPrixBase($bourse[0]["dispo"], $metal);
$points += bourse_calcPrixBase($bourse[1]["dispo"], $cristal);
$points += bourse_calcPrixBase($bourse[2]["dispo"], $hydrogene);
*/
$rate = 0.7;
$points = $metal *$rate;
$points += $cristal *$rate;
$points += $hydrogene *$rate;
if ($demolition) {
$this->points -= intval($points);

View file

@ -50,7 +50,9 @@ if ($cached['check'] == md5_file(ONYX.'config/root.xml').md5_file(ONYX.'modules/
//$xml->validate();
if ($root = $xml->documentElement->getAttribute('root')) {
if ($root == substr(FILE, 0, strlen($root))) {
// Autorise les fichiers dans les dossiers htdocs/ et cron/
$cron = str_replace("htdocs", "cron", $root);
if ($root == substr(FILE, 0, strlen($root)) || $cron == substr(FILE, 0, strlen($cron))) {
define('ROOT', $root);
$search = substr(FILE, strlen($root));

View file

@ -193,4 +193,14 @@ class BDD
return mysqli_affected_rows($this->session);
}
public function update_classement()
{
if (!$this->session) {
return false;
}
global $table_user;
$query = "SET @p=0; UPDATE $table_user SET place_points = (@p:=@p+1) ORDER BY points DESC;";
mysqli_multi_query($this->session, $query);
}
}

View file

@ -3,74 +3,74 @@
class BDD
{
public $connected;
private $session;
private $reponse;
public $host;
public $user;
private $password;
public $database;
public $num_rows;
public $nodb;
public function __construct($profile=null)
{
if ($profile === false) {
return false;
}
global $db_config;
if (empty($profile)) {
if (!$db_config['profile']) {
return false;
}
$profile = &$db_config['profile'];
}
if (!ctype_alnum($profile)) {
trigger_error('Le nom du profil contient des caracteres illegaux', E_USER_ERROR);
}
if ($db_config['profile']) {
require(ONYX.'db/'.$profile.'.profile.php');
$db = &$___profile['db'];
$host = &$___profile['host'];
$user = &$___profile['user'];
$pass = &$___profile['pass'];
}
if ($db_config['crypt']) {
$pass = dbpass($pass, $db_config['crypt']);
}
return $this->connexion($host, $user, $pass, $db);
}
public function connexion($host, $user, $pass, $db=null)
{
if ($this->session) {
$this->deconnexion();
}
$this->reponse = null;
$host = pg_escape_string($host);
$user = pg_escape_string($user);
$pass = pg_escape_string($pass);
$db = pg_escape_string($db);
$this->session = pg_connect("host='$host' port=5432 dbname='$db' user='$user' password='$pass'");
if (!$this->session) {
elog('Connexion impossible a la base de donnee : '.$this->erreur(), 2);
if (function_exists($this->nodb)) {
@ -78,54 +78,54 @@ class BDD
}
return false;
}
pg_setclientencoding($this->session, 'UTF8');
$this->host = $host;
$this->user = $user;
$this->password = $pass;
$this->database = $db;
$this->connected = true;
}
public function reconnexion()
{
if (!empty($this->host) && !empty($this->user) && !empty($this->password) && !empty($this->database)) {
$this->connexion($this->host, $this->user, $this->password, $this->database);
}
}
public function deconnexion()
{
if (!$this->session) {
return false;
}
$r = pg_close($this->session);
$this->session = false;
$this->connected = false;
return $r;
}
public function erreur()
{
if (!$this->session) {
return false;
}
return pg_last_error($this->session);
}
public function db($db)
{
if (!$this->session) {
return false;
}
return $this->database = pg_query($this->session, "\\connect ".pg_escape_string($db)) ? $db : $this->database;
}
public function escape(&$var)
{
if (!$this->session) {
@ -134,23 +134,23 @@ class BDD
$var = pg_escape_string($this->session, $var);
return $var;
}
public function query($query)
{
if (!$this->session) {
return false;
}
$this->reponse = pg_query($this->session, $query);
global $db_config;
if (!$this->reponse && $db_config['log']) {
elog('Erreur PostgreSQL: " '.$this->erreur().' ", avec la requète: { '.$query.' }.', 1);
}
$this->num_rows = pg_num_rows($this->reponse);
if ($this->num_rows == 0) {
return null;
} elseif ($this->num_rows >= 1) {
@ -162,23 +162,23 @@ class BDD
return false;
}
}
public function unique_query($query)
{
if (!$this->session) {
return false;
}
$this->reponse = pg_query($this->session, $query);
global $db_config;
if (!$this->reponse && $db_config['log']) {
elog('Erreur PostgreSQL: " '.$this->erreur().' ", avec la requète: { '.$query.' }.', 1);
}
$this->num_rows = pg_num_rows($this->reponse);
if ($this->num_rows == 0) {
return null;
} elseif ($this->num_rows >= 1) {
@ -187,13 +187,23 @@ class BDD
return false;
}
}
public function affected()
{
if (!$this->session) {
return false;
}
return pg_affected_rows($this->reponse);
}
public function update_classement()
{
if (!$this->session) {
return false;
}
global $table_user;
$query = "UPDATE $table_user SET place_points=subquery.rn FROM (SELECT id, points, place_points, row_number() over (order by points DESC) as rn FROM $table_user) AS subquery WHERE $table_user.id=subquery.id;";
pg_query($this->session, $query);
}
}