aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-08-24 15:29:09 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-08-24 15:29:09 +0200
commit07444280d1a03daa7880c1539bde3a6e80945dab (patch)
treec328a11f59e07d12e624576ed86b11ada1b9d198 /lib/Minz
parent1d2527b8bc2a125cc8b8508402417f60d314e330 (diff)
parentd1f79fee69a3667913f419cd9726ffb11f410bd0 (diff)
Merge branch 'dev' into beta
Conflicts: README.md
Diffstat (limited to 'lib/Minz')
-rw-r--r--lib/Minz/Helper.php17
-rw-r--r--lib/Minz/ModelPdo.php20
-rw-r--r--lib/Minz/Request.php118
-rw-r--r--lib/Minz/Session.php74
-rw-r--r--lib/Minz/Translate.php2
5 files changed, 144 insertions, 87 deletions
diff --git a/lib/Minz/Helper.php b/lib/Minz/Helper.php
index b058211d3..f4a547c4e 100644
--- a/lib/Minz/Helper.php
+++ b/lib/Minz/Helper.php
@@ -12,11 +12,22 @@ class Minz_Helper {
* Annule les effets des magic_quotes pour une variable donnée
* @param $var variable à traiter (tableau ou simple variable)
*/
- public static function stripslashes_r ($var) {
- if (is_array ($var)){
- return array_map (array ('Helper', 'stripslashes_r'), $var);
+ public static function stripslashes_r($var) {
+ if (is_array($var)){
+ return array_map(array('Minz_Helper', 'stripslashes_r'), $var);
} else {
return stripslashes($var);
}
}
+
+ /**
+ * Wrapper for htmlspecialchars.
+ * Force UTf-8 value and can be used on array too.
+ */
+ public static function htmlspecialchars_utf8($var) {
+ if (is_array($var)) {
+ return array_map(array('Minz_Helper', 'htmlspecialchars_utf8'), $var);
+ }
+ return htmlspecialchars($var, ENT_COMPAT, 'UTF-8');
+ }
}
diff --git a/lib/Minz/ModelPdo.php b/lib/Minz/ModelPdo.php
index 1f56f09c2..45a1e9451 100644
--- a/lib/Minz/ModelPdo.php
+++ b/lib/Minz/ModelPdo.php
@@ -33,8 +33,8 @@ class Minz_ModelPdo {
* 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() {
- if (self::$useSharedBd && self::$sharedBd != null) {
+ public function __construct($currentUser = null) {
+ if (self::$useSharedBd && self::$sharedBd != null && $currentUser === null) {
$this->bd = self::$sharedBd;
$this->prefix = self::$sharedPrefix;
return;
@@ -42,6 +42,10 @@ class Minz_ModelPdo {
$db = Minz_Configuration::dataBase();
+ if ($currentUser === null) {
+ $currentUser = Minz_Session::param('currentUser', '_');
+ }
+
try {
$type = $db['type'];
if ($type === 'mysql') {
@@ -51,9 +55,9 @@ class Minz_ModelPdo {
$driver_options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
- $this->prefix = $db['prefix'] . Minz_Session::param('currentUser', '_') . '_';
+ $this->prefix = $db['prefix'] . $currentUser . '_';
} elseif ($type === 'sqlite') {
- $string = 'sqlite:' . DATA_PATH . '/' . Minz_Session::param('currentUser', '_') . '.sqlite';
+ $string = 'sqlite:' . DATA_PATH . '/' . $currentUser . '.sqlite';
$driver_options = array(
//PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);
@@ -67,7 +71,7 @@ class Minz_ModelPdo {
self::$sharedDbType = $type;
self::$sharedPrefix = $this->prefix;
- $this->bd = new FreshPDO(
+ $this->bd = new MinzPDO(
$string,
$db['user'],
$db['password'],
@@ -98,7 +102,7 @@ class Minz_ModelPdo {
}
}
-class FreshPDO extends PDO {
+class MinzPDO extends PDO {
private static function check($statement) {
if (preg_match('/^(?:UPDATE|INSERT|DELETE)/i', $statement)) {
invalidateHttpCache();
@@ -106,12 +110,12 @@ class FreshPDO extends PDO {
}
public function prepare($statement, $driver_options = array()) {
- FreshPDO::check($statement);
+ MinzPDO::check($statement);
return parent::prepare($statement, $driver_options);
}
public function exec($statement) {
- FreshPDO::check($statement);
+ MinzPDO::check($statement);
return parent::exec($statement);
}
}
diff --git a/lib/Minz/Request.php b/lib/Minz/Request.php
index 755784522..52f53012f 100644
--- a/lib/Minz/Request.php
+++ b/lib/Minz/Request.php
@@ -10,7 +10,7 @@
class Minz_Request {
private static $controller_name = '';
private static $action_name = '';
- private static $params = array ();
+ private static $params = array();
private static $default_controller_name = 'index';
private static $default_action_name = 'index';
@@ -18,59 +18,53 @@ class Minz_Request {
/**
* Getteurs
*/
- public static function controllerName () {
+ public static function controllerName() {
return self::$controller_name;
}
- public static function actionName () {
+ public static function actionName() {
return self::$action_name;
}
- public static function params () {
+ public static function params() {
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) {
- if (isset (self::$params[$key])) {
+ public static function param($key, $default = false, $specialchars = false) {
+ if (isset(self::$params[$key])) {
$p = self::$params[$key];
- if(is_object($p) || $specialchars) {
+ if (is_object($p) || $specialchars) {
return $p;
} else {
- return self::htmlspecialchars_utf8($p);
+ return Minz_Helper::htmlspecialchars_utf8($p);
}
} else {
return $default;
}
}
- public static function defaultControllerName () {
+ public static function defaultControllerName() {
return self::$default_controller_name;
}
- public static function defaultActionName () {
+ public static function defaultActionName() {
return self::$default_action_name;
}
/**
* Setteurs
*/
- public static function _controllerName ($controller_name) {
+ public static function _controllerName($controller_name) {
self::$controller_name = $controller_name;
}
- public static function _actionName ($action_name) {
+ public static function _actionName($action_name) {
self::$action_name = $action_name;
}
- public static function _params ($params) {
+ public static function _params($params) {
if (!is_array($params)) {
- $params = array ($params);
+ $params = array($params);
}
self::$params = $params;
}
- public static function _param ($key, $value = false) {
+ public static function _param($key, $value = false) {
if ($value === false) {
- unset (self::$params[$key]);
+ unset(self::$params[$key]);
} else {
self::$params[$key] = $value;
}
@@ -79,14 +73,14 @@ class Minz_Request {
/**
* Initialise la Request
*/
- public static function init () {
- self::magicQuotesOff ();
+ public static function init() {
+ self::magicQuotesOff();
}
/**
* Retourn le nom de domaine du site
*/
- public static function getDomainName () {
+ public static function getDomainName() {
return $_SERVER['HTTP_HOST'];
}
@@ -94,7 +88,7 @@ class Minz_Request {
* Détermine la base de l'url
* @return la base de l'url
*/
- public static function getBaseUrl () {
+ public static function getBaseUrl() {
$defaultBaseUrl = Minz_Configuration::baseUrl();
if (!empty($defaultBaseUrl)) {
return $defaultBaseUrl;
@@ -109,13 +103,13 @@ class Minz_Request {
* Récupère l'URI de la requête
* @return l'URI
*/
- public static function getURI () {
- if (isset ($_SERVER['REQUEST_URI'])) {
- $base_url = self::getBaseUrl ();
+ public static function getURI() {
+ if (isset($_SERVER['REQUEST_URI'])) {
+ $base_url = self::getBaseUrl();
$uri = $_SERVER['REQUEST_URI'];
- $len_base_url = strlen ($base_url);
- $real_uri = substr ($uri, $len_base_url);
+ $len_base_url = strlen($base_url);
+ $real_uri = substr($uri, $len_base_url);
} else {
$real_uri = '';
}
@@ -129,16 +123,16 @@ class Minz_Request {
* @param $redirect si vrai, force la redirection http
* > sinon, le dispatcher recharge en interne
*/
- public static function forward ($url = array (), $redirect = false) {
- $url = Minz_Url::checkUrl ($url);
+ public static function forward($url = array(), $redirect = false) {
+ $url = Minz_Url::checkUrl($url);
if ($redirect) {
- header ('Location: ' . Minz_Url::display ($url, 'php'));
- exit ();
+ header('Location: ' . Minz_Url::display($url, 'php'));
+ exit();
} else {
- self::_controllerName ($url['c']);
- self::_actionName ($url['a']);
- self::_params (array_merge (
+ self::_controllerName($url['c']);
+ self::_actionName($url['a']);
+ self::_params(array_merge(
self::$params,
$url['params']
));
@@ -146,6 +140,31 @@ class Minz_Request {
}
}
+
+ /**
+ * Wrappers good notifications + redirection
+ * @param $msg notification content
+ * @param $url url array to where we should be forwarded
+ */
+ public static function good($msg, $url = array()) {
+ Minz_Session::_param('notification', array(
+ 'type' => 'good',
+ 'content' => $msg
+ ));
+
+ Minz_Request::forward($url, true);
+ }
+
+ public static function bad($msg, $url = array()) {
+ Minz_Session::_param('notification', array(
+ 'type' => 'bad',
+ 'content' => $msg
+ ));
+
+ Minz_Request::forward($url, true);
+ }
+
+
/**
* Permet de récupérer une variable de type $_GET
* @param $param nom de la variable
@@ -154,10 +173,10 @@ class Minz_Request {
* $_GET si $param = false
* $default si $_GET[$param] n'existe pas
*/
- public static function fetchGET ($param = false, $default = false) {
+ public static function fetchGET($param = false, $default = false) {
if ($param === false) {
return $_GET;
- } elseif (isset ($_GET[$param])) {
+ } elseif (isset($_GET[$param])) {
return $_GET[$param];
} else {
return $default;
@@ -172,10 +191,10 @@ class Minz_Request {
* $_POST si $param = false
* $default si $_POST[$param] n'existe pas
*/
- public static function fetchPOST ($param = false, $default = false) {
+ public static function fetchPOST($param = false, $default = false) {
if ($param === false) {
return $_POST;
- } elseif (isset ($_POST[$param])) {
+ } elseif (isset($_POST[$param])) {
return $_POST[$param];
} else {
return $default;
@@ -188,15 +207,16 @@ class Minz_Request {
* $_POST
* $_COOKIE
*/
- private static function magicQuotesOff () {
- if (get_magic_quotes_gpc ()) {
- $_GET = Minz_Helper::stripslashes_r ($_GET);
- $_POST = Minz_Helper::stripslashes_r ($_POST);
- $_COOKIE = Minz_Helper::stripslashes_r ($_COOKIE);
+ private static function magicQuotesOff() {
+ if (get_magic_quotes_gpc()) {
+ $_GET = Minz_Helper::stripslashes_r($_GET);
+ $_POST = Minz_Helper::stripslashes_r($_POST);
+ $_COOKIE = Minz_Helper::stripslashes_r($_COOKIE);
}
}
- public static function isPost () {
- return $_SERVER['REQUEST_METHOD'] === 'POST';
+ public static function isPost() {
+ return isset($_SERVER['REQUEST_METHOD']) &&
+ $_SERVER['REQUEST_METHOD'] === 'POST';
}
}
diff --git a/lib/Minz/Session.php b/lib/Minz/Session.php
index ddabc4658..af4de75bb 100644
--- a/lib/Minz/Session.php
+++ b/lib/Minz/Session.php
@@ -2,28 +2,20 @@
/**
* La classe Session gère la session utilisateur
- * C'est un singleton
*/
class Minz_Session {
/**
- * $session stocke les variables de session
- */
- private static $session = array (); //TODO: Try to avoid having another local copy
-
- /**
* Initialise la session, avec un nom
- * Le nom de session est utilisé comme nom pour les cookies et les URLs (i.e. PHPSESSID).
+ * Le nom de session est utilisé comme nom pour les cookies et les URLs(i.e. PHPSESSID).
* Il ne doit contenir que des caractères alphanumériques ; il doit être court et descriptif
*/
- public static function init ($name) {
- // démarre la session
- session_name ($name);
- session_set_cookie_params (0, dirname(empty($_SERVER['REQUEST_URI']) ? '/' : dirname($_SERVER['REQUEST_URI'])), null, false, true);
- session_start ();
+ public static function init($name) {
+ $cookie = session_get_cookie_params();
+ self::keepCookie($cookie['lifetime']);
- if (isset ($_SESSION)) {
- self::$session = $_SESSION;
- }
+ // démarre la session
+ session_name($name);
+ session_start();
}
@@ -32,8 +24,8 @@ class Minz_Session {
* @param $p le paramètre à récupérer
* @return la valeur de la variable de session, false si n'existe pas
*/
- public static function param ($p, $default = false) {
- return isset(self::$session[$p]) ? self::$session[$p] : $default;
+ public static function param($p, $default = false) {
+ return isset($_SESSION[$p]) ? $_SESSION[$p] : $default;
}
@@ -42,13 +34,11 @@ class Minz_Session {
* @param $p le paramètre à créer ou modifier
* @param $v la valeur à attribuer, false pour supprimer
*/
- public static function _param ($p, $v = false) {
+ public static function _param($p, $v = false) {
if ($v === false) {
- unset ($_SESSION[$p]);
- unset (self::$session[$p]);
+ unset($_SESSION[$p]);
} else {
$_SESSION[$p] = $v;
- self::$session[$p] = $v;
}
}
@@ -57,15 +47,47 @@ class Minz_Session {
* Permet d'effacer une session
* @param $force si à false, n'efface pas le paramètre de langue
*/
- public static function unset_session ($force = false) {
- $language = self::param ('language');
+ public static function unset_session($force = false) {
+ $language = self::param('language');
session_destroy();
- self::$session = array ();
+ $_SESSION = array();
if (!$force) {
- self::_param ('language', $language);
- Minz_Translate::reset ();
+ self::_param('language', $language);
+ Minz_Translate::reset();
}
}
+
+
+ /**
+ * Spécifie la durée de vie des cookies
+ * @param $l la durée de vie
+ */
+ public static function keepCookie($l) {
+ $cookie_dir = empty($_SERVER['REQUEST_URI']) ? '' : $_SERVER['REQUEST_URI'];
+ session_set_cookie_params($l, $cookie_dir, '', false, true);
+ }
+
+
+ /**
+ * Régénère un id de session.
+ * Utile pour appeler session_set_cookie_params après session_start()
+ */
+ public static function regenerateID() {
+ session_regenerate_id(true);
+ }
+
+ public static function deleteLongTermCookie($name) {
+ setcookie($name, '', 1, '', '', false, true);
+ }
+
+ public static function setLongTermCookie($name, $value, $expire) {
+ setcookie($name, $value, $expire, '', '', false, true);
+ }
+
+ public static function getLongTermCookie($name) {
+ return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null;
+ }
+
}
diff --git a/lib/Minz/Translate.php b/lib/Minz/Translate.php
index df48350e9..8c2f90041 100644
--- a/lib/Minz/Translate.php
+++ b/lib/Minz/Translate.php
@@ -75,5 +75,5 @@ function _t($key) {
unset($args[0]);
array_unshift($args, $key);
- return call_user_func_array("Minz_Translate::t", $args);
+ return call_user_func_array('Minz_Translate::t', $args);
}