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.?>

posted on 2010-01-26 20:49  14的路  阅读(1028)  评论(0编辑  收藏  举报

导航

友情链接:源码下载