note.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <?php
  2. require_once "../path.php";
  3. require_once "../public/_pdo.php";
  4. require_once "../public/function.php";
  5. require_once "../channal/function.php";
  6. require_once "../redis/function.php";
  7. $redis = redis_connect();
  8. $_channal = new Channal();
  9. $_data = array();
  10. if (isset($_POST["data"])) {
  11. $_data = json_decode($_POST["data"], true);
  12. } else {
  13. if (isset($_GET["id"])) {
  14. $id = $_GET["id"];
  15. } else {
  16. echo "error: no id";
  17. return;
  18. }
  19. if (isset($_GET["info"])) {
  20. $info = $_GET["info"];
  21. } else {
  22. echo "error: no info";
  23. return;
  24. }
  25. $_data[] = array("id" => $id, "data" => $info);
  26. }
  27. if (isset($_POST["setting"])) {
  28. $_setting = json_decode($_POST["setting"], true);
  29. } else {
  30. $_setting["lang"] = "";
  31. $_setting["channal"] = "";
  32. }
  33. $dns = "" . _FILE_DB_PALI_SENTENCE_;
  34. $db_pali_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  35. $db_pali_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  36. $dns = "" . _FILE_DB_PALI_SENTENCE_SIM_;
  37. $db_pali_sent_sim = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  38. $db_pali_sent_sim->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  39. $dns = "" . _FILE_DB_SENTENCE_;
  40. $db_trans_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  41. $db_trans_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  42. $output = array();
  43. #查询有阅读权限的channel
  44. $channal_list = array();
  45. if (isset($_COOKIE["userid"])) {
  46. PDO_Connect( _FILE_DB_CHANNAL_);
  47. $query = "SELECT id from channal where owner = ? limit 0,100";
  48. $Fetch_my = PDO_FetchAll($query, array($_COOKIE["userid"]));
  49. foreach ($Fetch_my as $key => $value) {
  50. # code...
  51. $channal_list[] = $value["id"];
  52. }
  53. # 找协作的
  54. $Fetch_coop = array();
  55. $query = "SELECT channal_id FROM cooperation WHERE user_id = ? ";
  56. $coop_channal = PDO_FetchAll($query, array($_COOKIE["userid"]));
  57. if (count($coop_channal) > 0) {
  58. foreach ($coop_channal as $key => $value) {
  59. # code...
  60. $channal_list[] = $value["channal_id"];
  61. }
  62. }
  63. /* 创建一个填充了和params相同数量占位符的字符串 */
  64. }
  65. if (count($channal_list) > 0) {
  66. $channel_place_holders = implode(',', array_fill(0, count($channal_list), '?'));
  67. $channel_query = " OR channal IN ($channel_place_holders)";
  68. } else {
  69. $channel_query = "";
  70. }
  71. # 查询有阅读权限的channel 结束
  72. foreach ($_data as $key => $value) {
  73. # code...
  74. $id = $value["id"];
  75. $arrInfo = explode("@", $value["data"]);
  76. if (isset($arrInfo[1])) {
  77. $sentChannal = $arrInfo[1];
  78. } else {
  79. $sentChannal = "";
  80. }
  81. if (isset($arrInfo[0])) {
  82. $arrSent = str_getcsv($arrInfo[0], "-");
  83. $bookId = $arrSent[0];
  84. $para = $arrSent[1];
  85. $begin = $arrSent[2];
  86. $end = $arrSent[3];
  87. } else {
  88. $bookId = 0;
  89. $para = 0;
  90. $begin = 0;
  91. $end = 0;
  92. }
  93. if ($redis != false) {
  94. $result = $redis->get('pali_sent_' . $bookId . "_" . $para . "_" . $begin . "_" . $end);
  95. $palitext = $result;
  96. $pali_text_id = 0;
  97. } else {
  98. $query = "SELECT id,html FROM 'pali_sent' WHERE book = ? AND paragraph = ? AND begin = ? AND end = ? ";
  99. $sth = $db_pali_sent->prepare($query);
  100. $sth->execute(array($bookId, $para, $begin, $end));
  101. $row = $sth->fetch(PDO::FETCH_ASSOC);
  102. if ($row) {
  103. $palitext = $row['html'];
  104. $pali_text_id = $row['id'];
  105. } else {
  106. $palitext = "";
  107. $pali_text_id = 0;
  108. }
  109. }
  110. $pali_sim = 0;
  111. $query = "SELECT count FROM 'sent_sim_index' WHERE sent_id = ? ";
  112. $sth = $db_pali_sent_sim->prepare($query);
  113. $sth->execute(array($pali_text_id));
  114. $row = $sth->fetch(PDO::FETCH_ASSOC);
  115. if ($row) {
  116. $pali_sim = $row["count"]; //explode(",",$row["sim_sents"]) ;
  117. } else {
  118. $pali_sim = 0;
  119. }
  120. //查询相似句
  121. //find out translation 查询译文
  122. $tran = "";
  123. $translation = array();
  124. $tran_channal = array();
  125. try {
  126. if (empty($_setting["channal"])) {
  127. if ($sentChannal == "") {
  128. $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? AND strlen >0 and (status = 30 {$channel_query} ) order by modify_time DESC limit 0 ,1 ";
  129. $channal = "";
  130. } else {
  131. $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? AND strlen >0 AND channal = ? limit 0 ,1 ";
  132. }
  133. } else {
  134. $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? AND strlen >0 AND channal = ? limit 0 ,1 ";
  135. $channal = $_setting["channal"];
  136. }
  137. $stmt = $db_trans_sent->prepare($query);
  138. if (empty($_setting["channal"])) {
  139. if ($sentChannal == "") {
  140. $parm = array($bookId, $para, $begin, $end);
  141. $parm = array_merge_recursive($parm, $channal_list);
  142. $stmt->execute($parm);
  143. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  144. if ($Fetch) {
  145. $tran = $Fetch["text"];
  146. $translation[] = array("id" => $Fetch["id"], "text" => $Fetch["text"], "lang" => $Fetch["language"], "channal" => $Fetch["channal"], "editor" => $Fetch["editor"]);
  147. if (!empty($Fetch["channal"])) {
  148. $tran_channal[$Fetch["channal"]] = $Fetch["channal"];
  149. }
  150. }
  151. } else {
  152. $stmt->execute(array($bookId, $para, $begin, $end, $sentChannal));
  153. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  154. if ($Fetch) {
  155. $tran = $Fetch["text"];
  156. $translation[] = array("id" => $Fetch["id"], "text" => $Fetch["text"], "lang" => $Fetch["language"], "channal" => $Fetch["channal"], "editor" => $Fetch["editor"]);
  157. $tran_channal[$Fetch["channal"]] = $Fetch["channal"];
  158. }
  159. }
  160. } else {
  161. $arrChannal = explode(",", $_setting["channal"]);
  162. foreach ($arrChannal as $key => $value) {
  163. # code...
  164. $stmt->execute(array($bookId, $para, $begin, $end, $value));
  165. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  166. if ($Fetch) {
  167. $translation[] = array("id" => $Fetch["id"], "text" => $Fetch["text"], "lang" => $Fetch["language"], "channal" => $value, "editor" => $Fetch["editor"]);
  168. } else {
  169. $translation[] = array("id" => "", "text" => "", "lang" => "", "channal" => $value);
  170. }
  171. $tran_channal[$value] = $value;
  172. }
  173. }
  174. $tran_count = 1;
  175. } catch (Exception $e) {
  176. $tran = $e->getMessage();
  177. //echo 'Caught exception: ', $e->getMessage(), "\n";
  178. }
  179. foreach ($tran_channal as $key => $value) {
  180. # code...
  181. $tran_channal[$key] = $_channal->getChannal($key);
  182. }
  183. foreach ($translation as $key => $value) {
  184. # code...
  185. if ($value["channal"]) {
  186. $translation[$key]["channalinfo"] = $tran_channal[$value["channal"]];
  187. } else {
  188. $translation[$key]["channalinfo"] = false;
  189. }
  190. }
  191. //查询路径
  192. $para_path = _get_para_path($bookId, $para);
  193. $output[] = array("id" => $id,
  194. "palitext" => $palitext,
  195. "pali_sent_id" => $pali_text_id,
  196. "tran" => $tran,
  197. "translation" => $translation,
  198. "ref" => $para_path,
  199. "tran_count" => $tran_count,
  200. "book" => $bookId,
  201. "para" => $para,
  202. "begin" => $begin,
  203. "end" => $end,
  204. "sim" => $pali_sim,
  205. );
  206. }
  207. echo json_encode($output, JSON_UNESCAPED_UNICODE);