======================================
HACK名称:新工资系统2.0正式版
适用版本:2.5F
作 者:ninelife
数据升级:有
安装难度:中
演示:http://econline.mireene.com/bbs/plugins.php?p=bank 用户名密码均为test
功能说明:基础型工资系统,符合最广大群众的根本利益。每个用户组都有工资,斑竹根据管理量有附加工资,工资由手工领取,可选择每月初是否有短消息提示,还可在银行查询具体详细信息。
备注1:关于查询量想必大家非常敏感,在银行查询时查询量为3-4,领取工资查询量1,每月初短消息查询量为1
备注2:现在未将工资系统和在线时间合并,原因是考虑到有些用户的不同选择,并不是所有的都想去发工资
备注3:该工资系统采用按照两种模式发放,即“不论在线不在线均有工资”和“按照在线时间发放工资”两种工资发放方式,安装时两种均安装,安装完毕后可在后台选择
=======================================
第一步:准备
请先安装下列插件
在线时间 BY Ninelife
https://discuz.dismall.com/viewthread.php?tid=124596
完美银行 BY LFLY1573
版本较多,在此不给连接,大家自由选择
========================================
第二步:升级数据库
- ALTER TABLE `cdb_usergroups` ADD `groupsalary` INT(10) DEFAULT '0' NOT NULL;
复制代码
- ALTER TABLE `cdb_members` ADD `lastsalarytime` INT(10) DEFAULT '0' NOT NULL;
复制代码
- ALTER TABLE `cdb_members` ADD `lastmonthonline` INT(10) DEFAULT '0' NOT NULL;
复制代码
=========================================
第三步:
NO.1
打开bank.php
1.1
在
下面加入
- @include DISCUZ_ROOT.'./forumdata/cache/cache_plugins.php';
- $salarysetting = $_DCACHE['plugins_settings']['salary'];
复制代码
1.2
在
- $query = $db->query("SELECT COUNT(*) AS count FROM $table_members where (bank+money)>'$allmoney'");
- $allming=$db->result($query, 0) + 1;
- include template('bank');
复制代码
下面加入
- //工资系统 BY Ninelife
- }elseif ($code==11) {
- $monthnow = date(n);
- $bankaction = "工资柜台";
- $query = $db->query("SELECT m.lastsalarytime,m.adminid,m.groupid,m.onlinemonth,m.onlinetime,m.lastmonthonline,u.grouptitle,u.groupsalary FROM $table_members m LEFT JOIN $table_usergroups u ON m.groupid=u.groupid WHERE username='$discuz_user' ");
- while($temp = $db->fetch_array($query)) {
- $onlinetime = $temp['onlinetime'];
- $monthonline = $temp['onlinemonth'];
- $adminid = $temp['adminid'];
- $groupid = $temp['groupid'];
- $grouptitle = $temp['grouptitle'];
- $groupsalary = $temp['groupsalary'];
- if($salarysetting[salarymode]){
- $totalmonth = intval($monthonline *$groupsalary/3600 );
- $totallastmonth = intval ($temp['lastmonthonline'] *$groupsalary/3600);
- }else{
- $totalmonth = $groupsalary;
- $totallastmonth = $groupsalary;
- }
- $lastsalary = $temp[lastsalarytime];
- }
- if( $salarysetting[onlinetimelist] && $salarysetting['salarymode'] ){
- //排行榜开始
- $query = $db->query("SELECT username,onlinetime FROM $table_members where 1 ORDER BY onlinetime DESC Limit 10");
- while($total = $db->fetch_array($query)) {
- $totalonlinelist .="<LI>".$total[username]." ".intval($total['onlinetime']/3600);
- }
- $query = $db->query("SELECT username,onlinemonth FROM $table_members where 1 ORDER BY onlinemonth DESC Limit 10");
- while($total = $db->fetch_array($query)) {
- $monthonlinelist .="<LI>".$total[username]." ".intval($total['onlinemonth']/3600);
- }
- $query = $db->query("SELECT COUNT(*) AS count FROM $table_members where onlinetime>'$onlinetime'");
- $onlineming=$db->result($query, 0) + 1;
- $query = $db->query("SELECT COUNT(*) AS count FROM $table_members where onlinemonth>'$monthonline'");
- $monthming=$db->result($query, 0) + 1;
- //排行榜结束
- }
- ///////////////Extra工资部分
- //斑竹工资部分
- $logs = array();
- $logspan = $timestamp - 86400 * 15;
- $lpp = empty($lpp) ? 50 : $lpp;
- $filename = DISCUZ_ROOT.'./forumdata/modslog.php';
- @$logfile = file($filename);
- @$fp = fopen($filename, 'w');
- @flock($fp, 2);
- @fwrite($fp, "<?PHP exit('Access Denied'); ?".">\n");
- foreach($logfile as $logrow) {
- if(intval($logrow) > $logspan && strpos($logrow, "\t")) {
- $logs[] = $logrow;
- @fwrite($fp, $logrow."\n");
- }
- }
- @fclose($fp);
- if(!$page) {
- $page = 1;
- }
- $start = ($page - 1) * $lpp;
- $logs = array_reverse($logs);
- if(empty($keyword)) {
- $num = count($logs);
- $multipage = multi($num, $lpp, $page, "admincp.php?action=$action&lpp=$lpp");
- for($i = 0; $i < $start; $i++) {
- unset($logs[$i]);
- }
- for($i = $start + $lpp; $i < $num; $i++) {
- unset($logs[$i]);
- }
- } else {
- foreach($logs as $key => $value) {
- if(strpos($value, $keyword) === FALSE) {
- unset($logs[$key]);
- }
- }
- $multipage = '';
- }
- $mnow=date("n");
- $ynow=date("Y");
- $mnext = $mnow+1;
- $ynext = $ynow;
- if($mext == 13)
- {
- $mnext =1;
- $ynext = $ynow +1;
- }
- $mlast = $mnow-1;
- $ylast = $ynow;
- if($mlast == 0){
- $mlast =12;
- $ylast = $ynow -1;
- }
- if(!$action){
- $begin=0;
- $end=time();
- }elseif($action == 'thismonth'){
- $begin=mktime(0,0,0,$mnow,1,$ynow);
- $end=mktime(0,0,0,$mnext,1,$ynext);
- }elseif($action == 'lastmonth'){
- $begin=mktime(0,0,0,$mlast,1,$ylast);
- $end=mktime(0,0,0,$mnow,1,$ynow);
- }elseif($action == 'thisyear'){
- $begin=mktime(0,0,0,1,1,$ynow);
- $end=mktime(0,0,0,12,31,$ynow);
- }
- $extra[1]=$extra[2]=$extra[3]=$extra[4]=$extra[5]=$extra[6]=$extra[7]=$extra[8]=$extra[9]=$extra[10]=$extra[11]=$extra[12]=$totalex=0;
-
- foreach($logs as $logrow) {
- $log = explode("\t", $logrow);
- $log[1] = stripslashes($log[1]);
- $log[8] = trim($log[8]);
- if($log[0] >= $begin && $log[0] < $end){
- if($log[1] == $discuz_user ) {
- if($log[8] == 'moderate_delete' ){
- $extra[1]++ ;
- }elseif($log[8] == 'moderate_close'){
- $extra[2]++ ;
- }elseif($log[8] == 'moderate_move'){
- $extra[3]++ ;
- }elseif($log[8] == 'moderate_stick'){
- $extra[4]++ ;
- }elseif($log[8] == 'moderate_digest'){
- $extra[5]++ ;
- }elseif($log[8] == 'move'){
- $extra[6]++ ;
- }elseif($log[8] == 'close'){
- $extra[7]++ ;
- }elseif($log[8] == 'delpost' || $log[8] == 'deltread'){
- $extra[8]++ ;
- }elseif($log[8] == 'highlight'){
- $extra[9]++ ;
- }elseif($log[8] == 'digest'){
- $extra[10]++ ;
- }elseif($log[8] == 'split' || $log[8] == 'merge'){
- $extra[11]++ ;
- }elseif($log[8] == 'top'){
- $extra[12]++ ;
- }
- }
- }
- }
- $exname[1] = '批量删帖';
- $exname[2] = '批量关帖';
- $exname[3] = '批量移帖';
- $exname[4] = '批量顶置';
- $exname[5] = '批量精华';
- $exname[6] = '移帖';
- $exname[7] = '关帖';
- $exname[8] = '删帖';
- $exname[9] = '高亮';
- $exname[10] = '精华';
- $exname[11] = '合并分离帖';
- $exname[12] = '顶置';
- $extrasalary .= "<tr $bgcolor><td>".$exname[1]."</td>\n".
- "<td>".$salarysetting[s1]."</td>\n".
- "<td>".$extra[1]."</td>\n".
- "<td>".$extra[1]*$salarysetting[s1]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[2]."</td>\n".
- "<td>".$salarysetting[s2]."</td>\n".
- "<td>".$extra[2]."</td>\n".
- "<td>".$extra[2]*$salarysetting[s2]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[3]."</td>\n".
- "<td>".$salarysetting[s3]."</td>\n".
- "<td>".$extra[3]."</td>\n".
- "<td>".$extra[3]*$salarysetting[s3]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[4]."</td>\n".
- "<td>".$salarysetting[s4]."</td>\n".
- "<td>".$extra[4]."</td>\n".
- "<td>".$extra[4]*$salarysetting[s4]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[5]."</td>\n".
- "<td>".$salarysetting[s5]."</td>\n".
- "<td>".$extra[5]."</td>\n".
- "<td>".$extra[5]*$salarysetting[s5]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[6]."</td>\n".
- "<td>".$salarysetting[s6]."</td>\n".
- "<td>".$extra[6]."</td>\n".
- "<td>".$extra[6]*$salarysetting[s6]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[7]."</td>\n".
- "<td>".$salarysetting[s7]."</td>\n".
- "<td>".$extra[7]."</td>\n".
- "<td>".$extra[7]*$salarysetting[s7]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[8]."</td>\n".
- "<td>".$salarysetting[s8]."</td>\n".
- "<td>".$extra[8]."</td>\n".
- "<td>".$extra[8]*$salarysetting[s8]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[9]."</td>\n".
- "<td>".$salarysetting[s9]."</td>\n".
- "<td>".$extra[9]."</td>\n".
- "<td>".$extra[9]*$salarysetting[s9]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[10]."</td>\n".
- "<td>".$salarysetting[s10]."</td>\n".
- "<td>".$extra[10]."</td>\n".
- "<td>".$extra[10]*$salarysetting[s10]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[11]."</td>\n".
- "<td>".$salarysetting[s11]."</td>\n".
- "<td>".$extra[11]."</td>\n".
- "<td>".$extra[11]*$salarysetting[s11]."</td></tr>\n";
- $extrasalary .= "<tr $bgcolor><td>".$exname[12]."</td>\n".
- "<td>".$salarysetting[s12]."</td>\n".
- "<td>".$extra[12]."</td>\n".
- "<td>".$extra[12]*$salarysetting[s12]."</td></tr>\n";
- $totalex = $extra[1]*$salarysetting[s1] + $extra[2]*$salarysetting[s2] + $extra[3]*$salarysetting[s3] + $extra[4]*$salarysetting[s4] + $extra[5]*$salarysetting[s5] + $extra[6]*$salarysetting[s6] + $extra[7]*$salarysetting[s7] + $extra[8]*$salarysetting[s8] + $extra[9]*$salarysetting[s9] + $extra[10]*$salarysetting[s10] + $extra[11]*$salarysetting[s11] + $extra[12]*$salarysetting[s12] ;
- if($action== 'lastmonth' && $type== 'load'){
- if($lastsalary < $monthnow){
- $query = $db->query("UPDATE $table_members SET bank=bank+$totallastmonth+$totalex,lastsalarytime=$monthnow WHERE username='$discuz_user' ");
- showmessage("你上月的工资(共计:".$totallastmonth."+".$totalex."元)已存入你的存款帐户, 希望您继续努力。",'plugins.php?p=bank&code=11');
- }else{
- showmessage("你本月已经领过工资, 你居然还想要,不许偷懒快回论坛去!",'plugins.php?p=bank&code=11');
- }
- }
- //
- //上报工资
- //
- //评分工资
- //
- ////////////////
- include template('bank');
- //END
复制代码
NO.2
打开bank.htm
2.1
在- <a href="plugins.php?p=bank&code=2">定期储蓄</a> |
复制代码
下添加
- <a href="plugins.php?p=bank&code=11">工资柜台</a> |
复制代码
2.2
在
- <tr><td bgcolor="{ALTBG1}" align="center" width="100%" >你的排名:$allming</td></tr>
- </table></table></td></tr>
- </table></td></tr>
- <!--{/if}-->
复制代码
下添加
===========================================================
===============================
由于下列文件不太常用有作修改的很少,所以没盖过的人可以直接用压缩包里的文件覆盖
===============================
NO.3
打开
admin/groups.php
3.1在
- $query = $db->query("SELECT groupid, type, grouptitle, creditshigher, creditslower, stars, color, groupavatar
复制代码
后添加
3.2在
- "<td bgcolor="".ALTBG1.""><input type="text" size="12" name="group_avatar[{$group[groupid]}]" value="$group[groupavatar]"></td>".
复制代码
后添加
- "<td bgcolor="".ALTBG1.""><input type="text" size="4" name="group_groupsalary[{$group[groupid]}]" value="$group[groupsalary]"></td>".
复制代码
(一共有2处)在
- "<td bgcolor="".ALTBG2.""><input type="text" size="12" name="group_avatar[{$group[groupid]}]" value="$group[groupavatar]"></td>".
复制代码
后添加
- "<td bgcolor="".ALTBG1.""><input type="text" size="4" name="group_groupsalary[{$group[groupid]}]" value="$group[groupsalary]"></td>".
复制代码
3.3在
- $db->query("INSERT INTO $table_usergroups (type, grouptitle, creditshigher, creditslower, stars, color, groupavatar
复制代码
后添加
- $db->query("INSERT INTO $table_usergroups (type, grouptitle, stars, color, groupavatar
复制代码
后添加
3.4在
- VALUES ('member', '$grouptitlenew', '$creditshighernew', '$creditslowernew', '$starsnew', '$colornew', '$groupavatarnew'
复制代码
添加
- VALUES ('special', '$grouptitlenew', '$starsnew', '$colornew', '$groupavatarnew'
复制代码
添加
3.5(一共有3处)在
- groupavatar='$group_avatar[$id]'
复制代码
后添加
- ,groupsalary='$group_groupsalary[$id]'
复制代码
NO.4
打开admin/tpl/groups_user.php
4.1(一共有3处)在
- <td><?=$lang['usergroups_avatar']?></td>
复制代码
后添加
- <td><?=$lang['usergroups_groupsalary']?></td>
复制代码
4.2(一共有2处)在
- <td><input type="text" size="12" name="groupavatarnew"></td>
复制代码
后添加
- <td><input type="text" size="4" name="groupsalarynew"></td>
复制代码
4.3
将所有colspan值增加1
即将所有<td colspan="后的数字增加1
即可
修改后:colspan值依次为9,9,8,8,7
4.4
打开admincp.lang.php
在- 'usergroups_status' => '系统头衔',
复制代码 下
添加
- //
- 'usergroups_groupsalary' => '工资',
- //
复制代码
=========================================
第五步:导入后台文件
完成
=========================================
=========================================
欢迎提出各种建议和意见
反安装:反执行所有修改步骤,并升级下列数据库
- ALTER TABLE `cdb_usergroups` DROP `groupsalary`;
复制代码
- ALTER TABLE `cdb_members` DROP `lastsalarytime` ;
复制代码
[ 本帖最后由 ninelife 于 2005-8-21 00:13 编辑 ] |