From 05fb8192891d929390e0ddd182f8320d690a8741 Mon Sep 17 00:00:00 2001
From: Kyle Huynh <7862086+kylehuynh205@users.noreply.github.com>
Date: Fri, 24 Jun 2022 10:19:29 -0400
Subject: [PATCH] Update resolver.php
Added a check for ? or ?? to display the metdata instead of redirection
Future work: Need add a distinguish these two use cases
---
resolver.php | 61 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 57 insertions(+), 4 deletions(-)
diff --git a/resolver.php b/resolver.php
index bbad8bb..d54145c 100644
--- a/resolver.php
+++ b/resolver.php
@@ -94,8 +94,19 @@
}
}
}
- //print_r("
$url");
- header("Location: $url");
+ // New: Add a check for ? or ?? and the end of Ark URL
+ if ( substr_compare($_SERVER['REQUEST_URI'], "?", -1) === 0 ) {
+ // if the Ark URLs ends with '?'
+ $medata = getMetdata($db, $arkid);
+ print($medata);
+ }
+ else if ( substr_compare($_SERVER['REQUEST_URI'], "??", -2) === 0 ) {
+ $medata = getMetdata($db, $arkid);
+ print($medata);
+ }
+ else {
+ header("Location: $url");
+ }
}
} else {
print "invalid argument";
@@ -132,14 +143,56 @@ function increase_reidrection($db, $ark_id) {
$count++;
if (mysqli_query($link, $query)) {
- echo "New record created successfully";
+ print_log("New record created successfully");
}
else {
- echo "New record created failed";
+ print_log("New record created failed");
+ }
+ mysqli_close($link);
+}
+
+
+/**
+ * Get full metadata
+ */
+function getMetdata($db, $ark_id)
+{
+ $link = mysqli_connect(MysqlArkConf::$mysql_host, MysqlArkConf::$mysql_user, MysqlArkConf::$mysql_passwd, MysqlArkConf::$mysql_dbname);
+
+ if (!$link) {
+ echo "Error: Unable to connect to MySQL." . PHP_EOL;
+ echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
+ echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
+ exit;
+ }
+
+ $where = 'WHERE _key LIKE "' . $ark_id .'%"';
+ if ($query = mysqli_query($link, "SELECT * FROM `$db` ". $where)) {
+
+ if (!mysqli_query($link, "SET @a:='this will not work'")) {
+ printf("Error: %s\n", mysqli_error($query));
+ }
+ $results = $query->fetch_all();
+
+ if (count($results) > 0) {
+ $medata = "
"; + foreach($results as $pair) { + $field = trim(str_replace($ark_id, " ", $pair[0])) ; + if (!in_array($field, [':/c', ":/h", "REDIRECT", ""])) { + $medata .= $field. ": " . $pair[1] . "\n"; + } + } + $medata .= ""; + return $medata; + } + + $query->close(); } mysqli_close($link); + return false; } + /** * Get Org registered info */