UCHome中关于日志列表,详细页面的代码分析(未完)

<?php
02. /*
03.      [UCenter Home] (C) 2007-2008 Comsenz Inc.
04.      $Id: space_blog.php 2009-10-11 23:20:00
05.      @author ymaozi
06.      @copyright http://www.codedesign.cn
07.      @uchome源码交流QQ群:83400173
08. */
09. 
10. if(!defined('IN_UCHOME')) {
11.      exit('Access Denied');
12. }
13. 
14. $minhot = $_SCONFIG['feedhotmin']<1?3:$_SCONFIG['feedhotmin'];
15. 
16. $page = empty($_GET['page'])?1:intval($_GET['page']);
17. if($page<1) $page=1;
18. $id = empty($_GET['id'])?0:intval($_GET['id']); //获取日志id
19. $classid = empty($_GET['classid'])?0:intval($_GET['classid']); //获取日志分类
20. 
21. //表态分类
22. @include_once(S_ROOT.'./data/data_click.php'); //获取表态的一些信息
23. $clicks = empty($_SGLOBAL['click']['blogid'])?array():$_SGLOBAL['click']['blogid']; //获取日志的表态信息
001. if($id) {
002.      //读取日志
003.      $query = $_SGLOBAL['db']->query("SELECT bf.*, b.* FROM ".tname('blog')." b LEFT JOIN ".tname('blogfield')." bf ON bf.blogid=b.blogid WHERE b.blogid='$id' AND b.uid='$space[uid]'");
004. 
005.      $blog = $_SGLOBAL['db']->fetch_array($query);
006. 
007.      //日志不存在
008.      if(empty($blog)) {
009.          showmessage('view_to_info_did_not_exist'); //出问题了,您要查看的信息不存在或者已经被删除
010.      }
011.      //检查好友权限
012.      if(!ckfriend($blog['uid'], $blog['friend'], $blog['target_ids'])) {
013.          //没有权限
014.          include template('space_privacy');
015.          exit();
016.      } elseif(!$space['self'] &amp;amp;&amp;amp; $blog['friend'] == 4) {
017.          /*
018.              $blog['friend']:0:全站用户可见;
019.                              1:全好友可见;
020.                              2:仅指定的好友可见;
021.                              3:仅自己可见;
022.                              4:凭密码查看;
023.          */
024.          //密码输入问题
025.          //在显示日志详细之前,先显示输入密码窗口
026.          $cookiename = "view_pwd_blog_$blog[blogid]";
027.          $cookievalue = empty($_SCOOKIE[$cookiename])?'':$_SCOOKIE[$cookiename];
028.          //判断是否有输入过密码,如果你是第一次访问此篇日志,则先输入密码,并将密码储存到cookie,
029.          //如果是第二次查看该文章时,先判断cookie是否存在,如果存在则直接查看日志
030.          if($cookievalue != md5(md5($blog['password']))) {
031.              $invalue = $blog;
032.              include template('do_inputpwd');
033.              exit();
034.          }
035.      }
036. 
037.      //整理
038.      $blog['tag'] = empty($blog['tag'])?array():unserialize($blog['tag']);
039.      //如果tag不为空,则将序列化的字符串转换成数组
040. 
041.      //处理视频标签
042.      include_once(S_ROOT.'./source/function_blog.php'); //引入日志处理函数文件
043.      $blog['message'] = blog_bbcode($blog['message']);
044.      //通过正则,获取flash的url与类型
045. 
046.      $otherlist = $newlist = array();
047. 
048.      //有效期
049.      if($_SCONFIG['uc_tagrelatedtime'] &amp;amp;&amp;amp; ($_SGLOBAL['timestamp'] - $blog['relatedtime'] > $_SCONFIG['uc_tagrelatedtime'])) {
050.          $blog['related'] = array();
051.      }
052. 
053.      if($blog['tag'] &amp;amp;&amp;amp; empty($blog['related'])) {
054.          //如果数据库中不存在related,则引入缓存文件
055.          @include_once(S_ROOT.'./data/data_tagtpl.php');
056. 
057.          $b_tagids = $b_tags = $blog['related'] = array();
058.          $tag_count = -1;
059.          foreach ($blog['tag'] as $key => $value) {
060.              $b_tags[] = $value;
061.              $b_tagids[] = $key;
062.              $tag_count++;
063.          }
064. 
065.          if(!empty($_SCONFIG['uc_tagrelated']) &amp;amp;&amp;amp; $_SCONFIG['uc_status']) {
066.              if(!empty($_SGLOBAL['tagtpl']['limit'])) {
067.                  include_once(S_ROOT.'./uc_client/client.php');
068.                  $tag_index = mt_rand(0, $tag_count);
069.                  $blog['related'] = uc_tag_get($b_tags[$tag_index], $_SGLOBAL['tagtpl']['limit']);
070.              }
071.          } else {
072.              //自身TAG
073.              $tag_blogids = array();
074.              $query = $_SGLOBAL['db']->query("SELECT DISTINCT blogid FROM ".tname('tagblog')." WHERE tagid IN (".simplode($b_tagids).") AND blogid<>'$blog[blogid]' ORDER BY blogid DESC LIMIT 0,10");
075.              while ($value = $_SGLOBAL['db']->fetch_array($query)) {
076.                  $tag_blogids[] = $value['blogid'];
077.              }
078.              if($tag_blogids) {
079.                  $query = $_SGLOBAL['db']->query("SELECT uid,username,subject,blogid FROM ".tname('blog')." WHERE blogid IN (".simplode($tag_blogids).")");
080.                  while ($value = $_SGLOBAL['db']->fetch_array($query)) {
081.                      realname_set($value['uid'], $value['username']);//实名
082.                      $value['url'] = "space.php?uid=$value[uid]&amp;amp;do=blog&amp;amp;id=$value[blogid]";
083.                      $blog['related'][UC_APPID]['data'][] = $value;
084.                  }
085.                  $blog['related'][UC_APPID]['type'] = 'UCHOME';
086.              }
087.          }
088.          if(!empty($blog['related']) &amp;amp;&amp;amp; is_array($blog['related'])) {
089.              foreach ($blog['related'] as $appid => $values) {
090.                  if(!empty($values['data']) &amp;amp;&amp;amp; $_SGLOBAL['tagtpl']['data'][$appid]['template']) {
091.                      foreach ($values['data'] as $itemkey => $itemvalue) {
092.                          if(!empty($itemvalue) &amp;amp;&amp;amp; is_array($itemvalue)) {
093.                              $searchs = $replaces = array();
094.                              foreach (array_keys($itemvalue) as $key) {
095.                                  $searchs[] = '{'.$key.'}';
096.                                  $replaces[] = $itemvalue[$key];
097.                              }
098.                              $blog['related'][$appid]['data'][$itemkey]['html'] = stripslashes(str_replace($searchs, $replaces, $_SGLOBAL['tagtpl']['data'][$appid]['template']));
099.                          } else {
100.                              unset($blog['related'][$appid]['data'][$itemkey]);
101.                          }
102.                      }
103.                  } else {
104.                      $blog['related'][$appid]['data'] = '';
105.                  }
106.                  if(empty($blog['related'][$appid]['data'])) {
107.                      unset($blog['related'][$appid]);
108.                  }
109.              }
110.          }
111.          updatetable('blogfield', array('related'=>addslashes(serialize(sstripslashes($blog['related']))), 'relatedtime'=>$_SGLOBAL['timestamp']), array('blogid'=>$blog['blogid']));//更新
112.      } else {
113. 
114.          $blog['related'] = empty($blog['related'])?array():unserialize($blog['related']);
115. 
116.      }
117. 
118.      //作者的其他最新日志
119.      $otherlist = array();
120.      $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('blog')." WHERE uid='$space[uid]' ORDER BY dateline DESC LIMIT 0,6");
121.      while ($value = $_SGLOBAL['db']->fetch_array($query)) {
122.          if($value['blogid'] != $blog['blogid'] &amp;amp;&amp;amp; empty($value['friend'])) {
123.              //如果不是显示的文件或是为全站可见的
124.              $otherlist[] = $value;
125.          }
126.      }
127. 
128.      //最新的日志
129.      $newlist = array();
130.      //热度大于3的
131.      $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('blog')." WHERE hot>=3 ORDER BY dateline DESC LIMIT 0,6");
132.      while ($value = $_SGLOBAL['db']->fetch_array($query)) {
133.          if($value['blogid'] != $blog['blogid'] &amp;amp;&amp;amp; empty($value['friend'])) {
134.              realname_set($value['uid'], $value['username']); //获取实名
135.              $newlist[] = $value;
136.          }
137.      }
138. 
139.      //评论
140.      $perpage = 30;
141.      $perpage = mob_perpage($perpage);
142. 
143.      $start = ($page-1)*$perpage;
144. 
145.      //检查开始数
146.      ckstart($start, $perpage);
147. 
148.      $count = $blog['replynum']; //获取日志的评论数
149. 
150.      $list = array();
151.      if($count) { //如果评论数大于0,则读取评论信息 
152.          $cid = empty($_GET['cid'])?0:intval($_GET['cid']); //获取日志的id
153.          $csql = $cid?"cid='$cid' AND":'';
154. 
155.          $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('comment')." WHERE $csql id='$id' AND idtype='blogid' ORDER BY dateline LIMIT $start,$perpage");
156. 
157.          while ($value = $_SGLOBAL['db']->fetch_array($query)) {
158.              realname_set($value['authorid'], $value['author']);//实名
159. 
160.              $list[] = $value;
161.          }
162.      }
163. 
164.      //分页
165.      $multi = multi($count, $perpage, $page, "space.php?uid=$blog[uid]&amp;amp;do=$do&amp;amp;id=$id", '', 'content');
166. 
167.      //访问统计
168.      //如果不是自己访问并且是第一次访问
169.      if(!$space['self'] &amp;amp;&amp;amp; $_SCOOKIE['view_blogid'] != $blog['blogid']) {
170.          $_SGLOBAL['db']->query("UPDATE ".tname('blog')." SET viewnum=viewnum+1 WHERE blogid='$blog[blogid]'");
171.          //更新日志的浏览量
172.          inserttable('log', array('id'=>$space['uid'], 'idtype'=>'uid'));//延迟更新
173.          //访问之后设置cookie,目的是为了不断地刷新访问数
174.          ssetcookie('view_blogid', $blog['blogid']);
175.      }
176. 
177.      //表态
178.      $hash = md5($blog['uid']."\t".$blog['dateline']);
179.      $id = $blog['blogid'];
180.      $idtype = 'blogid';
181. 
182.      foreach ($clicks as $key => $value) {
183.          $value['clicknum'] = $blog["click_$key"];
184.          $value['classid'] = mt_rand(1, 4);
185.          if($value['clicknum'] > $maxclicknum) $maxclicknum = $value['clicknum'];
186.          $clicks[$key] = $value;
187.      }
188. 
189.      //点评
190.      //获取表态过的人
191.      $clickuserlist = array();
192.      $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('clickuser')."
193.          WHERE id='$id' AND idtype='$idtype'
194.          ORDER BY dateline DESC
195.          LIMIT 0,18");
196.      while ($value = $_SGLOBAL['db']->fetch_array($query)) {
197.          realname_set($value['uid'], $value['username']);//实名
198.          $value['clickname'] = $clicks[$value['clickid']]['name'];
199.          $clickuserlist[] = $value;
200.      }
201. 
202.      //热点
203.      $topic = topic_get($blog['topicid']);//获取热点,看看这篇文章是否属于哪一热点
204. 
205.      //实名
206.      realname_get();
207. 
208.      $_TPL['css'] = 'blog'; //设置页面样式
209.      include_once template("space_blog_view");
210. 
211. } else {
212.      //分页
213.      $perpage = 10;
214.      $perpage = mob_perpage($perpage);
215. 
216.      $start = ($page-1)*$perpage;
217. 
218.      //检查开始数
219.      ckstart($start, $perpage);
220. 
221.      //摘要截取
222.      $summarylen = 300;
223. 
224.      $classarr = array();
225.      $list = array();
226.      $userlist = array();
227.      $count = $pricount = 0;
228. 
229.      $ordersql = 'b.dateline';//按发布时间进行排序
230. 
231.      if(empty($_GET['view']) &amp;amp;&amp;amp; ($space['friendnum']<$_SCONFIG['showallfriendnum'])) {
232.          $_GET['view'] = 'all';//默认显示
233.      }
234. 
235.      //处理查询
236.      $f_index = '';
237.      if($_GET['view'] == 'click') {  //我表过态的日志
238.          //踩过的日志
239.          $theurl = "space.php?uid=$space[uid]&amp;amp;do=$do&amp;amp;view=click";
240.          $actives = array('click'=>' class="active"'); //设置样式
241. 
242.          $clickid = intval($_GET['clickid']);
243.          if($clickid) {//如果动作存在,则按动作进行排序
244.              $theurl .= "&amp;amp;clickid=$clickid";
245.              $wheresql = " AND c.clickid='$clickid'";
246.              $click_actives = array($clickid => ' class="current"');
247.          } else {
248.              $wheresql = '';
249.              $click_actives = array('all' => ' class="current"');
250.          }
251. 
252.          $count = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('clickuser')." c WHERE c.uid='$space[uid]' AND c.idtype='blogid' $wheresql"),0);
253.          if($count) {
254.              $query = $_SGLOBAL['db']->query("SELECT b.*, bf.message, bf.target_ids, bf.magiccolor FROM ".tname('clickuser')." c
255.                  LEFT JOIN ".tname('blog')." b ON b.blogid=c.id
256.                  LEFT JOIN ".tname('blogfield')." bf ON bf.blogid=c.id
257.                  WHERE c.uid='$space[uid]' AND c.idtype='blogid' $wheresql
258.                  ORDER BY c.dateline DESC LIMIT $start,$perpage");
259.          }
260.      } else {
261. 
262.          if($_GET['view'] == 'all') { //查看大家的日志
263.              //大家的日志
264.              $wheresql = '1';
265. 
266.              $actives = array('all'=>' class="active"'); //将all样式设置为激活
267. 
268.              //排序
269.              $orderarr = array('dateline','replynum','viewnum','hot');
270. 
271.              foreach ($clicks as $value) {
272.                  $orderarr[] = "click_$value[clickid]";
273.              }
274. 
275.              if(!in_array($_GET['orderby'], $orderarr)) $_GET['orderby'] = ''; //是否选定按什么进行排序
276. 
277.              //时间
278.              $_GET['day'] = intval($_GET['day']); //用于列表右侧的操行榜
279.              $_GET['hotday'] = 7;
280. 
281.              if($_GET['orderby']) { //如果有按**来排序
282.                  $ordersql = 'b.'.$_GET['orderby'];
283. 
284.                  $theurl = "space.php?uid=$space[uid]&amp;amp;do=blog&amp;amp;view=all&amp;amp;orderby=$_GET[orderby]";
285.                  $all_actives = array($_GET['orderby']=>' class="current"');
286. 
287.                  if($_GET['day']) {
288.                      $_GET['hotday'] = $_GET['day'];
289.                      $daytime = $_SGLOBAL['timestamp'] - $_GET['day']*3600*24;
290.                      $wheresql .= " AND b.dateline>='$daytime'";
291. 
292.                      $theurl .= "&amp;amp;day=$_GET[day]";
293.                      $day_actives = array($_GET['day']=>' class="active"');
294.                  } else {
295.                      $day_actives = array(0=>' class="active"');
296.                  }
297.              } else {
298. 
299.                  $theurl = "space.php?uid=$space[uid]&amp;amp;do=$do&amp;amp;view=all";
300. 
301.                  $wheresql .= " AND b.hot>='$minhot'";
302.                  $all_actives = array('all'=>' class="current"');
303.                  $day_actives = array();
304.              }
305. 
306.          } else {
307. 
308.              if(empty($space['feedfriend']) || $classid) $_GET['view'] = 'me';
309. 
310.              if($_GET['view'] == 'me') {
311.                  //查看个人的
312.                  $wheresql = "b.uid='$space[uid]'";
313.                  $theurl = "space.php?uid=$space[uid]&amp;amp;do=$do&amp;amp;view=me";
314.                  $actives = array('me'=>' class="active"');
315.                  //日志分类
316.                  $query = $_SGLOBAL['db']->query("SELECT classid, classname FROM ".tname('class')." WHERE uid='$space[uid]'");
317.                  while ($value = $_SGLOBAL['db']->fetch_array($query)) {
318.                      $classarr[$value['classid']] = $value['classname'];
319.                  }
320.              } else {
321.                  $wheresql = "b.uid IN ($space[feedfriend])";
322.                  $theurl = "space.php?uid=$space[uid]&amp;amp;do=$do&amp;amp;view=we";
323.                  $f_index = 'USE INDEX(dateline)';
324. 
325.                  $fuid_actives = array();
326. 
327.                  //查看指定好友的
328.                  $fusername = trim($_GET['fusername']);
329.                  $fuid = intval($_GET['fuid']);
330.                  if($fusername) {
331.                      $fuid = getuid($fusername);
332.                  }
333.                  if($fuid &amp;amp;&amp;amp; in_array($fuid, $space['friends'])) {
334.                      $wheresql = "b.uid = '$fuid'";
335.                      $theurl = "space.php?uid=$space[uid]&amp;amp;do=$do&amp;amp;view=we&amp;amp;fuid=$fuid";
336.                      $f_index = '';
337.                      $fuid_actives = array($fuid=>' selected');
338.                  }
339. 
340.                  $actives = array('we'=>' class="active"');
341. 
342.                  //好友列表
343.                  $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('friend')." WHERE uid='$space[uid]' AND status='1' ORDER BY num DESC, dateline DESC LIMIT 0,500");
344.                  while ($value = $_SGLOBAL['db']->fetch_array($query)) {
345.                      realname_set($value['fuid'], $value['fusername']);
346.                      $userlist[] = $value;
347.                  }
348.              }
349.          }
350. 
351.          //分类
352.          if($classid) {
353.              $wheresql .= " AND b.classid='$classid'";
354.              $theurl .= "&amp;amp;classid=$classid";
355.          }
356. 
357.          //设置权限
358.          $_GET['friend'] = intval($_GET['friend']);
359.          if($_GET['friend']) {
360.              $wheresql .= " AND b.friend='$_GET[friend]'";
361.              $theurl .= "&amp;amp;friend=$_GET[friend]";
362.          }
363. 
364.          //搜索
365.          if($searchkey = stripsearchkey($_GET['searchkey'])) {
366.              $wheresql .= " AND b.subject LIKE '%$searchkey%'";
367.              $theurl .= "&amp;amp;searchkey=$_GET[searchkey]";
368.              cksearch($theurl);
369.          }
370. 
371.          $count = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('blog')." b WHERE $wheresql"),0);
372.          //更新统计
373.          if($wheresql == "b.uid='$space[uid]'" &amp;amp;&amp;amp; $space['blognum'] != $count) {
374.              updatetable('space', array('blognum' => $count), array('uid'=>$space['uid']));
375.          }
376.          if($count) {
377.              $query = $_SGLOBAL['db']->query("SELECT bf.message, bf.target_ids, bf.magiccolor, b.* FROM ".tname('blog')." b $f_index
378.                  LEFT JOIN ".tname('blogfield')." bf ON bf.blogid=b.blogid
379.                  WHERE $wheresql
380.                  ORDER BY $ordersql DESC LIMIT $start,$perpage");
381.          }
382.      }
383. 
384.      if($count) {
385.          while ($value = $_SGLOBAL['db']->fetch_array($query)) {
386.              if(ckfriend($value['uid'], $value['friend'], $value['target_ids'])) {
387.                  realname_set($value['uid'], $value['username']);
388.                  if($value['friend'] == 4) {
389.                      $value['message'] = $value['pic'] = '';
390.                  } else {
391.                      $value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, 0, -1);
392.                  }
393.                  if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
394.                  $list[] = $value;
395.              } else {
396.                  $pricount++;
397.              }
398.          }
399.      }
400. 
401.      //分页
402.      $multi = multi($count, $perpage, $page, $theurl);
403. 
404.      //实名
405.      realname_get();
406. 
407.      $_TPL['css'] = 'blog';
408.      include_once template("space_blog_list");
409. }
410. 
411. ?>

转载于:https://www.cnblogs.com/vicenteforever/articles/1656988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值