dolibarr  17.0.4
phpbarcode.modules.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2005 Regis Houssin <regis.houssin@inodbox.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17  * or see https://www.gnu.org/
18  */
19 
26 require_once DOL_DOCUMENT_ROOT.'/core/modules/barcode/modules_barcode.class.php';
27 require_once DOL_DOCUMENT_ROOT.'/core/lib/barcode.lib.php'; // This is to include def like $genbarcode_loc and $font_loc
28 
29 
34 {
39  public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr'
40 
44  public $error = '';
45 
46 
52  public function isEnabled()
53  {
54  return true;
55  }
56 
57 
63  public function info()
64  {
65  global $langs;
66 
67  $key = 'BarcodeInternalEngine';
68  $trans = $langs->trans('BarcodeInternalEngine');
69 
70  return ($trans != $key) ? $trans : 'Internal engine';
71  }
72 
79  public function canBeActivated()
80  {
81  global $langs;
82 
83  return true;
84  }
85 
86 
93  public function encodingIsSupported($encoding)
94  {
95  global $genbarcode_loc;
96  //print 'genbarcode_loc='.$genbarcode_loc.' encoding='.$encoding;exit;
97 
98  $supported = 0;
99  if ($encoding == 'EAN13') {
100  $supported = 1;
101  }
102  if ($encoding == 'ISBN') {
103  $supported = 1;
104  }
105  if ($encoding == 'UPC') {
106  $supported = 1;
107  }
108  // Formats that hangs on Windows (when genbarcode.exe for Windows is called, so they are not
109  // activated on Windows)
110  if (file_exists($genbarcode_loc) && empty($_SERVER["WINDIR"])) {
111  if ($encoding == 'EAN8') {
112  $supported = 1;
113  }
114  if ($encoding == 'C39') {
115  $supported = 1;
116  }
117  if ($encoding == 'C128') {
118  $supported = 1;
119  }
120  }
121  return $supported;
122  }
123 
134  public function buildBarCode($code, $encoding, $readable = 'Y', $scale = 1, $nooutputiferror = 0)
135  {
136  global $_GET, $_SERVER;
137  global $conf;
138  global $genbarcode_loc, $bar_color, $bg_color, $text_color, $font_loc;
139 
140  if (!$this->encodingIsSupported($encoding)) {
141  return -1;
142  }
143 
144  if ($encoding == 'EAN8' || $encoding == 'EAN13') {
145  $encoding = 'EAN';
146  }
147  if ($encoding == 'C39' || $encoding == 'C128') {
148  $encoding = substr($encoding, 1);
149  }
150 
151  $mode = 'png';
152 
153  $_GET["code"] = $code;
154  $_GET["encoding"] = $encoding;
155  $_GET["scale"] = $scale;
156  $_GET["mode"] = $mode;
157 
158  dol_syslog(get_class($this)."::buildBarCode $code,$encoding,$scale,$mode");
159  if ($code) {
160  $result = barcode_print($code, $encoding, $scale, $mode);
161  }
162 
163  if (!is_array($result)) {
164  $this->error = $result;
165  if (empty($nooutputiferror)) {
166  print dol_escape_htmltag($this->error);
167  }
168  return -1;
169  }
170 
171  return 1;
172  }
173 
184  public function writeBarCode($code, $encoding, $readable = 'Y', $scale = 1, $nooutputiferror = 0)
185  {
186  global $conf, $filebarcode, $langs;
187 
188  dol_mkdir($conf->barcode->dir_temp);
189  if (!is_writable($conf->barcode->dir_temp)) {
190  $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->barcode->dir_temp);
191  dol_syslog('Error in write_file: ' . $this->error, LOG_ERR);
192  return -1;
193  }
194 
195  $file = $conf->barcode->dir_temp . '/barcode_' . $code . '_' . $encoding . '.png';
196 
197  $filebarcode = $file; // global var to be used in barcode_outimage called by barcode_print in buildBarCode
198 
199  $result = $this->buildBarCode($code, $encoding, $readable, $scale, $nooutputiferror);
200 
201  return $result;
202  }
203 }
if(!empty($conf->global->GENBARCODE_LOCATION)) barcode_print($code, $encoding="ANY", $scale=2, $mode="png")
Print barcode.
Definition: barcode.lib.php:80
Parent class for barcode document models.
Class to generate barcode images using php barcode generator.
encodingIsSupported($encoding)
Return true if encoding is supported.
isEnabled()
Return if a module can be used or not.
info()
Return description.
buildBarCode($code, $encoding, $readable='Y', $scale=1, $nooutputiferror=0)
Return an image file on the fly (no need to write on disk)
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
writeBarCode($code, $encoding, $readable='Y', $scale=1, $nooutputiferror=0)
Save an image file on disk (with no output)
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields.
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)