dolibarr  13.0.2
modules_fichinter.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2011-2019 Philippe Grand <philippe.grand@atoo-net.com>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19  * or see https://www.gnu.org/
20  */
21 
29 require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php';
30 
31 
36 {
40  public $error = '';
41 
42 
43  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
51  public static function liste_modeles($db, $maxfilenamelength = 0)
52  {
53  // phpcs:enable
54  global $conf;
55 
56  $type = 'ficheinter';
57  $list = array();
58 
59  include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
60  $list = getListOfModels($db, $type, $maxfilenamelength);
61 
62  return $list;
63  }
64 }
65 
66 
70 abstract class ModeleNumRefFicheinter
71 {
75  public $error = '';
76 
82  public function isEnabled()
83  {
84  return true;
85  }
86 
92  public function info()
93  {
94  global $langs;
95  $langs->load("ficheinter");
96  return $langs->trans("NoDescription");
97  }
98 
104  public function getExample()
105  {
106  global $langs;
107  $langs->load("ficheinter");
108  return $langs->trans("NoExample");
109  }
110 
117  public function canBeActivated()
118  {
119  return true;
120  }
121 
127  public function getNextValue()
128  {
129  global $langs;
130  return $langs->trans("NotAvailable");
131  }
132 
138  public function getVersion()
139  {
140  global $langs;
141  $langs->load("admin");
142 
143  if ($this->version == 'development') return $langs->trans("VersionDevelopment");
144  elseif ($this->version == 'experimental') return $langs->trans("VersionExperimental");
145  elseif ($this->version == 'dolibarr') return DOL_VERSION;
146  elseif ($this->version) return $this->version;
147  else return $langs->trans("NotAvailable");
148  }
149 }
150 
151 
152 // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
165 function fichinter_create($db, $object, $modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0)
166 {
167  // phpcs:enable
168  global $conf, $langs, $user;
169  $langs->load("ficheinter");
170 
171  $error = 0;
172 
173  $srctemplatepath = '';
174 
175  // Positionne modele sur le nom du modele de fichinter a utiliser
176  if (!dol_strlen($modele))
177  {
178  if (!empty($conf->global->FICHEINTER_ADDON_PDF))
179  {
180  $modele = $conf->global->FICHEINTER_ADDON_PDF;
181  } else {
182  $modele = 'soleil';
183  }
184  }
185 
186  // If selected modele is a filename template (then $modele="modelname:filename")
187  $tmp = explode(':', $modele, 2);
188  if (!empty($tmp[1]))
189  {
190  $modele = $tmp[0];
191  $srctemplatepath = $tmp[1];
192  }
193 
194  // Search template files
195  $file = ''; $classname = ''; $filefound = 0;
196  $dirmodels = array('/');
197  if (is_array($conf->modules_parts['models'])) $dirmodels = array_merge($dirmodels, $conf->modules_parts['models']);
198  foreach ($dirmodels as $reldir)
199  {
200  foreach (array('doc', 'pdf') as $prefix)
201  {
202  $file = $prefix."_".$modele.".modules.php";
203 
204  // On verifie l'emplacement du modele
205  $file = dol_buildpath($reldir."core/modules/fichinter/doc/".$file, 0);
206  if (file_exists($file))
207  {
208  $filefound = 1;
209  $classname = $prefix.'_'.$modele;
210  break;
211  }
212  }
213  if ($filefound) break;
214  }
215 
216  // Charge le modele
217  if ($filefound)
218  {
219  require_once $file;
220 
221  $obj = new $classname($db);
222 
223  // We save charset_output to restore it because write_file can change it if needed for
224  // output format that does not support UTF8.
225  $sav_charset_output = $outputlangs->charset_output;
226  if ($obj->write_file($object, $outputlangs, $srctemplatepath, $hidedetails, $hidedesc, $hideref) > 0)
227  {
228  $outputlangs->charset_output = $sav_charset_output;
229 
230  // We delete old preview
231  require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
232  dol_delete_preview($object);
233 
234  return 1;
235  } else {
236  $outputlangs->charset_output = $sav_charset_output;
237  dol_print_error($db, "fichinter_pdf_create Error: ".$obj->error);
238  return 0;
239  }
240  } else {
241  print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $file);
242  return 0;
243  }
244 }
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
getNextValue()
Return the next assigned value.
getExample()
Return a numbering example.
dol_delete_preview($object)
Delete all preview files linked to object instance.
Definition: files.lib.php:1335
fichinter_create($db, $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
Create an intervention document on disk using template defined into FICHEINTER_ADDON_PDF.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
isEnabled()
Return if a module can be used or not.
Parent class numbering models of intervention sheet references.
dol_strlen($string, $stringencoding= 'UTF-8')
Make a strlen call.
Parent class to manage intervention document templates.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
getVersion()
Return the version of the numbering module.
print
Draft customers invoices.
Definition: index.php:89
info()
Returns the default description of the numbering template.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
Parent class for documents generators.
getListOfModels($db, $type, $maxfilenamelength=0)
Return list of activated modules usable for document generation.