Added "length" option and changed the parameters names

This commit is contained in:
Gregwar 2011-09-09 20:02:47 +02:00
parent 4a5b2a4c48
commit 4e59281467
5 changed files with 26 additions and 15 deletions

View File

@ -17,14 +17,11 @@ class Configuration implements ConfigurationInterface
$rootNode = $treeBuilder->root('gregwar_captcha', 'array');
$rootNode
->addDefaultsIfNotSet()
->children()
->arrayNode('image')
->addDefaultsIfNotSet()
->children()
->scalarNode('width')->defaultValue(120)->end()
->scalarNode('height')->defaultValue(40)->end()
->end()
->end()
->scalarNode('length')->defaultValue(5)->end()
->scalarNode('width')->defaultValue(120)->end()
->scalarNode('height')->defaultValue(40)->end()
->end()
;
return $treeBuilder;

View File

@ -19,8 +19,10 @@ class GregwarCaptchaExtension extends Extension
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('gregwar_captcha.image.height', $config['image']['height']);
$container->setParameter('gregwar_captcha.image.width', $config['image']['width']);
$container->setParameter('gregwar_captcha.length', $config['length']);
$container->setParameter('gregwar_captcha.height', $config['height']);
$container->setParameter('gregwar_captcha.width', $config['width']);
$resources = $container->getParameter('twig.form.resources');
$container->setParameter('twig.form.resources',array_merge(array('GregwarCaptchaBundle::captcha.html.twig'), $resources));

View File

@ -41,7 +41,7 @@ class CaptchaGenerator {
}
// Write CAPTCHA text
$size = $width/5.0;
$size = $width/strlen($this->value);
$font = __DIR__.'/Font/captcha.ttf';
$box = imagettfbbox($size, 0, $font, $this->value);
$txt_width = $box[2] - $box[0];

View File

@ -3,6 +3,6 @@ services:
# captcha type
captcha.type:
class: Gregwar\CaptchaBundle\Type\CaptchaType
arguments: [@session, %gregwar_captcha.image.width%, %gregwar_captcha.image.height%]
arguments: [@session, %gregwar_captcha.width%, %gregwar_captcha.height%, %gregwar_captcha.length%]
tags:
- { name: form.type, alias: captcha }

View File

@ -33,6 +33,12 @@ class CaptchaType extends AbstractType
*/
protected $height;
/**
* The code length
* @var integer
*/
protected $length;
/**
* The session
* @var Symfony\Component\HttpFoundation\Session
@ -42,12 +48,12 @@ class CaptchaType extends AbstractType
private $key = 'captcha';
public function __construct(Session $session, $width, $height)
public function __construct(Session $session, $width, $height, $length)
{
$this->session = $session;
$this->width = $width;
$this->height = $height;
$this->length = $length;
}
public function buildForm(FormBuilder $builder, array $options)
@ -70,12 +76,18 @@ class CaptchaType extends AbstractType
{
if (isset($options['width'])) {
$this->width = $options['width'];
}
if (isset($options['height'])) {
$this->height = $options['height'];
}
if (isset($options['length'])) {
$this->length = $options['length'];
}
return array(
'width' => $this->width,
'height' => $this->height
'height' => $this->height,
'length' => $this->length
);
}
@ -95,7 +107,7 @@ class CaptchaType extends AbstractType
$value = '';
$chars = str_split($charset);
for ($i=0; $i<5; $i++) {
for ($i=0; $i<$this->length; $i++) {
$value.= $chars[array_rand($chars)];
}