DiscuzX/upload/source/include/space/space_blog.php

366 lines
11 KiB
PHP

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: space_blog.php 32130 2012-11-14 09:20:40Z zhengqingpeng $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$minhot = $_G['setting']['feedhotmin']<1?3:$_G['setting']['feedhotmin'];
$page = empty($_GET['page'])?1:intval($_GET['page']);
if($page<1) $page=1;
$id = empty($_GET['id'])?0:intval($_GET['id']);
$_G['colorarray'] = array('', '#EE1B2E', '#EE5023', '#996600', '#3C9D40', '#2897C5', '#2B65B7', '#8F2A90', '#EC1282');
if($id) {
$blog = array_merge(
C::t('home_blog')->fetch($id),
C::t('home_blogfield')->fetch($id)
);
if($blog['uid'] != $space['uid']) {
$blog = null;
}
if(!(!empty($blog) && ($blog['status'] == 0 || $blog['uid'] == $_G['uid'] || $_G['adminid'] == 1 || $_GET['modblogkey'] == modauthkey($blog['blogid'])))) {
showmessage('view_to_info_did_not_exist');
}
if(!ckfriend($blog['uid'], $blog['friend'], $blog['target_ids'])) {
require_once libfile('function/friend');
$isfriend = friend_check($blog['uid']);
space_merge($space, 'count');
space_merge($space, 'profile');
$_G['privacy'] = 1;
require_once libfile('space/profile', 'include');
include template('home/space_privacy');
exit();
} elseif(!$space['self'] && $blog['friend'] == 4 && $_G['adminid'] != 1) {
$cookiename = "view_pwd_blog_$blog[blogid]";
$cookievalue = empty($_G['cookie'][$cookiename])?'':$_G['cookie'][$cookiename];
if($cookievalue != md5(md5($blog['password']))) {
$invalue = $blog;
include template('home/misc_inputpwd');
exit();
}
}
if(!empty($_G['setting']['antitheft']['allow']) && empty($_G['setting']['antitheft']['disable']['blog'])) {
helper_antitheft::check($id, 'bid');
}
$classarr = C::t('home_class')->fetch($blog['classid']);
if($blog['catid']) {
$blog['catname'] = C::t('home_blog_category')->fetch_catname_by_catid($blog['catid']);
$blog['catname'] = dhtmlspecialchars($blog['catname']);
}
require_once libfile('function/blog');
$blog['message'] = blog_bbcode($blog['message']);
$otherlist = $newlist = array();
$otherlist = array();
$query = C::t('home_blog')->fetch_all_by_uid($space['uid'], 'dateline', 0, 6);
foreach($query as $value) {
if($value['blogid'] != $blog['blogid'] && empty($value['friend']) && $blog['status'] == 0) {
$otherlist[] = $value;
}
}
$newlist = array();
$query = C::t('home_blog')->fetch_all_by_hot($minhot, 'dateline', 0, 6);
foreach($query as $value) {
if($value['blogid'] != $blog['blogid'] && empty($value['friend']) && $blog['status'] == 0) {
$newlist[] = $value;
}
}
$perpage = 20;
$perpage = mob_perpage($perpage);
$start = ($page-1)*$perpage;
ckstart($start, $perpage);
$count = $blog['replynum'];
$list = array();
if($count) {
if($_GET['goto']) {
$page = ceil($count/$perpage);
$start = ($page-1)*$perpage;
} else {
$cid = empty($_GET['cid'])?0:intval($_GET['cid']);
}
$query = C::t('home_comment')->fetch_all_by_id_idtype($id, 'blogid', $start, $perpage, $cid);
foreach($query as $value) {
$list[] = $value;
}
if(empty($list) && empty($cid)) {
$count = C::t('home_comment')->count_by_id_idtype($id, 'blogid');
C::t('home_blog')->update($blog['blogid'], array('replynum'=>$count));
}
}
$multi = multi($count, $perpage, $page, "home.php?mod=space&uid=$blog[uid]&do=$do&id=$id#comment");
if(!$_G['setting']['preventrefresh'] || !$space['self'] && $_G['cookie']['viewid'] != 'blog_'.$blog['blogid']) {
C::t('home_blog')->increase($blog['blogid'], 0, array('viewnum' => 1));
dsetcookie('viewid', 'blog_'.$blog['blogid']);
}
$hash = md5($blog['uid']."\t".$blog['dateline']);
$id = $blog['blogid'];
$idtype = 'blogid';
$maxclicknum = 0;
loadcache('click');
$clicks = empty($_G['cache']['click']['blogid'])?array():$_G['cache']['click']['blogid'];
foreach ($clicks as $key => $value) {
$value['clicknum'] = $blog["click{$key}"];
$value['classid'] = mt_rand(1, 4);
if($value['clicknum'] > $maxclicknum) $maxclicknum = $value['clicknum'];
$clicks[$key] = $value;
}
$clickuserlist = array();
foreach(C::t('home_clickuser')->fetch_all_by_id_idtype($id, $idtype, 0, 24) as $value) {
$value['clickname'] = $clicks[$value['clickid']]['name'];
$clickuserlist[] = $value;
}
$actives = array('me' =>' class="a"');
$diymode = intval($_G['cookie']['home_diymode']);
$tagarray_all = $array_temp = $blogtag_array = $blogmetatag_array = array();
$blogmeta_tag = '';
$tagarray_all = explode("\t", $blog['tag']);
if($tagarray_all) {
foreach($tagarray_all as $var) {
if($var) {
$array_temp = explode(',', $var);
$blogtag_array[] = $array_temp;
$blogmetatag_array[] = $array_temp['1'];
}
}
}
$blog['tag'] = $blogtag_array;
$blogmeta_tag = implode(',', $blogmetatag_array);
$summary = cutstr(strip_tags($blog['message']), 140);
$seodata = array('subject' => $blog['subject'], 'user' => $blog['username'], 'summary' => $summary, 'tags' => $blogmeta_tag);
list($navtitle, $metadescription, $metakeywords) = get_seosetting('blog', $seodata);
if(empty($navtitle)) {
$navtitle = $blog['subject'].' - '.lang('space', 'sb_blog', array('who' => $blog['username']));
$nobbname = false;
} else {
$nobbname = true;
}
if(empty($metakeywords)) {
$metakeywords = $blogmeta_tag ? $blogmeta_tag : $blog['subject'];
}
if(empty($metadescription)) {
$metadescription = $summary;
}
if(!$_G['setting']['relatedlinkstatus']) {
$_G['relatedlinks'] = get_related_link('blog');
} else {
$blog['message'] = parse_related_link($blog['message'], 'blog');
}
include_once template("diy:home/space_blog_view");
} else {
loadcache('blogcategory');
$category = $_G['cache']['blogcategory'];
if(empty($_GET['view'])) $_GET['view'] = 'we';
$perpage = 10;
$perpage = mob_perpage($perpage);
$start = ($page-1)*$perpage;
ckstart($start, $perpage);
$summarylen = 300;
$classarr = array();
$list = array();
$userlist = array();
$stickblogs = array();
$count = $pricount = 0;
$gets = array(
'mod' => 'space',
'uid' => $space['uid'],
'do' => 'blog',
'view' => $_GET['view'],
'order' => $_GET['order'],
'classid' => $_GET['classid'],
'catid' => $_GET['catid'],
'clickid' => $_GET['clickid'],
'fuid' => $_GET['fuid'],
'searchkey' => $_GET['searchkey'],
'from' => $_GET['from'],
'friend' => $_GET['friend']
);
$theurl = 'home.php?'.url_implode($gets);
$multi = '';
$f_index = $searchsubject = '';
$uids = array();
$need_count = true;
$status = null;
if($_GET['view'] == 'all') {
if($_GET['order'] == 'hot') {
$gthot = $minhot;
$orderactives = array('hot' => ' class="a"');
} else {
$orderactives = array('dateline' => ' class="a"');
}
$status = 0;
} elseif($_GET['view'] == 'me') {
space_merge($space, 'field_home');
$stickblogs = explode(',', $space['stickblogs']);
$stickblogs = array_filter($stickblogs);
$uids[] = $space['uid'];
$classid = empty($_GET['classid'])?0:intval($_GET['classid']);
$privacyfriend = empty($_GET['friend'])?0:intval($_GET['friend']);
$query = C::t('home_class')->fetch_all_by_uid($space['uid']);
foreach($query as $value) {
$classarr[$value['classid']] = $value['classname'];
}
if($_GET['from'] == 'space') $diymode = 1;
$status = array(0, 1);
} else {
space_merge($space, 'field_home');
if($space['feedfriend']) {
$fuid_actives = array();
require_once libfile('function/friend');
$fuid = intval($_GET['fuid']);
if($fuid && friend_check($fuid, $space['uid'])) {
$uids[] = $fuid;
$fuid_actives = array($fuid=>' selected');
} else {
$uids = explode(',', $space['feedfriend']);
$theurl = "home.php?mod=space&uid=$space[uid]&do=$do&view=we";
$f_index = 'dateline';
}
$query = C::t('home_friend')->fetch_all_by_uid($space['uid'], 0, 100, true);
foreach($query as $value) {
$userlist[] = $value;
}
$status = 0;
} else {
$need_count = false;
}
}
$actives = array($_GET['view'] =>' class="a"');
if($need_count) {
if($searchkey = stripsearchkey($_GET['searchkey'])) {
$searchsubject = $searchkey;
$searchkey = dhtmlspecialchars($searchkey);
}
$catid = empty($_GET['catid'])?0:intval($_GET['catid']);
$count = C::t('home_blog')->count_all_by_search(null, $uids, null, null, $gthot, null, null, null, null, null, $privacyfriend, null, null, null, $classid, $catid, $searchsubject, true, $status);
if($count) {
$query = C::t('home_blog')->fetch_all_by_search(1, null, $uids, null, null, $gthot, null, null, null, null, null, $privacyfriend, null, null, null, 'dateline', 'DESC', $start, $perpage, $classid, $catid, $searchsubject, $f_index, false, $status);
}
}
if($count) {
foreach($query as $value) {
if(ckfriend($value['uid'], $value['friend'], $value['target_ids']) && ($value['status'] == 0 || $value['uid'] == $_G['uid'] || $_G['adminid'] == 1)) {
if(!empty($stickblogs) && in_array($value['blogid'], $stickblogs)) {
continue;
}
if($value['friend'] == 4) {
$value['message'] = $value['pic'] = '';
} else {
$value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, -1);
}
$value['message'] = preg_replace("/&[a-z]+\;/i", '', $value['message']);
if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
$value['dateline'] = dgmdate($value['dateline']);
$list[] = $value;
} else {
$pricount++;
}
}
$multi = multi($count, $perpage, $page, $theurl);
if(!empty($stickblogs)) {
$list = array_merge(blog_get_stick($space['uid'], $stickblogs, $summarylen), $list);
}
}
dsetcookie('home_diymode', $diymode);
if($_G['uid']) {
if($_GET['view'] == 'all') {
$navtitle = lang('core', 'title_view_all').lang('core', 'title_blog');
} elseif($_GET['view'] == 'me') {
$navtitle = lang('core', 'title_my_blog');
} else {
$navtitle = lang('core', 'title_friend_blog');
}
} else {
if($_GET['order'] == 'hot') {
$navtitle = lang('core', 'title_recommend_blog');
} else {
$navtitle = lang('core', 'title_newest_blog');
}
}
if($space['username']) {
$navtitle = lang('space', 'sb_blog', array('who' => $space['username']));
}
$metakeywords = $navtitle;
$metadescription = $navtitle;
$navtitle = helper_seo::get_title_page($navtitle, $_G['page']);
space_merge($space, 'field_home');
include_once template("diy:home/space_blog_list");
}
function blog_get_stick($uid, $stickblogs, $summarylen) {
$list = array_flip($stickblogs);
if($stickblogs) {
$data_blog = C::t('home_blog')->fetch_all($stickblogs);
$data_blogfield = C::t('home_blogfield')->fetch_all($stickblogs);
foreach($data_blog as $curblogid=>$value) {
$value = array_merge($value, (array)$data_blogfield[$curblogid]);
$value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, -1);
$value['message'] = preg_replace("/&[a-z]+\;/i", '', $value['message']);
if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
$value['dateline'] = dgmdate($value['dateline']);
$value['stickflag'] = true;
$list[$value['blogid']] = $value;
}
}
return $list;
}
?>