<?php

class Agro_Validate_CpfCnpj extends Zend_Validate_Abstract {
    const INVALID_CPF     = 'cpfInvalid';
    const INVALID_CNPJ    = 'cnpjInvalid';
    
    protected $_messageTemplates = array(
        self::INVALID_CPF    => "O CPF digitado não é um CPF válido.",
        self::INVALID_CNPJ   => "O CNPJ digitado não é um CNPJ válido.",
	);
	    
    public function isValid($value) {
		try {
			if (!Agro_Validate_CpfCnpjValidate::isValid($value)) {
				throw new Exception("Inválido");
			}
			
		} catch (\Throwable $th) {

			$cpfNorm = Agro_Validate_Cpf::normalize($value);
			$msg = preg_match('/^\d{11}$/', $cpfNorm) ? self::INVALID_CPF : self::INVALID_CNPJ;
			$this->_error($msg);
			return false;
		}

		return true;
    }
}
