Mercurial > hg > extraction-interface
view develop/models/extractapp.php @ 21:c805470cefee
Remove bootstrap.TaggingText UI layout modification
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 24 Feb 2015 16:09:59 +0100 |
parents | 04db1dd9d10d |
children | a8ae5cbc3364 |
line wrap: on
line source
<?php class ExtractappModel extends BaseModel{ public function Index() { return array("Index Value 1", "Value 2", "Value 3"); } protected $section_id = 0, $data_path, $file_id = 0, $branch_id = 0, $user_id = 0, $lg_text = "", $topic = 0; public $messages = ""; private function Initialize($_urlvalues) { $this->SetSectionId($_urlvalues); } public function GetTextFromFileId($_postdata) { $file_id = $_postdata['fileId']; $branch_id = $_postdata['branchId']; $section_id = $_postdata['sectionId']; $this->branch_id = $branch_id; $this->file_id = $file_id; $this->user_id = $_postdata['userId']; $this->section_id = $section_id; // get from URL with file_id $lg_text_url = $this->get_text_from_fileId_url.$file_id; $lg_text = file_get_contents($lg_text_url); $stringInput = $lg_text; $stringInput = preg_replace("/ /u", "○", $stringInput); $stringInput = preg_replace("/\n/u", "<br>", $stringInput); $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); $lg_text = $stringInput; $this->lg_text = $lg_text; } public function GetTextFromSectionId($_postdata) { $section_id = $_postdata['sectionId']; $this->section_id = $section_id; $this->user_id = $_postdata['userId']; // get from URL with file_id $lg_text_url = $this->get_text_from_sectionId_url.$section_id; $lg_text = file_get_contents($lg_text_url); $stringInput = $lg_text; $stringInput = preg_replace("/<(.*?)>/u", "○", $stringInput); $stringInput = preg_replace("/ /u", "○", $stringInput); $stringInput = preg_replace("/\n/u", "<br>", $stringInput); $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); $lg_text = $stringInput; $this->lg_text = $lg_text; } public function GetTextFromLocal($_id){ $this->section_id = $_id; $this->messages .= "DEBUG: from my local"."<br>"; $this->lg_text = $this->GetSectionContent(); } public function GetInfoFromPreviousPage($_postdata) { if ($_postdata['fileId']) { $this->file_id = $_postdata['fileId']; } if ($_postdata['sectionId']) { $this->section_id = $_postdata['sectionId']; } if ($_postdata['text']) { $this->lg_text = $_postdata['text']; } if ($_postdata['branchId']) { $this->branch_id = $_postdata['branchId']; } if ($_postdata['userId']) { $this->user_id = $_postdata['userId']; } if ($_postdata['topic_id']) { $this->topic = $_postdata['topic_id']; } $this->messages .= "Info: "; $this->messages .= "file_id=".$this->file_id.", section_id=".$this->section_id; $this->messages .= ", user_id=".$this->user_id.", branch_id=".$this->branch_id.", topic_id=".$this->topic."<br>"; } public function InitData($_postdata) { $file_id = $_postdata['fileId']; $branch_id = $_postdata['branchId']; $section_id = $_postdata['sectionId']; $this->branch_id = $branch_id; $this->file_id = $file_id; $this->user_id = $_postdata['userId']; $this->section_id = $section_id; if ($file_id != 0 && $branch_id != 0) { // get from URL with file_id $lg_text_url = $this->get_text_from_fileId_url.$file_id; } else if ($section_id != 0) { // get from URL with section_id $lg_text_url = $this->get_text_from_sectionId_url.$section_id; } else { echo "wrong url!!"; return; } $lg_text = file_get_contents($lg_text_url); /* $stringInput = preg_replace("/ /u", "○", $stringInput); $stringInput = preg_replace("/\n/u", "<br>", $stringInput); $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); */ // the text is from database $stringInput = $lg_text; $stringInput = preg_replace("/<(.*?)>/u", "○", $stringInput); $stringInput = preg_replace("/ /u", "○", $stringInput); $stringInput = preg_replace("/\n/u", "<br>", $stringInput); $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); $lg_text = $stringInput; $this->lg_text = $lg_text; } // === for tagging === public function StartTagging() { // $this->Initialize($urlvalues); $section_id = $this->section_id; $stringInput = $this->lg_text; //$taglistArray = $this->GetTaglistArray(); //for GetTaglistByTopicID: $taglistArray = $this->GetTaglistByTopicID($this->GetTopic()); // topic list $topiclistArray = $this->GetTopiclistArray(); $wordlistArray = $this->GetWordlistArray(); $data = array(); $data['stringInput'] = $stringInput; $data['taglistArray'] = $taglistArray; $data['wordlistArray'] = $wordlistArray; $data['section_id'] = $section_id; $data['topiclistArray'] = $topiclistArray; $data['default_topic_id'] = $this->GetTopic(); $data['topic_tag'] = $this->GetTopicTag($this->GetTopic()); $data['topic_name'] = $this->GetTopicName($this->GetTopic()); $data['info'] = array('file_id'=>$this->file_id, 'user_id'=>$this->user_id, 'branch_id'=>$this->branch_id, 'section_id'=>$this->section_id); $data['messages'] = $this->messages; return $data; } public function SaveFullText($postdata) { if ($postdata['text']){ $date = date('Y_m_d_H_i_s', time()); if ( file_exists("data/parsing_files/".$postdata['filename'].".txt") ) { $oldFile = file_get_contents("data/parsing_files/".$postdata['filename'].".txt"); file_put_contents("data/parsing_files/".$postdata['filename']."_".$date.".txt", $oldFile); } if (get_magic_quotes_gpc()) { $require = stripslashes($postdata['text']); } else { $require = $postdata['text']; } $require = preg_replace("/【<a(.*?)>(.*?)<\/a>】/u", "【\\2】", $require); $require = preg_replace('/&/u', "&", $require); $require = preg_replace("/○/u", " ", $require); $require = preg_replace("/<br>/u", "\n", $require); $require = preg_replace("/<br>/u", "\n", $require); file_put_contents("data/parsing_files/".$postdata['filename'].".txt", $require); } } public function UpdateInfoByResponseFromLGService($response) { $response_file = $response["file"]; $response_branch = $response["branch"]; $this->file_id = (string)$response_file["id"]; $this->branch_id = (string)$response_branch["id"]; $this->messages .= "file_id: ".$this->file_id."<br>"; $this->messages .= "branch_id: ".$this->branch_id."<br>"; } public function SaveFullTextToLGService($_postdata) { // save tagged text (full text) by Jorge's API to lg service // -------- // saving in my local machine in developing phrase if ($_postdata['text']){ $date = date('Y_m_d_H_i_s', time()); if ( file_exists("data/parsing_files/".$_postdata['sectionId'].".txt") ) { $oldFile = file_get_contents("data/parsing_files/".$_postdata['sectionId'].".txt"); file_put_contents("data/parsing_files/".$_postdata['sectionId']."_".$date.".txt", $oldFile); } if (get_magic_quotes_gpc()) { $require = stripslashes($_postdata['text']); } else { $require = $_postdata['text']; } $require = preg_replace("/【<a(.*?)>(.*?)<\/a>】/u", "【\\2】", $require); $require = preg_replace('/&/u', "&", $require); $require = preg_replace("/○/u", " ", $require); $require = preg_replace("/<br>/u", "\n", $require); $require = preg_replace("/<br>/u", "\n", $require); file_put_contents("data/parsing_files/".$_postdata['sectionId'].".txt", $require); } // ------ if ($_postdata['branchId'] != 0) { // exiting branch case $postfields = array( //"text" => $_postdata['text'], "text" => $require, "branchId" => $_postdata['branchId'], "userId" => $_postdata['userId'], "userPreviousFileId" => $_postdata['fileId'], ); $save_url = $this->save_to_LGService_url; } else { // new branch case echo "saveNew!"; $postfields = array( //"text" => $_postdata['text'], "text" => $require, "sectionId" => $_postdata['sectionId'], //"userId" => $_postdata['userId'], // TODO: change userId when we can query by sectionId from LGService using search "userId" => "12", "label" => $_postdata['label'], // TODO: ask user for lable //"label" => "label for section ".$_postdata['sectionId'], ); $save_url = $this->save_new_to_LGService_url; } // set up the curl resource $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $save_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); //curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-type: multipart/form-data;charset=utf-8' )); // execute the request $output = curl_exec($ch); // output the profile information - includes the header //echo($output) . PHP_EOL; // close curl resource to free up system resources curl_close($ch); $response = json_decode($output, true); return $response; } // --- for regex ---- public function GetRegexFilenameById($topic_id) { $query = sprintf("SELECT regex_filename FROM `topic_regex_relation` WHERE topic_id=\"%s\"", $topic_id); $result = mysql_query($query); if (!$result) { return json_encode("Failed during selecting topic_regex_relation table."); } $filenames = array(); while ($row = mysql_fetch_assoc($result)) { array_push($filenames, $row['regex_filename']); } return $filenames; } public function SmartRegexLoad($topic_id) { // Load regex file based on current topic. Only shows the regex in this topic -- $filenames = $this->GetRegexFilenameById($topic_id); // Get regex file from filesystem ---- $data_path = "./data/"; // get the current file path, which is getcwd(), and concatenate with "/data/" $returnArray = array(); $files1 = scandir($data_path."regex_files"); foreach ( $files1 as $file ) { if ( $file != "." && $file != ".." && $file != ".DS_Store") { foreach ($filenames as $filename) { if ($file == $filename) { $returnArray[preg_replace("/\.txt/", "", $file)] = file_get_contents( $data_path."regex_files/".$file ); break; } } } } echo json_encode($returnArray); return; } public function SmartRegexSave($_postdata) { if ($_postdata['text']){ /* $date = date('Y_m_d_H_i_s', time()); if ( file_exists("regex_files/".$_POST['filename'].".txt") ) { $oldFile = file_get_contents("regex_files/".$_POST['filename'].".txt"); file_put_contents("regex_files/".$_POST['filename']."_".$date.".txt", $oldFile); } */ $data_path = "./data/"; // get the current file path, which is getcwd(), and concatenate with "/data/" if (get_magic_quotes_gpc()) { $require = stripslashes($_postdata['text']); } else { $require = $_postdata['text']; } file_put_contents( $data_path."regex_files/".$_postdata['filename'].".txt", $require); // update topic_regex_relation table $topic_id = $_postdata['topic_id']; $filename = $_postdata['filename'].'.txt'; $query = "INSERT INTO topic_regex_relation (topic_id, regex_filename) VALUES (".$topic_id.",'".$filename."')"; $result = mysql_query($query); if (!$result) { echo json_encode("error"); } } } // === for export table === public function ExportTable($postdata) { // $this->Initialize($urlvalues); $content = $postdata['content']; $topic = $postdata['topic']; $section_id = $postdata['sectionId']; //$section_id = $this->section_id; // TODO: this should be get from LGServic: sectionName, bookId, bookName $section_info = $this->GetSectionInfo(); $sectionName = $section_info['sectionName']; $bookId = $section_info['bookId']; $books_info = $this->GetBooksInfo($bookId); $bookName = $books_info['bookName']; // ===== $outputTableArray = array(); //$taglistArray = $this->GetTaglistArray(); $taglistArray = $this->GetTaglistByTopicID($topic); $outputTableArray[0]=array(); $outputTableArray[0][0]=array(); $outputTableArray[0][1]=array(); foreach ( $taglistArray as $value ) { $outputTableArray[0][0][$value[2]] = $value[1]; $outputTableArray[0][1][$value[2]] = $value[1]."(Title)"; } $outputTableArray[0]["other"] = "其他"; $outputTableArray[0]["page"] = "頁數"; $outputTableArray[0]["full"] = "全文"; foreach ( $taglistArray as $tagValue ) { $content = preg_replace("/<\/".$tagValue[2].">○*<".$tagValue[2].">/u", "", $content); $content = preg_replace("/<".$tagValue[2].">[ ]*<\/".$tagValue[2].">/u", "", $content); } $contentLineArray = explode( "<br>", $content ); $count=0; $pageNow=NULL; foreach ( $contentLineArray as $value ) { $count++; $recordString = $value; $otherString = $recordString; //echo $recordString."<br>\n"; if ( preg_match("/【<a(.*?)>(.*?)<\/a>】/u", $recordString, $matches) ) { $pageNow = $matches[2]; } foreach ( $taglistArray as $tagValue ) { if ( preg_match_all("/<".$tagValue[2].">(.*?)<\/".$tagValue[2].">/u", $recordString, $matches, PREG_SET_ORDER) ) { foreach ( $matches as $matchesValue ) { $matchesValue[1] = preg_replace("/○/u", "", $matchesValue[1]); if ( preg_match_all("/〈(.*?)〉/u", $matchesValue[1], $matches2, PREG_SET_ORDER) ) { foreach ( $matches2 as $matches2Value ) { if ( isset($outputTableArray[$count][0][$tagValue[2]]) ) { $outputTableArray[$count][0][$tagValue[2]] .= ";".$matches2Value[1]; } else { $outputTableArray[$count][0][$tagValue[2]] = $matches2Value[1]; } } } else { if ( isset($outputTableArray[$count][0][$tagValue[2]]) ) { $outputTableArray[$count][0][$tagValue[2]] .= ";".$matchesValue[1]; } else { $outputTableArray[$count][0][$tagValue[2]] = $matchesValue[1]; } } } $otherString = preg_replace("/<".$tagValue[2].">(.*?)<\/".$tagValue[2].">/u", " ", $otherString); } } $otherString = preg_replace("/○/u", "", $otherString); $outputTableArray[$count]["other"] = $otherString; $outputTableArray[$count]["page"] = $pageNow; $value = preg_replace("/>/u", ">", $value); $value = preg_replace("/</u", "<", $value); $outputTableArray[$count]["full"] = $value; } /* echo "<br>"."DEBUG: outputTableArray:"."<br>"; var_dump($outputTableArray); */ $topic_tag = $this->GetTopicTag($topic); foreach ( $outputTableArray as $arrayIndex => $arrayValue ) { // output each row which the topic tag // e.g. the original version is for 'person' if ( !isset($arrayValue[0][$topic_tag]) ) { unset($outputTableArray[$arrayIndex]); } /* if ($topic == 1) { if ( !isset($arrayValue[0]["person"]) ) { unset($outputTableArray[$arrayIndex]); } } else if ($topic == 2) { // for object topic if ( !isset($arrayValue[0]["object"]) ) { // only the record with the tag of 'object' will become a row unset($outputTableArray[$arrayIndex]); } } */ } $data = array(); $data['outputTableArray'] = $outputTableArray; $data['bookId'] = $bookId; $data['section_id'] = $section_id; $data['bookName'] = $bookName; $data['sectionName'] = $sectionName; return $data; } // === for manage tag list === public function EditTaglist($_postdata) { $query = "SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'taglist'"; $largest_id = mysql_query($query); $topic_id = $_postdata['topic_id']; $result = $this->GetTaglistByTopicID($topic_id); $taglistArray = array(); foreach ($result as $row) { $taglistArray[$row[0]] = array($row[1], $row[2], $row[3]); //$taglistArray[$row['id']] = array($row['name'], $row['tag'], $row['color']); // TODO: the format is not good, so I use $row[0], $row[1],... This could be changed some time. } /* //$result = $this->GetTaglist(); $taglistArray = array(); while ($row = mysql_fetch_assoc($result)) { $taglistArray[$row['id']] = array($row['name'], $row['tag'], $row['color']); } */ $data = array(); $data['taglistArray'] = $taglistArray; $data['topic_id'] = $topic_id; $data['largest_id'] = $largest_id; return $data; } private function _GetTag($_postdata) { if (get_magic_quotes_gpc()) { $id = stripslashes($_postdata['id']); $name = stripslashes($_postdata['name']); $tag = stripslashes($_postdata['tag']); $color = stripslashes($_postdata['color']); } else { $id = $_postdata['id']; $name = $_postdata['name']; $tag = $_postdata['tag']; $color = $_postdata['color']; } return array($id, $name, $tag, $color); } public function NewTagElement($postdata) { if ($postdata['id']){ list($id, $name, $tag, $color) = $this->_GetTag($postdata); $query1 = sprintf("INSERT INTO `taglist` (`id`, `name`, `tag`, `color`, `systemName`) VALUES (%s, %s, %s, %s, %s)", $this->GetSQLValueString($id, "int"), $this->GetSQLValueString($name, "text"), $this->GetSQLValueString($tag, "text"), $this->GetSQLValueString($color, "text"), $this->GetSQLValueString($this->systemNAME, "text")); $result1 = mysql_query($query1); // add it to topic_tag_relation table $topic_id = $postdata['topic_id']; // tag_id is $id; $query = sprintf("INSERT INTO `topic_tag_relation` (`topic_id`,`tag_id`) VALUES (%s,%s)", $topic_id, $id); $result = mysql_query($query); if (!$result) { echo json_encode("error when insert into topic_tag_relation table"); } } } public function SaveTagElement($postdata) { if ($postdata['id']){ list($id, $name, $tag, $color) = $this->_GetTag($postdata); $query = sprintf("UPDATE taglist SET `name`=%s, `tag`=%s, `color`=%s WHERE `id`=%s", $this->GetSQLValueString($name, "text"), $this->GetSQLValueString($tag, "text"), $this->GetSQLValueString($color, "text"), $this->GetSQLValueString($id, "int")); $result = mysql_query($query); } } public function DeleteTag($postdata) { if ($postdata['id']) { $queryInsert = sprintf("DELETE FROM `taglist` WHERE `id` = %s", stripslashes($postdata['id'])); $resultInsert = mysql_query($queryInsert); } } // === for config topic === public function ConfigTagsInTopic($postdata) { $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`"; $result = mysql_query($query); if (!$result) { return json_encode("Failed during selecting/joining taglist and topic_tag_relation table."); } $taglistArray = array(); while ($row = mysql_fetch_assoc($result)) { array_push($taglistArray, array('id'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id']) ); } $topic = $postdata['topic']; $result = $this->GetTopicByID($topic); $row = mysql_fetch_assoc($result); $topic_name = $row['name']; $data = array(); $data['taglistArray'] = $taglistArray; $data['topic'] = $topic; $data['topic_name'] = $topic_name; // ------ $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`"; $result = mysql_query($query); if (!$result) { return json_encode("Failed during selecting/joining taglist and topic_tag_relation table."); } $tag_intopic = array(); $tag_others = array(); $tag_tmp_others = array(); while ($row = mysql_fetch_assoc($result)) { if ($row['topic_id'] == $topic) { array_push($tag_intopic, array('id=>'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id'])); } else { array_push($tag_tmp_others, array('id=>'=>$row['id'],'name'=>$row['name'], 'tag'=>$row['tag'], 'color'=>$row['color'], 'topic_id'=>$row['topic_id'])); } } foreach ($tag_tmp_others as $tmp) { $cnt = 0; foreach ($tag_intopic as $intopic) { if ($tmp['tag'] == $intopic['tag']) { break; } else { $cnt ++; } } if ($cnt == count($tag_intopic)) { array_push($tag_others, $tmp); } } $data['tag_intopic'] = $tag_intopic; $data['tag_others'] = $tag_others; return $data; } public function UpdateTagsInTopic($_postdata) { $topic_id = $_postdata['topic_id']; $tag_ids = json_decode(str_replace('\\', '', $_postdata['ids'])); // update topic_tag_relation by tags_ids array as `tag_id` and topic_id as `topic_id` // --- add new topic_tag_relation --- foreach ($tag_ids as $tag_id) { $query = "SELECT * FROM topic_tag_relation WHERE tag_id=".$tag_id; $result = mysql_query($query); if (!$result) { echo json_encode("error when select from topic_tag_relation"); } $topic_tag = array(); $flag = false; while ($row = mysql_fetch_assoc($result)) { if ($row['topic_id'] == $topic_id) { $flag = true; break; } } if (!$flag) { // insert a row into topic_tag_relation table $queryUpdate = "INSERT INTO topic_tag_relation (topic_id, tag_id) VALUES (".$topic_id.",".$tag_id.")"; $resultUpdate = mysql_query($queryUpdate); if (!$resultUpdate) { return json_encode("error when insert topic_tag_relation table"); } } } // --- remove tags from this topic --- $query = "SELECT * FROM topic_tag_relation WHERE topic_id=".$topic_id; $result = mysql_query($query); if (!$result) { echo json_encode("error when select from topic_tag_relation"); } while ($row = mysql_fetch_assoc($result)) { $cnt = 0; foreach ($tag_ids as $tag_id) { if ($row['tag_id'] == $tag_id) { break; } else { $cnt ++; } } $_id = $row['id']; if ($cnt == count($tag_ids)) { // delete row with (topic_id, tag_ids) $queryDelete = "DELETE FROM topic_tag_relation WHERE id=".$_id; $resultDelete = mysql_query($queryDelete); if (!$resultDelete) { echo json_encode("error when delete from topic_tag_relation"); } } } /* § $query = "SELECT * FROM topic_tag_relation"; $result = mysql_query($query); if (!$result) { echo json_encode("error when select from topic_tag_relation"); } $topic_tag = array(); while ($row = mysql_fetch_assoc($result)) { array_push($topic_tag, array('tag_id'=>$row['tag_id'], 'topic_id'=>$row['topic_id'])); } foreach ($topic_tag as $value) { $flag = false; foreach ($tag_ids as $tag_id) { if ($value['tag_id'] == $tag_id) { //update its topic_id to $topic_id $queryUpdate = "UPDATE topic_tag_relation SET topic_id=".$topic_id." WHERE tag_id=".$tag_id; $resultUpdate = mysql_query($queryUpdate); if (!$resultUpdate) { return json_encode("error when update topic_tag_relation table"); } $flag = true; break; } } if (!$flag && $value['topic_id'] == $topic_id) { // set its topic_id to 0, indicating unsigned $queryUpdate = "UPDATE topic_tag_relation SET topic_id=0 WHERE tag_id=".$value['tag_id']; $resultUpdate = mysql_query($queryUpdate); if (!$resultUpdate) { return json_encode("error when update topic_tag_relation table"); } } } */ } private function GetTaglistByTopicID($topic_id) { $taglistArray = array(); // select taglist ids from topic_tag_relation table $query = sprintf("SELECT * FROM `topic_tag_relation` WHERE `topic_id`='%s'", $topic_id); $result = mysql_query($query); if (!$result) { return json_encode("Failed during selecting topic_tag_relation table."); } $taglist_ids = array(); while ($row = mysql_fetch_assoc($result)) { array_push($taglist_ids, $row['tag_id']); } // select taglist by tag ids foreach ($taglist_ids as $tag_id) { $query = sprintf("SELECT * FROM `taglist` WHERE `id`='%s'", $tag_id); $result = mysql_query($query); if (!$result) { echo mysql_error(); return json_encode("Failed during selecting taglist table."); } $row = mysql_fetch_assoc($result); array_push($taglistArray, array( $row['id'], $row['name'], $row['tag'], $row['color'] )); } return $taglistArray; } public function SetTopic($topic) { $this->topic = $topic; } public function GetTopic() { return $this->topic; } private function GetTopiclistArray() { $topiclistArray = array(); $result = $this->GetTopiclist(); while ($row = mysql_fetch_assoc($result)) { array_push($topiclistArray, array('id'=>$row['id'],'name'=>$row['name'],'tag'=>$row['tag'])); } return $topiclistArray; } private function GetTopicTag($topic_id) { $result = $this->GetTopicByID($topic_id); $row = mysql_fetch_assoc($result); $tag = $row['tag']; return $tag; } private function GetTopicName($topic_id) { $result = $this->GetTopicByID($topic_id); $row = mysql_fetch_assoc($result); $name = $row['name']; return $name; } // =========================== // === for manage wordlist === public function EditWordlist() { $result = $this->GetWordlist(); $wordlistArray = array(); while ($row = mysql_fetch_assoc($result)) { $wordlistArray[$row['id']] = $row['name']; } $data = array(); $data['wordlistArray'] = $wordlistArray; return $data; } public function AddNewList($postdata) { if ($postdata['text']){ if (get_magic_quotes_gpc()) { $name = stripslashes($postdata['text']); } else { $name = $postdata['text']; } $query1 = sprintf("INSERT INTO `wordlist` (`name`, `systemName`) VALUES (%s, %s)", $this->GetSQLValueString($name, "text"), $this->GetSQLValueString($this->systemNAME, "text")); $result1 = mysql_query($query1); file_put_contents( "data/wordlist/".mysql_insert_id().".txt", "(empty now)"); } } public function SaveWordlist($postdata) { if ($postdata['text']){ $date = date('Y_m_d_H_i_s', time()); if ( file_exists("data/wordlist/".$postdata['filename'].".txt") ) { $filename = "data/wordlist/".$postdata['filename']."_".$date.".txt"; $oldFile = file_get_contents("data/wordlist/".$postdata['filename'].".txt"); file_put_contents($filename, $oldFile); } else { $filename = "data/wordlist/".$postdata['filename'].".txt"; } if (get_magic_quotes_gpc()) { $require = stripslashes($postdata['text']); } else { $require = $postdata['text']; } $require = preg_replace("/<br>/u", "<br>", $require); file_put_contents($filename, $require); } /* if ($postdata['text']){ $date = date('Y_m_d_H_i_s', time()); if ( file_exists("data/wordlist/".$postdata['filename'].".txt") ) { $oldFile = file_get_contents("data/wordlist/".$postdata['filename'].".txt"); file_put_contents("data/wordlist/".$postdata['filename']."_".$date.".txt", $oldFile); } if (get_magic_quotes_gpc()) { $require = stripslashes($postdata['text']); } else { $require = $postdata['text']; } // $require = preg_replace("/<br>/u", "", $require); file_put_contents("data/wordlist/".$postdata['filename'].".txt", $require); } */ } // ======================================= public function sortFunction($a,$b) { return strlen($b)-strlen($a); } // TODO: delete this private function SetSectionId($_urlvalues) { // TODO: maybe get user info also // get book id from url if ($_urlvalues['id'] != "") { $section_id = $_urlvalues['id']; } else { return json_encode("Error: No section id"); /* ???? */ /* $get_book_id = $urlvalues['book']; $get_start = $urlvalues['start']; $get_end = $urlvalues['end']; */ } $this->section_id = $section_id; } private function GetSectionId() { if (is_numeric($this->section_id)) { return $this->section_id; } else { return json_encode("Error: No section id"); } } private function GetSectionInfo() { $section_id = $this->GetSectionId(); if (!is_numeric($section_id)){ return $section_id; } $result = $this->GetSectionsByID($section_id); while ($row = mysql_fetch_assoc($result)) { $bookId=$row['books_id']; $startPage=$row['start_page']; $endPage=$row['end_page']; $sectionName = $row['name']; } $data = array(); $data['bookId'] = $bookId; $data['startPage'] = $startPage; $data['endPage'] = $endPage; $data['sectionName'] = $sectionName; return $data; } private function GetSectionContent() { $section_id = $this->GetSectionId(); $section_info = $this->GetSectionInfo(); $bookId = $section_info['bookId']; $startPage = $section_info['startPage']; $endPage = $section_info['endPage']; $contentString=""; $data_path = $this->GetDataPath(); if ( file_exists($data_path."parsing_files/".$section_id.".txt") ) { $contentString=file_get_contents($data_path."parsing_files/".$section_id.".txt"); $stringInput = $contentString; // if the text is from file system $stringInput = preg_replace("/ /u", "○", $stringInput); $stringInput = preg_replace("/\n/u", "<br>", $stringInput); $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); } else { $query = sprintf("SELECT `content`, `line`, `books_id` FROM `contents` WHERE `books_id`=\"%s\" AND `line`>=%d AND `line`<=%d", $bookId, $startPage, $endPage); $result = mysql_query($query); if (!$result) { return json_encode("Failed during selecting content table."); } while ($row = mysql_fetch_assoc($result)) { $contentString.="【".$row['line']."】".$row['content']."\n"; } // the text is from database $stringInput = $contentString; $stringInput = preg_replace("/<(.*?)>/u", "○", $stringInput); $stringInput = preg_replace("/ /u", "○", $stringInput); $stringInput = preg_replace("/\n/u", "<br>", $stringInput); $stringInput = preg_replace("/【(.*?)】/u", "【<a href=\"review_index_xml_images.php?books_id=".$bookId."&pages=\\1&entry=0\" target=\"_bookImg\">\\1</a>】", $stringInput); } return $stringInput; } private function GetDataPath() { return getcwd()."/data/"; // get the current file path, which is getcwd(), and concatenate with "/data/" } private function GetTaglistArray() { $taglistArray = array(); $result = $this->GetTaglist(); while ($row = mysql_fetch_assoc($result)) { array_push($taglistArray, array( $row['id'], $row['name'], $row['tag'], $row['color'] )); } return $taglistArray; } private function GetWordlistArray() { $wordlistArray=""; $result = $this->GetWordlist(); while ($row = mysql_fetch_assoc($result)) { $listString = file_get_contents("wordlist/".$row['id'].".txt"); $listString = preg_replace("/<div>/u", "\n", $listString); $listString = preg_replace("/<\/div>/u", "", $listString); $listString = preg_replace("/<span(.*?)>/u", "", $listString); $listString = preg_replace("/<\/span>/u", "", $listString); //$listString = preg_replace("/\n/u", "|", $listString); $wordlistArray2 = explode( "\n", $listString ); usort($wordlistArray2,'sortFunction'); foreach ( $wordlistArray2 as $index=>$value ) { $wordlistArray2[$index] = implode("○?", preg_split("/(?<!^)(?!$)/u", $value)); } foreach ( $wordlistArray2 as $index=>$value ) { if ($value=="") unset($wordlistArray2[$index]); } $listString = implode("|", $wordlistArray2); if ( $listString[0]=="|" ) $listString = substr($listString, 1); $wordlistArray[] = array( $row['id'], $row['name'], $listString ); } return $wordlistArray; } protected function GetBooksInfo($bookId) { $result = $this->GetSectionsByID($bookId); while ($row = mysql_fetch_assoc($result)) { $bookName = $row['name']; } $data = array(); $data['bookName'] = $bookName; return $data; } } ?>