<?php



/**

 *      [Discuz!] (C)2001-2099 Comsenz Inc.

 *      This is NOT a freeware, use is subject to license terms

 *

 *      $Id: space_thread.php 28220 2012-02-24 07:52:50Z zhengqingpeng $

 */



if(!defined('IN_DISCUZ')) {

	exit('Access Denied');

}



// δָ���û�ʱ��ʾ��ǰ��¼�û��Լ�������

if(!isset($_GET['uid'])) {

	$_GET['uid'] = isset($_G['uid']) ? $_G['uid'] : 0;

}



$space = getuserbyuid($_GET['uid']);



$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']);

$opactives['thread'] = 'class="a"';



if(empty($_GET['view'])) $_GET['view'] = 'me';

$_GET['order'] = empty($_GET['order']) ? 'dateline' : $_GET['order'];



$allowviewuserthread = $_G['setting']['allowviewuserthread'];



$perpage = 20;

$start = ($page-1)*$perpage;

ckstart($start, $perpage);



$list = array();

$userlist = array();

$hiddennum = $count = $pricount = 0;



$gets = array(

	'mod' => 'space',

	'uid' => $space['uid'],

	'do' => 'thread',

	'fid' => $_GET['fid'],

	'view' => $_GET['view'],

	'type' => $_GET['type'],

	'order' => $_GET['order'],

	'fuid' => $_GET['fuid'],

	'searchkey' => $_GET['searchkey'],

	'from' => $_GET['from'],

	'filter' => $_GET['filter']

);

$theurl = 'home.php?'.url_implode($gets);

unset($gets['fid']);

$forumurl = 'home.php?'.url_implode($gets);

$multi = '';

$authorid = 0;

$replies = $closed = $displayorder = null;

$dglue = '=';

$vfid = $_GET['fid'] ? intval($_GET['fid']) : null;



require_once libfile('function/misc');

require_once libfile('function/forum');

loadcache(array('forums'));

$fids = $comma = '';

if($_GET['view'] != 'me') {

	$displayorder = 0;

	$dglue = '>=';

}

$f_index = '';

$ordersql = 't.dateline DESC';

$need_count = true;

$viewuserthread = false;

$listcount = 0;

if($_GET['view'] == 'me') {

	if($_GET['from'] == 'space') $diymode = 1;

	$allowview = true;

	$viewtype = in_array($_GET['type'], array('reply', 'thread', 'postcomment')) ? $_GET['type'] : 'thread';

	$filter = in_array($_GET['filter'], array('recyclebin', 'ignored', 'save', 'aduit', 'close', 'common')) ? $_GET['filter'] : '';

	if($space['uid'] != $_G['uid'] && in_array($viewtype, array('reply', 'thread'))) {

		if($allowviewuserthread === -1 && $_G['adminid'] != 1) {

			//$allowview = false;

		}

		if($allowview) {

			$viewuserthread = true;

			$viewfids = str_replace("'", '', $allowviewuserthread);

			if(!empty($viewfids)) {

				$viewfids = explode(',', $viewfids);

			}

		}

	}



	if($viewtype == 'thread' && $allowview) {

		$authorid = $space['uid'];

		if($filter == 'recyclebin') {

			$displayorder = -1;

		} elseif($filter == 'aduit') {

			$displayorder = -2;

		} elseif($filter == 'ignored') {

			$displayorder = -3;

		} elseif($filter == 'save') {

			$displayorder = -4;

		} elseif($filter == 'close') {

			$closed = 1;

		} elseif($filter == 'common') {

			$closed = 0;

			$displayorder = 0;

			$dglue = '>=';

		}

		$ordersql = 't.tid DESC';

	} elseif($viewtype == 'postcomment') {

		$posttable = getposttable();

		require_once libfile('function/post');

		$pids = $tids = array();

		$postcommentarr = C::t('forum_postcomment')->fetch_all_by_authorid($_G['uid'], $start, $perpage);

		foreach($postcommentarr as $value) {

			$pids[] = $value['pid'];

			$tids[] = $value['tid'];

		}

		$pids = C::t('forum_post')->fetch_all(0, $pids);

		$tids = C::t('forum_thread')->fetch_all($tids);



		$list = $fids = array();

		foreach($postcommentarr as $value) {

			$value['authorid'] = $pids[$value['pid']]['authorid'];

			$value['fid'] = $pids[$value['pid']]['fid'];

			$value['invisible'] = $pids[$value['pid']]['invisible'];

			$value['dateline'] = $pids[$value['pid']]['dateline'];

			$value['message'] = $pids[$value['pid']]['message'];

			$value['special'] = $tids[$value['tid']]['special'];

			$value['status'] = $tids[$value['tid']]['status'];

			$value['subject'] = $tids[$value['tid']]['subject'];

			$value['digest'] = $tids[$value['tid']]['digest'];

			$value['attachment'] = $tids[$value['tid']]['attachment'];

			$value['replies'] = $tids[$value['tid']]['replies'];

			$value['views'] = $tids[$value['tid']]['views'];

			$value['lastposter'] = $tids[$value['tid']]['lastposter'];

			$value['lastpost'] = $tids[$value['tid']]['lastpost'];

			$value['tid'] = $pids[$value['pid']]['tid'];



			$fids[] = $value['fid'];

			$value['comment'] = messagecutstr($value['comment'], 100);

			$list[] = procthread($value);

		}

		unset($pids, $tids, $postcommentarr);

		if($fids) {

			$fids = array_unique($fids);

			$query = C::t('forum_forum')->fetch_all($fids);

			foreach($query as $forum) {

				$forums[$forum['fid']] = $forum['name'];

			}

		}



		$multi = simplepage(count($list), $perpage, $page, $theurl);

		$need_count = false;



	} elseif($allowview) {

		$invisible = null;

		$postsql = $threadsql = '';

		if($filter == 'recyclebin') {

			$invisible = -5;

		} elseif($filter == 'aduit') {

			$invisible = -2;

		} elseif($filter == 'save' || $filter == 'ignored') {

			$invisible = -3;

			$displayorder = -4;

		} elseif($filter == 'close') {

			$closed = 1;

		} elseif($filter == 'common') {

			$invisible = 0;

			$displayorder = 0;

			$dglue = '>=';

			$closed = 0;

		} else {

			if($space['uid'] != $_G['uid']) {

				$invisible = 0;

			}

		}

		require_once libfile('function/post');

		$posts = C::t('forum_post')->fetch_all_by_authorid(0, $space['uid'], true, 'DESC', $start, $perpage, 0, $invisible, $vfid);

		$listcount = count($posts);

		foreach($posts as $pid => $post) {

			$delrow = false;

			if($post['anonymous'] && $post['authorid'] != $_G['uid']) {

				$delrow = true;

			} elseif($viewuserthread && $post['authorid'] != $_G['uid']) {

				if(($_G['adminid'] != 1 && !empty($viewfids) && !in_array($post['fid'], $viewfids))) {

					$delrow = true;

				}

			}

			if($delrow) {

				unset($posts[$pid]);

				$hiddennum++;

				continue;

			} else {

				$tids[$post['tid']][] = $pid;

				$post['message'] = !getstatus($post['status'], 2) || $post['authorid'] == $_G['uid'] ? messagecutstr($post['message'], 100) : '';

				$posts[$pid] = $post;

			}

		}

		if(!empty($tids)) {

			$threads = C::t('forum_thread')->fetch_all_by_tid_displayorder(array_keys($tids), $displayorder, $dglue, array(), $closed);

			foreach($threads as $tid => $thread) {

				$delrow = false;

				if($_G['adminid'] != 1 && $thread['displayorder'] < 0) {

					$delrow = true;

				} elseif(!isset($_G['cache']['forums'][$thread['fid']])) {

					if(!$_G['setting']['groupstatus']) {

						$delrow = true;

					} else {

						$gids[$thread['fid']] = $thread['tid'];

					}

				}

				if($delrow) {

					foreach($tids[$tid] as $pid) {

						unset($posts[$pid]);

						$hiddennum++;

					}

					unset($tids[$tid]);

					unset($threads[$tid]);

					continue;

				} else {

					$threads[$tid] = procthread($thread);

					$forums[$thread['fid']] = $threads[$tid]['forumname'];

				}



			}

			if(!empty($gids)) {

				$groupforums = C::t('forum_forum')->fetch_all_name_by_fid(array_keys($gids));

				foreach($gids as $fid => $tid) {

					$threads[$tid]['forumname'] = $groupforums[$fid]['name'];

					$forums[$fid] = $groupforums[$fid]['name'];

				}

			}

             

			if(!empty($tids)) {

				foreach($tids as $tid => $pids) {

					foreach($pids as $pid) {

						if(!isset($threads[$tid])) {

							unset($posts[$pid]);

							unset($tids[$tid]);

							$hiddennum++;

							continue;

						}

					}

				}

			}

			$list = &$threads;

		}

                krsort($list);

		$multi = simplepage($listcount, $perpage, $page, $theurl);



		$need_count = false;

	}

	if(!$allowview) {

		$need_count = false;

	}

	$orderactives = array($viewtype => ' class="a"');

} 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'])) {

			$authorid = $fuid;

			$fuid_actives = array($fuid=>' selected');

		} else {

			$authorid = explode(',', $space['feedfriend']);

		}



		$query = C::t('home_friend')->fetch_all_by_uid($_G['uid'], 0, 100, true);

		foreach($query as $value) {

			$userlist[] = $value;

		}

	} else {

		$need_count = false;

	}

}

$actives = array($_GET['view'] =>' class="a"');

if($need_count) {

	if($searchkey = stripsearchkey($_GET['searchkey'])) {

		$searchkey = dhtmlspecialchars($searchkey);

	}

	loadcache('forums');

	$gids = $fids = $forums = array();



	foreach(C::t('forum_thread')->fetch_all_by_authorid_displayorder($authorid, $displayorder, $dglue, $closed, $searchkey, $start, $perpage, $replies, $vfid) as $tid => $value) {

		if(empty($value['author']) && $value['authorid'] != $_G['uid']) {

			$hiddennum++;

			//continue;

		} elseif($viewuserthread && $value['authorid'] != $_G['uid']) {

			if(($_G['adminid'] != 1 && !empty($viewfids) && !in_array($value['fid'], $viewfids)) || $value['displayorder'] < 0) {

				$hiddennum++;

				//continue;

			}

		} elseif(!isset($_G['cache']['forums'][$value['fid']])) {

			if(!$_G['setting']['groupstatus']) {

				$hiddennum++;

				//continue;

			} else {

				$gids[$value['fid']] = $value['tid'];

			}

		}

		$list[$value['tid']] = procthread($value);

		$forums[$value['fid']] = $list[$value['tid']]['forumname'];

	}



	if(!empty($gids)) {

		$gforumnames = C::t('forum_forum')->fetch_all_name_by_fid(array_keys($gids));

		foreach($gids as $fid => $tid) {

			$list[$tid]['forumname'] = $gforumnames[$fid]['name'];

			$forums[$fid] = $gforumnames[$fid]['name'];

		}

	}



	$threads = &$list;





	if($_GET['view'] != 'all') {

		$listcount = count($list)+$hiddennum;

		$multi = simplepage($listcount, $perpage, $page, $theurl);

	}

}



require_once libfile('function/forumlist');

$forumlist = forumselect(FALSE, 0, intval($_GET['fid']));

dsetcookie('home_diymode', $diymode);



if($_G['uid']) {

	$_GET['view'] = !$_GET['view'] ? 'we' : $_GET['view'];

}



$threadlist = array();

foreach($threads as $thread) {

	if(isset($_G['mocuz_config']['share_fid']) && $thread['fid'] == $_G['mocuz_config']['share_fid']){

		continue;

	}

    $threadlist[] = array(

        'tid' => $thread['tid'],

        'fid' => $thread['fid'],

        'author' => $thread['author'],

        'authorid' => $thread['authorid'],

        'subject' => odz_format_subject($thread['subject']),

        'dateline' => $thread['dateline'],

        'showtime' => dgmdate($thread['dateline'], 'mu'),

        'views' => $thread['views'],

        'replies' => $thread['replies'],

        'forumname' => strip_tags($thread['forumname']),

        'hasimageattachment' => ($thread['attachment'] == 2 ? 1 : 0), // �Ƿ����ͼƬ����

        'haslock' => $thread['closed'] // �����Ƿ�ر�

    );

}

odz_result(array('threadlist'=>$threadlist));

?>