From 7eb1e0b3d2f3d2581244c0f644a30da499ba70eb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Mar 2011 15:48:25 +0000 Subject: [PATCH] Qual: Move function dol_delete_file and dol_delte_dir into files.lib.php --- htdocs/core/class/html.formmail.class.php | 1 + htdocs/ecm/class/ecmdirectory.class.php | 1 + htdocs/lib/files.lib.php | 111 ++++++++++++++--- htdocs/lib/functions.lib.php | 142 +++++----------------- htdocs/societe/class/societe.class.php | 1 + 5 files changed, 127 insertions(+), 129 deletions(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 53cd66a694f..215c3f5dcb8 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -100,6 +100,7 @@ class FormMail function clear_attached_files() { global $conf,$user; + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); // Set tmp user directory $vardir=$conf->user->dir_output."/".$user->id; diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index dbc8126226e..32521b1db0b 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -326,6 +326,7 @@ class EcmDirectory // extends CommonObject function delete($user) { global $conf, $langs; + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); $relativepath=$this->getRelativePath(1); // Ex: dir1/dir2/dir3 diff --git a/htdocs/lib/files.lib.php b/htdocs/lib/files.lib.php index b2648591f20..d66404fd420 100644 --- a/htdocs/lib/files.lib.php +++ b/htdocs/lib/files.lib.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2008-2011 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -128,7 +128,6 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil /** * Fast compare of 2 files identified by their properties ->name, ->date and ->size - * * @param $a File 1 * @param $b File 2 * @return int 1, 0, 1 @@ -355,7 +354,6 @@ function dol_filesize($pathoffile) /** * Return time of a file - * * @param $pathoffile * @return timestamp Time of file */ @@ -423,14 +421,14 @@ function dol_move($srcfile, $destfile, $newmask=0, $overwriteifexists=1) } /** - * \brief Move an uploaded file after some controls. - * If there is errors (virus found, antivir in error, bad filename), file is not moved. - * \param src_file Source full path filename ($_FILES['field']['tmp_name']) - * \param dest_file Target full path filename - * \param allowoverwrite 1=Overwrite target file if it already exists - * \param disablevirusscan 1=Disable virus scan - * \param uploaderrorcode Value of upload error code ($_FILES['field']['error']) - * \return int >0 if OK, <0 or string if KO + * Move an uploaded file after some controls. + * If there is errors (virus found, antivir in error, bad filename), file is not moved. + * @param src_file Source full path filename ($_FILES['field']['tmp_name']) + * @param dest_file Target full path filename + * @param allowoverwrite 1=Overwrite target file if it already exists + * @param disablevirusscan 1=Disable virus scan + * @param uploaderrorcode Value of upload error code ($_FILES['field']['error']) + * @return int >0 if OK, <0 or string if KO */ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0) { @@ -539,11 +537,91 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable return 1; } +/** + * Remove a file or several files with a mask + * @param file File to delete or mask of file to delete + * @param disableglob Disable usage of glob like * + * @param boolean True if file is deleted, False if error + */ +function dol_delete_file($file,$disableglob=0) +{ + //print "x".$file." ".$disableglob; + $ok=true; + $file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset + if (empty($disableglob)) + { + foreach (glob($file_osencoded) as $filename) + { + $ok=unlink($filename); // The unlink encapsulated by dolibarr + if ($ok) dol_syslog("Removed file ".$filename,LOG_DEBUG); + else dol_syslog("Failed to remove file ".$filename,LOG_WARNING); + } + } + else + { + $ok=unlink($file_osencoded); // The unlink encapsulated by dolibarr + if ($ok) dol_syslog("Removed file ".$file_osencoded,LOG_DEBUG); + else dol_syslog("Failed to remove file ".$file_osencoded,LOG_WARNING); + } + return $ok; +} + +/** + * Remove a directory (not recursive, so content must be empty). + * If directory is not empty, return false + * @param file Directory to delete + * @return boolean True if success, false if error + */ +function dol_delete_dir($dir) +{ + $dir_osencoded=dol_osencode($dir); + return rmdir($dir_osencoded); +} + +/** + * Remove a directory $dir and its subdirectories + * @param file Dir to delete + * @param count Counter to count nb of deleted elements + * @return int Number of files and directory removed + */ +function dol_delete_dir_recursive($dir,$count=0) +{ + dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir,LOG_DEBUG); + $dir_osencoded=dol_osencode($dir); + if ($handle = opendir("$dir_osencoded")) + { + while (false !== ($item = readdir($handle))) + { + if (! utf8_check($item)) $item=utf8_encode($item); // should be useless + + if ($item != "." && $item != "..") + { + if (is_dir(dol_osencode("$dir/$item"))) + { + $count=dol_delete_dir_recursive("$dir/$item",$count); + } + else + { + dol_delete_file("$dir/$item",1); + $count++; + //echo " removing $dir/$item
\n"; + } + } + } + closedir($handle); + dol_delete_dir($dir); + $count++; + //echo "removing $dir
\n"; + } + + //echo "return=".$count; + return $count; +} + /** * Get and save an upload file (for example after submitting a new file a mail form). * All information used are in db, conf, langs, user and _FILES. - * * @param upload_dir Directory to store upload files * @param allowoverwrite 1=Allow overwrite existing file * @param donotupdatesession 1=Do no edit _SESSION variable @@ -602,7 +680,6 @@ function dol_add_file_process($upload_dir,$allowoverwrite=0,$donotupdatesession= /** * Remove an uploaded file (for example after submitting a new file a mail form). * All information used are in db, conf, langs, user and _FILES. - * * @param filenb File nb to delete * @param donotupdatesession 1=Do no edit _SESSION variable * @return string Message with result of upload and store. @@ -649,11 +726,13 @@ function dol_remove_file_process($filenb,$donotupdatesession=0) /** * Convert file to image + * @param file Input file name + * @param ext Extension of target file */ function dol_convert_file($file,$ext='png') { global $langs; - + $image=new Imagick(); $ret = $image->readImage($file); if ($ret) @@ -662,7 +741,7 @@ function dol_convert_file($file,$ext='png') if ($ret) { $count = $image->getNumberImages(); - $ret = $image->writeImage( $file . "." . $ext, true ); + $ret = $image->writeImages( $file . "." . $ext, true ); if ($ret) return $count; else return -3; } @@ -675,7 +754,7 @@ function dol_convert_file($file,$ext='png') { return -1; } - + return 1; } diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 2857a34e3f5..bd473a2d7f3 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -37,6 +37,16 @@ if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..'); if (! defined('DOL_DOCUMENT_ROOT_ALT')) define('DOL_DOCUMENT_ROOT_ALT', ''); // If option not enabled, we keep it disabled but avoid warning if (! defined('ADODB_DATE_VERSION')) include_once(DOL_DOCUMENT_ROOT."/includes/adodbtime/adodb-time.inc.php"); +/** + * This function output memory used by PHP and exit everything. Used for debugging purpose. + */ +function dol_stopwithmem() +{ + print memory_get_usage(); + llxFooter(); + exit; +} + /** * Function called at end of web php process */ @@ -2437,12 +2447,12 @@ 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 Numero of page - * \param file Lien - * \param options Autres parametres d'url a propager dans les liens ("" par defaut) - * \param nextpage Faut-il une page suivante - * \param betweenarraows HTML Content to show between arrows + * Fonction servant a afficher les fleches de navigation dans les pages de listes + * @param page Numero of page + * @param file Lien + * @param options Autres parametres d'url a propager dans les liens ("" par defaut) + * @param nextpage Faut-il une page suivante + * @param betweenarraows HTML Content to show between arrows */ function print_fleche_navigation($page,$file,$options='',$nextpage,$betweenarrows='') { @@ -2460,94 +2470,12 @@ function print_fleche_navigation($page,$file,$options='',$nextpage,$betweenarrow /** - * Remove a file or several files with a mask - * @param file File to delete or mask of file to delete - * @param disableglob Disable usage of glob like * - * @param boolean True if file is deleted, False if error - */ -function dol_delete_file($file,$disableglob=0) -{ - //print "x".$file." ".$disableglob; - $ok=true; - $file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset - if (empty($disableglob)) - { - foreach (glob($file_osencoded) as $filename) - { - $ok=unlink($filename); // The unlink encapsulated by dolibarr - if ($ok) dol_syslog("Removed file ".$filename,LOG_DEBUG); - else dol_syslog("Failed to remove file ".$filename,LOG_WARNING); - } - } - else - { - $ok=unlink($file_osencoded); // The unlink encapsulated by dolibarr - if ($ok) dol_syslog("Removed file ".$file_osencoded,LOG_DEBUG); - else dol_syslog("Failed to remove file ".$file_osencoded,LOG_WARNING); - } - return $ok; -} - -/** - * Remove a directory (not recursive, so content must be empty). - * If directory is not empty, return false - * @param file Directory to delete - * @return boolean True if success, false if error - */ -function dol_delete_dir($dir) -{ - $dir_osencoded=dol_osencode($dir); - return rmdir($dir_osencoded); -} - -/** - * Remove a directory $dir and its subdirectories - * @param file Dir to delete - * @param count Counter to count nb of deleted elements - * @return int Number of files and directory removed - */ -function dol_delete_dir_recursive($dir,$count=0) -{ - dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir,LOG_DEBUG); - $dir_osencoded=dol_osencode($dir); - if ($handle = opendir("$dir_osencoded")) - { - while (false !== ($item = readdir($handle))) - { - if (! utf8_check($item)) $item=utf8_encode($item); // should be useless - - if ($item != "." && $item != "..") - { - if (is_dir(dol_osencode("$dir/$item"))) - { - $count=dol_delete_dir_recursive("$dir/$item",$count); - } - else - { - dol_delete_file("$dir/$item",1); - $count++; - //echo " removing $dir/$item
\n"; - } - } - } - closedir($handle); - dol_delete_dir($dir); - $count++; - //echo "removing $dir
\n"; - } - - //echo "return=".$count; - return $count; -} - - -/** - * \brief Fonction qui retourne un taux de tva formate pour visualisation - * \remarks Fonction utilisee dans les pdf et les pages html - * \param rate Rate value to format (19.6 19,6 19.6% 19,6%,...) - * \param foundpercent Add a percent % sign in output - * \param info_bits Miscellanous information on vat - * \return string Chaine avec montant formate (19,6 ou 19,6% ou 8.5% *) + * Fonction qui retourne un taux de tva formate pour visualisation + * Utilisee dans les pdf et les pages html + * @param rate Rate value to format (19.6 19,6 19.6% 19,6%,...) + * @param foundpercent Add a percent % sign in output + * @param info_bits Miscellanous information on vat + * @return string Chaine avec montant formate (19,6 ou 19,6% ou 8.5% *) */ function vatrate($rate,$addpercent=false,$info_bits=0) { @@ -3528,22 +3456,12 @@ function dol_htmloutput_errors($mesgstring='',$mesgarray='') return dol_htmloutput_mesg($mesgstring, $mesgarray, 'error'); } -/** - * This function output memory used by PHP and exit everything. Used for debugging purpose. - */ -function stopwithmem() -{ - print memory_get_usage(); - llxFooter(); - exit; -} - /** - * \brief Advanced sort array by second index function, which produces - * ascending (default) or descending output and uses optionally - * natural case insensitive sorting (which can be optionally case - * sensitive as well). + * Advanced sort array by second index function, which produces + * ascending (default) or descending output and uses optionally + * natural case insensitive sorting (which can be optionally case + * sensitive as well). */ function dol_sort_array(&$array, $index, $order='asc', $natsort, $case_sensitive) { @@ -3594,7 +3512,7 @@ function utf8_check($str) /** * Return an UTF-8 string encoded into OS filesystem encoding. This function is used to define - * value to pass to filesystem PHP functions. + * value to pass to filesystem PHP functions. * @param $str String to encode (UTF-8) * @return string Encoded string (UTF-8, ISO-8859-1) */ @@ -3654,7 +3572,6 @@ function dol_getIdFromCode($db,$key,$tablename,$fieldkey='code',$fieldid='id') /** * Verify if condition in string is ok or not - * * @param string $strRights * @return boolean true or false */ @@ -3686,7 +3603,6 @@ function verifCond($strRights) /** * Replace eval function to add more security. * This function is called by verifCond(). - * * @param string $s * @return int 1 */ @@ -3710,7 +3626,7 @@ function dol_eval($s) if (! function_exists('glob') && ! is_callable('glob')) { /** - * \brief For replace glob() function + * To define glob() function if not exists */ function glob($pattern) { @@ -3747,7 +3663,7 @@ if (! function_exists('glob') && ! is_callable('glob')) } /** - * \brief For dol_glob() function + * For dol_glob() function */ function pattern_match($pattern,$string) { diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index b9fac82cbed..56819f98313 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -791,6 +791,7 @@ class Societe extends CommonObject function delete($id) { global $user,$langs,$conf; + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); dol_syslog("Societe::Delete", LOG_DEBUG); $sqr = 0;