Project

General

Profile

1
<?php
2
require_once dirname(__FILE__)."/util.php";
3

    
4
# config
5
$alias = "j.mp/vegpath#";
6

    
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
$h_level = 5;
18
$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
	print("<h".$h_level.' id="'.$name.'">'.$alias.'<big><a href="http://'.$alias
27
		.$name.'">'.$name."</a></big><i>".$suffix."</i></h".$h_level.">\n");
28
	if ($ref === strtolower($name)) # found match, so redirect
29
	{
30
		header("Location: ".strip_url($url_func($path->tail)));
31
		ob_end_flush();
32
		exit;
33
	}
34
}
35

    
36
function custom_separator($url, $sep, $main_url)
37
{
38
	if (!isset($main_url)) $main_url = $url;
39
	
40
	return function($path) use($url, $sep, $main_url)
41
	{
42
		if ($path === "") return $main_url;
43
		$path = parse_dot_path($path);
44
		return $url.join_non_empty($sep, array($path->head, $path->tail));
45
	};
46
}
47

    
48
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
		if ($path !== "") $url .= "?".$path;
59
		return $url."#".$fragment;
60
	};
61
}
62

    
63
function phpPgAdmin($url)
64
{
65
	return function($path) use($url)
66
	{
67
		$path = parse_dot_path($path);
68
		$subject = "schema";
69
		if ($path->head !== "")
70
		{
71
			$url .= "&table=".$path->head;
72
			if ($path->tail !== "")
73
			{
74
				$url .= "&column=".$path->tail;
75
				$subject = "column";
76
			}
77
			else $subject = "table";
78
		}
79
		$url .= "&subject=".$subject;
80
		return $url;
81
	};
82
}
83

    
84
function phpMyAdmin($url)
85
{
86
	return function($path) use($url)
87
	{
88
		$path = parse_dot_path($path);
89
		$target = "db_structure";
90
		if ($path->head !== "")
91
		{
92
			$url .= "&table=".$path->head;
93
			if ($path->tail !== "") $url .= "&column=".$path->tail;
94
			$target = "tbl_structure";
95
		}
96
		$url .= "&target=".$target.".php";
97
		return $url;
98
	};
99
}
100

    
101
ob_start(); // delay output in case there is a redirect
102
?>
103
<html>
104
	<head>
105
		<title>VegPath</title>
106
		<link rel="stylesheet" type="text/css" href="main.css" />
107
		<style type="text/css">
108
h1 {color: green;}
109
		</style>
110
		<script type="text/javascript" src="util.js"></script>
111
	</head>
112
	<body>
113
		<h1>VegPath&nbsp;&nbsp; <small>human-readable URLs for vegetation resources</small></h1>
114
		<div>Supported URL patterns:&nbsp;&nbsp; <small>(elements in <i>italics</i> are optional)</small></div>
115
		<blockquote>
116
<?php
117
# add and list URLs
118

    
119
$Redmine = "https://projects.nceas.ucsb.edu/nceas/projects/bien";
120

    
121
$nimoy = "http://nimoy.nceas.ucsb.edu/phpmyadmin/index.php";
122
function nimoy_db($db) { global $nimoy; return phpMyAdmin($nimoy."?db=".$db); }
123

    
124
print("<h2>Terms</h2>");
125
{
126
	print("<blockquote>\n");
127
	print("<h3>Exchange schemas</h3>");
128
	{
129
		print("<blockquote>\n");
130
		add_ref("VegCore", ".term", "https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore#");
131
		add_ref("DwC", ".term", "http://rs.tdwg.org/dwc/terms/#");
132
		{
133
			print("<blockquote>\n"); $h_level++;
134
			add_ref("DwC-history", ".term", "http://rs.tdwg.org/dwc/terms/history/#");
135
			print("</blockquote>\n"); $h_level--;
136
		}
137
		add_ref("TCS", "/XPath", "http://www.tdwg.org/standards/117/download/#/v101.xsd#");
138
		add_ref("VegX", "/XPath", "http://wiki.tdwg.org/twiki/pub/Vegetation/WebHome/VegX_Schema_1.5.3_proposed.zip#/veg.xsd#");
139
		print("</blockquote>\n");
140
	}
141
	print("<h3>Aggregators</h3>");
142
	{
143
		print("<blockquote>\n");
144
		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=",
145
			"#", "http://vegbank.org/get/index/dba_tabledescription"));
146
		add_ref("SALVIAS", ".table.column", "http://salvias.net/Documents/salvias_data_dictionary.html#");
147
		{
148
			print("<blockquote>\n"); $h_level++;
149
			add_ref("SALVIAS-db", ".table.column", nimoy_db("salvias_plots"));
150
			add_ref("SALVIAS-users", ".table.column", nimoy_db("salvias_users"));
151
			print("</blockquote>\n"); $h_level--;
152
		}
153
		add_ref("BIEN2", "", $nimoy."?target=server_databases.php");
154
		{
155
			print("<blockquote>\n"); $h_level++;
156
			add_ref("BIEN2-web", ".table.column", nimoy_db("bien_web"));
157
			add_ref("BIEN2-core", ".table.column", nimoy_db("bien2"));
158
			add_ref("BIEN2-geoscrub", ".table.column", nimoy_db("geoscrub"));
159
			add_ref("BIEN2-staging", ".table.column", nimoy_db("bien2_staging"));
160
			print("</blockquote>\n"); $h_level--;
161
		}
162
		add_ref("VegBIEN", ".table.column", phpPgAdmin("http://vegbiendev.nceas.ucsb.edu/phppgadmin/redirect.php?server=localhost%3A5432%3Aallow&database=vegbien&schema=public"));
163
		print("</blockquote>\n");
164
	}
165
	print("<h3>Primary databases</h3>");
166
	{
167
		print("<blockquote>\n");
168
		add_ref("TNRS", ".term", fragment_override("http://tnrs.iplantcollaborative.org/instructions.html", "download_results"));
169
		add_ref("CTFS", "", $CTFS);
170
		{
171
			print("<blockquote>\n"); $h_level++;
172
			add_ref("CTFS-schema", ".table.column", "https://projects.nceas.ucsb.edu/nceas/projects/bien/repository/raw/inputs/CTFS/_archive/DBv5.txt#");
173
			add_ref("CTFS-tables", ".table", fragment_override($Redmine."/wiki/CTFS", "Tables"));
174
			add_ref("CTFS-terms", ".term", $Redmine."/repository/raw/inputs/CTFS/_src/ctfs-comments_worksheet.xls#");
175
			print("</blockquote>\n"); $h_level--;
176
		}
177
		print("</blockquote>\n");
178
	}
179
	print("</blockquote>\n");
180
}
181
print("<h2>Data</h2>");
182
{
183
	print("<blockquote>\n");
184
	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=",
185
			"http://sweetgum.nybg.org/ih/"));
186
	print("</blockquote>\n");
187
}
188

    
189
if (ends_with($alias, '#')) # URL shortener requires fragment redirect
190
{
191
?>
192
			<script type="text/javascript">
193
var loc = document.location
194
if (loc.hash)
195
{
196
	var fragment = rm_prefix('#', loc.hash)
197
	var namespace = parse_dot_path(fragment).head
198
	document.getElementById(namespace).className = 'progress'
199
	document.location = fragment
200
}
201
			</script>
202
<?php
203
}
204
?>
205
		</blockquote>
206
	</body>
207
</html>
208
<?php
209
ob_end_flush();
210
?>
(2-2/5)