<?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Validator; use Zend\ServiceManager\AbstractPluginManager; use Zend\ServiceManager\ConfigInterface; class ValidatorPluginManager extends AbstractPluginManager { /** * Default set of validators * * @var array */ protected $invokableClasses = array( 'alnum' => 'Zend\I18n\Validator\Alnum', 'alpha' => 'Zend\I18n\Validator\Alpha', 'barcodecode25interleaved' => 'Zend\Validator\Barcode\Code25interleaved', 'barcodecode25' => 'Zend\Validator\Barcode\Code25', 'barcodecode39ext' => 'Zend\Validator\Barcode\Code39ext', 'barcodecode39' => 'Zend\Validator\Barcode\Code39', 'barcodecode93ext' => 'Zend\Validator\Barcode\Code93ext', 'barcodecode93' => 'Zend\Validator\Barcode\Code93', 'barcodeean12' => 'Zend\Validator\Barcode\Ean12', 'barcodeean13' => 'Zend\Validator\Barcode\Ean13', 'barcodeean14' => 'Zend\Validator\Barcode\Ean14', 'barcodeean18' => 'Zend\Validator\Barcode\Ean18', 'barcodeean2' => 'Zend\Validator\Barcode\Ean2', 'barcodeean5' => 'Zend\Validator\Barcode\Ean5', 'barcodeean8' => 'Zend\Validator\Barcode\Ean8', 'barcodegtin12' => 'Zend\Validator\Barcode\Gtin12', 'barcodegtin13' => 'Zend\Validator\Barcode\Gtin13', 'barcodegtin14' => 'Zend\Validator\Barcode\Gtin14', 'barcodeidentcode' => 'Zend\Validator\Barcode\Identcode', 'barcodeintelligentmail' => 'Zend\Validator\Barcode\Intelligentmail', 'barcodeissn' => 'Zend\Validator\Barcode\Issn', 'barcodeitf14' => 'Zend\Validator\Barcode\Itf14', 'barcodeleitcode' => 'Zend\Validator\Barcode\Leitcode', 'barcodeplanet' => 'Zend\Validator\Barcode\Planet', 'barcodepostnet' => 'Zend\Validator\Barcode\Postnet', 'barcoderoyalmail' => 'Zend\Validator\Barcode\Royalmail', 'barcodesscc' => 'Zend\Validator\Barcode\Sscc', 'barcodeupca' => 'Zend\Validator\Barcode\Upca', 'barcodeupce' => 'Zend\Validator\Barcode\Upce', 'barcode' => 'Zend\Validator\Barcode', 'between' => 'Zend\Validator\Between', 'callback' => 'Zend\Validator\Callback', 'creditcard' => 'Zend\Validator\CreditCard', 'csrf' => 'Zend\Validator\Csrf', 'date' => 'Zend\Validator\Date', 'datestep' => 'Zend\Validator\DateStep', 'datetime' => 'Zend\I18n\Validator\DateTime', 'dbnorecordexists' => 'Zend\Validator\Db\NoRecordExists', 'dbrecordexists' => 'Zend\Validator\Db\RecordExists', 'digits' => 'Zend\Validator\Digits', 'emailaddress' => 'Zend\Validator\EmailAddress', 'explode' => 'Zend\Validator\Explode', 'filecount' => 'Zend\Validator\File\Count', 'filecrc32' => 'Zend\Validator\File\Crc32', 'fileexcludeextension' => 'Zend\Validator\File\ExcludeExtension', 'fileexcludemimetype' => 'Zend\Validator\File\ExcludeMimeType', 'fileexists' => 'Zend\Validator\File\Exists', 'fileextension' => 'Zend\Validator\File\Extension', 'filefilessize' => 'Zend\Validator\File\FilesSize', 'filehash' => 'Zend\Validator\File\Hash', 'fileimagesize' => 'Zend\Validator\File\ImageSize', 'fileiscompressed' => 'Zend\Validator\File\IsCompressed', 'fileisimage' => 'Zend\Validator\File\IsImage', 'filemd5' => 'Zend\Validator\File\Md5', 'filemimetype' => 'Zend\Validator\File\MimeType', 'filenotexists' => 'Zend\Validator\File\NotExists', 'filesha1' => 'Zend\Validator\File\Sha1', 'filesize' => 'Zend\Validator\File\Size', 'fileupload' => 'Zend\Validator\File\Upload', 'fileuploadfile' => 'Zend\Validator\File\UploadFile', 'filewordcount' => 'Zend\Validator\File\WordCount', 'float' => 'Zend\I18n\Validator\Float', 'greaterthan' => 'Zend\Validator\GreaterThan', 'hex' => 'Zend\Validator\Hex', 'hostname' => 'Zend\Validator\Hostname', 'iban' => 'Zend\Validator\Iban', 'identical' => 'Zend\Validator\Identical', 'inarray' => 'Zend\Validator\InArray', 'int' => 'Zend\I18n\Validator\Int', 'ip' => 'Zend\Validator\Ip', 'isbn' => 'Zend\Validator\Isbn', 'isinstanceof' => 'Zend\Validator\IsInstanceOf', 'lessthan' => 'Zend\Validator\LessThan', 'notempty' => 'Zend\Validator\NotEmpty', 'phonenumber' => 'Zend\I18n\Validator\PhoneNumber', 'postcode' => 'Zend\I18n\Validator\PostCode', 'regex' => 'Zend\Validator\Regex', 'sitemapchangefreq' => 'Zend\Validator\Sitemap\Changefreq', 'sitemaplastmod' => 'Zend\Validator\Sitemap\Lastmod', 'sitemaploc' => 'Zend\Validator\Sitemap\Loc', 'sitemappriority' => 'Zend\Validator\Sitemap\Priority', 'stringlength' => 'Zend\Validator\StringLength', 'step' => 'Zend\Validator\Step', 'uri' => 'Zend\Validator\Uri', ); /** * Whether or not to share by default; default to false * * @var bool */ protected $shareByDefault = false; /** * Constructor * * After invoking parent constructor, add an initializer to inject the * attached translator, if any, to the currently requested helper. * * @param null|ConfigInterface $configuration */ public function __construct(ConfigInterface $configuration = null) { parent::__construct($configuration); $this->addInitializer(array($this, 'injectTranslator')); $this->addInitializer(array($this, 'injectValidatorPluginManager')); } /** * Inject a validator instance with the registered translator * * @param ValidatorInterface $validator * @return void */ public function injectTranslator($validator) { if ($validator instanceof Translator\TranslatorAwareInterface) { $locator = $this->getServiceLocator(); if ($locator && $locator->has('MvcTranslator')) { $validator->setTranslator($locator->get('MvcTranslator')); } } } /** * Inject a validator plugin manager * * @param $validator * @return void */ public function injectValidatorPluginManager($validator) { if ($validator instanceof ValidatorPluginManagerAwareInterface) { $validator->setValidatorPluginManager($this); } } /** * Validate the plugin * * Checks that the validator loaded is an instance of ValidatorInterface. * * @param mixed $plugin * @return void * @throws Exception\RuntimeException if invalid */ public function validatePlugin($plugin) { if ($plugin instanceof ValidatorInterface) { // we're okay return; } throw new Exception\RuntimeException(sprintf( 'Plugin of type %s is invalid; must implement %s\ValidatorInterface', (is_object($plugin) ? get_class($plugin) : gettype($plugin)), __NAMESPACE__ )); } }