--- a/web/lib/Zend/Form/Element/Captcha.php Thu Mar 21 17:31:31 2013 +0100
+++ b/web/lib/Zend/Form/Element/Captcha.php Thu Mar 21 19:50:53 2013 +0100
@@ -15,9 +15,9 @@
* @category Zend
* @package Zend_Form
* @subpackage Element
- * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
- * @version $Id: Captcha.php 22328 2010-05-30 15:09:06Z bittarman $
+ * @version $Id: Captcha.php 24848 2012-05-31 19:28:48Z rob $
*/
/** @see Zend_Form_Element_Xhtml */
@@ -38,7 +38,7 @@
* @category Zend
* @package Zend_Form
* @subpackage Element
- * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Form_Element_Captcha extends Zend_Form_Element_Xhtml
@@ -127,24 +127,6 @@
}
/**
- * Return all attributes
- *
- * @return array
- */
- public function getAttribs()
- {
- $attribs = get_object_vars($this);
- unset($attribs['helper']);
- foreach ($attribs as $key => $value) {
- if ('_' == substr($key, 0, 1)) {
- unset($attribs[$key]);
- }
- }
-
- return $attribs;
- }
-
- /**
* Set options
*
* Overrides to allow passing captcha options
@@ -154,16 +136,22 @@
*/
public function setOptions(array $options)
{
+ $captcha = null;
+ $captchaOptions = array();
+
if (array_key_exists('captcha', $options)) {
+ $captcha = $options['captcha'];
if (array_key_exists('captchaOptions', $options)) {
- $this->setCaptcha($options['captcha'], $options['captchaOptions']);
+ $captchaOptions = $options['captchaOptions'];
unset($options['captchaOptions']);
- } else {
- $this->setCaptcha($options['captcha']);
}
unset($options['captcha']);
}
parent::setOptions($options);
+
+ if(null !== $captcha) {
+ $this->setCaptcha($captcha, $captchaOptions);
+ }
return $this;
}
@@ -178,18 +166,25 @@
$captcha = $this->getCaptcha();
$captcha->setName($this->getFullyQualifiedName());
- $decorators = $this->getDecorators();
+ if (!$this->loadDefaultDecoratorsIsDisabled()) {
+ $decorators = $this->getDecorators();
+ $decorator = $captcha->getDecorator();
+ $key = get_class($this->_getDecorator($decorator, null));
+
+ if (!empty($decorator) && !array_key_exists($key, $decorators)) {
+ array_unshift($decorators, $decorator);
+ }
- $decorator = $captcha->getDecorator();
- if (!empty($decorator)) {
- array_unshift($decorators, $decorator);
+ $decorator = array('Captcha', array('captcha' => $captcha));
+ $key = get_class($this->_getDecorator($decorator[0], $decorator[1]));
+
+ if ($captcha instanceof Zend_Captcha_Word && !array_key_exists($key, $decorators)) {
+ array_unshift($decorators, $decorator);
+ }
+
+ $this->setDecorators($decorators);
}
- $decorator = array('Captcha', array('captcha' => $captcha));
- array_unshift($decorators, $decorator);
-
- $this->setDecorators($decorators);
-
$this->setValue($this->getCaptcha()->generate());
return parent::render($view);
@@ -237,7 +232,8 @@
switch ($type) {
case null:
$loader = $this->getPluginLoader(self::CAPTCHA);
- $cPrefix = rtrim($prefix, '_') . '_Captcha';
+ $nsSeparator = (false !== strpos($prefix, '\\'))?'\\':'_';
+ $cPrefix = rtrim($prefix, $nsSeparator) . $nsSeparator . 'Captcha';
$cPath = rtrim($path, '/\\') . '/Captcha';
$loader->addPrefixPath($cPrefix, $cPath);
return parent::addPrefixPath($prefix, $path);
@@ -253,7 +249,7 @@
/**
* Load default decorators
*
- * @return void
+ * @return Zend_Form_Element_Captcha
*/
public function loadDefaultDecorators()
{