Nettoyage
This commit is contained in:
parent
6853892f7a
commit
c0ba261f0a
@ -1,5 +1,5 @@
|
||||
<?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) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* 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
|
||||
Pour fichier: fichier défini par SYSLOG_FILE
|
||||
Pour syslog: facility défini par SYSLOG_FACILITY
|
||||
\param message Message a tracer
|
||||
\param level Niveau de l'erreur
|
||||
\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
|
||||
fautes de protection mémoire. Pour résoudre, utiliser le loggage fichier,
|
||||
au lieu du loggage syslog (configuration du module).
|
||||
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
|
||||
\brief Envoi des messages dolibarr dans un fichier ou dans syslog
|
||||
Pour fichier: fichier défini par SYSLOG_FILE
|
||||
Pour syslog: facility défini par SYSLOG_FACILITY
|
||||
\param message Message a tracer
|
||||
\param level Niveau de l'erreur
|
||||
\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
|
||||
fautes de protection mémoire. Pour résoudre, utiliser le loggage fichier,
|
||||
au lieu du loggage syslog (configuration du module).
|
||||
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
|
||||
*/
|
||||
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
|
||||
$level_maximum = LOG_INFO;
|
||||
|
||||
if ($level > $level_maximum) return;
|
||||
|
||||
// Ajout user a la log
|
||||
$login='???';
|
||||
if (is_object($user) && $user->id) $login=$user->login;
|
||||
$message=sprintf("%-8s",$login)." ".$message;
|
||||
|
||||
if (defined("SYSLOG_FILE") && SYSLOG_FILE)
|
||||
// Change this to LOg_DEBUG to see all messages on *nix
|
||||
$level_maximum = LOG_INFO;
|
||||
|
||||
if ($level > $level_maximum) return;
|
||||
|
||||
// Ajout user a la log
|
||||
$login='???';
|
||||
if (is_object($user) && $user->id) $login=$user->login;
|
||||
$message=sprintf("%-8s",$login)." ".$message;
|
||||
|
||||
if (defined("SYSLOG_FILE") && SYSLOG_FILE)
|
||||
{
|
||||
if (defined("SYSLOG_FILE_NO_ERROR")) $file=@fopen(SYSLOG_FILE,"a+");
|
||||
else $file=fopen(SYSLOG_FILE,"a+");
|
||||
if ($file)
|
||||
if (defined("SYSLOG_FILE_NO_ERROR")) $file=@fopen(SYSLOG_FILE,"a+");
|
||||
else $file=fopen(SYSLOG_FILE,"a+");
|
||||
if ($file)
|
||||
{
|
||||
fwrite($file,strftime("%Y-%m-%d %H:%M:%S",time())." ".$level." ".$message."\n");
|
||||
fclose($file);
|
||||
fwrite($file,strftime("%Y-%m-%d %H:%M:%S",time())." ".$level." ".$message."\n");
|
||||
fclose($file);
|
||||
}
|
||||
elseif (! defined("SYSLOG_FILE_NO_ERROR"))
|
||||
elseif (! defined("SYSLOG_FILE_NO_ERROR"))
|
||||
{
|
||||
$langs->load("main");
|
||||
print $langs->trans("ErrorFailedToOpenFile",SYSLOG_FILE);
|
||||
$langs->load("main");
|
||||
print $langs->trans("ErrorFailedToOpenFile",SYSLOG_FILE);
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
//define_syslog_variables(); déjà définit dans master.inc.php
|
||||
|
||||
if (defined("MAIN_SYSLOG_FACILITY") && MAIN_SYSLOG_FACILITY)
|
||||
//define_syslog_variables(); déjà définit dans master.inc.php
|
||||
|
||||
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.
|
||||
$facility = constant(SYSLOG_FACILITY);
|
||||
// Exemple: SYSLOG_FACILITY vaut LOG_USER qui vaut 8. On a besoin de 8 dans $facility.
|
||||
$facility = constant(SYSLOG_FACILITY);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$facility = LOG_USER;
|
||||
$facility = LOG_USER;
|
||||
}
|
||||
|
||||
openlog("dolibarr", LOG_PID | LOG_PERROR, $facility);
|
||||
|
||||
if (! $level)
|
||||
|
||||
openlog("dolibarr", LOG_PID | LOG_PERROR, $facility);
|
||||
|
||||
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
|
||||
\param links Tableau de titre d'onglets
|
||||
\param active 0=onglet non actif, 1=onglet actif
|
||||
\param title Titre tabelau ("" par defaut)
|
||||
\param notab 0=Add tab header, 1=no tab header
|
||||
\brief Affiche le header d'une fiche
|
||||
\param links Tableau de titre d'onglets
|
||||
\param active 0=onglet non actif, 1=onglet actif
|
||||
\param title Titre tabelau ("" par defaut)
|
||||
\param notab 0=Add tab header, 1=no tab header
|
||||
*/
|
||||
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.
|
||||
\see dolibarr_del_const, dolibarr_get_const
|
||||
\param db Handler d'accès base
|
||||
\param name Nom de la constante
|
||||
\param value Valeur de la constante
|
||||
\param type Type de constante (chaine par défaut)
|
||||
\param visible La constante est elle visible (0 par défaut)
|
||||
\param note Explication de la constante
|
||||
\return int <0 si ko, >0 si ok
|
||||
\brief Insertion d'une constante dans la base de données.
|
||||
\see dolibarr_del_const, dolibarr_get_const
|
||||
\param db Handler d'accès base
|
||||
\param name Nom de la constante
|
||||
\param value Valeur de la constante
|
||||
\param type Type de constante (chaine par défaut)
|
||||
\param visible La constante est elle visible (0 par défaut)
|
||||
\param note Explication de la constante
|
||||
\return int <0 si ko, >0 si ok
|
||||
*/
|
||||
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
|
||||
\see dolibarr_get_const, dolibarr_sel_const
|
||||
\param db Handler d'accès base
|
||||
\param name Nom ou rowid de la constante
|
||||
\return int <0 si ko, >0 si ok
|
||||
\brief Effacement d'une constante dans la base de données
|
||||
\see dolibarr_get_const, dolibarr_sel_const
|
||||
\param db Handler d'accès base
|
||||
\param name Nom ou rowid de la constante
|
||||
\return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function dolibarr_del_const($db, $name)
|
||||
{
|
||||
$sql = "DELETE FROM llx_const WHERE name='$name' or rowid='$name'";
|
||||
$resql=$db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
$sql = "DELETE FROM llx_const WHERE name='$name' or rowid='$name'";
|
||||
$resql=$db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Sauvegarde parametrage personnel
|
||||
\param db Handler d'accès base
|
||||
\param user Objet utilisateur
|
||||
\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
|
||||
\param tab Tableau (clé=>valeur) des paramètres à sauvegarder
|
||||
\return int <0 si ko, >0 si ok
|
||||
\brief Sauvegarde parametrage personnel
|
||||
\param db Handler d'accès base
|
||||
\param user Objet utilisateur
|
||||
\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
|
||||
\param tab Tableau (clé=>valeur) des paramètres à sauvegarder
|
||||
\return int <0 si ko, >0 si ok
|
||||
*/
|
||||
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
|
||||
\param page numéro de la page
|
||||
\param file lien
|
||||
\param options autres parametres d'url a propager dans les liens ("" par defaut)
|
||||
\param nextpage faut-il une page suivante
|
||||
\brief Fonction servant a afficher les fleches de navigation dans les pages de listes
|
||||
\param page numéro de la page
|
||||
\param file lien
|
||||
\param options autres parametres d'url a propager dans les liens ("" par defaut)
|
||||
\param nextpage faut-il une page suivante
|
||||
*/
|
||||
function print_fleche_navigation($page,$file,$options='',$nextpage)
|
||||
{
|
||||
@ -1796,13 +1794,10 @@ function price($amount, $html=0, $outlangs='')
|
||||
$cents = $datas[1];
|
||||
// On augmente au besoin
|
||||
if ($cents > 99 )
|
||||
{
|
||||
$decimal = 3;
|
||||
}
|
||||
$decimal = 3;
|
||||
|
||||
if ($cents > 999 )
|
||||
{
|
||||
$decimal = 4;
|
||||
}
|
||||
$decimal = 4;
|
||||
|
||||
// Formate nombre
|
||||
if ($html)
|
||||
@ -1814,33 +1809,32 @@ function price($amount, $html=0, $outlangs='')
|
||||
return number_format($amount, $decimal, $dec, $thousand);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction qui retourne un numérique depuis un montant formaté
|
||||
\remarks Fonction à appeler sur montants saisi avant un insert
|
||||
\param amount montant a formater
|
||||
\seealso price Fonction inverse de price2num
|
||||
\brief Fonction qui retourne un numérique depuis un montant formaté
|
||||
\remarks Fonction à appeler sur montants saisi avant un insert
|
||||
\param amount montant a formater
|
||||
\seealso price Fonction inverse de price2num
|
||||
*/
|
||||
function price2num($amount)
|
||||
{
|
||||
$amount=ereg_replace(',','.',$amount);
|
||||
$amount=ereg_replace(' ','',$amount);
|
||||
return $amount;
|
||||
$amount=ereg_replace(',','.',$amount);
|
||||
$amount=ereg_replace(' ','',$amount);
|
||||
return $amount;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \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.
|
||||
* 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 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.
|
||||
* Sinon TVA proposée par défaut=0. Fin de règle.
|
||||
* \param societe_vendeuse Objet société vendeuse
|
||||
* \param societe_acheteuse Objet société acheteuse
|
||||
* \param taux_produit Taux par defaut du produit vendu
|
||||
* \return float Taux de tva de la ligne
|
||||
\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.
|
||||
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 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.
|
||||
Sinon TVA proposée par défaut=0. Fin de règle.
|
||||
\param societe_vendeuse Objet société vendeuse
|
||||
\param societe_acheteuse Objet société acheteuse
|
||||
\param taux_produit Taux par defaut du produit vendu
|
||||
\return float Taux de tva de la ligne
|
||||
*/
|
||||
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
|
||||
\param $type 2=>renvoi un salt pour cryptage DES
|
||||
12=>renvoi un salt pour cryptage MD5
|
||||
non defini=>renvoi un salt pour cryptage par defaut
|
||||
\return string Chaine salt
|
||||
\brief Fonction pour initialiser un salt pour la fonction crypt
|
||||
\param $type 2=>renvoi un salt pour cryptage DES
|
||||
12=>renvoi un salt pour cryptage MD5
|
||||
non defini=>renvoi un salt pour cryptage par defaut
|
||||
\return string Chaine salt
|
||||
*/
|
||||
function makesalt($type=CRYPT_SALT_LENGTH)
|
||||
{
|
||||
dolibarr_syslog("functions.inc::makesalt type=".$type);
|
||||
switch($type)
|
||||
{
|
||||
case 12: // 8 + 4
|
||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilisé)
|
||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||
case 2: // 2
|
||||
default: // by default, fall back on Standard DES (should work everywhere)
|
||||
$saltlen=2; $saltprefix=''; $saltsuffix=''; break;
|
||||
}
|
||||
$salt='';
|
||||
while(strlen($salt) < $saltlen) $salt.=chr(rand(64,126));
|
||||
|
||||
$result=$saltprefix.$salt.$saltsuffix;
|
||||
dolibarr_syslog("functions.inc::makesalt return=".$result);
|
||||
return $result;
|
||||
dolibarr_syslog("functions.inc::makesalt type=".$type);
|
||||
switch($type)
|
||||
{
|
||||
case 12: // 8 + 4
|
||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilisé)
|
||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||
case 2: // 2
|
||||
default: // by default, fall back on Standard DES (should work everywhere)
|
||||
$saltlen=2; $saltprefix=''; $saltsuffix=''; break;
|
||||
}
|
||||
$salt='';
|
||||
while(strlen($salt) < $saltlen) $salt.=chr(rand(64,126));
|
||||
|
||||
$result=$saltprefix.$salt.$saltsuffix;
|
||||
dolibarr_syslog("functions.inc::makesalt return=".$result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction pour qui retourne le rowid d'un departement par son code
|
||||
\param db handler d'accès base
|
||||
\param code Code région
|
||||
\param pays_id Id du pays
|
||||
\brief Fonction pour qui retourne le rowid d'un departement par son code
|
||||
\param db handler d'accès base
|
||||
\param code Code région
|
||||
\param pays_id Id du pays
|
||||
*/
|
||||
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
|
||||
* Examples: 1->"0/0/1/", 15->"0/1/5/"
|
||||
* \param $num Id à décomposer
|
||||
* \param $level Niveau de decoupage (1, 2 ou 3 niveaux)
|
||||
\brief Renvoi un chemin de classement répertoire en fonction d'un id
|
||||
\remarks Examples: 1->"0/0/1/", 15->"0/1/5/"
|
||||
\param $num Id à décomposer
|
||||
\param $level Niveau de decoupage (1, 2 ou 3 niveaux)
|
||||
*/
|
||||
function get_exdir($num,$level=3)
|
||||
{
|
||||
$num = substr("000".$num, -$level);
|
||||
if ($level == 1) return 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).'/';
|
||||
return '';
|
||||
$num = substr("000".$num, -$level);
|
||||
if ($level == 1) return 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).'/';
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Création de répertoire recursive
|
||||
* \param $dir Répertoire à créer
|
||||
* \return int < 0 si erreur, >= 0 si succès
|
||||
*/
|
||||
\brief Création de répertoire recursive
|
||||
\param $dir Répertoire à créer
|
||||
\return int < 0 si erreur, >= 0 si succès
|
||||
*/
|
||||
function create_exdir($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
|
||||
* \param $path Starting path from which to search
|
||||
* \param $types Can be "directories", "files", or "all"
|
||||
* \param $recursive Determines whether subdirectories are searched
|
||||
* \param $filter Regex for filter
|
||||
* \param $exludefilter Regex for exclude filter
|
||||
* \param $sortcriteria Sort criteria ("date","size")
|
||||
* \param $sortorder Sort order (SORT_ASC, SORT_DESC)
|
||||
* \return array Array of array('name'=>xxx,'date'=>yyy,'size'=>zzz)
|
||||
\brief Scan a directory and return a list of files/directories
|
||||
\param $path Starting path from which to search
|
||||
\param $types Can be "directories", "files", or "all"
|
||||
\param $recursive Determines whether subdirectories are searched
|
||||
\param $filter Regex for filter
|
||||
\param $exludefilter Regex for exclude filter
|
||||
\param $sortcriteria Sort criteria ("date","size")
|
||||
\param $sortorder Sort order (SORT_ASC, SORT_DESC)
|
||||
\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)
|
||||
{
|
||||
dolibarr_syslog("functions.inc.php::dolibarr_dir_list $path");
|
||||
|
||||
if (! is_dir($path)) return array();
|
||||
|
||||
if ($dir = opendir($path))
|
||||
dolibarr_syslog("functions.inc.php::dolibarr_dir_list $path");
|
||||
|
||||
if (! is_dir($path)) return array();
|
||||
|
||||
if ($dir = opendir($path))
|
||||
{
|
||||
$file_list = array();
|
||||
while (false !== ($file = readdir($dir)))
|
||||
{
|
||||
$file_list = array();
|
||||
while (false !== ($file = readdir($dir)))
|
||||
$qualified=1;
|
||||
|
||||
// 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;
|
||||
|
||||
// Check if file is qualified
|
||||
if (eregi('^\.',$file)) $qualified=0;
|
||||
if ($excludefilter && eregi($excludefilter,$file)) $qualified=0;
|
||||
|
||||
// print "path=$path file=$file<br>\n";
|
||||
|
||||
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")))
|
||||
{
|
||||
// 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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 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));
|
||||
}
|
||||
}
|
||||
closedir($dir);
|
||||
|
||||
// Obtain a list of columns
|
||||
$myarray=array();
|
||||
foreach ($file_list as $key => $row)
|
||||
else if (($types == "files") || ($types == "all"))
|
||||
{
|
||||
$myarray[$key] = $row[$sortcriteria];
|
||||
//$myarray2[$key] = $row['size'];
|
||||
// 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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
* \param time Date au format 'timestamp'
|
||||
* \return int Numéro de semaine
|
||||
*/
|
||||
\brief Retourne le numéro de la semaine par rapport a une date
|
||||
\param time Date au format 'timestamp'
|
||||
\return int Numéro de semaine
|
||||
*/
|
||||
function numero_semaine($time)
|
||||
{
|
||||
$stime = strftime( '%Y-%m-%d',$time);
|
||||
@ -2196,20 +2184,20 @@ function numero_semaine($time)
|
||||
return sprintf("%02d",$numeroSemaine);
|
||||
}
|
||||
/**
|
||||
* \brief Retourne le picto champ obligatoire
|
||||
* \return string Chaine avec picto obligatoire
|
||||
*/
|
||||
\brief Retourne le picto champ obligatoire
|
||||
\return string Chaine avec picto obligatoire
|
||||
*/
|
||||
function picto_required()
|
||||
{
|
||||
return '<b>*</b>';
|
||||
}
|
||||
/**
|
||||
* \brief Convertit une masse d'une unite vers une autre unite
|
||||
* \param weight float Masse a convertir
|
||||
* \param from_unit int Unite originale en puissance de 10
|
||||
* \param to_unit int Nouvelle unite en puissance de 10
|
||||
* \return float Masse convertie
|
||||
*/
|
||||
\brief Convertit une masse d'une unite vers une autre unite
|
||||
\param weight float Masse a convertir
|
||||
\param from_unit int Unite originale en puissance de 10
|
||||
\param to_unit int Nouvelle unite en puissance de 10
|
||||
\return float Masse convertie
|
||||
*/
|
||||
function weight_convert($weight,&$from_unit,$to_unit)
|
||||
{
|
||||
/* Pour convertire 320 gr en Kg appeler
|
||||
@ -2236,11 +2224,11 @@ function weight_convert($weight,&$from_unit,$to_unit)
|
||||
return $weight;
|
||||
}
|
||||
/**
|
||||
* \brief Renvoi le texte d'une unite
|
||||
* \param int Unit
|
||||
* \return string Unite
|
||||
* \todo gerer les autres unités de mesure comme la livre, le gallon, le litre, ...
|
||||
*/
|
||||
\brief Renvoi le texte d'une unite
|
||||
\param int Unit
|
||||
\return string Unite
|
||||
\todo gerer les autres unités de mesure comme la livre, le gallon, le litre, ...
|
||||
*/
|
||||
function weight_units_string($unit)
|
||||
{
|
||||
/* Note Rodo aux dev :)
|
||||
@ -2248,13 +2236,11 @@ function weight_units_string($unit)
|
||||
* cela surchagerait inutilement d'une requete supplémentaire
|
||||
* pour quelque chose qui est somme toute peu variable
|
||||
*/
|
||||
|
||||
$weight_string[3] = 'Tonnes';
|
||||
$weight_string[0] = 'kg';
|
||||
$weight_string[-3] = 'g';
|
||||
$weight_string[-6] = 'mg';
|
||||
|
||||
|
||||
return $weight_string[$unit];
|
||||
}
|
||||
?>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user