Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libs/Zend/Validate/Barcode.php')
-rw-r--r--libs/Zend/Validate/Barcode.php182
1 files changed, 152 insertions, 30 deletions
diff --git a/libs/Zend/Validate/Barcode.php b/libs/Zend/Validate/Barcode.php
index 374a9e5449..111010880e 100644
--- a/libs/Zend/Validate/Barcode.php
+++ b/libs/Zend/Validate/Barcode.php
@@ -14,70 +14,164 @@
*
* @category Zend
* @package Zend_Validate
- * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
- * @version $Id: Barcode.php 16223 2009-06-21 20:04:53Z thomas $
+ * @version $Id: Barcode.php 21748 2010-04-03 10:29:56Z thomas $
*/
/**
* @see Zend_Validate_Abstract
*/
-require_once 'Zend/Validate/Abstract.php';
+// require_once 'Zend/Validate/Abstract.php';
+
+/**
+ * @see Zend_Loader
+ */
+// require_once 'Zend/Loader.php';
/**
* @category Zend
* @package Zend_Validate
- * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Validate_Barcode extends Zend_Validate_Abstract
{
+ const INVALID = 'barcodeInvalid';
+ const FAILED = 'barcodeFailed';
+ const INVALID_CHARS = 'barcodeInvalidChars';
+ const INVALID_LENGTH = 'barcodeInvalidLength';
+
+ protected $_messageTemplates = array(
+ self::FAILED => "'%value%' failed checksum validation",
+ self::INVALID_CHARS => "'%value%' contains invalid characters",
+ self::INVALID_LENGTH => "'%value%' should have a length of %length% characters",
+ self::INVALID => "Invalid type given, value should be string",
+ );
+
+ /**
+ * Additional variables available for validation failure messages
+ *
+ * @var array
+ */
+ protected $_messageVariables = array(
+ 'length' => '_length'
+ );
+
+ /**
+ * Length for the set subtype
+ *
+ * @var integer
+ */
+ protected $_length;
+
/**
- * Barcode validator
+ * Barcode adapter
*
- * @var Zend_Validate_Abstract
+ * @var Zend_Validate_Barcode_BarcodeAdapter
*/
- protected $_barcodeValidator;
+ protected $_adapter;
/**
* Generates the standard validator object
*
- * @param string $barcodeType - Barcode validator to use
+ * @param string|Zend_Config|
+ * Zend_Validate_Barcode_BarcodeAdapter $adapter Barcode adapter to use
* @return void
* @throws Zend_Validate_Exception
*/
- public function __construct($barcodeType)
+ public function __construct($adapter)
+ {
+ if ($adapter instanceof Zend_Config) {
+ $adapter = $adapter->toArray();
+ }
+
+ $options = null;
+ $checksum = null;
+ if (is_array($adapter)) {
+ if (array_key_exists('options', $adapter)) {
+ $options = $adapter['options'];
+ }
+
+ if (array_key_exists('checksum', $adapter)) {
+ $checksum = $adapter['checksum'];
+ }
+
+ if (array_key_exists('adapter', $adapter)) {
+ $adapter = $adapter['adapter'];
+ } else {
+ // require_once 'Zend/Validate/Exception.php';
+ throw new Zend_Validate_Exception("Missing option 'adapter'");
+ }
+ }
+
+ $this->setAdapter($adapter, $options);
+ if ($checksum !== null) {
+ $this->setChecksum($checksum);
+ }
+ }
+
+ /**
+ * Returns the set adapter
+ *
+ * @return Zend_Validate_Barcode_BarcodeAdapter
+ */
+ public function getAdapter()
{
- $this->setType($barcodeType);
+ return $this->_adapter;
}
/**
- * Sets a new barcode validator
+ * Sets a new barcode adapter
*
- * @param string $barcodeType - Barcode validator to use
+ * @param string|Zend_Validate_Barcode $adapter Barcode adapter to use
+ * @param array $options Options for this adapter
* @return void
* @throws Zend_Validate_Exception
*/
- public function setType($barcodeType)
+ public function setAdapter($adapter, $options = null)
{
- switch (strtolower($barcodeType)) {
- case 'upc':
- case 'upc-a':
- require_once 'Zend/Validate/Barcode/UpcA.php';
- $class = 'Zend_Validate_Barcode_UpcA';
- break;
- case 'ean13':
- case 'ean-13':
- require_once 'Zend/Validate/Barcode/Ean13.php';
- $class = 'Zend_Validate_Barcode_Ean13';
- break;
- default:
- require_once 'Zend/Validate/Exception.php';
- throw new Zend_Validate_Exception("Barcode type '$barcodeType' is not supported'");
- break;
+ $adapter = ucfirst(strtolower($adapter));
+ // require_once 'Zend/Loader.php';
+ if (Zend_Loader::isReadable('Zend/Validate/Barcode/' . $adapter. '.php')) {
+ $adapter = 'Zend_Validate_Barcode_' . $adapter;
+ }
+
+ // if (!class_exists($adapter)) {
+ // Zend_Loader::loadClass($adapter);
+ // }
+
+ $this->_adapter = new $adapter($options);
+ if (!$this->_adapter instanceof Zend_Validate_Barcode_AdapterInterface) {
+ // require_once 'Zend/Validate/Exception.php';
+ throw new Zend_Validate_Exception(
+ "Adapter " . $adapter . " does not implement Zend_Validate_Barcode_AdapterInterface"
+ );
}
- $this->_barcodeValidator = new $class;
+ return $this;
+ }
+
+ /**
+ * Returns the checksum option
+ *
+ * @return boolean
+ */
+ public function getChecksum()
+ {
+ return $this->getAdapter()->getCheck();
+ }
+
+ /**
+ * Sets the checksum option
+ *
+ * @param boolean $checksum
+ * @return Zend_Validate_Barcode
+ */
+ public function setChecksum($checksum)
+ {
+ $this->getAdapter()->setCheck($checksum);
+ return $this;
}
/**
@@ -90,6 +184,34 @@ class Zend_Validate_Barcode extends Zend_Validate_Abstract
*/
public function isValid($value)
{
- return call_user_func(array($this->_barcodeValidator, 'isValid'), $value);
+ if (!is_string($value)) {
+ $this->_error(self::INVALID);
+ return false;
+ }
+
+ $this->_setValue($value);
+ $adapter = $this->getAdapter();
+ $this->_length = $adapter->getLength();
+ $result = $adapter->checkLength($value);
+ if (!$result) {
+ $this->_error(self::INVALID_LENGTH);
+ return false;
+ }
+
+ $result = $adapter->checkChars($value);
+ if (!$result) {
+ $this->_error(self::INVALID_CHARS);
+ return false;
+ }
+
+ if ($this->getChecksum()) {
+ $result = $adapter->checksum($value);
+ if (!$result) {
+ $this->_error(self::FAILED);
+ return false;
+ }
+ }
+
+ return true;
}
}