SMMP/manager/Database.php

110 lines
3.1 KiB
PHP
Executable File

<?php
namespace manager;
class DataBase{
/* ATTRIBUTS STATIQUES */
public static $config_path = '/f/json/database/conf';
private static $pdo;
private static $instance;
/* ATTRIBUTS */
private $host;
private $dbname;
private $username;
private $password;
public function __construct($host, $dbname, $username, $password){
$this->host = $host;
$this->dbname = $dbname;
$this->username = $username;
$this->password = $password;
// password: Qt358nUdyeTxLDM8
self::$pdo = new \PDO('mysql:host='.$host.';dbname='.$dbname, $username, $password);
}
/* retourne une instance de la classe */
public static function getInstance(){
if( self::$instance == null ){
// chargement de la configuration du server SQL
$conf = json_decode( ResourceDispatcher::getResource(self::$config_path), true );
// creation de l'instance en fonction des parametres
self::$instance = new DataBase($conf['host'], $conf['dbname'], $conf['user'], $conf['password']);
}
return self::$instance;
}
/* retourne la connection statique */
public static function getPDO(){
$instance = self::getInstance();
return self::$pdo;
}
/*************************************************************/
/* _____ ______ _ _ ______ _____ _ */
/* / ____| ____| \ | | ____| __ \ /\ | | */
/* | | __| |__ | \| | |__ | |__) | / \ | | */
/* | | |_ | __| | . ` | __| | _ / / /\ \ | | */
/* | |__| | |____| |\ | |____| | \ \ / ____ \| |____ */
/* \_____|______|_| \_|______|_| \_\/_/ \_\______| */
/* */
/*************************************************************/
/* SUPPRIME LES VALEURS À CLÉS NUMÉRIQUES DANS UN FETCH D'UNE TABLE DE LA BDD
*
* @fetchData<Array> le résultat d'une $requeteSQL->fetchAll()
*
* @return newFetchData<Array> retourne le tableau donné en paramètre mais sans les valeurs à clés numériques
*
*/
public static function delNumeric($fetchData, $oneDimension=false){
/* [1] 2 dimensions
===============================================*/
if( !$oneDimension ){
// on supprime les doublons des entrées (indice numérique)
for( $i = 0 ; $i < count($fetchData) ; $i++ ) // pour tout les utilisateurs
foreach($fetchData[$i] as $col => $val){ // pour toutes les entrées
if( !mb_detect_encoding($val, 'UTF-8') )
$fetchData[$i][$col] = utf8_encode($val);
if( is_int($col) ) // si l'indice est un entier
unset( $fetchData[$i][$col] ); // on le supprime
}
/* [2] 1 dimensions
===============================================*/
}else{
// on supprime les doublons des entrées (indice numérique)
foreach($fetchData as $i=>$val){ // pour toutes les entrées
if( !mb_detect_encoding($val, 'UTF-8') )
$fetchData[$i] = utf8_encode($val);
if( is_int($i) ) // si l'indice est un entier
unset( $fetchData[$i] ); // on le supprime
}
}
return $fetchData;
}
}
?>