discuz 添加短消息群发给版主的功能
版本:discuz 7.2 gbk.
在discuz的短消息功能里面,我们只能群发短消息给好友
对于管理组来说,有必要增加群发给版主/总版主的功能。
修改 pm.php
在 204行
$buddyarray = array(); if($uids) { $query = $db->query("SELECT uid, username FROM {$tablepre}members WHERE uid IN (".implodeids($uids).")"); while($buddy = $db->fetch_array($query)) { $buddyarray[] = $buddy; } }
下面增加:
if (intval($_DSESSION['groupid'])==1 || intval($_DSESSION['groupid'])==2 || intval($_DSESSION['groupid'])==3 ) { //to banzhu: $banzhuarray = array(); $query = $db->query("SELECT uid,username FROM {$tablepre}members WHERE groupid=3 "); while($banzhu = $db->fetch_array($query)) { $banzhuarray[] = $banzhu; } //to zongbanzhu: $zongbanzhuarray = array(); $query = $db->query("SELECT uid,username FROM {$tablepre}members WHERE groupid=2 "); while($zongbanzhu = $db->fetch_array($query)) { $zongbanzhuarray[] = $zongbanzhu; } }
继续修改pm.php:
找到
} elseif($action == 'send' && submitcheck('pmsubmit')) { .... foreach($buddyarray as $buddy) { $uids[] = $buddy['friendid']; } $msgto = $p = '';
把下面的
foreach($msgtos as $uid) { $msgto .= in_array($uid, $uids) ? $p.$uid : ''; $p = ','; }
替换成:
if (intval($_DSESSION['groupid'])==1 || intval($_DSESSION['groupid'])==2 || intval($_DSESSION['groupi d'])==3 ) { foreach($msgtos as $uid) { $msgto .= $p.$uid; $p = ','; } } else { foreach($msgtos as $uid) { $msgto .= in_array($uid, $uids) ? $p.$uid : ''; $p = ','; } }
然后修改模板templates/default/pm_send.htm
在24行:
<input name="msgto" value="$username" class="txt" tabindex="1" /> <!--{if $buddyarray}--><a href="javascript:display('buddies');" class="dropmenu"> {lang pm_to_buddy}</a><!--{/if}-->
后面添加:
<!--{if $banzhuarray}--><a href="javascript:display('banzhu');" class="dropmenu">版主群发</a><!--{/if}--> <!--{if $zongbanzhuarray}--><a href="javascript:display('zongbanzhu') ;" class="dropmenu">总版主群发</a><!--{/if}-->
然后在
<!--{if $buddyarray}--> <tbody id="buddies" style="display: none;"> <tr><td colspan=5 align=center><font color=RED>好友群发</font></td></tr> <tr> <td width="60"></td> <td> <ul class="s_clear"> <!--{loop $buddyarray $buddy}--> <li><label for="msgto_$buddy[uid]"> <input id="msgto_$buddy[uid]" name="msgtos[]" type="checkbox" value="$buddy[uid]"> $buddy[username]</label></li> <!--{/loop}--> </ul> </td> </tr> </tbody> <!--{/if}-->
后面加添加
<!--{if $banzhuarray}--> <tbody id="banzhu" style="display: none;" class="modify_buddies"> <tr><td colspan=5 align=center><font color=RED>版主群发</font></td></tr> <tr> <td width="60"></td> <td> <ul class="s_clear"> <!--{loop $banzhuarray $buddy}--> <li><label for="msgto_$buddy[uid]"> <input id="msgto_$buddy[uid]" name="msgtos[]" type="checkbox" value="$buddy[uid]"> $buddy[username]</label></li> <!--{/loop}--> </ul> </td> </tr> </tbody> <!--{/if}--> <!--{if $zongbanzhuarray}--> <tbody id="zongbanzhu" style="display: none;" class="modify_buddies"> <tr><td colspan=5 align=center><font color=RED>总版主群发</font></td></tr> <tr> <td width="60"></td> <td> <ul class="s_clear"> <!--{loop $zongbanzhuarray $buddy}--> <li><label for="msgto_$buddy[uid]"> <input id="msgto_$buddy[uid]" name="msgtos[]" type="checkbox" value="$buddy[uid]"> $buddy[username]</label></li> <!--{/loop}--> </ul> </td> </tr> </tbody> <!--{/if}-->
没想到uc_client里面又一次检查了收信人是否为发信人的好友。。。
再修改uc_client/control/pm.php
在 function onsendpm() 里面
找到
$this->load('friend');
把下面的
if(count($msgto) > 1 && !($is_friend = $_ENV['friend']->is_friend($fromuid, $msgto, 3))) { return PMMSGTONOTFRIEND; }
替换成:
$modify_userinfo = $_ENV['user']->db->fetch_first("SELECT * FROM cdb_members WHERE uid='$fromuid'"); if (intval($modify_userinfo['groupid'])==1 || intval($modify_userinfo['groupid'])==2 || intval($modif y_userinfo['groupid'])==3 ) { } else { if(count($msgto) > 1 && !($is_friend = $_ENV['friend']->is_friend($fromuid, $msgto, 3))) { return PMMSGTONOTFRIEND; } }
