From 0e4d70d664deb045f06121bbfe67027410ca3026 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Nov 2011 15:33:18 +0100 Subject: [PATCH] Qual: Clean barcode module. First step to remove php-barcode. --- htdocs/admin/barcode.php | 6 +- htdocs/core/class/html.formbarcode.class.php | 185 +++++++ .../modules/barcode/phpbarcode.modules.php | 29 +- .../barcode/html.formbarcode.class.php | 180 ------- htdocs/includes/barcode/php-barcode/black.png | Bin 138 -> 0 bytes .../barcode/php-barcode/encode_bars.php | 90 ---- .../barcode/php-barcode/genbarcode/GPL | 340 ------------ .../barcode/php-barcode/genbarcode/README | 122 ----- .../barcode/php-barcode/genbarcode/genbarcode | Bin 45667 -> 0 bytes .../barcode/php-barcode/php-barcode.php | 484 ++++++++---------- htdocs/includes/barcode/php-barcode/white.png | Bin 138 -> 0 bytes 11 files changed, 433 insertions(+), 1003 deletions(-) create mode 100644 htdocs/core/class/html.formbarcode.class.php delete mode 100644 htdocs/includes/barcode/html.formbarcode.class.php delete mode 100644 htdocs/includes/barcode/php-barcode/black.png delete mode 100644 htdocs/includes/barcode/php-barcode/encode_bars.php delete mode 100644 htdocs/includes/barcode/php-barcode/genbarcode/GPL delete mode 100644 htdocs/includes/barcode/php-barcode/genbarcode/README delete mode 100644 htdocs/includes/barcode/php-barcode/genbarcode/genbarcode delete mode 100644 htdocs/includes/barcode/php-barcode/white.png diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php index e2fad678e13..32421d2c9bb 100644 --- a/htdocs/admin/barcode.php +++ b/htdocs/admin/barcode.php @@ -25,15 +25,15 @@ require("../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"); -require_once(DOL_DOCUMENT_ROOT."/includes/barcode/html.formbarcode.class.php"); +require_once(DOL_DOCUMENT_ROOT."/core/class/html.formbarcode.class.php"); $langs->load("admin"); -if (!$user->admin) - accessforbidden(); +if (!$user->admin) accessforbidden(); $action = GETPOST("action"); + /* * Actions */ diff --git a/htdocs/core/class/html.formbarcode.class.php b/htdocs/core/class/html.formbarcode.class.php new file mode 100644 index 00000000000..703715c15c4 --- /dev/null +++ b/htdocs/core/class/html.formbarcode.class.php @@ -0,0 +1,185 @@ + + * Copyright (C) 2008-2010 Laurent Destailleur +* +* 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 +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +*/ + +/** + * \file htdocs/includes/barcode/html.formbarcode.class.php + * \brief Fichier de la classe des fonctions predefinie de composants html + */ + + +/** + * \class Form + * \brief Classe permettant la generation de composants html + */ +class FormBarCode +{ + var $db; + var $error; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function FormBarCode($db) + { + $this->db = $db; + + return 1; + } + + + /** + * Return HTML select with list of bar code generators + * + * @param int $selected Id code pre-selected + * @param array $barcodelist Array of barcodes generators + * @param int $code_id Id du code barre + * @param int $idForm Id du formulaire + * @return string HTML select string + */ + function setBarcodeEncoder($selected,$barcodelist,$code_id,$idForm='formbarcode') + { + global $conf, $langs; + + $disable = ''; + + if ($conf->use_javascript_ajax) + { + print "\n".''."\n"; + //onChange="barcode_coder_save(\''.$idForm.'\') + } + + // We check if barcode is already selected by default + if ((($conf->product->enabled || $conf->service->enabled) && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id) || + ($conf->societe->enabled && $conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY == $code_id)) + { + $disable = 'disabled="disabled"'; + } + + $select_encoder = '
'; + $select_encoder.= ''; + $select_encoder.= ''; + $select_encoder.= ''; + $select_encoder.= '
'; + + return $select_encoder; + } + + /** + * Return form to select type of barcode + * + * @param int $selected Id code pre-selected + * @param string $htmlname Nom de la zone select + * @param int $useempty Affiche valeur vide dans liste + * @return void + */ + function select_barcode_type($selected='',$htmlname='coder_id',$useempty=0) + { + global $langs,$conf; + + $sql = "SELECT rowid, code, libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_barcode_type"; + $sql.= " WHERE coder <> '0'"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " ORDER BY code"; + + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows($result); + $i = 0; + + if ($useempty && $num > 0) + { + print ''; + print ''; + } + + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + if ($selected == $obj->rowid) + { + print ''; + $i++; + } + print ""; + } + else { + dol_print_error($this->db); + } + } + + /** + * Show form to select type of barcode + * + * @param string $page Page + * @param int $selected Id condition preselected + * @param string $htmlname Nom du formulaire select + * @return void + */ + function form_barcode_type($page, $selected='', $htmlname='barcodetype_id') + { + global $langs,$conf; + if ($htmlname != "none") + { + print '
'; + print ''; + print ''; + print ''; + print ''; + print '
'; + $this->select_barcode_type($selected, $htmlname, 1); + print ''; + print '
'; + } + } + +} + +?> diff --git a/htdocs/core/modules/barcode/phpbarcode.modules.php b/htdocs/core/modules/barcode/phpbarcode.modules.php index 7eb8f6fab32..72f532d5f83 100644 --- a/htdocs/core/modules/barcode/phpbarcode.modules.php +++ b/htdocs/core/modules/barcode/phpbarcode.modules.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2011 Laurent Destailleur * Copyright (C) 2005 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -34,8 +34,10 @@ class modPhpbarcode extends ModeleBarCode var $error=''; - /** \brief Return if a module can be used or not - * \return boolean true if module can be used + /** + * Return if a module can be used or not + * + * @return boolean true if module can be used */ function isEnabled() { @@ -43,19 +45,23 @@ class modPhpbarcode extends ModeleBarCode } - /** \brief Return description - * \return string Texte descripif + /** + * Return description + * + * @return string Texte descripif */ function info() { global $langs; - return 'Php-barcode'; + return 'Internal engine'; } - /** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas de - * de conflits qui empechera cette numerotation de fonctionner. - * \return boolean false si conflit, true si ok + /** + * Test si les numeros deja en vigueur dans la base ne provoquent pas de + * de conflits qui empechera cette numerotation de fonctionner. + * + * @return boolean false si conflit, true si ok */ function canBeActivated() { @@ -66,8 +72,9 @@ class modPhpbarcode extends ModeleBarCode /** - * \brief Return true if encodinf is supported - * \return int >0 if supported, 0 if not + * Return true if encodinf is supported + * + * @return int >0 if supported, 0 if not */ function encodingIsSupported($encoding) { diff --git a/htdocs/includes/barcode/html.formbarcode.class.php b/htdocs/includes/barcode/html.formbarcode.class.php deleted file mode 100644 index d4435dbe8b7..00000000000 --- a/htdocs/includes/barcode/html.formbarcode.class.php +++ /dev/null @@ -1,180 +0,0 @@ - - * Copyright (C) 2008-2010 Laurent Destailleur - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * \file htdocs/includes/barcode/html.formbarcode.class.php - * \brief Fichier de la classe des fonctions predefinie de composants html - */ - - -/** - * \class Form - * \brief Classe permettant la generation de composants html - */ -class FormBarCode -{ - var $db; - var $error; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function FormBarCode($db) - { - $this->db = $db; - - return 1; - } - - - /** - * Return HTML select with list of bar code generators - * @param selected Id code pre-selected - * @param barcodelist Array of barcodes generators - * @param code_id Id du code barre - * @param idForm Id du formulaire - * @return string HTML select string - */ - function setBarcodeEncoder($selected=0,$barcodelist,$code_id,$idForm='formbarcode') - { - global $conf, $langs; - - $disable = ''; - - if ($conf->use_javascript_ajax) - { - print "\n".''."\n"; - //onChange="barcode_coder_save(\''.$idForm.'\') - } - - // We check if barcode is already selected by default - if ((($conf->product->enabled || $conf->service->enabled) && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id) || - ($conf->societe->enabled && $conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY == $code_id)) - { - $disable = 'disabled="disabled"'; - } - - $select_encoder = '
'; - $select_encoder.= ''; - $select_encoder.= ''; - $select_encoder.= ''; - $select_encoder.= '
'; - - return $select_encoder; - } - - /** - * \brief Retourne la liste des types de codes barres - * \param selected Id code pre-selected - * \param htmlname Nom de la zone select - * \param useempty Affiche valeur vide dans liste - */ - function select_barcode_type($selected='',$htmlname='coder_id',$useempty=0) - { - global $langs,$conf; - - $sql = "SELECT rowid, code, libelle"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_barcode_type"; - $sql.= " WHERE coder <> '0'"; - $sql.= " AND entity = ".$conf->entity; - $sql.= " ORDER BY code"; - - $result = $this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows($result); - $i = 0; - - if ($useempty && $num > 0) - { - print ''; - print ''; - } - - while ($i < $num) - { - $obj = $this->db->fetch_object($result); - if ($selected == $obj->rowid) - { - print ''; - $i++; - } - print ""; - } - else { - dol_print_error($this->db); - } - } - - /** - * \brief Affiche formulaire de selection du type de code barre - * \param page Page - * \param selected Id condition pr�-s�lectionn�e - * \param htmlname Nom du formulaire select - */ - function form_barcode_type($page, $selected='', $htmlname='barcodetype_id') - { - global $langs,$conf; - if ($htmlname != "none") - { - print '
'; - print ''; - print ''; - print ''; - print ''; - print '
'; - $this->select_barcode_type($selected, $htmlname, 1); - print ''; - print '
'; - } - } - -} - -?> diff --git a/htdocs/includes/barcode/php-barcode/black.png b/htdocs/includes/barcode/php-barcode/black.png deleted file mode 100644 index d4f33fe3db87a267cc7f7dd119b15c05b10745d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaYymzYu0Z<#|Nl#G&c6$iPV#nl zVd!9$^#F1>3p^r=85p>QK$!8;-MT+OLG}_)Usv`^+yeZ{h5-j0bAUozo-U3d6?2jk YfNUlPMvwJN3V|#JPgg&ebxsLQ0RJB!zyJUM diff --git a/htdocs/includes/barcode/php-barcode/encode_bars.php b/htdocs/includes/barcode/php-barcode/encode_bars.php deleted file mode 100644 index 5f1625777e6..00000000000 --- a/htdocs/includes/barcode/php-barcode/encode_bars.php +++ /dev/null @@ -1,90 +0,0 @@ - - * - * The newest version can be found at http://www.ashberg.de/bar - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -function barcode_gen_ean_sum($ean){ - $even=true; $esum=0; $osum=0; - for ($i=strlen($ean)-1;$i>=0;$i--){ - if ($even) $esum+=$ean[$i]; else $osum+=$ean[$i]; - $even=!$even; - } - return (10-((3*$esum+$osum)%10))%10; -} - -/* barcode_encode_ean(code [, encoding]) - * encodes $ean with EAN-13 using builtin functions - * - * return: - * array[encoding] : the encoding which has been used (EAN-13) - * array[bars] : the bars - * array[text] : text-positioning info - */ -function barcode_encode_ean($ean, $encoding = "EAN-13"){ - $digits=array(3211,2221,2122,1411,1132,1231,1114,1312,1213,3112); - $mirror=array("000000","001011","001101","001110","010011","011001","011100","010101","010110","011010"); - $guards=array("9a1a","1a1a1","a1a"); - - $ean=trim($ean); - if (preg_match("/[^0-9]/i",$ean)){ - return array("text"=>"Invalid EAN-Code"); - } - $encoding=strtoupper($encoding); - if ($encoding=="ISBN"){ - if (!preg_match("/^978/", $ean)) $ean="978".$ean; - } - if (preg_match("/^978/", $ean)) $encoding="ISBN"; - if (strlen($ean)<12 || strlen($ean)>13){ - return array("text"=>"Invalid $encoding Code (must have 12/13 numbers)"); - } - - $ean=substr($ean,0,12); - $eansum=barcode_gen_ean_sum($ean); - $ean.=$eansum; - $line=$guards[0]; - for ($i=1;$i<13;$i++){ - $str=$digits[$ean[$i]]; - if ($i<7 && $mirror[$ean[0]][$i-1]==1) $line.=strrev($str); else $line.=$str; - if ($i==6) $line.=$guards[1]; - } - $line.=$guards[2]; - - /* create text */ - $pos=0; - $text=""; - for ($a=0;$a<13;$a++){ - if ($a>0) $text.=" "; - $text.="$pos:12:{$ean[$a]}"; - if ($a==0) $pos+=12; - else if ($a==6) $pos+=12; - else $pos+=7; - } - - return array( - "encoding" => $encoding, - "bars" => $line, - "text" => $text - ); -} - -?> diff --git a/htdocs/includes/barcode/php-barcode/genbarcode/GPL b/htdocs/includes/barcode/php-barcode/genbarcode/GPL deleted file mode 100644 index 60549be514a..00000000000 --- a/htdocs/includes/barcode/php-barcode/genbarcode/GPL +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/htdocs/includes/barcode/php-barcode/genbarcode/README b/htdocs/includes/barcode/php-barcode/genbarcode/README deleted file mode 100644 index f1e55cd8fe3..00000000000 --- a/htdocs/includes/barcode/php-barcode/genbarcode/README +++ /dev/null @@ -1,122 +0,0 @@ -Genbarcode 0.4 - -Genbarcode can't generate barcode-images, but a string which can -be used by image-creators, such as my PHP-Barcode - -Encoding is done using GNU-Barcode (libbarcode), which can be found -at http://www.gnu.org/software/barcode/ - -(C) 2001,2002,2003 by Folke Ashberg - -The newest Version can be found at http://www.ashberg.de/bar - - -UNIX-INSTALLATION: - -First of all you need GNU barcode, a barcode creation/encoding library. -GNU barcode can be foud at http://www.gnu.org/software/barcode/ , or -install it using your favourite package-manager, e.g. - debian: # apt-get install barcode - SuSE : # rpm -i /path-to/barcode.rpm ; rpm -i /path-to/barcode/devel.rpm -Or compile and install the source yourself: - $ tar xfvz barcode-0.98.tar.gz - $ cd barcode-0.98 - $ ./configure - $ make - become root ( $ su ) - # make install - # ldconfig - -Then compile genbarcode: - Just type - $ make - become root ( $ su ) - # make install - -BSD Notice: -You have to use gmake (GNU version of make), which can be found in the -ports-collection. Take a look at /usr/ports/devel/gmake and 'make install'. -Then type instead of 'make' 'gmake' - - -WINDOWS-INSTALLATION: - -You can compile genbarcode with Borlands Free C++Builder Command Lines Tools 5.5 -You need the windows-source-package, which includes gnu-barcode-0.98 and libpaper -Make-win.inc assumes that C++Builder has been installed to c:\borland\bcc55 -run - c:\borland\bcc55\bin\bcc32 -f Makefile-win -and copy the created file genarcode.exe to any directory. - - - -That's all. - - -USAGE: - -$ genbarcode -Genbarcode 0.4, Copyright (C) 2001,2002,2003 by Folke Ashberg -Genbarcode comes with ABSOLUTELY NO WARRANTY. - -Usage genbarcode [] - -You can use the following types: -ANY choose best-fit (default) -EAN 8 or 13 EAN-Code -UPC 12-digit EAN -ISBN isbn numbers (still EAN-13) -39 code 39 -128 code 128 (a,b,c: autoselection) -128C code 128 (compact form for digits) -128B code 128, full printable ascii -I25 interleaved 2 of 5 (only digits) -128RAW Raw code 128 (by Leonid A. Broukhis) -CBR Codabar (by Leonid A. Broukhis) -MSI MSI (by Leonid A. Broukhis) -PLS Plessey (by Leonid A. Broukhis) - -Example: - -$ genbarcode 012345678901 -9a1a2221212214111132123111141a1a1131212133112321122212122a1a -0:12:0 12:12:1 19:12:2 26:12:3 33:12:4 40:12:5 47:12:6 59:12:7 66:12:8 73:12:9 80:12:0 87:12:1 94:12:2 -EAN-13 - -The three lines: -Line 1: The bars -Line 2: The positions for the single characters -Line 3: What encoding has been used - -The bar-string: -Read char by char, all odd chars represent a space, all even a bar: -... - -An alphabetic character defines a tall bar, all others small ones. - -The character-string: -:: ... - -For programmers: -1. Count the total width using bar-string -2. Allocate the image -3. Paint the bars (bar-string) -4. Write the Text - - - -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 -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - diff --git a/htdocs/includes/barcode/php-barcode/genbarcode/genbarcode b/htdocs/includes/barcode/php-barcode/genbarcode/genbarcode deleted file mode 100644 index 147665392b6f631e2a18247ad5461a82aa6effed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45667 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 In+Tr&0W+Nq8vp - * Copyright (C) 2004-2009 Laurent Destailleur - * - * PHP-Barcode 0.3pl2 - * - * PHP-Barcode generates - * - Barcode-Images using libgd2 (png, jpg, gif) - * - HTML-Images (using 1x1 pixel and html-table) - * - silly Text-Barcodes - * - * PHP-Barcode encodes using - * - a built-in EAN-13/ISBN Encoder - * - genbarcode (by Folke Ashberg), a command line - * barcode-encoder which uses GNU-Barcode - * genbarcode can encode EAN-13, EAN-8, UPC, ISBN, 39, 128(a,b,c), - * I25, 128RAW, CBR, MSI, PLS - * genbarcode is available at www.ashberg.de/bar - * - * The newest version can be found at http://www.ashberg.de/bar +/* Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2010 Folke Ashberg: Some lines of code were inspired from work + * of Folke Ashberg into PHP-Barcode 0.3pl2, available as GPL + * source code at http://www.ashberg.de/bar. * * 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 @@ -48,25 +33,10 @@ $text_color=Array(0,0,0); /* ******************************************************************** */ /* FONT FILE */ /* ******************************************************************** */ -/* location the the ttf-font */ -/* the file arialbd.ttf isn't included! */ - -/* SAMPLE1 : - * use arialbd.ttf located in same directory like the script - * which includes/requires php-barcode.php - */ -//$font_loc=dirname($_SERVER["PATH_TRANSLATED"])."/"."arialbd.ttf"; - -/* SAMPLE2 : - * use font specified by full-path - */ if (defined('DOL_DEFAULT_TTF_BOLD')) $font_loc=constant('DOL_DEFAULT_TTF_BOLD'); -/* Automatic-Detection of Font if running Windows - * kick this lines if you don't need them! */ +// Automatic-Detection of Font if running Windows // DOL_CHANGE LDR -if (isset($_SERVER['WINDIR']) && @file_exists($_SERVER['WINDIR'])){ - $font_loc=$_SERVER['WINDIR']."\Fonts\arialbd.ttf"; -} +if (isset($_SERVER['WINDIR']) && @file_exists($_SERVER['WINDIR'])) $font_loc=$_SERVER['WINDIR'].'\Fonts\arialbd.ttf'; if (empty($font_loc)) die('DOL_DEFAULT_TTF_BOLD must de defined with full path to a TTF font.'); @@ -75,8 +45,8 @@ if (empty($font_loc)) die('DOL_DEFAULT_TTF_BOLD must de defined with full path t /* ******************************************************************** */ /* location of 'genbarcode' * leave blank if you don't have them :( - * genbarcode is needed to render encodings other than EAN-12/EAN-13/ISBN - */ +* genbarcode is needed to render encodings other than EAN-12/EAN-13/ISBN +*/ // DOL_CHANGE LDR if (defined('PHP-BARCODE_PATH_COMMAND')) $genbarcode_loc=constant('PHP-BARCODE_PATH_COMMAND'); @@ -86,9 +56,104 @@ else $genbarcode_loc = $conf->global->GENBARCODE_LOCATION; /* CONFIGURATION ENDS HERE */ -require("encode_bars.php"); /* build-in encoders */ -/* +/** + * Built-In Encoders + * Part of PHP-Barcode 0.3pl1 + * + * (C) 2001,2002,2003,2004 by Folke Ashberg + * + * The newest version can be found at http://www.ashberg.de/bar + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +function barcode_gen_ean_sum($ean) +{ + $even=true; $esum=0; $osum=0; + for ($i=strlen($ean)-1;$i>=0;$i--) + { + if ($even) $esum+=$ean[$i]; else $osum+=$ean[$i]; + $even=!$even; + } + return (10-((3*$esum+$osum)%10))%10; +} + +/** + * barcode_encode_ean(code [, encoding]) + * encodes $ean with EAN-13 using builtin functions + * + * return: + * array[encoding] : the encoding which has been used (EAN-13) + * array[bars] : the bars + * array[text] : text-positioning info + */ +function barcode_encode_ean($ean, $encoding = "EAN-13") +{ + $digits=array(3211,2221,2122,1411,1132,1231,1114,1312,1213,3112); + $mirror=array("000000","001011","001101","001110","010011","011001","011100","010101","010110","011010"); + $guards=array("9a1a","1a1a1","a1a"); + + $ean=trim($ean); + if (preg_match("/[^0-9]/i",$ean)) + { + return array("text"=>"Invalid EAN-Code"); + } + $encoding=strtoupper($encoding); + if ($encoding=="ISBN") + { + if (!preg_match("/^978/", $ean)) $ean="978".$ean; + } + if (preg_match("/^978/", $ean)) $encoding="ISBN"; + if (strlen($ean)<12 || strlen($ean)>13) + { + return array("text"=>"Invalid $encoding Code (must have 12/13 numbers)"); + } + + $ean=substr($ean,0,12); + $eansum=barcode_gen_ean_sum($ean); + $ean.=$eansum; + $line=$guards[0]; + for ($i=1;$i<13;$i++) + { + $str=$digits[$ean[$i]]; + if ($i<7 && $mirror[$ean[0]][$i-1]==1) $line.=strrev($str); else $line.=$str; + if ($i==6) $line.=$guards[1]; + } + $line.=$guards[2]; + + /* create text */ + $pos=0; + $text=""; + for ($a=0;$a<13;$a++) + { + if ($a>0) $text.=" "; + $text.="$pos:12:{$ean[$a]}"; + if ($a==0) $pos+=12; + else if ($a==6) $pos+=12; + else $pos+=7; + } + + return array( + "encoding" => $encoding, + "bars" => $line, + "text" => $text + ); +} + + +/** * barcode_outimage(text, bars [, scale [, mode [, total_y [, space ]]]] ) * * Outputs an image using libgd @@ -107,10 +172,8 @@ require("encode_bars.php"); /* build-in encoders */ * $space[left] = 2 * $scale; * $space[right] = 2 * $scale; */ - - -function barcode_outimage($text, $bars, $scale = 1, $mode = "png", - $total_y = 0, $space = ''){ +function barcode_outimage($text, $bars, $scale = 1, $mode = "png", $total_y = 0, $space = '') +{ global $bar_color, $bg_color, $text_color; global $font_loc; /* set defaults */ @@ -118,49 +181,49 @@ function barcode_outimage($text, $bars, $scale = 1, $mode = "png", $total_y=(int)($total_y); if ($total_y<1) $total_y=(int)$scale * 60; if (!$space) - $space=array('top'=>2*$scale,'bottom'=>2*$scale,'left'=>2*$scale,'right'=>2*$scale); + $space=array('top'=>2*$scale,'bottom'=>2*$scale,'left'=>2*$scale,'right'=>2*$scale); /* count total width */ $xpos=0; $width=true; for ($i=0;$i\n"; - print "
\n"; - print "
\n"; - print "Short HOWTO
\n"; - print "
\n"; - print "Debian: # apt-get install php4-gd2
\n"; - print "
\n"; - print "SuSE: ask YaST
\n"; - print "
\n"; - print "OpenBSD: # pkg_add /path/php4-gd-4.X.X.tgz (read output, you have to enable it)
\n"; - print "
\n"; - print "Windows: Download the PHP zip package from php.net, NOT the windows-installer, unzip the php_gd2.dll to C:\PHP (this is the default install dir) and uncomment 'extension=php_gd2.dll' in C:\WINNT\php.ini (or where ever your os is installed)
\n"; - print "
\n"; - print "
\n"; - print "The author of php-barcode will give not support on this topic!
\n"; - print "
\n"; - print "
\n"; - print "Folke Ashberg's OpenSource PHP-Barcode
\n"; - return ""; + print "You don't have the gd2 extension enabled
\n"; + print "
\n"; + print "
\n"; + print "Short HOWTO
\n"; + print "
\n"; + print "Debian: # apt-get install php4-gd2
\n"; + print "
\n"; + print "SuSE: ask YaST
\n"; + print "
\n"; + print "OpenBSD: # pkg_add /path/php4-gd-4.X.X.tgz (read output, you have to enable it)
\n"; + print "
\n"; + print "Windows: Download the PHP zip package from php.net, NOT the windows-installer, unzip the php_gd2.dll to C:\PHP (this is the default install dir) and uncomment 'extension=php_gd2.dll' in C:\WINNT\php.ini (or where ever your os is installed)
\n"; + print "
\n"; + print "
\n"; + print "The author of php-barcode will give not support on this topic!
\n"; + print "
\n"; + print "
\n"; + print "Folke Ashberg's OpenSource PHP-Barcode
\n"; + return ""; } $im=imagecreate($total_x, $total_y); /* create two images */ @@ -174,160 +237,62 @@ function barcode_outimage($text, $bars, $scale = 1, $mode = "png", /* paint the bars */ $width=true; for ($i=0;$i:: ...) - * bars : where to place the bars (...) - */ -function barcode_outtext($code,$bars){ - $width=true; - $xpos=$heigh2=0; - $bar_line=""; - for ($i=0;$i:: ...) - * bars : where to place the bars (...) - * scale : scale factor ( 1 < scale < unlimited (scale 50 will produce - * 5400x300 pixels when - * using EAN-13!!!)) - * total_y: the total height of the image ( default: scale * 60 ) - * space : space - * default: - * $space[top] = 2 * $scale; - * $space[bottom]= 2 * $scale; - * $space[left] = 2 * $scale; - * $space[right] = 2 * $scale; - */ - - - -function barcode_outhtml($code, $bars, $scale = 1, $total_y = 0, $space = ''){ - /* set defaults */ - $total_y=(int)($total_y); - if ($scale<1) $scale=2; - if ($total_y<1) $total_y=(int)$scale * 60; - if (!$space) - $space=array('top'=>2*$scale,'bottom'=>2*$scale,'left'=>2*$scale,'right'=>2*$scale); - - - /* generate html-code */ - $height=round($total_y-($scale*10)); - $height2=round($total_y)-$space['bottom']; - $out= - ''."\n". - ''."\n". - ''."\n". - ''."\n". - '
'."\n". - ''; - - $width=true; - for ($i=0;$i0) $out.=""; - $width=false; - continue; - } - if (preg_match("/[a-z]/", $val)){ - //hoher strich - $val=ord($val)-ord('a')+1; - $h=$height2; - }else $h=$height; - $w=$val*$scale; - if ($w>0) $out.=''; - $width=true; - } - $out.= - ''. - '
'."\n"; - //for ($i=0;$i".$line[$i+1]." "; - return $out; -} - - -/* barcode_encode_genbarcode(code, encoding) +/** + * barcode_encode_genbarcode(code, encoding) * encodes $code with $encoding using genbarcode * * return: @@ -335,7 +300,8 @@ function barcode_outhtml($code, $bars, $scale = 1, $total_y = 0, $space = ''){ * array[bars] : the bars * array[text] : text-positioning info */ -function barcode_encode_genbarcode($code,$encoding){ +function barcode_encode_genbarcode($code,$encoding) +{ global $genbarcode_loc; /* delete EAN-13 checksum */ if (preg_match("/^ean$/i", $encoding) && strlen($code)==13) $code=substr($code,0,12); @@ -343,28 +309,29 @@ function barcode_encode_genbarcode($code,$encoding){ $encoding=preg_replace("/[\\\|]/", "_", $encoding); $code=preg_replace("/[\\\|]/", "_", $code); $cmd=$genbarcode_loc." \"" - .str_replace("\"", "\\\"",$code)."\" \"" - .str_replace("\"", "\\\"",strtoupper($encoding))."\""; + .str_replace("\"", "\\\"",$code)."\" \"" + .str_replace("\"", "\\\"",strtoupper($encoding))."\""; //print "'$cmd'
\n"; $fp=popen($cmd, "r"); if ($fp){ - $bars=fgets($fp, 1024); - $text=fgets($fp, 1024); - $encoding=fgets($fp, 1024); - pclose($fp); + $bars=fgets($fp, 1024); + $text=fgets($fp, 1024); + $encoding=fgets($fp, 1024); + pclose($fp); } else return false; $ret=array( "encoding" => trim($encoding), "bars" => trim($bars), "text" => trim($text) - ); + ); if (!$ret['encoding']) return false; if (!$ret['bars']) return false; if (!$ret['text']) return false; return $ret; } -/* barcode_encode(code, encoding) +/** + * barcode_encode(code, encoding) * encodes $code with $encoding using genbarcode OR built-in encoder * if you don't have genbarcode only EAN-13/ISBN is possible * @@ -388,43 +355,45 @@ function barcode_encode_genbarcode($code,$encoding){ * array[bars] : the bars * array[text] : text-positioning info */ -function barcode_encode($code,$encoding){ +function barcode_encode($code,$encoding) +{ global $genbarcode_loc; if ( - ((preg_match("/^ean$/i", $encoding) - && ( strlen($code)==12 || strlen($code)==13))) + ((preg_match("/^ean$/i", $encoding) + && ( strlen($code)==12 || strlen($code)==13))) - || (($encoding) && (preg_match("/^isbn$/i", $encoding)) - && (( strlen($code)==9 || strlen($code)==10) || - (((preg_match("/^978/", $code) && strlen($code)==12) || - (strlen($code)==13))))) + || (($encoding) && (preg_match("/^isbn$/i", $encoding)) + && (( strlen($code)==9 || strlen($code)==10) || + (((preg_match("/^978/", $code) && strlen($code)==12) || + (strlen($code)==13))))) - || (( !isset($encoding) || !$encoding || (preg_match("/^ANY$/i", $encoding) )) - && (preg_match("/^[0-9]{12,13}$/", $code))) + || (( !isset($encoding) || !$encoding || (preg_match("/^ANY$/i", $encoding) )) + && (preg_match("/^[0-9]{12,13}$/", $code))) - ){ - /* use built-in EAN-Encoder */ - $bars=barcode_encode_ean($code, $encoding); + ){ + /* use built-in EAN-Encoder */ + $bars=barcode_encode_ean($code, $encoding); } else if (file_exists($genbarcode_loc)){ - /* use genbarcode */ - $bars=barcode_encode_genbarcode($code, $encoding); + /* use genbarcode */ + $bars=barcode_encode_genbarcode($code, $encoding); } else { - print "php-barcode needs an external programm for encodings other then EAN/ISBN
\n"; - print "
    \n"; - print "
  • download gnu-barcode from www.gnu.org/software/barcode/\n"; - print "
  • compile and install them\n"; - print "
  • download genbarcode from www.ashberg.de/bar/\n"; - print "
  • compile and install them\n"; - print "
  • specify path the genbarcode in php-barcode.php\n"; - print "
\n"; - print "
\n"; - print "Folke Ashberg's OpenSource PHP-Barcode
\n"; - return false; + print "php-barcode needs an external programm for encodings other then EAN/ISBN
\n"; + print "
    \n"; + print "
  • download gnu-barcode from www.gnu.org/software/barcode/\n"; + print "
  • compile and install them\n"; + print "
  • download genbarcode from www.ashberg.de/bar/\n"; + print "
  • compile and install them\n"; + print "
  • specify path the genbarcode in php-barcode.php\n"; + print "
\n"; + print "
\n"; + print "Folke Ashberg's OpenSource PHP-Barcode
\n"; + return false; } return $bars; } -/* barcode_print(code [, encoding [, scale [, mode ]]] ); +/** + * barcode_print(code [, encoding [, scale [, mode ]]] ); * * encodes and prints a barcode * @@ -433,23 +402,24 @@ function barcode_encode($code,$encoding){ * array[bars] : the bars * array[text] : text-positioning info */ -function barcode_print($code, $encoding="ANY", $scale = 2 ,$mode = "png" ){ +function barcode_print($code, $encoding="ANY", $scale = 2 ,$mode = "png" ) +{ + // DOLCHANGE LDR Add log + dol_syslog("php-barcode.php:barcode_print $code $encoding $scale $mode"); - // DOLCHANGE LDR Add log - dol_syslog("php-barcode.php:barcode_print $code $encoding $scale $mode"); - - $bars=barcode_encode($code,$encoding); - if (!$bars) - { - // DOLCHANGE LDR Return error message instead of array - $error='Bad Value '.$code.' for encoding '.$encoding; - dol_syslog('php-barcode.php:barcode_print '.$error, LOG_ERR); - return $error; - } + $bars=barcode_encode($code,$encoding); + if (!$bars) + { + // DOLCHANGE LDR Return error message instead of array + $error='Bad Value '.$code.' for encoding '.$encoding; + dol_syslog('php-barcode.php:barcode_print '.$error, LOG_ERR); + return $error; + } if (!$mode) $mode="png"; - if (preg_match("/^(text|txt|plain)$/i",$mode)) print barcode_outtext($bars['text'],$bars['bars']); - elseif (preg_match("/^(html|htm)$/i",$mode)) print barcode_outhtml($bars['text'],$bars['bars'], $scale,0, 0); - else barcode_outimage($bars['text'],$bars['bars'],$scale, $mode); + //if (preg_match("/^(text|txt|plain)$/i",$mode)) print barcode_outtext($bars['text'],$bars['bars']); + //elseif (preg_match("/^(html|htm)$/i",$mode)) print barcode_outhtml($bars['text'],$bars['bars'], $scale,0, 0); + //else + barcode_outimage($bars['text'],$bars['bars'],$scale, $mode); return $bars; } diff --git a/htdocs/includes/barcode/php-barcode/white.png b/htdocs/includes/barcode/php-barcode/white.png deleted file mode 100644 index 6085731ad19326559a5582cc4216932db6e5e09a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaYymzYu0Z<#|Nl#G&c6$iPV#nl zVd!9$^#F1>3p^r=85p>QK$!8;-MT+OLG}_)Usv`^+yeZ{%8M%vRDeQUo-U3d6?2j^ Yfb1rQ#`3d8+kh+vPgg&ebxsLQ01FNv%>V!Z