71 lines
2.3 KiB
PHP
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 è 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 è valida',
|
|
self::PIVA_INVALID_ME=>'La partita iva "%value%" non è 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;
|
|
}
|
|
}
|