channal_list.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. #输入句子列表查询channel列表 和计算完成度
  3. require_once "../public/function.php";
  4. require_once "../public/_pdo.php";
  5. require_once "../path.php";
  6. require_once '../channal/function.php';
  7. require_once '../ucenter/function.php';
  8. require_once '../share/function.php';
  9. $log = "";
  10. $timeStart = microtime(true);
  11. $_data = array();
  12. $output = array();
  13. if (isset($_POST["data"])) {
  14. $_data = json_decode($_POST["data"], true);
  15. } else {
  16. echo json_encode($output, JSON_UNESCAPED_UNICODE);
  17. exit;
  18. }
  19. $_userinfo = new UserInfo();
  20. $_channal = new Channal();
  21. $dns = "" . _FILE_DB_SENTENCE_;
  22. $db_trans_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  23. $db_trans_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  24. $dns = "" . _FILE_DB_PALI_SENTENCE_;
  25. $db_pali_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  26. $db_pali_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  27. $channal = array();
  28. #查询有阅读权限的channel
  29. $channal_list = array();
  30. $channel_power=array();
  31. if (isset($_COOKIE["userid"])) {
  32. //找自己的
  33. PDO_Connect(_FILE_DB_CHANNAL_);
  34. $query = "SELECT id from channal where owner = ? and status >0 limit 0,100";
  35. $Fetch_my = PDO_FetchAll($query, array($_COOKIE["userid"]));
  36. foreach ($Fetch_my as $key => $value) {
  37. # code...
  38. $channal_list[] = $value["id"];
  39. $channel_power[$value["id"]]=30;
  40. }
  41. $time = microtime(true);
  42. $log .= $time-$timeStart ." - 找自己的结束". PHP_EOL;
  43. $timeStart = $time;
  44. # 找协作的
  45. $coop_channal = share_res_list_get($_COOKIE["userid"],2);
  46. foreach ($coop_channal as $key => $value) {
  47. # return res_id,res_type,power res_title res_owner_id
  48. $channal_list[] = $value["res_id"];
  49. if(isset($channel_power[$value["res_id"]])){
  50. if($channel_power[$value["res_id"]]<(int)$value["power"]){
  51. $channel_power[$value["res_id"]]=(int)$value["power"];
  52. }
  53. }
  54. }
  55. $time = microtime(true);
  56. $log .= $time-$timeStart ." - 找协作的结束". PHP_EOL;
  57. $timeStart = $time;
  58. }
  59. if (count($channal_list) > 0) {
  60. # 创建一个填充了和params相同数量占位符的字符串
  61. $channel_place_holders = implode(',', array_fill(0, count($channal_list), '?'));
  62. $channel_query = " OR channal IN ($channel_place_holders)";
  63. } else {
  64. $channel_query = "";
  65. }
  66. # 查询有阅读权限的channel 结束
  67. $time = microtime(true);
  68. $log .= $time-$timeStart ." - 查询有阅读权限的channel 结束". PHP_EOL;
  69. $timeStart = $time;
  70. $final = array();
  71. $article_len = 0;
  72. foreach ($_data as $key => $value) {
  73. $pali_letter = array();
  74. # code...
  75. $id = $value["id"];
  76. $arrInfo = str_getcsv($value["data"], "@");
  77. $arrSent = str_getcsv($arrInfo[0], "-");
  78. $bookId = $arrSent[0];
  79. $para = $arrSent[1];
  80. $begin = $arrSent[2];
  81. $end = $arrSent[3];
  82. //find out translation
  83. $tran = "";
  84. try {
  85. # 查询句子长度
  86. $pali_letter["id"] = $arrInfo[0];
  87. $query = "SELECT length FROM pali_sent WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? ";
  88. $stmt = $db_pali_sent->prepare($query);
  89. $stmt->execute(array($bookId, $para, $begin, $end));
  90. $Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
  91. if ($Fetch) {
  92. $pali_letter["len"] = $Fetch["length"];
  93. $article_len += $Fetch["length"];
  94. } else {
  95. $pali_letter["len"] = 0;
  96. }
  97. #公开 或 channel有权限的
  98. $query = "SELECT channal FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ? AND strlen >0 and (status = 30 {$channel_query} ) group by channal limit 0 ,20 ";
  99. $stmt = $db_trans_sent->prepare($query);
  100. $parm = array($bookId, $para, $begin, $end);
  101. $parm = array_merge_recursive($parm, $channal_list);
  102. $stmt->execute($parm);
  103. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  104. foreach ($Fetch as $key => $value) {
  105. # code...
  106. $pali_letter[$value["channal"]] = 1;
  107. if (isset($channal[$value["channal"]])) {
  108. $channal[$value["channal"]]++;
  109. } else {
  110. $channal[$value["channal"]] = 1;
  111. }
  112. }
  113. $final[] = $pali_letter;
  114. } catch (Exception $e) {
  115. $tran = $e->getMessage();
  116. //echo 'Caught exception: ', $e->getMessage(), "\n";
  117. }
  118. }
  119. $time = microtime(true);
  120. $log .= $time-$timeStart ." - 查询句子长度 结束 ". PHP_EOL;
  121. $timeStart = $time;
  122. foreach ($channal as $key => $value) {
  123. # 计算句子的完成分布
  124. $arr_sent_final = array();
  125. foreach ($final as $final_value) {
  126. # code...
  127. $sent_final = array();
  128. $sent_final["id"] = $final_value["id"];
  129. $sent_final["len"] = $final_value["len"];
  130. if (isset($final_value[$key]) && $final_value[$key] == 1) {
  131. $sent_final["final"] = true;
  132. } else {
  133. $sent_final["final"] = false;
  134. }
  135. $arr_sent_final[] = $sent_final;
  136. }
  137. $channalInfo = $_channal->getChannal($key);
  138. $name = $_userinfo->getName($channalInfo["owner"]);
  139. $channalInfo["username"] = $name["username"];
  140. $channalInfo["nickname"] = $name["nickname"];
  141. $channalInfo["count"] = $value;
  142. $channalInfo["all"] = count($_data);
  143. $channalInfo["final"] = $arr_sent_final;
  144. $channalInfo["article_len"] = $article_len;
  145. if(isset($channel_power[$key])){
  146. $channalInfo["power"] =$channel_power[$key];
  147. }
  148. else{
  149. $channalInfo["power"] =10;
  150. }
  151. $output[] = $channalInfo;
  152. }
  153. $time = microtime(true);
  154. $log .= $time-$timeStart ." - 计算句子的完成分布 结束 ". PHP_EOL;
  155. $timeStart = $time;
  156. echo json_encode($output, JSON_UNESCAPED_UNICODE);