/*
|--------------------------------------------------------------------------
| 041 - Banrisul
|--------------------------------------------------------------------------
974885
public static function banrisulAgencia($agencia)
    {
        $newDv1 = $dv1 = Util::modulo10($agencia);
        $dv2 = Util::modulo11($agencia . $dv1, 2, 7);

        if ($dv2 == 1 && $dv1 != 9) {
            $newDv1 = 1;
        }
        if ($dv2 == 1 && $dv1 == 9) {
            $newDv1 = 0;
        }

        if ($dv1 != $newDv1) {
            $dv1 = $newDv1;
            $dv2 = Util::modulo11($agencia . $dv1, 2, 7);
        }

        return $dv1.$dv2;
    }
647157
public function getAnyPhoneNumber()
    {
        $phoneNo    = null;
        $numbersRaw = $this->getFlexiData($this->getApiURL(),
            ['detail' => 'custom:id,mobil,tel,kontakty(primarni,mobil,tel)', 'relations' => 'kontakty']);
        if (is_array($numbersRaw) && !empty($numbersRaw[0])) {
            $numbers = $numbersRaw[0];
            if (array_key_exists('mobil', $numbers) && strlen(trim($numbers['mobil']))) {
                $phoneNo = $numbers['mobil'];
            }
            if (array_key_exists('tel', $numbers) && strlen(trim($numbers['tel']))) {
                $phoneNo = $numbers['tel'];
            }
            if (array_key_exists('kontakty', $numbers) && !empty($numbers['kontakty'])) {
                foreach ($numbers['kontakty'] as $kontakt) {
                    if ($kontakt['primarni'] == 'true') {
                        
                    }
                    if (strlen(trim($kontakt['mobil']))) {
                        $phoneNo = $kontakt['mobil'];
                        break;
                    } elseif (strlen(trim($kontakt['mobil']))) {
                        $phoneNo = $kontakt['mobil'];
                        break;
                    }
                }
            }
        }
        return $phoneNo;
    }
766136
public function _uri() {
        //处理requestUri
        $requestUri = '/';

        if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
            $requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
        }
        elseif (
            // IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
            isset($_SERVER['IIS_WasUrlRewritten'])
            && $_SERVER['IIS_WasUrlRewritten'] == '1'
            && isset($_SERVER['UNENCODED_URL'])
            && $_SERVER['UNENCODED_URL'] != ''
        ) {
            $requestUri = $_SERVER['UNENCODED_URL'];
        }
        elseif (isset($_SERVER['REQUEST_URI'])) {
            $requestUri = $_SERVER['REQUEST_URI'];
            $parts = @parse_url($requestUri);

            if (isset($_SERVER['HTTP_HOST']) && strstr($requestUri, $_SERVER['HTTP_HOST'])) {
                if (false !== $parts) {
                    $requestUri = (empty($parts['path']) ? '' : $parts['path'])
                        . ((empty($parts['query'])) ? '' : '?' . $parts['query']);
                }
            }
            elseif (!empty($_SERVER['QUERY_STRING']) && empty($parts['query'])) {
                // fix query missing
                $requestUri .= '?' . $_SERVER['QUERY_STRING'];
            }
        }
        elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
            $requestUri = $_SERVER['ORIG_PATH_INFO'];
            if (!empty($_SERVER['QUERY_STRING'])) {
                $requestUri .= '?' . $_SERVER['QUERY_STRING'];
            }
        }

        return $requestUri;
    }
47492
public function getCodigoNome()
    {
        $codigo = (int) $this->getCodigo();

        $table = array(
             2 => 'Entrada Confirmada',
             3 => 'Entrada Rejeitada',
             4 => 'Transferência de Carteira/Entrada',
             5 => 'Transferência de Carteira/Baixa',
             6 => 'Liquidação',
             9 => 'Baixa',
            12 => 'Confirmação Recebimento Instrução de Abatimento',
            13 => 'Confirmação Recebimento Instrução de Cancelamento Abatimento',
            14 => 'Confirmação Recebimento Instrução Alteração de Vencimento',
            17 => 'Liquidação Após Baixa ou Liquidação Título Não Registrado',
            19 => 'Confirmação Recebimento Instrução de Protesto',
            20 => 'Confirmação Recebimento Instrução de Sustação/Cancelamento de Protesto',
            23 => 'Remessa a Cartório (Aponte em Cartório)',
            24 => 'Retirada de Cartório e Manutenção em Carteira',
            25 => 'Protestado e Baixado (Baixa por Ter Sido Protestado)',
            26 => 'Instrução Rejeitada',
            27 => 'Confirmação do Pedido de Alteração de Outros Dados',
            28 => 'Débito de Tarifas/Custas',
            30 => 'Alteração de Dados Rejeitada',
            36 => 'Confirmação de envio de e-mail/SMS',
            37 => 'Envio de e-mail/SMS rejeitado',
            43 => 'Estorno de Protesto/Sustação',
            44 => 'Estorno de Baixa/Liquidação',
            45 => 'Alteração de dados',
            51 => 'Título DDA reconhecido pelo sacado',
            52 => 'Título DDA não reconhecido pelo sacado',
            53 => 'Título DDA recusado pela CIP',
        );

        if (array_key_exists($codigo, $table)) {
            return $table[$codigo];
        } else {
            return 'Desconhecido';
        }
    }
607445
private function produceNTag()
    {
        $ponteiro = -1;
        $content = $this->getContent();

        //Loop de varredura para o arquivo HTML
        while ($ret = $this->sTag($content, $ponteiro)) {
            $ponteiro = 0 + $ret['-final-'];
            $vartemp = '';

            //constant URL
            if ($ret['-tipo-'] == 'var' && $ret['var'] == 'url') {
                $vartemp = $this->url;
            } elseif (method_exists($this, '_' . $ret['-tipo-'])) {
                $vartemp = $this->{'_' . $ret['-tipo-']}($ret);
            }

            //Incluindo o bloco gerado pelas ©NeosTags
            $content = substr_replace($this->getContent(), $vartemp, $ret['-inicio-'], $ret['-tamanho-']);
            $this->setContent($content);

            //RE-setando o ponteiro depois de adicionar os dados acima
            $ponteiro = $ret['-inicio-'];
        }//end while

        //returns the processed contents
        return $this->getContent();
    }
671468
public function &c() {
    $args = func_get_args();
    if (count($args) > $this->argsCount) {
      $rel = array_pop($args); // rel ist übergeben worden
    } else {
      $rel = 0;
    }
    for ($i=0; $i < $this->argsCount; $i++) {
      $this->values[$i][] = $args[$i];
    }

    $key = $this->getKey($args);
    if (!array_key_exists($key,$this->counts)) {
      $this->counts[$key] = $this->initCount;
    }
    $ref =& $this->counts[$key];
    $ref += $rel;
    return $ref;
  }
105839
public function indexAction()
    {
        $this->view->roles = (new \Cms\Orm\CmsRoleQuery)->find();
        //jeśli niewybrana rola - przekierowanie na pierwszą istniejącą
        if (!$this->roleId && count($this->view->roles)) {
            $this->getResponse()->redirect('cmsAdmin', 'categoryAcl', 'index', ['roleId' => $this->view->roles[0]->id]);
        }
        //formularz edycji uprawnień
        $form = new Form\CategoryAclForm(null, ['roleId' => $this->roleId]);
        //po zapisie
        if ($form->isSaved()) {
            $this->getMessenger()->addMessage('messenger.categoryAcl.permissions.saved', true);
            //przekierowanie na zapisaną stronę
            $this->getResponse()->redirect('cmsAdmin', 'categoryAcl', 'index', ['roleId' => $this->roleId]);
        }
        $this->view->categoryAclForm = $form;
    }
329594
private function insert()
    {
        $db = new Db();

        //Pegando um ID válido
        $id = $db->query('SELECT MAX(id)id FROM article');
        $this->id = $id[0]->get('id')+1;

                //Insert into content table
        $row = $db->query('INSERT INTO articlecontent
                            SET article = :article,
                                editdate = :editdate,
                                content = :content',
                        [':article' => $this->id,
                         ':editdate' => $this->editdate,
                         ':content' => $this->content]);

        //check insert
        if (!$row) {
            //TODO: insert a ROWBACK if not inserted.

            return false;
        }
        
        //Insert into article table
        $row = $db->query('INSERT INTO article
                            SET id = :id,
                                category = :category,
                                author = :author,
                                pubdate = :pubdate,
                                editdate = :editdate,
                                link = :link,
                                tags = :tags,
                                status = :status,
                                title = :title,
                                media = :media,
                                resume = :resume ',
                        [':id'=>$this->id,
                         ':category' => $this->category,
                         ':author' => $this->author,
                         ':pubdate' => $this->pubdate,
                         ':editdate' => $this->editdate,
                         ':link' => $this->link,
                         ':tags' => $this->tags,
                         ':status' => $this->status,
                         ':title' => $this->title,
                         ':media' => $this->media,
                         ':resume' => $this->resume
                        ]);

        return $row;
    }
1232142
function queryShare($token, $buyOrder, $shareNumber) {

        try {

            $queryShare = new queryShare();

            $queryShare->token = $token;
            $queryShare->buyOrder = $buyOrder;
            $queryShare->shareNumber = $shareNumber;

            $queryShareResponse = $this->_queryShare($queryShare);

            $xmlResponse = $this->soapClient->__getLastResponse();
            $soapValidation = new SoapValidation($xmlResponse, $this->config->getWebpayCert());
            $validationResult = $soapValidation->getValidationResult();

            if ($validationResult === TRUE) {

                $wsCompleteQuerySharesOutput = $queryShareResponse->return;
                return $wsCompleteQuerySharesOutput;

            } else {

                $error["error"] = "Error validando conexi&oacute;n a Webpay (Verificar que la informaci&oacute;n del certificado sea correcta)";
                $error["detail"] = "No se pudo completar la conexi&oacute;n con Webpay";

            }
        } catch (Exception $e) {

            $error["error"] = "Error conectando a Webpay (Verificar que la informaci&oacute;n del certificado sea correcta)";

            $replaceArray = array('<!--' => '', '-->' => '');
            $error["detail"] = str_replace(array_keys($replaceArray), array_values($replaceArray), $e->getMessage());
        }

        return $error;
    }
500489
static function basic($string, $filterIn = array("Tidy","Dom","Striptags"), $filterOut = "none") {
        $string = self::tidyUp($string, $filterIn);
        $string = str_replace(array("&amp;", "&lt;", "&gt;"), array("&amp;amp;", "&amp;lt;", "&amp;gt;"), $string);
        
        // fix &entitiy\n;
        $string = preg_replace('#(&\#*\w+)[\x00-\x20]+;#u', "$1;", $string);
        $string = preg_replace('#(&\#x*)([0-9A-F]+);*#iu', "$1$2;", $string);

        $string = html_entity_decode($string, ENT_COMPAT, "UTF-8");
        
        // remove any attribute starting with "on" or xmlns
        $string = preg_replace('#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>#iUu', "$1>", $string);
        
        // remove javascript: and vbscript: protocol
        $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iUu', '$1=$2nojavascript...', $string);
        $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iUu', '$1=$2novbscript...', $string);
        $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*-moz-binding[\x00-\x20]*:#Uu', '$1=$2nomozbinding...', $string);
        $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*data[\x00-\x20]*:#Uu', '$1=$2nodata...', $string);
        
        //remove any style attributes, IE allows too much stupid things in them, eg.
        //<span style="width: expression(alert('Ping!'));"></span> 
        // and in general you really don't want style declarations in your UGC

        $string = preg_replace('#(<[^>]+[\x00-\x20\"\'\/])style[^>]*>#iUu', "$1>", $string);

        //remove namespaced elements (we do not need them...)
        $string = preg_replace('#</*\w+:\w[^>]*>#i', "", $string);
        
        //remove really unwanted tags
        do {
            $oldstring = $string;
            $string = preg_replace('#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i', "", $string);
        } while ($oldstring != $string);
        
        return self::tidyUp($string, $filterOut);
    }
728125
function(input) {

			// Nos deshacemos del caracter final `:` para su validación

			var size = (input = _toString(input)).length;

			input = (input.substr(size-1, 1) === ':') ? input.substr(0, input.length-1) : input;

			// Si el protocolo es correcto añadimos `:` al final del mismo
			// si no lo es devolvemos una cadena vacía

			return Public.normalize.regex_rfc3986_schema.test((input = input.toLowerCase())) ? (input + ':') : '';

		}
1045198
public function php($baseIndent = 0) {
    $cr = "\n";
    
    $php = $this->phpDocBlock($baseIndent);
    
    // vor die modifier muss das indent
    $php .= str_repeat(' ',$baseIndent);
    
    $ms = array(self::MODIFIER_ABSTRACT => 'abstract',
                self::MODIFIER_PUBLIC => 'public',
                self::MODIFIER_PRIVATE => 'private',
                self::MODIFIER_PROTECTED => 'protected',
                self::MODIFIER_STATIC => 'static',
                self::MODIFIER_FINAL => 'final'
               );
    
    foreach ($ms as $const => $modifier) {
      if (($const & $this->modifiers) == $const)
        $php .= $modifier.' ';
    }
    
    $php .= parent::php($baseIndent); 
    
    return $php;
  }
198091
public function requestMsisdn()
    {
        // Khởi tạo cấu hình Csp Config
        $cspConfig = $this->config[self::CSP_CONFIG];
        // Khởi tạo link callback Get Msisdn
        $linkCallbackGetMsisdn = trim($cspConfig['domainUrl']) . trim($cspConfig['callbackGetMsisdn']);
        // Redirect Params
        $params         = [
            'sp'   => $cspConfig['spNumber'],
            'link' => $this->encrypt($linkCallbackGetMsisdn)
        ];
        $cspRedirectUrl = $cspConfig['addressConnectGetMsisdn'] . '?' . http_build_query($params);
        // Debug
        $this->debug->debug(__FUNCTION__, '$cspConfig: ' . json_encode($cspConfig));
        $this->debug->debug(__FUNCTION__, '$linkCallbackGetMsisdn: ' . json_encode($linkCallbackGetMsisdn));
        $this->debug->debug(__FUNCTION__, '$params: ' . json_encode($params));
        $this->debug->info(__FUNCTION__, '$cspRedirectUrl: ' . json_encode($cspRedirectUrl));
        $this->debug->debug(__FUNCTION__, 'Request from IP: ' . json_encode($this->IP->getIpAddress()));
        // Chuyển hướng tới Csp MobiFone
        Utils::redirect($cspRedirectUrl);
    }
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);
    }
1183287
function rel2absSeg(jPath,ind) {
        
        var seg = jPath.getSeg(ind),
        letter = seg.pathSegTypeAsLetter.toLowerCase(),
        args,ref;
        
        if (seg.pathSegTypeAsLetter !== letter) return; //déjà en absolu
        
        args = [ind,letter.toUpperCase()];
        ref = jPath.getCurPt(ind);
        
        if (letter === 'h') args.push(ref.x+seg.x);
        else if (letter === 'v') args.push(ref.y+seg.y);
        else if (letter === "m") args.push(seg.x,seg.y);
        else if (letter !== "z") {
            
            args.push(ref.x+seg.x,ref.y+seg.y);
            
            switch (letter) {
                case 'c' : args.push(ref.x+seg.x1,ref.y+seg.y1,ref.x+seg.x2,ref.y+seg.y2); break;
                case 'q' : args.push(ref.x+seg.x1,ref.y+seg.y1); break;
                case 'a' : args.push(seg.r1,seg.r2,seg.angle,seg.largArcFlag,seg.sweepFlag); break;
                case 's' : args.push(ref.x+seg.x2,ref.y+seg.y2); break;
            }
        }
        
        jPath.replaceSeg.apply(jPath,args);
    }
914794
private function createConfigFiles()
    {
        $moduleName = ucfirst($this->getModule());
        $moduleNameLower = strtolower($this->getModule());
        $moduleNameUpper = strtoupper($this->getModule());

        /* Criação do arquivo de configuração do módulo */
        $module_config_php = file_get_contents(dirname(__FILE__) . DS . 'Module' . DS . 'Module_config_php.tpl');
        $moduleConfigPhp = str_replace("%moduleNameUpper%", $moduleNameUpper, str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $module_config_php)));
        file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'config' . DS . 'module.config.php', "<?php\n\n".$moduleConfigPhp);
        chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'config' . DS . 'module.config.php', 0644);

        /* Criação do arquivo de definição do módulo */
        $module_php = file_get_contents(dirname(__FILE__) . DS . 'Module' . DS . 'Module_php.tpl');
        $modulePhp = str_replace("%moduleNameUpper%", $moduleNameUpper, str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $module_php)));
        file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'Module.php', "<?php\n\n".$modulePhp);
        chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'Module.php', 0644);
    }
852041
public function index(string $url)
    {
        array_walk($this->routes[0], function($route) use ($url) {

            if (strpos($route[0], "@")) {

                //$rotaLimpa = substr($route[0], 0, strpos($route[0], "@"));
                $rotaTratada = str_replace("@", '', $route[0]);

                // obtendo quantos caracteres tem na rota
                $tamanhoDaRota = strlen($rotaTratada);

                // obtendo quantos caracteres tem na url
                $tamanhoDaUrl = strlen($url);

                // verifica se a quantidade de caracteres da url é maior que a quantidade de caracteres da rota
                if ($tamanhoDaUrl > $tamanhoDaRota) {

                    // cortando a url pelo tamanho da rota
                    $url = substr($url, 0, $tamanhoDaRota);

                    // compara se o vlaor da $url é igual ao valor da $rotaTratada
                    if (strcmp($url,$rotaTratada) === 0){

                        // substituindo o valor da rota pelo valor da url
                        $route[0] = str_replace($route[0], $url, $route[0]);

                        $this->run($url, $route);

                        exit();
                    }
                }

                $this->urlError++;

            } else {

                $this->run($url, $route);

            }

            $this->countError(count($this->routes[0]));

        });
    }