【五年6班】 » 知識+ » PHPWind53RC2需要修改的地方
本頁主題: PHPWind53RC2需要修改的地方 7359 人次閱讀 打印 | 加為IE收藏 | 收藏主題 | 上一主題 | 下一主題

wang 【管理員】
終身成就獎 優秀版主獎 特殊貢獻獎 熱心服務獎
頭銜:命裡有時終須有,命中無時莫強求 命裡有時終須有,命中無時莫強求
該用戶目前不在線
級別: 權天使
精華: 15
發帖: 243
榮譽值: 249 點
新湖幣: 337 元
支持度: 0 pts
好評度: 1109 點
在線時間:160(小時)
註冊時間:2005-09-16
最後登錄:2024-04-03

PHPWind53RC2需要修改的地方

本帖被 wang 執行鎖定操作(2007-02-14)
加入
閱讀權限、評分同減、複數購買價格及通知、清空購買名單


/require/readvote.php 增加投票帖統計功能、平均功能、自動選項分數辨識功能(分數:選項提幹)
Copy code
18行
    $votesum  = 0;
    $votetotal = $votetavg = $votehighest = 0;//
    $votedb  = $vt_name = $vt_num = $voteid = $voter = array();[
36行
        $vt_name[$key] = $option[0];
        $vt_num[$key]  = $option[1];
        $votehighest=$votehighest>$vt_num[$key]?$votehighest:$vt_num[$key];//
        $votesum      += $option[1];
        //
        $ifnum=explode(':',$vt_name[$key]);
        if($ifnum[0]){
            $votetotal+=$ifnum[0]*$vt_num[$key];
        }
        //
52行
            //$vote['width'] = floor(500*$vt_num[$key]/($votesum+1));
            $vote['width'] = floor(500*$vt_num[$key]/($votehighest+1));//

63行
    $votesum=count(array_unique($allvoter));
    $voteavg=round($votetotal/$votesum,3);//
人は何かの犠牲無しに何も得ることはできない 
(人如果不付出犧牲的話,就無法得到任何回報)




何かを得るためには同等の代価が必要になる
(若想要得到什麼,就必須付出同等的代價)




それが錬金術における等価交換の原則だ
(這就是練金術中的"等價交換原則")




そのころ僕らは、それが世界の真実だと、信じていた。
(我們深信著這就是世界的真理)

頂端 Posted: 2007-02-14 13:06 | [樓 主]
wang 【管理員】
終身成就獎 優秀版主獎 特殊貢獻獎 熱心服務獎
頭銜:命裡有時終須有,命中無時莫強求 命裡有時終須有,命中無時莫強求
該用戶目前不在線
級別: 權天使
精華: 15
發帖: 243
榮譽值: 249 點
新湖幣: 337 元
支持度: 0 pts
好評度: 1109 點
在線時間:160(小時)
註冊時間:2005-09-16
最後登錄:2024-04-03

複數購買價格、購買通知、清空購買名單、投票獎勵

job.php
Copy code
}elseif($action=='buytopic'){
    $tpcs = array();
    if($pid == 'tpc'){
        $pw_posts = 'pw_tmsgs';
        $tpcs = $db->get_one("SELECT author,authorid,content,buy FROM pw_threads t LEFT JOIN pw_tmsgs tm ON tm.tid=t.tid WHERE t.tid='$tid'");
    }elseif(is_numeric($pid)){
        $pw_posts = GetPtable('N',$tid);
        $tpcs = $db->get_one("SELECT author,authorid,content,buy FROM $pw_posts WHERE pid='$pid' && tid='$tid'");
    }
    !$tpcs && Showmsg('illegal_tid');
    //得到購買的價格
    while($i<10){
        $i++;
        $tpcs['content']=substr($tpcs['content'],strpos($tpcs['content'],'[sell=')+6);
        $sellmoney = substr($tpcs['content'],0,strpos($tpcs['content'],']'));
        $sellmoney = explode(':',$sellmoney);
        if($sellmoney[1]==$buyid){break;}
    }
    //
    list($db_moneyname,)=explode("t",$db_credits);
    if(empty($windid) || $winduid==$tpcs['authorid'] || !is_numeric($sellmoney[0]) || $sellmoney[0]<0){//
        Showmsg('undefined_action');
    }
    $sellmoney = (int)$sellmoney[0];//
    if($sellmoney > 1000){
        $sellmoney = 1000;
    }
    $winddb['money'] < $sellmoney && Showmsg('job_buy_noenough');
    if($tpcs['buy'] && strpos($tpcs['buy'].',',','.$windid.',')!==false){
        Showmsg('job_havebuy');
    }
    //寄出通知
    require_once(R_P.'require/msg.php');
    include_once R_P.'data/bbscache/forum_cache.php';
    $reason="有人以$sellmoney 元購買您的一個帖子(系統自動扣除1成手續費)。[<a href=read.php?fid=$fid&tid=$tid><font color=red>查看</font></a>]n";
    //$message=array($tpcs[author],$tpcs[authorid],"<font color=blue>帖子購買通知</font>",$timestamp,addslashes($reason),'',$windid);
    $message=array($tpcs[author],$winduid,"<font color=blue>帖子購買通知</font>",$timestamp,addslashes($reason),$tpcs[author],$windid);
    writenewmsg($message,1);
    //寄出通知
      $db->update("UPDATE pw_memberdata SET money=money-'$sellmoney' WHERE uid='$winduid'");
    $sellmoney>10 && $sellmoney=$sellmoney*0.9;
    $db->update("UPDATE pw_memberdata SET money=money+'$sellmoney' WHERE uid='$tpcs[authorid]'");   

    $buy=$tpcs['buy'].",".$windid;
    $ifpid= $pid=='tpc'?"":" && pid='$pid'";
    $db->update("UPDATE $pw_posts SET buy='".addslashes($buy)."' WHERE tid='$tid' $ifpid");
    refreshto("read.php?tid=$tid",'operate_success');
}elseif($action=='clearbuyer'){
    if($pid == 'tpc'){
        $db->update("UPDATE pw_tmsgs SET buy='' WHERE tid='$tid'");
    }elseif(is_numeric($pid)){
        $db->update("UPDATE pw_posts SET buy='' WHERE pid='$pid'");
    }
    refreshto("read.php?tid=$tid",'operate_success');
}elseif($votejop=='vote'){
    require_once(R_P.'require/forum.php');
    @extract($db->get_one("SELECT t.fid,t.tid,t.postdate,t.locked,t.ifcheck,tm.content,p.* FROM pw_polls p LEFT JOIN pw_threads t ON p.tid=t.tid LEFT JOIN pw_tmsgs tm ON p.tid=tm.tid WHERE p.tid='$tid'"));//加入tm.content,pw_tmsgs
    /**
    * 得到版塊基本信息,版塊權限驗證
    */
   
    $foruminfo=$db->get_one("SELECT name,f_type,style,password,allowvisit,forumadmin,fupadmin,allowhtm,cms FROM pw_forums WHERE fid='$fid'");
    !$foruminfo && Showmsg('data_error');
    wind_forumcheck($foruminfo);

    /*
    *  獲取管理權限
    */
    if($windid==$manager || admincheck($foruminfo['forumadmin'],$foruminfo['fupadmin'],$windid)){
        $admincheck=1;
    } else{
        $admincheck=0;
    }

    /*
    *用戶組權限驗證
    */
    $gp_allowvote==0 && Showmsg('job_vote_right');
    $v_uid = $windid ? $windid : $onlineip;
    if(!$admincheck && $locked>0){
        Showmsg('job_vote_lock');
    }elseif($state || ($timelimit && $timestamp-$postdate>$timelimit*86400)){
        Showmsg('job_vote_close');
    }

    $votearray = unserialize($voteopts);

    if(!$voteaction){
        foreach($votearray['options'] as $option){
            if(@in_array($v_uid,$option[2])){
                Showmsg('job_havevote');
            }
        }
        //抓取投票獎勵[reward=??]
        if(strpos($content,'[reward=') && strpos($content,']')){
            $votemoney=substr($content,strpos($content,'[reward=')+8);
            $votemoney=substr($votemoney,strpos($votemoney,0),strpos($votemoney,']'));
            $db->update("UPDATE pw_memberdata SET money=money+$votemoney WHERE uid=$winduid");
        //
        }
    }

    if(empty($voteid)){
        Showmsg('job_vote_sel');
    }
    if(count($voteid)>$votearray['multiple'][1]){
        Showmsg('job_vote_num');
    }
    if($voteaction=='modify'){
        if($gp_edittime && ($timestamp-$postdate)>$gp_edittime*60){
            Showmsg('modify_timelimit');
        }elseif(!$modifiable){
            Showmsg('vote_not_modify');
        }
        foreach($votearray['options'] as $key=>$option){
            foreach($option[2] as $vid=>$value){
                if($value==$v_uid){
                    $votearray['options'][$key][1]--;
                    unset($votearray['options'][$key][2][$vid]);
                }
            }
        }
    }
    foreach($voteid as $k=>$id){
        $votearray['options'][(int)$id][1]++;
        $votearray['options'][(int)$id][2][]=$v_uid;
    }
    $voteopts = addslashes(serialize($votearray));
    $db->update("UPDATE pw_polls SET voteopts='$voteopts' WHERE tid='$tid'");
    $db->update("UPDATE pw_threads SET lastpost='$timestamp' WHERE tid='$tid'");
    if($foruminfo['allowhtm']==1){
        if($foruminfo['cms']){
            require_once(R_P.'require/c_buildhtml.php');
            BuildTopicHtml($tid,$foruminfo);
        } else {
            require_once(R_P.'require/template.php');
        }
    }
    empty($j_p) && $j_p="read.php?tid=$tid";
    refreshto($j_p,'operate_success');
}elseif($action=='reward'){

read頁面顯示總分、平均
/template/wind/vote.htm
Copy code
<!--
EOT;
if($tpc_endtime){ print <<<EOT
-->
  至 $tpc_endtime 結束
<!--
EOT;
} print <<<EOT
-->
<!--
EOT;
if($votetotal){ print <<<EOT
-->
  總分:$votetotal 平均:$voteavg
<!--
EOT;
} print <<<EOT
-->
</td></tr></table></div>
人は何かの犠牲無しに何も得ることはできない 
(人如果不付出犧牲的話,就無法得到任何回報)




何かを得るためには同等の代価が必要になる
(若想要得到什麼,就必須付出同等的代價)




それが錬金術における等価交換の原則だ
(這就是練金術中的"等價交換原則")




そのころ僕らは、それが世界の真実だと、信じていた。
(我們深信著這就是世界的真理)

頂端 Posted: 2007-02-14 13:30 | 1 樓
wang 【管理員】
終身成就獎 優秀版主獎 特殊貢獻獎 熱心服務獎
頭銜:命裡有時終須有,命中無時莫強求 命裡有時終須有,命中無時莫強求
該用戶目前不在線
級別: 權天使
精華: 15
發帖: 243
榮譽值: 249 點
新湖幣: 337 元
支持度: 0 pts
好評度: 1109 點
在線時間:160(小時)
註冊時間:2005-09-16
最後登錄:2024-04-03

bbscode.php

修改function sell,hiden的return $code;
增加towhom的函數
人は何かの犠牲無しに何も得ることはできない 
(人如果不付出犧牲的話,就無法得到任何回報)




何かを得るためには同等の代価が必要になる
(若想要得到什麼,就必須付出同等的代價)




それが錬金術における等価交換の原則だ
(這就是練金術中的"等價交換原則")




そのころ僕らは、それが世界の真実だと、信じていた。
(我們深信著這就是世界的真理)

頂端 Posted: 2007-02-14 13:37 | 2 樓
wang 【管理員】
終身成就獎 優秀版主獎 特殊貢獻獎 熱心服務獎
頭銜:命裡有時終須有,命中無時莫強求 命裡有時終須有,命中無時莫強求
該用戶目前不在線
級別: 權天使
精華: 15
發帖: 243
榮譽值: 249 點
新湖幣: 337 元
支持度: 0 pts
好評度: 1109 點
在線時間:160(小時)
註冊時間:2005-09-16
最後登錄:2024-04-03

/require/postmodify.php

//$vote_close = ($state || ($timelimit && $timestamp-$postdate>$timelimit*86400)) ? 1 : 0;
$vote_close = ($state || ($timelimit && $timestamp-$postdate>$timelimit*86400)) && (!$manager) ? 1 : 0;//
創始人取得開關投票權力
人は何かの犠牲無しに何も得ることはできない 
(人如果不付出犧牲的話,就無法得到任何回報)




何かを得るためには同等の代価が必要になる
(若想要得到什麼,就必須付出同等的代價)




それが錬金術における等価交換の原則だ
(這就是練金術中的"等價交換原則")




そのころ僕らは、それが世界の真実だと、信じていた。
(我們深信著這就是世界的真理)

頂端 Posted: 2007-02-14 13:39 | 3 樓
wang 【管理員】
終身成就獎 優秀版主獎 特殊貢獻獎 熱心服務獎
頭銜:命裡有時終須有,命中無時莫強求 命裡有時終須有,命中無時莫強求
該用戶目前不在線
級別: 權天使
精華: 15
發帖: 243
榮譽值: 249 點
新湖幣: 337 元
支持度: 0 pts
好評度: 1109 點
在線時間:160(小時)
註冊時間:2005-09-16
最後登錄:2024-04-03

5.3RC2購買帖子的bug
Copy code
回帖只要買了其中之一,所有的回帖都變成買過了。

修改job.php
$db->update("UPDATE $pw_posts SET buy='".addslashes($buy)."' WHERE tid='$tid'");

改為
$ifpid= $pid=='tpc'?"":" && pid='$pid'";
$db->update("UPDATE $pw_posts SET buy='".addslashes($buy)."' WHERE tid='$tid' $ifpid");



5.3RC2單帖屏蔽的bug
Copy code
屏蔽時未針對主題和內容作特殊字元的轉換,
若回帖內容為使用HTML代碼而且沒有主題時會導致屏蔽操作頁面出錯。
masingle.php
$readdb['subject']=substrs($readdb['subject'],35);
!$readb['subject'] && is_numeric($pid) && $readdb['subject']=substrs($readdb['content'],35);
$readdb['subject']=Char_cv($readdb['subject']);//加上這一行就可以了


[5.3RC2bug]postmodify的頁數算錯
修改帖子后返回的頁面只根據后台設置
$page = floor($article/$db_readperpage)+1;

應該是兼顧使用者的設定才對
if($winddb['p_num']){
    $db_readperpage = $winddb['p_num'];
} elseif($forumset['readnum']){
    $db_readperpage = $forumset['readnum'];
}
$page = floor($article/$db_readperpage)+1;


另外跳轉的地方
refreshto("read.php?tid=$tid&page=$page&toread=1",'enter_thread');

應該直接跳到修改的帖子去才適當
refreshto("read.php?tid=$tid&page=$page&toread=1#$pid",'enter_thread');



[5.3RC2]是否允許發起新投票權限判斷錯誤
Copy code
postnew.php
if($special=='1' && !$foruminfo['allowpost'] && !$admincheck && $gp_allownewvote==0){
    Showmsg('postnew_group_vote');
}elseif($special=='2'){

應為
if($special=='1' && !$admincheck && ($gp_allownewvote==0 || !$foruminfo['allowpost'])){
人は何かの犠牲無しに何も得ることはできない 
(人如果不付出犧牲的話,就無法得到任何回報)




何かを得るためには同等の代価が必要になる
(若想要得到什麼,就必須付出同等的代價)




それが錬金術における等価交換の原則だ
(這就是練金術中的"等價交換原則")




そのころ僕らは、それが世界の真実だと、信じていた。
(我們深信著這就是世界的真理)

頂端 Posted: 2007-04-01 20:17 | 4 樓
【五年6班】 » 知識+

Total 0.043476(s) query 11, Time now is:05-17 16:09, Gzip enabled
Powered by PHPWind v5.3 RC2 Certificate Code © 2003-07 PHPWind.com Corporation