Update index.php
This commit is contained in:
parent
0e693aebb4
commit
038f16dc8e
195
index.php
195
index.php
@ -1,5 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
error_reporting(E_ALL);
|
||||||
|
ini_set('display_errors', 0); // Desabilita a exibição de erros na tela
|
||||||
|
ini_set('log_errors', 1);
|
||||||
|
ini_set('error_log', 'erro_log.txt');
|
||||||
|
|
||||||
if(isset($_GET["ark"])){
|
if(isset($_GET["ark"])){
|
||||||
|
|
||||||
@ -14,4 +18,195 @@ 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 "<h1>Mensagem ARK</h1><p>Nenhum ARK foi passado para que fosse feita uma busca.</p>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//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 "<h1>ark:$ark</h1> <p>Documento não encontrado.</p>";
|
||||||
|
|
||||||
|
}//Fecha a funcao direcionar_ark
|
||||||
|
|
||||||
|
direcionar_ark();
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
x
Reference in New Issue
Block a user