class field_validation_ean_validator in Field Validation 7.2
Hierarchy
- class \field_validation_validator
Expanded class hierarchy of field_validation_ean_validator
1 string reference to 'field_validation_ean_validator'
- field_validation_ean_validator.inc in field_validation_extras/
plugins/ validator/ field_validation_ean_validator.inc
File
- field_validation_extras/
plugins/ validator/ field_validation_ean_validator.inc, line 16
View source
class field_validation_ean_validator extends field_validation_validator {
/**
* Validate field.
*/
public function validate() {
$settings = $this->rule->settings;
if ($this->value !== '' && !is_null($this->value)) {
$val = $this->value;
if (drupal_strlen($val) > 13) {
$this
->set_error();
}
else {
if (drupal_strlen($val) < 13) {
$val = str_repeat('0', drupal_strlen($val) - 13) + $val;
}
if (!$this
->attiks_ean13_valid($val)) {
$this
->set_error();
}
}
}
}
/**
* EAN validate helper function. The code way copied from http://drupal.org/node/1066936, wrote by attiks(http://drupal.org/user/105002).
*/
function attiks_ean13_valid($digits) {
$even = $digits[1] + $digits[3] + $digits[5] + $digits[7] + $digits[9] + $digits[11];
$even = $even * 3;
$odd = $digits[0] + $digits[2] + $digits[4] + $digits[6] + $digits[8] + $digits[10];
$total = $even + $odd;
$checksum = $total % 10;
if ($checksum != 0) {
$checksum = 10 - $checksum;
}
return $digits[12] == $checksum;
}
}