From c093f0c27e730abc5f09354ec522133ece5e1bd8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 Nov 2024 01:10:49 +0100 Subject: [PATCH] Debug v21 --- htdocs/core/lib/files.lib.php | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 3de1cfdb7f5..0e754811b6c 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2134,10 +2134,11 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uplo global $db, $user, $conf; $result = 0; + $error = 0; $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $dir); - if (!preg_match('/[\\/]temp[\\/]|[\\/]thumbs|\.meta$/', $rel_dir)) { // If not a tmp dir + if (!preg_match('/[\\/]temp[\\/]|[\\/]thumbs|\.meta$/', $rel_dir)) { // If not a temporary directory. TODO Does this test work ? $filename = basename(preg_replace('/\.noexe$/', '', $file)); $rel_dir = preg_replace('/[\\/]$/', '', $rel_dir); $rel_dir = preg_replace('/^[\\/]/', '', $rel_dir); @@ -2202,10 +2203,10 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uplo // We also exclude '/temp/' dir and 'documents/admin/documents' // We make escapement here and call executeCLI without escapement because we don't want to have the '*.log' escaped. $cmd = getDolGlobalString('MAIN_USE_FULL_TEXT_INDEXATION_PDFTOTEXT', 'pdftotext')." -htmlmeta '".escapeshellcmd($filetoprocess)."' - "; - $result = $utils->executeCLI($cmd, $outputfile, 0, null, 1); + $resultexec = $utils->executeCLI($cmd, $outputfile, 0, null, 1); - if (!$result['error']) { - $txt = $result['output']; + if (!$resultexec['error']) { + $txt = $resultexec['output']; $matches = array(); if (preg_match('//i', $txt, $matches)) { $keywords = $matches[1]; @@ -2213,6 +2214,9 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uplo if (preg_match('/
(.*)<\/pre>/si', $txt, $matches)) {
 							$textforfulltextindex = dol_string_nounprintableascii($matches[1], 0);
 						}
+					} else {
+						dol_syslog($resultexec['error']);
+						$error++;
 					}
 				}
 
@@ -2224,11 +2228,11 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uplo
 
 					// We also exclude '/temp/' dir and 'documents/admin/documents'
 					// We make escapement here and call executeCLI without escapement because we don't want to have the '*.log' escaped.
-					$cmd = getDolGlobalString('MAIN_USE_FULL_TEXT_INDEXATION_DOCLING', 'docling')." '".escapeshellcmd($filetoprocess)."' --to text ";
-					$result = $utils->executeCLI($cmd, $outputfile, 0, null, 1);
+					$cmd = getDolGlobalString('MAIN_USE_FULL_TEXT_INDEXATION_DOCLING', 'docling')." --from pdf --to text '".escapeshellcmd($filetoprocess)."'";
+					$resultexec = $utils->executeCLI($cmd, $outputfile, 0, null, 1);
 
-					if (!$result['error']) {
-						$txt = $result['output'];
+					if (!$resultexec['error']) {
+						$txt = $resultexec['output'];
 						//$matches = array();
 						//if (preg_match('//i', $txt, $matches)) {
 						//	$keywords = $matches[1];
@@ -2237,6 +2241,9 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uplo
 						//	$textforfulltextindex = dol_string_nounprintableascii($matches[1], 0);
 						//}
 						$textforfulltextindex = $txt;
+					} else {
+						dol_syslog($resultexec['error']);
+						$error++;
 					}
 				}
 			}
@@ -2246,9 +2253,11 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uplo
 			$ecmfile->keywords = $keywords;
 		}
 
-		$result = $ecmfile->create($user);
-		if ($result < 0) {
-			dol_syslog($ecmfile->error);
+		if (!$error) {
+			$result = $ecmfile->create($user);
+			if ($result < 0) {
+				dol_syslog($ecmfile->error);
+			}
 		}
 	}