Mercurial > hg > extraction-interface
comparison models/extractapp.php @ 77:97c1e5102a22 extractapp
New: export table for a file from LGService
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Thu, 16 Apr 2015 14:53:22 +0200 |
parents | c49192885290 |
children | 960ba96efce1 |
comparison
equal
deleted
inserted
replaced
76:c49192885290 | 77:97c1e5102a22 |
---|---|
1 | |
2 | |
3 <?php | 1 <?php |
2 /** | |
3 * ExtractappModel is extended from the BaseModel. | |
4 * This is where we implement the functions/models that related to extraction-interface. | |
5 */ | |
4 | 6 |
5 class ExtractappModel extends BaseModel{ | 7 class ExtractappModel extends BaseModel{ |
6 | |
7 public function Index() { | |
8 return array("Index Value 1", "Value 2", "Value 3"); | |
9 } | |
10 | 8 |
11 protected $section_id = 0, $data_path, $file_id = 0, $current_fileId=0, | 9 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 = "",$book_dynasty=""; | 10 $branch_id = 0, $user_id = 0, $lg_text = "", $topic, $taglist_infile = "", $book_meta = "",$book_dynasty=""; |
13 public $messages = array('info'=>"",'error'=>"",'warning'=>"",'debug'=>""); | 11 public $messages = array('info'=>"",'error'=>"",'warning'=>"",'debug'=>""); |
14 | 12 |
43 | 41 |
44 $this->lg_text = $lg_text; | 42 $this->lg_text = $lg_text; |
45 | 43 |
46 } | 44 } |
47 | 45 |
48 | |
49 | |
50 | |
51 public function SetBookMetaDataBySectionId() { | 46 public function SetBookMetaDataBySectionId() { |
52 | 47 |
53 // get book_meta from $$this->get_section_metadata_by_sectionId_url | 48 // get book_meta from $$this->get_section_metadata_by_sectionId_url |
54 $section_meta_url = $this->get_section_metadata_by_sectionId_url.$this->section_id; | 49 $section_meta_url = $this->get_section_metadata_by_sectionId_url.$this->section_id; |
55 $section_meta = json_decode(file_get_contents($section_meta_url), true); | 50 $section_meta = json_decode(file_get_contents($section_meta_url), true); |
61 $b['period'],$b['dynasty'], $b['start_year'], $b['end_year'],$b['line'], | 56 $b['period'],$b['dynasty'], $b['start_year'], $b['end_year'],$b['line'], |
62 $b['volume'],$b['author'], $b['edition'],$b['in_jibengujiku'], $b['admin_type'])); // missing author,year,pagenumber | 57 $b['volume'],$b['author'], $b['edition'],$b['in_jibengujiku'], $b['admin_type'])); // missing author,year,pagenumber |
63 $this->book_meta = $book_meta; | 58 $this->book_meta = $book_meta; |
64 | 59 |
65 } | 60 } |
66 | |
67 | 61 |
68 public function GetTextFromSectionId() { // remove $_postdata as input | 62 public function GetTextFromSectionId() { // remove $_postdata as input |
69 /* | 63 /* |
70 $section_id = $_postdata['sectionId']; | 64 $section_id = $_postdata['sectionId']; |
71 $this->section_id = $section_id; | 65 $this->section_id = $section_id; |
89 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$this->book_id."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); | 83 $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$this->book_id."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); |
90 $lg_text = $stringInput; | 84 $lg_text = $stringInput; |
91 | 85 |
92 $this->lg_text = $lg_text; | 86 $this->lg_text = $lg_text; |
93 } | 87 } |
94 | |
95 | 88 |
96 // This is only used on localhost | 89 // This is only used on localhost |
97 public function GetTextFromLocal($_id){ | 90 public function GetTextFromLocal($_id){ |
98 $this->section_id = $_id; | 91 $this->section_id = $_id; |
99 //$this->branch_id = 1; // local test sets branch_id to 1 | 92 //$this->branch_id = 1; // local test sets branch_id to 1 |
327 $text .= "<in_jibengujiku>".$b[12]."</in_jibengujiku>\n"; | 320 $text .= "<in_jibengujiku>".$b[12]."</in_jibengujiku>\n"; |
328 $text .= "<admin_type>".$b[13]."</admin_type>\n"; | 321 $text .= "<admin_type>".$b[13]."</admin_type>\n"; |
329 $text .= "</book>\n"; | 322 $text .= "</book>\n"; |
330 | 323 |
331 } | 324 } |
325 // --- section info --- | |
326 $text .= "<section>\n"; | |
327 $text .= "<id>".$this->section_id."</id>\n"; | |
328 $text .= "<name>".$this->section_name."</name>\n"; | |
329 $text .= "</section>\n"; | |
332 | 330 |
333 // ---- taglist --- | 331 // ---- taglist --- |
334 // $taglist = $this->taglist_infile; | 332 // $taglist = $this->taglist_infile; |
335 // obtain the latest taglist from db | 333 // obtain the latest taglist from db |
336 $taglist = $this->GetTaglistByTopicID($this->GetTopic()); | 334 $taglist = $this->GetTaglistByTopicID($this->GetTopic()); |
545 | 543 |
546 } | 544 } |
547 } | 545 } |
548 | 546 |
549 | 547 |
550 // === for export table === | 548 private function GetTableArray($_taglistArray, $_topic_tag, $_content) { |
551 public function ExportTable($postdata) { | |
552 | |
553 $content = $postdata['content']; | |
554 $topic = $postdata['topic']; | |
555 $section_id = $postdata['sectionId']; | |
556 | |
557 //$section_id = $this->section_id; | |
558 | |
559 $sectionName = $postdata['sectionName']; | |
560 $bookId = $postdata['bookId']; | |
561 $bookName = $postdata['bookName']; | |
562 | |
563 // ===== | |
564 | 549 |
565 $outputTableArray = array(); | 550 $outputTableArray = array(); |
566 | |
567 //$taglistArray = $this->GetTaglistArray(); | |
568 $taglistArray = $this->GetTaglistByTopicID($topic); | |
569 | |
570 $outputTableArray[0]=array(); | 551 $outputTableArray[0]=array(); |
571 $outputTableArray[0][0]=array(); | 552 $outputTableArray[0][0]=array(); |
572 $outputTableArray[0][1]=array(); | 553 $outputTableArray[0][1]=array(); |
573 foreach ( $taglistArray as $value ) { | 554 foreach ( $_taglistArray as $value ) { |
574 $outputTableArray[0][0][$value[2]] = $value[1]; | 555 $outputTableArray[0][0][$value[2]] = $value[1]; |
575 $outputTableArray[0][1][$value[2]] = $value[1]."(Title)"; | 556 $outputTableArray[0][1][$value[2]] = $value[1]."(Title)"; |
576 } | 557 } |
577 $outputTableArray[0]["other"] = "其他"; | 558 $outputTableArray[0]["other"] = "其他"; |
578 $outputTableArray[0]["page"] = "頁數"; | 559 $outputTableArray[0]["page"] = "頁數"; |
579 $outputTableArray[0]["full"] = "全文"; | 560 $outputTableArray[0]["full"] = "全文"; |
580 | 561 |
581 foreach ( $taglistArray as $tagValue ) { | 562 foreach ( $_taglistArray as $tagValue ) { |
582 $content = preg_replace("/<\/".$tagValue[2].">○*<".$tagValue[2].">/u", "", $content); | 563 $content = preg_replace("/<\/".$tagValue[2].">○*<".$tagValue[2].">/u", "", $_content); |
583 $content = preg_replace("/<".$tagValue[2].">[ ]*<\/".$tagValue[2].">/u", "", $content); | 564 $content = preg_replace("/<".$tagValue[2].">[ ]*<\/".$tagValue[2].">/u", "", $_content); |
584 } | 565 } |
585 | 566 |
586 $contentLineArray = explode( "<br>", $content ); | 567 $contentLineArray = explode( "<br>", $content ); |
587 | 568 |
588 $count=0; | 569 $count=0; |
593 $otherString = $recordString; | 574 $otherString = $recordString; |
594 //echo $recordString."<br>\n"; | 575 //echo $recordString."<br>\n"; |
595 if ( preg_match("/【<a(.*?)>(.*?)<\/a>】/u", $recordString, $matches) ) { | 576 if ( preg_match("/【<a(.*?)>(.*?)<\/a>】/u", $recordString, $matches) ) { |
596 $pageNow = $matches[2]; | 577 $pageNow = $matches[2]; |
597 } | 578 } |
598 foreach ( $taglistArray as $tagValue ) { | 579 foreach ( $_taglistArray as $tagValue ) { |
599 if ( preg_match_all("/<".$tagValue[2].">(.*?)<\/".$tagValue[2].">/u", $recordString, $matches, PREG_SET_ORDER) ) { | 580 if ( preg_match_all("/<".$tagValue[2].">(.*?)<\/".$tagValue[2].">/u", $recordString, $matches, PREG_SET_ORDER) ) { |
600 foreach ( $matches as $matchesValue ) { | 581 foreach ( $matches as $matchesValue ) { |
601 $matchesValue[1] = preg_replace("/○/u", "", $matchesValue[1]); | 582 $matchesValue[1] = preg_replace("/○/u", "", $matchesValue[1]); |
602 if ( preg_match_all("/〈(.*?)〉/u", $matchesValue[1], $matches2, PREG_SET_ORDER) ) { | 583 if ( preg_match_all("/〈(.*?)〉/u", $matchesValue[1], $matches2, PREG_SET_ORDER) ) { |
603 foreach ( $matches2 as $matches2Value ) { | 584 foreach ( $matches2 as $matches2Value ) { |
624 $value = preg_replace("/>/u", ">", $value); | 605 $value = preg_replace("/>/u", ">", $value); |
625 $value = preg_replace("/</u", "<", $value); | 606 $value = preg_replace("/</u", "<", $value); |
626 $outputTableArray[$count]["full"] = $value; | 607 $outputTableArray[$count]["full"] = $value; |
627 } | 608 } |
628 | 609 |
629 $topic_tag = $this->GetTopicTag($topic); | 610 |
630 | 611 |
631 foreach ( $outputTableArray as $arrayIndex => $arrayValue ) { | 612 foreach ( $outputTableArray as $arrayIndex => $arrayValue ) { |
632 // output each row which the topic tag | 613 // output each row which the topic tag |
633 // e.g. the original version is for 'person' | 614 // e.g. the original version is for 'person' |
634 if ( !isset($arrayValue[0][$topic_tag]) ) { | 615 if ( !isset($arrayValue[0][$_topic_tag]) ) { |
635 unset($outputTableArray[$arrayIndex]); | 616 unset($outputTableArray[$arrayIndex]); |
636 } | 617 } |
637 | 618 |
638 } | 619 } |
639 | 620 // ----- |
621 | |
622 return $outputTableArray; | |
623 } | |
624 | |
625 // === for export table === | |
626 | |
627 public function ExportTable($postdata, $isFromFile) { | |
628 if ($isFromFile) { | |
629 $content = $this->lg_text; | |
630 $topic = $this->topic; | |
631 $sectionId = $this->section_id; | |
632 $sectionName = $this->section_name; | |
633 $bookId = $this->book_id; | |
634 $bookName = $this->book_name; | |
635 | |
636 $taglistArray = $this->taglist_infile; | |
637 | |
638 } else { | |
639 $content = $postdata['content']; | |
640 $topic = $postdata['topic']; | |
641 | |
642 $section_id = $postdata['sectionId']; | |
643 $sectionName = $postdata['sectionName']; | |
644 $bookId = $postdata['bookId']; | |
645 $bookName = $postdata['bookName']; | |
646 | |
647 //$taglistArray = $this->GetTaglistArray(); | |
648 $taglistArray = $this->GetTaglistByTopicID($topic); | |
649 } | |
650 // ===== | |
651 | |
652 $topic_tag = $this->GetTopicTag($topic); | |
653 | |
654 // input data: taglistArray, topic_tag, content; output: outputTableArray | |
655 $outputTableArray = $this->GetTableArray($taglistArray, $topic_tag, $content); | |
656 | |
657 | |
658 | |
659 // data for view | |
640 $data = array(); | 660 $data = array(); |
641 | |
642 $data['outputTableArray'] = $outputTableArray; | 661 $data['outputTableArray'] = $outputTableArray; |
643 $data['bookId'] = $bookId; | 662 $data['bookId'] = $bookId; |
644 $data['section_id'] = $section_id; | 663 $data['section_id'] = $section_id; |
645 $data['bookName'] = $bookName; | 664 $data['bookName'] = $bookName; |
646 $data['sectionName'] = $sectionName; | 665 $data['sectionName'] = $sectionName; |
649 | 668 |
650 } | 669 } |
651 | 670 |
652 // === for manage tag list === | 671 // === for manage tag list === |
653 public function EditTaglist($_postdata) { | 672 public function EditTaglist($_postdata) { |
673 /** | |
674 */ | |
675 | |
654 $query = "SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='taglist'"; | 676 $query = "SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='taglist'"; |
655 $result = mysql_query($query); | 677 $result = mysql_query($query); |
656 if (!$result) { | 678 if (!$result) { |
657 echo json_encode(mysql_error()); | 679 echo json_encode(mysql_error()); |
658 } | 680 } |
755 | 777 |
756 } | 778 } |
757 | 779 |
758 // === for config topic === | 780 // === for config topic === |
759 public function ConfigTagsInTopic($postdata) { | 781 public function ConfigTagsInTopic($postdata) { |
782 /** | |
783 * | |
784 */ | |
785 | |
760 $topic = $postdata['topic']; | 786 $topic = $postdata['topic']; |
761 $result = $this->GetTopicByID($topic); | 787 $result = $this->GetTopicByID($topic); |
762 $row = mysql_fetch_assoc($result); | 788 $row = mysql_fetch_assoc($result); |
763 $topic_name_en = $row['name_en']; | 789 $topic_name_en = $row['name_en']; |
764 $topic_name_ch = $row['name_ch']; | 790 $topic_name_ch = $row['name_ch']; |
1013 | 1039 |
1014 // =========================== | 1040 // =========================== |
1015 | 1041 |
1016 // === for manage wordlist === | 1042 // === for manage wordlist === |
1017 public function EditWordlist() { | 1043 public function EditWordlist() { |
1044 /** | |
1045 * EditWordlist shows the wordlist in a new window. | |
1046 * User can view each one of the wordlist and edit it, also s/he can create a new wordlist here. | |
1047 */ | |
1048 | |
1018 $result = $this->GetWordlist(); | 1049 $result = $this->GetWordlist(); |
1019 $wordlistArray = array(); | 1050 $wordlistArray = array(); |
1020 while ($row = mysql_fetch_assoc($result)) { | 1051 while ($row = mysql_fetch_assoc($result)) { |
1021 $wordlistArray[$row['id']] = $row['name']; | 1052 $wordlistArray[$row['id']] = $row['name']; |
1022 } | 1053 } |
1162 if ($book_metaArray) { | 1193 if ($book_metaArray) { |
1163 $this->book_meta = $book_metaArray; | 1194 $this->book_meta = $book_metaArray; |
1164 } | 1195 } |
1165 */ | 1196 */ |
1166 // ----- | 1197 // ----- |
1198 // TODO: get section_id, section_name from file | |
1199 if ($this->section_id == 0 && isset($xml->section)) { | |
1200 if ($xml->section) { | |
1201 $this->section_id = (string)$xml->section->id; | |
1202 $this->section_name = (string)$xml->section->name; | |
1203 } | |
1204 } | |
1205 // book meta data | |
1206 if (!isset($this->book_id) && isset($xml->book)) { | |
1207 $this->book_id = (string)$xml->book->id; | |
1208 $this->book_name = (string)$xml->book->name; | |
1209 } | |
1210 | |
1211 | |
1167 | 1212 |
1168 $contentString = (string)($xml->text_content->asXML()); | 1213 $contentString = (string)($xml->text_content->asXML()); |
1169 | 1214 |
1170 $removed_str = array("<text_content>","</text_content>"); | 1215 $removed_str = array("<text_content>","</text_content>"); |
1171 $new_contentString = str_replace($removed_str, "", $contentString); | 1216 $new_contentString = str_replace($removed_str, "", $contentString); |
1172 | 1217 |
1173 return $new_contentString; | 1218 return $new_contentString; |
1174 } | 1219 } |
1175 | 1220 |
1176 | 1221 |
1177 private function GetSectionContent() { // called only by GetTextFromLocal() | 1222 private function GetSectionContent() { |
1223 /** This is only been called by GetTextFromLocal(). | |
1224 */ | |
1225 | |
1178 $section_id = $this->GetSectionId(); | 1226 $section_id = $this->GetSectionId(); |
1179 $section_info = $this->GetSectionInfo(); | 1227 $section_info = $this->GetSectionInfo(); |
1180 | 1228 |
1181 $bookId = $section_info['bookId']; | 1229 $bookId = $section_info['bookId']; |
1182 $startPage = $section_info['startPage']; | 1230 $startPage = $section_info['startPage']; |