_checksum = '_issn'; } else { $this->_checksum = '_gtin'; } return parent::checksum($value); } /** * Validates the checksum () * ISSN implementation (reversed mod11) * * @param string $value The barcode to validate * @return boolean */ protected function _issn($value) { $checksum = substr($value, -1, 1); $values = str_split(substr($value, 0, -1)); $check = 0; $multi = 8; foreach($values as $token) { if ($token == 'X') { $token = 10; } $check += ($token * $multi); --$multi; } $check %= 11; $check = 11 - $check; if ($check == $checksum) { return true; } else if (($check == 10) && ($checksum == 'X')) { return true; } return false; } }