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

📄 acp_profile.php

📁 这些都是我以前学习是用到的源码
💻 PHP
📖 第 1 页 / 共 4 页
字号:
			{				$profile_sql[] = 'INSERT INTO ' . PROFILE_LANG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql);			}			else			{				$lang_id = $sql['lang_id'];				unset($sql['lang_id'], $sql['field_id']);				$this->update_insert(PROFILE_LANG_TABLE, $sql, array('lang_id' => (int) $lang_id, 'field_id' => $field_id));			}		}		if (sizeof($profile_lang_fields))		{			foreach ($profile_lang_fields as $sql)			{				if ($action == 'create')				{					$profile_sql[] = 'INSERT INTO ' . PROFILE_FIELDS_LANG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql);				}				else				{					$lang_id = $sql['lang_id'];					$option_id = $sql['option_id'];					unset($sql['lang_id'], $sql['field_id'], $sql['option_id']);										$this->update_insert(PROFILE_FIELDS_LANG_TABLE, $sql, array(						'lang_id'	=> $lang_id, 						'field_id'	=> $field_id,						'option_id'	=> $option_id)					);				}			}		}		$db->sql_transaction('begin');		if ($action == 'create')		{			foreach ($profile_sql as $sql)			{				$db->sql_query($sql);			}		}				$db->sql_transaction('commit');		if ($action == 'edit')		{			add_log('admin', 'LOG_PROFILE_FIELD_EDIT', $cp->vars['field_ident'] . ':' . $cp->vars['lang_name']);			trigger_error($user->lang['CHANGED_PROFILE_FIELD'] . adm_back_link($this->u_action));		}		else		{			add_log('admin', 'LOG_PROFILE_FIELD_CREATE', substr($field_ident, 3) . ':' . $cp->vars['lang_name']);			trigger_error($user->lang['ADDED_PROFILE_FIELD'] . adm_back_link($this->u_action));		}	}	/**	* Update, then insert if not successfull	*/	function update_insert($table, $sql_ary, $where_fields)	{		global $db;		$where_sql = array();		$check_key = '';		foreach ($where_fields as $key => $value)		{			$check_key = (!$check_key) ? $key : $check_key;			$where_sql[] = $key . ' = ' . ((is_string($value)) ? "'" . $db->sql_escape($value) . "'" : (int) $value);		}		if (!sizeof($where_sql))		{			return;		}		$sql = "SELECT $check_key 			FROM $table			WHERE " . implode(' AND ', $where_sql);		$result = $db->sql_query($sql);		$row = $db->sql_fetchrow($result);		$db->sql_freeresult($result);		if (!$row)		{			$sql_ary = array_merge($where_fields, $sql_ary);						if (sizeof($sql_ary))			{				$db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql_ary));			}		}		else		{			if (sizeof($sql_ary))			{				$sql = "UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql_ary) . ' 					WHERE ' . implode(' AND ', $where_sql);				$db->sql_query($sql);			}		}	}	/**	* Return sql statement for adding a new field ident (profile field) to the profile fields data table	*/	function add_field_ident($field_ident, $field_type)	{		global $db;		switch ($db->sql_layer)		{			case 'mysql':			case 'mysql4':			case 'mysqli':				// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.				$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD `$field_ident` ";				switch ($field_type)				{					case FIELD_STRING:						$sql .= ' VARCHAR(255) ';					break;					case FIELD_DATE:						$sql .= 'VARCHAR(10) ';					break;					case FIELD_TEXT:						$sql .= "TEXT";		//						ADD {$field_ident}_bbcode_uid VARCHAR(5) NOT NULL,		//						ADD {$field_ident}_bbcode_bitfield INT(11) UNSIGNED";					break;					case FIELD_BOOL:						$sql .= 'TINYINT(2) ';					break;									case FIELD_DROPDOWN:						$sql .= 'MEDIUMINT(8) ';					break;					case FIELD_INT:						$sql .= 'BIGINT(20) ';					break;				}			break;			case 'sqlite':				switch ($field_type)				{					case FIELD_STRING:						$type = ' VARCHAR(255) ';					break;					case FIELD_DATE:						$type = 'VARCHAR(10) ';					break;					case FIELD_TEXT:						$type = "TEXT(65535)";		//						ADD {$field_ident}_bbcode_uid VARCHAR(5) NOT NULL,		//						ADD {$field_ident}_bbcode_bitfield INT(11) UNSIGNED";					break;					case FIELD_BOOL:						$type = 'TINYINT(2) ';					break;					case FIELD_DROPDOWN:						$type = 'MEDIUMINT(8) ';					break;					case FIELD_INT:						$type = 'BIGINT(20) ';					break;				}				// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.				if (version_compare(sqlite_libversion(), '3.0') == -1)				{					$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);					// 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 = explode(',', $new_table_cols);					$column_list = array();					foreach ($old_table_cols as $declaration)					{						$entities = preg_split('#\s+#', trim($declaration));						if ($entities == 'PRIMARY')						{							continue;						}						$column_list[] = $entities[0];					}					$columns = implode(',', $column_list);					$new_table_cols = $field_ident . ' ' . $type . ',' . $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');				}				else				{					$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD $field_ident [$type]";				}			break;			case 'mssql':			case 'mssql_odbc':				// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.				$sql = 'ALTER TABLE [' . PROFILE_FIELDS_DATA_TABLE . "] ADD [$field_ident] ";				switch ($field_type)				{					case FIELD_STRING:						$sql .= ' [VARCHAR] (255) ';					break;					case FIELD_DATE:						$sql .= '[VARCHAR] (10) ';					break;					case FIELD_TEXT:						$sql .= "[TEXT]";		//						ADD {$field_ident}_bbcode_uid [VARCHAR] (5) NOT NULL,		//						ADD {$field_ident}_bbcode_bitfield [INT] UNSIGNED";					break;					case FIELD_BOOL:					case FIELD_DROPDOWN:						$sql .= '[INT] ';					break;					case FIELD_INT:						$sql .= '[FLOAT] ';					break;				}			break;			case 'postgres':				// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.				$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD COLUMN \"$field_ident\" ";				switch ($field_type)				{					case FIELD_STRING:						$sql .= ' VARCHAR(255) ';					break;					case FIELD_DATE:						$sql .= 'VARCHAR(10) ';					break;					case FIELD_TEXT:						$sql .= "TEXT";		//						ADD {$field_ident}_bbcode_uid VARCHAR(5) NOT NULL,		//						ADD {$field_ident}_bbcode_bitfield INT4 UNSIGNED";					break;					case FIELD_BOOL:						$sql .= 'INT2 ';					break;					case FIELD_DROPDOWN:						$sql .= 'INT4 ';					break;					case FIELD_INT:						$sql .= 'INT8 ';					break;				}			break;			case 'firebird':				// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.				$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD \"$field_ident\" ";				switch ($field_type)				{					case FIELD_STRING:						$sql .= ' VARCHAR(255) ';					break;					case FIELD_DATE:						$sql .= 'VARCHAR(10) ';					break;					case FIELD_TEXT:						$sql .= "BLOB SUB_TYPE TEXT";		//						ADD {$field_ident}_bbcode_uid VARCHAR(5) NOT NULL,		//						ADD {$field_ident}_bbcode_bitfield INTEGER UNSIGNED";					break;					case FIELD_BOOL:					case FIELD_DROPDOWN:						$sql .= 'INTEGER ';					break;					case FIELD_INT:						$sql .= 'DOUBLE PRECISION ';					break;				}			break;			case 'oracle':				// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.				$sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD \"$field_ident\" ";				switch ($field_type)				{					case FIELD_STRING:						$sql .= ' VARCHAR2(255) ';					break;					case FIELD_DATE:						$sql .= 'VARCHAR2(10) ';					break;					case FIELD_TEXT:						$sql .= "CLOB";		//						ADD {$field_ident}_bbcode_uid VARCHAR2(5) NOT NULL,		//						ADD {$field_ident}_bbcode_bitfield NUMBER(11) UNSIGNED";					break;					case FIELD_BOOL:						$sql .= 'NUMBER(2) ';					break;					case FIELD_DROPDOWN:						$sql .= 'NUMBER(8) ';					break;					case FIELD_INT:						$sql .= 'NUMBER(20) ';					break;				}			break;		}		return $sql;	}}?>

⌨️ 快捷键说明

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