diff --git a/htdocs/accountancy/admin/export.php b/htdocs/accountancy/admin/export.php
index 03cd41a43a9..430c7b6abae 100644
--- a/htdocs/accountancy/admin/export.php
+++ b/htdocs/accountancy/admin/export.php
@@ -47,7 +47,8 @@ $main_option = array(
'ACCOUNTING_EXPORT_PREFIX_SPEC',
);
-$configuration = AccountancyExport::getTypeConfig();
+$accountancyexport = new AccountancyExport($db);
+$configuration = $accountancyexport->getTypeConfig();
$listparam = $configuration['param'];
@@ -117,7 +118,7 @@ if ($action == 'update') {
if (!$error) {
// reload
- $configuration = AccountancyExport::getTypeConfig();
+ $configuration = $accountancyexport->getTypeConfig();
$listparam = $configuration['param'];
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
} else {
@@ -237,7 +238,7 @@ if (!$conf->use_javascript_ajax) {
print "";
} else {
print '
';
- $listmodelcsv = AccountancyExport::getType();
+ $listmodelcsv = $accountancyexport->getType();
print $form->selectarray("ACCOUNTING_EXPORT_MODELCSV", $listmodelcsv, $conf->global->ACCOUNTING_EXPORT_MODELCSV, 0, 0, 0, '', 0, 0, 0, '', '', 1);
print ' | ';
diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php
index ce0714d5651..2ee947bf720 100644
--- a/htdocs/accountancy/bookkeeping/list.php
+++ b/htdocs/accountancy/bookkeeping/list.php
@@ -204,7 +204,8 @@ if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
unset($arrayfields['t.lettering_code']);
}
-$listofformat = AccountancyExport::getType();
+$accountancyexport = new AccountancyExport($db);
+$listofformat = $accountancyexport->getType();
$formatexportset = $conf->global->ACCOUNTING_EXPORT_MODELCSV;
if (empty($listofformat[$formatexportset])) {
$formatexportset = 1;
diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php
index 128b14fa800..127a6070168 100644
--- a/htdocs/accountancy/class/accountancyexport.class.php
+++ b/htdocs/accountancy/class/accountancyexport.class.php
@@ -11,6 +11,7 @@
* Copyright (C) 2017-2019 Frédéric France
* Copyright (C) 2017 André Schild
* Copyright (C) 2020 Guillaume Alexandre
+ * Copyright (C) 2022 Joachim Kueter
*
* 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
@@ -34,6 +35,7 @@
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+require_once(DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php');
/**
@@ -93,11 +95,13 @@ class AccountancyExport
*/
public function __construct(DoliDB $db)
{
- global $conf;
+ global $conf, $hookmanager;
$this->db = $db;
$this->separator = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$this->end_line = empty($conf->global->ACCOUNTING_EXPORT_ENDLINE) ? "\n" : ($conf->global->ACCOUNTING_EXPORT_ENDLINE == 1 ? "\n" : "\r\n");
+
+ $hookmanager->initHooks(array('accountancyexport'));
}
/**
@@ -105,7 +109,7 @@ class AccountancyExport
*
* @return array of type
*/
- public static function getType()
+ public function getType()
{
global $langs;
@@ -132,6 +136,10 @@ class AccountancyExport
self::$EXPORT_TYPE_ISUITEEXPERT => 'Export iSuite Expert',
);
+ // allow modules to define export formats
+ global $hookmanager;
+ $reshook = $hookmanager->executeHooks('getType', $parameters, $listofexporttypes);
+
ksort($listofexporttypes, SORT_NUMERIC);
return $listofexporttypes;
@@ -168,7 +176,12 @@ class AccountancyExport
self::$EXPORT_TYPE_ISUITEEXPERT => 'isuiteexpert',
);
- return $formatcode[$type];
+ global $hookmanager;
+ $code = $formatcode[$type];
+ $parameters = array('type' => $type);
+ $reshook = $hookmanager->executeHooks('getFormatCode', $parameters, $code);
+
+ return $code;
}
/**
@@ -176,11 +189,11 @@ class AccountancyExport
*
* @return array of type
*/
- public static function getTypeConfig()
+ public function getTypeConfig()
{
global $conf, $langs;
- return array(
+ $exporttypes = array(
'param' => array(
self::$EXPORT_TYPE_CONFIGURABLE => array(
'label' => $langs->trans('Modelcsv_configurable'),
@@ -265,6 +278,11 @@ class AccountancyExport
'txt' => $langs->trans("txt")
),
);
+
+ global $hookmanager;
+ $parameters = array();
+ $reshook = $hookmanager->executeHooks('getTypeConfig', $parameters, $exporttypes);
+ return $exporttypes;
}
@@ -350,7 +368,13 @@ class AccountancyExport
$this->exportiSuiteExpert($TData);
break;
default:
- $this->errors[] = $langs->trans('accountancy_error_modelnotfound');
+ global $hookmanager;
+ $parameters = array('format' => $formatexportset);
+ // file contents will be created in the hooked function via print
+ $reshook = $hookmanager->executeHooks('export', $parameters, $TData);
+ if ($reshook != 1) {
+ $this->errors[] = $langs->trans('accountancy_error_modelnotfound');
+ }
break;
}
}