最近应一个子比用户的要求,写了一个关于:普通用户仅可以给管理员发送私信,如果普通用户给非管理员发送私信则提示:您需要开通VIP后才可以使用私信功能。
本代码依旧使用:子比主题的zib_get_user_vip_level($user_id);函数来获取当前会员等级,根据返回的值来判断:普通用户、VIP会员1级、VIP会员2级。
定位子比主题的文件名为:private-class.php,这个是子比主题的私信功能,文件里最下面有个控制输出私信按钮的函数。
/**
* @description: 获取私信按钮
* @param {*}
* @return {*}
*/
public static function get_but($receive_user = '', $text = '私信', $class = '')
{
$receive_user = (int) $receive_user;
$current_user_id = get_current_user_id();
$my_vip = zib_get_user_vip_level($current_user_id);
if (!$receive_user || $current_user_id == $receive_user || !_pz('private_s', true) || !_pz('message_s', true) || zib_is_close_sign()) {
return false;
}
if ($current_user_id) {
//小黑屋禁封判断
if (_pz('user_ban_s', true) && zib_user_is_ban($current_user_id)) {
return;
}
if ($my_vip > 0 || user_can( $current_user_id, 'manage_options' ) || ( $my_vip == 0 && user_can( $receive_user, 'manage_options' ) ) ) { // VIP用户或管理员可以给任何人发送私信,非VIP用户给管理员发送私信不受限制
$args = array(
'tag' => 'a',
'class' => $class,
'data_class' => 'full-sm',
'text' => $text,
'mobile_bottom' => true,
'query_arg' => array('action' => 'private_window_modal', 'receive_user' => $receive_user),
'height' => 550,
);
$but = zib_get_refresh_modal_link($args);
} else { // 非VIP用户给非管理员用户发送私信受限制
$but = '<a class="' . $class . '" href="javascript:;" onclick="alert(\'您需要开通会员后使用私信功能\');">' . $text . '</a>';
}
} else {
$but = '<a class="signin-loader ' . $class . '" href="javascript:;">' . $text . '</a>';
}
return $but;
}
}
代码解释:
- 这段代码是一个静态方法,用于获取私信按钮。它接受三个参数:$receive_user表示接收私信的用户ID,$text表示按钮上的文本,$class表示按钮的CSS类。
- 首先,将$receive_user转换为整数类型,并获取当前用户的ID和当前用户的VIP等级。
- 接下来,如果$receive_user为空、当前用户和接收用户相同、私信功能或消息功能被关闭、或者网站被关闭,则返回false。
- 如果当前用户已登录,则进行小黑屋禁封判断,如果当前用户被禁封,则返回。
- 然后,根据当前用户的VIP等级和权限,判断是否可以给任何人发送私信。如果可以,生成一个包含私信窗口的链接,并返回该链接。
- 如果当前用户不是VIP用户,且接收用户也不是管理员,则限制发送私信。生成一个提示信息,告诉用户需要开通会员后才能使用私信功能。
- 如果当前用户未登录,则生成一个登录链接。
- 最后,返回生成的按钮。
- 来源:详情
请登录后查看评论内容