Fixes #8284: Added \yii\captcha\CaptchaAction::$imageLibrary property allowing to set image rendering library

This commit is contained in:
AnatolyRugalev
2015-11-23 12:03:00 +05:00
committed by Alexander Makarov
parent 2a1764f97a
commit 742f106ec0
2 changed files with 16 additions and 2 deletions

View File

@ -98,6 +98,11 @@ class CaptchaAction extends Action
* If not set, it means the verification code will be randomly generated.
*/
public $fixedVerifyCode;
/**
* @var string the rendering library to use. Currently supported only 'gd' and 'imagick'.
* If not set, library will be determined automatically.
*/
public $imageLibrary;
/**
@ -236,13 +241,21 @@ class CaptchaAction extends Action
* Renders the CAPTCHA image.
* @param string $code the verification code
* @return string image contents
* @throws InvalidConfigException if imageLibrary is not supported
*/
protected function renderImage($code)
{
if (Captcha::checkRequirements() === 'gd') {
return $this->renderImageByGD($code);
if (isset($this->imageLibrary)) {
$imageLibrary = $this->imageLibrary;
} else {
$imageLibrary = Captcha::checkRequirements();
}
if ($imageLibrary === 'gd') {
return $this->renderImageByGD($code);
} elseif ($imageLibrary === 'imagick') {
return $this->renderImageByImagick($code);
} else {
throw new InvalidConfigException("Defined library '{$imageLibrary}' is not supported");
}
}