From 038f16dc8e7b175cc0a0f8d74b1c7f666385ef91 Mon Sep 17 00:00:00 2001 From: Rafael Tavares Juliani Date: Thu, 19 Oct 2023 04:45:03 -0300 Subject: [PATCH] Update index.php --- index.php | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/index.php b/index.php index cfa42bd..a822784 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,9 @@ 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