get_para1.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. require_once "../config.php";
  3. require_once "../log/pref_log.php";
  4. require_once "../public/_pdo.php";
  5. require_once "../redis/function.php";
  6. require_once "../db/pali_sent.php";
  7. require_once "../db/pali_sim_sent.php";
  8. $mRedis = redis_connect();
  9. define("_MAX_CHAPTER_LEN_", 20000);
  10. if (isset($_GET["book"])) {
  11. $_book = $_GET["book"];
  12. } else {
  13. $_book = 0;
  14. }
  15. if (isset($_GET["par"])) {
  16. $_para = $_GET["par"];
  17. } else {
  18. $_para = 0;
  19. }
  20. if (isset($_GET["start"])) {
  21. $_start = $_GET["start"];
  22. }
  23. if (isset($_GET["begin"])) {
  24. $_start = $_GET["begin"];
  25. }
  26. if (isset($_GET["end"])) {
  27. $_end = $_GET["end"];
  28. }
  29. $_view = $_GET["view"];
  30. $output["toc"] = array();
  31. $output["sentences"] = array();
  32. $output["head"] = 0;
  33. $output["title"]="";
  34. $output["subtitle"]="";
  35. $output["summary"]="";
  36. $output["content"]="";
  37. $output["owner"]="";
  38. $output["username"]=array("username"=>"","nickname"=>"");
  39. $output["status"]="";
  40. if ($_view == "sent") {
  41. $output["content"] = "{{". $_book . "-" . $_para . "-". $_start . "-" . $_end . "}}";
  42. echo json_encode($output, JSON_UNESCAPED_UNICODE);
  43. exit;
  44. }
  45. if ($_view == "simsent" || $_view == "sim") {
  46. $mPaliSent = new PaliSentence($mRedis);
  47. $mPaliSim = new PaliSimSentence($mRedis);
  48. if(!isset($_GET["id"])){
  49. $id = $mPaliSent->getId($_book,$_para,$_begin,$_end);
  50. }
  51. else{
  52. $id = $_GET["id"];
  53. }
  54. {
  55. $sent_list[] = $mPaliSent->getInfo($id);
  56. $arrList = $mPaliSim->getSimById($id);
  57. if($arrList){
  58. foreach ($arrList as $key => $value) {
  59. # code...
  60. $sent_list = $mPaliSent->getInfo($value["id"]);
  61. $output["content"] .= "{{". $sent_list["book"] . "-" . $sent_list["paragraph"] . "-". $sent_list["begin"] . "-" . $sent_list["end"] . "}}";
  62. }
  63. echo json_encode($output, JSON_UNESCAPED_UNICODE);
  64. }
  65. }
  66. exit;
  67. }
  68. $paraBegin=0;
  69. $paraEnd=0;
  70. PDO_Connect(_FILE_DB_PALITEXT_);
  71. $query = "SELECT level , parent, chapter_len,chapter_strlen FROM "._TABLE_PALI_TEXT_." WHERE book= ? AND paragraph= ? order by paragraph asc";
  72. $FetchParInfo = PDO_FetchRow($query, array($_book, $_para));
  73. if ($FetchParInfo) {
  74. switch ($_view) {
  75. case 'chapter':
  76. # code...
  77. if($FetchParInfo["level"]>0 && $FetchParInfo["level"]<8){
  78. //是标题
  79. $paraBegin = $_para;
  80. $paraEnd = $_para + $FetchParInfo["chapter_len"] - 1;
  81. }
  82. else{
  83. #不是标题,加载所在段落
  84. $paraBegin = $FetchParInfo["parent"];
  85. $query = "SELECT level , parent, chapter_len,chapter_strlen FROM "._TABLE_PALI_TEXT_." WHERE book= ? AND paragraph= ? order by paragraph asc";
  86. $FetchParInfo = PDO_FetchRow($query, array($_book, $paraBegin));
  87. $paraEnd = $paraBegin + $FetchParInfo["chapter_len"] - 1;
  88. }
  89. break;
  90. case 'para':
  91. $paraBegin = $_para;
  92. $paraEnd = $_para;
  93. # code...
  94. break;
  95. default:
  96. # code...
  97. $paraBegin = $_para;
  98. $paraEnd = $_para;
  99. break;
  100. }
  101. //获取下级目录
  102. $query = "SELECT level,paragraph,toc FROM "._TABLE_PALI_TEXT_." WHERE book= ? AND (paragraph BETWEEN ?AND ? ) AND level < 8 order by paragraph asc";
  103. $toc = PDO_FetchAll($query, array($_book, $paraBegin, $paraEnd));
  104. if(count($toc)>0){
  105. $output["title"] = $toc[0]["toc"];
  106. }
  107. /*
  108. 目录
  109. */
  110. $sTocOutput = "\n\n";
  111. if(count($toc)>1){
  112. $currLevel = $toc[0]["level"];
  113. $ulLevel = 0;
  114. $minLevel = 8;
  115. foreach ($toc as $key => $value) {
  116. if($value["level"] < $minLevel ){
  117. $minLevel = $value["level"];
  118. }
  119. }
  120. foreach ($toc as $key => $value) {
  121. # code...
  122. if(empty($value["toc"])){
  123. $sToc = "unnamed";
  124. }else{
  125. $sToc = $value["toc"];
  126. }
  127. $sToc = str_replace(['[',']'],[' [','] '],$sToc);
  128. if($value["level"] > $currLevel ){
  129. $ulLevel++;
  130. }
  131. else if($value["level"] < $currLevel ){
  132. $ulLevel--;
  133. }
  134. $currLevel = $value["level"];
  135. $space = "";
  136. for ($i=$minLevel; $i < $currLevel; $i++) {
  137. # code...
  138. $space .= " ";
  139. }
  140. $sTocOutput .= $space . "- [{$sToc}](../article/index.php?view=chapter&book={$_book}&par={$value["paragraph"]})\n";
  141. }
  142. }
  143. $sTocOutput .= "\n\n";
  144. if ($FetchParInfo["chapter_strlen"] > _MAX_CHAPTER_LEN_ && $_view === "chapter" && count($toc) > 1) {
  145. #文档过大,只加载目录
  146. if ($toc[1]["paragraph"] - $_para > 1) {
  147. # 中间有间隔
  148. $paraBegin = $_para;
  149. $paraEnd = $toc[1]["paragraph"] - 1;
  150. $output["head"] = 1;
  151. } else {
  152. #中间无间隔
  153. $output["content"] .= $sTocOutput;
  154. echo json_encode($output, JSON_UNESCAPED_UNICODE);
  155. exit;
  156. }
  157. }
  158. PDO_Connect(_FILE_DB_PALI_SENTENCE_);
  159. $query = "SELECT book,paragraph, word_begin as begin, word_end as end FROM "._TABLE_PALI_SENT_." WHERE book= ? AND (paragraph BETWEEN ? AND ? ) order by paragraph,word_begin asc";
  160. $sent_list = PDO_FetchAll($query, array($_book, $paraBegin, $paraEnd));
  161. $iCurrPara=0;
  162. $output["sent_list"] = $sent_list;
  163. foreach ($sent_list as $key => $value) {
  164. # code...
  165. if($value["paragraph"]!==$iCurrPara){
  166. $output["content"] .= "\n\n";
  167. $iCurrPara = $value["paragraph"];
  168. if($_view=="chapter" && $paraBegin != $_para){
  169. if($_para==$value["paragraph"]){
  170. $output["content"] .= "<div id='para_focus' class='focus'>\n\n";
  171. }
  172. }
  173. if($_view=="chapter" && $paraBegin!=$_para){
  174. if($_para==$value["paragraph"]-1){
  175. $output["content"] .= "\n\n</div>";
  176. }
  177. }
  178. $output["content"] .= "<div class='page_number' page='{$iCurrPara}'>{$iCurrPara}</div>\n\n";
  179. }
  180. $output["content"] .= "{{". $value["book"] . "-" . $value["paragraph"] . "-". $value["begin"] . "-" . $value["end"] . "}}";
  181. }
  182. $output["content"] .= $sTocOutput;
  183. echo json_encode($output, JSON_UNESCAPED_UNICODE);
  184. } else {
  185. echo json_encode($output, JSON_UNESCAPED_UNICODE);
  186. }
  187. PrefLog();