get_chapter_children.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. require_once '../config.php';
  3. try {
  4. $redis = new redis();
  5. $r_conn = $redis->connect('127.0.0.1', 6379);
  6. } catch (Exception $e) {
  7. $r_conn = false;
  8. }
  9. $dns = _FILE_DB_PALI_TOC_;
  10. $dbh_toc = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
  11. $dbh_toc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  12. $dns = _FILE_DB_PALITEXT_;
  13. $dbh_pali_text = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
  14. $dbh_pali_text->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  15. $dns = _FILE_DB_RESRES_INDEX_;
  16. $dbh_res = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
  17. $dbh_res->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  18. if (isset($_GET["book"])) {
  19. $book = (int) $_GET["book"];
  20. }
  21. if (isset($_GET["para"])) {
  22. $para = (int) $_GET["para"];
  23. }
  24. $query = "SELECT chapter_len FROM "._TABLE_PALI_TEXT_." WHERE book = ? and paragraph = ?";
  25. $stmt = $dbh_pali_text->prepare($query);
  26. $stmt->execute(array($book, $para));
  27. $paraInfo = $stmt->fetch(PDO::FETCH_ASSOC);
  28. if ($paraInfo) {
  29. $query = "SELECT level FROM "._TABLE_PALI_TEXT_." WHERE book = ? and (paragraph between ? and ?) and level<8 order by level ASC limit 1";
  30. $stmt = $dbh_pali_text->prepare($query);
  31. $stmt->execute(array($book, $para + 1, $para + (int) $paraInfo["chapter_len"] - 1));
  32. $paraMax = $stmt->fetch(PDO::FETCH_ASSOC);
  33. if ($paraMax) {
  34. $query = "SELECT book, paragraph as para, level , toc as title FROM "._TABLE_PALI_TEXT_." WHERE book = ? and (paragraph between ? and ?) and level = ? order by paragraph ASC limit 1000";
  35. $stmt = $dbh_pali_text->prepare($query);
  36. $stmt->execute(array($book, $para, $para + $paraInfo["chapter_len"], $paraMax["level"]));
  37. $paraList = $stmt->fetchAll(PDO::FETCH_ASSOC);
  38. foreach ($paraList as $key => $value) {
  39. # 查进度
  40. $paraProgress = false;
  41. if ($r_conn) {
  42. $count = $redis->hLen("progress_chapter_{$value["book"]}_{$value["para"]}");
  43. if ($count > 0) {
  44. $prog = $redis->hGetAll("progress_chapter_{$value["book"]}_{$value["para"]}");
  45. foreach ($prog as $keylang => $valuetrans) {
  46. # code...
  47. $paraProgress = array("lang" => $keylang, "all_trans" => $valuetrans);
  48. break;
  49. }
  50. }
  51. } else {
  52. $query = "SELECT lang, all_trans from "._TABLE_PROGRESS_CHAPTER_." where book=? and para=?";
  53. $stmt = $dbh_toc->prepare($query);
  54. $sth_toc = $dbh_toc->prepare($query);
  55. $sth_toc->execute(array($value["book"], $value["para"]));
  56. $paraProgress = $sth_toc->fetch(PDO::FETCH_ASSOC);
  57. }
  58. $paraList[$key]["progress"] = $paraProgress;
  59. #查标题
  60. if (isset($_GET["lang"])) {
  61. $query = "SELECT title from "._TABLE_RES_INDEX_." where book=? and paragraph=? and language=?";
  62. $stmt = $dbh_res->prepare($query);
  63. $sth_title = $dbh_res->prepare($query);
  64. $sth_title->execute(array($value["book"], $value["para"], $_GET["lang"]));
  65. $trans_title = $sth_title->fetch(PDO::FETCH_ASSOC);
  66. if ($trans_title) {
  67. $paraList[$key]["trans_title"] = $trans_title['title'];
  68. }
  69. }
  70. }
  71. echo json_encode($paraList, JSON_UNESCAPED_UNICODE);
  72. } else {
  73. echo json_encode(array(), JSON_UNESCAPED_UNICODE);
  74. }
  75. } else {
  76. echo json_encode(array(), JSON_UNESCAPED_UNICODE);
  77. }