Nettoyage
This commit is contained in:
parent
6853892f7a
commit
c0ba261f0a
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2000-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2000-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||||
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||||
@ -151,90 +151,88 @@ function sanitize_string($str)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Envoi des messages dolibarr dans un fichier ou dans syslog
|
\brief Envoi des messages dolibarr dans un fichier ou dans syslog
|
||||||
Pour fichier: fichier défini par SYSLOG_FILE
|
Pour fichier: fichier défini par SYSLOG_FILE
|
||||||
Pour syslog: facility défini par SYSLOG_FACILITY
|
Pour syslog: facility défini par SYSLOG_FACILITY
|
||||||
\param message Message a tracer
|
\param message Message a tracer
|
||||||
\param level Niveau de l'erreur
|
\param level Niveau de l'erreur
|
||||||
\remarks Cette fonction n'a un effet que si le module syslog est activé.
|
\remarks Cette fonction n'a un effet que si le module syslog est activé.
|
||||||
Warning, les fonctions syslog sont buggués sous Windows et génèrent des
|
Warning, les fonctions syslog sont buggués sous Windows et génèrent des
|
||||||
fautes de protection mémoire. Pour résoudre, utiliser le loggage fichier,
|
fautes de protection mémoire. Pour résoudre, utiliser le loggage fichier,
|
||||||
au lieu du loggage syslog (configuration du module).
|
au lieu du loggage syslog (configuration du module).
|
||||||
Si SYSLOG_FILE_NO_ERROR défini, on ne gère pas erreur ecriture log
|
Si SYSLOG_FILE_NO_ERROR défini, on ne gère pas erreur ecriture log
|
||||||
\remarks On windows LOG_ERROR=4, LOG_WARNING=5, LOG_NOTICE=LOG_DEBUG=6
|
\remarks On windows LOG_ERROR=4, LOG_WARNING=5, LOG_NOTICE=LOG_DEBUG=6
|
||||||
*/
|
*/
|
||||||
function dolibarr_syslog($message, $level=LOG_INFO)
|
function dolibarr_syslog($message, $level=LOG_INFO)
|
||||||
{
|
{
|
||||||
global $conf,$user,$langs;
|
global $conf,$user,$langs;
|
||||||
|
|
||||||
if ($conf->syslog->enabled)
|
if ($conf->syslog->enabled)
|
||||||
{
|
{
|
||||||
// Change this to LOg_DEBUG to see all messages on *nix
|
// Change this to LOg_DEBUG to see all messages on *nix
|
||||||
$level_maximum = LOG_INFO;
|
$level_maximum = LOG_INFO;
|
||||||
|
|
||||||
if ($level > $level_maximum) return;
|
if ($level > $level_maximum) return;
|
||||||
|
|
||||||
// Ajout user a la log
|
// Ajout user a la log
|
||||||
$login='???';
|
$login='???';
|
||||||
if (is_object($user) && $user->id) $login=$user->login;
|
if (is_object($user) && $user->id) $login=$user->login;
|
||||||
$message=sprintf("%-8s",$login)." ".$message;
|
$message=sprintf("%-8s",$login)." ".$message;
|
||||||
|
|
||||||
if (defined("SYSLOG_FILE") && SYSLOG_FILE)
|
if (defined("SYSLOG_FILE") && SYSLOG_FILE)
|
||||||
{
|
{
|
||||||
if (defined("SYSLOG_FILE_NO_ERROR")) $file=@fopen(SYSLOG_FILE,"a+");
|
if (defined("SYSLOG_FILE_NO_ERROR")) $file=@fopen(SYSLOG_FILE,"a+");
|
||||||
else $file=fopen(SYSLOG_FILE,"a+");
|
else $file=fopen(SYSLOG_FILE,"a+");
|
||||||
if ($file)
|
if ($file)
|
||||||
{
|
{
|
||||||
fwrite($file,strftime("%Y-%m-%d %H:%M:%S",time())." ".$level." ".$message."\n");
|
fwrite($file,strftime("%Y-%m-%d %H:%M:%S",time())." ".$level." ".$message."\n");
|
||||||
fclose($file);
|
fclose($file);
|
||||||
}
|
}
|
||||||
elseif (! defined("SYSLOG_FILE_NO_ERROR"))
|
elseif (! defined("SYSLOG_FILE_NO_ERROR"))
|
||||||
{
|
{
|
||||||
$langs->load("main");
|
$langs->load("main");
|
||||||
print $langs->trans("ErrorFailedToOpenFile",SYSLOG_FILE);
|
print $langs->trans("ErrorFailedToOpenFile",SYSLOG_FILE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//define_syslog_variables(); déjà définit dans master.inc.php
|
//define_syslog_variables(); déjà définit dans master.inc.php
|
||||||
|
|
||||||
if (defined("MAIN_SYSLOG_FACILITY") && MAIN_SYSLOG_FACILITY)
|
if (defined("MAIN_SYSLOG_FACILITY") && MAIN_SYSLOG_FACILITY)
|
||||||
{
|
{
|
||||||
$facility = MAIN_SYSLOG_FACILITY;
|
$facility = MAIN_SYSLOG_FACILITY;
|
||||||
}
|
}
|
||||||
elseif (defined("SYSLOG_FACILITY") && SYSLOG_FACILITY && defined(SYSLOG_FACILITY))
|
elseif (defined("SYSLOG_FACILITY") && SYSLOG_FACILITY && defined(SYSLOG_FACILITY))
|
||||||
{
|
{
|
||||||
// Exemple: SYSLOG_FACILITY vaut LOG_USER qui vaut 8. On a besoin de 8 dans $facility.
|
// Exemple: SYSLOG_FACILITY vaut LOG_USER qui vaut 8. On a besoin de 8 dans $facility.
|
||||||
$facility = constant(SYSLOG_FACILITY);
|
$facility = constant(SYSLOG_FACILITY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$facility = LOG_USER;
|
$facility = LOG_USER;
|
||||||
}
|
}
|
||||||
|
|
||||||
openlog("dolibarr", LOG_PID | LOG_PERROR, $facility);
|
openlog("dolibarr", LOG_PID | LOG_PERROR, $facility);
|
||||||
|
|
||||||
if (! $level)
|
if (! $level)
|
||||||
{
|
{
|
||||||
syslog(LOG_ERR, $message);
|
syslog(LOG_ERR, $message);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
syslog($level, $message);
|
syslog($level, $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
closelog();
|
closelog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Affiche le header d'une fiche
|
\brief Affiche le header d'une fiche
|
||||||
\param links Tableau de titre d'onglets
|
\param links Tableau de titre d'onglets
|
||||||
\param active 0=onglet non actif, 1=onglet actif
|
\param active 0=onglet non actif, 1=onglet actif
|
||||||
\param title Titre tabelau ("" par defaut)
|
\param title Titre tabelau ("" par defaut)
|
||||||
\param notab 0=Add tab header, 1=no tab header
|
\param notab 0=Add tab header, 1=no tab header
|
||||||
*/
|
*/
|
||||||
function dolibarr_fiche_head($links, $active='0', $title='', $notab=0)
|
function dolibarr_fiche_head($links, $active='0', $title='', $notab=0)
|
||||||
{
|
{
|
||||||
@ -304,15 +302,15 @@ function dolibarr_get_const($db, $name)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Insertion d'une constante dans la base de données.
|
\brief Insertion d'une constante dans la base de données.
|
||||||
\see dolibarr_del_const, dolibarr_get_const
|
\see dolibarr_del_const, dolibarr_get_const
|
||||||
\param db Handler d'accès base
|
\param db Handler d'accès base
|
||||||
\param name Nom de la constante
|
\param name Nom de la constante
|
||||||
\param value Valeur de la constante
|
\param value Valeur de la constante
|
||||||
\param type Type de constante (chaine par défaut)
|
\param type Type de constante (chaine par défaut)
|
||||||
\param visible La constante est elle visible (0 par défaut)
|
\param visible La constante est elle visible (0 par défaut)
|
||||||
\param note Explication de la constante
|
\param note Explication de la constante
|
||||||
\return int <0 si ko, >0 si ok
|
\return int <0 si ko, >0 si ok
|
||||||
*/
|
*/
|
||||||
function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='')
|
function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='')
|
||||||
{
|
{
|
||||||
@ -348,36 +346,36 @@ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Effacement d'une constante dans la base de données
|
\brief Effacement d'une constante dans la base de données
|
||||||
\see dolibarr_get_const, dolibarr_sel_const
|
\see dolibarr_get_const, dolibarr_sel_const
|
||||||
\param db Handler d'accès base
|
\param db Handler d'accès base
|
||||||
\param name Nom ou rowid de la constante
|
\param name Nom ou rowid de la constante
|
||||||
\return int <0 si ko, >0 si ok
|
\return int <0 si ko, >0 si ok
|
||||||
*/
|
*/
|
||||||
function dolibarr_del_const($db, $name)
|
function dolibarr_del_const($db, $name)
|
||||||
{
|
{
|
||||||
$sql = "DELETE FROM llx_const WHERE name='$name' or rowid='$name'";
|
$sql = "DELETE FROM llx_const WHERE name='$name' or rowid='$name'";
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
|
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Sauvegarde parametrage personnel
|
\brief Sauvegarde parametrage personnel
|
||||||
\param db Handler d'accès base
|
\param db Handler d'accès base
|
||||||
\param user Objet utilisateur
|
\param user Objet utilisateur
|
||||||
\param url Si defini, on sauve parametre du tableau tab dont clé = (url avec sortfield, sortorder, begin et page)
|
\param url Si defini, on sauve parametre du tableau tab dont clé = (url avec sortfield, sortorder, begin et page)
|
||||||
Si non defini on sauve tous parametres du tableau tab
|
Si non defini on sauve tous parametres du tableau tab
|
||||||
\param tab Tableau (clé=>valeur) des paramètres à sauvegarder
|
\param tab Tableau (clé=>valeur) des paramètres à sauvegarder
|
||||||
\return int <0 si ko, >0 si ok
|
\return int <0 si ko, >0 si ok
|
||||||
*/
|
*/
|
||||||
function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
||||||
{
|
{
|
||||||
@ -1746,11 +1744,11 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Fonction servant a afficher les fleches de navigation dans les pages de listes
|
\brief Fonction servant a afficher les fleches de navigation dans les pages de listes
|
||||||
\param page numéro de la page
|
\param page numéro de la page
|
||||||
\param file lien
|
\param file lien
|
||||||
\param options autres parametres d'url a propager dans les liens ("" par defaut)
|
\param options autres parametres d'url a propager dans les liens ("" par defaut)
|
||||||
\param nextpage faut-il une page suivante
|
\param nextpage faut-il une page suivante
|
||||||
*/
|
*/
|
||||||
function print_fleche_navigation($page,$file,$options='',$nextpage)
|
function print_fleche_navigation($page,$file,$options='',$nextpage)
|
||||||
{
|
{
|
||||||
@ -1796,13 +1794,10 @@ function price($amount, $html=0, $outlangs='')
|
|||||||
$cents = $datas[1];
|
$cents = $datas[1];
|
||||||
// On augmente au besoin
|
// On augmente au besoin
|
||||||
if ($cents > 99 )
|
if ($cents > 99 )
|
||||||
{
|
$decimal = 3;
|
||||||
$decimal = 3;
|
|
||||||
}
|
|
||||||
if ($cents > 999 )
|
if ($cents > 999 )
|
||||||
{
|
$decimal = 4;
|
||||||
$decimal = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Formate nombre
|
// Formate nombre
|
||||||
if ($html)
|
if ($html)
|
||||||
@ -1814,33 +1809,32 @@ function price($amount, $html=0, $outlangs='')
|
|||||||
return number_format($amount, $decimal, $dec, $thousand);
|
return number_format($amount, $decimal, $dec, $thousand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Fonction qui retourne un numérique depuis un montant formaté
|
\brief Fonction qui retourne un numérique depuis un montant formaté
|
||||||
\remarks Fonction à appeler sur montants saisi avant un insert
|
\remarks Fonction à appeler sur montants saisi avant un insert
|
||||||
\param amount montant a formater
|
\param amount montant a formater
|
||||||
\seealso price Fonction inverse de price2num
|
\seealso price Fonction inverse de price2num
|
||||||
*/
|
*/
|
||||||
function price2num($amount)
|
function price2num($amount)
|
||||||
{
|
{
|
||||||
$amount=ereg_replace(',','.',$amount);
|
$amount=ereg_replace(',','.',$amount);
|
||||||
$amount=ereg_replace(' ','',$amount);
|
$amount=ereg_replace(' ','',$amount);
|
||||||
return $amount;
|
return $amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Fonction qui renvoie la tva d'une ligne (en fonction du vendeur, acheteur et taux du produit)
|
\brief Fonction qui renvoie la tva d'une ligne (en fonction du vendeur, acheteur et taux du produit)
|
||||||
* \remarks Si vendeur non assujeti à TVA, TVA par défaut=0. Fin de règle.
|
\remarks Si vendeur non assujeti à TVA, TVA par défaut=0. Fin de règle.
|
||||||
* Si le (pays vendeur = pays acheteur) alors TVA par défaut=TVA du produit vendu. Fin de règle.
|
Si le (pays vendeur = pays acheteur) alors TVA par défaut=TVA du produit vendu. Fin de règle.
|
||||||
* Si vendeur et acheteur dans Communauté européenne et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par défaut=0 (La TVA doit être payé par acheteur au centre d'impots de son pays et non au vendeur). Fin de règle.
|
Si vendeur et acheteur dans Communauté européenne et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par défaut=0 (La TVA doit être payé par acheteur au centre d'impots de son pays et non au vendeur). Fin de règle.
|
||||||
* Si vendeur et acheteur dans Communauté européenne et acheteur = particulier ou entreprise sans num TVA intra alors TVA par défaut=TVA du produit vendu. Fin de règle.
|
Si vendeur et acheteur dans Communauté européenne et acheteur = particulier ou entreprise sans num TVA intra alors TVA par défaut=TVA du produit vendu. Fin de règle.
|
||||||
* Si vendeur et acheteur dans Communauté européenne et acheteur = entreprise avec num TVA intra alors TVA par défaut=0. Fin de règle.
|
Si vendeur et acheteur dans Communauté européenne et acheteur = entreprise avec num TVA intra alors TVA par défaut=0. Fin de règle.
|
||||||
* Sinon TVA proposée par défaut=0. Fin de règle.
|
Sinon TVA proposée par défaut=0. Fin de règle.
|
||||||
* \param societe_vendeuse Objet société vendeuse
|
\param societe_vendeuse Objet société vendeuse
|
||||||
* \param societe_acheteuse Objet société acheteuse
|
\param societe_acheteuse Objet société acheteuse
|
||||||
* \param taux_produit Taux par defaut du produit vendu
|
\param taux_produit Taux par defaut du produit vendu
|
||||||
* \return float Taux de tva de la ligne
|
\return float Taux de tva de la ligne
|
||||||
*/
|
*/
|
||||||
function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
||||||
{
|
{
|
||||||
@ -1894,38 +1888,37 @@ function yn($yesno, $case=1) {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Fonction pour initialiser un salt pour la fonction crypt
|
\brief Fonction pour initialiser un salt pour la fonction crypt
|
||||||
\param $type 2=>renvoi un salt pour cryptage DES
|
\param $type 2=>renvoi un salt pour cryptage DES
|
||||||
12=>renvoi un salt pour cryptage MD5
|
12=>renvoi un salt pour cryptage MD5
|
||||||
non defini=>renvoi un salt pour cryptage par defaut
|
non defini=>renvoi un salt pour cryptage par defaut
|
||||||
\return string Chaine salt
|
\return string Chaine salt
|
||||||
*/
|
*/
|
||||||
function makesalt($type=CRYPT_SALT_LENGTH)
|
function makesalt($type=CRYPT_SALT_LENGTH)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("functions.inc::makesalt type=".$type);
|
dolibarr_syslog("functions.inc::makesalt type=".$type);
|
||||||
switch($type)
|
switch($type)
|
||||||
{
|
{
|
||||||
case 12: // 8 + 4
|
case 12: // 8 + 4
|
||||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||||
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilisé)
|
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilisé)
|
||||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||||
case 2: // 2
|
case 2: // 2
|
||||||
default: // by default, fall back on Standard DES (should work everywhere)
|
default: // by default, fall back on Standard DES (should work everywhere)
|
||||||
$saltlen=2; $saltprefix=''; $saltsuffix=''; break;
|
$saltlen=2; $saltprefix=''; $saltsuffix=''; break;
|
||||||
}
|
}
|
||||||
$salt='';
|
$salt='';
|
||||||
while(strlen($salt) < $saltlen) $salt.=chr(rand(64,126));
|
while(strlen($salt) < $saltlen) $salt.=chr(rand(64,126));
|
||||||
|
|
||||||
$result=$saltprefix.$salt.$saltsuffix;
|
$result=$saltprefix.$salt.$saltsuffix;
|
||||||
dolibarr_syslog("functions.inc::makesalt return=".$result);
|
dolibarr_syslog("functions.inc::makesalt return=".$result);
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Fonction pour qui retourne le rowid d'un departement par son code
|
\brief Fonction pour qui retourne le rowid d'un departement par son code
|
||||||
\param db handler d'accès base
|
\param db handler d'accès base
|
||||||
\param code Code région
|
\param code Code région
|
||||||
\param pays_id Id du pays
|
\param pays_id Id du pays
|
||||||
*/
|
*/
|
||||||
function departement_rowid($db,$code, $pays_id)
|
function departement_rowid($db,$code, $pays_id)
|
||||||
{
|
{
|
||||||
@ -1955,25 +1948,25 @@ function departement_rowid($db,$code, $pays_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Renvoi un chemin de classement répertoire en fonction d'un id
|
\brief Renvoi un chemin de classement répertoire en fonction d'un id
|
||||||
* Examples: 1->"0/0/1/", 15->"0/1/5/"
|
\remarks Examples: 1->"0/0/1/", 15->"0/1/5/"
|
||||||
* \param $num Id à décomposer
|
\param $num Id à décomposer
|
||||||
* \param $level Niveau de decoupage (1, 2 ou 3 niveaux)
|
\param $level Niveau de decoupage (1, 2 ou 3 niveaux)
|
||||||
*/
|
*/
|
||||||
function get_exdir($num,$level=3)
|
function get_exdir($num,$level=3)
|
||||||
{
|
{
|
||||||
$num = substr("000".$num, -$level);
|
$num = substr("000".$num, -$level);
|
||||||
if ($level == 1) return substr($num,0,1).'/';
|
if ($level == 1) return substr($num,0,1).'/';
|
||||||
if ($level == 2) return substr($num,1,1).'/'.substr($num,0,1).'/';
|
if ($level == 2) return substr($num,1,1).'/'.substr($num,0,1).'/';
|
||||||
if ($level == 3) return substr($num,2,1).'/'.substr($num,1,1).'/'.substr($num,0,1).'/';
|
if ($level == 3) return substr($num,2,1).'/'.substr($num,1,1).'/'.substr($num,0,1).'/';
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Création de répertoire recursive
|
\brief Création de répertoire recursive
|
||||||
* \param $dir Répertoire à créer
|
\param $dir Répertoire à créer
|
||||||
* \return int < 0 si erreur, >= 0 si succès
|
\return int < 0 si erreur, >= 0 si succès
|
||||||
*/
|
*/
|
||||||
function create_exdir($dir)
|
function create_exdir($dir)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("functions.inc.php::create_exdir: dir=$dir");
|
dolibarr_syslog("functions.inc.php::create_exdir: dir=$dir");
|
||||||
@ -2024,103 +2017,98 @@ function create_exdir($dir)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Scan a directory and return a list of files/directories
|
\brief Scan a directory and return a list of files/directories
|
||||||
* \param $path Starting path from which to search
|
\param $path Starting path from which to search
|
||||||
* \param $types Can be "directories", "files", or "all"
|
\param $types Can be "directories", "files", or "all"
|
||||||
* \param $recursive Determines whether subdirectories are searched
|
\param $recursive Determines whether subdirectories are searched
|
||||||
* \param $filter Regex for filter
|
\param $filter Regex for filter
|
||||||
* \param $exludefilter Regex for exclude filter
|
\param $exludefilter Regex for exclude filter
|
||||||
* \param $sortcriteria Sort criteria ("date","size")
|
\param $sortcriteria Sort criteria ("date","size")
|
||||||
* \param $sortorder Sort order (SORT_ASC, SORT_DESC)
|
\param $sortorder Sort order (SORT_ASC, SORT_DESC)
|
||||||
* \return array Array of array('name'=>xxx,'date'=>yyy,'size'=>zzz)
|
\return array Array of array('name'=>xxx,'date'=>yyy,'size'=>zzz)
|
||||||
*/
|
*/
|
||||||
function dolibarr_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter="", $sortcriteria="", $sortorder=SORT_ASC)
|
function dolibarr_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter="", $sortcriteria="", $sortorder=SORT_ASC)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("functions.inc.php::dolibarr_dir_list $path");
|
dolibarr_syslog("functions.inc.php::dolibarr_dir_list $path");
|
||||||
|
|
||||||
if (! is_dir($path)) return array();
|
if (! is_dir($path)) return array();
|
||||||
|
|
||||||
if ($dir = opendir($path))
|
if ($dir = opendir($path))
|
||||||
|
{
|
||||||
|
$file_list = array();
|
||||||
|
while (false !== ($file = readdir($dir)))
|
||||||
{
|
{
|
||||||
$file_list = array();
|
$qualified=1;
|
||||||
while (false !== ($file = readdir($dir)))
|
|
||||||
|
// Check if file is qualified
|
||||||
|
if (eregi('^\.',$file)) $qualified=0;
|
||||||
|
if ($excludefilter && eregi($excludefilter,$file)) $qualified=0;
|
||||||
|
|
||||||
|
if ($qualified)
|
||||||
|
{
|
||||||
|
// Check whether this is a file or directory and whether we're interested in that type
|
||||||
|
if ((is_dir($path."/".$file)) && (($types=="directories") || ($types=="all")))
|
||||||
{
|
{
|
||||||
$qualified=1;
|
// Add entry into file_list array
|
||||||
|
if ($sortcriteria == 'date') $filedate=filemtime($path."/".$file);
|
||||||
|
if ($sortcriteria == 'size') $filesize=filesize($path."/".$file);
|
||||||
|
|
||||||
// Check if file is qualified
|
if (! $filter || eregi($filter,$path.'/'.$file))
|
||||||
if (eregi('^\.',$file)) $qualified=0;
|
{
|
||||||
if ($excludefilter && eregi($excludefilter,$file)) $qualified=0;
|
$file_list[] = array(
|
||||||
|
"name" => $file,
|
||||||
|
"fullname" => $path.'/'.$file,
|
||||||
|
"date" => $filedate,
|
||||||
|
"size" => $filesize
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// print "path=$path file=$file<br>\n";
|
// if we're in a directory and we want recursive behavior, call this function again
|
||||||
|
if ($recursive)
|
||||||
if ($qualified)
|
{
|
||||||
{
|
$file_list = array_merge($file_list, dolibarr_dir_list($path."/".$file."/", $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder));
|
||||||
// Check whether this is a file or directory and whether we're interested in that type
|
}
|
||||||
if ((is_dir($path."/".$file)) && (($types=="directories") || ($types=="all")))
|
|
||||||
{
|
|
||||||
// Add entry into file_list array
|
|
||||||
if ($sortcriteria == 'date') $filedate=filemtime($path."/".$file);
|
|
||||||
if ($sortcriteria == 'size') $filesize=filesize($path."/".$file);
|
|
||||||
|
|
||||||
if (! $filter || eregi($filter,$path.'/'.$file))
|
|
||||||
{
|
|
||||||
$file_list[] = array(
|
|
||||||
"name" => $file,
|
|
||||||
"fullname" => $path.'/'.$file,
|
|
||||||
"date" => $filedate,
|
|
||||||
"size" => $filesize
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we're in a directory and we want recursive behavior, call this function again
|
|
||||||
if ($recursive)
|
|
||||||
{
|
|
||||||
$file_list = array_merge($file_list, dolibarr_dir_list($path."/".$file."/", $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (($types == "files") || ($types == "all"))
|
|
||||||
{
|
|
||||||
// Add file into file_list array
|
|
||||||
if ($sortcriteria == 'date') $filedate=filemtime($path."/".$file);
|
|
||||||
if ($sortcriteria == 'size') $filesize=filesize($path."/".$file);
|
|
||||||
if (! $filter || eregi($filter,$path.'/'.$file))
|
|
||||||
{
|
|
||||||
$file_list[] = array(
|
|
||||||
"name" => $file,
|
|
||||||
"fullname" => $path.'/'.$file,
|
|
||||||
"date" => $filedate,
|
|
||||||
"size" => $filesize
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
closedir($dir);
|
else if (($types == "files") || ($types == "all"))
|
||||||
|
|
||||||
// Obtain a list of columns
|
|
||||||
$myarray=array();
|
|
||||||
foreach ($file_list as $key => $row)
|
|
||||||
{
|
{
|
||||||
$myarray[$key] = $row[$sortcriteria];
|
// Add file into file_list array
|
||||||
//$myarray2[$key] = $row['size'];
|
if ($sortcriteria == 'date') $filedate=filemtime($path."/".$file);
|
||||||
|
if ($sortcriteria == 'size') $filesize=filesize($path."/".$file);
|
||||||
|
if (! $filter || eregi($filter,$path.'/'.$file))
|
||||||
|
{
|
||||||
|
$file_list[] = array(
|
||||||
|
"name" => $file,
|
||||||
|
"fullname" => $path.'/'.$file,
|
||||||
|
"date" => $filedate,
|
||||||
|
"size" => $filesize
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Sort the data
|
|
||||||
array_multisort($myarray, $sortorder, $file_list);
|
|
||||||
|
|
||||||
return $file_list;
|
|
||||||
}
|
}
|
||||||
else
|
closedir($dir);
|
||||||
|
|
||||||
|
// Obtain a list of columns
|
||||||
|
$myarray=array();
|
||||||
|
foreach ($file_list as $key => $row)
|
||||||
{
|
{
|
||||||
return false;
|
$myarray[$key] = $row[$sortcriteria];
|
||||||
}
|
}
|
||||||
|
// Sort the data
|
||||||
|
array_multisort($myarray, $sortorder, $file_list);
|
||||||
|
|
||||||
|
return $file_list;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Retourne le numéro de la semaine par rapport a une date
|
\brief Retourne le numéro de la semaine par rapport a une date
|
||||||
* \param time Date au format 'timestamp'
|
\param time Date au format 'timestamp'
|
||||||
* \return int Numéro de semaine
|
\return int Numéro de semaine
|
||||||
*/
|
*/
|
||||||
function numero_semaine($time)
|
function numero_semaine($time)
|
||||||
{
|
{
|
||||||
$stime = strftime( '%Y-%m-%d',$time);
|
$stime = strftime( '%Y-%m-%d',$time);
|
||||||
@ -2196,20 +2184,20 @@ function numero_semaine($time)
|
|||||||
return sprintf("%02d",$numeroSemaine);
|
return sprintf("%02d",$numeroSemaine);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* \brief Retourne le picto champ obligatoire
|
\brief Retourne le picto champ obligatoire
|
||||||
* \return string Chaine avec picto obligatoire
|
\return string Chaine avec picto obligatoire
|
||||||
*/
|
*/
|
||||||
function picto_required()
|
function picto_required()
|
||||||
{
|
{
|
||||||
return '<b>*</b>';
|
return '<b>*</b>';
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* \brief Convertit une masse d'une unite vers une autre unite
|
\brief Convertit une masse d'une unite vers une autre unite
|
||||||
* \param weight float Masse a convertir
|
\param weight float Masse a convertir
|
||||||
* \param from_unit int Unite originale en puissance de 10
|
\param from_unit int Unite originale en puissance de 10
|
||||||
* \param to_unit int Nouvelle unite en puissance de 10
|
\param to_unit int Nouvelle unite en puissance de 10
|
||||||
* \return float Masse convertie
|
\return float Masse convertie
|
||||||
*/
|
*/
|
||||||
function weight_convert($weight,&$from_unit,$to_unit)
|
function weight_convert($weight,&$from_unit,$to_unit)
|
||||||
{
|
{
|
||||||
/* Pour convertire 320 gr en Kg appeler
|
/* Pour convertire 320 gr en Kg appeler
|
||||||
@ -2236,11 +2224,11 @@ function weight_convert($weight,&$from_unit,$to_unit)
|
|||||||
return $weight;
|
return $weight;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* \brief Renvoi le texte d'une unite
|
\brief Renvoi le texte d'une unite
|
||||||
* \param int Unit
|
\param int Unit
|
||||||
* \return string Unite
|
\return string Unite
|
||||||
* \todo gerer les autres unités de mesure comme la livre, le gallon, le litre, ...
|
\todo gerer les autres unités de mesure comme la livre, le gallon, le litre, ...
|
||||||
*/
|
*/
|
||||||
function weight_units_string($unit)
|
function weight_units_string($unit)
|
||||||
{
|
{
|
||||||
/* Note Rodo aux dev :)
|
/* Note Rodo aux dev :)
|
||||||
@ -2248,13 +2236,11 @@ function weight_units_string($unit)
|
|||||||
* cela surchagerait inutilement d'une requete supplémentaire
|
* cela surchagerait inutilement d'une requete supplémentaire
|
||||||
* pour quelque chose qui est somme toute peu variable
|
* pour quelque chose qui est somme toute peu variable
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$weight_string[3] = 'Tonnes';
|
$weight_string[3] = 'Tonnes';
|
||||||
$weight_string[0] = 'kg';
|
$weight_string[0] = 'kg';
|
||||||
$weight_string[-3] = 'g';
|
$weight_string[-3] = 'g';
|
||||||
$weight_string[-6] = 'mg';
|
$weight_string[-6] = 'mg';
|
||||||
|
|
||||||
|
|
||||||
return $weight_string[$unit];
|
return $weight_string[$unit];
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user