Fix logs and protection for infinit loop

This commit is contained in:
Laurent Destailleur (aka Eldy) 2024-12-14 18:38:48 +01:00
parent 8673588274
commit c8a7c09033
2 changed files with 11 additions and 5 deletions

View File

@ -1641,14 +1641,19 @@ function dol_delete_dir($dir, $nophperrors = 0)
* @param int $onlysub Delete only files and subdir, not main directory
* @param int $countdeleted Counter to count nb of elements found really deleted
* @param int $indexdatabase Try to remove also index entries.
* @param int $nolog Disable log files (too verbose when making recursive directories)
* @param int $nolog 1=Disable log for files and subdirectories (too verbose when making recursive directories)
* @param int $level 0 = level or recursivity
* @return int Number of files and directory we try to remove. NB really removed is returned into var by reference $countdeleted.
*/
function dol_delete_dir_recursive($dir, $count = 0, $nophperrors = 0, $onlysub = 0, &$countdeleted = 0, $indexdatabase = 1, $nolog = 0)
function dol_delete_dir_recursive($dir, $count = 0, $nophperrors = 0, $onlysub = 0, &$countdeleted = 0, $indexdatabase = 1, $nolog = 0, $level = 0)
{
if (empty($nolog)) {
if (empty($nolog) || empty($level)) {
dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir, LOG_DEBUG);
}
if ($level > 1000) {
dol_syslog("functions.lib:dol_delete_dir_recursive too many depth", LOG_WARNING);
}
if (dol_is_dir($dir)) {
$dir_osencoded = dol_osencode($dir);
if ($handle = opendir("$dir_osencoded")) {
@ -1659,7 +1664,7 @@ function dol_delete_dir_recursive($dir, $count = 0, $nophperrors = 0, $onlysub =
if ($item != "." && $item != "..") {
if (is_dir(dol_osencode("$dir/$item")) && !is_link(dol_osencode("$dir/$item"))) {
$count = dol_delete_dir_recursive("$dir/$item", $count, $nophperrors, 0, $countdeleted, $indexdatabase, $nolog);
$count = dol_delete_dir_recursive("$dir/$item", $count, $nophperrors, 0, $countdeleted, $indexdatabase, $nolog, ($level + 1));
} else {
$result = dol_delete_file("$dir/$item", 1, $nophperrors, 0, null, false, $indexdatabase, $nolog);
$count++;

View File

@ -836,7 +836,8 @@ IMG;
dol_mkdir($conf->user->dir_temp); // We must be sure the directory exists and is writable
// We delete and recreate a subdir because the soffice may have change pemrissions on it
dol_delete_dir_recursive($conf->user->dir_temp.'/odtaspdf');
$countdeleted = 0;
dol_delete_dir_recursive($conf->user->dir_temp.'/odtaspdf', 0, 0, 0, $countdeleted, 0, 1);
dol_mkdir($conf->user->dir_temp.'/odtaspdf');
// Install prerequisites: apt install soffice libreoffice-common libreoffice-writer