📄 ad_member.php
字号:
<?php
class ad_forums
{
var $base_url;
function ad_forums( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $ibforums;
$tmp_in = array_merge( $_GET, $_POST, $_COOKIE );
foreach ( $tmp_in as $k => $v )
{
}
switch ( $IN['code'] )
{
case "stepone" :
$this->do_advanced_search( 1 );
break;
case "doform" :
$this->do_edit_form( );
break;
case "doedit" :
$this->do_edit( );
break;
case "advancedsearch" :
$this->do_advanced_search( );
break;
case "add" :
$this->add_form( );
break;
case "doadd" :
$this->do_add( );
break;
case "del" :
$this->delete_form( );
break;
case "delete2" :
$this->delete_lookup_form( );
break;
case "dodelete" :
$this->dodelete( );
break;
case "prune" :
$this->prune_confirm( );
break;
case "doprune" :
$this->doprune( );
break;
case "title" :
$this->titles( );
break;
case "rank_edit" :
$this->rank_setup( "edit" );
break;
case "rank_add" :
$this->rank_setup( "add" );
break;
case "do_add_rank" :
$this->add_rank( );
break;
case "do_rank_edit" :
$this->edit_rank( );
break;
case "rank_delete" :
$this->delete_rank( );
break;
case "ban" :
$this->ban_control( );
break;
case "doban" :
$this->update_ban( );
break;
case "mod" :
$this->view_mod( );
break;
case "domod" :
$this->domod( );
break;
case "changename" :
$this->change_name_start( );
break;
case "dochangename" :
$this->change_name_complete( );
break;
case "mail" :
$this->bulk_mail_form( );
break;
case "domail" :
$this->do_bulk_mail( );
break;
default :
$this->search_form( );
break;
}
}
function do_bulk_mail( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
$ids = array( );
foreach ( $IN as $key => $value )
{
if ( !preg_match( "/^sg_(\\d+)\$/", $key, $match ) && !$IN[$match[0]] )
{
$ids[] = $match[1];
}
}
if ( count( $ids ) < 1 )
{
$this->bulk_mail_form( 1, "错误", "你必须至少选择一个用户团队进行邮件发送" );
exit( );
}
if ( $IN['title'] == "" )
{
$this->bulk_mail_form( 1, "错误", "你必须填写邮件主题" );
exit( );
}
if ( $IN['email_contents'] == "" )
{
$this->bulk_mail_form( 1, "错误", "你必须填写邮件内容" );
exit( );
}
$group_str = implode( ",", $ids );
$where = "";
if ( 0 < $IN['posts'] )
{
$where .= " AND posts < ".$IN['posts'];
}
if ( 0 < $IN['days'] )
{
$time = time( ) - $IN['days'] * 60 * 60 * 24;
$where .= " AND last_activity < '{$time}'";
}
if ( $IN['honour_user_setting'] == 1 )
{
$where .= "AND allow_admin_mails=1";
}
$DB->query( "SELECT COUNT(id) as total FROM ibf_members WHERE mgroup IN({$group_str})".$where );
$rows = $DB->fetch_row( );
if ( $rows['total'] < 1 )
{
$this->bulk_mail_form( 1, "错误", "请展开你的用户名单,无法找到邮件信箱数据" );
exit( );
}
$DB->query( "SELECT * FROM ibf_stats" );
$stats = $DB->fetch_row( );
$contents = stripslashes( $HTTP_POST_VARS['email_contents'] );
$contents = str_replace( "{board_name}", str_replace( "'", "'", $INFO['board_name'] ), $contents );
$contents = str_replace( "{board_url}", $INFO['board_url']."/index.".$INFO['php_ext'], $contents );
$contents = str_replace( "{reg_total}", $stats['MEM_COUNT'], $contents );
$contents = str_replace( "{total_posts}", $stats['TOTAL_TOPICS'] + $stats['TOTAL_REPLIES'], $contents );
$contents = str_replace( "{busy_count}", $stats['MOST_COUNT'], $contents );
$contents = str_replace( "{busy_time}", $std->get_date( $stats['MOST_DATE'], "SHORT" ), $contents );
if ( $IN['preview'] != "" )
{
$this->bulk_mail_form( 1, "邮件发送预览", "<b>".stripslashes( $HTTP_POST_VARS['title'] )."</b><br><br>".$contents."<br><br><b>邮件接收用户:</b> ".$rows['total'] );
exit( );
}
@set_time_limit( 1200 );
require( "./sources/lib/emailer.php" );
$this->email = new emailer( );
$this->email->bcc = array( );
$DB->query( "SELECT email FROM ibf_members WHERE mgroup IN({$group_str})".$where );
while ( $r = $DB->fetch_row( ) )
{
if ( $r['email'] != "" )
{
$this->email->bcc[] = $r['email'];
}
}
$this->email->message = str_replace( "\r\n", "\n", $contents );
$this->email->subject = stripslashes( $HTTP_POST_VARS['title'] );
if ( $IN['email_admin'] == 1 )
{
$this->email->to = $INFO['email_in'];
}
else
{
$this->email->to = "";
}
$this->email->send_mail( );
$ADMIN->save_log( "邮件已经发送完成 ({$where})" );
$ADMIN->done_screen( "邮件已经发送完成", "论坛用户管理", "act=mem" );
}
function bulk_mail_form( $preview = 0, $title = "Preview", $content = "" )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
$ADMIN->page_title = "发送邮件列表";
$ADMIN->page_detail = "你可以在下面设置和发送邮件列表给论坛用户,点击[快速帮助]可以获得更多帮助信息。";
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "code", "domail" ),
2 => array( "act", "mem" )
) );
if ( $HTTP_POST_VARS['email_contents'] == "" )
{
$HTTP_POST_VARS['email_contents'] = "\n\n\n-------------------------------------\n{board_name} 统计数据:\n-------------------------------------\n注册用户:{reg_total}\n帖子总数:{total_posts}\n在线峰值:{busy_count} 用户同时在线\n峰值时间:{busy_time}\n\n-------------------------------------\n相关链接\n-------------------------------------\n论坛地址:{board_url}\n登录论坛:{board_url}?act=Login&CODE=00\n忘记密码:{board_url}?act=Reg&CODE=10\n\n-------------------------------------\n如何退订论坛邮件列表?\n-------------------------------------\n1. 进入你的论坛个人控制面板;\n2. 选择邮件参数设置:{board_url}?act=UserCP&CODE=02\n3. 取消论坛管理员可给我发送任何论坛升级信息选项。\n\n-------------------------------------\n欢迎使用华酷论坛\n-------------------------------------\n官方论坛:http://www.ibfchina.com\n论坛服务:http://service.ibfchina.com\n论坛下载:http://download.ibfchina.com\n\nPowered By HuaCooL Network (www.ibfchina.com)";
}
if ( $preview == 1 )
{
$SKIN->td_header[] = array( " ", "100%" );
$ADMIN->html .= $SKIN->start_table( $title );
$ADMIN->html .= $SKIN->add_td_row( array(
nl2br( $content )
) );
$ADMIN->html .= $SKIN->end_table( );
}
$SKIN->td_header[] = array( " ", "40%" );
$SKIN->td_header[] = array( " ", "60%" );
$ADMIN->html .= $SKIN->start_table( "发送邮件列表:邮件内容设置" );
$ADMIN->html .= $SKIN->add_td_row( array( "<b>是否启用 '允许管理员发送邮件' 功能?</b><br>强烈推荐你执行此功能!", $SKIN->form_yes_no( "honour_user_setting", isset( $IN['honour_user_setting'] ) ? $IN['honour_user_setting'] : 1 ) ) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>邮件主题:</b>",
$SKIN->form_input( "title", stripslashes( $HTTP_POST_VARS['title'] ) )
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>邮件内容:</b><br>".$SKIN->js_help_link( "m_bulkemail" ),
$SKIN->form_textarea( "email_contents", stripslashes( $HTTP_POST_VARS['email_contents'] ), 60, 15 )
) );
$ADMIN->html .= $SKIN->add_td_row( array( "<b>是否发送邮件给论坛管理员?</b><br>如果你提交邮件发送后出现错误请选择此项 - 使用SMTP必须选择此项。", $SKIN->form_yes_no( "email_admin", isset( $IN['email_admin'] ) ? $IN['email_admin'] : 1 ) ) );
$ADMIN->html .= $SKIN->end_table( );
$SKIN->td_header[] = array( " ", "40%" );
$SKIN->td_header[] = array( " ", "60%" );
$ADMIN->html .= $SKIN->start_table( "发送邮件列表:邮件发送设置" );
$DB->query( "SELECT g_id, g_title FROM ibf_groups WHERE g_id <> ".$INFO['guest_group']." ORDER BY g_title" );
while ( $r = $DB->fetch_row( ) )
{
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>发送给:<span style='color:red'>{$r['g_title']}</span></b>",
$SKIN->form_yes_no( "sg_{$r['g_id']}", isset( $IN["sg_".$r['g_id']] ) ? $IN["sg_".$r['g_id']] : 1 )
) );
}
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>发送给小于多少发帖数量的所有用户:</b><br>不填写表示不使用此功能!",
$SKIN->form_input( "post", $IN['post'] )
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>发送给多于几天没有登录的所有用户:</b><br>不填写表示不使用此功能!",
$SKIN->form_input( "days", $IN['days'] )
) );
$ADMIN->html .= $SKIN->add_td_basic( "<input type=\"submit\" name=\"preview\" value=\"预览邮件\">", "center" );
$ADMIN->html .= $SKIN->end_form( "执行" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function change_name_complete( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
if ( $IN['mid'] == "" )
{
$ADMIN->error( "你必须指定一个有效的用户ID,请返回后重试!" );
}
if ( $IN['new_name'] == "" )
{
$this->change_name_start( "你必须为这个用户输入一个新用户名称" );
exit( );
}
$DB->query( "SELECT name, email FROM ibf_members WHERE id='".$IN['mid']."'" );
if ( !( $member = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关的用户信息" );
}
$mid = $IN['mid'];
if ( $IN['new_name'] == $member['name'] )
{
$this->change_name_start( "新用户名称和旧用户名称相同,这太不符合逻辑了吧?" );
exit( );
}
$new_name = trim( $IN['new_name'] );
$DB->query( "SELECT id FROM ibf_members WHERE LOWER(name)='".strtolower( $new_name )."'" );
if ( $DB->get_num_rows( ) )
{
$this->change_name_start( "用户名称:'{$new_name}' 已经存在,请选择其他的用户名称" );
exit( );
}
$DB->query( "UPDATE ibf_members SET name='{$new_name}' WHERE id='{$mid}'" );
$DB->query( "UPDATE ibf_contacts SET contact_name='{$new_name}' WHERE contact_id='{$mid}'" );
$DB->query( "UPDATE ibf_forums SET last_poster_name='{$new_name}' WHERE last_poster_id='{$mid}'" );
$DB->query( "UPDATE ibf_moderator_logs SET member_name='{$new_name}' WHERE member_id='{$mid}'" );
$DB->query( "UPDATE ibf_moderators SET member_name='{$new_name}' WHERE member_id='{$mid}'" );
$DB->query( "UPDATE ibf_posts SET author_name='{$new_name}' WHERE author_id='{$mid}'" );
$DB->query( "UPDATE ibf_sessions SET member_name='{$new_name}' WHERE member_id='{$mid}'" );
$DB->query( "UPDATE ibf_topics SET starter_name='{$new_name}' WHERE starter_id='{$mid}'" );
$DB->query( "UPDATE ibf_topics SET last_poster_name='{$new_name}' WHERE last_poster_id='{$mid}'" );
if ( $IN['send_email'] == 1 )
{
require( "./sources/lib/emailer.php" );
$this->email = new emailer( );
$msg = trim( $HTTP_POST_VARS['email_contents'] );
$msg = str_replace( "{old_name}", $member['name'], $msg );
$msg = str_replace( "{new_name}", $new_name, $msg );
$this->email->message = $this->email->clean_message( $msg );
$this->email->subject = "论坛用户名称修改通知";
$this->email->to = $member['email'];
$this->email->send_mail( );
}
$ADMIN->save_log( "修改用户名称:'{$member['name']}' 为 '{$new_name}'" );
$ADMIN->done_screen( "用户名称已经修改", "论坛用户管理", "act=mem" );
}
function change_name_start( $message = "" )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$ADMIN->page_title = "修改用户名称";
$ADMIN->page_detail = "你可以为这个用户输入一个新的用户名称。";
if ( $IN['mid'] == "" )
{
$ADMIN->error( "你必须指定一个有效的用户ID,请返回后重试!" );
}
$DB->query( "SELECT name FROM ibf_members WHERE id='".$IN['mid']."'" );
if ( !( $member = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关的用户信息" );
}
$contents = "{old_name},\n论坛管理员已经修改了你的用户名称:{$INFO['board_name']}。\n\n你现在的新用户名称是:{new_name}\n\n请在下次登录论坛时使用新的用户名称。\n论坛地址:{$INFO['board_url']}/index.php\n\n\n\n-------------------------------------\n欢迎使用华酷论坛\n-------------------------------------\n官方论坛:http://www.ibfchina.com\n论坛服务:http://service.ibfchina.com\n论坛下载:http://download.ibfchina.com\n\nPowered By HuaCooL Network (www.ibfchina.com)";
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "code", "dochangename" ),
2 => array( "act", "mem" ),
3 => array(
"mid",
$IN['mid']
)
) );
$SKIN->td_header[] = array( " ", "40%" );
$SKIN->td_header[] = array( " ", "60%" );
$ADMIN->html .= $SKIN->start_table( "修改用户名称" );
if ( $message != "" )
{
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>错误信息:</b>",
"<b><span style='color:red'>{$message}</span></b>"
) );
}
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>旧用户名称:</b>",
$member['name']
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>新用户名称:</b>",
$SKIN->form_input( "new_name", $IN['new_name'] )
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>是否发送邮件给用户?</b><br>(如果选择'是',那么请在下面编辑你的邮件内容)",
$SKIN->form_yes_no( "send_email", 1 )
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>邮件内容:</b><br>(标签:{old_name} = 旧用户名称,{new_name} = 新用户名称)",
$SKIN->form_textarea( "email_contents", $contents )
) );
$ADMIN->html .= $SKIN->end_form( "修改用户名称" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function domod( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$ids = array( );
foreach ( $IN as $k => $v )
{
if ( !preg_match( "/^mid_(\\d+)\$/", $k, $match ) && !$IN[$match[0]] )
{
$ids[] = $match[1];
}
}
if ( count( $ids ) < 1 )
{
$ADMIN->error( "没有选择需要批准或删除的用户" );
}
if ( $IN['type'] == "approve" )
{
require( ROOT_PATH."sources/lib/emailer.php" );
$email = new emailer( );
$email->get_template( "complete_reg" );
$email->build_message( "" );
$email->subject = "你在 ".$INFO['board_name']." 注册的账号已经生效!";
$main = $DB->query( "SELECT id, email, validate_key, mgroup, prev_group FROM ibf_members WHERE id IN(".implode( ",", $ids ).")" );
while ( $row = $DB->fetch_row( $main ) )
{
if ( $row['mgroup'] != $INFO['auth_group'] )
{
}
else
{
if ( $row['prev_group'] == "" )
{
$row['prev_group'] = $INFO['member_group'];
}
$update = $DB->query( "UPDATE ibf_members SET prev_group='', validate_key='', mgroup='".$row['prev_group']."' WHERE id='".$row['id']."'" );
$email->to = $row['email'];
$email->send_mail( );
}
}
$DB->query( "SELECT id, name FROM ibf_members WHERE mgroup <> '".$INFO['auth_group']."' ORDER BY id DESC LIMIT 0,1" );
$r = $DB->fetch_row( );
$DB->query( "UPDATE ibf_stats SET MEM_COUNT=MEM_COUNT+".count( $ids ).", LAST_MEM_NAME='{$r['name']}', LAST_MEM_ID='{$r['id']}'" );
$ADMIN->save_log( "批准等待审核的用户" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -