Files
GestioneSpiaggia.it/library/App/Form/Validators/Piva.php
T
2021-09-17 12:41:45 +02:00

71 lines
2.3 KiB
PHP

<?php
class App_Form_Validators_Piva extends Zend_Validate_Abstract
{
const PIVA_NULL='is_empty';
const PIVA_LENGHT='min_lenght';
const PIVA_MATCH='preg_match';
const PIVA_INVALID='invalid';
const PIVA_INVALID_ME='invalid_me';
const PIVA_INVALID_ZERO='invalid_zero';
protected $_messageTemplates = array(
self::PIVA_NULL=>'Valore non presente ',
self::PIVA_LENGHT=>'La lunghezza della partita iva "%value%" non &egrave corretta: la partita IVA dovrebbe essere lunga esattamente 11 caratteri',
self::PIVA_MATCH=>'La partita iva "%value%" contiene dei caratteri non ammessi: la partita IVA dovrebbe contenere solo cifre',
self::PIVA_INVALID=>'La partita iva "%value%" non &egrave; valida',
self::PIVA_INVALID_ME=>'La partita iva "%value%" non &egrave; valida: non puoi inserire la nostra p.iva',
self::PIVA_INVALID_ZERO=>'Sei sicuro che "%value%" sia la tua partita iva?',
);
public function isValid($value,$checkPivaInterna = true)
{
$this->_setValue($value);
$isValid = true;
if ($value === ''){
$this->_error(self::PIVA_NULL);
$isValid = false;
}
if(strlen($value) != 11){
$this->_error(self::PIVA_LENGHT);
$isValid = false;
}
/*Controllo personalizzato sulla propria partita iva */
if ($value === '01999590688' && $checkPivaInterna){
$this->_error(self::PIVA_INVALID_ME);
$isValid = false;
}
if ($value === '00000000000'){
$this->_error(self::PIVA_INVALID_ZERO);
$isValid = false;
}
if(preg_match("/^[0-9]+\$/", $value) != 1){
$this->_error(self::PIVA_MATCH);
$isValid = false;
}
$s = 0;
for ($i = 0; $i <= 9; $i += 2)
$s += ord($value[$i]) - ord('0');
for ($i = 1; $i <= 9; $i += 2) {
$c = 2 * (ord($value[$i]) - ord('0'));
if ($c > 9)
$c = $c - 9;
$s += $c;
}
if ((10 - $s % 10) % 10 != ord($value[10]) - ord('0')){
$this->_error(self::PIVA_INVALID);
$isValid = false;
}
return $isValid;
}
}