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

📄 acp_profile.php

📁 这些都是我以前学习是用到的源码
💻 PHP
📖 第 1 页 / 共 4 页
字号:
<?php/** ** @package acp* @version $Id: acp_profile.php,v 1.41 2006/11/24 14:58:07 acydburn Exp $* @copyright (c) 2005 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License **//*** @package acp*/class acp_profile{	var $u_action;	function main($id, $mode)	{		global $config, $db, $user, $auth, $template, $cache;		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix;		include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);		include($phpbb_root_path . 'includes/functions_user.' . $phpEx);		include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);		$user->add_lang(array('ucp', 'acp/profile'));		$this->tpl_name = 'acp_profile';		$this->page_title = 'ACP_CUSTOM_PROFILE_FIELDS';		$action = (isset($_POST['create'])) ? 'create' : request_var('action', '');		$error = array();		$s_hidden_fields = '';		// Define some default values for each field type		$default_values = array(			FIELD_STRING	=> array('field_length' => 10, 'field_minlen' => 0, 'field_maxlen' => 20, 'field_validation' => '.*', 'field_novalue' => '', 'field_default_value' => ''),			FIELD_TEXT		=> array('field_length' => '5|80', 'field_minlen' => 0, 'field_maxlen' => 1000, 'field_validation' => '.*', 'field_novalue' => '', 'field_default_value' => ''),			FIELD_INT		=> array('field_length' => 5, 'field_minlen' => 0, 'field_maxlen' => 100, 'field_validation' => '', 'field_novalue' => 0, 'field_default_value' => 0),			FIELD_DATE		=> array('field_length' => 10, 'field_minlen' => 10, 'field_maxlen' => 10, 'field_validation' => '', 'field_novalue' => ' 0- 0-   0', 'field_default_value' => ' 0- 0-   0'),			FIELD_BOOL		=> array('field_length' => 1, 'field_minlen' => 0, 'field_maxlen' => 0, 'field_validation' => '', 'field_novalue' => 0, 'field_default_value' => 0),			FIELD_DROPDOWN	=> array('field_length' => 0, 'field_minlen' => 0, 'field_maxlen' => 5, 'field_validation' => '', 'field_novalue' => 0, 'field_default_value' => 0),		);		$cp = new custom_profile_admin();		// Build Language array		// Based on this, we decide which elements need to be edited later and which language items are missing		$lang_defs = array();		$sql = 'SELECT lang_id, lang_iso			FROM ' . LANG_TABLE . '			ORDER BY lang_english_name';		$result = $db->sql_query($sql);		while ($row = $db->sql_fetchrow($result))		{			// Make some arrays with all available languages			$lang_defs['id'][] = $row['lang_id'];			$lang_defs['iso'][$row['lang_iso']] = $row['lang_id'];		}		$db->sql_freeresult($result);		$sql = 'SELECT field_id, lang_id			FROM ' . PROFILE_LANG_TABLE . '			ORDER BY lang_id';		$result = $db->sql_query($sql);			while ($row = $db->sql_fetchrow($result))		{			// Which languages are available for each item			$lang_defs['entry'][$row['field_id']][] = $row['lang_id'];		}		$db->sql_freeresult($result);		// Have some fields been defined?		if (isset($lang_defs['entry']))		{			foreach ($lang_defs['entry'] as $field_id => $field_ary)			{				// Fill an array with the languages that are missing for each field				$lang_defs['diff'][$field_id] = array_diff($lang_defs['id'], $field_ary);			}		}		switch ($action)		{			case 'delete':				$field_id = request_var('field_id', 0);				if (!$field_id)				{					trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);				}				if (confirm_box(true))				{					$sql = 'SELECT field_ident 						FROM ' . PROFILE_FIELDS_TABLE . " 						WHERE field_id = $field_id";					$result = $db->sql_query($sql);					$field_ident = (string) $db->sql_fetchfield('field_ident');					$db->sql_freeresult($result);					$db->sql_query('DELETE FROM ' . PROFILE_FIELDS_TABLE . " WHERE field_id = $field_id");					$db->sql_query('DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . " WHERE field_id = $field_id");					$db->sql_query('DELETE FROM ' . PROFILE_LANG_TABLE . " WHERE field_id = $field_id");					switch ($db->sql_layer)					{						case 'sqlite':							$sql = "SELECT sql								FROM sqlite_master 								WHERE type = 'table' 									AND name = '" . PROFILE_FIELDS_DATA_TABLE . "'								ORDER BY type DESC, name;";							$result = $db->sql_query($sql);							$row = $db->sql_fetchrow($result);							$db->sql_freeresult($result);							$db->sql_transaction('begin');							// Create a temp table and populate it, destroy the existing one							$db->sql_query(preg_replace('#CREATE\s+TABLE\s+"?' . PROFILE_FIELDS_DATA_TABLE . '"?#i', 'CREATE TEMPORARY TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp', $row['sql']));							$db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . '_temp SELECT * FROM ' . PROFILE_FIELDS_DATA_TABLE);							$db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE);							preg_match('#\((.*)\)#s', $row['sql'], $matches);							$new_table_cols = trim($matches[1]);							$old_table_cols = preg_split('/,(?=[\\sa-z])/im', $new_table_cols);							$column_list = array();							foreach ($old_table_cols as $declaration)							{								$entities = preg_split('#\s+#', trim($declaration));								if ($entities[0] !== 'pf_' . $field_ident)								{									$column_list[] = $entities[0];								}							}							$columns = implode(',', $column_list);							$new_table_cols = preg_replace('/' . 'pf_' . $field_ident . '[^,]+,/', '', $new_table_cols);							// create a new table and fill it up. destroy the temp one							$db->sql_query('CREATE TABLE ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $new_table_cols . ');');							$db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . PROFILE_FIELDS_DATA_TABLE . '_temp;');							$db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp');							$db->sql_transaction('commit');						break;						default:							$db->sql_query('ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " DROP pf_$field_ident");					}					$order = 0;					$sql = 'SELECT *						FROM ' . PROFILE_FIELDS_TABLE . '						ORDER BY field_order';					$result = $db->sql_query($sql);					while ($row = $db->sql_fetchrow($result))					{						$order++;						if ($row['field_order'] != $order)						{							$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . " 								SET field_order = $order 								WHERE field_id = {$row['field_id']}";							$db->sql_query($sql);						}					}					$db->sql_freeresult($result);					add_log('admin', 'LOG_PROFILE_FIELD_REMOVED', $field_ident);					trigger_error($user->lang['REMOVED_PROFILE_FIELD'] . adm_back_link($this->u_action));				}				else				{					confirm_box(false, 'DELETE_PROFILE_FIELD', build_hidden_fields(array(						'i'			=> $id,						'mode'		=> $mode,						'action'	=> $action,						'field_id'	=> $field_id,					)));				}				break;			case 'activate':				$field_id = request_var('field_id', 0);				if (!$field_id)				{					trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);				}					$sql = 'SELECT lang_id 					FROM ' . LANG_TABLE . " 					WHERE lang_iso = '" . $db->sql_escape($config['default_lang']) . "'";				$result = $db->sql_query($sql);				$default_lang_id = (int) $db->sql_fetchfield('lang_id');				$db->sql_freeresult($result);				if (!in_array($default_lang_id, $lang_defs['entry'][$field_id]))				{					trigger_error($user->lang['DEFAULT_LANGUAGE_NOT_FILLED'] . adm_back_link($this->u_action), E_USER_WARNING);				}				$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . " 					SET field_active = 1 					WHERE field_id = $field_id";				$db->sql_query($sql);				$sql = 'SELECT field_ident 					FROM ' . PROFILE_FIELDS_TABLE . " 					WHERE field_id = $field_id";				$result = $db->sql_query($sql);				$field_ident = (string) $db->sql_fetchfield('field_ident');				$db->sql_freeresult($result);				add_log('admin', 'LOG_PROFILE_FIELD_ACTIVATE', $field_ident);				trigger_error($user->lang['PROFILE_FIELD_ACTIVATED'] . adm_back_link($this->u_action));			break;			case 'deactivate':				$field_id = request_var('field_id', 0);				if (!$field_id)				{					trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);				}					$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . "					SET field_active = 0 					WHERE field_id = $field_id";				$db->sql_query($sql);				$sql = 'SELECT field_ident 					FROM ' . PROFILE_FIELDS_TABLE . " 					WHERE field_id = $field_id";				$result = $db->sql_query($sql);				$field_ident = (string) $db->sql_fetchfield('field_ident');				$db->sql_freeresult($result);				add_log('admin', 'LOG_PROFILE_FIELD_DEACTIVATE', $field_ident);				trigger_error($user->lang['PROFILE_FIELD_DEACTIVATED'] . adm_back_link($this->u_action));			break;			case 'move_up':			case 'move_down':				$field_order = request_var('order', 0);				$order_total = $field_order * 2 + (($action == 'move_up') ? -1 : 1);				$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . "					SET field_order = $order_total - field_order					WHERE field_order IN ($field_order, " . (($action == 'move_up') ? $field_order - 1 : $field_order + 1) . ')';				$db->sql_query($sql);			break;			case 'create':			case 'edit':						$field_id = request_var('field_id', 0);				$step = request_var('step', 1);				$submit = (isset($_REQUEST['next']) || isset($_REQUEST['prev'])) ? true : false;				$save = (isset($_REQUEST['save'])) ? true : false;				// We are editing... we need to grab basic things				if ($action == 'edit')				{					if (!$field_id)					{						trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);					}					$sql = 'SELECT l.*, f.*						FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f 						WHERE l.lang_id = ' . $lang_defs['iso'][$config['default_lang']] . "							AND f.field_id = $field_id							AND l.field_id = f.field_id";					$result = $db->sql_query($sql);					$field_row = $db->sql_fetchrow($result);					$db->sql_freeresult($result);					if (!$field_row)					{						trigger_error($user->lang['FIELD_NOT_FOUND'] . adm_back_link($this->u_action), E_USER_WARNING);					}					$field_type = $field_row['field_type'];					// Get language entries					$sql = 'SELECT *						FROM ' . PROFILE_FIELDS_LANG_TABLE . ' 						WHERE lang_id = ' . $lang_defs['iso'][$config['default_lang']] . "							AND field_id = $field_id						ORDER BY option_id ASC";					$result = $db->sql_query($sql);					$lang_options = array();					while ($row = $db->sql_fetchrow($result))					{						$lang_options[$row['option_id']] = $row['lang_value'];					}					$db->sql_freeresult($result);					$s_hidden_fields = '<input type="hidden" name="field_id" value="' . $field_id . '" />';				}				else				{					// We are adding a new field, define basic params					$lang_options = $field_row = array();							$field_type = request_var('field_type', 0);								if (!$field_type)					{						trigger_error($user->lang['NO_FIELD_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);					}					$field_row = array_merge($default_values[$field_type], array(						'field_ident'		=> request_var('field_ident', ''),						'field_required'	=> 0,						'field_hide'		=> 0,						'field_no_view'		=> 0,						'field_show_on_reg'	=> 0,						'lang_name'			=> '',						'lang_explain'		=> '',						'lang_default_value'=> '')					);					$s_hidden_fields = '<input type="hidden" name="field_type" value="' . $field_type . '" />';				}				// $exclude contains the data we gather in each step				$exclude = array(					1	=> array('field_ident', 'lang_name', 'lang_explain', 'field_option', 'field_no_view'),					2	=> array('field_length', 'field_maxlen', 'field_minlen', 'field_validation', 'field_novalue', 'field_default_value'),					3	=> array('l_lang_name', 'l_lang_explain', 'l_lang_default_value', 'l_lang_options')				);				// Text-based fields require the lang_default_value to be excluded				if ($field_type == FIELD_STRING || $field_type == FIELD_TEXT)				{					$exclude[1][] = 'lang_default_value';				}				// option-specific fields require lang_options to be excluded				if ($field_type == FIELD_BOOL || $field_type == FIELD_DROPDOWN)				{					$exclude[1][] = 'lang_options';				}				$cp->vars['field_ident']		= request_var('field_ident', $field_row['field_ident']);				$cp->vars['lang_name']			= request_var('lang_name', $field_row['lang_name'], true);				$cp->vars['lang_explain']		= request_var('lang_explain', $field_row['lang_explain'], true);				$cp->vars['lang_default_value']	= request_var('lang_default_value', $field_row['lang_default_value'], true);				// Field option...				if (isset($_REQUEST['field_option']))				{					$field_option = request_var('field_option', '');					$cp->vars['field_required'] = ($field_option == 'field_required') ? 1 : 0;					$cp->vars['field_show_on_reg'] = ($field_option == 'field_show_on_reg') ? 1 : 0;					$cp->vars['field_hide'] = ($field_option == 'field_hide') ? 1 : 0;				}				else				{					$cp->vars['field_required'] = $field_row['field_required'];					$cp->vars['field_show_on_reg'] = $field_row['field_show_on_reg'];					$cp->vars['field_hide'] = $field_row['field_hide'];

⌨️ 快捷键说明

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