note.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  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 "../ucenter/function.php";
  7. require_once "../usent/function.php";
  8. require_once "../redis/function.php";
  9. $redis = redis_connect();
  10. $_channal = new Channal();
  11. $_userinfo = new UserInfo();
  12. $_sentPr = new SentPr($redis);
  13. $_data = array();
  14. if (isset($_POST["data"])) {
  15. $_data = json_decode($_POST["data"], true);
  16. } else {
  17. if (isset($_GET["id"])) {
  18. $id = $_GET["id"];
  19. } else {
  20. echo "error: no id";
  21. return;
  22. }
  23. if (isset($_GET["info"])) {
  24. $info = $_GET["info"];
  25. } else {
  26. echo "error: no info";
  27. return;
  28. }
  29. $_data[] = array("id" => $id, "data" => $info);
  30. }
  31. if (isset($_POST["setting"])) {
  32. $_setting = json_decode($_POST["setting"], true);
  33. } else {
  34. $_setting["lang"] = "";
  35. $_setting["channal"] = "";
  36. }
  37. $dns = "" . _FILE_DB_PALI_SENTENCE_;
  38. $db_pali_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  39. $db_pali_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  40. $dns = "" . _FILE_DB_PALI_SENTENCE_SIM_;
  41. $db_pali_sent_sim = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  42. $db_pali_sent_sim->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  43. $dns = "" . _FILE_DB_SENTENCE_;
  44. $db_trans_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  45. $db_trans_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  46. $output = array();
  47. #查询有阅读权限的channel
  48. $channal_list = array();
  49. if (isset($_COOKIE["userid"])) {
  50. PDO_Connect( _FILE_DB_CHANNAL_);
  51. $query = "SELECT id from channal where owner = ? limit 0,100";
  52. $Fetch_my = PDO_FetchAll($query, array($_COOKIE["userid"]));
  53. foreach ($Fetch_my as $key => $value) {
  54. # code...
  55. $channal_list[] = $value["id"];
  56. }
  57. # 找协作的
  58. $Fetch_coop = array();
  59. $query = "SELECT channal_id FROM cooperation WHERE user_id = ? ";
  60. $coop_channal = PDO_FetchAll($query, array($_COOKIE["userid"]));
  61. if (count($coop_channal) > 0) {
  62. foreach ($coop_channal as $key => $value) {
  63. # code...
  64. $channal_list[] = $value["channal_id"];
  65. }
  66. }
  67. /* 创建一个填充了和params相同数量占位符的字符串 */
  68. }
  69. if (count($channal_list) > 0) {
  70. $channel_place_holders = implode(',', array_fill(0, count($channal_list), '?'));
  71. $channel_query = " OR channal IN ($channel_place_holders)";
  72. } else {
  73. $channel_query = "";
  74. }
  75. # 查询有阅读权限的channel 结束
  76. foreach ($_data as $key => $value) {
  77. # code...
  78. $id = $value["id"];
  79. $arrInfo = explode("@", $value["data"]);
  80. if (isset($arrInfo[1])) {
  81. $sentChannal = $arrInfo[1];
  82. } else {
  83. $sentChannal = "";
  84. }
  85. if (isset($arrInfo[0])) {
  86. $arrSent = str_getcsv($arrInfo[0], "-");
  87. $bookId = $arrSent[0];
  88. $para = $arrSent[1];
  89. $begin = $arrSent[2];
  90. $end = $arrSent[3];
  91. } else {
  92. $bookId = 0;
  93. $para = 0;
  94. $begin = 0;
  95. $end = 0;
  96. }
  97. $pali_sim = 0;
  98. if ($redis != false) {
  99. $result = $redis->hGet('pali://sent/' . $bookId . "_" . $para . "_" . $begin . "_" . $end,"pali");
  100. $palitext = $result;
  101. $pali_text_id = $redis->hGet('pali://sent/' . $bookId . "_" . $para . "_" . $begin . "_" . $end,"id");
  102. $pali_sim = $redis->hGet('pali://sent/' . $bookId . "_" . $para . "_" . $begin . "_" . $end,"sim_count");
  103. } else {
  104. $query = "SELECT id,html FROM 'pali_sent' WHERE book = ? AND paragraph = ? AND begin = ? AND end = ? ";
  105. $sth = $db_pali_sent->prepare($query);
  106. $sth->execute(array($bookId, $para, $begin, $end));
  107. $row = $sth->fetch(PDO::FETCH_ASSOC);
  108. if ($row) {
  109. $palitext = $row['html'];
  110. $pali_text_id = $row['id'];
  111. } else {
  112. $palitext = "";
  113. $pali_text_id = 0;
  114. }
  115. //查询相似句
  116. $query = "SELECT count FROM 'sent_sim_index' WHERE sent_id = ? ";
  117. $sth = $db_pali_sent_sim->prepare($query);
  118. $sth->execute(array($pali_text_id));
  119. $row = $sth->fetch(PDO::FETCH_ASSOC);
  120. if ($row) {
  121. $pali_sim = $row["count"]; //explode(",",$row["sim_sents"]) ;
  122. }
  123. }
  124. //find out translation 查询译文
  125. $tran = "";
  126. $translation = array();
  127. $tran_channal = array();
  128. try {
  129. if (empty($_setting["channal"])) {
  130. if ($sentChannal == "") {
  131. $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 ";
  132. $channal = "";
  133. } else {
  134. $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? AND strlen >0 AND channal = ? limit 0 ,1 ";
  135. }
  136. } else {
  137. $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? AND strlen >0 AND channal = ? limit 0 ,1 ";
  138. $channal = $_setting["channal"];
  139. }
  140. $stmt = $db_trans_sent->prepare($query);
  141. if (empty($_setting["channal"])) {
  142. #没有指定channel
  143. if ($sentChannal == "") {
  144. #句子信息也没指定channel
  145. $parm = array($bookId, $para, $begin, $end);
  146. $parm = array_merge_recursive($parm, $channal_list);
  147. $stmt->execute($parm);
  148. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  149. if ($Fetch) {
  150. $tran = $Fetch["text"];
  151. $translation[] = array("id" => $Fetch["id"],
  152. "book"=>$bookId,
  153. "para"=>$para,
  154. "begin"=>$begin,
  155. "end"=>$end,
  156. "text" => $Fetch["text"],
  157. "lang" => $Fetch["language"],
  158. "channal" => $Fetch["channal"],
  159. "status" => $Fetch["status"],
  160. "editor" => $Fetch["editor"],
  161. "editor_name"=>$_userinfo->getName($Fetch["editor"]),
  162. "update_time"=>$Fetch["modify_time"]
  163. );
  164. if (!empty($Fetch["channal"])) {
  165. $tran_channal[$Fetch["channal"]] = $Fetch["channal"];
  166. }
  167. }
  168. } else {
  169. #句子信息包含channel
  170. #{{book-para-begin-end@channelid}}
  171. $stmt->execute(array($bookId, $para, $begin, $end, $sentChannal));
  172. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  173. if ($Fetch) {
  174. $tran = $Fetch["text"];
  175. $translation[] = array("id" => $Fetch["id"],
  176. "book"=>$bookId,
  177. "para"=>$para,
  178. "begin"=>$begin,
  179. "end"=>$end,
  180. "text" => $Fetch["text"],
  181. "lang" => $Fetch["language"],
  182. "channal" => $Fetch["channal"],
  183. "status" => $Fetch["status"],
  184. "editor" => $Fetch["editor"],
  185. "editor_name"=>$_userinfo->getName($Fetch["editor"]),
  186. "update_time"=>$Fetch["modify_time"]
  187. );
  188. $tran_channal[$Fetch["channal"]] = $Fetch["channal"];
  189. }
  190. }
  191. } else {
  192. #指定了channel
  193. $arrChannal = explode(",", $_setting["channal"]);
  194. foreach ($arrChannal as $key => $value) {
  195. # code...
  196. $stmt->execute(array($bookId, $para, $begin, $end, $value));
  197. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  198. if ($Fetch) {
  199. $translation[] = array("id" => $Fetch["id"],
  200. "book"=>$bookId,
  201. "para"=>$para,
  202. "begin"=>$begin,
  203. "end"=>$end,
  204. "text" => $Fetch["text"],
  205. "lang" => $Fetch["language"],
  206. "channal" => $value,
  207. "status" => $Fetch["status"],
  208. "editor" => $Fetch["editor"],
  209. "editor_name"=>$_userinfo->getName($Fetch["editor"]),
  210. "update_time"=>$Fetch["modify_time"]
  211. );
  212. } else {
  213. $translation[] = array("id" => "",
  214. "book"=>$bookId,
  215. "para"=>$para,
  216. "begin"=>$begin,
  217. "end"=>$end,
  218. "text" => "",
  219. "lang" => "",
  220. "channal" => $value,
  221. "status" => 0,
  222. "editor" => false,
  223. "editor_name"=>false,
  224. "update_time"=>false
  225. );
  226. }
  227. $tran_channal[$value] = $value;
  228. }
  229. }
  230. $tran_count = 1;
  231. } catch (Exception $e) {
  232. $tran = $e->getMessage();
  233. //echo 'Caught exception: ', $e->getMessage(), "\n";
  234. }
  235. foreach ($tran_channal as $key => $value) {
  236. # code...
  237. $tran_channal[$key] = $_channal->getChannal($key);
  238. $tran_channal[$key]["mypower"] = $_channal->getPower($key);
  239. }
  240. foreach ($translation as $key => $value) {
  241. # code...
  242. if ($value["channal"]) {
  243. $translation[$key]["channalinfo"] = $tran_channal[$value["channal"]];
  244. $translation[$key]["mypower"] = $tran_channal[$value["channal"]]["mypower"];
  245. $translation[$key]["status"] = $tran_channal[$value["channal"]]["status"];
  246. #查询句子pr
  247. $translation[$key]["pr_new"]=$_sentPr->getNewPrNumber($value["book"],$value["para"],$value["begin"],$value["end"],$value["channal"]);
  248. $translation[$key]["pr_all"]=$_sentPr->getAllPrNumber($value["book"],$value["para"],$value["begin"],$value["end"],$value["channal"]);
  249. } else {
  250. $translation[$key]["channalinfo"] = false;
  251. }
  252. }
  253. //查询路径
  254. $para_path = _get_para_path($bookId, $para);
  255. $output[] = array("id" => $id,
  256. "palitext" => $palitext,
  257. "pali_sent_id" => $pali_text_id,
  258. "tran" => $tran,
  259. "translation" => $translation,
  260. "ref" => $para_path,
  261. "tran_count" => $tran_count,
  262. "book" => $bookId,
  263. "para" => $para,
  264. "begin" => $begin,
  265. "end" => $end,
  266. "sim" => $pali_sim,
  267. );
  268. }
  269. echo json_encode($output, JSON_UNESCAPED_UNICODE);