Recupera o resto do cálculo do segundo dígito verificador.

@author Victor Felix <victor.dreed@gmail.com>
@param $chaveAsbace
@param $primeiroDv
@return int
181770
public static function restoSegundoDvAsbace($chaveAsbace, $primeiroDv)
    {
        $peso = 8;
        $soma = 0;
        $chaveComPrimeiroDv = $chaveAsbace . $primeiroDv;

        //Separação dos números
        for ($i = 0; $i < strlen($chaveComPrimeiroDv); $i++) {
            //Isolando cada dígito
            $digito = substr($chaveComPrimeiroDv, $i, 1);

            if (2 == $peso) {
                $peso = 7;
            } else {
                $peso--;
            }

            //Efetua multiplicação do dígito pelo peso e soma os resultados
            $soma += (int) $digito * $peso;
        }

        //Retorna o resto da divisão do resultado da soma por 11
        return $soma % 11;
    }
1309062
public function validarCnpj($cnpj)
    {
        $cnpj = $this->filtrarSomenteNumeros($cnpj);

        // Valida tamanho e caracteres repetidos 00000000000000, 11111111111111, ..., 99999999999999
        if ((strlen($cnpj) != 14) || (preg_match('/(\d)\1{13}/', $cnpj))) {
            return false;
        }

        //Primeiro dígito verificador
        $soma = 0;
        $j = 5;
        for ($i = 0; $i < 12; $i++) {
            $soma += $cnpj{$i} * $j;
            $j = ($j == 2) ? 9 : $j - 1;
        }

        $resto = $soma % 11;
        if ($cnpj{12} != ($resto < 2 ? 0 : 11 - $resto)) {
            return false;
        }

        //Segundo dígito verificador
        $soma = 0;
        $j = 6;
        for ($i = 0; $i < 13; $i++) {
            $soma += $cnpj{$i} * $j;
            $j = ($j == 2) ? 9 : $j - 1;
        }

        $resto = $soma % 11;

        return $cnpj{13} == ($resto < 2 ? 0 : 11 - $resto);
    }
706285
public function afficherHistorique($idAdresse = 0)
    {
        $t=new Template('modules/archi/templates/');
        $t->set_filenames((array('historiqueAdresse'=>'historiqueAdresse.tpl')));

        $req = "
				SELECT

				hA.idHistoriqueAdresse as idHistoriqueAdresse,
				hA.date as date,
				hA.nom as nom,
				hA.numero as numero,
				r.nom as nomRue,
				sq.nom as nomSousQuartier,
				q.nom as nomQuartier,
				v.nom as nomVille,
				p.nom as nomPays,
				hA.idRue,
				hA.idSousQuartier,
				hA.idQuartier,
				hA.idVille,
				hA.idPays,
				r.prefixe as prefixeRue

				FROM historiqueAdresse hA
				LEFT JOIN rue r             ON r.idRue = hA.idRue
				LEFT JOIN sousQuartier sq   ON sq.idSousQuartier = hA.idSousQuartier
				LEFT JOIN quartier q        ON q.idQuartier = hA.idQuartier
				LEFT JOIN ville v           ON v.idVille = hA.idVille
				LEFT JOIN pays p            ON p.idPays = hA.idPays
				WHERE idAdresse='".$idAdresse."'
						order by date DESC
						";

        $res=$this->connexionBdd->requete($req);

        while ($fetch = mysql_fetch_array($res)) {
            $date = $this->date->toFrench($fetch['date']);
            $t->assign_block_vars('histoAdresse', array(
                    'date'=> $date,
                    'nom'=>$fetch['nom'],
                    'coordonnees'=>$this->getAdresseToDisplay($fetch)));
        }

        ob_start();
        $t->pparse('historiqueAdresse');
        $html=ob_get_contents();
        ob_end_clean();

        return $html;
    }
492603
private static function countSignificativeDigits(Decimal $val, Decimal $abs): int
    {
        return \strlen($val->value) - (
            ($abs->comp(DecimalConstants::One()) === -1) ? 2 : \max($val->scale, 1)
        ) - ($val->isNegative() ? 1 : 0);
    }
333404
public static function cnpj(string $cnpj): bool
    {
        $cnpj = preg_replace('/[^0-9]/', '', (string)$cnpj);

        // Valida tamanho
        if (strlen($cnpj) != 14)
            return false;

        // Valida primeiro dígito verificador
        for ($i = 0, $j = 5, $soma = 0; $i < 12; $i++) {
            $soma += $cnpj{$i} * $j;
            $j = ($j == 2) ? 9 : $j - 1;
        }
        $resto = $soma % 11;
        if ($cnpj{12} != ($resto < 2 ? 0 : 11 - $resto))
            return false;

        // Valida segundo dígito verificador
        for ($i = 0, $j = 6, $soma = 0; $i < 13; $i++) {
            $soma += $cnpj{$i} * $j;
            $j = ($j == 2) ? 9 : $j - 1;
        }
        $resto = $soma % 11;
        return $cnpj{13} == ($resto < 2 ? 0 : 11 - $resto);
    }
713389
public static function countDependencies($locale) {
		$locale = PropelL10n::normalize($locale);
		$count = 0;
		
		while (isset(self::$dependencies[$locale])) {
			$locale = self::$dependencies[$locale];
			$count++;
		}
		
		return $count;
	}
988982
public function count(array $locales = null,  array $filters = null)
    {
        $this->loadCustomHydrator();

        $builder = $this->createQueryBuilder('tu')
            ->select('COUNT(DISTINCT tu.id) AS number');

        $this->addTransUnitFilters($builder, $filters);
        $this->addTranslationFilter($builder, $locales, $filters);

        return (int) $builder->getQuery()->getResult(Query::HYDRATE_SINGLE_SCALAR);
    }
162383
public function count($field = '*', $isMulti = false, $useMaster = false)
    {
        $cmd = [
            'count' => $this->getRealTableName(key($this->table)),
            'query' => $this->sql['where']
        ];

        $count = $this->runMongoCommand($cmd, $useMaster);
        return intval($count[0]['n']);
    }
35040
public static function IPTE2Variveis($ipte)
    {
        $barras = self::IPTE2CodigoBarras($ipte);

        $variaveis = [
            'barras' => $barras,
            'banco' => substr($barras, 0, 3),
            'moeda' => substr($barras, 3, 1),
            'dv' => substr($barras, 4, 1),
            'fator_vencimento' => substr($barras, 5, 4),
            'vencimento' => self::fatorVencimentoBack(substr($barras, 5, 4), false),
            'valor' => ((float) substr($barras, 9, 10)) / 100,
            'campo_livre' => substr($barras, -25),
        ];
        $class = __NAMESPACE__ . '\\Boleto\\' . self::getBancoClass($variaveis['banco']);
        if (method_exists($class, 'parseCampoLivre')) {
            $variaveis['campo_livre_parsed'] = $class::parseCampoLivre($variaveis['campo_livre']);
        } else {
            $variaveis['campo_livre_parsed'] = false;
        }

        return $variaveis;
    }
272503
public function convertIpToNumber($ipGiven)
    {
        if (filter_var($ipGiven, FILTER_VALIDATE_IP)) {
            if (filter_var($ipGiven, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
                $ips = explode('.', $ipGiven);
                return $ips[3] + $ips[2] * 256 + $ips[1] * 65536 + $ips[0] * 16777216;
            } elseif (filter_var($ipGiven, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
                return $this->convertIpV6ToNumber($ipGiven);
            }
        }
        return 'invalid IP';
    }
530058
protected function zValidCerts($pubKey)
    {
        if (! $data = openssl_x509_read($pubKey)) {
            //o dado não é uma chave válida
            $this->zRemovePemFiles();
            $this->zLeaveParam();
            $this->error = 'A chave passada está corrompida ou não é uma chave. Obtenha s chaves corretas!!';

            return false;
        }
        $certData = openssl_x509_parse($data);
        // reformata a data de validade;
        $ano = substr($certData['validTo'], 0, 2);
        $mes = substr($certData['validTo'], 2, 2);
        $dia = substr($certData['validTo'], 4, 2);
        //obtem o timestamp da data de validade do certificado
        $dValid = gmmktime(0, 0, 0, $mes, $dia, $ano);
        // obtem o timestamp da data de hoje
        $dHoje = gmmktime(0, 0, 0, date('m'), date('d'), date('Y'));
        // compara a data de validade com a data atual
        $this->expireTimestamp = $dValid;
        if ($dHoje > $dValid) {
            $this->zRemovePemFiles();
            $this->zLeaveParam();
            $msg = "Data de validade vencida! [Valido até $dia/$mes/$ano]";
            $this->error = $msg;

            return false;
        }

        return true;
    }
956201
public static function atualizarLinhaDigitavel($linha, Carbon $vencto, $valor)
    {
        $inicio = substr($linha, 0, 32);

        $vencto = str_pad(self::fatorVencimento($vencto), 4, '0', STR_PAD_LEFT); // Novo fator de vencimento
        $valor = str_pad(self::fatorValor($valor), 10, '0', STR_PAD_LEFT); // Valor atualizado

        // Montar nova barra para calcular o novo dígito
        $barra = substr($linha, 0, 4)
            //. substr($linha, 32,  1)
            . $vencto . $valor
            . substr($linha, 4, 5)
            . substr($linha, 10, 10)
            . substr($linha, 21, 10);

        $digito = self::modulo11($barra);

        return sprintf('%s%s%s%s', $inicio, $digito, $vencto, $valor);
    }
1019956
public static function primeiroDvAsbace($chaveAsbace)
    {
        $peso = 1;
        $soma = 0;

        //Separação dos números
        for ($i = 0; $i < strlen($chaveAsbace); $i++) {
            //Isolando cada dígito
            $digito = substr($chaveAsbace, $i, 1);

            if (2 == $peso) {
                $peso--;
            } else {
                $peso++;
            }

            //Efetua multiplicação do dígito pelo peso
            $produto = (int) $digito * $peso;

            //Se o resultado da multiplicação for maior que 9
            //o produto recebe o da subtração dele mesmo menos 9.
            //Caso contrário, o produto continua com o valor
            //do resultado da multiplicação.
            $produto = 9 < $produto ? $produto - 9 : $produto;

            //Realiza a soma de todos os produtos
            $soma += $produto;
        }

        //Recupera o resto da divisão do resultado da soma por 10
        $resto = $soma % 10;

        return $resto == 0 ? 0 : 10 - $resto;
    }
263264
public function getCountForNextPage($iPage, $iCount)
    {
        if ($iCount < 1) {
            return 0;
        }

        $iPage = (int) trim($iPage);

        //Check page value
        if ($iPage < 1) {
            $iPage = 1;
        }

        //Get max page value
        $iMaxPage = $this->getMaxPage($iCount);
        if ($iMaxPage <= $iPage) {
            return 0;
        }

        $iNextCount = $iCount - $this->iElementOnPage * $iPage;
        if ($iNextCount > $this->iElementOnPage) {
            $iNextCount = $this->iElementOnPage;
        }

        return $iNextCount;
    }
426810
private function calcularDvNossoNumero($nossoNumero)
    {
        $referencia = '3197';
        $indice = 0;
        $soma = 0;

        for ($i = 0; $i < strlen($nossoNumero); $i++) {
            $soma += $nossoNumero[$i] * $referencia[$indice];
            $indice++;
            $indice = $indice > 3 ? 0 : $indice;
        }

        $resto = $soma % 11;

        return $resto > 1 ? 11 - $resto : 0;
    }
616353
public function numeroFormatoBrParaSql($numero)
    {
        //Retira espaços
        $numero = trim($numero);

        //Retira separador de milhar com o ponto
        $numero = str_replace(".", "", $numero);

        //Substitui separador de decimal de virgula para ponto
        $numero = str_replace(",", ".", $numero);

        if (!is_numeric($numero)) {
            return false;
        }

        return $numero;
    }
408510
private function ___property($name)
    {
        $meta = self::$schema->getPropertyEntryByIdentifier($name, 'alias');

        $meta = is_array($meta) ? $meta[0] : $meta;

        if (!$meta) {

            if (!Types::$TYPE_STRICT) {
                return false;
            }

            throw new Exception("Tentativa de acesso a propridade [ {$name} ] não definida no schema", 400);
        }

        return !empty($meta->getComposition()) ? $meta : $meta->getProperty();
    }