2023-03-11 12:04:29 +03:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Zend Framework (http://framework.zend.com/)
|
|
|
|
*
|
|
|
|
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
2023-04-01 09:03:34 +03:00
|
|
|
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
2023-03-11 12:04:29 +03:00
|
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Zend\Validator\Barcode;
|
|
|
|
|
|
|
|
class Codabar extends AbstractAdapter
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Constructor for this barcode adapter
|
|
|
|
*/
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
$this->setLength(-1);
|
|
|
|
$this->setCharacters('0123456789-$:/.+ABCDTN*E');
|
|
|
|
$this->useChecksum(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks for allowed characters
|
|
|
|
* @see Zend\Validator\Barcode.AbstractAdapter::checkChars()
|
|
|
|
*/
|
|
|
|
public function hasValidCharacters($value)
|
|
|
|
{
|
|
|
|
if (strpbrk($value, 'ABCD')) {
|
|
|
|
$first = $value[0];
|
|
|
|
if (!strpbrk($first, 'ABCD')) {
|
|
|
|
// Missing start char
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$last = substr($value, -1, 1);
|
|
|
|
if (!strpbrk($last, 'ABCD')) {
|
|
|
|
// Missing stop char
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$value = substr($value, 1, -1);
|
|
|
|
} elseif (strpbrk($value, 'TN*E')) {
|
|
|
|
$first = $value[0];
|
|
|
|
if (!strpbrk($first, 'TN*E')) {
|
|
|
|
// Missing start char
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$last = substr($value, -1, 1);
|
|
|
|
if (!strpbrk($last, 'TN*E')) {
|
|
|
|
// Missing stop char
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$value = substr($value, 1, -1);
|
|
|
|
}
|
|
|
|
|
|
|
|
$chars = $this->getCharacters();
|
|
|
|
$this->setCharacters('0123456789-$:/.+');
|
|
|
|
$result = parent::hasValidCharacters($value);
|
|
|
|
$this->setCharacters($chars);
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
}
|