123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- <?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');
- ?>
|