summaryrefslogtreecommitdiff
path: root/lib/Minz
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-07-21 18:00:32 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-07-21 18:00:32 +0200
commit8d7ac978f9af4819fc788e7e0a514dc7ca9886d9 (patch)
treefcc7e399a5f628a904518b7b522b17cef67a76e1 /lib/Minz
parenta4dac0f791ae6d34b64cee5a3fae1815f6f70a2b (diff)
parent73bbdaa015ec8596603fa88bd2cb03f85548e05e (diff)
Merge branch 'dev' into beta
Diffstat (limited to 'lib/Minz')
-rw-r--r--lib/Minz/Configuration.php80
-rw-r--r--lib/Minz/ModelPdo.php58
-rw-r--r--lib/Minz/Request.php5
-rw-r--r--lib/Minz/Translate.php34
4 files changed, 102 insertions, 75 deletions
diff --git a/lib/Minz/Configuration.php b/lib/Minz/Configuration.php
index 16c8eb727..4e9da58b4 100644
--- a/lib/Minz/Configuration.php
+++ b/lib/Minz/Configuration.php
@@ -297,41 +297,61 @@ class Minz_Configuration {
// Base de données
if (isset ($ini_array['db'])) {
$db = $ini_array['db'];
- if (empty($db['host'])) {
+ if (empty($db['type'])) {
throw new Minz_BadConfigurationException (
- 'host',
+ 'type',
Minz_Exception::ERROR
);
}
- if (empty($db['user'])) {
- throw new Minz_BadConfigurationException (
- 'user',
- Minz_Exception::ERROR
- );
- }
- if (!isset ($db['password'])) {
- throw new Minz_BadConfigurationException (
- 'password',
- Minz_Exception::ERROR
- );
- }
- if (empty($db['base'])) {
- throw new Minz_BadConfigurationException (
- 'base',
- Minz_Exception::ERROR
- );
- }
-
- if (!empty($db['type'])) {
- self::$db['type'] = $db['type'];
- }
- self::$db['host'] = $db['host'];
- self::$db['user'] = $db['user'];
- self::$db['password'] = $db['password'];
- self::$db['base'] = $db['base'];
- if (isset($db['prefix'])) {
- self::$db['prefix'] = $db['prefix'];
+ switch ($db['type']) {
+ case 'mysql':
+ if (empty($db['host'])) {
+ throw new Minz_BadConfigurationException (
+ 'host',
+ Minz_Exception::ERROR
+ );
+ }
+ if (empty($db['user'])) {
+ throw new Minz_BadConfigurationException (
+ 'user',
+ Minz_Exception::ERROR
+ );
+ }
+ if (!isset($db['password'])) {
+ throw new Minz_BadConfigurationException (
+ 'password',
+ Minz_Exception::ERROR
+ );
+ }
+ if (empty($db['base'])) {
+ throw new Minz_BadConfigurationException (
+ 'base',
+ Minz_Exception::ERROR
+ );
+ }
+ self::$db['host'] = $db['host'];
+ self::$db['user'] = $db['user'];
+ self::$db['password'] = $db['password'];
+ self::$db['base'] = $db['base'];
+ if (isset($db['prefix'])) {
+ self::$db['prefix'] = $db['prefix'];
+ }
+ break;
+ case 'sqlite':
+ self::$db['host'] = '';
+ self::$db['user'] = '';
+ self::$db['password'] = '';
+ self::$db['base'] = '';
+ self::$db['prefix'] = '';
+ break;
+ default:
+ throw new Minz_BadConfigurationException (
+ 'type',
+ Minz_Exception::ERROR
+ );
+ break;
}
+ self::$db['type'] = $db['type'];
}
}
diff --git a/lib/Minz/ModelPdo.php b/lib/Minz/ModelPdo.php
index 831df13a2..1f56f09c2 100644
--- a/lib/Minz/ModelPdo.php
+++ b/lib/Minz/ModelPdo.php
@@ -16,6 +16,7 @@ class Minz_ModelPdo {
public static $useSharedBd = true;
private static $sharedBd = null;
private static $sharedPrefix;
+ protected static $sharedDbType;
/**
* $bd variable représentant la base de données
@@ -24,46 +25,57 @@ class Minz_ModelPdo {
protected $prefix;
+ public function dbType() {
+ return self::$sharedDbType;
+ }
+
/**
* Créé la connexion à la base de données à l'aide des variables
* HOST, BASE, USER et PASS définies dans le fichier de configuration
*/
- public function __construct () {
+ public function __construct() {
if (self::$useSharedBd && self::$sharedBd != null) {
$this->bd = self::$sharedBd;
$this->prefix = self::$sharedPrefix;
return;
}
- $db = Minz_Configuration::dataBase ();
- $driver_options = null;
+ $db = Minz_Configuration::dataBase();
try {
$type = $db['type'];
- if($type == 'mysql') {
- $string = $type
- . ':host=' . $db['host']
+ if ($type === 'mysql') {
+ $string = 'mysql:host=' . $db['host']
. ';dbname=' . $db['base']
. ';charset=utf8';
$driver_options = array(
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
+ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
+ );
+ $this->prefix = $db['prefix'] . Minz_Session::param('currentUser', '_') . '_';
+ } elseif ($type === 'sqlite') {
+ $string = 'sqlite:' . DATA_PATH . '/' . Minz_Session::param('currentUser', '_') . '.sqlite';
+ $driver_options = array(
+ //PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+ );
+ $this->prefix = '';
+ } else {
+ throw new Minz_PDOConnectionException(
+ 'Invalid database type!',
+ $db['user'], Minz_Exception::ERROR
);
- } elseif($type == 'sqlite') {
- $string = $type . ':/' . DATA_PATH . $db['base'] . '.sqlite'; //TODO: DEBUG UTF-8 http://www.siteduzero.com/forum/sujet/sqlite-connexion-utf-8-18797
}
+ self::$sharedDbType = $type;
+ self::$sharedPrefix = $this->prefix;
- $this->bd = new FreshPDO (
+ $this->bd = new FreshPDO(
$string,
$db['user'],
$db['password'],
$driver_options
);
self::$sharedBd = $this->bd;
-
- $this->prefix = $db['prefix'] . Minz_Session::param('currentUser', '_') . '_';
- self::$sharedPrefix = $this->prefix;
} catch (Exception $e) {
- throw new Minz_PDOConnectionException (
+ throw new Minz_PDOConnectionException(
$string,
$db['user'], Minz_Exception::ERROR
);
@@ -80,20 +92,6 @@ class Minz_ModelPdo {
$this->bd->rollBack();
}
- public function size($all = false) {
- $db = Minz_Configuration::dataBase ();
- $sql = 'SELECT SUM(data_length + index_length) FROM information_schema.TABLES WHERE table_schema = ?';
- $values = array ($db['base']);
- if (!$all) {
- $sql .= ' AND table_name LIKE ?';
- $values[] = $this->prefix . '%';
- }
- $stm = $this->bd->prepare ($sql);
- $stm->execute ($values);
- $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
- return $res[0];
- }
-
public static function clean() {
self::$sharedBd = null;
self::$sharedPrefix = '';
@@ -107,12 +105,12 @@ class FreshPDO extends PDO {
}
}
- public function prepare ($statement, $driver_options = array()) {
+ public function prepare($statement, $driver_options = array()) {
FreshPDO::check($statement);
return parent::prepare($statement, $driver_options);
}
- public function exec ($statement) {
+ public function exec($statement) {
FreshPDO::check($statement);
return parent::exec($statement);
}
diff --git a/lib/Minz/Request.php b/lib/Minz/Request.php
index 7e3c59990..755784522 100644
--- a/lib/Minz/Request.php
+++ b/lib/Minz/Request.php
@@ -28,6 +28,9 @@ class Minz_Request {
return self::$params;
}
static function htmlspecialchars_utf8 ($p) {
+ if (is_array($p)) {
+ return array_map('self::htmlspecialchars_utf8', $p);
+ }
return htmlspecialchars($p, ENT_COMPAT, 'UTF-8');
}
public static function param ($key, $default = false, $specialchars = false) {
@@ -35,8 +38,6 @@ class Minz_Request {
$p = self::$params[$key];
if(is_object($p) || $specialchars) {
return $p;
- } elseif(is_array($p)) {
- return array_map('self::htmlspecialchars_utf8', $p);
} else {
return self::htmlspecialchars_utf8($p);
}
diff --git a/lib/Minz/Translate.php b/lib/Minz/Translate.php
index e14f783f7..df48350e9 100644
--- a/lib/Minz/Translate.php
+++ b/lib/Minz/Translate.php
@@ -18,28 +18,28 @@ class Minz_Translate {
* $translates est le tableau de correspondance
* $key => $traduction
*/
- private static $translates = array ();
+ private static $translates = array();
/**
* Inclus le fichier de langue qui va bien
* l'enregistre dans $translates
*/
- public static function init () {
- $l = Minz_Configuration::language ();
- self::$language = Minz_Session::param ('language', $l);
+ public static function init() {
+ $l = Minz_Configuration::language();
+ self::$language = Minz_Session::param('language', $l);
$l_path = APP_PATH . '/i18n/' . self::$language . '.php';
- if (file_exists ($l_path)) {
- self::$translates = include ($l_path);
+ if (file_exists($l_path)) {
+ self::$translates = include($l_path);
}
}
/**
* Alias de init
*/
- public static function reset () {
- self::init ();
+ public static function reset() {
+ self::init();
}
/**
@@ -48,24 +48,32 @@ class Minz_Translate {
* @return la valeur correspondante à la clé
* > si non présente dans le tableau, on retourne la clé elle-même
*/
- public static function t ($key) {
+ public static function t($key) {
$translate = $key;
- if (isset (self::$translates[$key])) {
+ if (isset(self::$translates[$key])) {
$translate = self::$translates[$key];
}
- $args = func_get_args ();
+ $args = func_get_args();
unset($args[0]);
- return vsprintf ($translate, $args);
+ return vsprintf($translate, $args);
}
/**
* Retourne la langue utilisée actuellement
* @return la langue
*/
- public static function language () {
+ public static function language() {
return self::$language;
}
}
+
+function _t($key) {
+ $args = func_get_args();
+ unset($args[0]);
+ array_unshift($args, $key);
+
+ return call_user_func_array("Minz_Translate::t", $args);
+}