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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

『hack』提问贴插件 for dz 2.5sp1(答谢多人的版本在整理测试中)[原创]

[复制链接]
flyinleaf 发表于 2005-7-3 12:55:12 | 显示全部楼层 |阅读模式
作品名称:提问贴插件

作品作者:flyinleaf

功能简介:除正常贴,投票贴外,增加一种提问贴,发贴人可填写悬赏并扣除法帖人2倍悬赏的金币,法帖人采纳答案后,返回一半,并将悬赏金送到被采纳人手中,有短信通知。

适用版本:Dz 2.5/sp1 需要完美银行插件(要求cdb_members下有money列)

修改程序列表 : config.php,forumdisplay.php,viewthread.php,newthread.php,editpost.php,topicadmin.php,common.php

修改模版列表 : forumdisplay.htm,viewthread.htm,post_newthread.htm,topicadmin_moderate.htm
功能演示地址: http://pcmscs.org/~lovebear/bbs/forumdisplay.php?fid=43&

作品内容:

1-- 数据库升级

CREATE TABLE `asks` (
`tid` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,
`tm` MEDIUMINT( 14 ) UNSIGNED NOT NULL ,
`aid` MEDIUMINT( 8 ) UNSIGNED DEFAULT '0' NOT NULL ,
`aname` VARCHAR( 15 ) NOT NULL
);


2--把压缩包中的文件拷贝到对应文件夹



3--修改下列文件:


config.php


在最后加上

  1. $allowaskforumlist="1,2,3,4";         
  2. //这里用户自行列出允许使用提问贴的论坛id(fid),用','(逗号)分割开(如 1,3,5)
复制代码



common.php

在 ?>前加入


  1. if($fid)
  2. {
  3.     $allowask=0;
  4.     $allowtemp = explode(',',$allowaskforumlist);
  5.     foreach($allowtemp as $allowfid) {
  6.         if ($allowfid==$fid) {$allowask=1;break;}
  7.                        
  8.         }
  9. }

复制代码





forumdisplay.php






查找

  1. while($thread = $db->fetch_array($query)) {
复制代码


下面添加


  1. if($thread['poll']==2){
  2.                 $ttid=$thread['tid'];
  3.                 $conn = $db->query("select * from asks WHERE tid='$ttid'");
  4.                 $ask = $db->fetch_array($conn);
  5.                 $thread[tm]=$ask['tm'];
  6.                 $thread[aname]=$ask['aname'];
  7.                 $thread[answered]=($ask['aid']!='0');
  8.                
  9.         }
复制代码




forumdisplay.htm


查找两处


  1. <!--{if $allowpostpoll}--><a href="post.php?action=newthread&fid=$fid&poll=yes"><img src="{IMGDIR}/poll.gif" border="0"></a><!--{/if}-->
复制代码


后面加上

  1. <!--{if $allowask && $discuz_uid}--><a href="post.php?action=newthread&fid=$fid&poll=ask"><img src="{IMGDIR}/ask.gif" border="0"></a><!--{/if}-->
复制代码



查找



  1. <!--{elseif $thread['poll']}-->
  2.                     <img src="{IMGDIR}/pollsmall.gif" align="absmiddle"> {lang
  3.                     thread_poll}:&nbsp;
  4.                     <!--{/if}-->
  5.                     $thread[attachment]<a href="viewthread.php?tid=$thread[tid]&fpage=$page" $thread[highlight]>$thread[subject]</a>
复制代码


改为



  1. <!--{elseif $thread['poll']==1}-->

  2.                     <img src="{IMGDIR}/pollsmall.gif" align="absmiddle"> {lang

  3.                     thread_poll}:&nbsp;

  4.                     <!--{elseif $thread['poll']==2}-->

  5.                     <img src="{IMGDIR}/asksmall.gif" align="absmiddle">
  6.                     询问:&nbsp;
  7.                     <!--{/if}-->

  8.                     $thread[attachment]<a href="viewthread.php?tid=$thread[tid]&fpage=$page" $thread[highlight]>$thread[subject]</a>
  9.                 <!--{if $thread['poll']==2}-->
  10.                         <!--{if $thread[answered]}-->
  11.                                 [<font color=blue><b>已被</b><a href="./viewpro.php?username=$thread[aname]">$thread[aname]</a><b>解决</b></font>]
  12.                         <!--{else}-->       
  13.                                 - [悬赏: <font color=orange><b>{$thread[tm]}</b></font><img src="./images/common/money0.gif">]
  14.                         <!--{/if}-->
  15.                 <!--{/if}-->

复制代码












viewthread.php


查找


  1. if($thread['poll']) {
复制代码


改为


  1. if($thread['poll']==1) {
复制代码



查找



  1. unset ($pollopts);
  2.                 }
  3.         }
复制代码


后面加:



  1. elseif($thread['poll']==2) {

  2.         $sql = "select * from asks WHERE tid='$tid'";
  3.         $query = mysql_query ($sql);
  4.         $ask = mysql_fetch_array($query);


  5.         }

复制代码












viewthread.htm

找到


  1. <tr style="color: {HEADERTEXT}"><td class="bold">{lang subject}: $thread[subject]
复制代码


后面加上


  1. <!--{if $thread['poll']==2}-->
  2. - 悬赏金:<font color=orange><b>$ask['tm']</b><img src="./images/common/money0.gif"></font>
  3. <!--{if $ask['aid']!='0'}-->
  4. - [已被<a href="./viewpro.php?username=$ask['aname']">$ask['aname']</a>解决]<!--{/if}--><!--{/if}-->

复制代码



查找

  1. #$post['postcount'] </span>&nbsp;$post[subject]</span><br><br>
复制代码

       


改为



  1. <!--{if $post['postcount']==1}-->
  2. <font color=red>『楼主』</font>
  3. <!--{else}-->   
  4. <font color=black>『第$post['postcount']楼』</font>
  5. <!--{/if}-->
  6. <!--{if $ask['aid']==$post['pid']}-->
  7. <font color=red>【被采纳】</font>
  8. <!--{/if}--></div></span>&nbsp;$post[subject]</span><br><br>
复制代码



查找


  1. &nbsp;<a href="post.php?action=edit&fid=$fid&tid=$tid&pid=$post[pid]&page=$page"><img src="{IMGDIR}/edit.gif" border="0" alt="{lang edit_post}">
复制代码


前面加入


  1.         <!--{if $thread['poll']==2 && $thread['authorid']==$discuz_uid && $ask['aid']==0 && $post['authorid']!=$thread['authorid']}-->&nbsp;<a href="thanks.php?tid=$tid&pid=$post[pid]"><img src="{IMGDIR}/thanks.gif" border="0" alt="{lang reply_quote}"></a><!--{/if}-->
复制代码


查找两处



  1. <!--{if $allowpostpoll}--><a href="post.php?action=newthread&fid=$fid&poll=yes"><img src="{IMGDIR}/poll.gif" border="0"></a><!--{/if}-->
复制代码



后面加


  1. <!--{if $allowask && $discuz_uid}--><a href="post.php?action=newthread&fid=$fid&poll=ask"><img src="{IMGDIR}/ask.gif" border="0"></a><!--{/if}-->

复制代码












newthread.php




查找



  1. $pollopts = addslashes(serialize($pollarray));
复制代码


后面加



  1. } else if($poll == 'ask' && $allowask) {
  2.                
  3.                 $poll = 2;
  4.                 if($thanks<=0)
  5.                 {
  6.                         showmessage("您必须填写一个大于0的悬赏金","post.php?action=newthread&fid=$fid&poll=ask");
  7.                 }

复制代码


查找


  1. $db->query("INSERT INTO $table_threads (fid, creditsrequire, iconid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest, poll, attachment)
  2.                 VALUES ('$fid', '$viewperm', '$iconid', '$discuz_user', '$discuz_uid', '$subject', '$timestamp', '$timestamp', '$discuz_user', '$displayorder', '$digest', '$poll', '".attachtype($last_attach_type, 'id')."')");
  3.         $tid = $db->insert_id();

  4.         if($poll) {
  5.                 $db->query("INSERT INTO $table_polls (tid, pollopts)
  6.                         VALUES ('$tid', '$pollopts')");
  7.         }
复制代码



改为:


  1. if($poll!=2){

  2.         $db->query("INSERT INTO $table_threads (fid, creditsrequire, iconid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest, poll, attachment)

  3.                 VALUES ('$fid', '$viewperm', '$iconid', '$discuz_user', '$discuz_uid', '$subject', '$timestamp', '$timestamp', '$discuz_user', '$displayorder', '$digest', '$poll', '".attachtype($last_attach_type, 'id')."')");
  4.        
  5.        
  6.        

  7.         $tid = $db->insert_id();
  8.         }       

  9.         if($poll==1) {

  10.                 $db->query("INSERT INTO $table_polls (tid, pollopts)

  11.                         VALUES ('$tid', '$pollopts')");

  12.         } else if($poll==2) {
  13.                
  14.                 $thank2=2*$thanks;
  15.                 $query = $db->query("SELECT money FROM $table_members WHERE uid='$discuz_uid'");
  16.                 $mem=$db->fetch_array($query);
  17.                 if($mem['money']>=$thank2)
  18.                         {
  19.                         $lastmoney=$mem['money']-$thank2;
  20.                         $db->query("update $table_members set money='$lastmoney' where uid='$discuz_uid'");

  21.                         $db->query("INSERT INTO $table_threads (fid, creditsrequire, iconid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest,                         poll, attachment)

  22.                         VALUES ('$fid', '$viewperm', '$iconid', '$discuz_user', '$discuz_uid', '$subject', '$timestamp', '$timestamp', '$discuz_user', '$displayorder', '$digest', '$poll', '".attachtype($last_attach_type, 'id')."')");
  23.                         $tid = $db->insert_id();

  24.                         $db->query("INSERT INTO asks (tid, tm)
  25.                         VALUES ('$tid', '$thanks')");


  26.        
  27.                         }else{
  28.                                 showmessage("以".$thanks."作悬赏,需要".$thank2."作抵押,您的钱可能不足","post.php?action=newthread&fid=$fid&poll=ask");
  29.                         }
  30.                        
  31.                                
  32.         }


复制代码









post_newthread.htm




查找:

  1. <textarea rows="4" cols="85" name="polloptions" tabindex="5">$polloptions</textarea></td>
  2.         </tr>
  3. <!--{/if}-->
复制代码


后面加入


  1. <!--{if $poll == 'ask' && $allowask}-->        <td bgcolor="{ALTBG1}">悬赏金:</td>        <td bgcolor="{ALTBG2}" class="smalltxt"><input type="text" name="thanks" size="6" value="$thanks"> <input type="hidden" name="poll" value="ask"><font color=red>*系统会暂时扣除双倍金额的抵押,采纳后返回一半金额(此处提交后不允许修改!)</font></tr><!--{/if}-->
复制代码






editpost.php




查找


  1. $db->query("DELETE FROM $table_posts WHERE tid='$tid'");
复制代码


后面加入


  1. $db->query("DELETE FROM asks WHERE tid='$tid'");

复制代码













topicadmin.php


查找


  1. $db->query("DELETE FROM $table_threads WHERE tid IN ($tids)");
  2.                         $db->query("DELETE FROM $table_polls WHERE tid IN ($tids)");
  3.                         $db->query("DELETE FROM $table_posts WHERE tid IN ($tids)");
复制代码


后面加上


  1. $db->query("DELETE FROM asks WHERE tid IN ($tids)");
复制代码


查找


  1. $db->query("DELETE FROM $table_threads WHERE tid='$tid'");
  2.                 $db->query("DELETE FROM $table_posts WHERE tid='$tid'");
复制代码


后面加上


  1. $db->query("DELETE FROM asks WHERE tid='$tid'");
复制代码




topicadmin_moderate.htm

查找

  1. <!--{elseif $thread['poll']}--><img src="{IMGDIR}/pollsmall.gif" align="absmiddle">

  2. {lang thread_poll}:&nbsp;
复制代码



改为

  1. <!--{elseif $thread['poll']==1}--><img src="{IMGDIR}/pollsmall.gif" align="absmiddle">

  2. {lang thread_poll}:&nbsp;
  3.                 <!--{elseif $thread['poll']==2}--><img src="{IMGDIR}/asksmall.gif" align="absmiddle"> 询

  4. 问:&nbsp;
复制代码


以下是netboy_sd朋友帮忙整理的积分悬赏修改法
本插件不使用银行的修改方法:前提按楼主的贴修改完毕;
1、修改/thanks.php 将里面的“money”替换为“credit,全部替换。
2、修改/include/newthread 将里面的“money”替换为“credit,全部替换。
3、找到

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



剪切到下面代码的前面。


  1.    
  2. if($poll!=2){
复制代码



这样就OK了。

[ 本帖最后由 flyinleaf 于 2006-2-12 15:31 编辑 ]
咕咕 发表于 2005-7-3 13:01:30 | 显示全部楼层
沙发。。。哈哈~~~顶~~
回复

使用道具 举报

vairt 发表于 2005-7-3 13:02:06 | 显示全部楼层
不错
呵呵
回复

使用道具 举报

咕咕 发表于 2005-7-3 13:02:06 | 显示全部楼层
绝对支持。。好东西~~~~~~~
回复

使用道具 举报

从儿 发表于 2005-7-3 13:04:16 | 显示全部楼层
有意思
回复

使用道具 举报

xjbl 发表于 2005-7-3 13:38:28 | 显示全部楼层
好东西...顶哟...
回复

使用道具 举报

tigeryang 发表于 2005-7-3 13:44:29 | 显示全部楼层
不错的想法1
回复

使用道具 举报

FreeDZ 发表于 2005-7-3 14:07:44 | 显示全部楼层
见到附件的名称,让我想起原来FD里有这个插件就是这样的功能,,..

但是插件名称不同....偶忘记名字了./
回复

使用道具 举报

PerfectWorks 发表于 2005-7-3 14:15:58 | 显示全部楼层
有创意
回复

使用道具 举报

PerfectWorks 发表于 2005-7-3 14:17:16 | 显示全部楼层
可以悬赏积分不
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:22 , Processed in 0.026860 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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