get.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /*
  3. 获取句子译文
  4. */
  5. require_once "../path.php";
  6. require_once "../public/_pdo.php";
  7. require_once "../public/function.php";
  8. require_once "../channal/function.php";
  9. require_once "../ucenter/function.php";
  10. #查询有阅读权限的channel
  11. $channal_list = array();
  12. if (isset($_COOKIE["userid"])) {
  13. PDO_Connect("" . _FILE_DB_CHANNAL_);
  14. $query = "SELECT id from channal where owner = ? limit 0,100";
  15. $Fetch_my = PDO_FetchAll($query, array($_COOKIE["userid"]));
  16. foreach ($Fetch_my as $key => $value) {
  17. # code...
  18. $channal_list[] = $value["id"];
  19. }
  20. # 找协作的
  21. $Fetch_coop = array();
  22. $query = "SELECT channal_id FROM cooperation WHERE user_id = ? ";
  23. $coop_channal = PDO_FetchAll($query, array($_COOKIE["userid"]));
  24. if (count($coop_channal) > 0) {
  25. foreach ($coop_channal as $key => $value) {
  26. # code...
  27. $channal_list[] = $value["channal_id"];
  28. }
  29. }
  30. /* 创建一个填充了和params相同数量占位符的字符串 */
  31. }
  32. if (count($channal_list) > 0) {
  33. $channel_place_holders = implode(',', array_fill(0, count($channal_list), '?'));
  34. $channel_query = " OR channal IN ($channel_place_holders)";
  35. } else {
  36. $channel_query = "";
  37. }
  38. # 查询有阅读权限的channel 结束
  39. $dns = "" . _FILE_DB_SENTENCE_;
  40. $dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  41. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  42. /* 开始一个事务,关闭自动提交 */
  43. if (isset($_GET["sentences"])) {
  44. #查询句子编号列表
  45. $arrSent = explode(",", $_GET["sentences"]);
  46. /* 创建一个填充了和params相同数量占位符的字符串 */
  47. $place_holders = implode(',', array_fill(0, count($arrSent), '?'));
  48. $query = "SELECT * FROM sentence WHERE id IN ($place_holders) and (status = 30 {$channel_query} )";
  49. $stmt = $dbh->prepare($query);
  50. $stmt->execute($arrSent);
  51. } else {
  52. $book = $_GET["book"];
  53. $para = $_GET["para"];
  54. $begin = $_GET["begin"];
  55. $end = $_GET["end"];
  56. $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 ";
  57. $stmt = $dbh->prepare($query);
  58. $parm = array($book, $para, $begin, $end);
  59. $parm = array_merge_recursive($parm, $channal_list);
  60. $stmt->execute($parm);
  61. }
  62. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  63. $channel_info = new Channal();
  64. $user_info = new UserInfo();
  65. foreach ($Fetch as $key => $value) {
  66. # code...
  67. $channel = $channel_info->getChannal($value["channal"]);
  68. if ($channel) {
  69. $Fetch[$key]["c_name"] = $channel["name"];
  70. $Fetch[$key]["c_owner"] = $user_info->getName($channel["owner"]);
  71. }
  72. }
  73. echo json_encode($Fetch, JSON_UNESCAPED_UNICODE);