topicadmin_copy.php
3.33 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
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: topicadmin_copy.php 31594 2012-09-12 04:14:54Z zhangguosheng $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
if(!$_G['group']['allowcopythread'] || !$thread) {
showmessage('no_privilege_copythread');
}
if(!submitcheck('modsubmit')) {
require_once libfile('function/forumlist');
$forumselect = forumselect();
include template('forum/topicadmin_action');
} else {
$modaction = 'CPY';
$reason = checkreasonpm();
$copyto = $_GET['copyto'];
$toforum = C::t('forum_forum')->fetch_info_by_fid($copyto);
if(!$toforum || $toforum['status'] != 1 || $toforum['type'] == 'group') {
showmessage('admin_copy_invalid');
} else {
$modnewthreads = (!$_G['group']['allowdirectpost'] || $_G['group']['allowdirectpost'] == 1) && $toforum['modnewposts'] ? 1 : 0;
$modnewreplies = (!$_G['group']['allowdirectpost'] || $_G['group']['allowdirectpost'] == 2) && $toforum['modnewposts'] ? 1 : 0;
if($modnewthreads || $modnewreplies) {
showmessage('admin_copy_hava_mod');
}
}
$toforum['threadsorts_arr'] = unserialize($toforum['threadsorts']);
if($thread['sortid'] != 0 && $toforum['threadsorts_arr']['types'][$thread['sortid']]) {
foreach(C::t('forum_typeoptionvar')->fetch_all_by_search($thread['sortid'], null, $thread['tid']) as $result) {
$typeoptionvar[] = $result;
}
} else {
$thread['sortid'] = '';
}
$sourcetid = $thread['tid'];
unset($thread['tid']);
$thread['fid'] = $copyto;
$thread['dateline'] = $thread['lastpost'] = TIMESTAMP;
$thread['lastposter'] = $thread['author'];
$thread['views'] = $thread['replies'] = $thread['highlight'] = $thread['digest'] = 0;
$thread['rate'] = $thread['displayorder'] = $thread['attachment'] = 0;
$thread['typeid'] = $_GET['threadtypeid'];
$thread = daddslashes($thread);
$thread['posttableid'] = 0;
$threadid = C::t('forum_thread')->insert($thread, true);
if($post = C::t('forum_post')->fetch_threadpost_by_tid_invisible($_G['tid'])) {
$post['pid'] = '';
$post['tid'] = $threadid;
$post['fid'] = $copyto;
$post['dateline'] = TIMESTAMP;
$post['attachment'] = 0;
$post['invisible'] = $post['rate'] = $post['ratetimes'] = 0;
$post['message'] .= "\n".lang('forum/thread', 'source').": [url=forum.php?mod=viewthread&tid={$sourcetid}]{$thread['subject']}[/url]";
$post = daddslashes($post);
$pid = insertpost($post);
}
$class_tag = new tag();
$class_tag->copy_tag($_G['tid'], $threadid, 'tid');
if($typeoptionvar) {
foreach($typeoptionvar AS $key => $value) {
$value['tid'] = $threadid;
$value['fid'] = $toforum['fid'];
C::t('forum_typeoptionvar')->insert($value);
}
}
updatepostcredits('+', $post['authorid'], 'post', $copyto);
updateforumcount($copyto);
updateforumcount($_G['fid']);
$modpostsnum ++;
$resultarray = array(
'redirect' => "forum.php?mod=forumdisplay&fid=$_G[fid]",
'reasonpm' => ($sendreasonpm ? array('data' => array($thread), 'var' => 'thread', 'item' => 'reason_copy', 'notictype' => 'post') : array()),
'reasonvar' => array('tid' => $thread['tid'], 'subject' => $thread['subject'], 'modaction' => $modaction, 'reason' => $reason, 'threadid' => $threadid),
'modtids' => $thread['tid'],
'modlog' => array($thread, $other)
);
}
?>