dz_newthread.php
3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: dz_newthread.php 33590 2013-07-12 06:39:08Z andyzheng $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class dz_newthread extends extends_data {
function __construct() {
parent::__construct();
}
function common() {
global $_G;
loadcache('mobile_pnewthread');
loadcache('forums');
$maxnum = 50000;
$maxtid = C::t('forum_thread')->fetch_max_tid();
$limittid = max(0,($maxtid - $maxnum));
$this->page = intval($_GET['page']) ? intval($_GET['page']) : 1;
$start = ($this->page - 1)*$this->perpage;
$num = $this->perpage;
if($_G['cache']['mobile_pnewthread'] && (TIMESTAMP - $_G['cache']['mobile_pnewthread']['cachetime']) < 900) {
$tids = array_slice($_G['cache']['mobile_pnewthread']['data'], $start ,$num);
if(empty($tids)) {
return;
}
} else {
$tids = array();
}
$tsql = $addsql = '';
$updatecache = false;
$fids = array();
if($_G['setting']['followforumid']) {
$addsql .= ' AND '.DB::field('fid', $_G['setting']['followforumid'], '<>');
}
if($tids) {
$tids = dintval($tids, true);
$tidsql = DB::field('tid', $tids);
} else {
$tidsql = 'tid>'.intval($limittid);
$addsql .= ' AND displayorder>=0 ORDER BY tid DESC LIMIT 600';
$tids = array();
foreach($_G['cache']['forums'] as $fid => $forum) {
if($forum['type'] != 'group' && $forum['status'] > 0 && (!$forum['viewperm'] && $_G['group']['readaccess']) || ($forum['viewperm'] && forumperm($forum['viewperm']))) {
$fids[] = $fid;
}
}
if(empty($fids)) {
return ;
}
$updatecache = true;
}
$list = $threadids = array();
$n = 0;
$query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE ".$tidsql.$addsql);
while($thread = DB::fetch($query)) {
if(empty($tids) && ($thread['isgroup'] || !in_array($thread['fid'], $fids))) {
continue;
}
if($thread['displayorder'] < 0) {
continue;
}
$threadids[] = $thread['tid'];
if($tids || ($n >= $start && $n < ($start + $num))) {
$list[$thread['tid']] = $thread;
}
$n ++;
}
$threadlist = array();
if($tids) {
foreach($tids as $key => $tid) {
if($list[$tid]) {
$threadlist[$key] = $list[$tid];
}
}
} else {
$threadlist = $list;
}
unset($list);
if($updatecache) {
$data = array('cachetime' => TIMESTAMP, 'data' => $threadids);
$_G['cache']['mobile_pnewthread'] = $data;
savecache('mobile_pnewthread', $_G['cache']['mobile_pnewthread']);
}
foreach($threadlist as $thread) {
$this->field('author', '0', $thread['author']);
$this->field('dateline', '0', $thread['dateline']);
$this->field('replies', '1', $thread['replies']);
$this->field('views', '2', $thread['views']);
$this->id = $thread['tid'];
$this->title = $thread['subject'];
$this->image = '';
$this->icon = '1';
$this->poptype = '0';
$this->popvalue = '';
$this->clicktype = 'tid';
$this->clickvalue = $thread['tid'];
$this->insertrow();
}
}
}
?>