* @copyright 2006-2008 by Philippe Jausions / 11abacus
* @license http://www.opensource.org/licenses/bsd-license.php New BSD
* @version CVS: $Id$
* @link http://pear.php.net/package/HTML_QuickForm_CAPTCHA
*/
/**
* Required packages
*/
require_once 'HTML/QuickForm/CAPTCHA.php';
require_once 'Text/CAPTCHA/Driver/Image.php';
/**
* Element for HTML_QuickForm to display a CAPTCHA image
*
* The HTML_QuickForm_CAPTCHA package adds an element to the
* HTML_QuickForm package to display a CAPTCHA image.
*
* Options for the element
*
* - 'width' (integer) width of the image,
* - 'height' (integer) height of the image,
* - 'imageOptions' (array) options passed to the Image_Text
* constructor,
* - 'callback' (string) URL of callback script that will generate
* and output the image itself,
* - 'alt' (string) the alt text for the image,
* - 'sessionVar' (string) name of session variable containing
* the Text_CAPTCHA instance (defaults to
* _HTML_QuickForm_CAPTCHA.)
*
*
* This package requires the use of a PHP session.
*
* @category HTML
* @package HTML_QuickForm_CAPTCHA
* @author Philippe Jausions
* @copyright 2006-2008 by Philippe Jausions / 11abacus
* @license http://www.opensource.org/licenses/bsd-license.php New BSD
* @version Release: 0.3.0
* @link http://pear.php.net/package/HTML_QuickForm_CAPTCHA
* @see Text_CAPTCHA_Driver_Image
*/
class HTML_QuickForm_CAPTCHA_Image extends HTML_QuickForm_CAPTCHA
{
/**
* Default options
*
* @var array
* @access protected
*/
var $_options = array(
'sessionVar' => '_HTML_QuickForm_CAPTCHA',
'width' => '200',
'height' => '80',
'alt' => 'Click to view another image',
'callback' => '',
'imageOptions' => null,
'phrase' => null,
);
/**
* CAPTCHA driver
*
* @var string
* @access protected
*/
var $_CAPTCHA_driver = 'Image';
/**
* Returns the HTML for the CAPTCHA image
*
* @return string
* @access public
*/
function toHtml()
{
if ($this->_flagFrozen) {
return '';
}
$result = parent::_initCAPTCHA();
if (PEAR::isError($result)) {
return $result;
}
$html = '';
$tabs = $this->_getTabs();
$inputName = $this->getName();
$imgName = 'QF_CAPTCHA_'.$inputName;
if ($this->getComment() != '') {
$html .= $tabs.'';
}
$attr = $this->_attributes;
unset($attr['type']);
unset($attr['value']);
unset($attr['name']);
$html = $tabs.'_getAttrString($attr)
.' onclick="var cancelClick = false; '
.$this->getOnclickJs($imgName)
.' return !cancelClick;">';
return $html;
}
/**
* Creates the javascript for the onclick event which will
* reload a new CAPTCHA image
*
* @param string $imageName The image name/id
*
* @return string
* @access public
*/
function getOnclickJs($imageName)
{
$onclickJs = ''
.'if (document.images) {'
.' var img = new Image();'
.' var d = new Date();'
.' img.src = this.href + ((this.href.indexOf(\'?\') == -1) '
.'? \'?\' : \'&\') + d.getTime();'
.' document.images[\''.addslashes($imageName).'\'].src = img.src;'
.' cancelClick = true;'
.'}';
return $onclickJs;
}
}
/**
* Registers the class with QuickForm
*/
if (class_exists('HTML_QuickForm')) {
HTML_QuickForm::registerElementType('CAPTCHA_Image',
'HTML/QuickForm/CAPTCHA/Image.php', 'HTML_QuickForm_CAPTCHA_Image');
}
?>