get_para1.php 4.7 KB

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