Mensagem ARK
Nenhum ARK foi passado para que fosse feita uma busca.
"; return; } //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; echo "caminho : ".$caminho_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."; return; } if($tem_interrogacao){ registrarAcessoQrCode( $ark, "Consulta com interrogação, ou seja, buscando metadados."); sleep(5); 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."); sleep(5); header('Location:'.$site_base.$caminho_arquivo_ark); die(); } if(!$tem_interrogacao){ registrarAcessoQrCode($ark, $link_completo); sleep(5); header('Location: '.$link_completo); die(); } $identificador_ark = true; //Pois o ARK foi encontrado }// Fecha if($identificador_ark) $index++; } while ($tamanho > 1 && !$identificador_ark); echo "Documento não encontrado.
"; }//Fecha a funcao direcionar_ark direcionar_ark(); ?>