Project

General

Profile

1 7876 aaronmk
<?php
2
require_once dirname(__FILE__)."/util.php";
3
4
# config
5 7909 aaronmk
$alias = "j.mp/vegpath#";
6 7876 aaronmk
7
function by_prefix($url, $main_url=null)
8
{
9
	if (!isset($main_url)) $main_url = $url;
10
11
	return function($path) use($url, $main_url)
12
	{
13
		return $path ? $url.$path : $main_url;
14
	};
15
}
16
17 7904 aaronmk
$h_level = 5;
18 7876 aaronmk
$path = parse_mixed_path($_SERVER["QUERY_STRING"]);
19
$ref = strtolower($path->head);
20
21
function add_ref($name, $suffix, $url_func)
22
{
23
	global $alias, $h_level, $path, $ref;
24
	if (is_string($url_func)) $url_func = by_prefix($url_func);
25
26 7909 aaronmk
	print("<h".$h_level.' id="'.$name.'">'.$alias.'<big><a href="http://'.$alias
27 7913 aaronmk
		.$name.'">'.$name."</a></big><i>".$suffix."</i></h".$h_level.">\n");
28 7912 aaronmk
	if ($ref === strtolower($name)) # found match, so redirect
29 7876 aaronmk
	{
30
		header("Location: ".strip_url($url_func($path->tail)));
31
		ob_end_flush();
32
		exit;
33
	}
34
}
35
36 7914 aaronmk
function custom_separator($url, $sep, $main_url)
37 7910 aaronmk
{
38 7914 aaronmk
	if (!isset($main_url)) $main_url = $url;
39
40
	return function($path) use($url, $sep, $main_url)
41 7910 aaronmk
	{
42 7914 aaronmk
		if ($path === "") return $main_url;
43 7910 aaronmk
		$path = parse_dot_path($path);
44
		return $url.join_non_empty($sep, array($path->head, $path->tail));
45
	};
46
}
47
48 7876 aaronmk
function fragment_override($url, $fragment=null)
49
{
50
	return function($path) use($url, $fragment)
51
	{
52
		if (!isset($fragment))
53
		{
54
			$path = parse_dot_path($path);
55
			$fragment = $path->head;
56
			$path = $path->tail;
57
		}
58 7902 aaronmk
		if ($path !== "") $url .= "?".$path;
59 7876 aaronmk
		return $url."#".$fragment;
60
	};
61
}
62
63 7934 aaronmk
function phpPgAdmin($url, $table=null)
64 7876 aaronmk
{
65 7934 aaronmk
	return function($path) use($url, $table)
66 7876 aaronmk
	{
67 7934 aaronmk
		$path = join_non_empty(".", array($table, $path));
68 7876 aaronmk
		$path = parse_dot_path($path);
69 7886 aaronmk
		$subject = "schema";
70 7902 aaronmk
		if ($path->head !== "")
71 7876 aaronmk
		{
72
			$url .= "&table=".$path->head;
73 7902 aaronmk
			if ($path->tail !== "")
74 7886 aaronmk
			{
75
				$url .= "&column=".$path->tail;
76
				$subject = "column";
77
			}
78
			else $subject = "table";
79 7876 aaronmk
		}
80 7895 aaronmk
		$url .= "&subject=".$subject;
81
		return $url;
82 7876 aaronmk
	};
83
}
84
85 7934 aaronmk
function phpMyAdmin($url, $table=null)
86 7893 aaronmk
{
87 7934 aaronmk
	return function($path) use($url, $table)
88 7893 aaronmk
	{
89 7934 aaronmk
		$path = join_non_empty(".", array($table, $path));
90 7893 aaronmk
		$path = parse_dot_path($path);
91
		$target = "db_structure";
92 7902 aaronmk
		if ($path->head !== "")
93 7893 aaronmk
		{
94
			$url .= "&table=".$path->head;
95 7902 aaronmk
			if ($path->tail !== "") $url .= "&column=".$path->tail;
96 7899 aaronmk
			$target = "tbl_structure";
97 7893 aaronmk
		}
98 7896 aaronmk
		$url .= "&target=".$target.".php";
99 7895 aaronmk
		return $url;
100 7893 aaronmk
	};
101
}
102
103 7876 aaronmk
ob_start(); // delay output in case there is a redirect
104
?>
105
<html>
106
	<head>
107 7881 aaronmk
		<title>VegPath</title>
108 7876 aaronmk
		<link rel="stylesheet" type="text/css" href="main.css" />
109
		<style type="text/css">
110
h1 {color: green;}
111
		</style>
112
		<script type="text/javascript" src="util.js"></script>
113
	</head>
114
	<body>
115 7880 aaronmk
		<h1>VegPath&nbsp;&nbsp; <small>human-readable URLs for vegetation resources</small></h1>
116 7923 aaronmk
		<div>Supported URL patterns:&nbsp;&nbsp; <small>(elements in <i>italics</i> are optional)</small></div>
117 7931 aaronmk
		<p></p>
118 7876 aaronmk
<?php
119
# add and list URLs
120 7920 aaronmk
121 7924 aaronmk
$Redmine = "https://projects.nceas.ucsb.edu/nceas/projects/bien";
122 7928 aaronmk
$Redmine_svn = $Redmine."/repository/raw";
123 7924 aaronmk
124 7920 aaronmk
$nimoy = "http://nimoy.nceas.ucsb.edu/phpmyadmin/index.php";
125 7921 aaronmk
function nimoy_db($db) { global $nimoy; return phpMyAdmin($nimoy."?db=".$db); }
126 7936 aaronmk
127
$IH_db = phpMyAdmin($nimoy."?db=bien3_adb", "ih");
128 7931 aaronmk
?>
129
		<table border="0" cellspacing="0" cellpadding="0">
130
			<tr valign="top">
131
				<td nowrap="nowrap"><h2>Terms</h2></td>
132
				<td nowrap="nowrap"><h2>Data</h2></td>
133
			</tr>
134
			<tr valign="top">
135
				<td nowrap="nowrap">
136
<?php
137
print("<blockquote>\n");
138
print("<h3>Exchange schemas</h3>");
139 7876 aaronmk
{
140
	print("<blockquote>\n");
141 7931 aaronmk
	add_ref("VegCore", ".term", "https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore#");
142
	add_ref("DwC", ".term", "http://rs.tdwg.org/dwc/terms/#");
143 7876 aaronmk
	{
144 7931 aaronmk
		print("<blockquote>\n"); $h_level++;
145
		add_ref("DwC-history", ".term", "http://rs.tdwg.org/dwc/terms/history/#");
146
		print("</blockquote>\n"); $h_level--;
147 7876 aaronmk
	}
148 7931 aaronmk
	add_ref("TCS", "/XPath", "http://www.tdwg.org/standards/117/download/#/v101.xsd#");
149
	add_ref("VegX", "/XPath", "http://wiki.tdwg.org/twiki/pub/Vegetation/WebHome/VegX_Schema_1.5.3_proposed.zip#/veg.xsd#");
150
	print("</blockquote>\n");
151
}
152
print("<h3>Aggregators</h3>");
153
{
154
	print("<blockquote>\n");
155
	add_ref("VegBank", ".table.column", custom_separator("http://vegbank.org/vegbank/views/dba_tabledescription_detail.jsp?view=detail&entity=dba_tabledescription&where=where_tablename&wparam=",
156
		"#", "http://vegbank.org/get/index/dba_tabledescription"));
157
	add_ref("SALVIAS", ".table.column", "http://salvias.net/Documents/salvias_data_dictionary.html#");
158 7876 aaronmk
	{
159 7931 aaronmk
		print("<blockquote>\n"); $h_level++;
160
		add_ref("SALVIAS-db", ".table.column", nimoy_db("salvias_plots"));
161
		add_ref("SALVIAS-users", ".table.column", nimoy_db("salvias_users"));
162
		print("</blockquote>\n"); $h_level--;
163 7876 aaronmk
	}
164 7931 aaronmk
	add_ref("BIEN2", "", $nimoy."?target=server_databases.php");
165 7876 aaronmk
	{
166 7931 aaronmk
		print("<blockquote>\n"); $h_level++;
167
		add_ref("BIEN2-web", ".table.column", nimoy_db("bien_web"));
168
		add_ref("BIEN2-core", ".table.column", nimoy_db("bien2"));
169
		add_ref("BIEN2-geoscrub", ".table.column", nimoy_db("geoscrub"));
170
		add_ref("BIEN2-staging", ".table.column", nimoy_db("bien2_staging"));
171
		print("</blockquote>\n"); $h_level--;
172 7876 aaronmk
	}
173 7931 aaronmk
	add_ref("VegBIEN", ".table.column", phpPgAdmin("http://vegbiendev.nceas.ucsb.edu/phppgadmin/redirect.php?server=localhost%3A5432%3Aallow&database=vegbien&schema=public"));
174
	print("</blockquote>\n");
175
}
176
print("<h3>Primary databases</h3>");
177
{
178
	print("<blockquote>\n");
179
	add_ref("TNRS", ".term", fragment_override("http://tnrs.iplantcollaborative.org/instructions.html", "download_results"));
180
	add_ref("CTFS", "", $CTFS);
181 7929 aaronmk
	{
182 7931 aaronmk
		print("<blockquote>\n"); $h_level++;
183
		add_ref("CTFS-schema", ".table.column", "https://projects.nceas.ucsb.edu/nceas/projects/bien/repository/raw/inputs/CTFS/_archive/DBv5.txt#");
184
		add_ref("CTFS-tables", ".table", fragment_override($Redmine."/wiki/CTFS", "Tables"));
185
		add_ref("CTFS-terms", ".term", $Redmine_svn."/inputs/CTFS/_src/ctfs-comments_worksheet.xls#");
186
		print("</blockquote>\n"); $h_level--;
187 7929 aaronmk
	}
188 7936 aaronmk
	add_ref("IH-db", ".term", $IH_db);
189 7876 aaronmk
	print("</blockquote>\n");
190
}
191 7931 aaronmk
print("<h3>People</h3>");
192 7876 aaronmk
{
193
	print("<blockquote>\n");
194 7931 aaronmk
	add_ref("Brad-Boyle", "", $CTFS);
195
	{
196
		print("<blockquote>\n"); $h_level++;
197
		$Brad_Boyle_VegCore = $Redmine_svn."/schemas/VegCore/Brad_Boyle";
198
		add_ref("Brad-Boyle-data-provenance", ".term", $Brad_Boyle_VegCore."/BIEN%20database%20entities%20related%20to%20data%20provenance%20and%20ownership.docx#");
199
		add_ref("Brad-Boyle-DwC-IDs-2013-2-7", ".term", $Brad_Boyle_VegCore."/vegbien_identifiers.xlsx#");
200
		add_ref("Brad-Boyle-DwC-IDs-2013-1-31", ".term", $Brad_Boyle_VegCore."/vegbien_identifier_examples.xlsx#");
201
		print("</blockquote>\n"); $h_level--;
202
	}
203 7876 aaronmk
	print("</blockquote>\n");
204
}
205 7931 aaronmk
print("</blockquote>\n");
206
?>
207
				</td>
208
				<td nowrap="nowrap">
209
<?php
210
print("<blockquote>\n");
211 7932 aaronmk
print("<h3>Institutions</h3>");
212
{
213
	print("<blockquote>\n");
214
	add_ref("IH", ".herbarium_code", by_prefix("http://sweetgum.nybg.org/ih/herbarium_list.php?QueryName=DetailedQuery&Restriction=NamPartyType+%3D+%27IH+Herbarium%27&col_NamOrganisationAcronym=",
215 7931 aaronmk
		"http://sweetgum.nybg.org/ih/"));
216 7932 aaronmk
	print("</blockquote>\n");
217
}
218 7931 aaronmk
print("</blockquote>\n");
219
?>
220
				</td>
221
			</tr>
222
		</table>
223
<?php
224 7922 aaronmk
if (ends_with($alias, '#')) # URL shortener requires fragment redirect
225
{
226 7876 aaronmk
?>
227 7931 aaronmk
		<script type="text/javascript">
228 7876 aaronmk
var loc = document.location
229 7926 aaronmk
if (loc.hash) document.location = rm_prefix('#', loc.hash)
230 7931 aaronmk
		</script>
231 7922 aaronmk
<?php
232
}
233
?>
234 7876 aaronmk
	</body>
235
</html>
236
<?php
237
ob_end_flush();
238
?>