DiscuzX/upload/source/module/home/home_follow.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>&rsaquo;</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>&rsaquo;</em> <a href="home.php?mod=space&uid='.$uid.'">'.$space['username'].'</a>';
if($type != 'feed') {
$navigation .= ' <em>&rsaquo;</em> '.lang('space', 'follow_view_type_feed').'</a>';
}
$navtitle = lang('space', 'follow_view_feed', array('who' => $space['username']));
} else {
$navigation = ' <em>&rsaquo;</em> <a href="home.php?mod=space&uid='.$uid.'">'.$space['username'].'</a> <em>&rsaquo;</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');
?>