function.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. require_once "../path.php";
  3. require_once "../share/function.php";
  4. class Article
  5. {
  6. private $dbh;
  7. private $_redis;
  8. public function __construct($redis=false) {
  9. $this->dbh = new PDO(_FILE_DB_USER_ARTICLE_, "", "",array(PDO::ATTR_PERSISTENT=>true));
  10. $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  11. $this->_redis=$redis;
  12. }
  13. public function getInfo($id){
  14. $output = array();
  15. if($this->_redis!==false){
  16. if($this->_redis->exists("article://".$id)===1){
  17. $output["id"]=$this->_redis->hGet("article://".$id,"id");
  18. $output["title"]=$this->_redis->hGet("article://".$id,"title");
  19. $output["subtitle"]=$this->_redis->hGet("article://".$id,"subtitle");
  20. $output["owner"]=$this->_redis->hGet("article://".$id,"owner");
  21. $output["summary"]=$this->_redis->hGet("article://".$id,"summary");
  22. $output["tag"]=$this->_redis->hGet("article://".$id,"tag");
  23. $output["status"]=$this->_redis->hGet("article://".$id,"status");
  24. $output["create_time"]=$this->_redis->hGet("article://".$id,"create_time");
  25. $output["modify_time"]=$this->_redis->hGet("article://".$id,"modify_time");
  26. return $output;
  27. }
  28. }
  29. $query = "SELECT id,title,owner,summary,tag,status,create_time,modify_time FROM article WHERE id= ? ";
  30. $stmt = $this->dbh->prepare($query);
  31. $stmt->execute(array($id));
  32. $output = $stmt->fetch(PDO::FETCH_ASSOC);
  33. if($output){
  34. if($this->_redis!==false){
  35. $this->_redis->hSet("article://".$id,"id",$output["id"]);
  36. $this->_redis->hSet("article://".$id,"title",$output["title"]);
  37. $this->_redis->hSet("article://".$id,"subtitle",$output["subtitle"]);
  38. $this->_redis->hSet("article://".$id,"summary",$output["summary"]);
  39. $this->_redis->hSet("article://".$id,"owner",$output["owner"]);
  40. $this->_redis->hSet("article://".$id,"tag",$output["tag"]);
  41. $this->_redis->hSet("article://".$id,"status",$output["status"]);
  42. $this->_redis->hSet("article://".$id,"create_time",$output["create_time"]);
  43. $this->_redis->hSet("article://".$id,"modify_time",$output["modify_time"]);
  44. }
  45. return $output;
  46. }
  47. else{
  48. return false;
  49. }
  50. }
  51. public function getContent($id){
  52. $output = array();
  53. if($this->_redis!==false){
  54. if($this->_redis->hExists("article://".$id,"content")===TRUE){
  55. $content=$this->_redis->hGet("article://".$id,"content");
  56. return $content;
  57. }
  58. }
  59. $query = "SELECT content FROM article WHERE id= ? ";
  60. $stmt = $this->dbh->prepare($query);
  61. $stmt->execute(array($id));
  62. $output = $stmt->fetch(PDO::FETCH_ASSOC);
  63. if($output){
  64. if($this->_redis!==false){
  65. $this->_redis->hSet("article://".$id,"content",$output["content"]);
  66. }
  67. return $output["content"];
  68. }
  69. else{
  70. return false;
  71. }
  72. }
  73. public function getPower($id){
  74. #查询用户对此是否有权限
  75. $iPower = 0;
  76. $query = "SELECT owner,status FROM article WHERE id=? ";
  77. $stmt = $this->dbh->prepare($query);
  78. $stmt->execute(array($id));
  79. $channel = $stmt->fetch(PDO::FETCH_ASSOC);
  80. if($channel){
  81. if(!isset($_COOKIE["userid"]) ){
  82. #未登录用户
  83. if($channel["status"]==30){
  84. #全网公开有读取和建议权限
  85. return 10;
  86. }
  87. else{
  88. #其他状态没有任何权限
  89. return 0;
  90. }
  91. }
  92. if($channel["owner"]==$_COOKIE["userid"]){
  93. return 30;
  94. }
  95. else if($channel["status"]>=30){
  96. #全网公开的 可以提交pr
  97. $iPower = 10;
  98. }
  99. }
  100. #查询共享权限,如果共享权限更大,覆盖上面的的
  101. $sharePower = share_get_res_power($_COOKIE["userid"],$id);
  102. if($sharePower>$iPower){
  103. $iPower=$sharePower;
  104. }
  105. return $iPower;
  106. }
  107. }
  108. ?>