2023-03-11 12:04:29 +03:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Zend Framework (http://framework.zend.com/)
|
|
|
|
*
|
|
|
|
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
2023-04-01 09:03:34 +03:00
|
|
|
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
2023-03-11 12:04:29 +03:00
|
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Zend\Captcha;
|
|
|
|
|
|
|
|
use Traversable;
|
|
|
|
use Zend\Validator\AbstractValidator;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Base class for Captcha adapters
|
|
|
|
*
|
|
|
|
* Provides some utility functionality to build on
|
|
|
|
*/
|
|
|
|
abstract class AbstractAdapter extends AbstractValidator implements AdapterInterface
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Captcha name
|
|
|
|
*
|
|
|
|
* Useful to generate/check form fields
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $name;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Captcha options
|
|
|
|
*
|
|
|
|
* @var array
|
|
|
|
*/
|
|
|
|
protected $options = array();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Options to skip when processing options
|
|
|
|
* @var array
|
|
|
|
*/
|
|
|
|
protected $skipOptions = array(
|
|
|
|
'options',
|
|
|
|
'config',
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get name
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getName()
|
|
|
|
{
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set name
|
|
|
|
*
|
|
|
|
* @param string $name
|
|
|
|
* @return AbstractAdapter
|
|
|
|
*/
|
|
|
|
public function setName($name)
|
|
|
|
{
|
|
|
|
$this->name = $name;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set single option for the object
|
|
|
|
*
|
|
|
|
* @param string $key
|
|
|
|
* @param string $value
|
|
|
|
* @return AbstractAdapter
|
|
|
|
*/
|
|
|
|
public function setOption($key, $value)
|
|
|
|
{
|
|
|
|
if (in_array(strtolower($key), $this->skipOptions)) {
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
$method = 'set' . ucfirst($key);
|
|
|
|
if (method_exists($this, $method)) {
|
|
|
|
// Setter exists; use it
|
|
|
|
$this->$method($value);
|
|
|
|
$this->options[$key] = $value;
|
|
|
|
} elseif (property_exists($this, $key)) {
|
|
|
|
// Assume it's metadata
|
|
|
|
$this->$key = $value;
|
|
|
|
$this->options[$key] = $value;
|
|
|
|
}
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set object state from options array
|
|
|
|
*
|
|
|
|
* @param array|Traversable $options
|
|
|
|
* @throws Exception\InvalidArgumentException
|
|
|
|
* @return AbstractAdapter
|
|
|
|
*/
|
|
|
|
public function setOptions($options = array())
|
|
|
|
{
|
|
|
|
if (!is_array($options) && !$options instanceof Traversable) {
|
|
|
|
throw new Exception\InvalidArgumentException(__METHOD__ . ' expects an array or Traversable');
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($options as $key => $value) {
|
|
|
|
$this->setOption($key, $value);
|
|
|
|
}
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieve options representing object state
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function getOptions()
|
|
|
|
{
|
|
|
|
return $this->options;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get helper name used to render captcha
|
|
|
|
*
|
|
|
|
* By default, return empty string, indicating no helper needed.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getHelperName()
|
|
|
|
{
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
}
|