Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[转]发帖、删帖加减金钱值后台设定For D25sp1 4.3日整理版

[复制链接]
freddy 发表于 2005-5-9 10:43:41 | 显示全部楼层 |阅读模式
插件名称: 发帖、删帖加减金钱值后台设定For D25sp1 4.3日整理版
演示:http://www.51happy365.com/bbs
适用版本: D25sp1
作  者: 地狱死神(dyss)
数据升级:forums表增加两个字段 settings表增加三项内容
修改文件:
/templates/default/admincp.lang.php
/include/post.php
/include/common.php
/include/newthread.php
/include/editpost.php
/include/newreply.php
/topicadmin.php
/admin/forums.php
/admin/settings.php
/templates/default/post_newreply.htm
/templates/default/post_newthread.htm
/templates/default/templates.lang.php
/templates/default/forumdisplay.htm

修改模板: 无
最后发表日期:2005.4.3
功能介绍:由于LFLY1573提供的加减金钱方式太过局限,不适合需要各版进行不同设置的论坛,所以我发布了这个后台版本,此版本可以和后台完美结合,做到和积分方式一样的效果

将原来的发帖,回帖,删帖金钱设置卸载,然后进行如下大量操作

升级数据库1

  1. ALTER TABLE `cdb_forums` ADD `postmoney` TINYINT( 5 ) DEFAULT '-1' NOT NULL ,
  2. ADD `replymoney` TINYINT( 5 ) DEFAULT '-1' NOT NULL ,
  3. ADD `deletedmoney` TINYINT( 5 ) DEFAULT '-1' NOT NULL ;
复制代码

升级数据库2

  1. INSERT INTO `cdb_settings` ( `variable` , `value` )
  2. VALUES ( 'postmoney', '2');
  3. INSERT INTO `cdb_settings` ( `variable` , `value` )
  4. VALUES ( 'replymoney', '1');
  5. INSERT INTO `cdb_settings` ( `variable` , `value` )
  6. VALUES ( 'deletedmoney', '5');
复制代码

1、在..\templates\default\admincp.lang.php查找

  1.         'settings_replycredits_comment' => '作者每发一篇回复增加的积分数',
复制代码

下后面加入

  1. //后台金钱设置 by 地狱死神
  2.         'settings_postmoney' => '发新帖增加金钱:',
  3.         'settings_postmoney_comment' => '作者每发一篇新话题增加的金钱数',
  4.         'settings_replymoney' => '回复增加金钱:',
  5.         'settings_replymoney_comment' => '作者每发一篇回复增加的金钱数',
  6.         'settings_deletedmoney_comment' => '帖子被删除扣除作者积金钱,范围为 0~255 内的整数',
  7.         'settings_deletedmoney' => '被删帖扣除金钱:',
  8.         'forums_edit_postmoney' => '发新帖增加金钱:',
  9.         'forums_edit_postmoney_comment' => '会员在本版发帖所获得的金钱,设置 -1 为按全论坛默认设定',
  10.         'forums_edit_replymoney' => '回复增加金钱:',
  11.         'forums_edit_replymoney_comment' => '会员在本版回复所获得的金钱,设置 -1 为按全论坛默认设定',
  12.         'forums_edit_deletedmoney' => '删贴扣除金钱:',
  13.         'forums_edit_deletedmoney_comment' => '版主删除本版帖子所扣除的金钱,设置 -1 为按全论坛默认设定',
  14. //后台金钱设置 by 地狱死神
复制代码

2、在../include/post.php中查找

  1. function updatemember($operator, $uid, $credits) {
  2.         global $db, $table_members, $table_usergroups, $discuz_uid, $adminid, $groupid, $credit, $timestamp;
  3.         
  4.         $addcredit = $addpost = $newcredit = $newpost = 0;
  5.         
  6.         if(!$uid ) return;

  7.         if($uid == $discuz_uid) {
  8.                 $groupidadd = NULL;
  9.                 $newcredit = $credit + intval("$operator$credits");
  10.                 if($adminid == 0 && $credits <> 0 && !($newcredit % 10)) {
  11.                         $query = $db->query("SELECT groupid FROM $table_usergroups WHERE type='member' AND

  12. '$newcredit'>=creditshigher AND '$newcredit'<creditslower");
  13.                         $groupidadd = ", groupid='".$db->result($query, 0)."'";
  14.                 }
  15.                 $db->query("UPDATE $table_members SET postnum=postnum$operator(1), credit=$newcredit, lastpost='$timestamp'

  16. $groupidadd  WHERE uid='$uid'");
  17.         } else {
  18.                 $member = array();
  19.                 foreach(explode(',', $uid) as $id) {
  20.                         $member[trim($id)]++;
  21.                 }
  22.                 foreach($member as $uid => $posts) {
  23.                         if($credits) {
  24.                                 $query = $db->query("SELECT m.adminid, u.groupid FROM $table_members m
  25.                                                                 LEFT JOIN $table_usergroups u ON (u.creditshigher<>'0' ||

  26. u.creditslower<>'0') AND m.credit$operator$credits*$posts>=u.creditshigher AND

  27. m.credit$operator$credits*$posts<u.creditslower
  28.                                                                 WHERE uid='$uid'");
  29.                                 if($member2 = $db->fetch_array($query)) {
  30.                                         $groupidadd = $member2['adminid'] == 0 ? ", groupid='$member2[groupid]'" : NULL;
  31.                                         $db->query("UPDATE $table_members SET postnum=postnum$operator$posts,

  32. credit=credit$operator($credits*$posts) $groupidadd WHERE uid='$uid'", 'UNBUFFERED');
  33.                                 }
  34.                         } else {
  35.                                 $db->query("UPDATE $table_members SET postnum=postnum$operator$posts WHERE uid='$uid'", 'UNBUFFERED');
  36.                         }
  37.                 }
  38.         }
  39. }
复制代码

替换为

  1. //后台金钱设置 by 地狱死神
  2. function updatemember($operator, $uid, $credits, $usermoneys) {
  3.         global $db, $table_members, $table_usergroups, $discuz_uid, $adminid, $groupid, $credit, $timestamp;
  4.         
  5.         $addcredit = $addpost = $newcredit = $newpost = $newmoney =0;

  6.         $newmoney = intval("$usermoneys");
  7.         
  8.         if(!$uid ) return;

  9.         if($uid == $discuz_uid) {
  10.                 $groupidadd = NULL;
  11.                 $newcredit = $credit + intval("$operator$credits");
  12.                 if($adminid == 0 && $credits <> 0 && !($newcredit % 10)) {
  13.                         $query = $db->query("SELECT groupid FROM $table_usergroups WHERE type='member' AND  
  14. '$newcredit'>=creditshigher AND '$newcredit'<creditslower");
  15.                         $groupidadd = ", groupid='".$db->result($query, 0)."'";
  16.                 }
  17.                 $db->query("UPDATE $table_members SET postnum=postnum$operator(1), credit=$newcredit, lastpost='$timestamp'  
  18. $groupidadd, money=money$operator$newmoney  WHERE uid='$uid'");
  19.         } else {
  20.                 $member = array();
  21.                 foreach(explode(',', $uid) as $id) {
  22.                         $member[trim($id)]++;
  23.                 }
  24.                 foreach($member as $uid => $posts) {
  25.                         if($credits) {
  26.                                 $query = $db->query("SELECT m.adminid, u.groupid FROM $table_members m
  27.                                                                 LEFT JOIN $table_usergroups u ON (u.creditshigher<>'0' ||  
  28. u.creditslower<>'0') AND m.credit$operator$credits*$posts>=u.creditshigher AND  
  29. m.credit$operator$credits*$posts<u.creditslower
  30.                                                                 WHERE uid='$uid'");
  31.                                 if($member2 = $db->fetch_array($query)) {
  32.                                         $groupidadd = $member2['adminid'] == 0 ? ", groupid='$member2[groupid]'" : NULL;
  33.                                         $db->query("UPDATE $table_members SET postnum=postnum$operator$posts,  
  34. credit=credit$operator($credits*$posts) $groupidadd WHERE uid='$uid'", 'UNBUFFERED');
  35.                                 }
  36.                         } else {
  37.                                 $db->query("UPDATE $table_members SET postnum=postnum$operator$posts,  
  38. money=money$operator$newmoney WHERE uid='$uid'", 'UNBUFFERED');
  39.                         }
  40.                 }
  41.         }
  42. }
  43. //后台金钱设置 by 地狱死神
复制代码

3、在../include/common.php查找

  1. m.regdate
复制代码

在后面加上(如果已有这样的修改就不用再加)

  1. , m.money AS usermoney, m.bank AS userbank, m.bankstatus AS bankstatus
复制代码

4、在../include/newthread.php查找

  1.         updatemember('+', $discuz_uid, $postcredits,);
复制代码

替换成

  1. //后台金钱设置 by 地狱死神
  2.         updatemember('+', $discuz_uid, $postcredits, $postmoney);
  3. //后台金钱设置 by 地狱死神
复制代码

注意:如果要改成银行冻结后不再加分,则改成

  1. //后台金钱设置 by 地狱死神
  2. if($bankstatus>=0) {
  3. updatemember('+', $discuz_uid, $postcredits, $postmoney);
  4. }else{
  5. updatemember('+', $discuz_uid, $postcredits);
  6. }
  7. //后台金钱设置 by 地狱死神
复制代码

5、在../include/newreply.php查找

  1.         updatemember('+', $discuz_uid, $replycredits);
复制代码

替换成

  1. //后台金钱设置 by 地狱死神
  2.         updatemember('+', $discuz_uid, $replycredits, $replymoney);
  3. //后台金钱设置 by 地狱死神
复制代码

注意:如果要改成银行冻结后不再加分,则改成

  1. //后台金钱设置 by 地狱死神
  2. if($bankstatus>=0) {
  3. updatemember('+', $discuz_uid, $replycredits, $replymoney);
  4. }else{
  5. updatemember('+', $discuz_uid, $replycredits);
  6. }
  7. //后台金钱设置 by 地狱死神
复制代码

6、在../topicadmin.php

找到

  1. $tid   = $tid ? $tid :'';
  2. $page  = intval($page);
  3. $fpage = intval($fpage);
复制代码

在下面加入

  1. //后台金钱设置 by 地狱死神
  2. $deletedmoney = $forum['deletedmoney'] != -1 ? $forum['deletedmoney'] : $deletedmoney;
  3. //后台金钱设置 by 地狱死神
复制代码

查找(共三处均要修改)

  1. updatemember('-', $uids, $deletedcredits);
复制代码

替换成

  1. //后台金钱设置 by 地狱死神
  2.         updatemember('-', $uids, $deletedcredits, $deletedmoney);
  3. //后台金钱设置 by 地狱死神
复制代码

7、在../admin/forums.php 查找

  1. showsetting('forums_edit_replycredits', 'replycreditsnew', $forum['replycredits'], 'text');
复制代码

在下面加入

  1. //后台金钱设置 by 地狱死神
  2.                         showsetting('forums_edit_postmoney', 'postmoneynew', $forum['postmoney'], 'text');
  3.                         showsetting('forums_edit_replymoney', 'replymoneynew', $forum['replymoney'], 'text');
  4.                         showsetting('forums_edit_deletedmoney', 'deletedmoneynew', $forum['deletedmoney'], 'text');  
  5. //后台金钱设置 by 地狱死神
复制代码

查找

  1. postcredits='".intval($postcreditsnew)."'
复制代码

在后面加入

  1. ,postmoney='$postmoneynew', replymoney='$replymoneynew', deletedmoney='$deletedmoneynew'
复制代码

8、在../admin/settings.php 查找

  1. showsetting('settings_replycredits', 'settingsnew[replycredits]', $settings['replycredits'], 'text');
复制代码

在下面加入

  1. //后台金钱设置 by 地狱死神
  2.                 showsetting('settings_postmoney', 'settingsnew[postmoney]', $settings['postmoney'], 'text');
  3.                 showsetting('settings_replymoney', 'settingsnew[replymoney]', $settings['replymoney'], 'text');
  4. //后台金钱设置 by 地狱死神
复制代码

查找

  1.                 showsetting('settings_deletedcredits', 'settingsnew[deletedcredits]', $settings['deletedcredits'], 'text');
复制代码

在下面加入

  1. //后台金钱设置 by 地狱死神
  2.                 showsetting('settings_deletedmoney', 'settingsnew[deletedmoney]', $settings['deletedmoney'], 'text');
  3. //后台金钱设置 by 地狱死神
复制代码

查找

  1. if(in_array($key, array('attachimgpost', 'attachrefcheck', 'attachsave', 'attachimgcheck', 'attachsoftdownload', 'useimagemessage', 'attach_max', 'attach_newpost', 'attach_editpost', 'attach_replypost', 'delayreply', 'delayeditpost', 'delaykarma', 'newbiespan', 'topicperpage', 'postperpage','statcacherefresh', 'memberperpage', 'hottopic', 'logincredits', 'postcredits'
复制代码

在后面加入

  1. ,'postmoney','replymoney' , 'deletedmoney'
复制代码

9、在 ../post.php 查找

  1. $postcredits = $forum['postcredits'] != -1 ? $forum['postcredits'] : $postcredits;
  2. $replycredits = $forum['replycredits'] != -1 ? $forum['replycredits'] : $replycredits;
复制代码

在下面加入

  1. //后台金钱设置 by 地狱死神
  2. $postmoney = $forum['postmoney'] != -1 ? $forum['postmoney'] : $postmoney;
  3. $replymoney = $forum['replymoney'] != -1 ? $forum['replymoney'] : $replymoney;
  4. //后台金钱设置 by 地狱死神
复制代码

下面为可选项:(界面相关)

10、在 ../templates/default/forumdisplay.htm 查找

  1. {lang forum_post_credits} {lang credit_title} $postcredits {lang credit_unit} - {lang forum_reply_credits} {lang credit_title} $replycredits {lang credit_unit}
复制代码

替换成

  1. {lang forum_post_credits} {lang credit_title} $postcredits {lang credit_unit} - {lang forum_reply_credits} {lang credit_title} $replycredits {lang credit_unit} - {lang forum_post_moneys} {lang money_title} $postmoney {lang money_unit} - {lang forum_reply_moneys} {lang money_title} $replymoney {lang money_unit}
复制代码

11、在 ../templates/default/templates.lang.php 查找

  1. 'credit_title' => '积分',
  2. 'credit_unit' => '点',
复制代码

在下面加入

  1. //后台金钱设置 by 地狱死神
  2.         'money_title' => '现金',
  3.         'money_unit' => '元',
  4.         'forum_post_moneys' => '发新话题奖励:',
  5.         'forum_reply_moneys' => '发表回复奖励:',
  6. //后台金钱设置 by 地狱死神
复制代码

12、在 ../templates/default/post_newthread.htm 查找


  1. <td colspan="2" class="header">{lang post_newthread}</td>
复制代码

替换成

  1. <td class="header">{lang post_newthread}</td>
  2. <td class="header">{lang forum_post_moneys} {lang money_title} $postmoney {lang money_unit}</td>
复制代码

13、在 ../templates/default/post_newreply.htm中查找


  1. <td colspan="2" class="header">{lang post_newreply}</td>
复制代码

替换成

  1. <td class="header">{lang post_newreply}</td>
  2. <td class="header">{lang forum_reply_moneys} {lang money_title} $replymoney {lang money_unit}</td>
复制代码

[ 本帖最后由 freddy 于 2005-7-7 15:43 编辑 ]
 楼主| freddy 发表于 2005-5-9 10:44:34 | 显示全部楼层
说明

有人需要!我就发出来了!
不过安装前请备份!
我先去自我测试一下!
没把握的不要去安装!
回复

使用道具 举报

 楼主| freddy 发表于 2005-5-9 11:13:15 | 显示全部楼层
录像已做完!
已成功!
请大家放心安装!
我已经自我测试成功!
回复

使用道具 举报

uitg 发表于 2005-5-9 11:14:35 | 显示全部楼层
板大 之前聽說有刪帖的錯誤 不曉得這版有沒有
謝謝~
回复

使用道具 举报

 楼主| freddy 发表于 2005-5-9 11:29:34 | 显示全部楼层
我删贴没有错误!录像里删过!大家请看固顶贴的录像!
回复

使用道具 举报

瘋狂cc 发表于 2005-5-9 15:12:40 | 显示全部楼层

解決刪貼的問題

如果是全新安裝,也就是沒安裝其他插件……就請覆蓋原本檔案吧!怕麻煩插件全重裝也行…

注意:要配合安裝〔删帖扣分依主题及回复得分〕 //Polo!,覆蓋的三個文件都不必改……

前臺操作批量刪貼、編輯刪貼,完全可以依照得多少刪多少扣除……積分和金錢都一樣;
刪除的金錢或積分後台可以設置喔…

topicadmin.php

  1. <?php

  2. /*
  3. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4. :: [DISCUZ!]  Crossday Discuz! Board                                    ::
  5. :: (c) 2001-2005 Comsenz Technology Ltd (www.discuz.com)                ::
  6. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. :: Author:  Crossday (tech@discuz.com) Cnteacher (cnteacher@discuz.com) ::
  8. :: Version: 2.5F   2004/10/01 05:15                                     ::
  9. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  10. */
  11. //fix:  BY pk0909
  12. /*
  13. 1 對分割后的主題缺少html轉義處理
  14. 2 跳轉的url參數問題
  15. 3 批量刪除主題時,沒有刪除對應附件
  16. */

  17. require './include/common.php';
  18. require_once DISCUZ_ROOT.'./include/post.php';

  19. $discuz_action = 151;

  20. $tid   = $tid ? $tid :'';
  21. $page  = intval($page);
  22. $fpage = intval($fpage);

  23. //〔刪帖扣分依主題及回復得分〕 加入下面兩行
  24. $postcredits = $forum['postcredits'] != -1 ? $forum['postcredits'] : $postcredits;
  25. $replycredits = $forum['replycredits'] != -1 ? $forum['replycredits'] : $replycredits;
  26. //後台金錢設置 by 地獄死神
  27. $postmoney = $forum['postmoney'] != -1 ? $forum['postmoney'] : $postmoney;
  28. $replymoney = $forum['replymoney'] != -1 ? $forum['replymoney'] : $replymoney;
  29. //後台金錢設置 by 地獄死神

  30. if($tid) {
  31.         $query = $db->query("SELECT * FROM $table_threads WHERE tid='$tid'");
  32.         $thread = $db->fetch_array($query);
  33.         $thread['subject'] .= $action == 'delthread' ? ", etc." : NULL;
  34. }

  35. if($forum['type'] == 'forum') {
  36.         $navigation = "&raquo; <a href="forumdisplay.php?fid=$fid&page=$fpage">$forum[name]</a> &raquo; <a href="viewthread.php?tid=$tid">$thread[subject]</a> ";
  37.         $navtitle = ' - '.strip_tags($forum['name']).' - '.$thread['subject'];
  38. } else {
  39.         $query = $db->query("SELECT name, fid, moderator FROM $table_forums WHERE fid='$forum[fup]'");
  40.         $fup = $db->fetch_array($query);
  41.         $navigation = "&raquo; <a href="forumdisplay.php?fid=$fup[fid]">$fup[name]</a> &raquo; <a href="forumdisplay.php?fid=$fid&page=$fpage">$forum[name]</a> &raquo; <a href="viewthread.php?tid=$tid">$thread[subject]</a> ";
  42.         $navtitle = ' - '.strip_tags($fup['name']).' - '.strip_tags($forum['name']).' - '.$thread['subject'];
  43. }

  44. if(!$discuz_user || !$discuz_pw || !modcheck($discuz_user)) {
  45.         showmessage('admin_nopermission', NULL, 'HALTED');
  46. }

  47. $fupadd = $fup ? "OR (fid='$fup[fid]' && type<>'group')" : NULL;

  48. if($action == 'moderate') {
  49.         if(!is_array($moderate) || !count($moderate)) {
  50.                 showmessage('admin_moderate_nothread');
  51.         }elseif(!$operation){
  52.                 showmessage('admin_moderate_nooperation');
  53.         }
  54.         $tids = implode_ids($moderate);
  55.         $query = $db->query("SELECT * FROM $table_threads WHERE tid IN($tids) ");
  56.         if(!submitcheck('moderatesubmit')){
  57.                 $threadlist = array();
  58.                 while($thread = $db->fetch_array($query)) {
  59.                         if($thread['fid'] == $fid){
  60.                                 $thread['lastposterenc'] = rawurlencode($thread['lastposter']);
  61.                                 if($thread['attachment']) {
  62.                                         require_once DISCUZ_ROOT.'./include/attachment.php';
  63.                                         $thread['attachment'] = attachtype($thread['attachment']).' ';
  64.                                 } else {
  65.                                         $thread['attachment'] = '';
  66.                                 }
  67.                                 $thread[subject] = cutstr($thread[subject],77);
  68.                                 $thread['dateline'] = gmdate($dateformat, $thread['dateline'] + $timeoffset * 3600);
  69.                                 $thread['lastpost'] = gmdate("$dateformat $timeformat", $thread['lastpost'] + $timeoffset * 3600);
  70.                                 $threadlist[] = $thread;
  71.                         }
  72.                 }
  73.                
  74.                 if(!$threadlist) showmessage('admin_moderate_nothread');

  75.                 if($operation == 'move') {
  76.                         require_once DISCUZ_ROOT.'./include/forum.php';
  77.                         $forumselect = forumselect();
  78.                 }
  79.                 include template('topicadmin_moderate');
  80.        
  81.         }else{
  82.        
  83.                 if($operation == 'move' && $allowmove) {
  84.                         if(!$moveto) {
  85.                                 showmessage('admin_move_invalid');
  86.                         }

  87.                         accesscheck($query);

  88.                         $displayorderadd = !$adminglobal ? ", displayorder='0'" : NULL;

  89.                         $db->query("UPDATE $table_threads SET fid='$moveto' $displayorderadd WHERE tid IN($tids)");
  90.                         $db->query("UPDATE $table_posts SET fid='$moveto' WHERE tid IN($tids) ");

  91.                         if ($forum['type'] == 'sub') {
  92.                                 $query= $db->query("SELECT fup FROM $table_forums WHERE fid='$fid' LIMIT 1");
  93.                                 $fup = $db->result($query, 0);
  94.                                 updateforumcount($fup);
  95.                         }
  96.                         modlog();
  97.                         updateforumcount($moveto);
  98.                         updateforumcount($fid);
  99.                         showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$page");

  100.                 }elseif($operation == 'stick' && $allowtop){
  101.                         accesscheck($query);
  102.                         if($level < 0 || $level > 3) {
  103.                                 showmessage('undefined_action');
  104.                         }
  105.                         $db->query("UPDATE $table_threads SET displayorder='$level' WHERE tid IN ($tids)");
  106.                         modlog();
  107.                         showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$page");

  108.                 }elseif($operation == 'delete' && $allowdelpost) {
  109.                         accesscheck($query);
  110.                         //〔刪帖扣分依主題及回復得分〕 加入下面一行
  111.       $tuids = $tcomma = '';
  112.                         $uids = $comma = '';
  113.                         //〔刪帖扣分依主題及回復得分〕 開始
  114.             $query = $db->query("SELECT authorid FROM $table_threads WHERE tid IN ($tids)");
  115.             while($post = $db->fetch_array($query)) {
  116.                 $tuids .= "$tcomma$post[authorid]";
  117.                 $tcomma = ',';
  118.             }
  119.             updatemember_mark('-', $tuids, ($postcredits-$replycredits), ($postmoney-$replymoney));
  120. //〔刪帖扣分依主題及回復得分〕 終止
  121.                         $haveattach = 0;
  122.                         $query = $db->query("SELECT authorid ,aid FROM $table_posts WHERE tid IN ($tids)");
  123.                         while($post = $db->fetch_array($query)) {
  124.                                 $uids .= "$comma$post[authorid]";
  125.                                 $comma = ',';
  126.                                 if ($post['aid']) $haveattach++;
  127.                         }
  128.                         //updatemember('-', $uids, $deletedcredits);
  129.                         updatemember('-', $uids, $replycredits, $replymoney);

  130.                         if ($haveattach){
  131.                                 $query = $db->query("SELECT attachment FROM $table_attachments WHERE tid IN ($tids)");
  132.                                 while($attach = $db->fetch_array($query)) {
  133.                                         @unlink(DISCUZ_ROOT.'./'.$attachdir.'/'.$attach['attachment']);
  134.                                 }
  135.                                 $db->query("DELETE FROM $table_attachments WHERE tid IN ($tids)");
  136.                         }
  137.                        
  138.                         $db->query("DELETE FROM $table_threads WHERE tid IN ($tids)");
  139.                         $db->query("DELETE FROM $table_polls WHERE tid IN ($tids)");
  140.                         $db->query("DELETE FROM $table_posts WHERE tid IN ($tids)");

  141.                         updateforumcount($fid);

  142.                         modlog();
  143.                         showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$page");

  144.                 }elseif($operation == 'close' && $allowclose){
  145.                         accesscheck($query);
  146.                         $close = $type ? 1 : 0;
  147.                         $db->query("UPDATE $table_threads SET closed='$close' WHERE tid in($tids)");
  148.                         modlog();
  149.                         showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$page");

  150.                 }elseif($operation == 'digest' && $allowdigest){
  151.                         if($level < 0 || $level > 3) {
  152.                                 showmessage('undefined_action', NULL, 'HALTED');
  153.                         }
  154.                         while($thread = $db->fetch_array($query)) {
  155.                                 if ($thread['fid'] == $fid && $thread['digest']<>$level){
  156.                                         $digest_mark=($level-intval($thread['digest']))*$digestcredits;
  157.                                         $db->query("UPDATE $table_threads SET digest='$level' WHERE tid='$thread[tid]'");
  158.                                         if($digest_mark && $discuz_uid != $thread[authorid]) {
  159.                                                 $db->query("UPDATE $table_members SET credit=credit".($digest_mark > 0 ? '+' : '')."$digest_mark WHERE uid='$thread[authorid]'");
  160.                                         }
  161.                                 }
  162.                         }
  163.                         modlog();
  164.                         showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$page");
  165.                 }else{
  166.                         showmessage('admin_nopermission', NULL, 'HALTED');
  167.                 }
  168.         }

  169. } elseif($action == 'delpost' && $allowdelpost) {

  170.         if(!is_array($delete) || !count($delete)) {
  171.                 showmessage('admin_delpost_invalid');
  172.         }

  173.         if(!submitcheck('delpostsubmit')) {

  174.                 $query = $db->query("SELECT COUNT(*) FROM $table_posts WHERE tid='$tid'");
  175.                 if(count($delete) < $db->result($query, 0)) {

  176.                         $deleteid = '';
  177.                         foreach($delete as $id) {
  178.                                 $deleteid .= '<input type="hidden" name="delete[]" value="'.$id.'">';
  179.                         }

  180.                         include template('topicadmin_delpost');
  181.                        
  182.                 } else {
  183.                         header("Location: {$boardurl}topicadmin.php?action=delete&fid=$fid&tid=$tid&page=$page&fpage=$fpage");
  184.                 }

  185.         } else {

  186.                 $pids = implode_ids( $delete );

  187.                 $uids = $comma = '';
  188.                 $actionpost = $totalpost = $aids = 0;
  189.                 $query = $db->query("SELECT pid, authorid, aid FROM $table_posts WHERE tid='$tid'");
  190.                 $totalpost = $db->num_rows($query);
  191.                 while($post = $db->fetch_array($query)) {
  192.                         if (in_array($post[pid], $delete)){
  193.                                 $uids .= "$comma$post[authorid]";
  194.                                 $comma = ',';
  195.                                 $actionpost ++;
  196.                                 if ($post['aid']) $aids .=','.$post[pid];
  197.                         }
  198.                 }

  199.                 if ($actionpost < 1) {
  200.                         showmessage('admin_delpost_invalid');
  201.                 }elseif($actionpost <> count($delete)){
  202.                         showmessage('admin_moderate_accesserror', NULL, 'HALTED');
  203.                 }elseif($actionpost >= $totalpost ){
  204.                         header("Location: {$boardurl}topicadmin.php?action=delete&fid=$fid&tid=$tid&page=$page&fpage=$fpage");
  205.                 }
  206.                
  207.                 //updatemember('-', $uids, $deletedcredits);
  208.                 updatemember('-', $uids, $replycredits, $replymoney);
  209.                

  210.                 if ($aids){
  211.                         require_once DISCUZ_ROOT.'./include/attachment.php';
  212.                         $query = $db->query("SELECT pid, attachment, filetype FROM $table_attachments WHERE pid IN ($aids)");
  213.                         while($attach = $db->fetch_array($query)) {
  214.                                         @unlink(DISCUZ_ROOT.'./'.$attachdir.'/'.$attach['attachment']);
  215.                         }
  216.                         $db->query("DELETE FROM $table_attachments WHERE pid IN ($aids)");
  217.                         updatethread_type($tid , $thread['attachment']);
  218.                 }

  219.                 $db->query("DELETE FROM $table_posts WHERE pid IN ($pids)");
  220.                 updatethreadcount($tid);
  221.                 updateforumcount($fid);

  222.                 modlog();
  223.                 showmessage('admin_succeed', "viewthread.php?tid=$tid&page=$page&fpage=$fpage");

  224.         }

  225. } elseif($action == 'highlight' && $allowhighlight) {
  226.         if(!submitcheck('highlightsubmit')) {

  227.                 $string = sprintf('%02d', $thread['highlight']);
  228.                 $stylestr = sprintf('%03b', $string[0]);

  229.                 for($i = 1; $i <= 3; $i++) {
  230.                         $stylecheck[$i] = $stylestr[$i - 1] ? 'checked' : NULL;
  231.                 }
  232.                 $colorcheck = array($string[1] => 'checked');
  233.                
  234.                 include template('topicadmin_highlight');

  235.         } else {

  236.                 $stylebin = '';
  237.                 for($i = 1; $i <= 3; $i++) {
  238.                         $stylebin .= empty($highlight_style[$i]) ? '0' : '1';
  239.                 }
  240.                 $highlight_style = bindec($stylebin);

  241.                 if($highlight_style < 0 || $highlight_style > 7 || $highlight_color < 0 || $highlight_color > 8) {
  242.                         showmessage('undefined_action', NULL, 'HALTED');
  243.                 }
  244.                 $db->query("UPDATE $table_threads SET highlight='$highlight_style$highlight_color' WHERE tid='$tid'");

  245.                 modlog();
  246.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  247.         }

  248. } elseif($action == 'digest' && $allowdigest) {
  249.         if(!submitcheck('digestsubmit')) {

  250.                 include template('topicadmin_digest');

  251.         } else {

  252.                 if($level < 0 || $level > 3) {
  253.                         showmessage('undefined_action', NULL, 'HALTED');
  254.                 }
  255.                 $digest_mark=($level-intval($thread['digest']))*$digestcredits;

  256.                 $db->query("UPDATE $table_threads SET digest='$level' WHERE tid='$tid'");

  257.                 if($digest_mark && $discuz_uid != $thread['authorid'] ) {
  258.                         $db->query("UPDATE $table_members SET credit=credit".($digest_mark > 0 ? '+' : '')."$digest_mark WHERE uid='$thread[authorid]'");
  259.                 }
  260.                 modlog();
  261.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  262.         }

  263. } elseif($action == 'recount') {

  264.         $query = $db->query("SELECT COUNT(*) FROM $table_posts WHERE tid='$tid'");
  265.         $replies = $db->result($query, 0) - 1;

  266.         $query  = $db->query("SELECT author, dateline FROM $table_posts WHERE tid='$tid' ORDER BY dateline DESC LIMIT 1");
  267.         $post = $db->fetch_array($query);

  268.         $db->query("UPDATE $table_threads SET replies='$replies', lastpost='$post[dateline]', lastposter='".addslashes($post['author'])."' WHERE tid='$tid'");
  269.         showmessage('admin_succeed', "viewthread.php?tid=$tid&fpage=$fpage");

  270. } elseif($action == 'delete'  && $allowdelpost) {
  271.         if(!submitcheck('deletesubmit')) {

  272.                 include template('topicadmin_delete');

  273.         } else {

  274. //〔刪帖扣分依主題及回復得分〕 開始
  275.         updatemember_mark('-', $thread[authorid], ($postcredits-$replycredits), ($postmoney-$replymoney));
  276. //〔刪帖扣分依主題及回復得分〕 終止
  277.                 $uids = $comma = '';
  278.                 $query = $db->query("SELECT authorid,aid FROM $table_posts WHERE tid='$tid'");
  279.                 $aids = 0;
  280.                 while($post = $db->fetch_array($query)) {
  281.                         $uids .= "$comma$post[authorid]";
  282.                         $comma = ',';
  283.                         if ($post['aid']) $aids++;
  284.                 }
  285.                 //updatemember('-', $uids, $deletedcredits);
  286.                 updatemember('-', $uids, $replycredits, $replymoney);

  287.                 $db->query("DELETE FROM $table_threads WHERE tid='$tid'");
  288.                 $db->query("DELETE FROM $table_posts WHERE tid='$tid'");
  289.                
  290.                 if ($aids){
  291.                         $query = $db->query("SELECT attachment FROM $table_attachments WHERE tid='$tid'");
  292.                         while($attach = $db->fetch_array($query)) {
  293.                                 @unlink(DISCUZ_ROOT.'./'.$attachdir.'/'.$attach['attachment']);
  294.                         }
  295.                         $db->query("DELETE FROM $table_attachments WHERE tid='$tid'");
  296.                 }
  297.                
  298.                 updateforumcount($fid);
  299.                 if ($forum['type'] == 'sub') {
  300.                         updateforumcount($fup['fid']);
  301.                 }

  302.                 modlog();
  303.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  304.         }

  305. } elseif($action == 'close' && $allowclose) {

  306.         if(!submitcheck('closesubmit')) {

  307.                 include template('topicadmin_openclose');

  308.         } else {
  309.                 $openclose = $thread['closed'] ? 0 : 1;
  310.                 $db->query("UPDATE $table_threads SET closed='$openclose' WHERE tid='$tid' AND fid='$fid'");
  311.                 modlog();
  312.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");
  313.         }

  314. } elseif($action == 'move'  && $allowmove) {

  315.         if(!submitcheck('movesubmit')) {

  316.                 require_once DISCUZ_ROOT.'./include/forum.php';

  317.                 $forumselect = forumselect();
  318.                 include template('topicadmin_move');

  319.         } else {

  320.                 if(!$moveto) {
  321.                         showmessage('admin_move_invalid');
  322.                 }

  323.                 $displayorderadd = !$adminglobal ? ", displayorder='0'" : NULL;
  324.                 if($type == 'normal') {
  325.                         $db->query("UPDATE $table_threads SET fid='$moveto' $displayorderadd WHERE tid='$tid' AND fid='$fid'");
  326.                         $db->query("UPDATE $table_posts SET fid='$moveto' WHERE tid='$tid' AND fid='$fid'");
  327.                 } else {
  328.                         $db->query("INSERT INTO $table_threads (fid, creditsrequire, iconid, author, authorid, subject, dateline, lastpost, lastposter, views, replies, displayorder, digest, closed, poll, attachment)
  329.                                 VALUES ('$thread[fid]', '$thread[creditsrequire]', '$thread[iconid]', '".addslashes($thread['author'])."', '$thread[authorid]', '$thread[subject]', '$thread[dateline]', '$thread[lastpost]', '$thread[lastposter]', '0', '0', '0', '0', '$thread[tid]', '0', '0')");

  330.                         $db->query("UPDATE $table_threads SET fid='$moveto' $displayorderadd WHERE tid='$tid' AND fid='$fid'");
  331.                         $db->query("UPDATE $table_posts SET fid='$moveto' WHERE tid='$tid' AND fid='$fid'");
  332.                 }

  333.                 if ($forum['type'] == 'sub') {
  334.                         $query= $db->query("SELECT fup FROM $table_forums WHERE fid='$fid' LIMIT 1");
  335.                         $fup = $db->result($query, 0);
  336.                         updateforumcount($fup);
  337.                 }

  338.                 modlog();
  339.                 updateforumcount($moveto);
  340.                 updateforumcount($fid);
  341.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");
  342.         }

  343. } elseif($action == 'top' && $allowtop) {

  344.         if(!submitcheck('topsubmit')) {

  345.                 include template('topicadmin_topuntop');

  346.         } else {

  347.                 if($level < 0 || $level > 3) {
  348.                         showmessage('undefined_action');
  349.                 }
  350.                 $db->query("UPDATE $table_threads SET displayorder='$level' WHERE tid='$tid' AND fid='$fid'");

  351.                 modlog();
  352.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  353.         }

  354. } elseif($action == 'getip' && $allowviewip) {

  355.         require_once DISCUZ_ROOT.'./include/misc.php';

  356.         $query = $db->query("SELECT m.adminid, p.useip FROM $table_posts p
  357.                                 LEFT JOIN $table_members m ON m.uid=p.authorid
  358.                                 WHERE pid='$pid' AND tid='$tid'");
  359.         if(!$member = $db->fetch_array($query)) {
  360.                 showmessage('thread_nonexistence', NULL, 'HALTED');
  361.         } elseif(($member['adminid'] == 1 && $adminid > 1) || ($member['adminid'] == 2 && $adminid > 2)) {
  362.                 showmessage('admin_getip_nopermission', NULL, 'HALTED');
  363.         }

  364.         $member['iplocation'] = convertip($member['useip']);

  365.         include template('topicadmin_getip');

  366. } elseif($action == 'bump') {

  367.         if(!submitcheck('bumpsubmit')) {

  368.                 include template('topicadmin_bump');

  369.         } else {

  370.                 $query = $db->query("SELECT subject, lastposter, lastpost FROM $table_threads WHERE tid='$tid' LIMIT 1");
  371.                 $thread = $db->fetch_array($query);
  372.                 $thread[lastposter] = addslashes($thread['lastposter']);
  373.                 $db->query("UPDATE $table_threads SET lastpost='$timestamp' WHERE tid='$tid' AND fid='$fid'");
  374.                 $db->query("UPDATE $table_forums SET lastpost='$thread[subject]\t$timestamp\t$thread[lastposter]' WHERE fid='$fid' $fupadd");

  375.                 modlog();
  376.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  377.         }

  378. } elseif($action == 'split' && $allowsplit) {

  379.         if(!submitcheck('splitsubmit')) {

  380.                 require_once DISCUZ_ROOT.'./include/discuzcode.php';

  381.                 $replies = $thread['replies'];
  382.                 if($replies <= 0) {
  383.                         showmessage('admin_split_invalid');
  384.                 }

  385.                 $postlist = array();
  386.                 $query = $db->query("SELECT * FROM $table_posts WHERE tid='$tid' ORDER BY dateline");
  387.                 while($post = $db->fetch_array($query)) {
  388.                         $post['message'] = postify($post['message'], $post['smileyoff'], $post['bbcodeoff']);
  389.                         $postlist[] = $post;
  390.                 }

  391.                 include template('topicadmin_split');

  392.         } else {

  393.                 if(!trim($subject)) {
  394.                         showmessage('admin_split_subject_invalid');
  395.                 }
  396.                 $subject = $subject ? dhtmlspecialchars(censor(trim($subject))) :'';

  397.                 $pids = implode_ids( $split );

  398.                 if($pids) {

  399.                         $db->query("INSERT INTO $table_threads (fid, subject) VALUES ('$fid', '$subject')");
  400.                         $newtid = $db->insert_id();

  401.                         $db->query("UPDATE $table_posts SET tid='$newtid' WHERE pid IN ($pids)");
  402.                         $db->query("UPDATE $table_attachments SET tid='$newtid' WHERE pid IN ($pids)");

  403.                         $query = $db->query("SELECT author, authorid, dateline FROM $table_posts WHERE tid='$tid' ORDER BY dateline ASC LIMIT 1");
  404.                         $fpost = $db->fetch_array($query);
  405.                         $db->query("UPDATE $table_threads SET author='$fpost[author]', authorid='$fpost[authorid]', dateline='$fpost[dateline]' WHERE tid='$tid'");

  406.                         $query = $db->query("SELECT author, authorid, dateline FROM $table_posts WHERE tid='$newtid' ORDER BY dateline ASC LIMIT 1");
  407.                         $fpost = $db->fetch_array($query);
  408.                         $db->query("UPDATE $table_threads SET author='$fpost[author]', authorid='$fpost[authorid]', dateline='$fpost[dateline]' WHERE tid='$newtid'");

  409.                         updatethreadcount($tid);
  410.                         updatethreadcount($newtid);
  411.                         updateforumcount($fid);

  412.                         modlog();
  413.                         showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  414.                 } else {
  415.                         showmessage('admin_split_new_invalid');
  416.                 }
  417.         }

  418. } elseif($action == 'merge' && $allowmerge) {

  419.         if(!submitcheck('mergesubmit')) {

  420.                 include template('topicadmin_merge');

  421.         } else {

  422.                 $query = $db->query("SELECT fid, views, replies FROM $table_threads WHERE tid='$othertid'");
  423.                 if(!$other = $db->fetch_array($query)) {
  424.                         showmessage('admin_merge_nonexistence');
  425.                 }
  426.                 if(!$adminglobal && $other['fid'] != $forum['fid']) {
  427.                         showmessage('admin_merge_invalid');
  428.                 }

  429.                 $other['views'] = intval($other['views']);
  430.                 $other['replies']++;

  431.                 $db->query("UPDATE $table_posts SET tid='$tid' WHERE tid='$othertid'");
  432.                 $postsmerged = $db->affected_rows();

  433.                 $db->query("UPDATE $table_attachments SET tid='$tid' WHERE tid='$othertid'");
  434.                 $db->query("DELETE FROM $table_threads WHERE tid='$othertid'");
  435.                 $db->query("UPDATE $table_threads SET views=views+$other[views], replies=replies+$other[replies] WHERE tid='$tid'");
  436.                
  437.                 if($fid == $other['fid']) {
  438.                         $db->query("UPDATE $table_forums SET threads=threads-1 WHERE fid='$fid' $fupadd");
  439.                 } else {
  440.                         $db->query("UPDATE $table_forums SET threads=threads-1, posts=posts-$postsmerged WHERE fid='$other[fid]'");
  441.                         $db->query("UPDATE $table_forums SET posts=$posts+$postsmerged WHERE fid='$fid' $fupadd");
  442.                 }

  443.                 modlog();
  444.                 showmessage('admin_succeed', "forumdisplay.php?fid=$fid&page=$fpage");

  445.         }

  446. } else {

  447.         showmessage('admin_nopermission', NULL, 'HALTED');

  448. }

  449. function modlog($action = '') {
  450.         global $discuz_user, $groupid, $adminid, $onlineip, $timestamp, $forum, $thread, $operation, $tids;

  451.         if(!$action) {
  452.                 $action = $GLOBALS['action'];
  453.         }
  454.         if (!$thread['tid']) $thread['tid']=intval($GLOBALS['tid']);
  455.         if ($action == 'moderate'){
  456.                 $action .='_'.$operation;
  457.                 $thread[subject] = $tids;
  458.                 $thread[tid] = 0;
  459.         }
  460.         @$fp = fopen(DISCUZ_ROOT.'./forumdata/modslog.php', 'a');
  461.         @flock($fp, 2);
  462.         @fwrite($fp, "$timestamp\t$discuz_user\t$groupid\t$onlineip\t$forum[fid]\t$forum[name]\t$thread[tid]\t$thread[subject]\t$action\n");
  463.         @fclose($fp);
  464. }

  465. function accesscheck($query) {
  466.         global $db,$fid;
  467.         while($thread = $db->fetch_array($query)) {
  468.                 if($thread['fid'] <> $fid){
  469.                         showmessage('admin_moderate_accesserror', NULL, 'HALTED');
  470.                 }
  471.         }
  472. }

  473. ?>
复制代码



.\include\post.php

  1. <?php

  2. /*
  3. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4. :: [DISCUZ!]  Crossday Discuz! Board                                    ::
  5. :: (c) 2001-2005 Comsenz Technology Ltd (www.discuz.com)                ::
  6. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. :: Author:  Crossday (tech@discuz.com) Cnteacher (cnteacher@discuz.com) ::
  8. :: Version: 2.5F   2004/10/01 05:15                                     ::
  9. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  10. */
  11. //fix:  BY pk0909
  12. /*
  13. 1 smilecheck
  14. 2 保存文件名的stripslashes
  15. */

  16. if(!defined('IN_DISCUZ')) {
  17.         exit('Access Denied');
  18. }

  19. function attach_upload() {
  20.         global  $attach, $attach_name, $attach_size, $attach_fname, $attach_type, $attachperm, $allowsetattachperm, $timestamp;
  21.         $success_upload = array();

  22.         if (is_array($attach) && count($attach)){
  23.                 foreach( $attach as $key => $t_attach) {
  24.                         $t_attach_name = daddslashes($attach_name[$key]);
  25.                         $t_attachment = attach_upload_file($t_attach, $t_attach_name, $attach_size[$key], $attach_fname[$key],$attach_type[$key]);
  26.                         if ($t_attachment){
  27.                                 $success_upload[$key] = array (
  28.                                         'filename' => $t_attach_name,
  29.                                         'filetype' => $attach_type[$key],
  30.                                         'filesize' => $attach_size[$key],
  31.                                         'attachment' => $t_attachment,
  32.                                         'creditsrequire' => $allowsetattachperm ? $attachperm[$key] : 0,
  33.                                         'dateline' => $GLOBALS['timestamp'],
  34.                                         );
  35.                         }
  36.                 }
  37.         }elseif($attach){
  38.                 $attach_name = daddslashes($attach_name);
  39.                 $t_attachment = attach_upload_file($attach, $attach_name, $attach_size, $attach_fname,$attach_type);
  40.                 if ($t_attachment){
  41.                         $success_upload[0] =array(
  42.                                 'filename' => $attach_name,
  43.                                 'filetype' => $attach_type,
  44.                                 'filesize' => $attach_size,
  45.                                 'attachment' => $t_attachment,
  46.                                 'creditsrequire' => $allowsetattachperm ? $attachperm : 0,
  47.                                 'dateline' => $GLOBALS['timestamp'],
  48.                         );
  49.                 }
  50.         }
  51.         return $success_upload;
  52. }
  53. function attach_upload_file($attach, $attach_name, $attach_size, $attach_fname, $attach_type) {
  54.         global $db, $table_attachtypes, $extension, $typemaxsize;
  55.         global $attachdir, $maxattachsize, $attachextensions,$attachsave;

  56.         if(!($attach != 'none' && strpos($attach, '..') === FALSE && $attach && trim($attach_name))) {
  57.                 return false;
  58.         }
  59.         $filename  = $attach_name;
  60.         $attach_ext = $extension = strtolower(fileext($attach_name));

  61.         if($attachextensions && @!eregi($attach_ext, $attachextensions)) {
  62.                 showmessage('post_attachment_ext_notallowed');
  63.         }

  64.         if(!$attach_size || ($maxattachsize && $attach_size > $maxattachsize)) {
  65.                 showmessage('post_attachment_toobig');
  66.         }

  67.         $query = $db->query("SELECT maxsize FROM $table_attachtypes WHERE extension='".addslashes($attach_ext)."'");
  68.         if($type = $db->fetch_array($query)) {
  69.                 if($type['maxsize'] == 0) {
  70.                         showmessage('post_attachment_ext_notallowed');
  71.                 } elseif($attach_size > $type['maxsize']) {
  72.                         $typemaxsize = sizecount($type['maxsize']);
  73.                         showmessage('post_attachment_type_toobig');
  74.                 }
  75.         }

  76.         if($attachsave) {
  77.                 switch($attachsave) {
  78.                         case 1: $attach_subdir = 'forumid_'.$GLOBALS['fid']; break;
  79.                         case 2: $attach_subdir = 'ext_'.$extension; break;
  80.                         case 3: $attach_subdir = 'month_'.date('ym'); break;
  81.                         case 4: $attach_subdir = 'day_'.date('ymd'); break;
  82.                 }
  83.                 $attach_dir = DISCUZ_ROOT.'./'.$attachdir.'/'.$attach_subdir;
  84.                 if(!is_dir($attach_dir)) {
  85.                         mkdir($attach_dir, 0777);
  86.                         fclose(fopen($attach_dir.'/index.htm', 'w'));
  87.                 }
  88.                 $attach_fname = $attach_subdir.'/';
  89.         } else {
  90.                 $attach_fname = '';
  91.         }

  92.         $filename = substr($filename, 0, strlen($filename) - strlen($extension) - 1);
  93.         if(preg_match("/[\x7f-\xff]+/s", $filename)) {
  94.                 $filename = str_replace('/', '', base64_encode(substr($filename, 0, 20)));
  95.         }
  96.         if(in_array($attach_ext, array('php', 'php3', 'jsp', 'asp', 'aspx', 'cgi', 'pl'))) {
  97.                 $extension = '_'.$extension;
  98.         }

  99.         $attach_saved = false;
  100.         $attach_fname .= substr($filename, 0, 64).'_'.random(12).'.'.$extension;
  101.         $target = DISCUZ_ROOT.'./'.$attachdir.'/'.stripslashes($attach_fname);

  102.         if(@copy($attach, $target) || (function_exists('move_uploaded_file') && @move_uploaded_file($attach, $target))) {
  103.                 $attach_saved = true;
  104.         }

  105.         if(!$attach_saved && @is_readable($attach)) {
  106.                 @$fp = fopen($attach, 'rb');
  107.                 @flock($fp, 2);
  108.                 @$attachedfile = fread($fp, $attach_size);
  109.                 @fclose($fp);

  110.                 @$fp = fopen($target, 'wb');
  111.                 @flock($fp, 2);
  112.                 if(@fwrite($fp, $attachedfile)) {
  113.                         $attach_saved = true;
  114.                 }
  115.                 @fclose($fp);
  116.         }

  117.         if($attach_saved) {
  118.                 if(in_array($attach_ext, array('jpg', 'gif', 'png', 'swf', 'bmp')) && function_exists('getimagesize') && !getimagesize($target)) {
  119.                         @unlink($target);
  120.                         showmessage('post_attachment_ext_notallowed');
  121.                 } else {
  122.                         return $attach_fname;
  123.                 }
  124.         } else {
  125.                 showmessage('post_attachment_save_error');
  126.         }
  127. }

  128. function checkflood() {
  129.         global $disablepostctrl, $floodctrl, $discuz_uid, $timestamp, $lastpost, $forum;
  130.         if(!$disablepostctrl && $floodctrl) {
  131.                 if($discuz_uid) {
  132.                         if($timestamp - $floodctrl <= $lastpost) {
  133.                                 return TRUE;
  134.                         }
  135.                 } else {
  136.                         $lastpost = explode("\t", $forum['lastpost']);
  137.                         if(($timestamp - $floodctrl) <= $lastpost[1] && $discuz_user == $lastpost[2]) {
  138.                                 return TRUE;
  139.                         }
  140.                 }
  141.         }
  142.         return FALSE;
  143. }

  144. function checkpost() {
  145.         global $subject, $message, $disablepostctrl, $minpostsize, $maxpostsize;
  146.         if(strlen($subject) > 80) {
  147.                 return 'post_subject_toolang';
  148.         }
  149.         if(!$disablepostctrl) {
  150.                 if($maxpostsize && strlen($message) > $maxpostsize) {
  151.                         return 'post_message_toolang';
  152.                 } elseif($minpostsize && strlen(preg_replace("/\[quote\].+?\[\/quote\]/is", '', $message)) < $minpostsize) {
  153.                         return 'post_message_tooshort';
  154.                 }
  155.         }
  156.         return FALSE;
  157. }

  158. function checkbbcodes($message, $bbcodeoff) {
  159.         return !$bbcodeoff && !preg_match("/\[.+\].*\[\/.+\]/s", $message) ? -1 : $bbcodeoff;
  160. }

  161. function checksmilies($message, $smileyoff) {
  162.         $message = stripcslashes($message);
  163.         $smilies = array();
  164.         foreach($GLOBALS['_DCACHE']['smilies'] as $smiley) {
  165.                 $smilies[]= preg_quote($smiley['code'], '/');
  166.         }

  167.         return !$smileyoff && !preg_match('/'.implode('|', $smilies).'/', $message) ? -1 : $smileyoff;
  168. }
  169. /*
  170. function updatemember($operator, $uid, $credits) {
  171.         global $db, $table_members, $table_usergroups, $discuz_uid, $adminid, $groupid, $credit, $timestamp;
  172.        
  173.         $addcredit = $addpost = $newcredit = $newpost =0;
  174.        
  175.         if(!$uid ) return;

  176.         if($uid == $discuz_uid) {
  177.                 $groupidadd = NULL;
  178.                 $newcredit = $credit + intval("$operator$credits");
  179.                 if($adminid == 0 && $credits <> 0 && !($newcredit % 10)) {
  180.                         $query = $db->query("SELECT groupid FROM $table_usergroups WHERE type='member' AND '$newcredit'>=creditshigher AND '$newcredit'<creditslower");
  181.                         $groupidadd = ", groupid='".$db->result($query, 0)."'";
  182.                 }
  183.                 $db->query("UPDATE $table_members SET postnum=postnum$operator(1), credit=$newcredit, lastpost='$timestamp' $groupidadd WHERE uid='$uid'");
  184.         } else {
  185.                 $member = array();
  186.                 foreach(explode(',', $uid) as $id) {
  187.                         $member[trim($id)]++;
  188.                 }
  189.                 foreach($member as $uid => $posts) {
  190.                         if($credits) {
  191.                                 $query = $db->query("SELECT m.adminid, u.groupid FROM $table_members m
  192.                                                                 LEFT JOIN $table_usergroups u ON (u.creditshigher<>'0' || u.creditslower<>'0') AND m.credit$operator$credits*$posts>=u.creditshigher AND m.credit$operator$credits*$posts<u.creditslower
  193.                                                                 WHERE uid='$uid'");
  194.                                 if($member2 = $db->fetch_array($query)) {
  195.                                         $groupidadd = $member2['adminid'] == 0 ? ", groupid='$member2[groupid]'" : NULL;
  196.                                         $db->query("UPDATE $table_members SET postnum=postnum$operator$posts, credit=credit$operator($credits*$posts) $groupidadd WHERE uid='$uid'", 'UNBUFFERED');
  197.                                 }
  198.                         } else {
  199.                                 $db->query("UPDATE $table_members SET postnum=postnum$operator$posts WHERE uid='$uid'", 'UNBUFFERED');
  200.                         }
  201.                 }
  202.         }
  203. }
  204. */
  205. function updatemember($operator, $uid, $credits, $usermoneys) {   
  206.         global $db, $table_members, $table_usergroups, $discuz_uid, $adminid, $groupid, $credit, $timestamp;
  207.         
  208.         $addcredit = $addpost = $newcredit = $newpost = $newmoney =0;

  209.         $newmoney = intval("$usermoneys");
  210.         
  211.         if(!$uid ) return;

  212.         if($uid == $discuz_uid) {
  213.                 $groupidadd = NULL;
  214.                 $newcredit = $credit + intval("$operator$credits");
  215.                 if($adminid == 0 && $credits <> 0 && !($newcredit % 10)) {
  216.                         $query = $db->query("SELECT groupid FROM $table_usergroups WHERE type='member' AND  
  217. '$newcredit'>=creditshigher AND '$newcredit'<creditslower");
  218.                         $groupidadd = ", groupid='".$db->result($query, 0)."'";
  219.                 }
  220. $db->query("UPDATE $table_members SET postnum=postnum$operator(1), credit=$newcredit, lastpost='$timestamp' $groupidadd, money=money$operator$newmoney  WHERE uid='$uid'");
  221.         } else {
  222.                 $member = array();
  223.                 foreach(explode(',', $uid) as $id) {
  224.                         $member[trim($id)]++;
  225.                 }
  226.                
  227.                 foreach($member as $uid => $posts) {
  228.                         if($credits) {
  229.                                 $query = $db->query("SELECT m.adminid, u.groupid FROM $table_members m
  230.                                                                 LEFT JOIN $table_usergroups u ON (u.creditshigher<>'0' ||  
  231. u.creditslower<>'0') AND m.credit$operator$credits*$posts>=u.creditshigher AND  
  232. m.credit$operator$credits*$posts<u.creditslower
  233.                                                                 WHERE uid='$uid'");
  234.                                 if($member2 = $db->fetch_array($query)) {
  235.                                         $groupidadd = $member2['adminid'] == 0 ? ", groupid='$member2[groupid]'" : NULL;
  236.                                         $db->query("UPDATE $table_members SET postnum=postnum$operator$posts, money=money$operator($newmoney*$posts), credit=credit$operator($credits*$posts) $groupidadd WHERE uid='$uid'", 'UNBUFFERED');
  237.                                 }
  238.                         } else {
  239.                            
  240.                                 $db->query("UPDATE $table_members SET postnum=postnum$operator$posts, money=money$operator($newmoney*$posts) WHERE uid='$uid'", 'UNBUFFERED');
  241.                         }
  242.                 }
  243.         }
  244. }
  245. //mark <<
  246. function updatemember_mark($operator, $uid, $credits, $usermoneys) {   
  247.         global $db, $table_members, $table_usergroups, $discuz_uid, $adminid, $groupid, $credit, $timestamp;
  248.         
  249.         $addcredit = $addpost = $newcredit = $newpost = $newmoney =0;

  250.         $newmoney = intval("$usermoneys");
  251.         
  252.         if(!$uid ) return;

  253.         if($uid == $discuz_uid) {
  254.                 $groupidadd = NULL;
  255.                 $newcredit = $credit + intval("$operator$credits");
  256.                 if($adminid == 0 && $credits <> 0 && !($newcredit % 10)) {
  257.                         $query = $db->query("SELECT groupid FROM $table_usergroups WHERE type='member' AND  
  258. '$newcredit'>=creditshigher AND '$newcredit'<creditslower");
  259.                         $groupidadd = ", groupid='".$db->result($query, 0)."'";
  260.                 }
  261. $db->query("UPDATE $table_members SET postnum=postnum$operator(0), credit=$newcredit, lastpost='$timestamp' $groupidadd, money=money$operator$newmoney WHERE uid='$uid'");
  262.         } else {
  263.                 $member = array();
  264.                 foreach(explode(',', $uid) as $id) {
  265.                         $member[trim($id)]++;
  266.                 }
  267.                 foreach($member as $uid => $posts) {
  268.                         if($credits) {
  269.                                 $query = $db->query("SELECT m.adminid, u.groupid FROM $table_members m
  270.                                                                 LEFT JOIN $table_usergroups u ON (u.creditshigher<>'0' ||  
  271. u.creditslower<>'0') AND m.credit$operator$credits*$posts>=u.creditshigher AND  
  272. m.credit$operator$credits*$posts<u.creditslower
  273.                                                                 WHERE uid='$uid'");
  274.                                 if($member2 = $db->fetch_array($query)) {
  275.                                         $groupidadd = $member2['adminid'] == 0 ? ", groupid='$member2[groupid]'" : NULL;
  276.                                         $db->query("UPDATE $table_members SET money=money$operator($newmoney*$posts), credit=credit$operator($credits*$posts) $groupidadd WHERE uid='$uid'", 'UNBUFFERED');
  277.                                 }
  278.                         } else {
  279.                                 $db->query("UPDATE $table_members SET money=money$operator($newmoney*$posts) WHERE uid='$uid'", 'UNBUFFERED');
  280.                         }
  281.                 }
  282.         }
  283. }
  284. //mark >>

  285. function updateforumcount($fid) {
  286.         global $db, $table_threads, $table_forums;
  287.         $query = $db->query("SELECT COUNT(*) AS threadcount, SUM(t.replies)+COUNT(*) AS replycount FROM $table_threads t, $table_forums f WHERE f.fid='$fid' AND t.fid=f.fid");
  288.         extract($db->fetch_array($query));

  289.         $query = $db->query("SELECT subject, lastpost, lastposter FROM $table_threads USE INDEX(displayorder) WHERE fid='$fid' ORDER BY lastpost DESC LIMIT 1");
  290.         $thread = $db->fetch_array($query);
  291.         $thread['subject'] = addslashes($thread['subject']);
  292.         $thread['lastposter'] = addslashes($thread['lastposter']);
  293.         $db->query("UPDATE $table_forums SET posts='$replycount', threads='$threadcount', lastpost='$thread[subject]\t$thread[lastpost]\t$thread[lastposter]' WHERE fid='$fid'", 'UNBUFFERED');
  294. }

  295. function updatethreadcount($tid) {
  296.         global $db, $table_threads, $table_posts;
  297.         $query = $db->query("SELECT COUNT(*) FROM $table_posts WHERE tid='$tid'");
  298.         $replycount = $db->result($query, 0) - 1;
  299.         if($replycount < 0) {
  300.                 $db->query("DELETE FROM $table_threads WHERE tid='$tid'");
  301.                 $db->query("DELETE FROM $table_polls WHERE tid='$tid'");
  302.                 return;
  303.         }
  304.         $query = $db->query("SELECT author, dateline FROM $table_posts WHERE tid='$tid' ORDER BY dateline DESC LIMIT 1");
  305.         $lastpost = $db->fetch_array($query);
  306.         $lastpost['author'] = addslashes($lastpost['author']);
  307.         $db->query("UPDATE $table_threads SET replies='$replycount', lastposter='$lastpost[author]', lastpost='$lastpost[dateline]' WHERE tid='$tid'", 'UNBUFFERED');
  308. }

  309. ?>
复制代码


.\include\editpost.php

  1. <?

  2. /*
  3. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4. :: [DISCUZ!]  Crossday Discuz! Board                                    ::
  5. :: (c) 2001-2005 Comsenz Technology Ltd (www.discuz.com)                ::
  6. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. :: Author:  Crossday (tech@discuz.com) Cnteacher (cnteacher@discuz.com) ::
  8. :: Version: 2.5F   2004/10/01 05:15                                     ::
  9. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  10. */

  11. //fix:  BY pk0909
  12. /*
  13. 1 編輯附件中,右邊的附件鏈接如果設了防盜鏈,就不能點擊了
  14. 2 圖標排列問題
  15. 3 主題圖標更新問題
  16. 4 附件數量限制問題
  17. */

  18. if(!defined('IN_DISCUZ')) {
  19.         exit('Access Denied');
  20. }

  21. $discuz_action = 13;

  22. $query = $db->query("SELECT pid FROM $table_posts WHERE tid='$tid' ORDER BY dateline LIMIT 1");
  23. $isfirstpost = $db->result($query, 0) == $pid ? 1 : 0;

  24. $query = $db->query("SELECT m.adminid, p.authorid, p.dateline, p.aid, p.dateline FROM $table_posts p LEFT JOIN $table_members m ON m.uid=p.authorid WHERE pid='$pid' AND tid='$tid' AND fid='$fid'");
  25. $orig = $db->fetch_array($query);
  26. $isorigauthor = $discuz_uid && $discuz_uid == $orig['authorid'];
  27. $alloweditpost = $alloweditpost && !(in_array($orig['adminid'], array(1, 2, 3)) && $adminid > $orig['adminid']) ? 1 : 0;

  28. if((!$ismoderator || !$alloweditpost) && !$isorigauthor) {
  29.         showmessage('post_edit_nopermission', NULL, 'HALTED');
  30. }

  31. if(!submitcheck('editsubmit')) {

  32.         $icons = '';
  33.         if(is_array($_DCACHE['icons']) && $isfirstpost) {
  34.                 $key = 1;
  35.                 foreach($_DCACHE['icons'] as $id => $icon) {
  36.                         $icons .= ' <input type="radio" name="iconid" value="'.$id.'" '.($thread['iconid'] == $id ? 'checked' : '').'><img src="'.SMDIR.'/'.$icon.'">';
  37.                         $icons .= !(++$key % 10) ? '<br>' : '';
  38.                 }
  39.         }

  40.         $query = $db->query("SELECT * FROM $table_posts WHERE pid='$pid' AND tid='$tid' AND fid='$fid'");
  41.         $postinfo = $db->fetch_array($query);

  42.         if($delayeditpost && ($timestamp -$postinfo['dateline'] >$delayeditpost) && !$ismoderator ) {
  43.                 showmessage('post_edit_timeout', NULL, 'HALTED');
  44.         }

  45.         $usesigcheck = $postinfo['usesig'] ? 'checked="checked"' : NULL;
  46.         $urloffcheck = $postinfo['parseurloff'] ? 'checked="checked"' : NULL;
  47.         $smileyoffcheck = $postinfo['smileyoff'] == 1 ? 'checked="checked"' : NULL;
  48.         $codeoffcheck = $postinfo['bbcodeoff'] == 1 ? 'checked="checked"' : NULL;

  49.         if($alloweditpoll && $thread['poll']) {
  50.                 $query = $db->query("SELECT pollopts FROM $table_polls WHERE tid='$tid'");
  51.                 $polloptions = unserialize($db->result($query, 0));
  52.                 for($i = 0; $i < count($polloptions['options']); $i++) {
  53.                         $polloptions['options'][$i][0] = htmlspecialchars(stripslashes($polloptions['options'][$i][0]))."\n";
  54.                 }
  55.         } else {
  56.                 $polloptions = '';
  57.         }

  58.         if($allowpostattach) {
  59.                 if($postinfo['aid']) {
  60.                         require_once DISCUZ_ROOT.'./include/attachment.php';
  61.                         $attachquery = $db->query("select * from $table_attachments where pid = '$postinfo[pid]' ORDER BY  aid");
  62.                         while($attaches = $db->fetch_array($attachquery)) {
  63.                                 $extension = strtolower(fileext($attaches['filename']));
  64.                                 $attaches['attachicon'] = attachtype($extension."\t".$attaches['filetype']);
  65.                                 $attaches['attachsize'] = sizecount($attaches['filesize']);
  66.                                 $attaches['dateline'] =        $attaches['dateline']?gmdate("$dateformat $timeformat", $attaches['dateline'] + $timeoffset * 3600):gmdate("$dateformat $timeformat", $orig['dateline'] + $timeoffset * 3600);
  67.                                 $attaches[checkid] = substr(md5($attaches['filesize']),0,5);
  68.                                 $postinfo[attach_list][] = $attaches;
  69.                         }
  70.                 }
  71.         }

  72.         $postinfo['subject'] = str_replace('"', """, $postinfo['subject']);
  73.         $postinfo['message'] = dhtmlspecialchars($postinfo['message']);
  74.         $postinfo['message'] = preg_replace("/\n{2}\[\[i\] Last edited by .+? on .+? at .+? \[\/i\]\]$/s", '', $postinfo['message']);
  75.         if($previewpost) {
  76.                 $postinfo['message'] = $message;
  77.         }
  78.        
  79.         $multiattach = $allowpostattach && $attach_editpost ? array_fill(1,$attach_editpost,'1'):0;

  80.         include template('post_editpost');

  81. } else {

  82.         if( $editmethord == 'post' && !$delete ) {

  83.                 if($post_invalid = checkpost()) {
  84.                         showmessage($post_invalid);
  85.                 }

  86.                 $viewpermadd = ($allowsetviewperm && $isfirstpost) ? "creditsrequire='$viewperm'" : NULL;

  87.                 if($isfirstpost) {
  88.                         if($subject == '' || $message == '') {
  89.                                 showmessage('post_sm_isnull');
  90.                         }

  91.                         $pollopts = '';
  92.                         if($alloweditpoll && $thread['poll'] && trim($polloptions)) {
  93.                                 $query = $db->query("SELECT pollopts FROM $table_polls WHERE tid='$tid'");
  94.                                 $pollarray = unserialize($db->result($query, 0));

  95.                                 $optsdeleted = 0;
  96.                                 $pollarray['max'] = 0;
  97.                                 foreach($polloptions as $key => $option) {
  98.                                         if(trim($option)) {
  99.                                                 $pollarray['options'][$key][0] = $option;
  100.                                                 if($pollarray['options'][$key][1] > $pollarray['max']) {
  101.                                                         $pollarray['max'] = $pollarray['options'][$key][1];
  102.                                                
  103.                                                 }
  104.                                         } else {
  105.                                                 $optsdeleted = 1;
  106.                                                 $pollarray['total'] -= $pollarray['options'][$key][1];
  107.                                                 unset($pollarray['options'][$key]);
  108.                                         }
  109.                                 }

  110.                                 if($optsdeleted) {
  111.                                         $newoptions = array();
  112.                                         foreach($pollarray['options'] as $option) {
  113.                                                 $newoptions[] = $option;
  114.                                         }
  115.                                         $pollarray['options'] = $newoptions;
  116.                                         unset($newoptions);
  117.                                 }

  118.                                 $pollarray['multiple'] = $multiplepoll;
  119.                                 $pollopts = addslashes(serialize($pollarray));
  120.                         }

  121.                         $db->query("UPDATE $table_threads SET iconid='$iconid', subject='$subject' WHERE tid='$tid'", 'UNBUFFERED');
  122.                         if($pollopts) {
  123.                                 $db->query("UPDATE $table_polls SET pollopts='$pollopts' WHERE tid='$tid'", 'UNBUFFERED');
  124.                         }
  125.                 } else {
  126.                         if($subject == '' && $message == '') {
  127.                                 showmessage('post_sm_isnull');
  128.                         }
  129.                 }

  130.                 if($editedby && ($timestamp - $orig['dateline']) > 60 && $adminid != 1){
  131.                         $editdate = gmdate($_DCACHE['settings']['dateformat'], $timestamp + $timeoffset * 3600);
  132.                         $edittime = gmdate($_DCACHE['settings']['timeformat'], $timestamp + $timeoffset * 3600);
  133.                         $message .= "\n\n[[i] Last edited by $discuz_user on $editdate at $edittime [/i]]";
  134.                 }

  135.                 $bbcodeoff = checkbbcodes($message, $bbcodeoff);
  136.                 $smileyoff = checksmilies($message, $smileyoff);
  137.                
  138.                 $db->query("UPDATE $table_posts SET message='$message', usesig='$usesig', bbcodeoff='$bbcodeoff', parseurloff='$parseurloff',        smileyoff='$smileyoff', subject='$subject' WHERE pid='$pid'");
  139.                 if($viewpermadd) {
  140.                         $db->query("UPDATE $table_threads SET $viewpermadd WHERE tid='$tid'", 'UNBUFFERED');
  141.                 }
  142.                 $modaction = 'editpost';

  143.         }elseif ($editmethord == 'attach') {
  144.                 $post_attaches =array();
  145.                 $post_attaches_count = $delAtt = $del_aids = $uploadCount = 0;
  146.                 if ($orig['aid']){
  147.                         $attachquery = $db->query("select * from $table_attachments where pid ='$pid'");
  148.                         while($att = $db->fetch_array($attachquery)) {
  149.                                 $saveaid = 1;
  150.                                 if(is_array($deleteaids) && count($deleteaids)){
  151.                                         if (in_array($att[aid],$deleteaids)){
  152.                                                 $del_aids .=','.$att[aid];        @unlink(DISCUZ_ROOT.'./'.$attachdir.'/'.$att['attachment']);
  153.                                                 $saveaid = 0;
  154.                                                 $delAtt++;
  155.                                         }
  156.                                 }
  157.                                 if ($saveaid) {
  158.                                         if ($allowsetattachperm && $att[creditsrequire] != $origattachperm["$att[aid]"]){
  159.                                                 $att[creditsrequire] = $origattachperm["$att[aid]"];
  160.                                                 $db->query("UPDATE $table_attachments set creditsrequire='$att[creditsrequire]' WHERE aid='$att[aid]'", 'UNBUFFERED');
  161.                                         }
  162.                                         $post_attaches_count ++;
  163.                                 }
  164.                         }
  165.                         if ($del_aids) {
  166.                                 $db->query("DELETE FROM $table_attachments WHERE pid='$pid' and aid in($del_aids)", 'UNBUFFERED');
  167.                         }
  168.                 }

  169.                 foreach ($attach_name as $tmp) {
  170.                         if (trim($tmp)) $uploadCount++;
  171.                 }

  172.                 if ($attach_max && ($uploadCount + $post_attaches_count) >$attach_max){
  173.                         showmessage('attachment_edit_more', "post.php?action=edit&fid=$fid&tid=$tid&pid=$pid&page=$page");
  174.                 }

  175.                 $post_attaches = attach_upload();
  176.                 if($post_attaches && $allowpostattach) {
  177.                         foreach( $post_attaches as $v) {
  178.                                 $db->query("INSERT INTO $table_attachments (tid, pid ,uid, creditsrequire, filename, filetype, filesize, attachment, dateline, downloads)
  179.                                         VALUES ('$tid','$pid','$discuz_uid', '$v[creditsrequire]', '$v[filename]', '$v[filetype]', '$v[filesize]', '$v[attachment]','$timestamp', '0')");
  180.                                 $post_attaches_count++;
  181.                         }
  182.                         unset($post_attaches, $v);
  183.                 }

  184.                 if ( $delAtt || $uploadCount ){
  185.                         updatethread_type($tid , $thread['attachment']);
  186.                         if($orig['aid'] <> $post_attaches_count){
  187.                                 $db->query("UPDATE $table_posts SET aid='$post_attaches_count' WHERE pid='$pid'", 'UNBUFFERED');
  188.                         }
  189.                 }

  190.                 $modaction = 'editattach';

  191.         } elseif( $editmethord == 'post' && $delete ) {

  192.                 if(!$allowdelpost && !$isorigauthor) {
  193.                         showmessage('post_edit_nopermission', NULL, 'HALTED');
  194.                 }

  195.                 if(!$isfirstpost) {
  196.                         //updatemember('-', $orig['authorid'], $deletedcredits);
  197.                         //〔刪帖扣分依主題及回復得分〕
  198.                         updatemember('-', $orig['authorid'], $replycredits, $replymoney); //mark
  199.                         if ($orig['aid']){
  200.                                 $query = $db->query("SELECT attachment FROM $table_attachments WHERE pid='$pid'");
  201.                                 while($post_attachment = $db->fetch_array($query)) {
  202.                                         @unlink(DISCUZ_ROOT.'./'.$attachdir.'/'.$post_attachment['attachment']);
  203.                                 }
  204.                                 $db->query("DELETE FROM $table_attachments WHERE pid='$pid'");
  205.                                 updatethread_type($tid , $thread['attachment']);
  206.                         }
  207.                         $db->query("DELETE FROM $table_posts WHERE pid='$pid'", 'UNBUFFERED');
  208.                         updateforumcount($fid);
  209.                         updatethreadcount($tid);

  210.                         $modaction = 'delposts';

  211.                 } else {

  212.                         if(!$allowdelpost && $isorigauthor && $thread['replies'] >= 1) {
  213.                                 showmessage('post_edit_nopermission', NULL, 'HALTED');
  214.                         }

  215.                         $uids = $comma = '';
  216.                         $query = $db->query("SELECT authorid FROM $table_posts WHERE tid='$tid'");
  217.                         while($post = $db->fetch_array($query)) {
  218.                                 $uids .= "$comma$post[authorid]";
  219.                                 $comma = ',';
  220.                         }
  221.                         //updatemember('-', $uids, $deletedcredits);
  222.                         updatemember('-', $uids, $postcredits, $postmoney);//mark

  223.                         $db->query("DELETE FROM $table_threads WHERE tid='$tid' OR closed='$tid'", 'UNBUFFERED');
  224.                         $db->query("DELETE FROM $table_polls WHERE tid='$tid'", 'UNBUFFERED');

  225.                         $query = $db->query("SELECT attachment FROM $table_attachments WHERE tid='$tid'");
  226.                         while($thread_attachment = $db->fetch_array($query)) {
  227.                                 @unlink(DISCUZ_ROOT.'./'.$attachdir.'/'.$thread_attachment['attachment']);
  228.                         }

  229.                         $db->query("DELETE FROM $table_attachments WHERE tid='$tid'", 'UNBUFFERED');
  230.                         $db->query("DELETE FROM $table_posts WHERE tid='$tid'");
  231.                         updateforumcount($fid);

  232.                         $modaction = 'delete';

  233.                 }

  234.         }

  235.         if(!$isorigauthor) {
  236.                 @$fp = fopen(DISCUZ_ROOT.'./forumdata/modslog.php', 'a');
  237.                 @flock($fp, 2);
  238.                 @fwrite($fp, "$timestamp\t$discuz_user\t$groupid\t$onlineip\t$forum[fid]\t$forum[name]\t$thread[tid]\t$thread[subject]\t$modaction\n");
  239.                 @fclose($fp);
  240.         }

  241.         if($delete && $isfirstpost) {
  242.                 showmessage('post_edit_delete_succeed', "forumdisplay.php?fid=$fid");
  243.         }elseif($editmethord == 'attach') {
  244.                 showmessage('attachment_edit_succeed', "post.php?action=edit&fid=$fid&tid=$tid&pid=$pid&page=$page");
  245.         } else {
  246.                 showmessage('post_edit_succeed', "viewthread.php?tid=$tid&page=$page#pid$pid");
  247.         }

  248. }

  249. ?>
复制代码

[ Last edited by 瘋狂cc on 2005-5-9 at 15:14 ]
回复

使用道具 举报

annic521 发表于 2005-5-10 11:03:53 | 显示全部楼层
在设置论坛简介的时候出现错误
回复

使用道具 举报

 楼主| freddy 发表于 2005-5-10 11:05:09 | 显示全部楼层
我去试试
回复

使用道具 举报

 楼主| freddy 发表于 2005-5-10 11:06:10 | 显示全部楼层
试过了!
没有错误!
是你文件修改错了!
请对照我的安装录像一步一步检查
回复

使用道具 举报

locly 发表于 2005-5-10 11:32:51 | 显示全部楼层
Warning: Missing argument 4 for updatemember() in d:\zhku\bbs\include\post.php on line 191


出像这样的问题啊,应该如何解决,而且不能实现功能

ps:191行为代码的第一行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-1-22 12:51 , Processed in 0.037383 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表