sns_tracelog.model.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. /**
  3. * 好友动态
  4. *
  5. */
  6. defined('InShopNC') or exit('Access Invalid!');
  7. class sns_tracelogModel{
  8. /**
  9. * 新增动态
  10. *
  11. * @param $param 添加信息数组
  12. * @return 返回结果
  13. */
  14. public function tracelogAdd($param){
  15. if (empty($param)){
  16. return false;
  17. }
  18. //处理文本中@信息
  19. if ($param['trace_title']){
  20. preg_match_all("/@(.+?)([\s|:|:]|$)/is", $param['trace_title'], $matches);
  21. if (!empty($matches[1])){
  22. //查询会员信息
  23. $member_model = Model('member');
  24. $member_list = $member_model->getMemberList(array('member_name'=>array('in', $matches[1])));
  25. foreach ($member_list as $k=>$v){
  26. $param['trace_title'] = preg_replace("/@(".$v['member_name'].")([\s|:|:]|$)/is",'<a href=\"%siteurl%index.php?act=member_snshome&mid='.$v['member_id'].'\" target="_blank">@${1}</a>${2}',$param['trace_title']);
  27. }
  28. }
  29. unset($matches);
  30. }
  31. $result = Db::insert('sns_tracelog',$param);
  32. return $result;
  33. }
  34. /**
  35. * 动态记录列表
  36. *
  37. * @param $condition 条件
  38. * @param $page 分页
  39. * @param $field 查询字段
  40. * @return array 数组格式的返回结果
  41. */
  42. public function getTracelogList($condition,$page='',$field='*'){
  43. $condition_str = $this->getCondition($condition);
  44. $param = array();
  45. $param['table'] = 'sns_tracelog';
  46. $param['where'] = $condition_str;
  47. $param['field'] = $field;
  48. $param['order'] = $condition['order'] ? $condition['order'] : 'sns_tracelog.trace_id desc';
  49. $param['limit'] = $condition['limit'];
  50. $param['group'] = $condition['group'];
  51. return Db::select($param,$page);
  52. }
  53. /**
  54. * 获取动态详细
  55. *
  56. * @param $condition 查询条件
  57. * @param $field 查询字段
  58. */
  59. public function getTracelogRow($condition,$field='*'){
  60. $param = array();
  61. $param['table'] = 'sns_tracelog';
  62. $param['field'] = array_keys($condition);
  63. $param['value'] = array_values($condition);
  64. return Db::getRow($param,$field);
  65. }
  66. /**
  67. * 更新动态记录
  68. * @param array $param 修改信息数组
  69. * @param array $condition 条件数组
  70. */
  71. public function tracelogEdit($param,$condition){
  72. if(empty($param)) {
  73. return false;
  74. }
  75. //得到条件语句
  76. $condition_str = $this->getCondition($condition);
  77. $result = Db::update('sns_tracelog',$param,$condition_str);
  78. return $result;
  79. }
  80. /**
  81. * 删除动态
  82. */
  83. public function delTracelog($condition){
  84. if (empty($condition)){
  85. return false;
  86. }
  87. $condition_str = '';
  88. if ($condition['trace_id'] != ''){
  89. $condition_str .= " and trace_id='{$condition['trace_id']}' ";
  90. }
  91. if ($condition['trace_id_in'] !=''){
  92. $condition_str .= " and trace_id in('{$condition['trace_id_in']}') ";
  93. }
  94. if ($condition['trace_memberid'] != ''){
  95. $condition_str .= " and trace_memberid='{$condition['trace_memberid']}' ";
  96. }
  97. return Db::delete('sns_tracelog',$condition_str);
  98. }
  99. /**
  100. * 动态总数
  101. */
  102. public function countTrace($condition){
  103. //得到条件语句
  104. $condition_str = $this->getCondition($condition);
  105. $count = Db::getCount('sns_tracelog',$condition_str);
  106. return $count;
  107. }
  108. /**
  109. * 将条件数组组合为SQL语句的条件部分
  110. *
  111. * @param array $condition_array
  112. * @return string
  113. */
  114. private function getCondition($condition_array){
  115. $condition_sql = '';
  116. //自增编号
  117. if($condition_array['trace_id'] != '') {
  118. $condition_sql .= " and sns_tracelog.trace_id = '{$condition_array['trace_id']}' ";
  119. }
  120. //自增IDin
  121. if($condition_array['traceid_in'] != '') {
  122. $condition_sql .= " and sns_tracelog.trace_id in('{$condition_array['traceid_in']}') ";
  123. }
  124. //原帖ID
  125. if($condition_array['trace_originalid'] != '') {
  126. $condition_sql .= " and sns_tracelog.trace_originalid = '{$condition_array['trace_originalid']}' ";
  127. }
  128. //原帖IDin
  129. if($condition_array['trace_originalid_in'] != '') {
  130. $condition_sql .= " and sns_tracelog.trace_originalid in('{$condition_array['trace_originalid_in']}')";
  131. }
  132. //会员编号
  133. if($condition_array['trace_memberid'] != '') {
  134. $condition_sql .= " and sns_tracelog.trace_memberid = '{$condition_array['trace_memberid']}' ";
  135. }
  136. //会员名like
  137. if($condition_array['trace_membernamelike'] != '') {
  138. $condition_sql .= " and sns_tracelog.trace_membername like '%{$condition_array['trace_membernamelike']}%' ";
  139. }
  140. //查看状态
  141. if ($condition_array['trace_state'] != ''){
  142. $condition_sql .= " and sns_tracelog.trace_state = '{$condition_array['trace_state']}' ";
  143. }
  144. //允许查看的动态
  145. if($condition_array['allowshow'] != '') {
  146. $allowshowsql_arr = array();
  147. //自己的动态
  148. if ($condition_array['allowshow_memberid'] !=''){
  149. $allowshowsql_arr[0] = " (sns_tracelog.trace_memberid = '{$condition_array['allowshow_memberid']}')";
  150. }
  151. //查看我关注的人权限为所有人可见的动态
  152. if ($condition_array['allowshow_followerin'] !=''){
  153. $allowshowsql_arr[1] .= " (sns_tracelog.trace_privacy=0 and sns_tracelog.trace_memberid in('{$condition_array['allowshow_followerin']}'))";
  154. }
  155. //查看好友的权限为好友可见的动态
  156. if ($condition_array['allowshow_friendin'] !=''){
  157. $allowshowsql_arr[2] .= " (sns_tracelog.trace_privacy=1 and sns_tracelog.trace_memberid in('{$condition_array['allowshow_friendin']}'))";
  158. }
  159. $condition_sql .=" and (".implode(' or ',$allowshowsql_arr).")";
  160. }
  161. //隐私权限
  162. if ($condition_array['trace_privacyin'] !=''){
  163. $condition_sql .= " and `sns_tracelog`.trace_privacy in('{$condition_array['trace_privacyin']}')";
  164. }
  165. //添加时间
  166. if ($condition_array['stime'] !=''){
  167. $condition_sql .= " and `sns_tracelog`.trace_addtime >= {$condition_array['stime']}";
  168. }
  169. if ($condition_array['etime'] !=''){
  170. $condition_sql .= " and `sns_tracelog`.trace_addtime <= {$condition_array['etime']}";
  171. }
  172. //内容或者标题
  173. if ($condition_array['trace_contentortitle'] !=''){
  174. $condition_sql .= " and (`sns_tracelog`.trace_title like '%{$condition_array['trace_contentortitle']}%' or `sns_tracelog`.trace_content like '%{$condition_array['trace_contentortitle']}%') ";
  175. }
  176. return $condition_sql;
  177. }
  178. }