modcp_recyclebin.php
5.83 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<?php
/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: modcp_recyclebin.php 27222 2012-01-11 08:01:39Z monkey $
 */
if(!defined('IN_DISCUZ') || !defined('IN_MODCP')) {
	exit('Access Denied');
}
$op = !in_array($op , array('list', 'delete', 'search', 'restore')) ? 'list' : $op;
$do = !empty($_GET['do']) ? dhtmlspecialchars($_GET['do']) : '';
$tidarray = array();
$action = $_GET['action'];
$result = array();
foreach (array('threadoption', 'viewsless', 'viewsmore', 'repliesless', 'repliesmore', 'noreplydays', 'typeid') as $key) {
	$$key = isset($_GET[''.$key]) && is_numeric($_GET[''.$key]) ? intval($_GET[''.$key]) : '';
	$result[$key] = $$key;
}
foreach (array('starttime', 'endtime', 'keywords', 'users') as $key) {
	$$key = isset($_GET[''.$key]) ? trim($_GET[''.$key]) : '';
	$result[$key] = isset($_GET[''.$key]) ? dhtmlspecialchars($_GET[''.$key]) : '';
}
$threadoptionselect = array('','','','','','', '', '', '', '', 999=>'', 888=>'');
$threadoptionselect[$threadoption] = 'selected';
$postlist = array();
$total = $multipage = '';
$cachekey = 'srchresult_recycle_thread'.$_G['fid'];
if($_G['fid'] && $_G['forum']['ismoderator'] && $modforums['recyclebins'][$_G['fid']]) {
	$srchupdate = false;
	if(in_array($_G['adminid'], array(1, 2, 3)) && ($op == 'delete' || $op == 'restore') && submitcheck('dosubmit')) {
		if(!empty($_GET['moderate'])) {
			foreach(C::t('forum_thread')->fetch_all_by_tid_displayorder($_GET['moderate'], -1, '=', $_G['fid']) as $tid) {
				$tidarray[] = $tid['tid'];
			}
			if($tidarray) {
				if($op == 'delete' && $_G['group']['allowclearrecycle']) {
					require_once libfile('function/delete');
					deletethread($tidarray);
				}
				if($op == 'restore') {
					require_once libfile('function/post');
					undeletethreads($tidarray);
				}
				if($_GET['oldop'] == 'search') {
					$srchupdate = true;
				}
			}
		}
		$op = dhtmlspecialchars($_GET['oldop']);
		showmessage('modcp_recyclebin_'.$op.'_succeed', '', array(), array('break' => 1));
	}
	if($op == 'search' &&  submitcheck('searchsubmit')) {
		$conditions = array();
		if($threadoption > 0 && $threadoption < 255) {
			$conditions['specialthread'] = 1;
			$conditions['special'] = $threadoption;
		} elseif($threadoption == 999) {
			$conditions['digest'] = array(1,2,3);
		} elseif($threadoption == 888) {
			$conditions['sticky'] = 1;
		}
		$viewsless !== ''? $conditions['viewsless'] = $viewsless : '';
		$viewsmore !== ''? $conditions['viewsmore'] = $viewsmore : '';
		$repliesless !== ''? $conditions['repliesless'] = $repliesless : '';
		$repliesmore !== ''? $conditions['repliesmore'] = $repliesmore : '';
		$noreplydays !== ''? $conditions['noreplydays'] = $noreplydays : '';
		$starttime != '' ? $conditions['starttime'] = $starttime : '';
		$endtime != '' ? $conditions['endtime'] = $endtime : '';
		if(trim($keywords)) {
			$conditions['keywords'] = $keywords;
		}
		if(trim($users)) {
			$conditions['users'] = trim($users);
		}
		if($_GET['typeid']) {
			$conditions['intype'] = $_GET['typeid'];
		}
		if(!empty($conditions)) {
			$tids = $comma = '';
			$count = 0;
			$conditions['fid'] = $_G['fid'];
			$conditions['sticky'] = 3;
			foreach(C::t('forum_thread')->fetch_all_search($conditions, 0, 0, 1000, 'lastpost') as $thread) {
				$tids .= $comma.$thread['tid'];
				$comma = ',';
				$count ++;
			}
			$result['tids'] = $tids;
			$result['count'] = $count;
			$result['fid'] = $_G['fid'];
			$modsession->set($cachekey, $result, true);
			unset($result, $tids);
			$page = 1;
		} else {
			$op = 'list';
		}
	}
	$page = max(1, intval($_G['page']));
	$total = 0;
	$query = $multipage = '';
	if($op == 'list') {
		$total = C::t('forum_thread')->count_by_fid_typeid_displayorder($_G['fid'], $_GET['typeid'], -1);
		$tpage = ceil($total / $_G['tpp']);
		$page = min($tpage, $page);
		$multipage = multi($total, $_G['tpp'], $page, "$cpscript?mod=modcp&action=$action&op=$op&fid=$_G[fid]&do=$do");
		if($total) {
			$start = ($page - 1) * $_G['tpp'];
			$threads = C::t('forum_thread')->fetch_all_by_fid_typeid_displayorder($_G['fid'], $_GET['typeid'], -1, '=', $start, $_G['tpp']);
		}
	}
	if($op == 'search') {
		$result = $modsession->get($cachekey);
		if($result) {
			if($srchupdate && $result['count'] && $tidarray) {
				$td = explode(',', $result['tids']);
				$newtids = $comma = $newcount = '';
				if(is_array($td)) {
					foreach ($td as $v) {
						$v = intval($v);
						if(!in_array($v, $tidarray)) {
							$newcount ++;
							$newtids .= $comma.$v;
							$comma = ',';
						}
					}
					$result['count'] = $newcount;
					$result['tids'] = $newtids;
					$modsession->set($cachekey, $result, true);
				}
			}
			$threadoptionselect[$result['threadoption']] = 'selected';
			$total = $result['count'];
			$tpage = ceil($total / $_G['tpp']);
			$page = min($tpage, $page);
			$multipage = multi($total, $_G['tpp'], $page, "$cpscript?mod=modcp&action=$action&op=$op&fid=$_G[fid]&do=$do");
			if($total) {
				$start = ($page - 1) * $_G['tpp'];
				$threads = C::t('forum_thread')->fetch_all_by_tid_fid_displayorder(explode(',', $result['tids']), $_G['fid'], -1, 'lastpost', $start, $_G['tpp']);
			}
		}
	}
	$postlist = array();
	if($threads) {
		require_once libfile('function/misc');
		foreach($threads as $thread) {
			$post = procthread($thread);
			$post['modthreadkey'] = modauthkey($post['tid']);
			$postlist[$post['tid']] = $post;
		}
		if($postlist) {
			$tids = array_keys($postlist);
			foreach(C::t('forum_threadmod')->fetch_all_by_tid($tids) as $row) {
				if(empty($postlist[$row['tid']]['reason'])) {
					$postlist[$row['tid']]['reason'] = $row['reason'];
				}
			}
		}
	}
}
?>