function.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. require_once "../config.php";
  3. require_once "../public/_pdo.php";
  4. require_once '../public/function.php';
  5. require_once '../ucenter/function.php';
  6. require_once '../channal/function.php';
  7. require_once '../article/function.php';
  8. require_once '../collect/function.php';
  9. require_once '../redis/function.php';
  10. require_once '../doc/function.php';
  11. /*
  12. 获取某用户的可见的协作资源
  13. $res_type 见readme.md#资源类型 -1全部类型资源
  14. */
  15. function share_res_list_get($userid,$res_type=-1){
  16. $redis = redis_connect();
  17. # 找我加入的群
  18. $dbhGroup = new PDO(_FILE_DB_GROUP_, _DB_USERNAME_, _DB_PASSWORD_);
  19. $dbhGroup->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  20. $query = "SELECT group_id from "._TABLE_GROUP_MEMBER_." where user_id = ? limit 500";
  21. $stmtGroup = $dbhGroup->prepare($query);
  22. $stmtGroup->execute(array($userid));
  23. $my_group = $stmtGroup->fetchAll(PDO::FETCH_ASSOC);
  24. $userList = array();
  25. $userList[] = $userid;
  26. foreach ($my_group as $key => $value) {
  27. # code...
  28. $userList[]=$value["group_id"];
  29. }
  30. $place_holders = implode(',', array_fill(0, count($userList), '?'));
  31. $Fetch=array();
  32. $PDO = new PDO(_FILE_DB_USER_SHARE_, _DB_USERNAME_, _DB_PASSWORD_);
  33. $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  34. if($res_type==-1){
  35. #所有类型资源
  36. $query = "SELECT res_id,res_type,power FROM "._TABLE_USER_SHARE_." WHERE cooperator_id IN ($place_holders) ";
  37. $stmt = $PDO->prepare($query);
  38. $stmt->execute($userList);
  39. $Fetch =$stmt->fetchAll(PDO::FETCH_ASSOC);
  40. }
  41. else{
  42. #指定类型资源
  43. $userList[]=$res_type;
  44. $query = "SELECT res_id,res_type,power FROM "._TABLE_USER_SHARE_." WHERE cooperator_id IN ($place_holders) AND res_type = ?";
  45. $stmt = $PDO->prepare($query);
  46. $stmt->execute($userList);
  47. $Fetch =$stmt->fetchAll(PDO::FETCH_ASSOC);
  48. }
  49. $resOutput = array();
  50. foreach ($Fetch as $key => $value) {
  51. # 查重
  52. if(isset($resOutput[$value["res_id"]])){
  53. if($value["power"]>$resOutput[$value["res_id"]]["power"]){
  54. $resOutput[$value["res_id"]]["power"] = $value["power"];
  55. }
  56. }
  57. else{
  58. $resOutput[$value["res_id"]]= array("power"=> $value["power"],"type" => $value["res_type"]);
  59. }
  60. }
  61. $resList=array();
  62. foreach ($resOutput as $key => $value) {
  63. # code...
  64. $resList[]=array("res_id"=>$key,"res_type"=>(int)$value["type"],"power"=>(int)$value["power"]);
  65. }
  66. $channel = new Channal();
  67. $article = new Article($redis);
  68. $collection = new CollectInfo($redis);
  69. foreach ($resList as $key => $res) {
  70. # 获取资源标题 和所有者
  71. switch ($res["res_type"]) {
  72. case 1:
  73. # pcs 文档
  74. $resList[$key]["res_title"]=pcs_get_title($res["res_id"]);
  75. break;
  76. case 2:
  77. # channel
  78. $channelInfo = $channel->getChannal($res["res_id"]);
  79. if($channelInfo){
  80. $resList[$key]["res_title"]=$channelInfo["name"];
  81. $resList[$key]["res_owner_id"]=$channelInfo["owner_uid"];
  82. $resList[$key]["type"]=$channelInfo["type"];
  83. $resList[$key]["status"]=$channelInfo["status"];
  84. $resList[$key]["lang"]=$channelInfo["lang"];
  85. }
  86. else{
  87. $resList[$key]["res_title"]="_unkown_";
  88. $resList[$key]["res_owner_id"]="_unkown_";
  89. $resList[$key]["type"]=$channelInfo["type"];
  90. $resList[$key]["status"]="0";
  91. $resList[$key]["lang"]="unkow";
  92. }
  93. break;
  94. case 3:
  95. # 3 Article 文章
  96. $aInfo = $article->getInfo($res["res_id"]);
  97. if($aInfo){
  98. $resList[$key]["res_title"]=$aInfo["title"];
  99. $resList[$key]["res_owner_id"]=$aInfo["owner"];
  100. $resList[$key]["status"]=$aInfo["status"];
  101. $resList[$key]["lang"]='';
  102. }
  103. else{
  104. $resList[$key]["res_title"]="_unkown_";
  105. $resList[$key]["res_owner_id"]="_unkown_";
  106. $resList[$key]["status"]="0";
  107. $resList[$key]["lang"]="unkow";
  108. }
  109. break;
  110. case 4:
  111. # 4 Collection 文集
  112. $aInfo = $collection->get($res["res_id"]);
  113. if($aInfo){
  114. $resList[$key]["res_title"]=$aInfo["title"];
  115. $resList[$key]["res_owner_id"]=$aInfo["owner"];
  116. $resList[$key]["status"]=$aInfo["status"];
  117. $resList[$key]["lang"]=$aInfo["lang"];
  118. }
  119. else{
  120. $resList[$key]["res_title"]="_unkown_";
  121. $resList[$key]["res_owner_id"]="_unkown_";
  122. $resList[$key]["status"]="0";
  123. $resList[$key]["lang"]="unkow";
  124. }
  125. break;
  126. case 5:
  127. # code...
  128. break;
  129. default:
  130. # code...
  131. break;
  132. }
  133. }
  134. return $resList;
  135. }
  136. //获取对某个共享资源的权限
  137. function share_get_res_power($userid,$res_id){
  138. if($userid==='0'){
  139. #未登录用户 没有共享资源
  140. return 0;
  141. }
  142. # 找我加入的群
  143. $dbhGroup = new PDO(_FILE_DB_GROUP_, _DB_USERNAME_, _DB_PASSWORD_);
  144. $dbhGroup->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  145. $query = "SELECT group_id from "._TABLE_GROUP_MEMBER_." where user_id = ? limit 500";
  146. $stmtGroup = $dbhGroup->prepare($query);
  147. $stmtGroup->execute(array($userid));
  148. $my_group = $stmtGroup->fetchAll(PDO::FETCH_ASSOC);
  149. $userList = array();
  150. $userList[] = $userid;
  151. foreach ($my_group as $key => $value) {
  152. # code...
  153. $userList[]=$value["group_id"];
  154. }
  155. $place_holders = implode(',', array_fill(0, count($userList), '?'));
  156. $Fetch=array();
  157. $PDO = new PDO(_FILE_DB_USER_SHARE_, _DB_USERNAME_, _DB_PASSWORD_);
  158. $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  159. $userList[]=$res_id;
  160. $query = "SELECT power FROM "._TABLE_USER_SHARE_." WHERE cooperator_id IN ($place_holders) AND res_id = ? ";
  161. $stmt = $PDO->prepare($query);
  162. $stmt->execute($userList);
  163. $Fetch =$stmt->fetchAll(PDO::FETCH_ASSOC);
  164. $power=0;
  165. foreach ($Fetch as $key => $value) {
  166. # code...
  167. if((int)$value["power"]>$power){
  168. $power = $value["power"];
  169. }
  170. }
  171. return $power;
  172. }
  173. ?>