⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad_member.php

📁 泛微协同办公系统标准版E-office V5.5的源代码内含泛微办公系统V5.5自动注册文件。
💻 PHP
📖 第 1 页 / 共 4 页
字号:
<?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( "&#39;", "'", $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( "&nbsp;", "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( "&nbsp;", "40%" );
		$SKIN->td_header[] = array( "&nbsp;", "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( "&nbsp;", "40%" );
		$SKIN->td_header[] = array( "&nbsp;", "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( "&nbsp;", "40%" );
		$SKIN->td_header[] = array( "&nbsp;", "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 + -