dolibarr 20.0.5
html_cerfafr.modules.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2005-2006 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
6 * Copyright (C) 2014-2020 Alexandre Spangaro <aspangaro@open-dsi.fr>
7 * Copyright (C) 2015 Benoit Bruchard <benoitb21@gmail.com>
8 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
29require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php';
30require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
31require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
32require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
33
34
39{
45 public function __construct($db)
46 {
47 global $conf, $langs;
48
49 $this->db = $db;
50 $this->name = "cerfafr";
51 $this->description = $langs->trans('DonationsReceiptModel').' - fr_FR - Cerfa 11580*04';
52
53 // Dimension page for size A4
54 $this->type = 'html';
55 }
56
57
63 public function isEnabled()
64 {
65 return true;
66 }
67
68
69 // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
78 public function write_file($don, $outputlangs, $currency = '')
79 {
80 // phpcs:enable
81 global $user, $conf, $langs, $mysoc;
82
83 $now = dol_now();
84 $id = (!is_object($don) ? $don : '');
85
86 if (!is_object($outputlangs)) {
87 $outputlangs = $langs;
88 }
89
90 // Load traductions files required by page
91 $outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "donations"));
92
93 $currency = !empty($currency) ? $currency : $conf->currency;
94
95 if (!empty($conf->don->dir_output)) {
96 // Definition of the object don (for upward compatibility)
97 if (!is_object($don)) {
98 $don = new Don($this->db);
99 $ret = $don->fetch($id);
100 $id = $don->id;
101 }
102
103 // Definition of $dir and $file
104 if (!empty($don->specimen)) {
105 $dir = $conf->don->dir_output;
106 $file = $dir."/SPECIMEN.html";
107 } else {
108 $donref = dol_sanitizeFileName($don->ref);
109 $dir = $conf->don->dir_output."/".$donref;
110 $file = $dir."/".$donref.".html";
111 }
112
113 if (!file_exists($dir)) {
114 if (dol_mkdir($dir) < 0) {
115 $this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
116 return -1;
117 }
118 }
119
120 if (file_exists($dir)) {
121 $formclass = new Form($this->db);
122
123 // This is not the proper way to do it but $formclass->form_modes_reglement
124 // prints the translation instead of returning it
125 $formclass->load_cache_types_paiements();
126 // Don::fetch() stores the payment mode into mode_reglement_id. The modepaymentid property is only
127 // set by the create/update forms, so it is always empty when the document is built from a fetched
128 // donation and no payment mode checkbox was ever ticked on the receipt.
129 $modepaymentid = !empty($don->mode_reglement_id) ? $don->mode_reglement_id : $don->modepaymentid;
130 if ($modepaymentid) {
131 $paymentmode = !empty($formclass->cache_types_paiements[$modepaymentid]['label']) ? $formclass->cache_types_paiements[$modepaymentid]['label'] : '';
132 } else {
133 $paymentmode = '';
134 }
135 $modepaymentcode = !empty($formclass->cache_types_paiements[$modepaymentid]['code']) ? $formclass->cache_types_paiements[$modepaymentid]['code'] : "";
136 if ($modepaymentcode == 'CHQ') {
137 $ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox" disabled="true" checked="checked"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>';
138 } elseif ($modepaymentcode == 'LIQ') {
139 $ModePaiement = '<td width="25%"><input type="checkbox" checked="checked"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>';
140 } elseif ($modepaymentcode == 'VIR' || $modepaymentcode == 'PRE' || $modepaymentcode == 'CB') {
141 $ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox" checked="checked"> Virement, prélèvement, carte bancaire</td>';
142 } else {
143 $ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>';
144 }
145
146 /*
147 if (empty($don->societe))
148 {
149 $CodeDon = '<td width="33%"><input type="checkbox" disabled="true" checked="checked" > 200 du CGI</td><td width="33%"><input type="checkbox" disabled="true" > 238 bis du CGI</td><td width="33%"><input type="checkbox" disabled="true" > 978 du CGI</td>';
150 }
151 else
152 {
153 $CodeDon = '<td width="33%"><input type="checkbox" disabled="true" > 200 du CGI</td><td width="33%"><input type="checkbox" disabled="true" checked="checked" > 238 bis du CGI</td><td width="33%"><input type="checkbox" disabled="true" > 978 du CGI</td>';
154 }
155 */
156 // Donator identity.
157 // When option DONATION_USE_THIRDPARTIES is on, the donation form does not show the name/address
158 // inputs at all, so llx_don only holds fk_soc and every donator field stays empty. The receipt
159 // would then be issued without the mandatory identity of the donator, so fall back on the linked
160 // third party for each field left empty.
161 $donatorsociete = (string) $don->societe;
162 $donatorlastname = (string) $don->lastname;
163 $donatorfirstname = (string) $don->firstname;
164 $donatoraddress = (string) $don->address;
165 $donatorzip = (string) $don->zip;
166 $donatortown = (string) $don->town;
167
168 if (!empty($don->socid) && $don->socid > 0) {
169 $donatorthirdparty = new Societe($this->db);
170 if ($donatorthirdparty->fetch($don->socid) > 0) {
171 if (dol_strlen(trim($donatorsociete.$donatorlastname.$donatorfirstname)) == 0) {
172 // A third party holds a single name field, even for a private individual, so it goes
173 // to the "Nom" cell of the form and the "Prénoms" cell is left empty.
174 $donatorsociete = (string) $donatorthirdparty->name;
175 }
176 if (dol_strlen(trim($donatoraddress)) == 0) {
177 $donatoraddress = (string) $donatorthirdparty->address;
178 }
179 if (dol_strlen(trim($donatorzip)) == 0) {
180 $donatorzip = (string) $donatorthirdparty->zip;
181 }
182 if (dol_strlen(trim($donatortown)) == 0) {
183 $donatortown = (string) $donatorthirdparty->town;
184 }
185 } else {
186 dol_syslog("html_cerfafr::write_file Failed to load thirdparty ".$don->socid." linked to donation ".$don->id.", donator block will remain empty - ".$donatorthirdparty->error, LOG_ERR);
187 }
188 }
189
190 if (dol_strlen(trim($donatorsociete.$donatorlastname.$donatorfirstname)) == 0) {
191 dol_syslog("html_cerfafr::write_file No name found for the donator of donation ".$don->id.", the receipt will not be compliant", LOG_WARNING);
192 }
193
194 // Define contents
195 $donmodel = DOL_DOCUMENT_ROOT."/core/modules/dons/html_cerfafr.html";
196 $form = implode('', file($donmodel));
197 $form = str_replace('__REF__', (string) $don->id, $form);
198 $form = str_replace('__DATE__', dol_print_date($don->date, 'day', false, $outputlangs), $form);
199 //$form = str_replace('__IP__',$user->ip,$form); // TODO $user->ip not exist
200 $form = str_replace('__AMOUNT__', price($don->amount), $form);
201 $form = str_replace('__AMOUNTLETTERS__', $this->amountToLetters($don->amount), $form);
202 $form = str_replace('__CURRENCY__', $outputlangs->transnoentitiesnoconv("Currency".$currency), $form);
203 $form = str_replace('__CURRENCYCODE__', $conf->currency, $form);
204 $form = str_replace('__MAIN_INFO_SOCIETE_NOM__', $mysoc->name, $form);
205 $form = str_replace('__MAIN_INFO_SOCIETE_ADDRESS__', $mysoc->address, $form);
206 $form = str_replace('__MAIN_INFO_SOCIETE_ZIP__', $mysoc->zip, $form);
207 $form = str_replace('__MAIN_INFO_SOCIETE_TOWN__', $mysoc->town, $form);
208 $form = str_replace('__MAIN_INFO_SOCIETE_OBJECT__', $mysoc->socialobject, $form);
209
210 $form = str_replace('__DONATOR_FIRSTNAME__', dol_escape_htmltag($donatorfirstname), $form);
211 // The template concatenates __DONATOR_SOCIETE__ and __DONATOR_LASTNAME__ with no separator,
212 // so add a line break when both are filled in.
213 $donatorlastnameprefix = (dol_strlen(trim($donatorsociete)) > 0 && dol_strlen(trim($donatorlastname)) > 0) ? '<br>' : '';
214 $form = str_replace('__DONATOR_LASTNAME__', $donatorlastnameprefix.dol_escape_htmltag($donatorlastname), $form);
215 $form = str_replace('__DONATOR_SOCIETE__', dol_escape_htmltag($donatorsociete), $form);
216 $form = str_replace('__DONATOR_STATUT__', $don->statut, $form);
217 $form = str_replace('__DONATOR_ADDRESS__', dol_nl2br(dol_escape_htmltag($donatoraddress, 0, 1)), $form);
218 $form = str_replace('__DONATOR_ZIP__', dol_escape_htmltag($donatorzip), $form);
219 $form = str_replace('__DONATOR_TOWN__', dol_escape_htmltag($donatortown), $form);
220
221 $form = str_replace('__PAYMENTMODE_LIB__ ', $paymentmode, $form);
222 $form = str_replace('__NOW__', dol_print_date($now, 'day', false, $outputlangs), $form);
223 $form = str_replace('__DonationRef__', $outputlangs->trans("DonationRef"), $form);
224 $form = str_replace('__DonationTitle__', $outputlangs->trans("DonationTitle"), $form);
225 $form = str_replace('__DonationReceipt__', $outputlangs->trans("DonationReceipt"), $form);
226 $form = str_replace('__DonationRecipient__', $outputlangs->trans("DonationRecipient"), $form);
227 $form = str_replace('__DonationDatePayment__', $outputlangs->trans("DonationDatePayment"), $form);
228 $form = str_replace('__PaymentMode__', $outputlangs->trans("PaymentMode"), $form);
229 // $form = str_replace('__CodeDon__',$CodeDon,$form);
230 $form = str_replace('__Name__', $outputlangs->trans("Name"), $form);
231 $form = str_replace('__Address__', $outputlangs->trans("Address"), $form);
232 $form = str_replace('__Zip__', $outputlangs->trans("Zip"), $form);
233 $form = str_replace('__Town__', $outputlangs->trans("Town"), $form);
234 $form = str_replace('__Object__', $outputlangs->trans("Object"), $form);
235 $form = str_replace('__Donor__', $outputlangs->trans("Donor"), $form);
236 $form = str_replace('__Date__', $outputlangs->trans("Date"), $form);
237 $form = str_replace('__Signature__', $outputlangs->trans("Signature"), $form);
238 $form = str_replace('__Message__', $outputlangs->trans("Message"), $form);
239 $form = str_replace('__IConfirmDonationReception__', $outputlangs->trans("IConfirmDonationReception"), $form);
240 $form = str_replace('__DonationMessage__', $conf->global->DONATION_MESSAGE, $form);
241
242 $form = str_replace('__ModePaiement__', $ModePaiement, $form);
243
244 $frencharticle = '';
245 if (preg_match('/fr/i', $outputlangs->defaultlang)) {
246 $frencharticle = '<font size="+1">Article 200, 238 bis et 978 du code général des impôts (CGI)</font>';
247 }
248 $form = str_replace('__FrenchArticle__', $frencharticle, $form);
249
250 $frencheligibility = '';
251 if (preg_match('/fr/i', $outputlangs->defaultlang)) {
252 $frencheligibility = 'Le bénéficiaire certifie sur l\'honneur que les dons et versements qu\'il reçoit ouvrent droit à la réduction d\'impôt prévue à l\'article :';
253 }
254 $form = str_replace('__FrenchEligibility__', $frencheligibility, $form);
255
256 $art200 = '';
257 if ($mysoc->country_code == 'FR') {
258 if (getDolGlobalInt('DONATION_ART200') >= 1) {
259 $art200 = '<input type="checkbox" disabled="true" checked="checked" >200 du CGI';
260 } else {
261 $art200 = '<input type="checkbox" disabled="true">200 du CGI';
262 }
263 }
264 $form = str_replace('__ARTICLE200__', $art200, $form);
265
266 $art238 = '';
267 if ($mysoc->country_code == 'FR') {
268 if (getDolGlobalInt('DONATION_ART238') >= 1) {
269 $art238 = '<input type="checkbox" disabled="true" checked="checked" >238 bis du CGI';
270 } else {
271 $art238 = '<input type="checkbox" disabled="true">238 bis du CGI';
272 }
273 }
274 $form = str_replace('__ARTICLE238__', $art238, $form);
275
276 $art978 = '';
277 if ($mysoc->country_code == 'FR') {
278 if (getDolGlobalInt('DONATION_ART978') >= 1) {
279 $art978 = '<input type="checkbox" disabled="true" checked="checked" >978 du CGI';
280 } else {
281 $art978 = '<input type="checkbox" disabled="true">978 du CGI';
282 }
283 }
284 $form = str_replace('__ARTICLE978__', $art978, $form);
285
286 // Save file on disk
287 dol_syslog("html_cerfafr::write_file $file");
288 $handle = fopen($file, "w");
289 fwrite($handle, $form);
290 fclose($handle);
291 dolChmod($file);
292
293 $this->result = array('fullpath' => $file);
294
295 return 1;
296 } else {
297 $this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
298 return 0;
299 }
300 } else {
301 $this->error = $langs->trans("ErrorConstantNotDefined", "DON_OUTPUTDIR");
302 return 0;
303 }
304 }
305
314 private function amountToLetters($montant, $devise1 = '', $devise2 = '')
315 {
316 $unite = array();
317 $dix = array();
318 $cent = array();
319 if (empty($devise1)) {
320 $dev1 = 'euros';
321 } else {
322 $dev1 = $devise1;
323 }
324 if (empty($devise2)) {
325 $dev2 = 'centimes';
326 } else {
327 $dev2 = $devise2;
328 }
329 $valeur_entiere = intval($montant);
330 $valeur_decimal = intval(round($montant - intval($montant), 2) * 100);
331 $dix_c = intval($valeur_decimal % 100 / 10);
332 $cent_c = intval($valeur_decimal % 1000 / 100);
333 $unite[1] = $valeur_entiere % 10;
334 $dix[1] = intval($valeur_entiere % 100 / 10);
335 $cent[1] = intval($valeur_entiere % 1000 / 100);
336 $unite[2] = intval($valeur_entiere % 10000 / 1000);
337 $dix[2] = intval($valeur_entiere % 100000 / 10000);
338 $cent[2] = intval($valeur_entiere % 1000000 / 100000);
339 $unite[3] = intval($valeur_entiere % 10000000 / 1000000);
340 $dix[3] = intval($valeur_entiere % 100000000 / 10000000);
341 $cent[3] = intval($valeur_entiere % 1000000000 / 100000000);
342 $chif = array('', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf', 'dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix sept', 'dix huit', 'dix neuf');
343 $secon_c = '';
344 $trio_c = '';
345 $prim = array();
346 $secon = array();
347 $trio = array();
348 // @phpstan-ignore-next-line
349 '@phan-var string[] $prim
350 @phan-var string[] $secon
351 @phan-var string[] $trio
352 ';
353 for ($i = 1; $i <= 3; $i++) {
354 $prim[$i] = '';
355 $secon[$i] = '';
356 $trio[$i] = '';
357 if ($dix[$i] == 0) {
358 $secon[$i] = '';
359 $prim[$i] = $chif[$unite[$i]];
360 } elseif ($dix[$i] == 1) {
361 $secon[$i] = '';
362 $prim[$i] = $chif[($unite[$i] + 10)];
363 } elseif ($dix[$i] == 2) {
364 if ($unite[$i] == 1) {
365 $secon[$i] = 'vingt et';
366 $prim[$i] = $chif[$unite[$i]];
367 } else {
368 $secon[$i] = 'vingt';
369 $prim[$i] = $chif[$unite[$i]];
370 }
371 } elseif ($dix[$i] == 3) {
372 if ($unite[$i] == 1) {
373 $secon[$i] = 'trente et';
374 $prim[$i] = $chif[$unite[$i]];
375 } else {
376 $secon[$i] = 'trente';
377 $prim[$i] = $chif[$unite[$i]];
378 }
379 } elseif ($dix[$i] == 4) {
380 if ($unite[$i] == 1) {
381 $secon[$i] = 'quarante et';
382 $prim[$i] = $chif[$unite[$i]];
383 } else {
384 $secon[$i] = 'quarante';
385 $prim[$i] = $chif[$unite[$i]];
386 }
387 } elseif ($dix[$i] == 5) {
388 if ($unite[$i] == 1) {
389 $secon[$i] = 'cinquante et';
390 $prim[$i] = $chif[$unite[$i]];
391 } else {
392 $secon[$i] = 'cinquante';
393 $prim[$i] = $chif[$unite[$i]];
394 }
395 } elseif ($dix[$i] == 6) {
396 if ($unite[$i] == 1) {
397 $secon[$i] = 'soixante et';
398 $prim[$i] = $chif[$unite[$i]];
399 } else {
400 $secon[$i] = 'soixante';
401 $prim[$i] = $chif[$unite[$i]];
402 }
403 } elseif ($dix[$i] == 7) {
404 if ($unite[$i] == 1) {
405 $secon[$i] = 'soixante et';
406 $prim[$i] = $chif[$unite[$i] + 10];
407 } else {
408 $secon[$i] = 'soixante';
409 $prim[$i] = $chif[$unite[$i] + 10];
410 }
411 } elseif ($dix[$i] == 8) {
412 if ($unite[$i] == 1) {
413 $secon[$i] = 'quatre-vingts et';
414 $prim[$i] = $chif[$unite[$i]];
415 } else {
416 $secon[$i] = 'quatre-vingt';
417 $prim[$i] = $chif[$unite[$i]];
418 }
419 } elseif ($dix[$i] == 9) {
420 if ($unite[$i] == 1) {
421 $secon[$i] = 'quatre-vingts et';
422 $prim[$i] = $chif[$unite[$i] + 10];
423 } else {
424 $secon[$i] = 'quatre-vingts';
425 $prim[$i] = $chif[$unite[$i] + 10];
426 }
427 }
428 if ($cent[$i] == 1) {
429 $trio[$i] = 'cent';
430 } elseif ($cent[$i] != 0 || $cent[$i] != '') {
431 $trio[$i] = $chif[$cent[$i]].' cents';
432 }
433 }
434
435
436 $chif2 = array('', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingts', 'quatre-vingts dix');
437 $secon_c = $chif2[$dix_c];
438 if ($cent_c == 1) {
439 $trio_c = 'cent';
440 } elseif ($cent_c != 0 || $cent_c != '') {
441 $trio_c = $chif[$cent_c].' cents';
442 }
443
444 if (($cent[3] == 0 || $cent[3] == '') && ($dix[3] == 0 || $dix[3] == '') && ($unite[3] == 1)) {
445 $somme = $trio[3].' '.$secon[3].' '.$prim[3].' million ';
446 } elseif (($cent[3] != 0 && $cent[3] != '') || ($dix[3] != 0 && $dix[3] != '') || ($unite[3] != 0 && $unite[3] != '')) {
447 $somme = $trio[3].' '.$secon[3].' '.$prim[3].' millions ';
448 } else {
449 $somme = $trio[3].' '.$secon[3].' '.$prim[3];
450 }
451
452 if (($cent[2] == 0 || $cent[2] == '') && ($dix[2] == 0 || $dix[2] == '') && ($unite[2] == 1)) {
453 $somme = $somme.' mille ';
454 } elseif (($cent[2] != 0 && $cent[2] != '') || ($dix[2] != 0 && $dix[2] != '') || ($unite[2] != 0 && $unite[2] != '')) {
455 $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2].' milles ';
456 } else {
457 $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2];
458 }
459
460 $somme = $somme.$trio[1].' '.$secon[1].' '.$prim[1];
461
462 $somme = $somme.' '.$dev1.' ';
463
464 if (($cent_c == '0' || $cent_c == '') && ($dix_c == '0' || $dix_c == '')) {
465 return $somme.' et z&eacute;ro '.$dev2;
466 } else {
467 return $somme.$trio_c.' '.$secon_c.' '.$dev2;
468 }
469 }
470}
Class to manage donations.
Definition don.class.php:41
Class to manage generation of HTML components Only common components must be here.
Parent class of subscription templates.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to generate document for subscriptions.
write_file($don, $outputlangs, $currency='')
Write the object to document file to disk.
isEnabled()
Return if a module can be used or not.
__construct($db)
Constructor.
amountToLetters($montant, $devise1='', $devise2='')
numbers to letters
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as description
Only used if Module[ID]Desc translation string is not found.
dol_nl2br($stringtoencode, $nl2brmode=0, $forxml=false)
Replace CRLF in string with a HTML BR tag.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dolChmod($filepath, $newmask='')
Change mod of a file.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
Definition repair.php:137
$conf db name
Only used if Module[ID]Name translation string is not found.
Definition repair.php:140