diff --git a/htdocs/core/actions_printing.inc.php b/htdocs/core/actions_printing.inc.php
index eeecc25fbd2..030e7016a55 100644
--- a/htdocs/core/actions_printing.inc.php
+++ b/htdocs/core/actions_printing.inc.php
@@ -47,17 +47,19 @@ if ($action == 'print_file' and $user->rights->printing->read)
if (! empty($conf->global->{$printer->active})) {
$subdir=(GETPOST('printer', 'alpha')=='expedition'?'sending':'');
$ret = $printer->print_file(GETPOST('file', 'alpha'), GETPOST('printer', 'alpha'), $subdir);
- if ($ret < 0) {
+ if ($ret > 0) {
+ //print '
'.print_r($printer->errors, true).'
';
setEventMessages($printer->error, $printer->errors, 'errors');
}
if ($ret==0) {
- setEventMessages($printer->error, $printer->errors, 'warning');
+ //print ''.print_r($printer->errors, true).'
';
+ setEventMessages($printer->error, $printer->errors);
setEventMessages($langs->trans("FileWasSentToPrinter", basename(GETPOST('file'))).' '.$langs->trans("ViaModule").' '.$printer->name, null);
$printed++;
}
}
}
- if ($printed==0) setEventMessages($langs->trans("NoActivePrintingModuleFound"), null);
+ if ($printed==0) setEventMessages($langs->trans("NoActivePrintingModuleFound"), null, 'warning');
} else {
setEventMessages($langs->trans("NoModuleFound"), null, 'warning');
}
diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php
index 4ce1e18b390..ab838270372 100644
--- a/htdocs/core/modules/printing/printgcp.modules.php
+++ b/htdocs/core/modules/printing/printgcp.modules.php
@@ -42,6 +42,8 @@ class printing_printgcp extends PrintingDriver
var $conf = array();
var $google_id = '';
var $google_secret = '';
+ var $error;
+ var $errors = array();
var $db;
const LOGIN_URL = 'https://accounts.google.com/o/oauth2/token';
@@ -122,11 +124,12 @@ class printing_printgcp extends PrintingDriver
/**
* Return list of available printers
*
- * @return string html list of printers
+ * @return int 0 if OK, >0 if KO
*/
function listAvailablePrinters()
{
global $bc, $conf, $langs;
+ $error = 0;
$langs->load('printing');
$var=true;
@@ -145,7 +148,7 @@ class printing_printgcp extends PrintingDriver
$var = true;
foreach ($list['available'] as $printer_det)
{
- $var=!$var;
+ $var = !$var;
$html.= "";
$html.= '| '.$printer_det['name'].' | ';
$html.= ''.$printer_det['displayName'].' | ';
@@ -165,8 +168,8 @@ class printing_printgcp extends PrintingDriver
$html.= '';
$html.= '
'."\n";
}
-
- return $html;
+ $this->resprint = $html;
+ return $error;
}
@@ -240,15 +243,19 @@ class printing_printgcp extends PrintingDriver
* @param string $file file
* @param string $module module
* @param string $subdir subdir for file
- * @return int 0 if OK, <0 if KO
+ * @return int 0 if OK, >0 if KO
*/
function print_file($file, $module, $subdir='')
{
+ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+
global $conf, $user, $db;
+ $error = 0;
$fileprint=$conf->{$module}->dir_output;
if ($subdir!='') $fileprint.='/'.$subdir;
$fileprint.='/'.$file;
+ $mimetype = dol_mimetype($fileprint);
// select printer uri for module order, propal,...
$sql = "SELECT rowid, printer_id, copy FROM ".MAIN_DB_PREFIX."printing WHERE module='".$module."' AND driver='printgcp' AND userid=".$user->id;
$result = $db->query($sql);
@@ -267,18 +274,18 @@ class printing_printgcp extends PrintingDriver
}
else
{
- return 'NoDefaultPrinterDefined';
+ $this->errors[] = 'NoDefaultPrinterDefined';
+ $error++;
+ return $error;
}
}
}
else dol_print_error($db);
- $ret = $this->sendPrintToPrinter($printer_id, $file, $fileprint, 'application/pdf');
- $this->error = 'PRINTGCP: '.$ret['errormessage'];
- if ($ret['status']==1)
- return 0;
- else
- return -1;
+ $ret = $this->sendPrintToPrinter($printer_id, $file, $fileprint, $mimetype);
+ $this->errors = 'PRINTGCP: '.mb_convert_encoding($ret['errormessage'], "UTF-8");
+ if ($ret['status']!=1) $error++;
+ return $error;
}
/**
diff --git a/htdocs/core/modules/printing/printipp.modules.php b/htdocs/core/modules/printing/printipp.modules.php
index 6e8ad305339..eaf655d7edf 100644
--- a/htdocs/core/modules/printing/printipp.modules.php
+++ b/htdocs/core/modules/printing/printipp.modules.php
@@ -41,6 +41,7 @@ class printing_printipp extends PrintingDriver
var $user;
var $password;
var $error;
+ var $errors = array();
var $db;
@@ -72,11 +73,12 @@ class printing_printipp extends PrintingDriver
* @param string $module module
* @param string $subdir subdirectory of document like for expedition subdir is sendings
*
- * @return int 0 if OK, <0 if KO
+ * @return int 0 if OK, >0 if KO
*/
function print_file($file, $module, $subdir='')
{
global $conf, $user, $db;
+ $error = 0;
include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php';
@@ -108,8 +110,9 @@ class printing_printipp extends PrintingDriver
}
else
{
- $this->error = 'NoDefaultPrinterDefined';
- return -1;
+ $this->errors[] = 'NoDefaultPrinterDefined';
+ $error++;
+ return $error;
}
}
}
@@ -121,19 +124,26 @@ class printing_printipp extends PrintingDriver
if ($subdir!='') $fileprint.='/'.$subdir;
$fileprint.='/'.$file;
$ipp->setData($fileprint);
- $ipp->printJob();
+ try {
+ $ipp->printJob();
+ } catch (Exception $e) {
+ $this->errors[] = $e->getMessage();
+ $error++;
+ }
+ if ($error==0) $this->errors[] = 'PRINTIPP: Job added';
- return 0;
+ return $error;
}
/**
* Return list of available printers
*
- * @return string html list of printers
+ * @return int 0 if OK, >0 if KO
*/
function listAvailablePrinters()
{
global $bc, $conf, $langs;
+ $error = 0;
$var=true;
$html = '';
@@ -180,8 +190,8 @@ class printing_printipp extends PrintingDriver
$html.= '';
$html.= '
'."\n";
}
-
- return $html;
+ $this->resprint = $html;
+ return $error;
}
/**
diff --git a/htdocs/printing/admin/printing.php b/htdocs/printing/admin/printing.php
index da7de1bbdfb..6a28f352578 100644
--- a/htdocs/printing/admin/printing.php
+++ b/htdocs/printing/admin/printing.php
@@ -256,7 +256,11 @@ if ($mode == 'test' && $user->admin)
$printer = new $classname($db);
//print ''.print_r($printer, true).'
';
if (count($printer->getlist_available_printers())) {
- print $printer->listAvailablePrinters();
+ if ($printer->listAvailablePrinters()==0) {
+ print $printer->resprint;
+ } else {
+ setEventMessages($printer->error, $printer->errors, 'errors');
+ }
}
else {
print $langs->trans('PleaseConfigureDriverfromList');