Mercurial > hg > extraction-interface
comparison models/extractapp.php @ 47:886f43b26ee2 extractapp
move/remove develop folder
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 17 Mar 2015 10:54:13 +0100 |
parents | |
children | c98a0c6d7eb4 |
comparison
equal
deleted
inserted
replaced
46:b3ca5d2b4d3f | 47:886f43b26ee2 |
---|---|
1 | |
2 | |
3 <?php | |
4 | |
5 class ExtractappModel extends BaseModel{ | |
6 | |
7 public function Index() { | |
8 return array("Index Value 1", "Value 2", "Value 3"); | |
9 } | |
10 | |
11 protected $section_id = 0, $data_path, $file_id = 0, $current_fileId=0, | |
12 $branch_id = 0, $user_id = 0, $lg_text = "", $topic, $taglist_infile = "", $book_meta = ""; | |
13 public $messages = ""; | |
14 | |
15 private function Initialize($_urlvalues) { | |
16 $this->SetSectionId($_urlvalues); | |
17 | |
18 } | |
19 | |
20 public function GetTextFromFileId($_postdata) { | |
21 $this->file_id = $_postdata['fileId']; | |
22 $branch_id = $_postdata['branchId']; | |
23 $section_id = $_postdata['sectionId']; | |
24 | |
25 $this->branch_id = $branch_id; | |
26 $this->user_id = $_postdata['userId']; | |
27 $this->section_id = $section_id; | |
28 | |
29 $this->section_name = $_postdata['sectionName']; | |
30 $this->book_id = $_postdata['bookId']; | |
31 $this->book_name = $_postdata['bookName']; | |
32 | |
33 // get from URL with file_id | |
34 $lg_text_url = $this->get_text_from_fileId_url.$this->file_id; | |
35 //$lg_text = file_get_contents($lg_text_url); | |
36 // --- parsing meta data | |
37 $lg_text = $this->ParseMetaData($lg_text_url); | |
38 | |
39 // ---- | |
40 | |
41 | |
42 $stringInput = $lg_text; | |
43 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
44 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
45 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
46 $lg_text = $stringInput; | |
47 | |
48 $this->lg_text = $lg_text; | |
49 | |
50 } | |
51 | |
52 public function GetTextFromSectionId($_postdata) { | |
53 $section_id = $_postdata['sectionId']; | |
54 $this->section_id = $section_id; | |
55 $this->user_id = $_postdata['userId']; | |
56 | |
57 $this->section_name = $_postdata['sectionName']; | |
58 $this->book_id = $_postdata['bookId']; | |
59 $this->book_name = $_postdata['bookName']; | |
60 | |
61 // get from URL with file_id | |
62 $lg_text_url = $this->get_text_from_sectionId_url.$section_id; | |
63 $lg_text = file_get_contents($lg_text_url); | |
64 | |
65 $stringInput = $lg_text; | |
66 $stringInput = preg_replace("/<(.*?)>/u", "○", $stringInput); | |
67 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
68 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
69 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
70 $lg_text = $stringInput; | |
71 | |
72 $this->lg_text = $lg_text; | |
73 } | |
74 | |
75 public function GetTextFromLocal($_id){ | |
76 $this->section_id = $_id; | |
77 $this->messages .= "DEBUG: from my local"."<br>"; | |
78 $this->lg_text = $this->GetSectionContent(); | |
79 | |
80 } | |
81 | |
82 public function GetInfoFromPreviousPage($_postdata) { | |
83 | |
84 if ($_postdata['fileId']) { | |
85 $this->file_id = $_postdata['fileId']; | |
86 } | |
87 if ($_postdata['sectionId']) { | |
88 $this->section_id = $_postdata['sectionId']; | |
89 } | |
90 if ($_postdata['text']) { | |
91 $this->lg_text = $_postdata['text']; | |
92 } | |
93 if ($_postdata['branchId']) { | |
94 $this->branch_id = $_postdata['branchId']; | |
95 } | |
96 if ($_postdata['userId']) { | |
97 $this->user_id = $_postdata['userId']; | |
98 } | |
99 if ($_postdata['topic_id']) { | |
100 $this->topic = $_postdata['topic_id']; | |
101 } | |
102 | |
103 if ($_postdata['sectionName']) { | |
104 $this->section_name = $_postdata['sectionName']; | |
105 } | |
106 if ($_postdata['bookName']) { | |
107 $this->book_name = $_postdata['bookName']; | |
108 } | |
109 if ($_postdata['bookId']) { | |
110 $this->book_id = $_postdata['bookId']; | |
111 } | |
112 if ($_postdata['currentFileId']) { | |
113 $this->current_fileId = $_postdata['currentFileId']; | |
114 } | |
115 if ($_postdata['taglistArray']) { | |
116 $this->taglist_infile = json_decode($_postdata['taglistArray']); | |
117 } | |
118 if ($_postdata['book_meta']) { | |
119 $this->book_meta = json_decode($_postdata['book_meta']); | |
120 } | |
121 | |
122 } | |
123 public function InitData($_postdata) { | |
124 $file_id = $_postdata['fileId']; | |
125 $branch_id = $_postdata['branchId']; | |
126 $section_id = $_postdata['sectionId']; | |
127 | |
128 $this->branch_id = $branch_id; | |
129 $this->file_id = $file_id; | |
130 $this->user_id = $_postdata['userId']; | |
131 $this->section_id = $section_id; | |
132 | |
133 if ($file_id != 0 && $branch_id != 0) { | |
134 // get from URL with file_id | |
135 $lg_text_url = $this->get_text_from_fileId_url.$file_id; | |
136 } else if ($section_id != 0) { | |
137 // get from URL with section_id | |
138 $lg_text_url = $this->get_text_from_sectionId_url.$section_id; | |
139 } else { | |
140 echo "wrong url!!"; | |
141 return; | |
142 } | |
143 | |
144 | |
145 $lg_text = file_get_contents($lg_text_url); | |
146 | |
147 /* | |
148 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
149 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
150 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
151 */ | |
152 | |
153 // the text is from database | |
154 $stringInput = $lg_text; | |
155 $stringInput = preg_replace("/<(.*?)>/u", "○", $stringInput); | |
156 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
157 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
158 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
159 $lg_text = $stringInput; | |
160 | |
161 $this->lg_text = $lg_text; | |
162 | |
163 | |
164 } | |
165 /* | |
166 public function Reload($_postdata) { | |
167 | |
168 // update text using $this->current_fileId | |
169 // getTextbyFileId | |
170 $current_fileId = $_postdata['currentFileId']; | |
171 //$this->file_id = $_postdata['currentFileId']; | |
172 //$this->GetTextFromFileId($_postdata); | |
173 //$latest_editing = $this->lg_text; | |
174 // get from URL with file_id | |
175 | |
176 $lg_text_url = $this->get_text_from_fileId_url.$current_fileId; | |
177 $lg_text = file_get_contents($lg_text_url); | |
178 | |
179 $stringInput = $lg_text; | |
180 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
181 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
182 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
183 $lg_text = $stringInput; | |
184 | |
185 | |
186 //var_dump($lg_text); | |
187 | |
188 echo json_encode($lg_text); | |
189 //var_dump($this->file_id); | |
190 | |
191 } | |
192 */ | |
193 | |
194 | |
195 // TODO: comparison not correct | |
196 private function Taglist_infileUpToDate($taglistArray) { | |
197 // compare $this->taglist_infile is the same as $taglistArray | |
198 $taglist_infile = $this->taglist_infile; | |
199 if (count($taglist_infile) != count($taglistArray)) { | |
200 return false; | |
201 } | |
202 | |
203 foreach ($taglistArray as $row_indb) { | |
204 $cnt = 0; | |
205 foreach ($taglist_infile as $row) { | |
206 //$taglistArray: array( $row['id'], $row['name'], $row['tag'], $row['color'] ) | |
207 if ($row[0] == $row_indb[0] && $row[1] == $row_indb[1] && $row[2] == $row_indb[2] && $row[3] == $row_indb[3]) { | |
208 | |
209 } else { | |
210 $cnt ++; | |
211 } | |
212 } | |
213 if ($cnt == count($row)) { | |
214 return false; | |
215 } | |
216 } | |
217 return true; | |
218 } | |
219 // === for tagging === | |
220 public function StartTagging() { | |
221 | |
222 $section_id = $this->section_id; | |
223 $stringInput = $this->lg_text; | |
224 | |
225 $data = array(); // data array to be passed to view | |
226 | |
227 //$taglistArray = $this->GetTaglistArray(); | |
228 //for GetTaglistByTopicID: | |
229 $taglistArray = $this->GetTaglistByTopicID($this->GetTopic()); | |
230 | |
231 $data['taglist_infile'] = $this->taglist_infile; | |
232 // TODO: check if taglist_infile is up-to-date | |
233 /* | |
234 if ( !$this->Taglist_infileUpToDate($taglistArray)) { | |
235 $data['taglist_infile'] = $this->taglist_infile; | |
236 } else { | |
237 $data['taglist_infile'] = ""; | |
238 } | |
239 */ | |
240 | |
241 // book_meta | |
242 $data['book_meta'] = $this->book_meta; | |
243 | |
244 // topic list | |
245 $topiclistArray = $this->GetTopiclistArray(); | |
246 | |
247 | |
248 $wordlistArray = $this->GetWordlistArray(); | |
249 | |
250 $data['stringInput'] = $stringInput; | |
251 $data['taglistArray'] = $taglistArray; | |
252 $data['wordlistArray'] = $wordlistArray; | |
253 $data['section_id'] = $section_id; | |
254 $data['topiclistArray'] = $topiclistArray; | |
255 $data['default_topic_id'] = $this->GetTopic(); | |
256 $data['topic_tag'] = $this->GetTopicTag($this->GetTopic()); | |
257 $data['topic_name'] = $this->GetTopicName($this->GetTopic()); | |
258 | |
259 | |
260 $data['info'] = array('file_id'=>$this->file_id, 'user_id'=>$this->user_id, | |
261 'branch_id'=>$this->branch_id, 'section_id'=>$this->section_id, 'book_id'=>$this->book_id, | |
262 'book_name'=>$this->book_name, 'section_name'=>$this->section_name, | |
263 'current_fileId'=>$this->current_fileId); | |
264 //'current_fileId'=>$this->file_id); | |
265 //'current_fileId'=>'123'); | |
266 | |
267 $this->messages .= "Info: "; | |
268 $this->messages .= "file_id=".$this->file_id.", section_id=".$this->section_id; | |
269 $this->messages .= ", user_id=".$this->user_id.", branch_id=".$this->branch_id.", topic_id=".$this->topic; | |
270 $this->messages .= ", book_id=".$this->book_id.", book_name=".$this->book_name.", section_name=".$this->section_name; | |
271 $this->messages .= ", current_fileId=".$this->current_fileId."<br>"; | |
272 | |
273 $data['messages'] = $this->messages; | |
274 | |
275 return $data; | |
276 | |
277 } | |
278 | |
279 public function SaveFullText($postdata) { | |
280 if ($postdata['text']){ | |
281 $date = date('Y_m_d_H_i_s', time()); | |
282 if ( file_exists("data/parsing_files/".$postdata['filename'].".txt") ) { | |
283 $oldFile = file_get_contents("data/parsing_files/".$postdata['filename'].".txt"); | |
284 file_put_contents("data/parsing_files/".$postdata['filename']."_".$date.".txt", $oldFile); | |
285 } | |
286 | |
287 if (get_magic_quotes_gpc()) { | |
288 $require = stripslashes($postdata['text']); | |
289 } else { | |
290 $require = $postdata['text']; | |
291 } | |
292 | |
293 $require = preg_replace("/【<a(.*?)>(.*?)<\/a>】/u", "【\\2】", $require); | |
294 $require = preg_replace('/&/u', "&", $require); | |
295 $require = preg_replace("/○/u", " ", $require); | |
296 $require = preg_replace("/<br>/u", "\n", $require); | |
297 $require = preg_replace("/<br>/u", "\n", $require); | |
298 file_put_contents("data/parsing_files/".$postdata['filename'].".txt", $require); | |
299 } | |
300 | |
301 } | |
302 | |
303 public function UpdateInfoByResponseFromLGService($response) { | |
304 | |
305 /* | |
306 $response_file = $response["file"]; | |
307 $response_branch = $response["branch"]; | |
308 | |
309 | |
310 $status = (string)$response["status"]; | |
311 | |
312 if ((string)$response["status"] == "error") { | |
313 $response_currentFile = $response["currentFile"]; | |
314 | |
315 $this->current_fileId = (string)$response_currentFile['id']; | |
316 $this->messages .= "saving does not success! ".(string)$response["message"]; | |
317 | |
318 | |
319 } else { | |
320 | |
321 $this->messages .= "saving success."; | |
322 var_dump((string)$response_file["id"]); | |
323 | |
324 $this->file_id = (string)$response_file["id"]; | |
325 $this->branch_id = (string)$response_branch["id"]; | |
326 | |
327 } | |
328 */ | |
329 | |
330 | |
331 $response_file = $response["file"]; | |
332 $response_branch = $response["branch"]; | |
333 | |
334 $status = (string)$response["status"]; | |
335 if ($status == "ok") { | |
336 $this->messages .= "saving success."; | |
337 $this->file_id = (string)$response_file["id"]; | |
338 $this->branch_id = (string)$response_branch["id"]; | |
339 | |
340 } else if ($status == "error") { | |
341 // saving not success | |
342 $this->messages .= "saving does not success! ".(string)$response["message"]; | |
343 $response_currentFile = $response["currentFile"]; | |
344 //$this->current_fileId = $response["currentFileId"]; | |
345 $this->current_fileId = (string)$response_currentFile["id"]; | |
346 | |
347 } | |
348 | |
349 | |
350 } | |
351 private function AppendMetaData($text_content) { | |
352 $text = '<?xml version="1.0" encoding="UTF-8"?>'; | |
353 $text .= "\n<text>\n"; | |
354 // topic | |
355 $text .= "<topic>".$this->topic."</topic>\n"; | |
356 // book meta data | |
357 $book = $this->book_meta; | |
358 foreach ($book as $b) { | |
359 $text .= "<book>\n"; | |
360 $text .= "<title>".$b[0]."</title>\n"; | |
361 $text .= "<author>".$b[1]."</author>\n"; | |
362 $text .= "<year>".$b[2]."</year>\n"; | |
363 $text .= "<pagenumber>".$b[3]."</pagenumber>\n"; | |
364 $text .= "</book>\n"; | |
365 } | |
366 // taglist | |
367 $taglist = $this->taglist_infile; | |
368 foreach ($taglist as $tagitem) { | |
369 $text .= "<tagitem>\n"; | |
370 $text .= "<id>".$tagitem[0]."</id>\n"; | |
371 $text .= "<name>".$tagitem[1]."</name>\n"; | |
372 $text .= "<tag>".$tagitem[2]."</tag>\n"; | |
373 $text .= "<color>".$tagitem[3]."</color>\n"; | |
374 $text .= "</tagitem>\n"; | |
375 } | |
376 | |
377 // text_content | |
378 $text .= $text_content; | |
379 $text .= "\n</text>"; | |
380 | |
381 return $text; | |
382 } | |
383 public function SaveFullTextToLGService($_postdata) { | |
384 // save tagged text (full text) by Jorge's API to lg service | |
385 | |
386 // -------- | |
387 if ($_postdata['text']){ | |
388 $date = date('Y_m_d_H_i_s', time()); | |
389 if ( file_exists("data/parsing_files/".$_postdata['sectionId'].".txt") ) { | |
390 $oldFile = file_get_contents("data/parsing_files/".$_postdata['sectionId'].".txt"); | |
391 //saving in my local machine in developing phrase | |
392 file_put_contents("data/parsing_files/".$_postdata['sectionId']."_".$date.".txt", $oldFile); | |
393 } | |
394 | |
395 if (get_magic_quotes_gpc()) { | |
396 $require = stripslashes($_postdata['text']); | |
397 } else { | |
398 $require = $_postdata['text']; | |
399 } | |
400 | |
401 $require = preg_replace("/【<a(.*?)>(.*?)<\/a>】/u", "【\\2】", $require); | |
402 $require = preg_replace('/&/u', "&", $require); | |
403 $require = preg_replace("/○/u", " ", $require); | |
404 $require = preg_replace("/<br>/u", "\n", $require); | |
405 //$require = preg_replace("/<br>/u", "\n", $require); | |
406 | |
407 if ($_postdata['branchId'] == 0) { | |
408 // -- new branch case | |
409 $require = "<text_content>\n".$require."</text_content>\n"; | |
410 } | |
411 $require = $this->AppendMetaData($require); | |
412 | |
413 //saving in my local machine in developing phrase | |
414 file_put_contents("data/parsing_files/".$_postdata['sectionId'].".txt", $require); | |
415 } | |
416 | |
417 // ------ | |
418 | |
419 | |
420 if ($_postdata['branchId'] != 0) { | |
421 // -- exiting branch case | |
422 $postfields = array( | |
423 "text" => $require, | |
424 "branchId" => $_postdata['branchId'], | |
425 "userId" => $_postdata['userId'], | |
426 "userPreviousFileId" => $_postdata['fileId'], | |
427 ); | |
428 $save_url = $this->save_to_LGService_url; | |
429 | |
430 } else { | |
431 // -- new branch case | |
432 echo "saveNew!"; | |
433 $user_id = "0"; | |
434 if ($_postdata['userId']) { | |
435 $user_id = $_postdata['userId']; | |
436 } | |
437 | |
438 $postfields = array( | |
439 "text" => $require, | |
440 "sectionId" => $_postdata['sectionId'], | |
441 "userId" => $user_id, | |
442 "label" => $_postdata['label'], | |
443 ); | |
444 $save_url = $this->save_new_to_LGService_url; | |
445 } | |
446 | |
447 | |
448 // set up the curl resource | |
449 $ch = curl_init(); | |
450 curl_setopt($ch, CURLOPT_URL, $save_url); | |
451 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
452 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); | |
453 curl_setopt($ch, CURLOPT_POST, true); | |
454 curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); | |
455 //curl_setopt($ch, CURLOPT_HEADER, true); | |
456 curl_setopt($ch, CURLOPT_HTTPHEADER, array( | |
457 'Content-type: multipart/form-data;charset=utf-8' | |
458 )); | |
459 | |
460 // execute the request | |
461 // **** commended to DEBUG *** | |
462 //$output = curl_exec($ch); | |
463 // ***** | |
464 | |
465 // output the profile information - includes the header | |
466 //echo($output) . PHP_EOL; | |
467 | |
468 // close curl resource to free up system resources | |
469 curl_close($ch); | |
470 | |
471 $response = json_decode($output, true); | |
472 return $response; | |
473 | |
474 } | |
475 | |
476 // --- for regex ---- | |
477 public function GetRegexFilenameById($topic_id) { | |
478 $query = sprintf("SELECT regex_filename FROM `topic_regex_relation` WHERE topic_id=\"%s\"", $topic_id); | |
479 $result = mysql_query($query); | |
480 if (!$result) { | |
481 return json_encode("Failed during selecting topic_regex_relation table."); | |
482 } | |
483 | |
484 $filenames = array(); | |
485 while ($row = mysql_fetch_assoc($result)) { | |
486 array_push($filenames, $row['regex_filename']); | |
487 } | |
488 | |
489 return $filenames; | |
490 } | |
491 public function SmartRegexLoad($topic_id) { | |
492 | |
493 // Load regex file based on current topic. Only shows the regex in this topic -- | |
494 $filenames = $this->GetRegexFilenameById($topic_id); | |
495 | |
496 // Get regex file from filesystem ---- | |
497 $data_path = "./data/"; // get the current file path, which is getcwd(), and concatenate with "/data/" | |
498 $returnArray = array(); | |
499 $files1 = scandir($data_path."regex_files"); | |
500 foreach ( $files1 as $file ) { | |
501 if ( $file != "." && $file != ".." && $file != ".DS_Store") { | |
502 foreach ($filenames as $filename) { | |
503 if ($file == $filename) { | |
504 $returnArray[preg_replace("/\.txt/", "", $file)] = file_get_contents( $data_path."regex_files/".$file ); | |
505 break; | |
506 } | |
507 } | |
508 } | |
509 } | |
510 echo json_encode($returnArray); | |
511 return; | |
512 } | |
513 | |
514 | |
515 public function SmartRegexSave($_postdata) { | |
516 if ($_postdata['text']){ | |
517 | |
518 // --- update topic_regex_relation table --- | |
519 $topic_id = $_postdata['topic_id']; | |
520 $filename = $_postdata['filename'].'.txt'; | |
521 | |
522 // check if already existing a record for this regex file | |
523 $query = "SELECT * FROM topic_regex_relation WHERE topic_id=".$topic_id." AND regex_filename='".$filename."'"; | |
524 $result = mysql_query($query); | |
525 if (!$result) { | |
526 echo json_encode("ErrorDB"); | |
527 } | |
528 while ($row = mysql_fetch_assoc($result)) { | |
529 if ($row && !$_postdata['forcesave']) { | |
530 // promt user a comfirm to force saving or not | |
531 echo json_encode("ForceSave"); | |
532 return; | |
533 } | |
534 } | |
535 | |
536 | |
537 if (!$_postdata['forcesave']) { | |
538 $query = "INSERT INTO topic_regex_relation (topic_id, regex_filename) VALUES (".$topic_id.",'".$filename."')"; | |
539 $result = mysql_query($query); | |
540 if (!$result) { | |
541 echo json_encode("ErrorDB"); | |
542 } | |
543 } | |
544 // --- write to filesystem --- | |
545 | |
546 /* | |
547 $date = date('Y_m_d_H_i_s', time()); | |
548 if ( file_exists("regex_files/".$_POST['filename'].".txt") ) { | |
549 $oldFile = file_get_contents("regex_files/".$_POST['filename'].".txt"); | |
550 file_put_contents("regex_files/".$_POST['filename']."_".$date.".txt", $oldFile); | |
551 } | |
552 */ | |
553 $data_path = "./data/"; // get the current file path, which is getcwd(), and concatenate with "/data/" | |
554 | |
555 if (get_magic_quotes_gpc()) { | |
556 $require = stripslashes($_postdata['text']); | |
557 } else { | |
558 $require = $_postdata['text']; | |
559 } | |
560 | |
561 file_put_contents( $data_path."regex_files/".$_postdata['filename'].".txt", $require); | |
562 | |
563 | |
564 } | |
565 } | |
566 | |
567 | |
568 // === for export table === | |
569 public function ExportTable($postdata) { | |
570 // $this->Initialize($urlvalues); | |
571 | |
572 $content = $postdata['content']; | |
573 $topic = $postdata['topic']; | |
574 $section_id = $postdata['sectionId']; | |
575 | |
576 //$section_id = $this->section_id; | |
577 | |
578 | |
579 // TODO: this should be get from LGService: sectionName, bookId, bookName | |
580 $sectionName = $postdata['sectionName']; | |
581 $bookId = $postdata['bookId']; | |
582 $bookName = $postdata['bookName']; | |
583 | |
584 | |
585 // --- replace if get info from LGService | |
586 /* | |
587 $section_info = $this->GetSectionInfo(); | |
588 | |
589 $sectionName = $section_info['sectionName']; | |
590 $bookId = $section_info['bookId']; | |
591 | |
592 $books_info = $this->GetBooksInfo($bookId); | |
593 $bookName = $books_info['bookName']; | |
594 */ | |
595 // ===== | |
596 | |
597 | |
598 $outputTableArray = array(); | |
599 | |
600 //$taglistArray = $this->GetTaglistArray(); | |
601 $taglistArray = $this->GetTaglistByTopicID($topic); | |
602 | |
603 $outputTableArray[0]=array(); | |
604 $outputTableArray[0][0]=array(); | |
605 $outputTableArray[0][1]=array(); | |
606 foreach ( $taglistArray as $value ) { | |
607 $outputTableArray[0][0][$value[2]] = $value[1]; | |
608 $outputTableArray[0][1][$value[2]] = $value[1]."(Title)"; | |
609 } | |
610 $outputTableArray[0]["other"] = "其他"; | |
611 $outputTableArray[0]["page"] = "頁數"; | |
612 $outputTableArray[0]["full"] = "全文"; | |
613 | |
614 foreach ( $taglistArray as $tagValue ) { | |
615 $content = preg_replace("/<\/".$tagValue[2].">○*<".$tagValue[2].">/u", "", $content); | |
616 $content = preg_replace("/<".$tagValue[2].">[ ]*<\/".$tagValue[2].">/u", "", $content); | |
617 } | |
618 | |
619 $contentLineArray = explode( "<br>", $content ); | |
620 | |
621 $count=0; | |
622 $pageNow=NULL; | |
623 foreach ( $contentLineArray as $value ) { | |
624 $count++; | |
625 $recordString = $value; | |
626 $otherString = $recordString; | |
627 //echo $recordString."<br>\n"; | |
628 if ( preg_match("/【<a(.*?)>(.*?)<\/a>】/u", $recordString, $matches) ) { | |
629 $pageNow = $matches[2]; | |
630 } | |
631 foreach ( $taglistArray as $tagValue ) { | |
632 if ( preg_match_all("/<".$tagValue[2].">(.*?)<\/".$tagValue[2].">/u", $recordString, $matches, PREG_SET_ORDER) ) { | |
633 foreach ( $matches as $matchesValue ) { | |
634 $matchesValue[1] = preg_replace("/○/u", "", $matchesValue[1]); | |
635 if ( preg_match_all("/〈(.*?)〉/u", $matchesValue[1], $matches2, PREG_SET_ORDER) ) { | |
636 foreach ( $matches2 as $matches2Value ) { | |
637 if ( isset($outputTableArray[$count][0][$tagValue[2]]) ) { | |
638 $outputTableArray[$count][0][$tagValue[2]] .= ";".$matches2Value[1]; | |
639 } else { | |
640 $outputTableArray[$count][0][$tagValue[2]] = $matches2Value[1]; | |
641 } | |
642 } | |
643 } else { | |
644 if ( isset($outputTableArray[$count][0][$tagValue[2]]) ) { | |
645 $outputTableArray[$count][0][$tagValue[2]] .= ";".$matchesValue[1]; | |
646 } else { | |
647 $outputTableArray[$count][0][$tagValue[2]] = $matchesValue[1]; | |
648 } | |
649 } | |
650 } | |
651 $otherString = preg_replace("/<".$tagValue[2].">(.*?)<\/".$tagValue[2].">/u", " ", $otherString); | |
652 } | |
653 } | |
654 $otherString = preg_replace("/○/u", "", $otherString); | |
655 $outputTableArray[$count]["other"] = $otherString; | |
656 $outputTableArray[$count]["page"] = $pageNow; | |
657 $value = preg_replace("/>/u", ">", $value); | |
658 $value = preg_replace("/</u", "<", $value); | |
659 $outputTableArray[$count]["full"] = $value; | |
660 } | |
661 /* | |
662 echo "<br>"."DEBUG: outputTableArray:"."<br>"; | |
663 var_dump($outputTableArray); | |
664 */ | |
665 | |
666 $topic_tag = $this->GetTopicTag($topic); | |
667 | |
668 foreach ( $outputTableArray as $arrayIndex => $arrayValue ) { | |
669 // output each row which the topic tag | |
670 // e.g. the original version is for 'person' | |
671 if ( !isset($arrayValue[0][$topic_tag]) ) { | |
672 unset($outputTableArray[$arrayIndex]); | |
673 } | |
674 | |
675 /* | |
676 if ($topic == 1) { | |
677 if ( !isset($arrayValue[0]["person"]) ) { | |
678 unset($outputTableArray[$arrayIndex]); | |
679 } | |
680 } else if ($topic == 2) { | |
681 | |
682 // for object topic | |
683 if ( !isset($arrayValue[0]["object"]) ) { // only the record with the tag of 'object' will become a row | |
684 unset($outputTableArray[$arrayIndex]); | |
685 } | |
686 } | |
687 */ | |
688 | |
689 } | |
690 | |
691 $data = array(); | |
692 | |
693 $data['outputTableArray'] = $outputTableArray; | |
694 $data['bookId'] = $bookId; | |
695 $data['section_id'] = $section_id; | |
696 $data['bookName'] = $bookName; | |
697 $data['sectionName'] = $sectionName; | |
698 | |
699 return $data; | |
700 | |
701 } | |
702 | |
703 // === for manage tag list === | |
704 public function EditTaglist($_postdata) { | |
705 $query = "SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='taglist'"; | |
706 $result = mysql_query($query); | |
707 if (!$result) { | |
708 echo json_encode(mysql_error()); | |
709 } | |
710 $row = mysql_fetch_assoc($result); | |
711 $largest_id = $row['AUTO_INCREMENT']; | |
712 | |
713 | |
714 $topic_id = $_postdata['topic_id']; | |
715 $result = $this->GetTaglistByTopicID($topic_id); | |
716 | |
717 $taglistArray = array(); | |
718 | |
719 foreach ($result as $row) { | |
720 $taglistArray[$row[0]] = array($row[1], $row[2], $row[3]); | |
721 //$taglistArray[$row['id']] = array($row['name'], $row['tag'], $row['color']); | |
722 // TODO: the format is not good, so I use $row[0], $row[1],... This could be changed some time. | |
723 } | |
724 | |
725 $topic_tag_name = $this->GetTopicTag($topic_id); | |
726 | |
727 $query = "SELECT id FROM taglist WHERE taglist.tag='".$topic_tag_name."'"; | |
728 $result = mysql_query($query); | |
729 if (!$result) { | |
730 echo json_encode(mysql_error()); | |
731 } | |
732 $row = mysql_fetch_assoc($result); | |
733 $topic_tag_id = $row['id']; | |
734 | |
735 $data = array(); | |
736 $data['taglistArray'] = $taglistArray; | |
737 $data['topic_id'] = $topic_id; | |
738 $data['largest_id'] = $largest_id; | |
739 $data['topic_tag_id'] = $topic_tag_id; | |
740 | |
741 | |
742 return $data; | |
743 | |
744 } | |
745 | |
746 private function _GetTag($_postdata) { | |
747 if (get_magic_quotes_gpc()) { | |
748 $id = stripslashes($_postdata['id']); | |
749 $name = stripslashes($_postdata['name']); | |
750 $tag = stripslashes($_postdata['tag']); | |
751 $color = stripslashes($_postdata['color']); | |
752 } else { | |
753 $id = $_postdata['id']; | |
754 $name = $_postdata['name']; | |
755 $tag = $_postdata['tag']; | |
756 $color = $_postdata['color']; | |
757 } | |
758 return array($id, $name, $tag, $color); | |
759 } | |
760 | |
761 public function NewTagElement($postdata) { | |
762 if ($postdata['id']){ | |
763 list($id, $name, $tag, $color) = $this->_GetTag($postdata); | |
764 | |
765 $query1 = sprintf("INSERT INTO `taglist` (`id`, `name`, `tag`, `color`, `systemName`) VALUES (%s, %s, %s, %s, %s)", | |
766 $this->GetSQLValueString($id, "int"), | |
767 $this->GetSQLValueString($name, "text"), | |
768 $this->GetSQLValueString($tag, "text"), | |
769 $this->GetSQLValueString($color, "text"), | |
770 $this->GetSQLValueString($this->systemNAME, "text")); | |
771 $result1 = mysql_query($query1); | |
772 | |
773 | |
774 // add it to topic_tag_relation table | |
775 $topic_id = $postdata['topic_id']; | |
776 | |
777 // tag_id is $id; | |
778 $query = sprintf("INSERT INTO `topic_tag_relation` (`topic_id`,`tag_id`) VALUES (%s,%s)", $topic_id, $id); | |
779 $result = mysql_query($query); | |
780 if (!$result) { | |
781 echo json_encode("error when insert into topic_tag_relation table"); | |
782 } | |
783 } | |
784 | |
785 } | |
786 | |
787 public function SaveTagElement($postdata) { | |
788 if ($postdata['id']){ | |
789 list($id, $name, $tag, $color) = $this->_GetTag($postdata); | |
790 | |
791 $query = sprintf("UPDATE taglist SET `name`=%s, `tag`=%s, `color`=%s WHERE `id`=%s", | |
792 $this->GetSQLValueString($name, "text"), | |
793 $this->GetSQLValueString($tag, "text"), | |
794 $this->GetSQLValueString($color, "text"), | |
795 $this->GetSQLValueString($id, "int")); | |
796 $result = mysql_query($query); | |
797 | |
798 } | |
799 | |
800 } | |
801 | |
802 public function DeleteTag($postdata) { | |
803 if ($postdata['id']) { | |
804 $queryInsert = sprintf("DELETE FROM `taglist` WHERE `id` = %s", stripslashes($postdata['id'])); | |
805 $resultInsert = mysql_query($queryInsert); | |
806 } | |
807 | |
808 } | |
809 | |
810 // === for config topic === | |
811 public function ConfigTagsInTopic($postdata) { | |
812 $topic = $postdata['topic']; | |
813 $result = $this->GetTopicByID($topic); | |
814 $row = mysql_fetch_assoc($result); | |
815 $topic_name = $row['name']; | |
816 | |
817 /* | |
818 $query = "SELECT taglist.*, topic_tag_relation.topic_id FROM taglist LEFT JOIN topic_tag_relation ON taglist.id = topic_tag_relation.tag_id ORDER BY `topic_id`"; | |
819 $result = mysql_query($query); | |
820 if (!$result) { | |
821 return json_encode("Failed during selecting/joining taglist and topic_tag_relation table."); | |
822 } | |
823 $taglistArray = array(); | |
824 while ($row = mysql_fetch_assoc($result)) { | |
825 array_push($taglistArray, array('id'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id']) ); | |
826 } | |
827 */ | |
828 | |
829 // ------ | |
830 $query = "SELECT taglist.*, topic_tag_relation.topic_id FROM taglist LEFT JOIN topic_tag_relation ON taglist.id = topic_tag_relation.tag_id ORDER BY `topic_id`"; | |
831 $result = mysql_query($query); | |
832 if (!$result) { | |
833 return json_encode("Failed during selecting/joining taglist and topic_tag_relation table."); | |
834 } | |
835 | |
836 $tag_intopic = array(); | |
837 $tag_others = array(); | |
838 $tag_tmp_others = array(); | |
839 while ($row = mysql_fetch_assoc($result)) { | |
840 if ($row['topic_id'] == $topic) { | |
841 array_push($tag_intopic, array('id'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id'])); | |
842 } else { | |
843 array_push($tag_tmp_others, array('id'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id'])); | |
844 } | |
845 } | |
846 | |
847 // --- check if there's any duplicated tags in tag_tmp_others. remove the duplicated tags | |
848 $num_others = count($tag_tmp_others); | |
849 for ($i=0; $i < $num_others; $i++) { | |
850 $cnt = 0; | |
851 for ($j=$i+1; $j < $num_others; $j++) { | |
852 if ($tag_tmp_others[$i]['tag'] == $tag_tmp_others[$j]['tag']) { | |
853 break; | |
854 } else { | |
855 $cnt++; | |
856 } | |
857 } | |
858 if ($cnt == ($num_others-$i-1) ) { | |
859 $row = $tag_tmp_others[$i]; | |
860 array_push($tag_others, array('id'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id']) ); | |
861 } | |
862 } | |
863 | |
864 // --- remove duplicated tags in tag_others that is duplicated with tags in tag_intopic | |
865 $tag_tmp_others = $tag_others; | |
866 $tag_others = array(); | |
867 | |
868 foreach ($tag_tmp_others as $tmp) { | |
869 $cnt = 0; | |
870 foreach ($tag_intopic as $intopic) { | |
871 if ($tmp['tag'] == $intopic['tag']) { | |
872 break; | |
873 } else { | |
874 $cnt ++; | |
875 } | |
876 } | |
877 if ($cnt == count($tag_intopic)) { | |
878 // not appear in $tag_intopic | |
879 array_push($tag_others, $tmp); | |
880 } | |
881 } | |
882 | |
883 // ----- | |
884 | |
885 | |
886 $data = array(); | |
887 //$data['taglistArray'] = $taglistArray; | |
888 $data['topic'] = $topic; | |
889 $data['topic_name'] = $topic_name; | |
890 | |
891 $data['tag_intopic'] = $tag_intopic; | |
892 $data['tag_others'] = $tag_others; | |
893 | |
894 return $data; | |
895 } | |
896 | |
897 | |
898 public function UpdateTagsInTopic($_postdata) { | |
899 $topic_id = $_postdata['topic_id']; | |
900 $tag_ids = json_decode(str_replace('\\', '', $_postdata['ids'])); | |
901 | |
902 // update topic_tag_relation by tags_ids array as `tag_id` and topic_id as `topic_id` | |
903 // --- add new topic_tag_relation --- | |
904 foreach ($tag_ids as $tag_id) { | |
905 $query = "SELECT * FROM topic_tag_relation WHERE tag_id=".$tag_id; | |
906 $result = mysql_query($query); | |
907 if (!$result) { | |
908 echo json_encode("error when select from topic_tag_relation"); | |
909 } | |
910 $topic_tag = array(); | |
911 $flag = false; | |
912 while ($row = mysql_fetch_assoc($result)) { | |
913 if ($row['topic_id'] == $topic_id) { | |
914 $flag = true; | |
915 break; | |
916 } | |
917 } | |
918 if (!$flag) { | |
919 // insert a row into topic_tag_relation table | |
920 $queryUpdate = "INSERT INTO topic_tag_relation (topic_id, tag_id) VALUES (".$topic_id.",".$tag_id.")"; | |
921 $resultUpdate = mysql_query($queryUpdate); | |
922 if (!$resultUpdate) { | |
923 return json_encode("error when insert topic_tag_relation table"); | |
924 } | |
925 } | |
926 | |
927 } | |
928 | |
929 // --- remove tags from this topic --- | |
930 $query = "SELECT * FROM topic_tag_relation WHERE topic_id=".$topic_id; | |
931 $result = mysql_query($query); | |
932 if (!$result) { | |
933 echo json_encode("error when select from topic_tag_relation"); | |
934 } | |
935 | |
936 while ($row = mysql_fetch_assoc($result)) { | |
937 $cnt = 0; | |
938 foreach ($tag_ids as $tag_id) { | |
939 if ($row['tag_id'] == $tag_id) { | |
940 break; | |
941 } else { | |
942 $cnt ++; | |
943 } | |
944 } | |
945 $_id = $row['id']; | |
946 if ($cnt == count($tag_ids)) { | |
947 // delete row with (topic_id, tag_ids) | |
948 $queryDelete = "DELETE FROM topic_tag_relation WHERE id=".$_id; | |
949 $resultDelete = mysql_query($queryDelete); | |
950 if (!$resultDelete) { | |
951 echo json_encode("error when delete from topic_tag_relation"); | |
952 } | |
953 } | |
954 } | |
955 | |
956 | |
957 | |
958 /* | |
959 $query = "SELECT * FROM topic_tag_relation"; | |
960 $result = mysql_query($query); | |
961 if (!$result) { | |
962 echo json_encode("error when select from topic_tag_relation"); | |
963 } | |
964 $topic_tag = array(); | |
965 while ($row = mysql_fetch_assoc($result)) { | |
966 array_push($topic_tag, array('tag_id'=>$row['tag_id'], 'topic_id'=>$row['topic_id'])); | |
967 } | |
968 | |
969 | |
970 foreach ($topic_tag as $value) { | |
971 $flag = false; | |
972 foreach ($tag_ids as $tag_id) { | |
973 if ($value['tag_id'] == $tag_id) { | |
974 //update its topic_id to $topic_id | |
975 $queryUpdate = "UPDATE topic_tag_relation SET topic_id=".$topic_id." WHERE tag_id=".$tag_id; | |
976 $resultUpdate = mysql_query($queryUpdate); | |
977 if (!$resultUpdate) { | |
978 return json_encode("error when update topic_tag_relation table"); | |
979 } | |
980 $flag = true; | |
981 break; | |
982 } | |
983 } | |
984 if (!$flag && $value['topic_id'] == $topic_id) { | |
985 // set its topic_id to 0, indicating unsigned | |
986 $queryUpdate = "UPDATE topic_tag_relation SET topic_id=0 WHERE tag_id=".$value['tag_id']; | |
987 $resultUpdate = mysql_query($queryUpdate); | |
988 if (!$resultUpdate) { | |
989 return json_encode("error when update topic_tag_relation table"); | |
990 } | |
991 } | |
992 } | |
993 */ | |
994 | |
995 } | |
996 | |
997 | |
998 private function GetTaglistByTopicID($topic_id) { | |
999 $taglistArray = array(); | |
1000 // select taglist ids from topic_tag_relation table | |
1001 $query = sprintf("SELECT * FROM `topic_tag_relation` WHERE `topic_id`='%s'", $topic_id); | |
1002 $result = mysql_query($query); | |
1003 if (!$result) { | |
1004 return json_encode("Failed during selecting topic_tag_relation table."); | |
1005 } | |
1006 $taglist_ids = array(); | |
1007 | |
1008 while ($row = mysql_fetch_assoc($result)) { | |
1009 array_push($taglist_ids, $row['tag_id']); | |
1010 } | |
1011 | |
1012 // select taglist by tag ids | |
1013 foreach ($taglist_ids as $tag_id) { | |
1014 $query = sprintf("SELECT * FROM `taglist` WHERE `id`='%s'", $tag_id); | |
1015 $result = mysql_query($query); | |
1016 if (!$result) { | |
1017 echo mysql_error(); | |
1018 return json_encode("Failed during selecting taglist table."); | |
1019 } | |
1020 | |
1021 $row = mysql_fetch_assoc($result); | |
1022 array_push($taglistArray, array( $row['id'], $row['name'], $row['tag'], $row['color'] )); | |
1023 | |
1024 } | |
1025 return $taglistArray; | |
1026 } | |
1027 | |
1028 public function SetTopic($topic) { | |
1029 $this->topic = $topic; | |
1030 } | |
1031 | |
1032 public function GetTopic() { | |
1033 return $this->topic; | |
1034 } | |
1035 | |
1036 private function GetTopiclistArray() { | |
1037 $topiclistArray = array(); | |
1038 $result = $this->GetTopiclist(); | |
1039 while ($row = mysql_fetch_assoc($result)) { | |
1040 array_push($topiclistArray, array('id'=>$row['id'],'name'=>$row['name'],'tag'=>$row['tag'])); | |
1041 } | |
1042 return $topiclistArray; | |
1043 } | |
1044 | |
1045 | |
1046 private function GetTopicTag($topic_id) { | |
1047 $result = $this->GetTopicByID($topic_id); | |
1048 $row = mysql_fetch_assoc($result); | |
1049 $tag = $row['tag']; | |
1050 return $tag; | |
1051 | |
1052 } | |
1053 private function GetTopicName($topic_id) { | |
1054 $result = $this->GetTopicByID($topic_id); | |
1055 $row = mysql_fetch_assoc($result); | |
1056 $name = $row['name']; | |
1057 return $name; | |
1058 | |
1059 } | |
1060 | |
1061 | |
1062 // =========================== | |
1063 | |
1064 // === for manage wordlist === | |
1065 public function EditWordlist() { | |
1066 $result = $this->GetWordlist(); | |
1067 $wordlistArray = array(); | |
1068 while ($row = mysql_fetch_assoc($result)) { | |
1069 $wordlistArray[$row['id']] = $row['name']; | |
1070 } | |
1071 | |
1072 $data = array(); | |
1073 $data['wordlistArray'] = $wordlistArray; | |
1074 return $data; | |
1075 } | |
1076 | |
1077 | |
1078 public function AddNewList($postdata) { | |
1079 if ($postdata['text']){ | |
1080 if (get_magic_quotes_gpc()) { | |
1081 $name = stripslashes($postdata['text']); | |
1082 } else { | |
1083 $name = $postdata['text']; | |
1084 } | |
1085 | |
1086 $query1 = sprintf("INSERT INTO `wordlist` (`name`, `systemName`) VALUES (%s, %s)", | |
1087 $this->GetSQLValueString($name, "text"), | |
1088 $this->GetSQLValueString($this->systemNAME, "text")); | |
1089 $result1 = mysql_query($query1); | |
1090 file_put_contents( "data/wordlist/".mysql_insert_id().".txt", "(empty now)"); | |
1091 } | |
1092 } | |
1093 | |
1094 | |
1095 public function SaveWordlist($postdata) { | |
1096 | |
1097 if ($postdata['text']){ | |
1098 $date = date('Y_m_d_H_i_s', time()); | |
1099 if ( file_exists("data/wordlist/".$postdata['filename'].".txt") ) { | |
1100 $filename = "data/wordlist/".$postdata['filename']."_".$date.".txt"; | |
1101 $oldFile = file_get_contents("data/wordlist/".$postdata['filename'].".txt"); | |
1102 file_put_contents($filename, $oldFile); | |
1103 } | |
1104 /*else { | |
1105 $filename = "data/wordlist/".$postdata['filename'].".txt"; | |
1106 } | |
1107 */ | |
1108 | |
1109 | |
1110 if (get_magic_quotes_gpc()) { | |
1111 $require = stripslashes($postdata['text']); | |
1112 } else { | |
1113 $require = $postdata['text']; | |
1114 } | |
1115 | |
1116 $require = preg_replace("/<br>/u", "<br>", $require); | |
1117 file_put_contents("data/wordlist/".$postdata['filename'].".txt", $require); | |
1118 } | |
1119 /* | |
1120 if ($postdata['text']){ | |
1121 $date = date('Y_m_d_H_i_s', time()); | |
1122 if ( file_exists("data/wordlist/".$postdata['filename'].".txt") ) { | |
1123 $oldFile = file_get_contents("data/wordlist/".$postdata['filename'].".txt"); | |
1124 file_put_contents("data/wordlist/".$postdata['filename']."_".$date.".txt", $oldFile); | |
1125 } | |
1126 | |
1127 if (get_magic_quotes_gpc()) { | |
1128 $require = stripslashes($postdata['text']); | |
1129 } else { | |
1130 $require = $postdata['text']; | |
1131 } | |
1132 | |
1133 // $require = preg_replace("/<br>/u", "", $require); | |
1134 file_put_contents("data/wordlist/".$postdata['filename'].".txt", $require); | |
1135 } | |
1136 */ | |
1137 } | |
1138 | |
1139 | |
1140 // ======================================= | |
1141 | |
1142 public function sortFunction($a,$b) { | |
1143 return strlen($b)-strlen($a); | |
1144 } | |
1145 | |
1146 // TODO: delete this | |
1147 private function SetSectionId($_urlvalues) { | |
1148 // TODO: maybe get user info also | |
1149 // get book id from url | |
1150 if ($_urlvalues['id'] != "") { | |
1151 $section_id = $_urlvalues['id']; | |
1152 } else { | |
1153 return json_encode("Error: No section id"); | |
1154 /* ???? */ | |
1155 /* | |
1156 $get_book_id = $urlvalues['book']; | |
1157 $get_start = $urlvalues['start']; | |
1158 $get_end = $urlvalues['end']; | |
1159 */ | |
1160 } | |
1161 $this->section_id = $section_id; | |
1162 | |
1163 } | |
1164 | |
1165 private function GetSectionId() { | |
1166 | |
1167 if (is_numeric($this->section_id)) { | |
1168 return $this->section_id; | |
1169 } else { | |
1170 return json_encode("Error: No section id"); | |
1171 } | |
1172 } | |
1173 | |
1174 private function GetSectionInfo() { | |
1175 $section_id = $this->GetSectionId(); | |
1176 if (!is_numeric($section_id)){ | |
1177 return $section_id; | |
1178 } | |
1179 | |
1180 $result = $this->GetSectionsByID($section_id); | |
1181 | |
1182 | |
1183 while ($row = mysql_fetch_assoc($result)) { | |
1184 $bookId=$row['books_id']; | |
1185 $startPage=$row['start_page']; | |
1186 $endPage=$row['end_page']; | |
1187 $sectionName = $row['name']; | |
1188 } | |
1189 | |
1190 $data = array(); | |
1191 $data['bookId'] = $bookId; | |
1192 $data['startPage'] = $startPage; | |
1193 $data['endPage'] = $endPage; | |
1194 $data['sectionName'] = $sectionName; | |
1195 | |
1196 | |
1197 return $data; | |
1198 } | |
1199 | |
1200 private function ParseMetaData($filename) { | |
1201 $text = file_get_contents($filename); | |
1202 $xml = simplexml_load_string($text); //or die("Error: Cannot load from xml string"); | |
1203 if (!$xml) { | |
1204 // when file created by section_id, read the plain text from file_get_contents | |
1205 return $text; | |
1206 } | |
1207 | |
1208 $this->topic = (string)$xml->topic; // set topic id | |
1209 | |
1210 // get taglist in file | |
1211 $taglist_infile = $xml->tagitem; | |
1212 $taglistArray = array(); | |
1213 foreach ($taglist_infile as $row) { | |
1214 array_push($taglistArray, array((string)$row->id,(string)$row->name,(string)$row->tag,(string)$row->color )); | |
1215 } | |
1216 if ($taglistArray) { | |
1217 $this->taglist_infile = $taglistArray; | |
1218 } | |
1219 | |
1220 // get book meta data | |
1221 $book_meta = $xml->book; | |
1222 $book_metaArray = array(); | |
1223 foreach ($book_meta as $row) { | |
1224 //array_push($book_metaArray, array('title'=>(string)$row->title,'author'=>(string)$row->author,'year'=>(string)$row->year,'pagenumber'=>(string)$row->pagenumber )); | |
1225 array_push($book_metaArray, array((string)$row->title,(string)$row->author,(string)$row->year,(string)$row->pagenumber )); | |
1226 } | |
1227 if ($book_metaArray) { | |
1228 $this->book_meta = $book_metaArray; | |
1229 } | |
1230 | |
1231 // echo $taglist->name.", ".$taglist->tag."," .$taglist->color; | |
1232 // --- detect if the taglist set is up-to-date or not --- | |
1233 $contentString = (string)$xml->text_content->asXML(); | |
1234 //$removed_str = array("<text_content>","</text_content>"); | |
1235 //$new_contentString = str_replace($removed_str, "", $contentString); | |
1236 | |
1237 return $contentString; | |
1238 } | |
1239 private function GetSectionContent() { | |
1240 $section_id = $this->GetSectionId(); | |
1241 $section_info = $this->GetSectionInfo(); | |
1242 | |
1243 $bookId = $section_info['bookId']; | |
1244 $startPage = $section_info['startPage']; | |
1245 $endPage = $section_info['endPage']; | |
1246 | |
1247 $contentString=""; | |
1248 $data_path = $this->GetDataPath(); | |
1249 if ( file_exists($data_path."parsing_files/".$section_id.".txt") ) { | |
1250 $filename = $data_path."parsing_files/".$section_id.".txt"; | |
1251 | |
1252 // --- parsing meta data | |
1253 $stringInput = $this->ParseMetaData($filename); | |
1254 // ---- | |
1255 | |
1256 // if the text is from file system | |
1257 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
1258 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
1259 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
1260 } else { | |
1261 $query = sprintf("SELECT `content`, `line`, `books_id` FROM `contents` WHERE `books_id`=\"%s\" AND `line`>=%d AND `line`<=%d", $bookId, $startPage, $endPage); | |
1262 $result = mysql_query($query); | |
1263 if (!$result) { | |
1264 return json_encode("Failed during selecting content table."); | |
1265 } | |
1266 while ($row = mysql_fetch_assoc($result)) { | |
1267 $contentString.="【".$row['line']."】".$row['content']."\n"; | |
1268 } | |
1269 | |
1270 // the text is from database | |
1271 $stringInput = $contentString; | |
1272 $stringInput = preg_replace("/<(.*?)>/u", "○", $stringInput); | |
1273 $stringInput = preg_replace("/ /u", "○", $stringInput); | |
1274 $stringInput = preg_replace("/\n/u", "<br>", $stringInput); | |
1275 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | |
1276 } | |
1277 | |
1278 return $stringInput; | |
1279 } | |
1280 | |
1281 private function GetDataPath() { | |
1282 return getcwd()."/data/"; // get the current file path, which is getcwd(), and concatenate with "/data/" | |
1283 } | |
1284 | |
1285 private function GetTaglistArray() { | |
1286 $taglistArray = array(); | |
1287 $result = $this->GetTaglist(); | |
1288 while ($row = mysql_fetch_assoc($result)) { | |
1289 array_push($taglistArray, array( $row['id'], $row['name'], $row['tag'], $row['color'] )); | |
1290 } | |
1291 | |
1292 return $taglistArray; | |
1293 } | |
1294 | |
1295 private function GetWordlistArray() { | |
1296 $wordlistArray=""; | |
1297 $result = $this->GetWordlist(); | |
1298 while ($row = mysql_fetch_assoc($result)) { | |
1299 $listString = file_get_contents("data/wordlist/".$row['id'].".txt"); | |
1300 $listString = preg_replace("/<div>/u", "\n", $listString); | |
1301 $listString = preg_replace("/<\/div>/u", "", $listString); | |
1302 $listString = preg_replace("/<span(.*?)>/u", "", $listString); | |
1303 $listString = preg_replace("/<\/span>/u", "", $listString); | |
1304 //$listString = preg_replace("/\n/u", "|", $listString); | |
1305 | |
1306 $wordlistArray2 = explode( "\n", $listString ); | |
1307 usort($wordlistArray2,'sortFunction'); | |
1308 foreach ( $wordlistArray2 as $index=>$value ) { | |
1309 $wordlistArray2[$index] = implode("○?", preg_split("/(?<!^)(?!$)/u", $value)); | |
1310 } | |
1311 foreach ( $wordlistArray2 as $index=>$value ) { | |
1312 if ($value=="") unset($wordlistArray2[$index]); | |
1313 | |
1314 } | |
1315 $listString = implode("|", $wordlistArray2); | |
1316 | |
1317 if ( $listString[0]=="|" ) $listString = substr($listString, 1); | |
1318 $wordlistArray[] = array( $row['id'], $row['name'], $listString ); | |
1319 } | |
1320 | |
1321 | |
1322 return $wordlistArray; | |
1323 | |
1324 } | |
1325 | |
1326 protected function GetBooksInfo($bookId) { | |
1327 $result = $this->GetSectionsByID($bookId); | |
1328 while ($row = mysql_fetch_assoc($result)) { | |
1329 $bookName = $row['name']; | |
1330 } | |
1331 | |
1332 $data = array(); | |
1333 $data['bookName'] = $bookName; | |
1334 | |
1335 return $data; | |
1336 } | |
1337 | |
1338 | |
1339 } | |
1340 | |
1341 | |
1342 | |
1343 ?> |