backoffice/framework/fwk.php
2011-06-21 13:28:10 +00:00

283 lines
8.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?
define('FWK_PATH', realpath(dirname(__FILE__)).'/');
include_once(FWK_PATH.'common/mysql.php');
include_once(FWK_PATH.'common/strings.php');
//include_once(FWK_PATH.'common/dates.php');
define ('REP_TEMP', '/tmp/');
// Environnement : DEV ou PRD
define ('ENV', 'DEV');
define ('EOL', "\n");
define ('MODE_CLI', 1);
define ('MODE_WWW', 2);
define ('MODE_WS', 3);
if (@$_SERVER['argc']>0) define('MODE_EXEC', MODE_CLI);
else define('MODE_EXEC', MODE_WS);
/** @todo Gérer la distinction du mode WWW du WS
else define('MODE_EXEC', MODE_WWW);
*/
/** TimeStamp Unix
** Si $onlyMiliSec=true, retourne juste les milisec du timestamp
**/
function microtime_float($onlyMiliSec=false) {
list($usec, $sec) = explode(' ', microtime());
if (!$onlyMiliSec)
return ((float)$usec + (float)$sec);
else
return $usec;
}
/** Fait une pause aléatoire entre 0 et 15 secondes par défaut
**/
function randsleep($min_sec=0, $max_sec=15) {
sleep(rand($min_sec, $max_sec));
}
/** Retourne la factorielle d'un nombre : 4! = 1*2*3*4 = 24
**/
function factorielle($nbr) {
if($nbr === 0) // condition d'arret
return 1;
else
return $nbr*factorielle($nbr-1);
}
/** Vérification que la variable demandé respecte bien les règles passées en paramètres
* @param mixed Variable à tester
* @param int Longueur minimum en caractère de la variable
* @param int Longueur mximum
* @param char(1) Type de variable <b>A</b>:Alphanumérique / <b>N</b>:Numérique
* @param mixed Message textuel d'erreur à afficher en cas d'erreur ou false
* @return mixed true, false ou Message d'erreur passé en paramètre
*/
function valideData($variable, $taille_min, $taille_max, $type_variable, $erreur=false){
if ( strlen((string)$variable) < $taille_min )
return $erreur;
if ( strlen((string)$variable) > $taille_max )
return $erreur;
if ( $type_variable == 'A' )
if ( is_string($variable) == true )
return true;
else
return $erreur;
elseif ( $type_variable == 'N')
{
for ($i=0; $i < strlen((string)$variable); $i++)
{
$car = substr((string)$variable,$i,1);
if ($car<'0' || $car>'9')
return $erreur;
}
return true;
}
return $erreur;
}
function adapteOCtets($size) {
$kb = 1024; // Kilobyte
$mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte
$tb = 1024 * $gb; // Terabyte
if($size==0) return '0';
else if($size < $kb) return $size.'o';
else if($size < $mb) return round($size/$kb,2).'ko';
else if($size < $gb) return round($size/$mb,2).'Mo';
else if($size < $tb) return round($size/$gb,2).'Go';
else return round($size/$tb,2).'To';
}
/**
** Enregistrer une information dans la log
**
** @param string $debugLevel E=Error, W=Warning, N=Notice, I=Info, D=Debug
** @param string $message Message d'erreur à inscrire dans la log
** @param integer $line __LINE__
** @param string $file __FILE__
** @param string $function __FUNCTION__
** @param string $class __CLASS___
**/
function debugLog($debugLevel, $message, $line, $file, $function, $class) {
if (!file_exists(LOG_PATH.'/debug.log')) {
$fp=fopen(LOG_PATH.'/debug.log', 'a');
fwrite($fp, 'Date/Heure;Niveau;Script;Login;Password;Adresse IP;Action SOAP;Ligne;Fichier;Fonction;Classe;Domaine;POST DATA;Memory;Message'.EOL);
} else
$fp=fopen(LOG_PATH.'/debug.log', 'a');
fwrite($fp, date('Y/m/d-H:i:s') .';'. $debugLevel .';'. $_SERVER['PHP_SELF'] .';'. $_SERVER['PHP_AUTH_USER'] .';'. $_SERVER['PHP_AUTH_PW'] .';'.
$_SERVER['REMOTE_ADDR'] .';'. $_SERVER['HTTP_SOAPACTION'] .';'.$line.';'. $file.';'. $function.';'. $class .';'.
@gethostbyaddr($_SERVER['REMOTE_ADDR']) .';'. $HTTP_RAW_POST_DATA .';'. @memory_get_usage().';'. $message . EOL);
fclose($fp);
if ($debugLevel=='E'){
if (!file_exists(LOG_PATH.'/debugError.log')) {
$fp=fopen(LOG_PATH.'/debugError.log', 'a');
fwrite($fp, 'Date/Heure;Niveau;Script;Login;Password;Adresse IP;Action SOAP;Ligne;Fichier;Fonction;Classe;Domaine;POST DATA;Message'.EOL);
} else
$fp=fopen(LOG_PATH.'/debugError.log', 'a');
fwrite($fp, date('Y/m/d-H:i:s') .';'. $debugLevel .';'. $_SERVER['PHP_SELF'] .';'. $_SERVER['PHP_AUTH_USER'] .';'. $_SERVER['PHP_AUTH_PW'] .';'.
$_SERVER['REMOTE_ADDR'] .';'. $_SERVER['HTTP_SOAPACTION'] .';'.$line.';'. $file.';'. $function.';'. $class .';'.
@gethostbyaddr($_SERVER['REMOTE_ADDR']) .';'. $HTTP_RAW_POST_DATA .';'. @memory_get_usage().';'. $message . EOL);
fclose($fp);
//die($message);
}
}
function prepareString($str) {
$tabReplace=array();
for($c=0;$c<32; $c++)
$tabReplace[''.chr($c)]='';
for($c=127;$c<256; $c++)
$tabReplace[''.chr($c)]='';
return strtr(
strtr(htmlentities(utf8_decode(strtr(strtr($str, 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝŸ…‘‹',
"aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY.''"), array('œ'=>'oe'))), ENT_QUOTES, 'ISO-8859-1'),array('€'=>'&euro;',''=>'"')),
$tabReplace);
//return */
//return utf8_encode($str);
}
/**
** Déplacement d'un fichier. Retourne false en cas d'erreur.
**
** @param string $from
** @param string $to
** @return bool
**/
function move($from, $to) {
return (copy($from, $to) and unlink($from));
}
/** Converti une IP en nombre
**
** @param string $ip Adresse IP
** @return integer
**/
function getIpNumber($ip) {
$tab=explode('.', $ip);
return (($tab[0]*256*256*256) + ($tab[1]*256*256) + ($tab[2]*256) + ($tab[3]));
}
/** Vérifie si une IP est dans une plage du type 192.168.3.1-192.168.3.10
**
** @param string $plage_1 Plage IP de début
** @param string $plage_2 Plage IP de fin
** @param string $ip Adresse IP à tester
** @return boolean
**/
function in_plage($plage_1,$plage_2,$ip){
$ip2=getIpNumber($ip);
if ($ip2>=getIpNumber($plage_1) && $ip2<=getIpNumber($plage_2))
return true;
else
return false;
}
/** Controle si une adresse IP est dans une liste des IP communiquées sous la forme 192.168.3.5-192.68.3.10;192.168.3.*;192.168.3.10
**
** @param string $strPlageIP La plage d'adresses IP
** @param string $adresseIP L'adresse IP à tester
** @return boolean
**/
function checkPlagesIp($strPlageIP, $adresseIP) {
$connected=false;
$tabIpAllowed=explode(';', trim($strPlageIP));
if (count($tabIpAllowed)==1 && $tabIpAllowed[0]=='')
$tabIpAllowed=array();
foreach ($tabIpAllowed as $ip) {
$tabPlages=explode('-', $ip);
// C'est une plage d'adresse '-'
if (isset($tabPlages[1]))
$connected=in_plage($tabPlages[0],$tabPlages[1],$adresseIP);
else {
// C'est une adresse avec ou sans masque '*'
if (preg_match('/^'.str_replace('*','.*',str_replace('.','\.',$ip)).'$/', $adresseIP) )
$connected=true;
}
if ($connected) break;
}
if (count($tabIpAllowed)==0) return false;
elseif (!$connected) {
return false;
}
return true;
}
/**
* @return bool
* @param string $in
* @param string $out
* @desc compressing the file with the bzip2-extension
*/
function bzip2 ($in, $out)
{
if (!file_exists ($in) || !is_readable ($in))
return false;
if ((!file_exists ($out) && !is_writeable (dirname ($out)) || (file_exists($out) && !is_writable($out)) ))
return false;
$in_file = fopen ($in, 'rb');
$out_file = bzopen ($out.'.bz2', 'wb');
while (!feof ($in_file)) {
$buffer = fgets ($in_file, 4096);
bzwrite ($out_file, $buffer, 4096);
}
fclose ($in_file);
bzclose ($out_file);
return true;
}
/**
* @return bool
* @param string $in
* @param string $out
* @desc uncompressing the file with the bzip2-extension
*/
function bunzip2 ($in, $out)
{
if (!file_exists ($in) || !is_readable ($in))
return false;
if ((!file_exists ($out) && !is_writeable (dirname ($out)) || (file_exists($out) && !is_writable($out)) ))
return false;
$in_file = bzopen ($in, "rb");
$out_file = fopen ($out, "wb");
while ($buffer = bzread ($in_file, 4096)) {
fwrite ($out_file, $buffer, 4096);
}
bzclose ($in_file);
fclose ($out_file);
return true;
}
class DomDocument2 extends DOMDocument {
function getValueFromTag($tagName) {
$items=$this->getElementsByTagName($tagName);
foreach ($items as $item) {
return utf8_decode($item->nodeValue);
}
}
}
?>