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

📄 mcp_main.php

📁 这些都是我以前学习是用到的源码
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** ** @package mcp* @version $Id: mcp_main.php,v 1.45 2006/11/18 16:26:25 acydburn Exp $* @copyright (c) 2005 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License **//*** mcp_main* Handling mcp actions* @package mcp*/class mcp_main{	var $p_master;	var $u_action;	function mcp_main(&$p_master)	{		$this->p_master = &$p_master;	}	function main($id, $mode)	{		global $auth, $db, $user, $template, $action;		global $config, $phpbb_root_path, $phpEx;		$quickmod = ($mode == 'quickmod') ? true : false;		switch ($action)		{			case 'lock':			case 'unlock':				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0));				if (!sizeof($topic_ids))				{					trigger_error('NO_TOPIC_SELECTED');				}				lock_unlock($action, $topic_ids);			break;			case 'lock_post':			case 'unlock_post':				$post_ids = (!$quickmod) ? request_var('post_id_list', array(0)) : array(request_var('p', 0));				if (!sizeof($post_ids))				{					trigger_error('NO_POST_SELECTED');				}				lock_unlock($action, $post_ids);			break;			case 'make_announce':			case 'make_sticky':			case 'make_global':			case 'make_normal':				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0));				if (!sizeof($topic_ids))				{					trigger_error('NO_TOPIC_SELECTED');				}				change_topic_type($action, $topic_ids);			break;			case 'move':				$user->add_lang('viewtopic');				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0));				if (!sizeof($topic_ids))				{					trigger_error('NO_TOPIC_SELECTED');				}				mcp_move_topic($topic_ids);			break;			case 'fork':				$user->add_lang('viewtopic');				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0));				if (!sizeof($topic_ids))				{					trigger_error('NO_TOPIC_SELECTED');				}				mcp_fork_topic($topic_ids);			break;			case 'delete_topic':				$user->add_lang('viewtopic');				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0));				if (!sizeof($topic_ids))				{					trigger_error('NO_TOPIC_SELECTED');				}				mcp_delete_topic($topic_ids);			break;			case 'delete_post':				$user->add_lang('posting');				$post_ids = (!$quickmod) ? request_var('post_id_list', array(0)) : array(request_var('p', 0));				if (!sizeof($post_ids))				{					trigger_error('NO_POST_SELECTED');				}				mcp_delete_post($post_ids);			break;		}		switch ($mode)		{			case 'front':				include($phpbb_root_path . 'includes/mcp/mcp_front.' . $phpEx);				$user->add_lang('acp/common');				mcp_front_view($id, $mode, $action);				$this->tpl_name = 'mcp_front';				$this->page_title = 'MCP_MAIN';			break;			case 'forum_view':				include($phpbb_root_path . 'includes/mcp/mcp_forum.' . $phpEx);				$user->add_lang('viewforum');				$forum_id = request_var('f', 0);				$forum_info = get_forum_data($forum_id, 'm_');				if (!sizeof($forum_info))				{					$this->main('main', 'front');					return;				}				$forum_info = $forum_info[$forum_id];				mcp_forum_view($id, $mode, $action, $forum_info);				$this->tpl_name = 'mcp_forum';				$this->page_title = 'MCP_MAIN_FORUM_VIEW';			break;			case 'topic_view':				include($phpbb_root_path . 'includes/mcp/mcp_topic.' . $phpEx);				mcp_topic_view($id, $mode, $action);				$this->tpl_name = 'mcp_topic';				$this->page_title = 'MCP_MAIN_TOPIC_VIEW';			break;			case 'post_details':				include($phpbb_root_path . 'includes/mcp/mcp_post.' . $phpEx);				mcp_post_details($id, $mode, $action);				$this->tpl_name = ($action == 'whois') ? 'mcp_whois' : 'mcp_post';				$this->page_title = 'MCP_MAIN_POST_DETAILS';			break;			default:				trigger_error("Unknown mode: $mode", E_USER_ERROR);		}	}}/*** Lock/Unlock Topic/Post*/function lock_unlock($action, $ids){	global $auth, $user, $db, $phpEx, $phpbb_root_path;	if ($action == 'lock' || $action == 'unlock')	{		$table = TOPICS_TABLE;		$sql_id = 'topic_id';		$set_id = 'topic_status';		$l_prefix = 'TOPIC';	}	else	{		$table = POSTS_TABLE;		$sql_id = 'post_id';		$set_id = 'post_edit_locked';		$l_prefix = 'POST';	}	$orig_ids = $ids;	if (!check_ids($ids, $table, $sql_id, array('m_lock')))	{		// Make sure that for f_user_lock only the lock action is triggered.		if ($action != 'lock')		{			return;		}		$ids = $orig_ids;		if (!check_ids($ids, $table, $sql_id, array('f_user_lock')))		{			return;		}	}	unset($orig_ids);	$redirect = request_var('redirect', build_url(array('_f_', 'action')));	$s_hidden_fields = build_hidden_fields(array(		$sql_id . '_list'	=> $ids,		'action'			=> $action,		'redirect'			=> $redirect)	);	$success_msg = '';	if (confirm_box(true))	{		$sql = "UPDATE $table			SET $set_id = " . (($action == 'lock' || $action == 'lock_post') ? ITEM_LOCKED : ITEM_UNLOCKED) . '			WHERE ' . $db->sql_in_set($sql_id, $ids);		$db->sql_query($sql);		$data = ($action == 'lock' || $action == 'unlock') ? get_topic_data($ids) : get_post_data($ids);		foreach ($data as $id => $row)		{			add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_' . strtoupper($action), $row['topic_title']);		}		$success_msg = $l_prefix . ((sizeof($ids) == 1) ? '' : 'S') . '_' . (($action == 'lock' || $action == 'lock_post') ? 'LOCKED' : 'UNLOCKED') . '_SUCCESS';	}	else	{		confirm_box(false, strtoupper($action) . '_' . $l_prefix . ((sizeof($ids) == 1) ? '' : 'S'), $s_hidden_fields);	}	$redirect = request_var('redirect', "index.$phpEx");	$redirect = reapply_sid($redirect);	if (!$success_msg)	{		redirect($redirect);	}	else	{		meta_refresh(2, $redirect);		trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));	}}/*** Change Topic Type*/function change_topic_type($action, $topic_ids){	global $auth, $user, $db, $phpEx, $phpbb_root_path;	// For changing topic types, we only allow operations in one forum.	$forum_id = check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('f_announce', 'f_sticky', 'm_'), true);	if ($forum_id === false)	{		return;	}	switch ($action)	{		case 'make_announce':			$new_topic_type = POST_ANNOUNCE;			$check_acl = 'f_announce';			$l_new_type = (sizeof($topic_ids) == 1) ? 'MCP_MAKE_ANNOUNCEMENT' : 'MCP_MAKE_ANNOUNCEMENTS';		break;		case 'make_global':			$new_topic_type = POST_GLOBAL;			$check_acl = 'f_announce';			$l_new_type = (sizeof($topic_ids) == 1) ? 'MCP_MAKE_GLOBAL' : 'MCP_MAKE_GLOBALS';		break;		case 'make_sticky':			$new_topic_type = POST_STICKY;			$check_acl = 'f_sticky';			$l_new_type = (sizeof($topic_ids) == 1) ? 'MCP_MAKE_STICKY' : 'MCP_MAKE_STICKIES';		break;		default:			$new_topic_type = POST_NORMAL;			$check_acl = '';			$l_new_type = (sizeof($topic_ids) == 1) ? 'MCP_MAKE_NORMAL' : 'MCP_MAKE_NORMALS';		break;	}	$redirect = request_var('redirect', $user->data['session_page']);	$s_hidden_fields = build_hidden_fields(array(		'topic_id_list'	=> $topic_ids,		'f'				=> $forum_id,		'action'		=> $action,		'redirect'		=> $redirect)	);	$success_msg = '';	if (confirm_box(true))	{		if ($new_topic_type != POST_GLOBAL)		{			$sql = 'UPDATE ' . TOPICS_TABLE . "				SET topic_type = $new_topic_type				WHERE " . $db->sql_in_set('topic_id', $topic_ids) . '					AND forum_id <> 0';			$db->sql_query($sql);			// Reset forum id if a global topic is within the array			if ($forum_id)			{				$sql = 'UPDATE ' . TOPICS_TABLE . "					SET topic_type = $new_topic_type, forum_id = $forum_id					WHERE " . $db->sql_in_set('topic_id', $topic_ids) . '						AND forum_id = 0';				$db->sql_query($sql);				// Update forum_ids for all posts				$sql = 'UPDATE ' . POSTS_TABLE . "					SET forum_id = $forum_id					WHERE " . $db->sql_in_set('topic_id', $topic_ids) . '						AND forum_id = 0';				$db->sql_query($sql);				sync('forum', 'forum_id', $forum_id);			}		}		else		{			// Get away with those topics already being a global announcement by re-calculating $topic_ids			$sql = 'SELECT topic_id				FROM ' . TOPICS_TABLE . '				WHERE ' . $db->sql_in_set('topic_id', $topic_ids) . '					AND forum_id <> 0';			$result = $db->sql_query($sql);			$topic_ids = array();			while ($row = $db->sql_fetchrow($result))			{				$topic_ids[] = $row['topic_id'];			}			$db->sql_freeresult($result);			if (sizeof($topic_ids))			{				// Delete topic shadows for global announcements				$sql = 'DELETE FROM ' . TOPICS_TABLE . '					WHERE ' . $db->sql_in_set('topic_moved_id', $topic_ids);				$db->sql_query($sql);				$sql = 'UPDATE ' . TOPICS_TABLE . "					SET topic_type = $new_topic_type, forum_id = 0						WHERE " . $db->sql_in_set('topic_id', $topic_ids);				$db->sql_query($sql);				// Update forum_ids for all posts				$sql = 'UPDATE ' . POSTS_TABLE . '					SET forum_id = 0					WHERE ' . $db->sql_in_set('topic_id', $topic_ids);				$db->sql_query($sql);				sync('forum', 'forum_id', $forum_id);			}		}		$success_msg = (sizeof($topic_ids) == 1) ? 'TOPIC_TYPE_CHANGED' : 'TOPICS_TYPE_CHANGED';		if (sizeof($topic_ids))		{			$data = get_topic_data($topic_ids);			foreach ($data as $topic_id => $row)			{				add_log('mod', $forum_id, $topic_id, 'LOG_TOPIC_TYPE_CHANGED', $row['topic_title']);			}		}	}	else	{		confirm_box(false, $l_new_type, $s_hidden_fields);	}	$redirect = request_var('redirect', "index.$phpEx");	$redirect = reapply_sid($redirect);	if (!$success_msg)	{		redirect($redirect);	}	else	{		meta_refresh(2, $redirect);		trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));	}}/*** Move Topic*/function mcp_move_topic($topic_ids){	global $auth, $user, $db, $template;	global $phpEx, $phpbb_root_path;	// Here we limit the operation to one forum only	$forum_id = check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_move'), true);	if ($forum_id === false)	{		return;	}	$to_forum_id = request_var('to_forum_id', 0);	$redirect = request_var('redirect', $user->data['session_page']);	$additional_msg = $success_msg = '';	$s_hidden_fields = build_hidden_fields(array(		'topic_id_list'	=> $topic_ids,		'f'				=> $forum_id,		'action'		=> 'move',		'redirect'		=> $redirect)	);	if ($to_forum_id)	{		$forum_data = get_forum_data($to_forum_id);		if (!sizeof($forum_data))		{			$additional_msg = $user->lang['FORUM_NOT_EXIST'];		}		else		{			$forum_data = $forum_data[$to_forum_id];			if ($forum_data['forum_type'] != FORUM_POST)			{				$additional_msg = $user->lang['FORUM_NOT_POSTABLE'];			}			else if (!$auth->acl_get('f_post', $to_forum_id))			{				$additional_msg = $user->lang['USER_CANNOT_POST'];			}			else if ($forum_id == $to_forum_id)			{				$additional_msg = $user->lang['CANNOT_MOVE_SAME_FORUM'];			}		}	}	if (!$to_forum_id || $additional_msg)	{		unset($_POST['confirm']);	}	if (confirm_box(true))	{		$topic_data = get_topic_data($topic_ids);		$leave_shadow = (isset($_POST['move_leave_shadow'])) ? true : false;		// Move topics, but do not resync yet		move_topics($topic_ids, $to_forum_id, false);		$forum_ids = array($to_forum_id);		foreach ($topic_data as $topic_id => $row)		{			// Get the list of forums to resync, add a log entry			$forum_ids[] = $row['forum_id'];			add_log('mod', $to_forum_id, $topic_id, 'LOG_MOVE', $row['forum_name']);			// If we have moved a global announcement, we need to correct the topic type			if ($row['topic_type'] == POST_GLOBAL)			{				$sql = 'UPDATE ' . TOPICS_TABLE . '					SET topic_type = ' . POST_ANNOUNCE . '					WHERE topic_id = ' . (int) $row['topic_id'];				$db->sql_query($sql);			}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -