get_chapter_children.php 3.6 KB

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