diff --git a/index.php b/index.php index e0221b2..282ee2a 100644 --- a/index.php +++ b/index.php @@ -18,195 +18,5 @@ if(isset($_GET["ark"])){ } -// Inclua o arquivo com a função registrarAcessoQrCode -//include 'funcaoQRCode.php'; //Se você não usar nenhum tratamento para quando os seus ARK forem acessados por leitura de um qr code, retire essa importação e todas as chamadas da função registrarAcessoQrCode. O arquivo "funcaoQRCode.php" não está neste repositório Github, pois é de uso interno da Editora Moan - -function reduzirArk($tamanho, $pedacos) { - - $ark_sem_NAAN = ""; - - $NAAN = $pedacos[0]; - - for($i=1; $i < $tamanho; $i++){ - - $ark_sem_NAAN.= "/".$pedacos[$i]; - - }//Fecha for - - $arr = [$NAAN, $ark_sem_NAAN]; - - return $arr; - -} - -function direcionar_ark() { - - $pasta_json = "json"; //Substitua pelo nome que vc escolheu para colocar os metadados ARK em JSON - - $site_base = "https://ark.livro.online/"; //Coloque o endereço do local em que estes arquivos estão hospedados - - if(isset($_GET["ark"])){ - - $ark = $_GET["ark"]; - - } else { - - $ark = ""; - - return "

Mensagem ARK

Nenhum ARK foi passado para que fosse feita uma busca.

"; - - } - - - - //Eliminando espaços em branco no início e no final do $ark - $ark = trim($ark); - - // Verifique se $ark começa com uma barra. Pois, em vez digitaremos ark:68745/eM485/B6, por exemplo, podem ter digitado ark:/68745/eM485/B6, o que seria passado para o parâmetro ark com uma barra no início - if (strpos($ark, '/') === 0) { - - // Remova a barra no início - $ark= substr($ark, 1); - } - - $pedacos = explode("/", $ark); - - $index = 0; - - $tamanho_inicial = count($pedacos); //Na verdade o tamanho de $pedacos é fixo. Mais abaixo o valor do tamanho só muda porque precisamos reduzir até encontrar o ark registrado, mas o tamanho real de $pedacos continua o mesmo - - $resto = ""; - - $identificador_ark = false; - - do { - - $tamanho = count($pedacos) - $index; - - $inicio_do_resto = $tamanho; - - if($inicio_do_resto < $tamanho_inicial){ - - for($i = $inicio_do_resto; $i < $tamanho_inicial; $i++){ - - $resto.= "/".$pedacos[$i]; - - }//Fecha for - - - }//Fecha if - - - $resp = reduzirArk($tamanho, $pedacos); - - $NAAN = $resp[0]; //NAAN é o número de registro da Editora Moan na Ark Alliance - - $ark_sem_NAAN = $resp[1]; - - if($ark_sem_NAAN == ""){ - break; - } - - $len_ark_sem_NAAN = strlen($ark_sem_NAAN); - - $tem_interrogacao = false; - - - if($ark_sem_NAAN[$len_ark_sem_NAAN-1] == "?"){// Um ARK com ? é uma pergunta para saber seus metadados e, por isso, em vez da obra em si, temos que retornar os metadados do ARK - - $tem_interrogacao = true; - - $ark_sem_NAAN = substr($ark_sem_NAAN, 0, -1); - - }//Fecha if - - - $len_ark_sem_NAAN = strlen($ark_sem_NAAN); - - if($ark_sem_NAAN[$len_ark_sem_NAAN-1] == "?"){// É executado duas vezes porque um ARK, pela especificação, pode conter duas interrogações e nesse caso deveria retornar se o arquivo é temporário ou não. Mas na Editora Moan não implementamos isso. - - $ark_sem_NAAN = substr($ark_sem_NAAN, 0, -1); - - }//Fecha if - - - - $ark_formatado = "ark:".$NAAN.$ark_sem_NAAN; - - //Substituindo para o padrao que é encontrado dentro da $pasta_json - $nome_arquivo_ark = str_replace(":", "_dp_", $ark_formatado); - $nome_arquivo_ark = str_replace("/", "_b_", $nome_arquivo_ark); - $nome_arquivo_ark = str_replace(".", "_p_", $nome_arquivo_ark); - - $nome_arquivo_ark.= ".json"; - - $caminho_arquivo_ark = $pasta_json."/".$nome_arquivo_ark; - - - if(file_exists($caminho_arquivo_ark)){ - - $arquivo_ark = file_get_contents($caminho_arquivo_ark); - - $metadados = json_decode($arquivo_ark, true); - - // Verifique se a decodificação foi bem-sucedida - if ($metadados !== null) { - - // Acesse o valor da chave 'apontamento' - $apontamento = $metadados['apontamento']; - - - } else { - echo "Erro ao decodificar o JSON no arquivo com os metadados do ARK. Informe o problema ao responsável."; - } - - - if($tem_interrogacao){ - - //registrarAcessoQrCode( $ark, "Consulta com interrogação, ou seja, buscando metadados."); - - header('Location:'.$site_base.$caminho_arquivo_ark); - die(); - - } - - - - if ($apontamento){ - - $link_completo = $apontamento.$resto; - - } else { - - //registrarAcessoQrCode($ark, "Não possui um apontamento, logo, foi redirecionado para os metadados."); - - header('Location:'.$site_base.$caminho_arquivo_ark); - die(); - - } - - if(!$tem_interrogacao){ - - //registrarAcessoQrCode($ark, $link_completo); - - header('Location: '.$link_completo); - die(); - - } - - $identificador_ark = true; //Pois o ARK foi encontrado - - }// Fecha if($identificador_ark) - - $index++; - - } while ($tamanho > 1 && !$identificador_ark); - - - return "

ark:$ark

Documento não encontrado.

"; - -}//Fecha a funcao direcionar_ark - -direcionar_ark(); ?> \ No newline at end of file