import v1.0.0-RC4 | 2009-05-20
This commit is contained in:
348
libs/Zend/Validate/Abstract.php
Normal file
348
libs/Zend/Validate/Abstract.php
Normal file
@ -0,0 +1,348 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Abstract.php 12359 2008-11-07 09:37:50Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Validate_Abstract implements Zend_Validate_Interface
|
||||
{
|
||||
/**
|
||||
* The value to be validated
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_value;
|
||||
|
||||
/**
|
||||
* Additional variables available for validation failure messages
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array();
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array();
|
||||
|
||||
/**
|
||||
* Array of validation failure messages
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messages = array();
|
||||
|
||||
/**
|
||||
* Flag indidcating whether or not value should be obfuscated in error
|
||||
* messages
|
||||
* @var bool
|
||||
*/
|
||||
protected $_obscureValue = false;
|
||||
|
||||
/**
|
||||
* Array of validation failure message codes
|
||||
*
|
||||
* @var array
|
||||
* @deprecated Since 1.5.0
|
||||
*/
|
||||
protected $_errors = array();
|
||||
|
||||
/**
|
||||
* Translation object
|
||||
* @var Zend_Translate
|
||||
*/
|
||||
protected $_translator;
|
||||
|
||||
/**
|
||||
* Default translation object for all validate objects
|
||||
* @var Zend_Translate
|
||||
*/
|
||||
protected static $_defaultTranslator;
|
||||
|
||||
/**
|
||||
* Returns array of validation failure messages
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMessages()
|
||||
{
|
||||
return $this->_messages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of the names of variables that are used in constructing validation failure messages
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMessageVariables()
|
||||
{
|
||||
return array_keys($this->_messageVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the validation failure message template for a particular key
|
||||
*
|
||||
* @param string $messageString
|
||||
* @param string $messageKey OPTIONAL
|
||||
* @return Zend_Validate_Abstract Provides a fluent interface
|
||||
* @throws Zend_Validate_Exception
|
||||
*/
|
||||
public function setMessage($messageString, $messageKey = null)
|
||||
{
|
||||
if ($messageKey === null) {
|
||||
$keys = array_keys($this->_messageTemplates);
|
||||
$messageKey = current($keys);
|
||||
}
|
||||
if (!isset($this->_messageTemplates[$messageKey])) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("No message template exists for key '$messageKey'");
|
||||
}
|
||||
$this->_messageTemplates[$messageKey] = $messageString;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets validation failure message templates given as an array, where the array keys are the message keys,
|
||||
* and the array values are the message template strings.
|
||||
*
|
||||
* @param array $messages
|
||||
* @return Zend_Validate_Abstract
|
||||
*/
|
||||
public function setMessages(array $messages)
|
||||
{
|
||||
foreach ($messages as $key => $message) {
|
||||
$this->setMessage($message, $key);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic function returns the value of the requested property, if and only if it is the value or a
|
||||
* message variable.
|
||||
*
|
||||
* @param string $property
|
||||
* @return mixed
|
||||
* @throws Zend_Validate_Exception
|
||||
*/
|
||||
public function __get($property)
|
||||
{
|
||||
if ($property == 'value') {
|
||||
return $this->_value;
|
||||
}
|
||||
if (array_key_exists($property, $this->_messageVariables)) {
|
||||
return $this->{$this->_messageVariables[$property]};
|
||||
}
|
||||
/**
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("No property exists by the name '$property'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs and returns a validation failure message with the given message key and value.
|
||||
*
|
||||
* Returns null if and only if $messageKey does not correspond to an existing template.
|
||||
*
|
||||
* If a translator is available and a translation exists for $messageKey,
|
||||
* the translation will be used.
|
||||
*
|
||||
* @param string $messageKey
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
protected function _createMessage($messageKey, $value)
|
||||
{
|
||||
if (!isset($this->_messageTemplates[$messageKey])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$message = $this->_messageTemplates[$messageKey];
|
||||
|
||||
if (null !== ($translator = $this->getTranslator())) {
|
||||
if ($translator->isTranslated($message)) {
|
||||
$message = $translator->translate($message);
|
||||
} elseif ($translator->isTranslated($messageKey)) {
|
||||
$message = $translator->translate($messageKey);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->getObscureValue()) {
|
||||
$value = str_repeat('*', strlen($value));
|
||||
}
|
||||
|
||||
$message = str_replace('%value%', (string) $value, $message);
|
||||
foreach ($this->_messageVariables as $ident => $property) {
|
||||
$message = str_replace("%$ident%", (string) $this->$property, $message);
|
||||
}
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $messageKey OPTIONAL
|
||||
* @param string $value OPTIONAL
|
||||
* @return void
|
||||
*/
|
||||
protected function _error($messageKey = null, $value = null)
|
||||
{
|
||||
if ($messageKey === null) {
|
||||
$keys = array_keys($this->_messageTemplates);
|
||||
$messageKey = current($keys);
|
||||
}
|
||||
if ($value === null) {
|
||||
$value = $this->_value;
|
||||
}
|
||||
$this->_errors[] = $messageKey;
|
||||
$this->_messages[$messageKey] = $this->_createMessage($messageKey, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value to be validated and clears the messages and errors arrays
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return void
|
||||
*/
|
||||
protected function _setValue($value)
|
||||
{
|
||||
$this->_value = $value;
|
||||
$this->_messages = array();
|
||||
$this->_errors = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns array of validation failure message codes
|
||||
*
|
||||
* @return array
|
||||
* @deprecated Since 1.5.0
|
||||
*/
|
||||
public function getErrors()
|
||||
{
|
||||
return $this->_errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set flag indicating whether or not value should be obfuscated in messages
|
||||
*
|
||||
* @param bool $flag
|
||||
* @return Zend_Validate_Abstract
|
||||
*/
|
||||
public function setObscureValue($flag)
|
||||
{
|
||||
$this->_obscureValue = (bool) $flag;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve flag indicating whether or not value should be obfuscated in
|
||||
* messages
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getObscureValue()
|
||||
{
|
||||
return $this->_obscureValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set translation object
|
||||
*
|
||||
* @param Zend_Translate|Zend_Translate_Adapter|null $translator
|
||||
* @return Zend_Validate_Abstract
|
||||
*/
|
||||
public function setTranslator($translator = null)
|
||||
{
|
||||
if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
|
||||
$this->_translator = $translator;
|
||||
} elseif ($translator instanceof Zend_Translate) {
|
||||
$this->_translator = $translator->getAdapter();
|
||||
} else {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid translator specified');
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return translation object
|
||||
*
|
||||
* @return Zend_Translate_Adapter|null
|
||||
*/
|
||||
public function getTranslator()
|
||||
{
|
||||
if (null === $this->_translator) {
|
||||
return self::getDefaultTranslator();
|
||||
}
|
||||
|
||||
return $this->_translator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set default translation object for all validate objects
|
||||
*
|
||||
* @param Zend_Translate|Zend_Translate_Adapter|null $translator
|
||||
* @return void
|
||||
*/
|
||||
public static function setDefaultTranslator($translator = null)
|
||||
{
|
||||
if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
|
||||
self::$_defaultTranslator = $translator;
|
||||
} elseif ($translator instanceof Zend_Translate) {
|
||||
self::$_defaultTranslator = $translator->getAdapter();
|
||||
} else {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid translator specified');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get default translation object for all validate objects
|
||||
*
|
||||
* @return Zend_Translate_Adapter|null
|
||||
*/
|
||||
public static function getDefaultTranslator()
|
||||
{
|
||||
if (null === self::$_defaultTranslator) {
|
||||
require_once 'Zend/Registry.php';
|
||||
if (Zend_Registry::isRegistered('Zend_Translate')) {
|
||||
$translator = Zend_Registry::get('Zend_Translate');
|
||||
if ($translator instanceof Zend_Translate_Adapter) {
|
||||
return $translator;
|
||||
} elseif ($translator instanceof Zend_Translate) {
|
||||
return $translator->getAdapter();
|
||||
}
|
||||
}
|
||||
}
|
||||
return self::$_defaultTranslator;
|
||||
}
|
||||
}
|
120
libs/Zend/Validate/Alnum.php
Normal file
120
libs/Zend/Validate/Alnum.php
Normal file
@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Alnum.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Alnum extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value contains non-alphabetic or non-digit characters
|
||||
*/
|
||||
const NOT_ALNUM = 'notAlnum';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value is an empty string
|
||||
*/
|
||||
const STRING_EMPTY = 'stringEmpty';
|
||||
|
||||
/**
|
||||
* Whether to allow white space characters; off by default
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $allowWhiteSpace;
|
||||
|
||||
/**
|
||||
* Alphanumeric filter used for validation
|
||||
*
|
||||
* @var Zend_Filter_Alnum
|
||||
*/
|
||||
protected static $_filter = null;
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_ALNUM => "'%value%' has not only alphabetic and digit characters",
|
||||
self::STRING_EMPTY => "'%value%' is an empty string"
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets default option values for this instance
|
||||
*
|
||||
* @param boolean $allowWhiteSpace
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($allowWhiteSpace = false)
|
||||
{
|
||||
$this->allowWhiteSpace = (boolean) $allowWhiteSpace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value contains only alphabetic and digit characters
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if ('' === $valueString) {
|
||||
$this->_error(self::STRING_EMPTY);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (null === self::$_filter) {
|
||||
/**
|
||||
* @see Zend_Filter_Alnum
|
||||
*/
|
||||
require_once 'Zend/Filter/Alnum.php';
|
||||
self::$_filter = new Zend_Filter_Alnum();
|
||||
}
|
||||
|
||||
self::$_filter->allowWhiteSpace = $this->allowWhiteSpace;
|
||||
|
||||
if ($valueString !== self::$_filter->filter($valueString)) {
|
||||
$this->_error(self::NOT_ALNUM);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
120
libs/Zend/Validate/Alpha.php
Normal file
120
libs/Zend/Validate/Alpha.php
Normal file
@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Alpha.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Alpha extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value contains non-alphabetic characters
|
||||
*/
|
||||
const NOT_ALPHA = 'notAlpha';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value is an empty string
|
||||
*/
|
||||
const STRING_EMPTY = 'stringEmpty';
|
||||
|
||||
/**
|
||||
* Whether to allow white space characters; off by default
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $allowWhiteSpace;
|
||||
|
||||
/**
|
||||
* Alphabetic filter used for validation
|
||||
*
|
||||
* @var Zend_Filter_Alpha
|
||||
*/
|
||||
protected static $_filter = null;
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_ALPHA => "'%value%' has not only alphabetic characters",
|
||||
self::STRING_EMPTY => "'%value%' is an empty string"
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets default option values for this instance
|
||||
*
|
||||
* @param boolean $allowWhiteSpace
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($allowWhiteSpace = false)
|
||||
{
|
||||
$this->allowWhiteSpace = (boolean) $allowWhiteSpace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value contains only alphabetic characters
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if ('' === $valueString) {
|
||||
$this->_error(self::STRING_EMPTY);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (null === self::$_filter) {
|
||||
/**
|
||||
* @see Zend_Filter_Alpha
|
||||
*/
|
||||
require_once 'Zend/Filter/Alpha.php';
|
||||
self::$_filter = new Zend_Filter_Alpha();
|
||||
}
|
||||
|
||||
self::$_filter->allowWhiteSpace = $this->allowWhiteSpace;
|
||||
|
||||
if ($valueString !== self::$_filter->filter($valueString)) {
|
||||
$this->_error(self::NOT_ALPHA);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
99
libs/Zend/Validate/Barcode.php
Normal file
99
libs/Zend/Validate/Barcode.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Barcode.php 8211 2008-02-20 14:29:24Z darby $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 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
|
||||
{
|
||||
/**
|
||||
* Barcode validator
|
||||
*
|
||||
* @var Zend_Validate_Abstract
|
||||
*/
|
||||
protected $_barcodeValidator;
|
||||
|
||||
/**
|
||||
* Generates the standard validator object
|
||||
*
|
||||
* @param string $barcodeType - Barcode validator to use
|
||||
* @return void
|
||||
* @throws Zend_Validate_Exception
|
||||
*/
|
||||
public function __construct($barcodeType)
|
||||
{
|
||||
$this->setType($barcodeType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a new barcode validator
|
||||
*
|
||||
* @param string $barcodeType - Barcode validator to use
|
||||
* @return void
|
||||
* @throws Zend_Validate_Exception
|
||||
*/
|
||||
public function setType($barcodeType)
|
||||
{
|
||||
switch (strtolower($barcodeType)) {
|
||||
case 'upc':
|
||||
case 'upc-a':
|
||||
$className = 'UpcA';
|
||||
break;
|
||||
case 'ean13':
|
||||
case 'ean-13':
|
||||
$className = 'Ean13';
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("Barcode type '$barcodeType' is not supported'");
|
||||
break;
|
||||
}
|
||||
|
||||
require_once 'Zend/Validate/Barcode/' . $className . '.php';
|
||||
|
||||
$class = 'Zend_Validate_Barcode_' . $className;
|
||||
$this->_barcodeValidator = new $class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value contains a valid barcode
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
return call_user_func(array($this->_barcodeValidator, 'isValid'), $value);
|
||||
}
|
||||
}
|
112
libs/Zend/Validate/Barcode/Ean13.php
Normal file
112
libs/Zend/Validate/Barcode/Ean13.php
Normal file
@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Ean13.php 11791 2008-10-09 18:19:13Z andries $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Barcode_Ean13 extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value is
|
||||
* an invalid barcode
|
||||
*/
|
||||
const INVALID = 'invalid';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value is
|
||||
* not 13 characters long
|
||||
*/
|
||||
const INVALID_LENGTH = 'invalidLength';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value
|
||||
* does not only contain numeric characters
|
||||
*/
|
||||
const NOT_NUMERIC = 'ean13NotNumeric';
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::INVALID => "'%value%' is an invalid EAN-13 barcode",
|
||||
self::INVALID_LENGTH => "'%value%' should be 13 characters",
|
||||
self::NOT_NUMERIC => "'%value%' should contain only numeric characters",
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value contains a valid barcode
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
if (false === ctype_digit($value)) {
|
||||
$this->_error(self::NOT_NUMERIC);
|
||||
return false;
|
||||
}
|
||||
|
||||
$valueString = (string) $value;
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if (strlen($valueString) !== 13) {
|
||||
$this->_error(self::INVALID_LENGTH);
|
||||
return false;
|
||||
}
|
||||
|
||||
$barcode = strrev(substr($valueString, 0, -1));
|
||||
$oddSum = 0;
|
||||
$evenSum = 0;
|
||||
|
||||
for ($i = 0; $i < 12; $i++) {
|
||||
if ($i % 2 === 0) {
|
||||
$oddSum += $barcode[$i] * 3;
|
||||
} elseif ($i % 2 === 1) {
|
||||
$evenSum += $barcode[$i];
|
||||
}
|
||||
}
|
||||
|
||||
$calculation = ($oddSum + $evenSum) % 10;
|
||||
$checksum = ($calculation === 0) ? 0 : 10 - $calculation;
|
||||
|
||||
if ($valueString[12] != $checksum) {
|
||||
$this->_error(self::INVALID);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
100
libs/Zend/Validate/Barcode/UpcA.php
Normal file
100
libs/Zend/Validate/Barcode/UpcA.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: UpcA.php 8210 2008-02-20 14:09:05Z andries $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Barcode_UpcA extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value is
|
||||
* an invalid barcode
|
||||
*/
|
||||
const INVALID = 'invalid';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value is
|
||||
* not 12 characters long
|
||||
*/
|
||||
const INVALID_LENGTH = 'invalidLength';
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::INVALID => "'%value%' is an invalid UPC-A barcode",
|
||||
self::INVALID_LENGTH => "'%value%' should be 12 characters",
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value contains a valid barcode
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if (strlen($valueString) !== 12) {
|
||||
$this->_error(self::INVALID_LENGTH);
|
||||
return false;
|
||||
}
|
||||
|
||||
$barcode = substr($valueString, 0, -1);
|
||||
$oddSum = 0;
|
||||
$evenSum = 0;
|
||||
|
||||
for ($i = 0; $i < 11; $i++) {
|
||||
if ($i % 2 === 0) {
|
||||
$oddSum += $barcode[$i] * 3;
|
||||
} elseif ($i % 2 === 1) {
|
||||
$evenSum += $barcode[$i];
|
||||
}
|
||||
}
|
||||
|
||||
$calculation = ($oddSum + $evenSum) % 10;
|
||||
$checksum = ($calculation === 0) ? 0 : 10 - $calculation;
|
||||
|
||||
if ($valueString[11] != $checksum) {
|
||||
$this->_error(self::INVALID);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
200
libs/Zend/Validate/Between.php
Normal file
200
libs/Zend/Validate/Between.php
Normal file
@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Between.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Between extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value is not between the min and max, inclusively
|
||||
*/
|
||||
const NOT_BETWEEN = 'notBetween';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value is not strictly between the min and max
|
||||
*/
|
||||
const NOT_BETWEEN_STRICT = 'notBetweenStrict';
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_BETWEEN => "'%value%' is not between '%min%' and '%max%', inclusively",
|
||||
self::NOT_BETWEEN_STRICT => "'%value%' is not strictly between '%min%' and '%max%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* Additional variables available for validation failure messages
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'min' => '_min',
|
||||
'max' => '_max'
|
||||
);
|
||||
|
||||
/**
|
||||
* Minimum value
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_min;
|
||||
|
||||
/**
|
||||
* Maximum value
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_max;
|
||||
|
||||
/**
|
||||
* Whether to do inclusive comparisons, allowing equivalence to min and/or max
|
||||
*
|
||||
* If false, then strict comparisons are done, and the value may equal neither
|
||||
* the min nor max options
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_inclusive;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param mixed $min
|
||||
* @param mixed $max
|
||||
* @param boolean $inclusive
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($min, $max, $inclusive = true)
|
||||
{
|
||||
$this->setMin($min)
|
||||
->setMax($max)
|
||||
->setInclusive($inclusive);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the min option
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMin()
|
||||
{
|
||||
return $this->_min;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the min option
|
||||
*
|
||||
* @param mixed $min
|
||||
* @return Zend_Validate_Between Provides a fluent interface
|
||||
*/
|
||||
public function setMin($min)
|
||||
{
|
||||
$this->_min = $min;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the max option
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMax()
|
||||
{
|
||||
return $this->_max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the max option
|
||||
*
|
||||
* @param mixed $max
|
||||
* @return Zend_Validate_Between Provides a fluent interface
|
||||
*/
|
||||
public function setMax($max)
|
||||
{
|
||||
$this->_max = $max;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the inclusive option
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getInclusive()
|
||||
{
|
||||
return $this->_inclusive;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the inclusive option
|
||||
*
|
||||
* @param boolean $inclusive
|
||||
* @return Zend_Validate_Between Provides a fluent interface
|
||||
*/
|
||||
public function setInclusive($inclusive)
|
||||
{
|
||||
$this->_inclusive = $inclusive;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is between min and max options, inclusively
|
||||
* if inclusive option is true.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue($value);
|
||||
|
||||
if ($this->_inclusive) {
|
||||
if ($this->_min > $value || $value > $this->_max) {
|
||||
$this->_error(self::NOT_BETWEEN);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if ($this->_min >= $value || $value >= $this->_max) {
|
||||
$this->_error(self::NOT_BETWEEN_STRICT);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
111
libs/Zend/Validate/Ccnum.php
Normal file
111
libs/Zend/Validate/Ccnum.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Ccnum.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Ccnum extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value is not of valid length
|
||||
*/
|
||||
const LENGTH = 'ccnumLength';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value fails the mod-10 checksum
|
||||
*/
|
||||
const CHECKSUM = 'ccnumChecksum';
|
||||
|
||||
/**
|
||||
* Digits filter for input
|
||||
*
|
||||
* @var Zend_Filter_Digits
|
||||
*/
|
||||
protected static $_filter = null;
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::LENGTH => "'%value%' must contain between 13 and 19 digits",
|
||||
self::CHECKSUM => "Luhn algorithm (mod-10 checksum) failed on '%value%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value follows the Luhn algorithm (mod-10 checksum)
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue($value);
|
||||
|
||||
if (null === self::$_filter) {
|
||||
/**
|
||||
* @see Zend_Filter_Digits
|
||||
*/
|
||||
require_once 'Zend/Filter/Digits.php';
|
||||
self::$_filter = new Zend_Filter_Digits();
|
||||
}
|
||||
|
||||
$valueFiltered = self::$_filter->filter($value);
|
||||
|
||||
$length = strlen($valueFiltered);
|
||||
|
||||
if ($length < 13 || $length > 19) {
|
||||
$this->_error(self::LENGTH);
|
||||
return false;
|
||||
}
|
||||
|
||||
$sum = 0;
|
||||
$weight = 2;
|
||||
|
||||
for ($i = $length - 2; $i >= 0; $i--) {
|
||||
$digit = $weight * $valueFiltered[$i];
|
||||
$sum += floor($digit / 10) + $digit % 10;
|
||||
$weight = $weight % 2 + 1;
|
||||
}
|
||||
|
||||
if ((10 - $sum % 10) % 10 != $valueFiltered[$length - 1]) {
|
||||
$this->_error(self::CHECKSUM, $valueFiltered);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
250
libs/Zend/Validate/Date.php
Normal file
250
libs/Zend/Validate/Date.php
Normal file
@ -0,0 +1,250 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Date.php 12062 2008-10-21 17:28:12Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Date extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value does not follow the YYYY-MM-DD format
|
||||
*/
|
||||
const NOT_YYYY_MM_DD = 'dateNotYYYY-MM-DD';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value does not appear to be a valid date
|
||||
*/
|
||||
const INVALID = 'dateInvalid';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value does not fit the given dateformat or locale
|
||||
*/
|
||||
const FALSEFORMAT = 'dateFalseFormat';
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_YYYY_MM_DD => "'%value%' is not of the format YYYY-MM-DD",
|
||||
self::INVALID => "'%value%' does not appear to be a valid date",
|
||||
self::FALSEFORMAT => "'%value%' does not fit given date format"
|
||||
);
|
||||
|
||||
/**
|
||||
* Optional format
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $_format;
|
||||
|
||||
/**
|
||||
* Optional locale
|
||||
*
|
||||
* @var string|Zend_Locale|null
|
||||
*/
|
||||
protected $_locale;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string $format OPTIONAL
|
||||
* @param string|Zend_Locale $locale OPTIONAL
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($format = null, $locale = null)
|
||||
{
|
||||
$this->setFormat($format);
|
||||
$this->setLocale($locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the locale option
|
||||
*
|
||||
* @return string|Zend_Locale|null
|
||||
*/
|
||||
public function getLocale()
|
||||
{
|
||||
return $this->_locale;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the locale option
|
||||
*
|
||||
* @param string|Zend_Locale $locale
|
||||
* @return Zend_Validate_Date provides a fluent interface
|
||||
*/
|
||||
public function setLocale($locale = null)
|
||||
{
|
||||
if ($locale === null) {
|
||||
$this->_locale = null;
|
||||
return $this;
|
||||
}
|
||||
|
||||
require_once 'Zend/Locale.php';
|
||||
if (!Zend_Locale::isLocale($locale, true, false)) {
|
||||
if (!Zend_Locale::isLocale($locale, false, false)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The locale '$locale' is no known locale");
|
||||
}
|
||||
|
||||
$locale = new Zend_Locale($locale);
|
||||
}
|
||||
|
||||
$this->_locale = (string) $locale;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the locale option
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getFormat()
|
||||
{
|
||||
return $this->_format;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the format option
|
||||
*
|
||||
* @param string $format
|
||||
* @return Zend_Validate_Date provides a fluent interface
|
||||
*/
|
||||
public function setFormat($format = null)
|
||||
{
|
||||
$this->_format = $format;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if $value is a valid date of the format YYYY-MM-DD
|
||||
* If optional $format or $locale is set the date format is checked
|
||||
* according to Zend_Date, see Zend_Date::isDate()
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if (($this->_format !== null) or ($this->_locale !== null)) {
|
||||
require_once 'Zend/Date.php';
|
||||
if (!Zend_Date::isDate($value, $this->_format, $this->_locale)) {
|
||||
if ($this->_checkFormat($value) === false) {
|
||||
$this->_error(self::FALSEFORMAT);
|
||||
} else {
|
||||
$this->_error(self::INVALID);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $valueString)) {
|
||||
$this->_error(self::NOT_YYYY_MM_DD);
|
||||
return false;
|
||||
}
|
||||
|
||||
list($year, $month, $day) = sscanf($valueString, '%d-%d-%d');
|
||||
|
||||
if (!checkdate($month, $day, $year)) {
|
||||
$this->_error(self::INVALID);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given date fits the given format
|
||||
*
|
||||
* @param string $value Date to check
|
||||
* @return boolean False when date does not fit the format
|
||||
*/
|
||||
private function _checkFormat($value)
|
||||
{
|
||||
try {
|
||||
require_once 'Zend/Locale/Format.php';
|
||||
$parsed = Zend_Locale_Format::getDate($value, array(
|
||||
'date_format' => $this->_format, 'format_type' => 'iso',
|
||||
'fix_date' => false));
|
||||
if (isset($parsed['year']) and ((strpos(strtoupper($this->_format), 'YY') !== false) and
|
||||
(strpos(strtoupper($this->_format), 'YYYY') === false))) {
|
||||
$parsed['year'] = Zend_Date::getFullYear($parsed['year']);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
// Date can not be parsed
|
||||
return false;
|
||||
}
|
||||
|
||||
if (((strpos($this->_format, 'Y') !== false) or (strpos($this->_format, 'y') !== false)) and
|
||||
(!isset($parsed['year']))) {
|
||||
// Year expected but not found
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((strpos($this->_format, 'M') !== false) and (!isset($parsed['month']))) {
|
||||
// Month expected but not found
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((strpos($this->_format, 'd') !== false) and (!isset($parsed['day']))) {
|
||||
// Day expected but not found
|
||||
return false;
|
||||
}
|
||||
|
||||
if (((strpos($this->_format, 'H') !== false) or (strpos($this->_format, 'h') !== false)) and
|
||||
(!isset($parsed['hour']))) {
|
||||
// Hour expected but not found
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((strpos($this->_format, 'm') !== false) and (!isset($parsed['minute']))) {
|
||||
// Minute expected but not found
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((strpos($this->_format, 's') !== false) and (!isset($parsed['second']))) {
|
||||
// Second expected but not found
|
||||
return false;
|
||||
}
|
||||
|
||||
// Date fits the format
|
||||
return true;
|
||||
}
|
||||
}
|
100
libs/Zend/Validate/Digits.php
Normal file
100
libs/Zend/Validate/Digits.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Digits.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Digits extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value contains non-digit characters
|
||||
*/
|
||||
const NOT_DIGITS = 'notDigits';
|
||||
|
||||
/**
|
||||
* Validation failure message key for when the value is an empty string
|
||||
*/
|
||||
const STRING_EMPTY = 'stringEmpty';
|
||||
|
||||
/**
|
||||
* Digits filter used for validation
|
||||
*
|
||||
* @var Zend_Filter_Digits
|
||||
*/
|
||||
protected static $_filter = null;
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_DIGITS => "'%value%' contains not only digit characters",
|
||||
self::STRING_EMPTY => "'%value%' is an empty string"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value only contains digit characters
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if ('' === $valueString) {
|
||||
$this->_error(self::STRING_EMPTY);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (null === self::$_filter) {
|
||||
/**
|
||||
* @see Zend_Filter_Digits
|
||||
*/
|
||||
require_once 'Zend/Filter/Digits.php';
|
||||
self::$_filter = new Zend_Filter_Digits();
|
||||
}
|
||||
|
||||
if ($valueString !== self::$_filter->filter($valueString)) {
|
||||
$this->_error(self::NOT_DIGITS);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
245
libs/Zend/Validate/EmailAddress.php
Normal file
245
libs/Zend/Validate/EmailAddress.php
Normal file
@ -0,0 +1,245 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: EmailAddress.php 8985 2008-03-21 21:37:24Z matthew $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_EmailAddress extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const INVALID = 'emailAddressInvalid';
|
||||
const INVALID_HOSTNAME = 'emailAddressInvalidHostname';
|
||||
const INVALID_MX_RECORD = 'emailAddressInvalidMxRecord';
|
||||
const DOT_ATOM = 'emailAddressDotAtom';
|
||||
const QUOTED_STRING = 'emailAddressQuotedString';
|
||||
const INVALID_LOCAL_PART = 'emailAddressInvalidLocalPart';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::INVALID => "'%value%' is not a valid email address in the basic format local-part@hostname",
|
||||
self::INVALID_HOSTNAME => "'%hostname%' is not a valid hostname for email address '%value%'",
|
||||
self::INVALID_MX_RECORD => "'%hostname%' does not appear to have a valid MX record for the email address '%value%'",
|
||||
self::DOT_ATOM => "'%localPart%' not matched against dot-atom format",
|
||||
self::QUOTED_STRING => "'%localPart%' not matched against quoted-string format",
|
||||
self::INVALID_LOCAL_PART => "'%localPart%' is not a valid local part for email address '%value%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'hostname' => '_hostname',
|
||||
'localPart' => '_localPart'
|
||||
);
|
||||
|
||||
/**
|
||||
* Local object for validating the hostname part of an email address
|
||||
*
|
||||
* @var Zend_Validate_Hostname
|
||||
*/
|
||||
public $hostnameValidator;
|
||||
|
||||
/**
|
||||
* Whether we check for a valid MX record via DNS
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_validateMx = false;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $_hostname;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $_localPart;
|
||||
|
||||
/**
|
||||
* Instantiates hostname validator for local use
|
||||
*
|
||||
* You can pass a bitfield to determine what types of hostnames are allowed.
|
||||
* These bitfields are defined by the ALLOW_* constants in Zend_Validate_Hostname
|
||||
* The default is to allow DNS hostnames only
|
||||
*
|
||||
* @param integer $allow OPTIONAL
|
||||
* @param bool $validateMx OPTIONAL
|
||||
* @param Zend_Validate_Hostname $hostnameValidator OPTIONAL
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($allow = Zend_Validate_Hostname::ALLOW_DNS, $validateMx = false, Zend_Validate_Hostname $hostnameValidator = null)
|
||||
{
|
||||
$this->setValidateMx($validateMx);
|
||||
$this->setHostnameValidator($hostnameValidator, $allow);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Zend_Validate_Hostname $hostnameValidator OPTIONAL
|
||||
* @param int $allow OPTIONAL
|
||||
* @return void
|
||||
*/
|
||||
public function setHostnameValidator(Zend_Validate_Hostname $hostnameValidator = null, $allow = Zend_Validate_Hostname::ALLOW_DNS)
|
||||
{
|
||||
if ($hostnameValidator === null) {
|
||||
$hostnameValidator = new Zend_Validate_Hostname($allow);
|
||||
}
|
||||
$this->hostnameValidator = $hostnameValidator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether MX checking via dns_get_mx is supported or not
|
||||
*
|
||||
* This currently only works on UNIX systems
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function validateMxSupported()
|
||||
{
|
||||
return function_exists('dns_get_mx');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether we check for a valid MX record via DNS
|
||||
*
|
||||
* This only applies when DNS hostnames are validated
|
||||
*
|
||||
* @param boolean $allowed Set allowed to true to validate for MX records, and false to not validate them
|
||||
*/
|
||||
public function setValidateMx($allowed)
|
||||
{
|
||||
$this->_validateMx = (bool) $allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is a valid email address
|
||||
* according to RFC2822
|
||||
*
|
||||
* @link http://www.ietf.org/rfc/rfc2822.txt RFC2822
|
||||
* @link http://www.columbia.edu/kermit/ascii.html US-ASCII characters
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
// Split email address up
|
||||
if (!preg_match('/^(.+)@([^@]+)$/', $valueString, $matches)) {
|
||||
$this->_error(self::INVALID);
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->_localPart = $matches[1];
|
||||
$this->_hostname = $matches[2];
|
||||
|
||||
// Match hostname part
|
||||
$hostnameResult = $this->hostnameValidator->setTranslator($this->getTranslator())
|
||||
->isValid($this->_hostname);
|
||||
if (!$hostnameResult) {
|
||||
$this->_error(self::INVALID_HOSTNAME);
|
||||
|
||||
// Get messages and errors from hostnameValidator
|
||||
foreach ($this->hostnameValidator->getMessages() as $message) {
|
||||
$this->_messages[] = $message;
|
||||
}
|
||||
foreach ($this->hostnameValidator->getErrors() as $error) {
|
||||
$this->_errors[] = $error;
|
||||
}
|
||||
}
|
||||
|
||||
// MX check on hostname via dns_get_record()
|
||||
if ($this->_validateMx) {
|
||||
if ($this->validateMxSupported()) {
|
||||
$result = dns_get_mx($this->_hostname, $mxHosts);
|
||||
if (count($mxHosts) < 1) {
|
||||
$hostnameResult = false;
|
||||
$this->_error(self::INVALID_MX_RECORD);
|
||||
}
|
||||
} else {
|
||||
/**
|
||||
* MX checks are not supported by this system
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Internal error: MX checking not available on this system');
|
||||
}
|
||||
}
|
||||
|
||||
// First try to match the local part on the common dot-atom format
|
||||
$localResult = false;
|
||||
|
||||
// Dot-atom characters are: 1*atext *("." 1*atext)
|
||||
// atext: ALPHA / DIGIT / and "!", "#", "$", "%", "&", "'", "*",
|
||||
// "-", "/", "=", "?", "^", "_", "`", "{", "|", "}", "~"
|
||||
$atext = 'a-zA-Z0-9\x21\x23\x24\x25\x26\x27\x2a\x2b\x2d\x2f\x3d\x3f\x5e\x5f\x60\x7b\x7c\x7d';
|
||||
if (preg_match('/^[' . $atext . ']+(\x2e+[' . $atext . ']+)*$/', $this->_localPart)) {
|
||||
$localResult = true;
|
||||
} else {
|
||||
// Try quoted string format
|
||||
|
||||
// Quoted-string characters are: DQUOTE *([FWS] qtext/quoted-pair) [FWS] DQUOTE
|
||||
// qtext: Non white space controls, and the rest of the US-ASCII characters not
|
||||
// including "\" or the quote character
|
||||
$noWsCtl = '\x01-\x08\x0b\x0c\x0e-\x1f\x7f';
|
||||
$qtext = $noWsCtl . '\x21\x23-\x5b\x5d-\x7e';
|
||||
$ws = '\x20\x09';
|
||||
if (preg_match('/^\x22([' . $ws . $qtext . '])*[$ws]?\x22$/', $this->_localPart)) {
|
||||
$localResult = true;
|
||||
} else {
|
||||
$this->_error(self::DOT_ATOM);
|
||||
$this->_error(self::QUOTED_STRING);
|
||||
$this->_error(self::INVALID_LOCAL_PART);
|
||||
}
|
||||
}
|
||||
|
||||
// If both parts valid, return true
|
||||
if ($localResult && $hostnameResult) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
37
libs/Zend/Validate/Exception.php
Normal file
37
libs/Zend/Validate/Exception.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Exception
|
||||
*/
|
||||
require_once 'Zend/Exception.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Exception extends Zend_Exception
|
||||
{}
|
262
libs/Zend/Validate/File/Count.php
Normal file
262
libs/Zend/Validate/File/Count.php
Normal file
@ -0,0 +1,262 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for counting all given files
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Count extends Zend_Validate_Abstract
|
||||
{
|
||||
/**#@+
|
||||
* @const string Error constants
|
||||
*/
|
||||
const TOO_MUCH = 'fileCountTooMuch';
|
||||
const TOO_LESS = 'fileCountTooLess';
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::TOO_MUCH => "Too much files, maximum '%max%' are allowed but '%count%' are given",
|
||||
self::TOO_LESS => "Too less files, minimum '%min%' are expected but '%count%' are given"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array Error message template variables
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'min' => '_min',
|
||||
'max' => '_max',
|
||||
'count' => '_count'
|
||||
);
|
||||
|
||||
/**
|
||||
* Minimum file count
|
||||
*
|
||||
* If null, there is no minimum file count
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_min;
|
||||
|
||||
/**
|
||||
* Maximum file count
|
||||
*
|
||||
* If null, there is no maximum file count
|
||||
*
|
||||
* @var integer|null
|
||||
*/
|
||||
protected $_max;
|
||||
|
||||
/**
|
||||
* Actual filecount
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_count;
|
||||
|
||||
/**
|
||||
* Internal file array
|
||||
* @var array
|
||||
*/
|
||||
protected $_files;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* Min limits the file count, when used with max=null it is the maximum file count
|
||||
* It also accepts an array with the keys 'min' and 'max'
|
||||
*
|
||||
* If $options is a integer, it will be used as maximum file count
|
||||
* As Array is accepts the following keys:
|
||||
* 'min': Minimum filecount
|
||||
* 'max': Maximum filecount
|
||||
*
|
||||
* @param integer|array $options Options for the adapter
|
||||
* @param integer $max (Deprecated) Maximum value (implies $options is the minimum)
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_string($options) || is_numeric($options)) {
|
||||
$options = array('max' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
if (1 < func_num_args()) {
|
||||
trigger_error('Multiple arguments are deprecated in favor of an array of named arguments', E_USER_NOTICE);
|
||||
$options['min'] = func_get_arg(0);
|
||||
$options['max'] = func_get_arg(1);
|
||||
}
|
||||
|
||||
if (isset($options['min'])) {
|
||||
$this->setMin($options);
|
||||
}
|
||||
|
||||
if (isset($options['max'])) {
|
||||
$this->setMax($options);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum file count
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getMin()
|
||||
{
|
||||
return $this->_min;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum file count
|
||||
*
|
||||
* @param integer|array $min The minimum file count
|
||||
* @return Zend_Validate_File_Size Provides a fluent interface
|
||||
* @throws Zend_Validate_Exception When min is greater than max
|
||||
*/
|
||||
public function setMin($min)
|
||||
{
|
||||
if (is_array($min) and isset($min['min'])) {
|
||||
$min = $min['min'];
|
||||
}
|
||||
|
||||
if (!is_string($min) and !is_numeric($min)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$min = (integer) $min;
|
||||
if (($this->_max !== null) && ($min > $this->_max)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum file count, but $min >"
|
||||
. " {$this->_max}");
|
||||
}
|
||||
|
||||
$this->_min = $min;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum file count
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getMax()
|
||||
{
|
||||
return $this->_max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum file count
|
||||
*
|
||||
* @param integer|array $max The maximum file count
|
||||
* @return Zend_Validate_StringLength Provides a fluent interface
|
||||
* @throws Zend_Validate_Exception When max is smaller than min
|
||||
*/
|
||||
public function setMax($max)
|
||||
{
|
||||
if (is_array($max) and isset($max['max'])) {
|
||||
$max = $max['max'];
|
||||
}
|
||||
|
||||
if (!is_string($max) and !is_numeric($max)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$max = (integer) $max;
|
||||
if (($this->_min !== null) && ($max < $this->_min)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum file count, but "
|
||||
. "$max < {$this->_min}");
|
||||
}
|
||||
|
||||
$this->_max = $max;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the file count of all checked files is at least min and
|
||||
* not bigger than max (when max is not null). Attention: When checking with set min you
|
||||
* must give all files with the first call, otherwise you will get an false.
|
||||
*
|
||||
* @param string|array $value Filenames to check for count
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
if (is_string($value)) {
|
||||
$value = array($value);
|
||||
}
|
||||
|
||||
foreach ($value as $file) {
|
||||
if (!isset($this->_files[$file])) {
|
||||
$this->_files[$file] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
$this->_count = count($this->_files);
|
||||
if (($this->_max !== null) && ($this->_count > $this->_max)) {
|
||||
return $this->_throw($file, self::TOO_MUCH);
|
||||
}
|
||||
|
||||
if (($this->_min !== null) && ($this->_count < $this->_min)) {
|
||||
return $this->_throw($file, self::TOO_LESS);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
179
libs/Zend/Validate/File/Crc32.php
Normal file
179
libs/Zend/Validate/File/Crc32.php
Normal file
@ -0,0 +1,179 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_Hash
|
||||
*/
|
||||
require_once 'Zend/Validate/File/Hash.php';
|
||||
|
||||
/**
|
||||
* Validator for the crc32 hash of given files
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Crc32 extends Zend_Validate_File_Hash
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const DOES_NOT_MATCH = 'fileCrc32DoesNotMatch';
|
||||
const NOT_DETECTED = 'fileCrc32NotDetected';
|
||||
const NOT_FOUND = 'fileCrc32NotFound';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::DOES_NOT_MATCH => "The file '%value%' does not match the given crc32 hashes",
|
||||
self::NOT_DETECTED => "There was no crc32 hash detected for the given file",
|
||||
self::NOT_FOUND => "The file '%value%' could not be found"
|
||||
);
|
||||
|
||||
/**
|
||||
* Hash of the file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_hash;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_scalar($options)) {
|
||||
$options = array('hash1' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$this->setCrc32($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all set crc32 hashes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getCrc32()
|
||||
{
|
||||
return $this->getHash();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the crc32 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setHash($options)
|
||||
{
|
||||
if (!is_array($options)) {
|
||||
$options = array($options);
|
||||
}
|
||||
|
||||
$options['algorithm'] = 'crc32';
|
||||
parent::setHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the crc32 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setCrc32($options)
|
||||
{
|
||||
$this->setHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the crc32 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addHash($options)
|
||||
{
|
||||
if (!is_array($options)) {
|
||||
$options = array($options);
|
||||
}
|
||||
|
||||
$options['algorithm'] = 'crc32';
|
||||
parent::addHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the crc32 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addCrc32($options)
|
||||
{
|
||||
$this->addHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the given file confirms the set hash
|
||||
*
|
||||
* @param string $value Filename to check for hash
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
$hashes = array_unique(array_keys($this->_hash));
|
||||
$filehash = hash_file('crc32', $value);
|
||||
if ($filehash === false) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
foreach($hashes as $hash) {
|
||||
if ($filehash === $hash) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::DOES_NOT_MATCH);
|
||||
}
|
||||
}
|
94
libs/Zend/Validate/File/ExcludeExtension.php
Normal file
94
libs/Zend/Validate/File/ExcludeExtension.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/File/Extension.php';
|
||||
|
||||
/**
|
||||
* Validator for the excluding file extensions
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_ExcludeExtension extends Zend_Validate_File_Extension
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const FALSE_EXTENSION = 'fileExcludeExtensionFalse';
|
||||
const NOT_FOUND = 'fileExcludeExtensionNotFound';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::FALSE_EXTENSION => "The file '%value%' has a false extension",
|
||||
self::NOT_FOUND => "The file '%value%' was not found"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the fileextension of $value is not included in the
|
||||
* set extension list
|
||||
*
|
||||
* @param string $value Real file to check for extension
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
if ($file !== null) {
|
||||
$info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
|
||||
} else {
|
||||
$info = pathinfo($value);
|
||||
}
|
||||
|
||||
$extensions = $this->getExtension();
|
||||
|
||||
if ($this->_case and (!in_array($info['extension'], $extensions))) {
|
||||
return true;
|
||||
} else if (!$this->_case) {
|
||||
$found = false;
|
||||
foreach ($extensions as $extension) {
|
||||
if (strtolower($extension) == strtolower($info['extension'])) {
|
||||
$found = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::FALSE_EXTENSION);
|
||||
}
|
||||
}
|
91
libs/Zend/Validate/File/ExcludeMimeType.php
Normal file
91
libs/Zend/Validate/File/ExcludeMimeType.php
Normal file
@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_MimeType
|
||||
*/
|
||||
require_once 'Zend/Validate/File/MimeType.php';
|
||||
|
||||
/**
|
||||
* Validator for the mime type of a file
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_ExcludeMimeType extends Zend_Validate_File_MimeType
|
||||
{
|
||||
const FALSE_TYPE = 'fileExcludeMimeTypeFalse';
|
||||
const NOT_DETECTED = 'fileExcludeMimeTypeNotDetected';
|
||||
const NOT_READABLE = 'fileExcludeMimeTypeNotReadable';
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if the mimetype of the file does not matche the given ones. Also parts
|
||||
* of mimetypes can be checked. If you give for example "image" all image
|
||||
* mime types will not be accepted like "image/gif", "image/jpeg" and so on.
|
||||
*
|
||||
* @param string $value Real file to check for mimetype
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_READABLE);
|
||||
}
|
||||
|
||||
if ($file !== null) {
|
||||
if (class_exists('finfo', false) && defined('MAGIC')) {
|
||||
$mime = new finfo(FILEINFO_MIME);
|
||||
$this->_type = $mime->file($value);
|
||||
unset($mime);
|
||||
} elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
|
||||
$this->_type = mime_content_type($value);
|
||||
} else {
|
||||
$this->_type = $file['type'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->_type)) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
$mimetype = $this->getMimeType(true);
|
||||
if (in_array($this->_type, $mimetype)) {
|
||||
return $this->_throw($file, self::FALSE_TYPE);
|
||||
}
|
||||
|
||||
$types = explode('/', $this->_type);
|
||||
$types = array_merge($types, explode('-', $this->_type));
|
||||
foreach($mimetype as $mime) {
|
||||
if (in_array($mime, $types)) {
|
||||
return $this->_throw($file, self::FALSE_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
203
libs/Zend/Validate/File/Exists.php
Normal file
203
libs/Zend/Validate/File/Exists.php
Normal file
@ -0,0 +1,203 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator which checks if the file already exists in the directory
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Exists extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const DOES_NOT_EXIST = 'fileExistsDoesNotExist';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::DOES_NOT_EXIST => "The file '%value%' does not exist"
|
||||
);
|
||||
|
||||
/**
|
||||
* Internal list of directories
|
||||
* @var string
|
||||
*/
|
||||
protected $_directory = '';
|
||||
|
||||
/**
|
||||
* @var array Error message template variables
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'directory' => '_directory'
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string|array $directory
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($directory = array())
|
||||
{
|
||||
if ($directory instanceof Zend_Config) {
|
||||
$directory = $directory->toArray();
|
||||
} else if (is_string($directory)) {
|
||||
$directory = explode(',', $directory);
|
||||
} else if (!is_array($directory)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$this->setDirectory($directory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set file directories which are checked
|
||||
*
|
||||
* @param boolean $asArray Returns the values as array, when false an concated string is returned
|
||||
* @return string
|
||||
*/
|
||||
public function getDirectory($asArray = false)
|
||||
{
|
||||
$asArray = (bool) $asArray;
|
||||
$directory = (string) $this->_directory;
|
||||
if ($asArray) {
|
||||
$directory = explode(',', $directory);
|
||||
}
|
||||
|
||||
return $directory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file directory which will be checked
|
||||
*
|
||||
* @param string|array $directory The directories to validate
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function setDirectory($directory)
|
||||
{
|
||||
$this->_directory = null;
|
||||
$this->addDirectory($directory);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the file directory which will be checked
|
||||
*
|
||||
* @param string|array $directory The directory to add for validation
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function addDirectory($directory)
|
||||
{
|
||||
$directories = $this->getDirectory(true);
|
||||
|
||||
if (is_string($directory)) {
|
||||
$directory = explode(',', $directory);
|
||||
} else if (!is_array($directory)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
foreach ($directory as $content) {
|
||||
if (empty($content) || !is_string($content)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$directories[] = trim($content);
|
||||
}
|
||||
$directories = array_unique($directories);
|
||||
|
||||
// Sanity check to ensure no empty values
|
||||
foreach ($directories as $key => $dir) {
|
||||
if (empty($dir)) {
|
||||
unset($directories[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_directory = implode(',', $directories);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the file already exists in the set directories
|
||||
*
|
||||
* @param string $value Real file to check for existance
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
$directories = $this->getDirectory(true);
|
||||
if (($file !== null) and (!empty($file['destination']))) {
|
||||
$directories[] = $file['destination'];
|
||||
} else if (!isset($file['name'])) {
|
||||
$file['name'] = $value;
|
||||
}
|
||||
|
||||
$check = false;
|
||||
foreach ($directories as $directory) {
|
||||
if (empty($directory)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$check = true;
|
||||
if (!file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) {
|
||||
return $this->_throw($file, self::DOES_NOT_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$check) {
|
||||
return $this->_throw($file, self::DOES_NOT_EXIST);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
234
libs/Zend/Validate/File/Extension.php
Normal file
234
libs/Zend/Validate/File/Extension.php
Normal file
@ -0,0 +1,234 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for the file extension of a file
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Extension extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const FALSE_EXTENSION = 'fileExtensionFalse';
|
||||
const NOT_FOUND = 'fileExtensionNotFound';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::FALSE_EXTENSION => "The file '%value%' has a false extension",
|
||||
self::NOT_FOUND => "The file '%value%' was not found"
|
||||
);
|
||||
|
||||
/**
|
||||
* Internal list of extensions
|
||||
* @var string
|
||||
*/
|
||||
protected $_extension = '';
|
||||
|
||||
/**
|
||||
* Validate case sensitive
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_case = false;
|
||||
|
||||
/**
|
||||
* @var array Error message template variables
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'extension' => '_extension'
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string|array $extension
|
||||
* @param boolean $case If true validation is done case sensitive
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
}
|
||||
|
||||
if (1 < func_num_args()) {
|
||||
trigger_error('Multiple arguments to constructor are deprecated in favor of options array', E_USER_NOTICE);
|
||||
$case = func_get_arg(1);
|
||||
$this->setCase($case);
|
||||
}
|
||||
|
||||
if (is_array($options) and isset($options['case'])) {
|
||||
$this->setCase($options['case']);
|
||||
unset($options['case']);
|
||||
}
|
||||
|
||||
$this->setExtension($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the case option
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getCase()
|
||||
{
|
||||
return $this->_case;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the case to use
|
||||
*
|
||||
* @param boolean $case
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function setCase($case)
|
||||
{
|
||||
$this->_case = (boolean) $case;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set file extension
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getExtension()
|
||||
{
|
||||
$extension = explode(',', $this->_extension);
|
||||
|
||||
return $extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file extensions
|
||||
*
|
||||
* @param string|array $extension The extensions to validate
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function setExtension($extension)
|
||||
{
|
||||
$this->_extension = null;
|
||||
$this->addExtension($extension);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the file extensions
|
||||
*
|
||||
* @param string|array $extension The extensions to add for validation
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function addExtension($extension)
|
||||
{
|
||||
$extensions = $this->getExtension();
|
||||
if (is_string($extension)) {
|
||||
$extension = explode(',', $extension);
|
||||
}
|
||||
|
||||
foreach ($extension as $content) {
|
||||
if (empty($content) || !is_string($content)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$extensions[] = trim($content);
|
||||
}
|
||||
$extensions = array_unique($extensions);
|
||||
|
||||
// Sanity check to ensure no empty values
|
||||
foreach ($extensions as $key => $ext) {
|
||||
if (empty($ext)) {
|
||||
unset($extensions[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_extension = implode(',', $extensions);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the fileextension of $value is included in the
|
||||
* set extension list
|
||||
*
|
||||
* @param string $value Real file to check for extension
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
if ($file !== null) {
|
||||
$info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
|
||||
} else {
|
||||
$info = pathinfo($value);
|
||||
}
|
||||
|
||||
$extensions = $this->getExtension();
|
||||
|
||||
if ($this->_case && (in_array($info['extension'], $extensions))) {
|
||||
return true;
|
||||
} else if (!$this->getCase()) {
|
||||
foreach ($extensions as $extension) {
|
||||
if (strtolower($extension) == strtolower($info['extension'])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::FALSE_EXTENSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if (null !== $file) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
163
libs/Zend/Validate/File/FilesSize.php
Normal file
163
libs/Zend/Validate/File/FilesSize.php
Normal file
@ -0,0 +1,163 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_Size
|
||||
*/
|
||||
require_once 'Zend/Validate/File/Size.php';
|
||||
|
||||
/**
|
||||
* Validator for the size of all files which will be validated in sum
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_FilesSize extends Zend_Validate_File_Size
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const TOO_BIG = 'fileFilesSizeTooBig';
|
||||
const TOO_SMALL = 'fileFilesSizeTooSmall';
|
||||
const NOT_READABLE = 'fileFilesSizeNotReadable';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::TOO_BIG => "All files in sum should have a maximum size of '%max%' but '%size%' were detected",
|
||||
self::TOO_SMALL => "All files in sum should have a minimum size of '%min%' but '%size%' were detected",
|
||||
self::NOT_READABLE => "One or more files can not be read"
|
||||
);
|
||||
|
||||
/**
|
||||
* Internal file array
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_files;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* Min limits the used diskspace for all files, when used with max=null it is the maximum filesize
|
||||
* It also accepts an array with the keys 'min' and 'max'
|
||||
*
|
||||
* @param integer|array $min Minimum diskspace for all files
|
||||
* @param integer $max Maximum diskspace for all files (deprecated)
|
||||
* @param boolean $bytestring Use bytestring or real size ? (deprecated)
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
$this->_files = array();
|
||||
$this->_setSize(0);
|
||||
|
||||
if (1 < func_num_args()) {
|
||||
trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_scalar($options)) {
|
||||
$options = array('min' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$argv = func_get_args();
|
||||
array_shift($argv);
|
||||
$options['max'] = array_shift($argv);
|
||||
if (!empty($argv)) {
|
||||
$options['bytestring'] = array_shift($argv);
|
||||
}
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the disk usage of all files is at least min and
|
||||
* not bigger than max (when max is not null).
|
||||
*
|
||||
* @param string|array $value Real file to check for size
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
require_once 'Zend/Loader.php';
|
||||
if (is_string($value)) {
|
||||
$value = array($value);
|
||||
}
|
||||
|
||||
$min = $this->getMin(true);
|
||||
$max = $this->getMax(true);
|
||||
$size = $this->_getSize();
|
||||
foreach ($value as $files) {
|
||||
// Is file readable ?
|
||||
if (!Zend_Loader::isReadable($files)) {
|
||||
$this->_throw($file, self::NOT_READABLE);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($this->_files[$files])) {
|
||||
$this->_files[$files] = $files;
|
||||
} else {
|
||||
// file already counted... do not count twice
|
||||
continue;
|
||||
}
|
||||
|
||||
// limited to 2GB files
|
||||
$size += @filesize($files);
|
||||
$this->_setSize($size);
|
||||
if (($max !== null) && ($max < $size)) {
|
||||
if ($this->useByteString()) {
|
||||
$this->setMax($this->_toByteString($max));
|
||||
$this->_throw($file, self::TOO_BIG);
|
||||
$this->setMax($max);
|
||||
} else {
|
||||
$this->_throw($file, self::TOO_BIG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check that aggregate files are >= minimum size
|
||||
if (($min !== null) && ($size < $min)) {
|
||||
if ($this->useByteString()) {
|
||||
$this->setMin($this->_toByteString($min));
|
||||
$this->_throw($file, self::TOO_SMALL);
|
||||
$this->setMin($min);
|
||||
} else {
|
||||
$this->_throw($file, self::TOO_SMALL);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($this->_messages) > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
195
libs/Zend/Validate/File/Hash.php
Normal file
195
libs/Zend/Validate/File/Hash.php
Normal file
@ -0,0 +1,195 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for the hash of given files
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Hash extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const DOES_NOT_MATCH = 'fileHashDoesNotMatch';
|
||||
const NOT_DETECTED = 'fileHashHashNotDetected';
|
||||
const NOT_FOUND = 'fileHashNotFound';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::DOES_NOT_MATCH => "The file '%value%' does not match the given hashes",
|
||||
self::NOT_DETECTED => "There was no hash detected for the given file",
|
||||
self::NOT_FOUND => "The file '%value%' could not be found"
|
||||
);
|
||||
|
||||
/**
|
||||
* Hash of the file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_hash;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_scalar($options)) {
|
||||
$options = array('hash1' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
if (1 < func_num_args()) {
|
||||
trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
|
||||
$options['algorithm'] = func_get_arg(1);
|
||||
}
|
||||
|
||||
$this->setHash($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set hash values as array, the hash as key and the algorithm the value
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getHash()
|
||||
{
|
||||
return $this->_hash;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setHash($options)
|
||||
{
|
||||
$this->_hash = null;
|
||||
$this->addHash($options);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addHash($options)
|
||||
{
|
||||
if (is_string($options)) {
|
||||
$options = array($options);
|
||||
} else if (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("False parameter given");
|
||||
}
|
||||
|
||||
$known = hash_algos();
|
||||
if (!isset($options['algorithm'])) {
|
||||
$algorithm = 'crc32';
|
||||
} else {
|
||||
$algorithm = $options['algorithm'];
|
||||
unset($options['algorithm']);
|
||||
}
|
||||
|
||||
if (!in_array($algorithm, $known)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("Unknown algorithm '{$algorithm}'");
|
||||
}
|
||||
|
||||
foreach ($options as $value) {
|
||||
$this->_hash[$value] = $algorithm;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the given file confirms the set hash
|
||||
*
|
||||
* @param string $value Filename to check for hash
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
$algos = array_unique(array_values($this->_hash));
|
||||
$hashes = array_unique(array_keys($this->_hash));
|
||||
foreach ($algos as $algorithm) {
|
||||
$filehash = hash_file($algorithm, $value);
|
||||
if ($filehash === false) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
foreach($hashes as $hash) {
|
||||
if ($filehash === $hash) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::DOES_NOT_MATCH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
370
libs/Zend/Validate/File/ImageSize.php
Normal file
370
libs/Zend/Validate/File/ImageSize.php
Normal file
@ -0,0 +1,370 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for the image size of a image file
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_ImageSize extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const WIDTH_TOO_BIG = 'fileImageSizeWidthTooBig';
|
||||
const WIDTH_TOO_SMALL = 'fileImageSizeWidthTooSmall';
|
||||
const HEIGHT_TOO_BIG = 'fileImageSizeHeightTooBig';
|
||||
const HEIGHT_TOO_SMALL = 'fileImageSizeHeightTooSmall';
|
||||
const NOT_DETECTED = 'fileImageSizeNotDetected';
|
||||
const NOT_READABLE = 'fileImageSizeNotReadable';
|
||||
|
||||
/**
|
||||
* @var array Error message template
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::WIDTH_TOO_BIG => "Maximum allowed width for image '%value%' should be '%maxwidth%' but '%width%' detected",
|
||||
self::WIDTH_TOO_SMALL => "Minimum expected width for image '%value%' should be '%minwidth%' but '%width%' detected",
|
||||
self::HEIGHT_TOO_BIG => "Maximum allowed height for image '%value%' should be '%maxheight%' but '%height%' detected",
|
||||
self::HEIGHT_TOO_SMALL => "Minimum expected height for image '%value%' should be '%minheight%' but '%height%' detected",
|
||||
self::NOT_DETECTED => "The size of image '%value%' could not be detected",
|
||||
self::NOT_READABLE => "The image '%value%' can not be read"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array Error message template variables
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'minwidth' => '_minwidth',
|
||||
'maxwidth' => '_maxwidth',
|
||||
'minheight' => '_minheight',
|
||||
'maxheight' => '_maxheight',
|
||||
'width' => '_width',
|
||||
'height' => '_height'
|
||||
);
|
||||
|
||||
/**
|
||||
* Minimum image width
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_minwidth;
|
||||
|
||||
/**
|
||||
* Maximum image width
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_maxwidth;
|
||||
|
||||
/**
|
||||
* Minimum image height
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_minheight;
|
||||
|
||||
/**
|
||||
* Maximum image height
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_maxheight;
|
||||
|
||||
/**
|
||||
* Detected width
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_width;
|
||||
|
||||
/**
|
||||
* Detected height
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_height;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* Accepts the following option keys:
|
||||
* - minheight
|
||||
* - minwidth
|
||||
* - maxheight
|
||||
* - maxwidth
|
||||
*
|
||||
* @param Zend_Config|array $options
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
$minwidth = 0;
|
||||
$minheight = 0;
|
||||
$maxwidth = null;
|
||||
$maxheight = null;
|
||||
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (1 < func_num_args()) {
|
||||
trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
|
||||
if (!is_array($options)) {
|
||||
$options = array('minwidth' => $options);
|
||||
}
|
||||
$argv = func_get_args();
|
||||
array_shift($argv);
|
||||
$options['minheight'] = array_shift($argv);
|
||||
if (!empty($argv)) {
|
||||
$options['maxwidth'] = array_shift($argv);
|
||||
if (!empty($argv)) {
|
||||
$options['maxheight'] = array_shift($argv);
|
||||
}
|
||||
}
|
||||
} else if (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
if (isset($options['minheight']) || isset($options['minwidth'])) {
|
||||
$this->setImageMin($options);
|
||||
}
|
||||
|
||||
if (isset($options['maxheight']) || isset($options['maxwidth'])) {
|
||||
$this->setImageMax($options);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set minimum image sizes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageMin()
|
||||
{
|
||||
return array('minwidth' => $this->_minwidth, 'minheight' => $this->_minheight);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set maximum image sizes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageMax()
|
||||
{
|
||||
return array('maxwidth' => $this->_maxwidth, 'maxheight' => $this->_maxheight);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set image width sizes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageWidth()
|
||||
{
|
||||
return array('minwidth' => $this->_minwidth, 'maxwidth' => $this->_maxwidth);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set image height sizes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageHeight()
|
||||
{
|
||||
return array('minheight' => $this->_minheight, 'maxheight' => $this->_maxheight);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum image size
|
||||
*
|
||||
* @param array $options The minimum image dimensions
|
||||
* @throws Zend_Validate_Exception When minwidth is greater than maxwidth
|
||||
* @throws Zend_Validate_Exception When minheight is greater than maxheight
|
||||
* @return Zend_Validate_File_ImageSize Provides a fluent interface
|
||||
*/
|
||||
public function setImageMin($options)
|
||||
{
|
||||
if (isset($options['minwidth'])) {
|
||||
if (($this->_maxwidth !== null) and ($options['minwidth'] > $this->_maxwidth)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The minimum image width must be less than or equal to the "
|
||||
. " maximum image width, but {$options['minwidth']} > {$this->_maxwidth}");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['maxheight'])) {
|
||||
if (($this->_maxheight !== null) and ($options['minheight'] > $this->_maxheight)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The minimum image height must be less than or equal to the "
|
||||
. " maximum image height, but {$options['minheight']} > {$this->_maxheight}");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['minwidth'])) {
|
||||
$this->_minwidth = (int) $options['minwidth'];
|
||||
}
|
||||
|
||||
if (isset($options['minheight'])) {
|
||||
$this->_minheight = (int) $options['minheight'];
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum image size
|
||||
*
|
||||
* @param array $options The maximum image dimensions
|
||||
* @throws Zend_Validate_Exception When maxwidth is smaller than minwidth
|
||||
* @throws Zend_Validate_Exception When maxheight is smaller than minheight
|
||||
* @return Zend_Validate_StringLength Provides a fluent interface
|
||||
*/
|
||||
public function setImageMax($options)
|
||||
{
|
||||
if (isset($options['maxwidth'])) {
|
||||
if (($this->_minwidth !== null) and ($options['maxwidth'] < $this->_minwidth)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The maximum image width must be greater than or equal to the "
|
||||
. "minimum image width, but {$options['maxwidth']} < {$this->_minwidth}");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['maxheight'])) {
|
||||
if (($this->_minheight !== null) and ($options['maxheight'] < $this->_minheight)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The maximum image height must be greater than or equal to the "
|
||||
. "minimum image height, but {$options['maxheight']} < {$this->_minwidth}");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['maxwidth'])) {
|
||||
$this->_maxwidth = (int) $options['maxwidth'];
|
||||
}
|
||||
|
||||
if (isset($options['maxheight'])) {
|
||||
$this->_maxheight = (int) $options['maxheight'];
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mimimum and maximum image width
|
||||
*
|
||||
* @param array $options The image width dimensions
|
||||
* @return Zend_Validate_File_ImageSize Provides a fluent interface
|
||||
*/
|
||||
public function setImageWidth($options)
|
||||
{
|
||||
$this->setImageMin($options);
|
||||
$this->setImageMax($options);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mimimum and maximum image height
|
||||
*
|
||||
* @param array $options The image height dimensions
|
||||
* @return Zend_Validate_File_ImageSize Provides a fluent interface
|
||||
*/
|
||||
public function setImageHeight($options)
|
||||
{
|
||||
$this->setImageMin($options);
|
||||
$this->setImageMax($options);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the imagesize of $value is at least min and
|
||||
* not bigger than max
|
||||
*
|
||||
* @param string $value Real file to check for image size
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_READABLE);
|
||||
}
|
||||
|
||||
$size = @getimagesize($value);
|
||||
$this->_setValue($file);
|
||||
|
||||
if (empty($size) or ($size[0] === 0) or ($size[1] === 0)) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
$this->_width = $size[0];
|
||||
$this->_height = $size[1];
|
||||
if ($this->_width < $this->_minwidth) {
|
||||
$this->_throw($file, self::WIDTH_TOO_SMALL);
|
||||
}
|
||||
|
||||
if (($this->_maxwidth !== null) and ($this->_maxwidth < $this->_width)) {
|
||||
$this->_throw($file, self::WIDTH_TOO_BIG);
|
||||
}
|
||||
|
||||
if ($this->_height < $this->_minheight) {
|
||||
$this->_throw($file, self::HEIGHT_TOO_SMALL);
|
||||
}
|
||||
|
||||
if (($this->_maxheight !== null) and ($this->_maxheight < $this->_height)) {
|
||||
$this->_throw($file, self::HEIGHT_TOO_BIG);
|
||||
}
|
||||
|
||||
if (count($this->_messages) > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
133
libs/Zend/Validate/File/IsCompressed.php
Normal file
133
libs/Zend/Validate/File/IsCompressed.php
Normal file
@ -0,0 +1,133 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_MimeType
|
||||
*/
|
||||
require_once 'Zend/Validate/File/MimeType.php';
|
||||
|
||||
/**
|
||||
* Validator which checks if the file already exists in the directory
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_IsCompressed extends Zend_Validate_File_MimeType
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const FALSE_TYPE = 'fileIsCompressedFalseType';
|
||||
const NOT_DETECTED = 'fileIsCompressedNotDetected';
|
||||
const NOT_READABLE = 'fileIsCompressedNotReadable';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::FALSE_TYPE => "The file '%value%' is not compressed, '%type%' detected",
|
||||
self::NOT_DETECTED => "The mimetype of file '%value%' has not been detected",
|
||||
self::NOT_READABLE => "The file '%value%' can not be read"
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string|array $compression
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($mimetype = array())
|
||||
{
|
||||
if (empty($mimetype)) {
|
||||
$mimetype = array(
|
||||
'application/x-tar',
|
||||
'application/x-cpio',
|
||||
'application/x-debian-package',
|
||||
'application/x-archive',
|
||||
'application/x-arc',
|
||||
'application/x-arj',
|
||||
'application/x-lharc',
|
||||
'application/x-lha',
|
||||
'application/x-rar',
|
||||
'application/zip',
|
||||
'application/zoo',
|
||||
'application/x-eet',
|
||||
'application/x-java-pack200',
|
||||
'application/x-compress',
|
||||
'application/x-gzip',
|
||||
'application/x-bzip2'
|
||||
);
|
||||
}
|
||||
|
||||
$this->setMimeType($mimetype);
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the file is compression with the set compression types
|
||||
*
|
||||
* @param string $value Real file to check for compression
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_READABLE);
|
||||
}
|
||||
|
||||
if ($file !== null) {
|
||||
if (class_exists('finfo', false) && defined('MAGIC')) {
|
||||
$mime = new finfo(FILEINFO_MIME);
|
||||
$this->_type = $mime->file($value);
|
||||
unset($mime);
|
||||
} elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
|
||||
$this->_type = mime_content_type($value);
|
||||
} else {
|
||||
$this->_type = $file['type'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->_type)) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
$compressions = $this->getMimeType(true);
|
||||
if (in_array($this->_type, $compressions)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$types = explode('/', $this->_type);
|
||||
$types = array_merge($types, explode('-', $this->_type));
|
||||
foreach ($compressions as $mime) {
|
||||
if (in_array($mime, $types)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::FALSE_TYPE);
|
||||
}
|
||||
}
|
137
libs/Zend/Validate/File/IsImage.php
Normal file
137
libs/Zend/Validate/File/IsImage.php
Normal file
@ -0,0 +1,137 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_MimeType
|
||||
*/
|
||||
require_once 'Zend/Validate/File/MimeType.php';
|
||||
|
||||
/**
|
||||
* Validator which checks if the file already exists in the directory
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_IsImage extends Zend_Validate_File_MimeType
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const FALSE_TYPE = 'fileIsImageFalseType';
|
||||
const NOT_DETECTED = 'fileIsImageNotDetected';
|
||||
const NOT_READABLE = 'fileIsImageNotReadable';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::FALSE_TYPE => "The file '%value%' is no image, '%type%' detected",
|
||||
self::NOT_DETECTED => "The mimetype of file '%value%' has not been detected",
|
||||
self::NOT_READABLE => "The file '%value%' can not be read"
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string|array $mimetype
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($mimetype = array())
|
||||
{
|
||||
if (empty($mimetype)) {
|
||||
$mimetype = array(
|
||||
'image/x-quicktime',
|
||||
'image/jp2',
|
||||
'image/x-xpmi',
|
||||
'image/x-portable-bitmap',
|
||||
'image/x-portable-greymap',
|
||||
'image/x-portable-pixmap',
|
||||
'image/x-niff',
|
||||
'image/tiff',
|
||||
'image/png',
|
||||
'image/x-unknown',
|
||||
'image/gif',
|
||||
'image/x-ms-bmp',
|
||||
'application/dicom',
|
||||
'image/vnd.adobe.photoshop',
|
||||
'image/vnd.djvu',
|
||||
'image/x-cpi',
|
||||
'image/jpeg',
|
||||
'image/x-ico',
|
||||
'image/x-coreldraw',
|
||||
'image/svg+xml'
|
||||
);
|
||||
}
|
||||
|
||||
$this->setMimeType($mimetype);
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the file is compression with the set compression types
|
||||
*
|
||||
* @param string $value Real file to check for compression
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_READABLE);
|
||||
}
|
||||
|
||||
if ($file !== null) {
|
||||
if (class_exists('finfo', false) && defined('MAGIC')) {
|
||||
$mime = new finfo(FILEINFO_MIME);
|
||||
$this->_type = $mime->file($value);
|
||||
unset($mime);
|
||||
} elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
|
||||
$this->_type = mime_content_type($value);
|
||||
} else {
|
||||
$this->_type = $file['type'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->_type)) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
$compressions = $this->getMimeType(true);
|
||||
if (in_array($this->_type, $compressions)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$types = explode('/', $this->_type);
|
||||
$types = array_merge($types, explode('-', $this->_type));
|
||||
foreach($compressions as $mime) {
|
||||
if (in_array($mime, $types)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::FALSE_TYPE);
|
||||
}
|
||||
}
|
183
libs/Zend/Validate/File/Md5.php
Normal file
183
libs/Zend/Validate/File/Md5.php
Normal file
@ -0,0 +1,183 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_Hash
|
||||
*/
|
||||
require_once 'Zend/Validate/File/Hash.php';
|
||||
|
||||
/**
|
||||
* Validator for the md5 hash of given files
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Md5 extends Zend_Validate_File_Hash
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const DOES_NOT_MATCH = 'fileMd5DoesNotMatch';
|
||||
const NOT_DETECTED = 'fileMd5NotDetected';
|
||||
const NOT_FOUND = 'fileMd5NotFound';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::DOES_NOT_MATCH => "The file '%value%' does not match the given md5 hashes",
|
||||
self::NOT_DETECTED => "There was no md5 hash detected for the given file",
|
||||
self::NOT_FOUND => "The file '%value%' could not be found"
|
||||
);
|
||||
|
||||
/**
|
||||
* Hash of the file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_hash;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* $hash is the hash we accept for the file $file
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_scalar($options)) {
|
||||
$options = array('hash1' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$this->setMd5($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all set md5 hashes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMd5()
|
||||
{
|
||||
return $this->getHash();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the md5 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @param string $algorithm (Deprecated) Algorithm to use, fixed to md5
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setHash($options)
|
||||
{
|
||||
if (!is_array($options)) {
|
||||
$options = (array) $options;
|
||||
}
|
||||
|
||||
$options['algorithm'] = 'md5';
|
||||
parent::setHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the md5 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setMd5($options)
|
||||
{
|
||||
$this->setHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the md5 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @param string $algorithm (Depreciated) Algorithm to use, fixed to md5
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addHash($options)
|
||||
{
|
||||
if (!is_array($options)) {
|
||||
$options = (array) $options;
|
||||
}
|
||||
|
||||
$options['algorithm'] = 'md5';
|
||||
parent::addHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the md5 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addMd5($options)
|
||||
{
|
||||
$this->addHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the given file confirms the set hash
|
||||
*
|
||||
* @param string $value Filename to check for hash
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
$hashes = array_unique(array_keys($this->_hash));
|
||||
$filehash = hash_file('md5', $value);
|
||||
if ($filehash === false) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
foreach($hashes as $hash) {
|
||||
if ($filehash === $hash) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::DOES_NOT_MATCH);
|
||||
}
|
||||
}
|
231
libs/Zend/Validate/File/MimeType.php
Normal file
231
libs/Zend/Validate/File/MimeType.php
Normal file
@ -0,0 +1,231 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for the mime type of a file
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_MimeType extends Zend_Validate_Abstract
|
||||
{
|
||||
/**#@+
|
||||
* @const Error type constants
|
||||
*/
|
||||
const FALSE_TYPE = 'fileMimeTypeFalse';
|
||||
const NOT_DETECTED = 'fileMimeTypeNotDetected';
|
||||
const NOT_READABLE = 'fileMimeTypeNotReadable';
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::FALSE_TYPE => "The file '%value%' has a false mimetype of '%type%'",
|
||||
self::NOT_DETECTED => "The mimetype of file '%value%' could not been detected",
|
||||
self::NOT_READABLE => "The file '%value%' can not be read"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'type' => '_type'
|
||||
);
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $_type;
|
||||
|
||||
/**
|
||||
* Mimetypes
|
||||
*
|
||||
* If null, there is no mimetype
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $_mimetype;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* Mimetype to accept
|
||||
*
|
||||
* @param string|array $mimetype MimeType
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($mimetype)
|
||||
{
|
||||
if ($mimetype instanceof Zend_Config) {
|
||||
$mimetype = $mimetype->toArray();
|
||||
} elseif (is_string($mimetype)) {
|
||||
$mimetype = explode(',', $mimetype);
|
||||
} elseif (!is_array($mimetype)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("Invalid options to validator provided");
|
||||
}
|
||||
|
||||
$this->setMimeType($mimetype);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set mimetypes
|
||||
*
|
||||
* @param boolean $asArray Returns the values as array, when false an concated string is returned
|
||||
* @return string|array
|
||||
*/
|
||||
public function getMimeType($asArray = false)
|
||||
{
|
||||
$asArray = (bool) $asArray;
|
||||
$mimetype = (string) $this->_mimetype;
|
||||
if ($asArray) {
|
||||
$mimetype = explode(',', $mimetype);
|
||||
}
|
||||
|
||||
return $mimetype;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mimetypes
|
||||
*
|
||||
* @param string|array $mimetype The mimetypes to validate
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function setMimeType($mimetype)
|
||||
{
|
||||
$this->_mimetype = null;
|
||||
$this->addMimeType($mimetype);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the mimetypes
|
||||
*
|
||||
* @param string|array $mimetype The mimetypes to add for validation
|
||||
* @return Zend_Validate_File_Extension Provides a fluent interface
|
||||
*/
|
||||
public function addMimeType($mimetype)
|
||||
{
|
||||
$mimetypes = $this->getMimeType(true);
|
||||
|
||||
if (is_string($mimetype)) {
|
||||
$mimetype = explode(',', $mimetype);
|
||||
} elseif (!is_array($mimetype)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("Invalid options to validator provided");
|
||||
}
|
||||
|
||||
foreach ($mimetype as $content) {
|
||||
if (empty($content) || !is_string($content)) {
|
||||
continue;
|
||||
}
|
||||
$mimetypes[] = trim($content);
|
||||
}
|
||||
$mimetypes = array_unique($mimetypes);
|
||||
|
||||
// Sanity check to ensure no empty values
|
||||
foreach ($mimetypes as $key => $mt) {
|
||||
if (empty($mt)) {
|
||||
unset($mimetypes[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_mimetype = implode(',', $mimetypes);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if the mimetype of the file matches the given ones. Also parts
|
||||
* of mimetypes can be checked. If you give for example "image" all image
|
||||
* mime types will be accepted like "image/gif", "image/jpeg" and so on.
|
||||
*
|
||||
* @param string $value Real file to check for mimetype
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_READABLE);
|
||||
}
|
||||
|
||||
if ($file !== null) {
|
||||
if (class_exists('finfo', false) && defined('MAGIC')) {
|
||||
$mime = new finfo(FILEINFO_MIME);
|
||||
$this->_type = $mime->file($value);
|
||||
unset($mime);
|
||||
} elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
|
||||
$this->_type = mime_content_type($value);
|
||||
} else {
|
||||
$this->_type = $file['type'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->_type)) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
$mimetype = $this->getMimeType(true);
|
||||
if (in_array($this->_type, $mimetype)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$types = explode('/', $this->_type);
|
||||
$types = array_merge($types, explode('-', $this->_type));
|
||||
foreach($mimetype as $mime) {
|
||||
if (in_array($mime, $types)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::FALSE_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
84
libs/Zend/Validate/File/NotExists.php
Normal file
84
libs/Zend/Validate/File/NotExists.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_Exists
|
||||
*/
|
||||
require_once 'Zend/Validate/File/Exists.php';
|
||||
|
||||
/**
|
||||
* Validator which checks if the destination file does not exist
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_NotExists extends Zend_Validate_File_Exists
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const DOES_EXIST = 'fileNotExistsDoesExist';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::DOES_EXIST => "The file '%value%' does exist"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the file does not exist in the set destinations
|
||||
*
|
||||
* @param string $value Real file to check for
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
$directories = $this->getDirectory(true);
|
||||
if (($file !== null) and (!empty($file['destination']))) {
|
||||
$directories[] = $file['destination'];
|
||||
} else if (!isset($file['name'])) {
|
||||
$file['name'] = $value;
|
||||
}
|
||||
|
||||
foreach ($directories as $directory) {
|
||||
if (empty($directory)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$check = true;
|
||||
if (file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) {
|
||||
return $this->_throw($file, self::DOES_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($check)) {
|
||||
return $this->_throw($file, self::DOES_EXIST);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
181
libs/Zend/Validate/File/Sha1.php
Normal file
181
libs/Zend/Validate/File/Sha1.php
Normal file
@ -0,0 +1,181 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_File_Hash
|
||||
*/
|
||||
require_once 'Zend/Validate/File/Hash.php';
|
||||
|
||||
/**
|
||||
* Validator for the sha1 hash of given files
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Sha1 extends Zend_Validate_File_Hash
|
||||
{
|
||||
/**
|
||||
* @const string Error constants
|
||||
*/
|
||||
const DOES_NOT_MATCH = 'fileSha1DoesNotMatch';
|
||||
const NOT_DETECTED = 'fileSha1NotDetected';
|
||||
const NOT_FOUND = 'fileSha1NotFound';
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::DOES_NOT_MATCH => "The file '%value%' does not match the given sha1 hashes",
|
||||
self::NOT_DETECTED => "There was no sha1 hash detected for the given file",
|
||||
self::NOT_FOUND => "The file '%value%' could not be found"
|
||||
);
|
||||
|
||||
/**
|
||||
* Hash of the file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_hash;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* $hash is the hash we accept for the file $file
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_scalar($options)) {
|
||||
$options = array('hash1' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$this->setHash($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all set sha1 hashes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSha1()
|
||||
{
|
||||
return $this->getHash();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the sha1 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setHash($options)
|
||||
{
|
||||
if (!is_array($options)) {
|
||||
$options = (array) $options;
|
||||
}
|
||||
|
||||
$options['algorithm'] = 'sha1';
|
||||
parent::setHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the sha1 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function setSha1($options)
|
||||
{
|
||||
$this->setHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the sha1 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addHash($options)
|
||||
{
|
||||
if (!is_array($options)) {
|
||||
$options = (array) $options;
|
||||
}
|
||||
|
||||
$options['algorithm'] = 'sha1';
|
||||
parent::addHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the sha1 hash for one or multiple files
|
||||
*
|
||||
* @param string|array $options
|
||||
* @return Zend_Validate_File_Hash Provides a fluent interface
|
||||
*/
|
||||
public function addSha1($options)
|
||||
{
|
||||
$this->addHash($options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the given file confirms the set hash
|
||||
*
|
||||
* @param string $value Filename to check for hash
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
$hashes = array_unique(array_keys($this->_hash));
|
||||
$filehash = hash_file('sha1', $value);
|
||||
if ($filehash === false) {
|
||||
return $this->_throw($file, self::NOT_DETECTED);
|
||||
}
|
||||
|
||||
foreach ($hashes as $hash) {
|
||||
if ($filehash === $hash) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->_throw($file, self::DOES_NOT_MATCH);
|
||||
}
|
||||
}
|
395
libs/Zend/Validate/File/Size.php
Normal file
395
libs/Zend/Validate/File/Size.php
Normal file
@ -0,0 +1,395 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for the maximum size of a file up to a max of 2GB
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Size extends Zend_Validate_Abstract
|
||||
{
|
||||
/**#@+
|
||||
* @const string Error constants
|
||||
*/
|
||||
const TOO_BIG = 'fileSizeTooBig';
|
||||
const TOO_SMALL = 'fileSizeTooSmall';
|
||||
const NOT_FOUND = 'fileSizeNotFound';
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::TOO_BIG => "Maximum allowed size for file '%value%' is '%max%' but '%size%' detected",
|
||||
self::TOO_SMALL => "Minimum expected size for file '%value%' is '%min%' but '%size%' detected",
|
||||
self::NOT_FOUND => "The file '%value%' could not be found"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array Error message template variables
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'min' => '_min',
|
||||
'max' => '_max',
|
||||
'size' => '_size',
|
||||
);
|
||||
|
||||
/**
|
||||
* Minimum filesize
|
||||
* @var integer
|
||||
*/
|
||||
protected $_min;
|
||||
|
||||
/**
|
||||
* Maximum filesize
|
||||
*
|
||||
* If null, there is no maximum filesize
|
||||
*
|
||||
* @var integer|null
|
||||
*/
|
||||
protected $_max;
|
||||
|
||||
/**
|
||||
* Detected size
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_size;
|
||||
|
||||
/**
|
||||
* Use bytestring ?
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_useByteString = true;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* If $options is a integer, it will be used as maximum filesize
|
||||
* As Array is accepts the following keys:
|
||||
* 'min': Minimum filesize
|
||||
* 'max': Maximum filesize
|
||||
* 'bytestring': Use bytestring or real size for messages
|
||||
*
|
||||
* @param integer|array $options Options for the adapter
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
if ($options instanceof Zend_Config) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_string($options) || is_numeric($options)) {
|
||||
$options = array('max' => $options);
|
||||
} elseif (!is_array($options)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
if (1 < func_num_args()) {
|
||||
trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
|
||||
$argv = func_get_args();
|
||||
array_shift($argv);
|
||||
$options['max'] = array_shift($argv);
|
||||
if (!empty($argv)) {
|
||||
$options['bytestring'] = array_shift($argv);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['bytestring'])) {
|
||||
$this->setUseByteString($options['bytestring']);
|
||||
}
|
||||
|
||||
if (isset($options['min'])) {
|
||||
$this->setMin($options['min']);
|
||||
}
|
||||
|
||||
if (isset($options['max'])) {
|
||||
$this->setMax($options['max']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum filesize
|
||||
*
|
||||
* @param boolean $byteString Use bytestring ?
|
||||
* @return integer
|
||||
*/
|
||||
public function setUseByteString($byteString = true)
|
||||
{
|
||||
$this->_useByteString = (bool) $byteString;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Will bytestring be used?
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function useByteString()
|
||||
{
|
||||
return $this->_useByteString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum filesize
|
||||
*
|
||||
* @param bool $raw Whether or not to force return of the raw value (defaults off)
|
||||
* @return integer|string
|
||||
*/
|
||||
public function getMin($raw = false)
|
||||
{
|
||||
$min = $this->_min;
|
||||
if (!$raw && $this->useByteString()) {
|
||||
$min = $this->_toByteString($min);
|
||||
}
|
||||
|
||||
return $min;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum filesize
|
||||
*
|
||||
* @param integer $min The minimum filesize
|
||||
* @throws Zend_Validate_Exception When min is greater than max
|
||||
* @return Zend_Validate_File_Size Provides a fluent interface
|
||||
*/
|
||||
public function setMin($min)
|
||||
{
|
||||
if (!is_string($min) and !is_numeric($min)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$min = (integer) $this->_fromByteString($min);
|
||||
$max = $this->getMax(true);
|
||||
if (($max !== null) && ($min > $max)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum filesize, but $min >"
|
||||
. " $max");
|
||||
}
|
||||
|
||||
$this->_min = $min;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum filesize
|
||||
*
|
||||
* @param bool $raw Whether or not to force return of the raw value (defaults off)
|
||||
* @return integer|string
|
||||
*/
|
||||
public function getMax($raw = false)
|
||||
{
|
||||
$max = $this->_max;
|
||||
if (!$raw && $this->useByteString()) {
|
||||
$max = $this->_toByteString($max);
|
||||
}
|
||||
|
||||
return $max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum filesize
|
||||
*
|
||||
* @param integer $max The maximum filesize
|
||||
* @throws Zend_Validate_Exception When max is smaller than min
|
||||
* @return Zend_Validate_StringLength Provides a fluent interface
|
||||
*/
|
||||
public function setMax($max)
|
||||
{
|
||||
if (!is_string($max) && !is_numeric($max)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception ('Invalid options to validator provided');
|
||||
}
|
||||
|
||||
$max = (integer) $this->_fromByteString($max);
|
||||
$min = $this->getMin(true);
|
||||
if (($min !== null) && ($max < $min)) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum filesize, but "
|
||||
. "$max < $min");
|
||||
}
|
||||
|
||||
$this->_max = $max;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve current detected file size
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function _getSize()
|
||||
{
|
||||
return $this->_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set current size
|
||||
*
|
||||
* @param int $size
|
||||
* @return Zend_Validate_File_Size
|
||||
*/
|
||||
protected function _setSize($size)
|
||||
{
|
||||
$this->_size = $size;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the filesize of $value is at least min and
|
||||
* not bigger than max (when max is not null).
|
||||
*
|
||||
* @param string $value Real file to check for size
|
||||
* @param array $file File data from Zend_File_Transfer
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value, $file = null)
|
||||
{
|
||||
// Is file readable ?
|
||||
require_once 'Zend/Loader.php';
|
||||
if (!Zend_Loader::isReadable($value)) {
|
||||
return $this->_throw($file, self::NOT_FOUND);
|
||||
}
|
||||
|
||||
// limited to 4GB files
|
||||
$size = sprintf("%u", @filesize($value));
|
||||
$this->_setSize($size);
|
||||
|
||||
// Check to see if it's smaller than min size
|
||||
$min = $this->getMin(true);
|
||||
$max = $this->getMax(true);
|
||||
if (($min !== null) && ($size < $min)) {
|
||||
if ($this->useByteString()) {
|
||||
$this->setMin($this->_toByteString($min));
|
||||
$this->_throw($file, self::TOO_SMALL);
|
||||
$this->setMin($min);
|
||||
} else {
|
||||
$this->_throw($file, self::TOO_SMALL);
|
||||
}
|
||||
}
|
||||
|
||||
// Check to see if it's larger than max size
|
||||
if (($max !== null) && ($max < $size)) {
|
||||
if ($this->useByteString()) {
|
||||
$this->setMax($this->_toByteString($max));
|
||||
$this->_throw($file, self::TOO_BIG);
|
||||
$this->setMax($max);
|
||||
} else {
|
||||
$this->_throw($file, self::TOO_BIG);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($this->_messages) > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the formatted size
|
||||
*
|
||||
* @param integer $size
|
||||
* @return string
|
||||
*/
|
||||
protected function _toByteString($size)
|
||||
{
|
||||
$sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
|
||||
for ($i=0; $size >= 1024 && $i < 9; $i++) {
|
||||
$size /= 1024;
|
||||
}
|
||||
return round($size, 2) . $sizes[$i];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the unformatted size
|
||||
*
|
||||
* @param string $size
|
||||
* @return integer
|
||||
*/
|
||||
protected function _fromByteString($size)
|
||||
{
|
||||
if (is_numeric($size)) {
|
||||
return (integer) $size;
|
||||
}
|
||||
|
||||
$type = trim(substr($size, -2));
|
||||
$value = substr($size, 0, -2);
|
||||
switch (strtoupper($type)) {
|
||||
case 'YB':
|
||||
$value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024);
|
||||
break;
|
||||
case 'ZB':
|
||||
$value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024);
|
||||
break;
|
||||
case 'EB':
|
||||
$value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024);
|
||||
break;
|
||||
case 'PB':
|
||||
$value *= (1024 * 1024 * 1024 * 1024 * 1024);
|
||||
break;
|
||||
case 'TB':
|
||||
$value *= (1024 * 1024 * 1024 * 1024);
|
||||
break;
|
||||
case 'GB':
|
||||
$value *= (1024 * 1024 * 1024);
|
||||
break;
|
||||
case 'MB':
|
||||
$value *= (1024 * 1024);
|
||||
break;
|
||||
case 'KB':
|
||||
$value *= 1024;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error of the given type
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $errorType
|
||||
* @return false
|
||||
*/
|
||||
protected function _throw($file, $errorType)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$this->_value = $file['name'];
|
||||
}
|
||||
|
||||
$this->_error($errorType);
|
||||
return false;
|
||||
}
|
||||
}
|
216
libs/Zend/Validate/File/Upload.php
Normal file
216
libs/Zend/Validate/File/Upload.php
Normal file
@ -0,0 +1,216 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* Validator for the maximum size of a file up to a max of 2GB
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_File_Upload extends Zend_Validate_Abstract
|
||||
{
|
||||
/**@#+
|
||||
* @const string Error constants
|
||||
*/
|
||||
const INI_SIZE = 'fileUploadErrorIniSize';
|
||||
const FORM_SIZE = 'fileUploadErrorFormSize';
|
||||
const PARTIAL = 'fileUploadErrorPartial';
|
||||
const NO_FILE = 'fileUploadErrorNoFile';
|
||||
const NO_TMP_DIR = 'fileUploadErrorNoTmpDir';
|
||||
const CANT_WRITE = 'fileUploadErrorCantWrite';
|
||||
const EXTENSION = 'fileUploadErrorExtension';
|
||||
const ATTACK = 'fileUploadErrorAttack';
|
||||
const FILE_NOT_FOUND = 'fileUploadErrorFileNotFound';
|
||||
const UNKNOWN = 'fileUploadErrorUnknown';
|
||||
/**@#-*/
|
||||
|
||||
/**
|
||||
* @var array Error message templates
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::INI_SIZE => "The file '%value%' exceeds the defined ini size",
|
||||
self::FORM_SIZE => "The file '%value%' exceeds the defined form size",
|
||||
self::PARTIAL => "The file '%value%' was only partially uploaded",
|
||||
self::NO_FILE => "The file '%value%' was not uploaded",
|
||||
self::NO_TMP_DIR => "No temporary directory was found for the file '%value%'",
|
||||
self::CANT_WRITE => "The file '%value%' can't be written",
|
||||
self::EXTENSION => "The extension returned an error while uploading the file '%value%'",
|
||||
self::ATTACK => "The file '%value%' was illegal uploaded, possible attack",
|
||||
self::FILE_NOT_FOUND => "The file '%value%' was not found",
|
||||
self::UNKNOWN => "Unknown error while uploading the file '%value%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* Internal array of files
|
||||
* @var array
|
||||
*/
|
||||
protected $_files = array();
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* The array $files must be given in syntax of Zend_File_Transfer to be checked
|
||||
* If no files are given the $_FILES array will be used automatically.
|
||||
* NOTE: This validator will only work with HTTP POST uploads!
|
||||
*
|
||||
* @param array $files Array of files in syntax of Zend_File_Transfer
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($files = array())
|
||||
{
|
||||
$this->setFiles($files);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the array of set files
|
||||
*
|
||||
* @param string $files (Optional) The file to return in detail
|
||||
* @return array
|
||||
* @throws Zend_Validate_Exception If file is not found
|
||||
*/
|
||||
public function getFiles($file = null)
|
||||
{
|
||||
if ($file !== null) {
|
||||
$return = array();
|
||||
foreach ($this->_files as $name => $content) {
|
||||
if ($name === $file) {
|
||||
$return[$file] = $this->_files[$name];
|
||||
}
|
||||
|
||||
if ($content['name'] === $file) {
|
||||
$return[$name] = $this->_files[$name];
|
||||
}
|
||||
}
|
||||
|
||||
if (count($return) === 0) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The file '$file' was not found");
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
return $this->_files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum filesize
|
||||
*
|
||||
* @param array $files The files to check in syntax of Zend_File_Transfer
|
||||
* @return Zend_Validate_File_Upload Provides a fluent interface
|
||||
*/
|
||||
public function setFiles($files = array())
|
||||
{
|
||||
if (count($files) === 0) {
|
||||
$this->_files = $_FILES;
|
||||
} else {
|
||||
$this->_files = $files;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the file was uploaded without errors
|
||||
*
|
||||
* @param string $value Single file to check for upload errors, when giving null the $_FILES array
|
||||
* from initialization will be used
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
if (array_key_exists($value, $this->_files)) {
|
||||
$files[$value] = $this->_files[$value];
|
||||
} else {
|
||||
foreach ($this->_files as $file => $content) {
|
||||
if ($content['name'] === $value) {
|
||||
$files[$file] = $this->_files[$file];
|
||||
}
|
||||
|
||||
if ($content['tmp_name'] === $value) {
|
||||
$files[$file] = $this->_files[$file];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($files)) {
|
||||
$this->_error(self::FILE_NOT_FOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($files as $file => $content) {
|
||||
$this->_value = $file;
|
||||
switch($content['error']) {
|
||||
case 0:
|
||||
if (!is_uploaded_file($content['tmp_name'])) {
|
||||
$this->_error(self::ATTACK);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$this->_error(self::INI_SIZE);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$this->_error(self::FORM_SIZE);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$this->_error(self::PARTIAL);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
$this->_error(self::NO_FILE);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
$this->_error(self::NO_TMP_DIR);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
$this->_error(self::CANT_WRITE);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
$this->_error(self::EXTENSION);
|
||||
break;
|
||||
|
||||
default:
|
||||
$this->_error(self::UNKNOWN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($this->_messages) > 0) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
75
libs/Zend/Validate/Float.php
Normal file
75
libs/Zend/Validate/Float.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Float.php 8714 2008-03-09 20:03:45Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Float extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const NOT_FLOAT = 'notFloat';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_FLOAT => "'%value%' does not appear to be a float"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is a floating-point value
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
$locale = localeconv();
|
||||
|
||||
$valueFiltered = str_replace($locale['thousands_sep'], '', $valueString);
|
||||
$valueFiltered = str_replace($locale['decimal_point'], '.', $valueFiltered);
|
||||
|
||||
if (strval(floatval($valueFiltered)) != $valueFiltered) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
114
libs/Zend/Validate/GreaterThan.php
Normal file
114
libs/Zend/Validate/GreaterThan.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: GreaterThan.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_GreaterThan extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const NOT_GREATER = 'notGreaterThan';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_GREATER => "'%value%' is not greater than '%min%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'min' => '_min'
|
||||
);
|
||||
|
||||
/**
|
||||
* Minimum value
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_min;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param mixed $min
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($min)
|
||||
{
|
||||
$this->setMin($min);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the min option
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMin()
|
||||
{
|
||||
return $this->_min;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the min option
|
||||
*
|
||||
* @param mixed $min
|
||||
* @return Zend_Validate_GreaterThan Provides a fluent interface
|
||||
*/
|
||||
public function setMin($min)
|
||||
{
|
||||
$this->_min = $min;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is greater than min option
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue($value);
|
||||
|
||||
if ($this->_min >= $value) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
74
libs/Zend/Validate/Hex.php
Normal file
74
libs/Zend/Validate/Hex.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Hex.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hex extends Zend_Validate_Abstract
|
||||
{
|
||||
/**
|
||||
* Validation failure message key for when the value contains characters other than hexadecimal digits
|
||||
*/
|
||||
const NOT_HEX = 'notHex';
|
||||
|
||||
/**
|
||||
* Validation failure message template definitions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_HEX => "'%value%' has not only hexadecimal digit characters"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value contains only hexadecimal digit characters
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if (!ctype_xdigit($valueString)) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
444
libs/Zend/Validate/Hostname.php
Normal file
444
libs/Zend/Validate/Hostname.php
Normal file
@ -0,0 +1,444 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Hostname.php 12274 2008-11-03 12:50:50Z yoshida@zend.co.jp $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Loader
|
||||
*/
|
||||
require_once 'Zend/Loader.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Ip
|
||||
*/
|
||||
require_once 'Zend/Validate/Ip.php';
|
||||
|
||||
/**
|
||||
* Please note there are two standalone test scripts for testing IDN characters due to problems
|
||||
* with file encoding.
|
||||
*
|
||||
* The first is tests/Zend/Validate/HostnameTestStandalone.php which is designed to be run on
|
||||
* the command line.
|
||||
*
|
||||
* The second is tests/Zend/Validate/HostnameTestForm.php which is designed to be run via HTML
|
||||
* to allow users to test entering UTF-8 characters in a form.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const IP_ADDRESS_NOT_ALLOWED = 'hostnameIpAddressNotAllowed';
|
||||
const UNKNOWN_TLD = 'hostnameUnknownTld';
|
||||
const INVALID_DASH = 'hostnameDashCharacter';
|
||||
const INVALID_HOSTNAME_SCHEMA = 'hostnameInvalidHostnameSchema';
|
||||
const UNDECIPHERABLE_TLD = 'hostnameUndecipherableTld';
|
||||
const INVALID_HOSTNAME = 'hostnameInvalidHostname';
|
||||
const INVALID_LOCAL_NAME = 'hostnameInvalidLocalName';
|
||||
const LOCAL_NAME_NOT_ALLOWED = 'hostnameLocalNameNotAllowed';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::IP_ADDRESS_NOT_ALLOWED => "'%value%' appears to be an IP address, but IP addresses are not allowed",
|
||||
self::UNKNOWN_TLD => "'%value%' appears to be a DNS hostname but cannot match TLD against known list",
|
||||
self::INVALID_DASH => "'%value%' appears to be a DNS hostname but contains a dash (-) in an invalid position",
|
||||
self::INVALID_HOSTNAME_SCHEMA => "'%value%' appears to be a DNS hostname but cannot match against hostname schema for TLD '%tld%'",
|
||||
self::UNDECIPHERABLE_TLD => "'%value%' appears to be a DNS hostname but cannot extract TLD part",
|
||||
self::INVALID_HOSTNAME => "'%value%' does not match the expected structure for a DNS hostname",
|
||||
self::INVALID_LOCAL_NAME => "'%value%' does not appear to be a valid local network name",
|
||||
self::LOCAL_NAME_NOT_ALLOWED => "'%value%' appears to be a local network name but local network names are not allowed"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'tld' => '_tld'
|
||||
);
|
||||
|
||||
/**
|
||||
* Allows Internet domain names (e.g., example.com)
|
||||
*/
|
||||
const ALLOW_DNS = 1;
|
||||
|
||||
/**
|
||||
* Allows IP addresses
|
||||
*/
|
||||
const ALLOW_IP = 2;
|
||||
|
||||
/**
|
||||
* Allows local network names (e.g., localhost, www.localdomain)
|
||||
*/
|
||||
const ALLOW_LOCAL = 4;
|
||||
|
||||
/**
|
||||
* Allows all types of hostnames
|
||||
*/
|
||||
const ALLOW_ALL = 7;
|
||||
|
||||
/**
|
||||
* Whether IDN domains are validated
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $_validateIdn = true;
|
||||
|
||||
/**
|
||||
* Whether TLDs are validated against a known list
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $_validateTld = true;
|
||||
|
||||
/**
|
||||
* Bit field of ALLOW constants; determines which types of hostnames are allowed
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_allow;
|
||||
|
||||
/**
|
||||
* Bit field of CHECK constants; determines what additional hostname checks to make
|
||||
*
|
||||
* @var unknown_type
|
||||
*/
|
||||
// protected $_check;
|
||||
|
||||
/**
|
||||
* Array of valid top-level-domains
|
||||
*
|
||||
* @var array
|
||||
* @see ftp://data.iana.org/TLD/tlds-alpha-by-domain.txt List of all TLDs by domain
|
||||
*/
|
||||
protected $_validTlds = array(
|
||||
'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
|
||||
'aq', 'ar', 'arpa', 'as', 'asia', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb',
|
||||
'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
|
||||
'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd',
|
||||
'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
|
||||
'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do',
|
||||
'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj',
|
||||
'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh',
|
||||
'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
|
||||
'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il',
|
||||
'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm',
|
||||
'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw',
|
||||
'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu',
|
||||
'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm',
|
||||
'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv',
|
||||
'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng',
|
||||
'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe',
|
||||
'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt',
|
||||
'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd',
|
||||
'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr',
|
||||
'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tel', 'tf', 'tg', 'th', 'tj',
|
||||
'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw',
|
||||
'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 've',
|
||||
'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm',
|
||||
'zw'
|
||||
);
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $_tld;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param integer $allow OPTIONAL Set what types of hostname to allow (default ALLOW_DNS)
|
||||
* @param boolean $validateIdn OPTIONAL Set whether IDN domains are validated (default true)
|
||||
* @param boolean $validateTld OPTIONAL Set whether the TLD element of a hostname is validated (default true)
|
||||
* @param Zend_Validate_Ip $ipValidator OPTIONAL
|
||||
* @return void
|
||||
* @see http://www.iana.org/cctld/specifications-policies-cctlds-01apr02.htm Technical Specifications for ccTLDs
|
||||
*/
|
||||
public function __construct($allow = self::ALLOW_DNS, $validateIdn = true, $validateTld = true, Zend_Validate_Ip $ipValidator = null)
|
||||
{
|
||||
// Set allow options
|
||||
$this->setAllow($allow);
|
||||
|
||||
// Set validation options
|
||||
$this->_validateIdn = $validateIdn;
|
||||
$this->_validateTld = $validateTld;
|
||||
|
||||
$this->setIpValidator($ipValidator);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Zend_Validate_Ip $ipValidator OPTIONAL
|
||||
* @return void;
|
||||
*/
|
||||
public function setIpValidator(Zend_Validate_Ip $ipValidator = null)
|
||||
{
|
||||
if ($ipValidator === null) {
|
||||
$ipValidator = new Zend_Validate_Ip();
|
||||
}
|
||||
$this->_ipValidator = $ipValidator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the allow option
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getAllow()
|
||||
{
|
||||
return $this->_allow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the allow option
|
||||
*
|
||||
* @param integer $allow
|
||||
* @return Zend_Validate_Hostname Provides a fluent interface
|
||||
*/
|
||||
public function setAllow($allow)
|
||||
{
|
||||
$this->_allow = $allow;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether IDN domains are validated
|
||||
*
|
||||
* This only applies when DNS hostnames are validated
|
||||
*
|
||||
* @param boolean $allowed Set allowed to true to validate IDNs, and false to not validate them
|
||||
*/
|
||||
public function setValidateIdn ($allowed)
|
||||
{
|
||||
$this->_validateIdn = (bool) $allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the TLD element of a hostname is validated
|
||||
*
|
||||
* This only applies when DNS hostnames are validated
|
||||
*
|
||||
* @param boolean $allowed Set allowed to true to validate TLDs, and false to not validate them
|
||||
*/
|
||||
public function setValidateTld ($allowed)
|
||||
{
|
||||
$this->_validateTld = (bool) $allowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the check option
|
||||
*
|
||||
* @param integer $check
|
||||
* @return Zend_Validate_Hostname Provides a fluent interface
|
||||
*/
|
||||
/*
|
||||
public function setCheck($check)
|
||||
{
|
||||
$this->_check = $check;
|
||||
return $this;
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the $value is a valid hostname with respect to the current allow option
|
||||
*
|
||||
* @param string $value
|
||||
* @throws Zend_Validate_Exception if a fatal error occurs for validation process
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
// Check input against IP address schema
|
||||
if ($this->_ipValidator->setTranslator($this->getTranslator())->isValid($valueString)) {
|
||||
if (!($this->_allow & self::ALLOW_IP)) {
|
||||
$this->_error(self::IP_ADDRESS_NOT_ALLOWED);
|
||||
return false;
|
||||
} else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Check input against DNS hostname schema
|
||||
$domainParts = explode('.', $valueString);
|
||||
if ((count($domainParts) > 1) && (strlen($valueString) >= 4) && (strlen($valueString) <= 254)) {
|
||||
$status = false;
|
||||
|
||||
do {
|
||||
// First check TLD
|
||||
if (preg_match('/([a-z]{2,10})$/i', end($domainParts), $matches)) {
|
||||
|
||||
reset($domainParts);
|
||||
|
||||
// Hostname characters are: *(label dot)(label dot label); max 254 chars
|
||||
// label: id-prefix [*ldh{61} id-prefix]; max 63 chars
|
||||
// id-prefix: alpha / digit
|
||||
// ldh: alpha / digit / dash
|
||||
|
||||
// Match TLD against known list
|
||||
$this->_tld = strtolower($matches[1]);
|
||||
if ($this->_validateTld) {
|
||||
if (!in_array($this->_tld, $this->_validTlds)) {
|
||||
$this->_error(self::UNKNOWN_TLD);
|
||||
$status = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Match against IDN hostnames
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
$labelChars = 'a-z0-9';
|
||||
$utf8 = false;
|
||||
$classFile = 'Zend/Validate/Hostname/' . ucfirst($this->_tld) . '.php';
|
||||
if ($this->_validateIdn) {
|
||||
if (Zend_Loader::isReadable($classFile)) {
|
||||
|
||||
// Load additional characters
|
||||
$className = 'Zend_Validate_Hostname_' . ucfirst($this->_tld);
|
||||
Zend_Loader::loadClass($className);
|
||||
$labelChars .= call_user_func(array($className, 'getCharacters'));
|
||||
$utf8 = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Keep label regex short to avoid issues with long patterns when matching IDN hostnames
|
||||
$regexLabel = '/^[' . $labelChars . '\x2d]{1,63}$/i';
|
||||
if ($utf8) {
|
||||
$regexLabel .= 'u';
|
||||
}
|
||||
|
||||
// Check each hostname part
|
||||
$valid = true;
|
||||
foreach ($domainParts as $domainPart) {
|
||||
|
||||
// Check dash (-) does not start, end or appear in 3rd and 4th positions
|
||||
if (strpos($domainPart, '-') === 0 ||
|
||||
(strlen($domainPart) > 2 && strpos($domainPart, '-', 2) == 2 && strpos($domainPart, '-', 3) == 3) ||
|
||||
strrpos($domainPart, '-') === strlen($domainPart) - 1) {
|
||||
|
||||
$this->_error(self::INVALID_DASH);
|
||||
$status = false;
|
||||
break 2;
|
||||
}
|
||||
|
||||
// Check each domain part
|
||||
$status = @preg_match($regexLabel, $domainPart);
|
||||
if ($status === false) {
|
||||
/**
|
||||
* Regex error
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Internal error: DNS validation failed');
|
||||
} elseif ($status === 0) {
|
||||
$valid = false;
|
||||
}
|
||||
}
|
||||
|
||||
// If all labels didn't match, the hostname is invalid
|
||||
if (!$valid) {
|
||||
$this->_error(self::INVALID_HOSTNAME_SCHEMA);
|
||||
$status = false;
|
||||
}
|
||||
|
||||
} else {
|
||||
// Hostname not long enough
|
||||
$this->_error(self::UNDECIPHERABLE_TLD);
|
||||
$status = false;
|
||||
}
|
||||
} while (false);
|
||||
|
||||
// If the input passes as an Internet domain name, and domain names are allowed, then the hostname
|
||||
// passes validation
|
||||
if ($status && ($this->_allow & self::ALLOW_DNS)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
$this->_error(self::INVALID_HOSTNAME);
|
||||
}
|
||||
|
||||
// Check input against local network name schema; last chance to pass validation
|
||||
$regexLocal = '/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/';
|
||||
$status = @preg_match($regexLocal, $valueString);
|
||||
if (false === $status) {
|
||||
/**
|
||||
* Regex error
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception('Internal error: local network name validation failed');
|
||||
}
|
||||
|
||||
// If the input passes as a local network name, and local network names are allowed, then the
|
||||
// hostname passes validation
|
||||
$allowLocal = $this->_allow & self::ALLOW_LOCAL;
|
||||
if ($status && $allowLocal) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// If the input does not pass as a local network name, add a message
|
||||
if (!$status) {
|
||||
$this->_error(self::INVALID_LOCAL_NAME);
|
||||
}
|
||||
|
||||
// If local network names are not allowed, add a message
|
||||
if ($status && !$allowLocal) {
|
||||
$this->_error(self::LOCAL_NAME_NOT_ALLOWED);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an exception if a regex for $type does not exist
|
||||
*
|
||||
* @param string $type
|
||||
* @throws Zend_Validate_Exception
|
||||
* @return Zend_Validate_Hostname Provides a fluent interface
|
||||
*/
|
||||
/*
|
||||
protected function _checkRegexType($type)
|
||||
{
|
||||
if (!isset($this->_regex[$type])) {
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("'$type' must be one of ('" . implode(', ', array_keys($this->_regex))
|
||||
. "')");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
50
libs/Zend/Validate/Hostname/At.php
Normal file
50
libs/Zend/Validate/Hostname/At.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: At.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_At implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see http://www.nic.at/en/service/technical_information/idn/charset_converter/ Austria (.AT)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00EO}-\x{00F6}\x{00F8}-\x{00FF}\x{0153}\x{0161}\x{017E}';
|
||||
}
|
||||
|
||||
}
|
50
libs/Zend/Validate/Hostname/Ch.php
Normal file
50
libs/Zend/Validate/Hostname/Ch.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Ch.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_Ch implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1 Switzerland (.CH)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00EO}-\x{00F6}\x{00F8}-\x{00FF}\x{0153}';
|
||||
}
|
||||
|
||||
}
|
58
libs/Zend/Validate/Hostname/De.php
Normal file
58
libs/Zend/Validate/Hostname/De.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: De.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_De implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see http://www.denic.de/en/domains/idns/liste.html Germany (.DE) alllowed characters
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00E1}\x{00E0}\x{0103}\x{00E2}\x{00E5}\x{00E4}\x{00E3}\x{0105}\x{0101}\x{00E6}\x{0107}' .
|
||||
'\x{0109}\x{010D}\x{010B}\x{00E7}\x{010F}\x{0111}\x{00E9}\x{00E8}\x{0115}\x{00EA}\x{011B}' .
|
||||
'\x{00EB}\x{0117}\x{0119}\x{0113}\x{011F}\x{011D}\x{0121}\x{0123}\x{0125}\x{0127}\x{00ED}' .
|
||||
'\x{00EC}\x{012D}\x{00EE}\x{00EF}\x{0129}\x{012F}\x{012B}\x{0131}\x{0135}\x{0137}\x{013A}' .
|
||||
'\x{013E}\x{013C}\x{0142}\x{0144}\x{0148}\x{00F1}\x{0146}\x{014B}\x{00F3}\x{00F2}\x{014F}' .
|
||||
'\x{00F4}\x{00F6}\x{0151}\x{00F5}\x{00F8}\x{014D}\x{0153}\x{0138}\x{0155}\x{0159}\x{0157}' .
|
||||
'\x{015B}\x{015D}\x{0161}\x{015F}\x{0165}\x{0163}\x{0167}\x{00FA}\x{00F9}\x{016D}\x{00FB}' .
|
||||
'\x{016F}\x{00FC}\x{0171}\x{0169}\x{0173}\x{016B}\x{0175}\x{00FD}\x{0177}\x{00FF}\x{017A}' .
|
||||
'\x{017E}\x{017C}\x{00F0}\x{00FE}';
|
||||
}
|
||||
|
||||
}
|
50
libs/Zend/Validate/Hostname/Fi.php
Normal file
50
libs/Zend/Validate/Hostname/Fi.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Fi.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_Fi implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see http://www.ficora.fi/en/index/palvelut/fiverkkotunnukset/aakkostenkaytto.html Finland (.FI)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00E5}\x{00E4}\x{00F6}';
|
||||
}
|
||||
|
||||
}
|
50
libs/Zend/Validate/Hostname/Hu.php
Normal file
50
libs/Zend/Validate/Hostname/Hu.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Hu.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_Hu implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see http://www.domain.hu/domain/English/szabalyzat.html Hungary (.HU)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00E1}\x{00E9}\x{00ED}\x{00F3}\x{00F6}\x{0151}\x{00FA}\x{00FC}\x{0171}';
|
||||
}
|
||||
|
||||
}
|
52
libs/Zend/Validate/Hostname/Interface.php
Normal file
52
libs/Zend/Validate/Hostname/Interface.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* UTF-8 characters should be written as four character hex codes \x{XXXX}
|
||||
* For example é (lowercase e with acute) is represented by the hex code \x{00E9}
|
||||
*
|
||||
* You only need to include lower-case equivalents of characters since the hostname
|
||||
* check is case-insensitive
|
||||
*
|
||||
* Please document the supported TLDs in the documentation file at:
|
||||
* manual/en/module_specs/Zend_Validate-Hostname.xml
|
||||
*
|
||||
* @see http://en.wikipedia.org/wiki/Internationalized_domain_name
|
||||
* @see http://www.iana.org/cctld/ Country-Code Top-Level Domains (TLDs)
|
||||
* @see http://www.columbia.edu/kermit/utf8-t1.html UTF-8 characters
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters();
|
||||
|
||||
}
|
50
libs/Zend/Validate/Hostname/Li.php
Normal file
50
libs/Zend/Validate/Hostname/Li.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Li.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_Li implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1 Liechtenstein (.LI)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00EO}-\x{00F6}\x{00F8}-\x{00FF}\x{0153}';
|
||||
}
|
||||
|
||||
}
|
52
libs/Zend/Validate/Hostname/No.php
Normal file
52
libs/Zend/Validate/Hostname/No.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: No.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_No implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html Norway (.NO)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x00E1\x00E0\x00E4\x010D\x00E7\x0111\x00E9\x00E8\x00EA\x\x014B' .
|
||||
'\x0144\x00F1\x00F3\x00F2\x00F4\x00F6\x0161\x0167\x00FC\x017E\x00E6' .
|
||||
'\x00F8\x00E5';
|
||||
}
|
||||
|
||||
}
|
50
libs/Zend/Validate/Hostname/Se.php
Normal file
50
libs/Zend/Validate/Hostname/Se.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Se.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Hostname_Interface
|
||||
*/
|
||||
require_once 'Zend/Validate/Hostname/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Hostname_Se implements Zend_Validate_Hostname_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
|
||||
*
|
||||
* @see http://www.iis.se/english/IDN_campaignsite.shtml?lang=en Sweden (.SE)
|
||||
* @return string
|
||||
*/
|
||||
static function getCharacters()
|
||||
{
|
||||
return '\x{00E5}\x{00E4}\x{00F6}\x{00FC}\x{00E9}';
|
||||
}
|
||||
|
||||
}
|
117
libs/Zend/Validate/Identical.php
Normal file
117
libs/Zend/Validate/Identical.php
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Identical.php 8118 2008-02-18 16:10:32Z matthew $
|
||||
*/
|
||||
|
||||
/** Zend_Validate_Abstract */
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Identical extends Zend_Validate_Abstract
|
||||
{
|
||||
/**#@+
|
||||
* Error codes
|
||||
* @const string
|
||||
*/
|
||||
const NOT_SAME = 'notSame';
|
||||
const MISSING_TOKEN = 'missingToken';
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Error messages
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_SAME => 'Tokens do not match',
|
||||
self::MISSING_TOKEN => 'No token was provided to match against',
|
||||
);
|
||||
|
||||
/**
|
||||
* Original token against which to validate
|
||||
* @var string
|
||||
*/
|
||||
protected $_token;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string $token
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($token = null)
|
||||
{
|
||||
if (null !== $token) {
|
||||
$this->setToken($token);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set token against which to compare
|
||||
*
|
||||
* @param string $token
|
||||
* @return Zend_Validate_Identical
|
||||
*/
|
||||
public function setToken($token)
|
||||
{
|
||||
$this->_token = (string) $token;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve token
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getToken()
|
||||
{
|
||||
return $this->_token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if a token has been set and the provided value
|
||||
* matches that token.
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue($value);
|
||||
$token = $this->getToken();
|
||||
|
||||
if (empty($token)) {
|
||||
$this->_error(self::MISSING_TOKEN);
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($value !== $token) {
|
||||
$this->_error(self::NOT_SAME);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
138
libs/Zend/Validate/InArray.php
Normal file
138
libs/Zend/Validate/InArray.php
Normal file
@ -0,0 +1,138 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: InArray.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_InArray extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const NOT_IN_ARRAY = 'notInArray';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_IN_ARRAY => "'%value%' was not found in the haystack"
|
||||
);
|
||||
|
||||
/**
|
||||
* Haystack of possible values
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_haystack;
|
||||
|
||||
/**
|
||||
* Whether a strict in_array() invocation is used
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_strict;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param array $haystack
|
||||
* @param boolean $strict
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $haystack, $strict = false)
|
||||
{
|
||||
$this->setHaystack($haystack)
|
||||
->setStrict($strict);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the haystack option
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getHaystack()
|
||||
{
|
||||
return $this->_haystack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the haystack option
|
||||
*
|
||||
* @param mixed $haystack
|
||||
* @return Zend_Validate_InArray Provides a fluent interface
|
||||
*/
|
||||
public function setHaystack(array $haystack)
|
||||
{
|
||||
$this->_haystack = $haystack;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the strict option
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getStrict()
|
||||
{
|
||||
return $this->_strict;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the strict option
|
||||
*
|
||||
* @param boolean $strict
|
||||
* @return Zend_Validate_InArray Provides a fluent interface
|
||||
*/
|
||||
public function setStrict($strict)
|
||||
{
|
||||
$this->_strict = $strict;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is contained in the haystack option. If the strict
|
||||
* option is true, then the type of $value is also checked.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue($value);
|
||||
if (!in_array($value, $this->_haystack, $this->_strict)) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
73
libs/Zend/Validate/Int.php
Normal file
73
libs/Zend/Validate/Int.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Int.php 12336 2008-11-06 19:11:46Z thomas $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Int extends Zend_Validate_Abstract
|
||||
{
|
||||
const NOT_INT = 'notInt';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_INT => "'%value%' does not appear to be an integer"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is a valid integer
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
$this->_setValue($valueString);
|
||||
if (is_bool($value)) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
$locale = localeconv();
|
||||
$valueFiltered = str_replace($locale['decimal_point'], '.', $valueString);
|
||||
$valueFiltered = str_replace($locale['thousands_sep'], '', $valueFiltered);
|
||||
|
||||
if (strval(intval($valueFiltered)) != $valueFiltered) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
71
libs/Zend/Validate/Interface.php
Normal file
71
libs/Zend/Validate/Interface.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Validate_Interface
|
||||
{
|
||||
/**
|
||||
* Returns true if and only if $value meets the validation requirements
|
||||
*
|
||||
* If $value fails validation, then this method returns false, and
|
||||
* getMessages() will return an array of messages that explain why the
|
||||
* validation failed.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return boolean
|
||||
* @throws Zend_Valid_Exception If validation of $value is impossible
|
||||
*/
|
||||
public function isValid($value);
|
||||
|
||||
/**
|
||||
* Returns an array of messages that explain why the most recent isValid()
|
||||
* call returned false. The array keys are validation failure message identifiers,
|
||||
* and the array values are the corresponding human-readable message strings.
|
||||
*
|
||||
* If isValid() was never called or if the most recent isValid() call
|
||||
* returned true, then this method returns an empty array.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMessages();
|
||||
|
||||
/**
|
||||
* Returns an array of message codes that explain why a previous isValid() call
|
||||
* returned false.
|
||||
*
|
||||
* If isValid() was never called or if the most recent isValid() call
|
||||
* returned true, then this method returns an empty array.
|
||||
*
|
||||
* This is now the same as calling array_keys() on the return value from getMessages().
|
||||
*
|
||||
* @return array
|
||||
* @deprecated Since 1.5.0
|
||||
*/
|
||||
public function getErrors();
|
||||
|
||||
}
|
66
libs/Zend/Validate/Ip.php
Normal file
66
libs/Zend/Validate/Ip.php
Normal file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Ip.php 12340 2008-11-06 19:49:42Z thomas $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Ip extends Zend_Validate_Abstract
|
||||
{
|
||||
const NOT_IP_ADDRESS = 'notIpAddress';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_IP_ADDRESS => "'%value%' does not appear to be a valid IP address"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is a valid IP address
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
if ((ip2long($valueString) === false) || (long2ip(ip2long($valueString)) !== $valueString)) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
113
libs/Zend/Validate/LessThan.php
Normal file
113
libs/Zend/Validate/LessThan.php
Normal file
@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: LessThan.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_LessThan extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const NOT_LESS = 'notLessThan';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_LESS => "'%value%' is not less than '%max%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'max' => '_max'
|
||||
);
|
||||
|
||||
/**
|
||||
* Maximum value
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_max;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param mixed $max
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($max)
|
||||
{
|
||||
$this->setMax($max);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the max option
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMax()
|
||||
{
|
||||
return $this->_max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the max option
|
||||
*
|
||||
* @param mixed $max
|
||||
* @return Zend_Validate_LessThan Provides a fluent interface
|
||||
*/
|
||||
public function setMax($max)
|
||||
{
|
||||
$this->_max = $max;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is less than max option
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue($value);
|
||||
if ($this->_max <= $value) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
74
libs/Zend/Validate/NotEmpty.php
Normal file
74
libs/Zend/Validate/NotEmpty.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: NotEmpty.php 10356 2008-07-24 15:14:56Z matthew $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_NotEmpty extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const IS_EMPTY = 'isEmpty';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::IS_EMPTY => "Value is empty, but a non-empty value is required"
|
||||
);
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value is not an empty value.
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$this->_setValue((string) $value);
|
||||
|
||||
if (is_string($value)
|
||||
&& (('' === $value)
|
||||
|| preg_match('/^\s+$/s', $value))
|
||||
) {
|
||||
$this->_error();
|
||||
return false;
|
||||
} elseif (!is_string($value) && empty($value)) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
125
libs/Zend/Validate/Regex.php
Normal file
125
libs/Zend/Validate/Regex.php
Normal file
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Regex.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_Regex extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const NOT_MATCH = 'regexNotMatch';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::NOT_MATCH => "'%value%' does not match against pattern '%pattern%'"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'pattern' => '_pattern'
|
||||
);
|
||||
|
||||
/**
|
||||
* Regular expression pattern
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_pattern;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param string $pattern
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($pattern)
|
||||
{
|
||||
$this->setPattern($pattern);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the pattern option
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPattern()
|
||||
{
|
||||
return $this->_pattern;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the pattern option
|
||||
*
|
||||
* @param string $pattern
|
||||
* @return Zend_Validate_Regex Provides a fluent interface
|
||||
*/
|
||||
public function setPattern($pattern)
|
||||
{
|
||||
$this->_pattern = (string) $pattern;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if $value matches against the pattern option
|
||||
*
|
||||
* @param string $value
|
||||
* @throws Zend_Validate_Exception if there is a fatal error in pattern matching
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
|
||||
$this->_setValue($valueString);
|
||||
|
||||
$status = @preg_match($this->_pattern, $valueString);
|
||||
if (false === $status) {
|
||||
/**
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("Internal error matching pattern '$this->_pattern' against value '$valueString'");
|
||||
}
|
||||
if (!$status) {
|
||||
$this->_error();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
180
libs/Zend/Validate/StringLength.php
Normal file
180
libs/Zend/Validate/StringLength.php
Normal file
@ -0,0 +1,180 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: StringLength.php 8064 2008-02-16 10:58:39Z thomas $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Validate_Abstract
|
||||
*/
|
||||
require_once 'Zend/Validate/Abstract.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Validate
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Validate_StringLength extends Zend_Validate_Abstract
|
||||
{
|
||||
|
||||
const TOO_SHORT = 'stringLengthTooShort';
|
||||
const TOO_LONG = 'stringLengthTooLong';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageTemplates = array(
|
||||
self::TOO_SHORT => "'%value%' is less than %min% characters long",
|
||||
self::TOO_LONG => "'%value%' is greater than %max% characters long"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_messageVariables = array(
|
||||
'min' => '_min',
|
||||
'max' => '_max'
|
||||
);
|
||||
|
||||
/**
|
||||
* Minimum length
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_min;
|
||||
|
||||
/**
|
||||
* Maximum length
|
||||
*
|
||||
* If null, there is no maximum length
|
||||
*
|
||||
* @var integer|null
|
||||
*/
|
||||
protected $_max;
|
||||
|
||||
/**
|
||||
* Sets validator options
|
||||
*
|
||||
* @param integer $min
|
||||
* @param integer $max
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($min = 0, $max = null)
|
||||
{
|
||||
$this->setMin($min);
|
||||
$this->setMax($max);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the min option
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getMin()
|
||||
{
|
||||
return $this->_min;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the min option
|
||||
*
|
||||
* @param integer $min
|
||||
* @throws Zend_Validate_Exception
|
||||
* @return Zend_Validate_StringLength Provides a fluent interface
|
||||
*/
|
||||
public function setMin($min)
|
||||
{
|
||||
if (null !== $this->_max && $min > $this->_max) {
|
||||
/**
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum length, but $min >"
|
||||
. " $this->_max");
|
||||
}
|
||||
$this->_min = max(0, (integer) $min);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the max option
|
||||
*
|
||||
* @return integer|null
|
||||
*/
|
||||
public function getMax()
|
||||
{
|
||||
return $this->_max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the max option
|
||||
*
|
||||
* @param integer|null $max
|
||||
* @throws Zend_Validate_Exception
|
||||
* @return Zend_Validate_StringLength Provides a fluent interface
|
||||
*/
|
||||
public function setMax($max)
|
||||
{
|
||||
if (null === $max) {
|
||||
$this->_max = null;
|
||||
} else if ($max < $this->_min) {
|
||||
/**
|
||||
* @see Zend_Validate_Exception
|
||||
*/
|
||||
require_once 'Zend/Validate/Exception.php';
|
||||
throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum length, but "
|
||||
. "$max < $this->_min");
|
||||
} else {
|
||||
$this->_max = (integer) $max;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Validate_Interface
|
||||
*
|
||||
* Returns true if and only if the string length of $value is at least the min option and
|
||||
* no greater than the max option (when the max option is not null).
|
||||
*
|
||||
* @param string $value
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValid($value)
|
||||
{
|
||||
$valueString = (string) $value;
|
||||
$this->_setValue($valueString);
|
||||
$length = iconv_strlen($valueString);
|
||||
if ($length < $this->_min) {
|
||||
$this->_error(self::TOO_SHORT);
|
||||
}
|
||||
if (null !== $this->_max && $this->_max < $length) {
|
||||
$this->_error(self::TOO_LONG);
|
||||
}
|
||||
if (count($this->_messages)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user