Files
web-discuz/source/plugin/replyfloor/admin/admin_attach.php
2025-06-27 21:04:18 +08:00

151 lines
7.5 KiB
PHP

<?php
/**
* This is NOT a freeware, use is subject to license terms
* 应用名称: 贴吧楼中楼回复 9.0
* 下载地址: https://addon.dismall.com/plugins/replyfloor.html
* 应用开发者: 乘凉
* 开发者QQ: 594433766
* 更新日期: 202505310549
* 授权域名: www.shitangsweet.com
* 授权码: 2025053105b89RrI3R9n
* 未经应用程序开发者/所有者的书面许可,不得进行反向工程、反向汇编、反向编译等,不得擅自复制、修改、链接、转载、汇编、发表、出版、发展与之有关的衍生产品、作品等
*/
/**
* $author: 乘凉 $
*/
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
$op = in_array($_GET['op'], array('index','delete')) ? $_GET['op'] : 'index';
if($op == 'index') {
if(!submitcheck('savesubmit')) {
$perpage = empty($_GET['perpage']) ? 30 : $_GET['perpage'];
$start = ($page-1)*$perpage;
$checkperpage = array();
$checkperpage[$perpage] = 'selected="selected"';
$unused = intval($_GET['unused']) ? 1 : 0;
$checkunused = array();
$checkunused[$unused] = 'selected="selected"';
$intkeys = array();
$strkeys = array();
$randkeys = array();
$likekeys = array('username', 'filename');
$results = getwheres($intkeys, $strkeys, $randkeys, $likekeys);
foreach($likekeys as $k) {
$_GET[$k] = dhtmlspecialchars($_GET[$k]);
}
$wherearr = $results['wherearr'];
$mpurl = ADMINSCRIPT."?action=$pluginurl&unused=$unused&perpage=$perpage&".implode('&', $results['urls']);
$adminscript = ADMINSCRIPT;
$searchlang = array();
$keys = array('attach_filename', 'attach_unused_0', 'attach_unused_1', 'perpage_30', 'perpage_50', 'perpage_100', 'perpage_200');
foreach ($keys as $key) {
$searchlang[$key] = lang('plugin/'.$plugin['identifier'], $key);
}
echo <<<SEARCH
<form method="get" autocomplete="off" action="$adminscript" id="tb_search">
<div style="margin-top:8px;">
<table cellspacing="3" cellpadding="3">
<tr>
<th>$lang[username]</th><td><input type="text" class="txt" name="username" value="$_GET[username]"></td>
<th>$searchlang[attach_filename]</th><td><input type="text" class="txt" name="filename" value="$_GET[filename]"></td>
<td><select name="unused" class="ps vm"><option value="0"$checkunused[0]>$searchlang[attach_unused_0]</option><option value="1"$checkunused[1]>$searchlang[attach_unused_1]</option></select></td>
<td><select name="perpage" class="ps vm"><option value="30"$checkperpage[30]>$searchlang[perpage_30]</option><option value="50"$checkperpage[50]>$searchlang[perpage_50]</option><option value="100"$checkperpage[100]>$searchlang[perpage_100]</option><option value="200"$checkperpage[200]>$searchlang[perpage_200]</option></select></td>
<td>
<input type="hidden" name="action" value="plugins">
<input type="hidden" name="operation" value="config">
<input type="hidden" name="do" value="$pluginid">
<input type="hidden" name="identifier" value="$plugin[identifier]">
<input type="hidden" name="pmod" value="$_GET[pmod]">
<input type="hidden" name="act" value="$act">
<input type="hidden" name="op" value="$op">
<input type="submit" name="searchsubmit" value="$lang[search]" class="btn" id="submit_searchsubmit">
</td>
</tr>
</table>
</div>
</form>
<script type="text/JavaScript">_attachEvent(document.documentElement, 'keydown', function (e) { entersubmit(e, 'searchsubmit'); });</script>
SEARCH;
showformheader($pluginurl."&unused=$unused");
showtableheader(lang('plugin/'.$plugin['identifier'], 'attach_list'));
showsubtitle(array('del', 'username', lang('plugin/'.$plugin['identifier'], 'attach_filename'), lang('plugin/'.$plugin['identifier'], 'attach_preview'), lang('plugin/'.$plugin['identifier'], 'attach_filesize'), lang('plugin/'.$plugin['identifier'], 'attach_dateline')));
if($unused){
$count = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment_unused')->count_by_search_where($wherearr);
$list = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment_unused')->fetch_all_by_search_where($wherearr,'order by dateline desc', $start, $perpage);
}else{
$count = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment')->count_by_search_where($wherearr);
$list = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment')->fetch_all_by_search_where($wherearr,'order by dateline desc', $start, $perpage);
}
foreach ($list as $value) {
$fileurl = ($value['remote'] ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']) . 'replyfloor/'. $value['attachment'];
$value['dateline'] = dgmdate($value['dateline'], 'Y-n-j H:i');
showtablerow('', array('class="td25"', 'class="td24"', '', 'class="td24"', 'class="td24"', 'class="td24"'), array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$value[id]\">",
$value['username'],
'<a href="'.$fileurl.'" target="_blank">'.$value['filename'].'</a>',
in_array($value['fileext'], array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'webp')) ? '<a href="'.$fileurl.'" target="_blank"><img src="'.$fileurl.'" border="0" alt="" width="80" height="80" /></a>' : '',
sizecount($value['filesize']),
$value['dateline'],
));
}
$multipage = multi($count, $perpage, $page, $mpurl);
showsubmit('savesubmit', 'submit', 'select_all', '', $multipage, false);
showtablefooter();
showformfooter();
} else {
$unused = intval($_GET['unused']) ? 1 : 0;
if(is_array($_GET['delete'])) {
$ids = $_GET['delete'];
if($unused) {
$attachlist = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment_unused')->fetch_all_by_id($ids);
foreach($attachlist as $attach){
if($attach['remote']) {
ftpcmd('delete', 'replyfloor/'.$attach['attachment']);
} else {
@unlink($_G['setting']['attachdir'].'/replyfloor/'.$attach['attachment']);
}
}
C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment_unused')->delete_by_id($ids);
}else{
$msgids = array();
$attachlist = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment')->fetch_all_by_id($ids);
foreach($attachlist as $attach){
if($attach['remote']) {
ftpcmd('delete', 'replyfloor/'.$attach['attachment']);
} else {
@unlink($_G['setting']['attachdir'].'/replyfloor/'.$attach['attachment']);
}
if(!in_array($attach['msgid'], $msgids)){
$msgids[] = $attach['msgid'];
}
}
C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment')->delete_by_id($ids);
//更新回复表中图片地址
$messagelist = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_message')->fetch_all_by_id($msgids);
foreach($messagelist as $message){
$attachment = $queryattach = array();
$queryattach = C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_attachment')->fetch_all_by_msgid(array($message['id']), 'order by displayorder asc,dateline asc');
foreach($queryattach as $value){
if(in_array($value['fileext'], array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'webp'))){
$attachment[] = ($value['remote'] ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']) . 'replyfloor/'. $value['attachment'];
}
}
C::t('#'.$plugin['identifier'].'#'.$plugin['identifier'].'_message')->update_by_id($message['id'], array('attachment' => implode("\t", $attachment)));
}
}
}else{
cpmsg(lang('plugin/'.$plugin['identifier'], 'operate_not_check'), '', 'error');
}
cpmsg(lang('plugin/'.$plugin['identifier'], 'attach_updatesucceed'), "action=$pluginurl&unused=$unused", 'succeed');
}
}
?>