public static function WebformSignature::isSignatureValid in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Element/WebformSignature.php \Drupal\webform\Element\WebformSignature::isSignatureValid()
Determine that signature PNG is valid.
Parameters
string $value: Upload base64 png image.
Return value
bool TRUE if signature PNG is valid.
3 calls to WebformSignature::isSignatureValid()
- WebformSignature::getImageUrl in src/
Plugin/ WebformElement/ WebformSignature.php - Get a signature element's image URL.
- WebformSignature::validateWebformSignature in src/
Element/ WebformSignature.php - Webform element validation handler for #type 'signature'.
- webform_update_8192 in includes/
webform.install.update.inc - Unsafe HMAC construction.
File
- src/
Element/ WebformSignature.php, line 107
Class
- WebformSignature
- Provides a webform element for entering a signature.
Namespace
Drupal\webform\ElementCode
public static function isSignatureValid($value) {
if (empty($value)) {
return TRUE;
}
// Make sure the signature is a png.
if (strpos($value, 'data:image/png;base64,') !== 0) {
return FALSE;
}
// Make sure signature's image size can be read.
/** @var \Drupal\Core\File\FileSystemInterface $file_system */
$file_system = \Drupal::service('file_system');
$temp_image = $file_system
->tempnam('temporary://', 'webform_signature_');
$encoded_image = explode(',', $value)[1];
$decoded_image = base64_decode($encoded_image);
file_put_contents($temp_image, $decoded_image);
$image_size = getimagesize($temp_image);
if (!$image_size) {
return FALSE;
}
// Make sure signature is not larger than a 500 kb.
if (filesize($temp_image) > 500000) {
return FALSE;
}
// Make sure the signature contains no colors.
$image = imagecreatefrompng($temp_image);
$number_of_colors = imagecolorstotal($image);
imagedestroy($image);
if ($number_of_colors > 0) {
return FALSE;
}
return TRUE;
}