261 lines
9.6 KiB
PHP
261 lines
9.6 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* [Discuz!] (C)2001-2099 Comsenz Inc.
|
||
|
* This is NOT a freeware, use is subject to license terms
|
||
|
*
|
||
|
* $Id: home_follow.php 33660 2013-07-29 07:51:05Z nemohou $
|
||
|
*/
|
||
|
|
||
|
if(!defined('IN_DISCUZ')) {
|
||
|
exit('Access Denied');
|
||
|
}
|
||
|
|
||
|
if(!$_G['uid']) {
|
||
|
showmessage('login_before_enter_home', null, array(), array('showmsg' => true, 'login' => 1));
|
||
|
}
|
||
|
$dos = array('feed', 'follower', 'following', 'view');
|
||
|
$do = (!empty($_GET['do']) && in_array($_GET['do'], $dos)) ? $_GET['do'] : (!$_GET['uid'] ? 'feed' : 'view');
|
||
|
|
||
|
$page = empty($_GET['page']) ? 1 : intval($_GET['page']);
|
||
|
if($page<1) $page=1;
|
||
|
$perpage = 20;
|
||
|
$start = ($page-1)*$perpage;
|
||
|
$multi = '';
|
||
|
$theurl = 'home.php?mod='.($do == 'view' ? 'space' : 'follow').(!in_array($do, array('feed', 'view')) ? '&do='.$do : '');
|
||
|
$uid = $_GET['uid'] ? $_GET['uid'] : $_G['uid'];
|
||
|
$viewself = $uid == $_G['uid'] ? true : false;
|
||
|
$space = $viewself ? $_G['member'] : getuserbyuid($uid, 1);
|
||
|
if(empty($space)) {
|
||
|
showmessage('follow_visituser_not_exist');
|
||
|
} elseif(in_array($space['groupid'], array(4, 5, 6)) && ($_G['adminid'] != 1 && $space['uid'] != $_G['uid'])) {
|
||
|
dheader("Location:home.php?mod=space&uid=$uid&do=profile");
|
||
|
}
|
||
|
space_merge($space, 'count');
|
||
|
space_merge($space, 'profile');
|
||
|
space_merge($space, 'field_home');
|
||
|
|
||
|
if($viewself) {
|
||
|
$showguide = false;
|
||
|
} else {
|
||
|
$theurl .= $uid ? '&uid='.$uid : '';
|
||
|
$do = $do == 'feed' ? 'view' : $do;
|
||
|
|
||
|
$flag = C::t('home_follow')->fetch_status_by_uid_followuid($_G['uid'], $uid);
|
||
|
}
|
||
|
$showrecommend = true;
|
||
|
$archiver = $primary = 1;
|
||
|
$followerlist = array();
|
||
|
$space['bio'] = cutstr($space['bio'], 200);
|
||
|
$lastviewtime = 0;
|
||
|
if($do == 'feed') {
|
||
|
$view = 'follow';
|
||
|
if(in_array($_GET['view'], array('special', 'follow', 'other'))) {
|
||
|
$view = $_GET['view'];
|
||
|
$theurl .= '&view='.$_GET['view'];
|
||
|
}
|
||
|
|
||
|
$vuid = $view == 'other' ? 0 : $_G['uid'];
|
||
|
$list = getfollowfeed($vuid, $view, false, $start, $perpage);
|
||
|
if((empty($list['feed']) || count($list['feed']) < 20) && (!empty($list['user']) || $view == 'other')) {
|
||
|
$primary = 0;
|
||
|
$alist = getfollowfeed($vuid, $view, true, $start, $perpage);
|
||
|
if(empty($list['feed']) && empty($alist['feed'])) {
|
||
|
$showguide = true;
|
||
|
$archiver = 0;
|
||
|
} else {
|
||
|
$showguide = false;
|
||
|
foreach($alist as $key => $values) {
|
||
|
if($key != 'user') {
|
||
|
foreach($values as $id => $value) {
|
||
|
if(!isset($list[$key][$id])) {
|
||
|
$list[$key][$id] = $value;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} elseif(empty($list['user']) && $view != 'other') {
|
||
|
$archiver = $primary = 0;
|
||
|
$showguide = false;
|
||
|
}
|
||
|
if($showguide) {
|
||
|
if(!empty($_G['cookie']['lastshowtime'])) {
|
||
|
$time = explode('|', $_G['cookie']['lastshowtime']);
|
||
|
$today = strtotime(dgmdate($_G['timestamp'], 'Y-m-d'));
|
||
|
if($time[0] == $uid && (TIMESTAMP - $time[1] < 86400 && $time[1] > $today)) {
|
||
|
$showguide = false;
|
||
|
}
|
||
|
}
|
||
|
dsetcookie('lastshowtime', $uid.'|'.TIMESTAMP, 86400);
|
||
|
}
|
||
|
if(!empty($_G['cookie']['lastviewtime'])) {
|
||
|
$time = explode('|', $_G['cookie']['lastviewtime']);
|
||
|
if($time[0] == $_G['uid']) {
|
||
|
$lastviewtime = $time[1];
|
||
|
}
|
||
|
} else {
|
||
|
$lastviewtime = getuserprofile('lastactivity');
|
||
|
}
|
||
|
dsetcookie('lastviewtime', $_G['uid'].'|'.TIMESTAMP, 31536000);
|
||
|
if($_G['member']['newprompt_num']['follow']) {
|
||
|
C::t('home_notification')->delete_by_type('follow', $_G['uid']);
|
||
|
helper_notification::update_newprompt($_G['uid'], 'follow');
|
||
|
}
|
||
|
$recommend = $users = array();
|
||
|
if(helper_access::check_module('follow')) {
|
||
|
loadcache('recommend_follow');
|
||
|
if(empty($_G['cache']['recommend_follow']) || !empty($_G['cache']['recommend_follow']) && (empty($_G['cache']['recommend_follow']['users']) || TIMESTAMP - $_G['cache']['recommend_follow']['dateline'] > 86400)) {
|
||
|
foreach(C::t('home_specialuser')->fetch_all_by_status(0, 10) as $value) {
|
||
|
$recommend[$value['uid']] = $value['username'];
|
||
|
}
|
||
|
unset($recommend[$_G['uid']]);
|
||
|
if(count($recommend) < 10) {
|
||
|
$followuser = C::t('common_member_count')->range_by_field(0, 100, 'follower', 'DESC');
|
||
|
$userstatus = C::t('common_member_status')->fetch_all_orderby_lastpost(array_keys($followuser), 0, 20);
|
||
|
$users = C::t('common_member')->fetch_all_username_by_uid(array_keys($userstatus));
|
||
|
}
|
||
|
savecache('recommend_follow', array('dateline'=>TIMESTAMP, 'users'=>$users, 'defaultusers' => $recommend));
|
||
|
} else {
|
||
|
$users = &$_G['cache']['recommend_follow']['users'];
|
||
|
$recommend = &$_G['cache']['recommend_follow']['defaultusers'];
|
||
|
}
|
||
|
if(!empty($users)) {
|
||
|
if(count($recommend) < 10) {
|
||
|
$randkeys = array_rand($users, 11 - count($recommend));
|
||
|
foreach($randkeys as $ruid) {
|
||
|
if($ruid != $_G['uid']) {
|
||
|
$recommend[$ruid] = $users[$ruid];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if($do == 'following') {
|
||
|
foreach($list as $ruid => $user) {
|
||
|
if(isset($recommend[$ruid])) {
|
||
|
unset($recommend[$ruid]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if($recommend) {
|
||
|
$users = C::t('home_follow')->fetch_all_by_uid_followuid($_G['uid'], array_keys($recommend));
|
||
|
foreach($users as $ruid => $user) {
|
||
|
if(isset($recommend[$ruid])) {
|
||
|
unset($recommend[$ruid]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$navactives = array('feed' => ' class="a"');
|
||
|
$actives = array($view => ' class="a"');
|
||
|
|
||
|
list($seccodecheck, $secqaacheck) = seccheck('publish');
|
||
|
|
||
|
} elseif($do == 'view') {
|
||
|
$list = getfollowfeed($uid, 'self', false, $start, $perpage);
|
||
|
if(empty($list['feed'])) {
|
||
|
$primary = 0;
|
||
|
$list = getfollowfeed($uid, 'self', true, $start, $perpage);
|
||
|
if(empty($list['user'])) {
|
||
|
$archiver = 0;
|
||
|
}
|
||
|
}
|
||
|
if(!isset($_G['cache']['forums'])) {
|
||
|
loadcache('forums');
|
||
|
}
|
||
|
if(helper_access::check_module('follow')) {
|
||
|
$followerlist = C::t('home_follow')->fetch_all_following_by_uid($uid, 0, 9);
|
||
|
}
|
||
|
$seccodecheck = ($_G['setting']['seccodestatus'] & 4) && (!$_G['setting']['seccodedata']['minposts'] || getuserprofile('posts') < $_G['setting']['seccodedata']['minposts']);
|
||
|
$secqaacheck = $_G['setting']['secqaa']['status'] & 2 && (!$_G['setting']['secqaa']['minposts'] || getuserprofile('posts') < $_G['setting']['secqaa']['minposts']);
|
||
|
} elseif($do == 'follower') {
|
||
|
$count = C::t('home_follow')->count_follow_user($uid, 1);
|
||
|
if($viewself && !empty($_G['member']['newprompt_num']['follower'])) {
|
||
|
$newfollower = C::t('home_notification')->fetch_all_by_uid($uid, -1, 'follower', 0, $_G['member']['newprompt_num']['follower']);
|
||
|
$newfollower_list = array();
|
||
|
foreach($newfollower as $val) {
|
||
|
$newfollower_list[] = $val['from_id'];
|
||
|
}
|
||
|
C::t('home_notification')->delete_by_type('follower', $_G['uid']);
|
||
|
helper_notification::update_newprompt($_G['uid'], 'follower');
|
||
|
}
|
||
|
if($count) {
|
||
|
$list = C::t('home_follow')->fetch_all_follower_by_uid($uid, $start, $perpage);
|
||
|
$multi = multi($count, $perpage, $page, $theurl);
|
||
|
}
|
||
|
if(helper_access::check_module('follow')) {
|
||
|
$followerlist = C::t('home_follow')->fetch_all_following_by_uid($uid, 0, 9);
|
||
|
}
|
||
|
$navactives = array($do => ' class="a"');
|
||
|
} elseif($do == 'following') {
|
||
|
$count = C::t('home_follow')->count_follow_user($uid);
|
||
|
if($count) {
|
||
|
$status = $_GET['status'] ? 1 : 0;
|
||
|
$list = C::t('home_follow')->fetch_all_following_by_uid($uid, $status, $start, $perpage);
|
||
|
$multi = multi($count, $perpage, $page, $theurl);
|
||
|
}
|
||
|
if(helper_access::check_module('follow')) {
|
||
|
$followerlist = C::t('home_follow')->fetch_all_follower_by_uid($uid, 9);
|
||
|
}
|
||
|
$navactives = array($do => ' class="a"');
|
||
|
}
|
||
|
|
||
|
if(($do == 'follower' || $do == 'following') && $list) {
|
||
|
$uids = array_keys($list);
|
||
|
$fieldhome = C::t('common_member_field_home')->fetch_all($uids);
|
||
|
foreach($fieldhome as $fuid => $val) {
|
||
|
$list[$fuid]['recentnote'] = $val['recentnote'];
|
||
|
}
|
||
|
$memberinfo = C::t('common_member_count')->fetch_all($uids);
|
||
|
$memberprofile = C::t('common_member_profile')->fetch_all($uids);
|
||
|
|
||
|
if(!$viewself) {
|
||
|
$myfollow = C::t('home_follow')->fetch_all_by_uid_followuid($_G['uid'], $uids);
|
||
|
foreach($uids as $muid) {
|
||
|
$list[$muid]['mutual'] = 0;
|
||
|
if(!empty($myfollow[$muid])) {
|
||
|
$list[$muid]['mutual'] = $myfollow[$muid]['mutual'] ? 1 : -1;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
$specialfollow = C::t('home_follow')->fetch_all_following_by_uid($uid, 1, 10);
|
||
|
}
|
||
|
|
||
|
if($viewself) {
|
||
|
if(!isset($_G['cache']['forums'])) {
|
||
|
loadcache('forums');
|
||
|
}
|
||
|
$fields = C::t('forum_forumfield')->fetch_all_by_fid(array_keys($_G['cache']['forums']));
|
||
|
foreach($fields as $fid => $field) {
|
||
|
if(!empty($field['threadsorts'])) {
|
||
|
unset($_G['cache']['forums'][$fid]);
|
||
|
}
|
||
|
}
|
||
|
require_once libfile('function/forumlist');
|
||
|
$forumlist = forumselect();
|
||
|
$defaultforum = $_G['setting']['followforumid'] ? $_G['cache']['forums'][$_G['setting']['followforumid']] : array();
|
||
|
require_once libfile('function/upload');
|
||
|
$swfconfig = getuploadconfig($_G['uid']);
|
||
|
}
|
||
|
|
||
|
if($do == 'feed') {
|
||
|
$navigation = ' <em>›</em> <a href="home.php?mod=follow&view='.$view.'">'.lang('space', 'follow_view_'.$view).'</a>';
|
||
|
$navtitle = lang('space', 'follow_view_'.$view);
|
||
|
} elseif($do == 'view') {
|
||
|
$navigation = ' <em>›</em> <a href="home.php?mod=space&uid='.$uid.'">'.$space['username'].'</a>';
|
||
|
if($type != 'feed') {
|
||
|
$navigation .= ' <em>›</em> '.lang('space', 'follow_view_type_feed').'</a>';
|
||
|
}
|
||
|
$navtitle = lang('space', 'follow_view_feed', array('who' => $space['username']));
|
||
|
} else {
|
||
|
$navigation = ' <em>›</em> <a href="home.php?mod=space&uid='.$uid.'">'.$space['username'].'</a> <em>›</em> '.lang('space', 'follow_view_'.($viewself?'my':'do').'_'.$do);
|
||
|
$navtitle = lang('space', 'follow_view_'.($viewself?'my':'do').'_'.$do);
|
||
|
}
|
||
|
$metakeywords = $navtitle;
|
||
|
$metadescription = $navtitle;
|
||
|
$navtitle = helper_seo::get_title_page($navtitle, $_G['page']);
|
||
|
include template('diy:home/follow_feed');
|
||
|
|
||
|
?>
|