"Error",
E_WARNING => "Warning",
E_PARSE => "Parsing Error",
E_NOTICE => "Notice",
E_CORE_ERROR => "Core Error",
E_CORE_WARNING => "Core Warning",
E_COMPILE_ERROR => "Compile Error",
E_COMPILE_WARNING => "Compile Warning",
E_USER_ERROR => "User Error",
E_USER_WARNING => "User Warning",
E_USER_NOTICE => "User Notice",
E_STRICT => "Runtime Notice",
E_RECOVERABLE_ERROR => "Recoverable Error"
);
}
global $globals;
if (isset($globals) && !$globals->debug) {
if ($errno == E_NOTICE || $errno == E_USER_NOTICE || $errno == E_STRICT) {
return;
}
}
$type = isset($errortype[$errno]) ? $errortype[$errno] : $errno;
$errstr = utf8_encode(htmlentities($errstr));
if (php_sapi_name() == 'cli') {
$GLOBALS['pl_errors'] = "$type: $errstr\n $errfile:$errline\n";
} else {
$GLOBALS['pl_errors'][] =
"
".
"{$type} $errstr
".
"$errfile : $errline".
"
";
}
}
function pl_clear_errors()
{
unset($GLOBALS['pl_errors']);
}
function pl_dump_env()
{
echo "";
echo "\nSESSION: " . session_id(); var_dump($_SESSION);
echo "\nPOST: "; var_dump($_POST);
echo "\nGET: "; var_dump($_GET);
echo "\nCOOKIE: "; var_dump($_COOKIE);
echo "
";
}
function pl_print_errors()
{
if (!empty($GLOBALS['pl_errors'])) {
print join("\n", $GLOBALS['pl_errors']);
}
}
set_error_handler('pl_error_handler', E_ALL | E_STRICT);
register_shutdown_function('pl_print_errors');
//register_shutdown_function('pl_dump_env');
/** Check if the string is utf8
*/
function is_utf8($s)
{
return @iconv('utf-8', 'utf-8', $s) == $s;
}
/** vérifie si une adresse email est bien formatée * ATTENTION, cette fonction ne doit pas être appelée sur une chaîne ayant subit un addslashes (car elle accepte le "'" qui it alors un "\'"
* @param $email l'adresse email a verifier
* @return BOOL */
function isvalid_email($email)
{
// la rfc2822 authorise les caractères "a-z", "0-9", "!", "#", "$", "%", "&", "'", "*", "+", "-", "/", "=", "?", "^", `", "{", "|", "}", "~" aussi bien dans la partie locale que dans le domaine.
// Pour la partie locale, on réduit cet ensemble car il n'est pas utilisé.
// Pour le domaine, le système DNS limite à [a-z0-9.-], on y ajoute le "_" car il est parfois utilisé.
return preg_match("/^[a-z0-9_.'+-]+@[a-z0-9._-]+\.[a-z]{2,6}$/i", $email);
}
function pl_url($path, $query = null, $fragment = null)
{
global $platal;
$base = $platal->ns . $path . ($query ? '?'.$query : '');
return $fragment ? $base.'#'.$fragment : $base;
}
function pl_self($n = null) {
global $platal;
return $platal->pl_self($n);
}
function http_redirect($fullurl)
{
Platal::session()->close();
header('Location: '. $fullurl);
exit;
}
function pl_redirect($path, $query = null, $fragment = null)
{
global $globals;
http_redirect($globals->baseurl . '/' . pl_url($path, $query, $fragment));
}
function pl_entities($text, $mode = ENT_COMPAT)
{
return htmlentities($text, $mode, 'UTF-8');
}
function pl_entity_decode($text, $mode = ENT_COMPAT)
{
return html_entity_decode($text, $mode, 'UTF-8');
}
/**
* Returns the path of a static content, including, when appropriate, the
* version number. This is used to avoid cross-version cache issues, by ensuiring
* that all static resources are served on a unique path.
*/
function pl_static_content_path($path, $filename)
{
global $globals;
if (isset($globals) && isset($globals->version)) {
return $path . $globals->version . '/' . $filename;
} else {
return $path . $filename;
}
}
/**
* Adds content type headers; by default the encoding used is utf-8.
*/
function pl_content_headers($content_type, $encoding = 'utf-8')
{
if (is_null($encoding)) {
header("Content-Type: $content_type");
} else {
header("Content-Type: $content_type; charset=$encoding");
}
}
/**
* Adds content type and caching headers for content generated by plat/al. The
* cache duration defaults to the global static_cache_duration. No encoding is
* applied by default.
*/
function pl_cached_content_headers($content_type, $encoding = null, $cache_duration = -1)
{
global $globals;
$cache_duration = ($cache_duration < 0 ? $globals->static_cache_duration : $cache_duration);
header("Cache-Control: max-age=$cache_duration");
header("Expires: " . gmdate('D, d M Y H:i:s', time() + $cache_duration) . " GMT");
header("Pragma: ");
pl_content_headers($content_type, $encoding);
}
/**
* Same as above, but applying an expiration time suitable for cacheable dynamic
* content (eg. photos, logos, ...).
*/
function pl_cached_dynamic_content_headers($content_type, $encoding = null)
{
global $globals;
pl_cached_content_headers($content_type, $encoding, $globals->dynamic_cache_duration);
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>