2
0

function.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. require_once "../path.php";
  3. require_once "../db/table.php";
  4. class PaliText extends Table
  5. {
  6. function __construct($redis=false) {
  7. parent::__construct(_FILE_DB_PALITEXT_, "pali_text", "", "",$redis);
  8. }
  9. public function getPath($book,$para){
  10. if($this->redis!==false){
  11. $path = $this->redis->hGet("pali_text://path",$book."-".$para);
  12. if($path!==FALSE){
  13. return json_decode($path,true);
  14. }
  15. }
  16. $path = array();
  17. $parent = $para;
  18. $deep = 0;
  19. $sFirstParentTitle = "";
  20. //循环查找父标题 得到整条路径
  21. while ($parent > -1) {
  22. $query = "select * from pali_text where \"book\" = ? and \"paragraph\" = ? limit 0,1";
  23. $stmt = $this->dbh->prepare($query);
  24. $stmt->execute(array($book, $parent));
  25. $FetParent = $stmt->fetch(PDO::FETCH_ASSOC);
  26. $toc =array("book"=>$book,"para"=>$parent,"level"=>$FetParent["level"],"title"=>$FetParent["toc"]);
  27. $path[] = $toc;
  28. $parent = $FetParent["parent"];
  29. $deep++;
  30. if ($deep > 5) {
  31. break;
  32. }
  33. }
  34. if($this->redis){
  35. $this->redis->hSet("pali_text://path",$book."-".$para,json_encode($path,JSON_UNESCAPED_UNICODE));
  36. }
  37. return ($path);
  38. }
  39. public function getPathHtml($arrPath){
  40. $path="";
  41. foreach ($arrPath as $key => $value) {
  42. # code...
  43. $toc = "<chapter book='{$value["book"]}' para='{$value["para"]}' title='{$value["title"]}'>{$value["title"]}</chapter>";
  44. if ($path == "") {
  45. if ($value["level"] < 100) {
  46. $path = $toc;
  47. } else {
  48. $path = "<para book='{$value["book"]}' para='{$value["para"]}' title='{$value["title"]}'>{$value["para"]}</para>";
  49. }
  50. } else {
  51. $path = $toc . $path;
  52. }
  53. }
  54. return $path;
  55. }
  56. }
  57. class PaliBook extends Table
  58. {
  59. function __construct($redis=false) {
  60. parent::__construct(_FILE_DB_PALITEXT_, "books", "", "",$redis);
  61. }
  62. public function getBookTitle($book,$para){
  63. /*
  64. if($this->redis!==false){
  65. $result = $this->redis->hGet("pali_text://book",$book."-".$para);
  66. if($result!==FALSE){
  67. return $result;
  68. }
  69. }
  70. */
  71. $query = "select title from books where \"book\" = ? and \"paragraph\" = ? limit 0,1";
  72. $stmt = $this->dbh->prepare($query);
  73. $stmt->execute(array($book, $para));
  74. $book = $stmt->fetch(PDO::FETCH_ASSOC);
  75. if($book){
  76. if($this->redis){
  77. //$this->redis->hSet("pali_text://book",$book."-".$para,$book["title"]);
  78. }
  79. return $book["title"];
  80. }
  81. else{
  82. return false;
  83. }
  84. }
  85. }
  86. ?>