dolibarr 18.0.6
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
26require_once DOL_DOCUMENT_ROOT.'/core/modules/barcode/modules_barcode.class.php';
27require_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.
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_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...