Allow overriding of PlSession::fillSession()
[platal.git] / classes / env.php
index 1d4b737..abfea48 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -41,6 +41,25 @@ class Env
         return Env::_get($key, $default);
     }
 
+    public static function s($key, $default = '')
+    {
+        return (string)Env::_get($key, $default);
+    }
+
+    public static function t($key, $default = '')
+    {
+        return trim(Env::s($key, $default));
+    }
+
+    public static function blank($key, $strict = false)
+    {
+        if (!Env::has($key)) {
+            return true;
+        }
+        $var = $strict ? Env::s($key) : Env::t($key);
+        return empty($var);
+    }
+
     public static function b($key, $default = false)
     {
         return (bool)Env::_get($key, $default);
@@ -48,8 +67,25 @@ class Env
 
     public static function i($key, $default = 0)
     {
-        $i = Env::_get($key, $default);
-        return is_numeric($i) ? intval($i) : $default;
+        $i = to_integer(Env::_get($key, $default));
+        return $i === false ? $default : $i;
+    }
+
+    public static function l(array $keys)
+    {
+        return array_map(array('Env', 'v'), $keys);
+    }
+
+    public static function set($key, $value)
+    {
+        $_REQUEST[$key] =& $value;
+    }
+
+    public static function bootstrap($key, $value)
+    {
+        if (!Env::has($key)) {
+            Env::set($key, $value);
+        }
     }
 }
 
@@ -80,10 +116,46 @@ class Post
         return (bool)Post::_get($key, $default);
     }
 
+    public static function s($key, $default = '')
+    {
+        return (string)Post::_get($key, $default);
+    }
+
+    public static function t($key, $default = '')
+    {
+        return trim(Post::s($key, $default));
+    }
+
+    public static function blank($key, $strict = false)
+    {
+        if (!Post::has($key)) {
+            return true;
+        }
+        $var = $strict ? Post::s($key) : Post::t($key);
+        return empty($var);
+    }
+
     public static function i($key, $default = 0)
     {
-        $i = Post::_get($key, $default);
-        return is_numeric($i) ? intval($i) : $default;
+        $i = to_integer(Post::_get($key, $default));
+        return $i === false ? $default : $i;
+    }
+
+     public static function l(array $keys)
+    {
+        return array_map(array('Post', 'v'), $keys);
+    }
+
+    public static function set($key, $value)
+    {
+        $_POST[$key] =& $value;
+    }
+
+    public static function bootstrap($key, $value)
+    {
+        if (!Post::has($key)) {
+            Post::set($key, $value);
+        }
     }
 }
 
@@ -114,10 +186,46 @@ class Get
         return (bool)Get::_get($key, $default);
     }
 
+    public static function s($key, $default = '')
+    {
+        return (string)Get::_get($key, $default);
+    }
+
+    public static function t($key, $default = '')
+    {
+        return trim(Get::s($key, $default));
+    }
+
+    public static function blank($key, $strict = false)
+    {
+        if (!Get::has($key)) {
+            return true;
+        }
+        $var = $strict ? Get::s($key) : Get::t($key);
+        return empty($var);
+    }
+
     public static function i($key, $default = 0)
     {
-        $i = Get::_get($key, $default);
-        return is_numeric($i) ? intval($i) : $default;
+        $i = to_integer(Get::_get($key, $default));
+        return $i === false ? $default : $i;
+    }
+
+    public static function l(array $keys)
+    {
+        return array_map(array('Get', 'v'), $keys);
+    }
+
+    public static function set($key, $value)
+    {
+        $_GET[$key] =& $value;
+    }
+
+    public static function bootstrap($key, $value)
+    {
+        if (!Get::has($key)) {
+            Get::set($key, $value);
+        }
     }
 }
 
@@ -125,24 +233,60 @@ class Cookie
 {
     public static function _get($key, $default)
     {
+        global $globals;
+        $key = $globals->cookie_ns . $key;
         return isset($_COOKIE[$key]) ? $_COOKIE[$key] : $default;
     }
 
     public static function has($key)
     {
+        global $globals;
+        $key = $globals->cookie_ns . $key;
         return isset($_COOKIE[$key]);
     }
 
     public static function kill($key)
     {
+        global $globals;
+        $key = $globals->cookie_ns . $key;
+        setcookie($key, '', time() - 3600, $globals->cookie_path);
         unset($_COOKIE[$key]);
     }
 
+    public static function set($key, $value, $days, $secure = false) {
+        global $globals;
+        $key = $globals->cookie_ns . $key;
+        if (!$secure || @$_SERVER['HTTPS']) {
+            setcookie($key, $value, time() + 86400 * $days, $globals->cookie_path, '',
+                      $secure, $secure);
+            $_COOKIE[$key] = $value;
+        }
+    }
+
     public static function v($key, $default = null)
     {
         return Cookie::_get($key, $default);
     }
 
+    public static function s($key, $default = '')
+    {
+        return (string)Cookie::_get($key, $default);
+    }
+
+    public static function t($key, $default = '')
+    {
+        return trim(Cookie::s($key, $default));
+    }
+
+    public static function blank($key, $strict = false)
+    {
+        if (!Cookie::has($key)) {
+            return true;
+        }
+        $var = $strict ? Cookie::s($key) : Cookie::t($key);
+        return empty($var);
+    }
+
     public static function b($key, $default = false)
     {
         return (bool)Cookie::_get($key, $default);
@@ -150,8 +294,13 @@ class Cookie
 
     public static function i($key, $default = 0)
     {
-        $i = Cookie::_get($key, $default);
-        return is_numeric($i) ? intval($i) : $default;
+        $i = to_integer(Cookie::_get($key, $default));
+        return $i === false ? $default : $i;
+    }
+
+    public static function l(array $keys)
+    {
+        return array_map(array('Cookie', 'v'), $keys);
     }
 }
 
@@ -162,13 +311,6 @@ function fix_gpc_magic(&$item, $key) {
         $item = stripslashes($item);
     }
 }
-function fix_encoding(&$item, $key) {
-    if (is_array($item)) {
-        array_walk($item, 'fix_encoding');
-    } elseif (preg_match('/[\x80-\x9f]/', $item)) {
-        $item = iconv('CP1252', 'ISO-8859-15//TRANSLIT', $item);
-    }
-}
 
 if (ini_get('magic_quotes_gpc') && empty($DONT_FIX_GPC)) {
     array_walk($_GET, 'fix_gpc_magic');
@@ -176,7 +318,6 @@ if (ini_get('magic_quotes_gpc') && empty($DONT_FIX_GPC)) {
     array_walk($_COOKIE, 'fix_gpc_magic');
     array_walk($_REQUEST, 'fix_gpc_magic');
 }
-array_walk($_POST, 'fix_encoding');
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>