📄 acp_profile.php
字号:
$field_option = ($field_row['field_required']) ? 'field_required' : (($field_row['field_show_on_reg']) ? 'field_show_on_reg' : (($field_row['field_hide']) ? 'field_hide' : '')); } $cp->vars['field_no_view'] = request_var('field_no_view', $field_row['field_no_view']); // A boolean field expects an array as the lang options if ($field_type == FIELD_BOOL) { $options = request_var('lang_options', array(''), true); } else { $options = request_var('lang_options', '', true); } // If the user has submitted a form with options (i.e. dropdown field) if ($options) { $exploded_options = (is_array($options)) ? $options : explode("\n", $options); if (sizeof($exploded_options) == sizeof($lang_options) || $action == 'create') { // The number of options in the field is equal to the number of options already in the database // Or we are creating a new dropdown list. $cp->vars['lang_options'] = $exploded_options; } else if ($action == 'edit') { // Changing the number of options? (We remove and re-create the option fields) $cp->vars['lang_options'] = $exploded_options; } } else { $cp->vars['lang_options'] = $lang_options; } // step 2 foreach ($exclude[2] as $key) { $var = request_var($key, $field_row[$key], true); // Manipulate the intended variables a little bit if needed if ($field_type == FIELD_DROPDOWN && $key == 'field_maxlen') { // Get the number of options if this key is 'field_maxlen' $var = sizeof(explode("\n", request_var('lang_options', '', true))); } if ($field_type == FIELD_TEXT && $key == 'field_length') { if (isset($_REQUEST['rows'])) { $cp->vars['rows'] = request_var('rows', 0); $cp->vars['columns'] = request_var('columns', 0); $var = $cp->vars['rows'] . '|' . $cp->vars['columns']; } else { $row_col = explode('|', $var); $cp->vars['rows'] = $row_col[0]; $cp->vars['columns'] = $row_col[1]; } } if ($field_type == FIELD_DATE && $key == 'field_default_value') { $always_now = request_var('always_now', 0); if ($always_now || $var == 'now') { $now = getdate(); $cp->vars['field_default_value_day'] = $now['mday']; $cp->vars['field_default_value_month'] = $now['mon']; $cp->vars['field_default_value_year'] = $now['year']; $var = $_POST['field_default_value'] = 'now'; } else { if (isset($_REQUEST['field_default_value_day'])) { $cp->vars['field_default_value_day'] = request_var('field_default_value_day', 0); $cp->vars['field_default_value_month'] = request_var('field_default_value_month', 0); $cp->vars['field_default_value_year'] = request_var('field_default_value_year', 0); $var = $_POST['field_default_value'] = sprintf('%2d-%2d-%4d', $cp->vars['field_default_value_day'], $cp->vars['field_default_value_month'], $cp->vars['field_default_value_year']); } else { list($cp->vars['field_default_value_day'], $cp->vars['field_default_value_month'], $cp->vars['field_default_value_year']) = explode('-', $var); } } } $cp->vars[$key] = $var; } // step 3 - all arrays if ($action == 'edit') { // 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); $l_lang_options = array(); while ($row = $db->sql_fetchrow($result)) { $l_lang_options[$row['lang_id']][$row['option_id']] = $row['lang_value']; } $db->sql_freeresult($result); $sql = 'SELECT lang_id, lang_name, lang_explain, lang_default_value FROM ' . PROFILE_LANG_TABLE . ' WHERE lang_id <> ' . $lang_defs['iso'][$config['default_lang']] . " AND field_id = $field_id ORDER BY lang_id ASC"; $result = $db->sql_query($sql); $l_lang_name = $l_lang_explain = $l_lang_default_value = array(); while ($row = $db->sql_fetchrow($result)) { $l_lang_name[$row['lang_id']] = $row['lang_name']; $l_lang_explain[$row['lang_id']] = $row['lang_explain']; $l_lang_default_value[$row['lang_id']] = $row['lang_default_value']; } $db->sql_freeresult($result); } foreach ($exclude[3] as $key) { $cp->vars[$key] = request_var($key, array(0 => ''), true); if (!$cp->vars[$key] && $action == 'edit') { $cp->vars[$key] = $$key; } else if ($key == 'l_lang_options' && sizeof($cp->vars[$key]) > 1) { foreach ($cp->vars[$key] as $lang_id => $options) { $cp->vars[$key][$lang_id] = explode("\n", $options); } } } // Check for general issues in every step if ($submit) // && $step == 1 { // Check values for step 1 if ($cp->vars['field_ident'] == '') { $error[] = $user->lang['EMPTY_FIELD_IDENT']; } if (!preg_match('/^[a-z_]+$/', $cp->vars['field_ident'])) { $error[] = $user->lang['INVALID_CHARS_FIELD_IDENT']; } if (strlen($cp->vars['field_ident']) > 17) { $error[] = $user->lang['INVALID_FIELD_IDENT_LEN']; } if ($cp->vars['lang_name'] == '') { $error[] = $user->lang['EMPTY_USER_FIELD_NAME']; } if ($field_type == FIELD_DROPDOWN && !sizeof($cp->vars['lang_options'])) { $error[] = $user->lang['NO_FIELD_ENTRIES']; } if ($field_type == FIELD_BOOL && (empty($cp->vars['lang_options'][0]) || empty($cp->vars['lang_options'][1]))) { $error[] = $user->lang['NO_FIELD_ENTRIES']; } // Check for already existing field ident if ($action != 'edit') { $sql = 'SELECT field_ident FROM ' . PROFILE_FIELDS_TABLE . " WHERE field_ident = '" . $db->sql_escape($cp->vars['field_ident']) . "'"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if ($row) { $error[] = $user->lang['FIELD_IDENT_ALREADY_EXIST']; } } } $step = (isset($_REQUEST['next'])) ? $step + 1 : ((isset($_REQUEST['prev'])) ? $step - 1 : $step); if (sizeof($error)) { $step--; $submit = false; } // Build up the specific hidden fields foreach ($exclude as $num => $key_ary) { if ($num == $step) { continue; } $_new_key_ary = array(); foreach ($key_ary as $key) { if (!isset($_REQUEST[$key])) { $var = false; } else { $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); } } $s_hidden_fields .= build_hidden_fields($_new_key_ary); } if (!sizeof($error)) { if ($step == 3 && (sizeof($lang_defs['iso']) == 1 || $save)) { $this->save_profile_field($cp, $field_type, $lang_defs, $action); } else if ($action == 'edit' && $save) { $this->save_profile_field($cp, $field_type, $lang_defs, $action); } } $template->assign_vars(array( 'S_EDIT' => true, 'S_EDIT_MODE' => ($action == 'edit') ? true : false, 'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '', 'L_TITLE' => $user->lang['STEP_' . $step . '_TITLE_' . strtoupper($action)], 'L_EXPLAIN' => $user->lang['STEP_' . $step . '_EXPLAIN_' . strtoupper($action)], 'U_ACTION' => $this->u_action . "&action=$action&step=$step", 'U_BACK' => $this->u_action) ); // Now go through the steps switch ($step) { // Create basic options - only small differences between field types case 1: // Build common create options $template->assign_vars(array( 'S_STEP_ONE' => true, 'S_FIELD_REQUIRED' => ($cp->vars['field_required']) ? true : false, 'S_SHOW_ON_REG' => ($cp->vars['field_show_on_reg']) ? true : false, 'S_FIELD_HIDE' => ($cp->vars['field_hide']) ? true : false, 'S_FIELD_NO_VIEW' => ($cp->vars['field_no_view']) ? true : false, 'L_LANG_SPECIFIC' => sprintf($user->lang['LANG_SPECIFIC_OPTIONS'], $config['default_lang']), 'FIELD_TYPE' => $user->lang['FIELD_' . strtoupper($cp->profile_types[$field_type])], 'FIELD_IDENT' => $cp->vars['field_ident'], 'LANG_NAME' => $cp->vars['lang_name'], 'LANG_EXPLAIN' => $cp->vars['lang_explain']) ); // String and Text needs to set default values here... if ($field_type == FIELD_STRING || $field_type == FIELD_TEXT) { $template->assign_vars(array( 'S_TEXT' => ($field_type == FIELD_TEXT) ? true : false, 'S_STRING' => ($field_type == FIELD_STRING) ? true : false, 'L_DEFAULT_VALUE_EXPLAIN' => $user->lang[strtoupper($cp->profile_types[$field_type]) . '_DEFAULT_VALUE_EXPLAIN'], 'LANG_DEFAULT_VALUE' => $cp->vars['lang_default_value']) ); } if ($field_type == FIELD_BOOL || $field_type == FIELD_DROPDOWN) { // Initialize these array elements if we are creating a new field if (!sizeof($cp->vars['lang_options'])) { if ($field_type == FIELD_BOOL) { // No options have been defined for a boolean field. $cp->vars['lang_options'][0] = ''; $cp->vars['lang_options'][1] = ''; } else { // No options have been defined for the dropdown menu $cp->vars['lang_options'] = array(); } } $template->assign_vars(array( 'S_BOOL' => ($field_type == FIELD_BOOL) ? true : false, 'S_DROPDOWN' => ($field_type == FIELD_DROPDOWN) ? true : false, 'L_LANG_OPTIONS_EXPLAIN' => $user->lang[strtoupper($cp->profile_types[$field_type]) . '_ENTRIES_EXPLAIN'], 'LANG_OPTIONS' => ($field_type == FIELD_DROPDOWN) ? implode("\n", $cp->vars['lang_options']) : '', 'FIRST_LANG_OPTION' => ($field_type == FIELD_BOOL) ? $cp->vars['lang_options'][0] : '', 'SECOND_LANG_OPTION' => ($field_type == FIELD_BOOL) ? $cp->vars['lang_options'][1] : '') ); } break; case 2: $template->assign_vars(array( 'S_STEP_TWO' => true, 'L_NEXT' => (sizeof($lang_defs['iso']) == 1) ? $user->lang['SAVE'] : $user->lang['PROFILE_LANG_OPTIONS']) ); // Build options based on profile type $function = 'get_' . $cp->profile_types[$field_type] . '_options'; $options = $cp->$function(); foreach ($options as $num => $option_ary) { $template->assign_block_vars('option', $option_ary); } break; // Define remaining language variables case 3: $template->assign_var('S_STEP_THREE', true); $options = $this->build_language_options($cp, $field_type, $action); foreach ($options as $lang_id => $lang_ary) { $template->assign_block_vars('options', array( 'LANGUAGE' => ($lang_ary['lang_iso'] == $config['default_lang']) ? sprintf($user->lang['DEFAULT_ISO_LANGUAGE'], $config['default_lang']) : sprintf($user->lang['ISO_LANGUAGE'], $lang_ary['lang_iso'])) ); foreach ($lang_ary['fields'] as $field_ident => $field_ary) { $template->assign_block_vars('options.field', array( 'L_TITLE' => $field_ary['TITLE'], 'L_EXPLAIN' => (isset($field_ary['EXPLAIN'])) ? $field_ary['EXPLAIN'] : '', 'FIELD' => $field_ary['FIELD']) ); } } break; } $template->assign_vars(array( 'S_HIDDEN_FIELDS' => $s_hidden_fields) ); return; break; } $sql = 'SELECT * FROM ' . PROFILE_FIELDS_TABLE . ' ORDER BY field_order'; $result = $db->sql_query($sql); $s_one_need_edit = false; while ($row = $db->sql_fetchrow($result)) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -