giuliomoro@0
|
1 <?php
|
giuliomoro@0
|
2 // Comment Parser for PHP
|
giuliomoro@0
|
3 class audioElement {
|
giuliomoro@0
|
4 function __construct($id) {
|
giuliomoro@0
|
5 $this->id = $id;
|
giuliomoro@0
|
6 $this->comments = array();
|
giuliomoro@0
|
7 }
|
giuliomoro@0
|
8 function addComment($str) {
|
giuliomoro@0
|
9 array_push($this->comments,$str);
|
giuliomoro@0
|
10 }
|
giuliomoro@0
|
11 }
|
giuliomoro@0
|
12
|
giuliomoro@0
|
13 class testPage {
|
giuliomoro@0
|
14 function __construct($id) {
|
giuliomoro@0
|
15 $this->id = $id;
|
giuliomoro@0
|
16 $this->elements = array();
|
giuliomoro@0
|
17 }
|
giuliomoro@0
|
18 }
|
giuliomoro@0
|
19 // XML Saves location - assumes it will be saves/
|
giuliomoro@0
|
20 $saves = glob("../saves/*.xml");
|
giuliomoro@0
|
21 $comment_struct = array();
|
giuliomoro@0
|
22 if (is_array($saves))
|
giuliomoro@0
|
23 {
|
giuliomoro@0
|
24 foreach($saves as $filename) {
|
giuliomoro@0
|
25 $xml_string = file_get_contents($filename, FILE_TEXT);
|
giuliomoro@0
|
26 $xml_object = simplexml_load_string($xml_string);
|
giuliomoro@0
|
27 if ($xml_object == false) {
|
giuliomoro@0
|
28 echo "<h1>FATAL</h1> <span>could not parse file ".$filename.": </span>";
|
giuliomoro@0
|
29 foreach(libxml_get_errors() as $error) {
|
giuliomoro@0
|
30 echo "<br>", $error->message;
|
giuliomoro@0
|
31 }
|
giuliomoro@0
|
32 } else {
|
giuliomoro@0
|
33 // Iterate over each audioHolder node
|
giuliomoro@0
|
34 foreach($xml_object->page as $pageInstance)
|
giuliomoro@0
|
35 {
|
giuliomoro@0
|
36 // Find the page in the comment_struct
|
giuliomoro@0
|
37 $page_struct = null;
|
giuliomoro@0
|
38 foreach($comment_struct as $comment_struct_page)
|
giuliomoro@0
|
39 {
|
giuliomoro@0
|
40 if ($pageInstance['id'] == $comment_struct_page->id)
|
giuliomoro@0
|
41 {
|
giuliomoro@0
|
42 $page_struct = $comment_struct_page;
|
giuliomoro@0
|
43 break;
|
giuliomoro@0
|
44 }
|
giuliomoro@0
|
45 }
|
giuliomoro@0
|
46 if ($page_struct == null) {
|
giuliomoro@0
|
47 array_push($comment_struct,new testPage($pageInstance['id']));
|
giuliomoro@0
|
48 $page_struct = $comment_struct[count($comment_struct)-1];
|
giuliomoro@0
|
49 }
|
giuliomoro@0
|
50 // Get the audioelements of the page
|
giuliomoro@0
|
51 foreach($pageInstance->audioelement as $fragment)
|
giuliomoro@0
|
52 {
|
giuliomoro@0
|
53 // Find the page in the comment_struct
|
giuliomoro@0
|
54 $element_struct = null;
|
giuliomoro@0
|
55 foreach($page_struct->elements as $page_struct_element)
|
giuliomoro@0
|
56 {
|
giuliomoro@0
|
57 if ($fragment['id'] == $page_struct_element->id)
|
giuliomoro@0
|
58 {
|
giuliomoro@0
|
59 $element_struct = $page_struct_element;
|
giuliomoro@0
|
60 break;
|
giuliomoro@0
|
61 }
|
giuliomoro@0
|
62 }
|
giuliomoro@0
|
63 if ($element_struct == null) {
|
giuliomoro@0
|
64 array_push($page_struct->elements,new audioElement($fragment['id']));
|
giuliomoro@0
|
65 $element_struct = $page_struct->elements[count($page_struct->elements)-1];
|
giuliomoro@0
|
66 }
|
giuliomoro@0
|
67 $element_struct->addComment($fragment->comment->response);
|
giuliomoro@0
|
68 }
|
giuliomoro@0
|
69 }
|
giuliomoro@0
|
70 }
|
giuliomoro@0
|
71 }
|
giuliomoro@0
|
72 // Now we have a sub <xml> containing all comment data
|
giuliomoro@0
|
73 switch($_GET['format']) {
|
giuliomoro@0
|
74 case "XML":
|
giuliomoro@0
|
75 // Convert to an XML
|
giuliomoro@0
|
76 $doc_struct = new SimpleXMLElement('<waetprocess/>');
|
giuliomoro@0
|
77 foreach($comment_struct as $page_struct)
|
giuliomoro@0
|
78 {
|
giuliomoro@0
|
79 $doc_page = $doc_struct->addChild("page");
|
giuliomoro@0
|
80 $doc_page->addAttribute("id",$page_struct->id);
|
giuliomoro@0
|
81 foreach($page_struct->elements as $element_struct)
|
giuliomoro@0
|
82 {
|
giuliomoro@0
|
83 $doc_element = $doc_page->addChild("audioelement");
|
giuliomoro@0
|
84 $doc_element->addAttribute("id",$element_struct->id);
|
giuliomoro@0
|
85 foreach($element_struct->comments as $comment)
|
giuliomoro@0
|
86 {
|
giuliomoro@0
|
87 $doc_comment = $doc_element->addChild("comment",$comment);
|
giuliomoro@0
|
88 }
|
giuliomoro@0
|
89 }
|
giuliomoro@0
|
90 }
|
giuliomoro@0
|
91 echo $doc_struct->asXML();
|
giuliomoro@0
|
92 break;
|
giuliomoro@0
|
93 case "JSON":
|
giuliomoro@0
|
94 // Convert to JSON
|
giuliomoro@0
|
95 $doc_string = '{ "pages": [';
|
giuliomoro@0
|
96 for($page_index = 0; $page_index < count($comment_struct); $page_index++ )
|
giuliomoro@0
|
97 {
|
giuliomoro@0
|
98 $page_struct = $comment_struct[$page_index];
|
giuliomoro@0
|
99 $doc_page = '{"id": "'.$page_struct->id.'", "elements": [';
|
giuliomoro@0
|
100 for($element_index = 0; $element_index < count($page_struct->elements); $element_index++ )
|
giuliomoro@0
|
101 {
|
giuliomoro@0
|
102 $element_struct = $page_struct->elements[$element_index];
|
giuliomoro@0
|
103 $doc_element = '{"id": "'.$element_struct->id.'", "comments": [';
|
giuliomoro@0
|
104 for($comment_index = 0; $comment_index < count($element_struct->comments); $comment_index++ )
|
giuliomoro@0
|
105 {
|
giuliomoro@0
|
106 $doc_comment = '"'.$element_struct->comments[$comment_index].'"';
|
giuliomoro@0
|
107 if ($comment_index < count($element_struct->comments)-1) {
|
giuliomoro@0
|
108 $doc_comment = $doc_comment.',';
|
giuliomoro@0
|
109 }
|
giuliomoro@0
|
110 $doc_element = $doc_element.$doc_comment;
|
giuliomoro@0
|
111 }
|
giuliomoro@0
|
112 $doc_element = $doc_element.']}';
|
giuliomoro@0
|
113 if ($element_index < count($page_struct->elements)-1) {
|
giuliomoro@0
|
114 $doc_element = $doc_element.',';
|
giuliomoro@0
|
115 }
|
giuliomoro@0
|
116 $doc_page = $doc_page.$doc_element;
|
giuliomoro@0
|
117 }
|
giuliomoro@0
|
118 $doc_page = $doc_page.']}';
|
giuliomoro@0
|
119 if ($page_index < count($comment_struct)-1) {
|
giuliomoro@0
|
120 $doc_page = $doc_page.',';
|
giuliomoro@0
|
121 }
|
giuliomoro@0
|
122 $doc_string = $doc_string.$doc_page;
|
giuliomoro@0
|
123 }
|
giuliomoro@0
|
124 $doc_string = $doc_string."]}";
|
giuliomoro@0
|
125 echo $doc_string;
|
giuliomoro@0
|
126 break;
|
giuliomoro@0
|
127 case "CSV":
|
giuliomoro@0
|
128 // Conver to CSV
|
giuliomoro@0
|
129 // The CSV has three columns: page, element, comment
|
giuliomoro@0
|
130 $doc_string = "page,element,comment"."\r\n";
|
giuliomoro@0
|
131 foreach($comment_struct as $page_struct)
|
giuliomoro@0
|
132 {
|
giuliomoro@0
|
133 foreach($page_struct->elements as $element_struct)
|
giuliomoro@0
|
134 {
|
giuliomoro@0
|
135 foreach($element_struct->comments as $comment)
|
giuliomoro@0
|
136 {
|
giuliomoro@0
|
137 $doc_string = $doc_string.$page_struct->id.",".$element_struct->id.",".$comment."\r\n";
|
giuliomoro@0
|
138 }
|
giuliomoro@0
|
139 }
|
giuliomoro@0
|
140 }
|
giuliomoro@0
|
141 echo $doc_string;
|
giuliomoro@0
|
142 }
|
giuliomoro@0
|
143 } else {
|
giuliomoro@0
|
144 echo "FATAL - No saved XML files discovered";
|
giuliomoro@0
|
145 }
|
giuliomoro@0
|
146 ?> |