nicholas@2224
|
1 <?php
|
nicholas@2224
|
2 /*
|
nicholas@2224
|
3 Get Tests
|
nicholas@2224
|
4
|
nicholas@2224
|
5 This script returns the XML test names available, plus the number of tests
|
nicholas@2224
|
6 */
|
nicholas@2224
|
7
|
nicholas@2224
|
8 //http://stackoverflow.com/questions/4444475/transfrom-relative-path-into-absolute-url-using-php
|
nicholas@2224
|
9 function rel2abs($rel, $base)
|
nicholas@2224
|
10 {
|
nicholas@2224
|
11 /* return if already absolute URL */
|
nicholas@2224
|
12 if (parse_url($rel, PHP_URL_SCHEME) != '' || substr($rel, 0, 2) == '//') return $rel;
|
nicholas@2224
|
13
|
nicholas@2224
|
14 /* queries and anchors */
|
nicholas@2224
|
15 if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;
|
nicholas@2224
|
16
|
nicholas@2224
|
17 /* parse base URL and convert to local variables:
|
nicholas@2224
|
18 $scheme, $host, $path */
|
nicholas@2224
|
19 extract(parse_url($base));
|
nicholas@2224
|
20
|
nicholas@2224
|
21 /* remove non-directory element from path */
|
nicholas@2224
|
22 $path = preg_replace('#/[^/]*$#', '', $path);
|
nicholas@2224
|
23
|
nicholas@2224
|
24 /* destroy path if relative url points to root */
|
nicholas@2224
|
25 if ($rel[0] == '/') $path = '';
|
nicholas@2224
|
26
|
nicholas@2224
|
27 /* dirty absolute URL */
|
nicholas@2224
|
28 $abs = "$host$path/$rel";
|
nicholas@2224
|
29
|
nicholas@2224
|
30 /* replace '//' or '/./' or '/foo/../' with '/' */
|
nicholas@2224
|
31 $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
|
nicholas@2224
|
32 for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
|
nicholas@2224
|
33
|
nicholas@2224
|
34 /* absolute URL is ready! */
|
nicholas@2224
|
35 return $scheme.'://'.$abs;
|
nicholas@2224
|
36 }
|
nicholas@2224
|
37
|
nicholas@2224
|
38 // XML Saves location - assumes it will be saves/
|
nicholas@2224
|
39 $data = [];
|
nicholas@2224
|
40 $saves = glob("../saves/*.xml");
|
nicholas@2224
|
41 if (is_array($saves))
|
nicholas@2224
|
42 {
|
nicholas@2224
|
43 foreach($saves as $filename) {
|
nicholas@2224
|
44 $xml_string = file_get_contents($filename, FILE_TEXT);
|
nicholas@2224
|
45 $xml_object = simplexml_load_string($xml_string);
|
nicholas@2224
|
46 if ($xml_object) {
|
nicholas@2224
|
47 $filename = rel2abs($filename,"http://".$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
|
nicholas@2224
|
48 $waet = $xml_object->waet[0];
|
nicholas@2224
|
49 $testName = urldecode($waet["url"]);
|
nicholas@2224
|
50 if(array_key_exists($testName,$data)) {
|
nicholas@2224
|
51 // Key exists
|
nicholas@2224
|
52 array_push($data[$testName],$filename);
|
nicholas@2224
|
53 } else {
|
nicholas@2224
|
54 // Key does not exist
|
nicholas@2224
|
55 $data[$testName] = [$filename];
|
nicholas@2224
|
56 }
|
nicholas@2224
|
57 }
|
nicholas@2224
|
58 }
|
nicholas@2224
|
59 }
|
nicholas@2224
|
60
|
nicholas@2224
|
61 // Now read the format response
|
nicholas@2224
|
62 $format = "JSON";
|
nicholas@2224
|
63 if (array_key_exists("format",$_GET)) {
|
nicholas@2224
|
64 $format = $_GET["format"];
|
nicholas@2224
|
65 }
|
nicholas@2224
|
66 switch($format) {
|
nicholas@2224
|
67 case "JSON":
|
nicholas@2224
|
68 // Return JSON
|
nicholas@2224
|
69 $doc_root = '{"tests": [';
|
nicholas@2224
|
70 $keys = array_keys($data);
|
nicholas@2224
|
71 $numTests = count($data);
|
nicholas@2224
|
72 for ($testIndex = 0; $testIndex < $numTests; $testIndex++) {
|
nicholas@2224
|
73 $test_root = '{"testName": "'.$keys[$testIndex].'", "files": [';
|
nicholas@2224
|
74 $numFiles = count($data[$keys[$testIndex]]);
|
nicholas@2224
|
75 for ($countIndex=0; $countIndex < $numFiles; $countIndex++) {
|
nicholas@2224
|
76 $test_root = $test_root.'"'.$data[$keys[$testIndex]][$countIndex].'"';
|
nicholas@2224
|
77 if ($countIndex == $numFiles-1) {
|
nicholas@2224
|
78 $test_root = $test_root.']}';
|
nicholas@2224
|
79 } else {
|
nicholas@2224
|
80 $test_root = $test_root.',';
|
nicholas@2224
|
81 }
|
nicholas@2224
|
82 }
|
nicholas@2224
|
83 $doc_root = $doc_root.$test_root;
|
nicholas@2224
|
84 if ($testIndex == $numTests-1) {
|
nicholas@2224
|
85 $doc_root = $doc_root.']}';
|
nicholas@2224
|
86 } else {
|
nicholas@2224
|
87 $doc_root = $doc_root.',';
|
nicholas@2224
|
88 }
|
nicholas@2224
|
89 }
|
nicholas@2224
|
90 echo $doc_root;
|
nicholas@2224
|
91 break;
|
nicholas@2224
|
92 default:
|
nicholas@2224
|
93 echo '{"error": "format can only be JSON"}';
|
nicholas@2224
|
94 }
|
nicholas@2224
|
95
|
nicholas@2224
|
96 ?> |