$template->assign_block_vars('col', array());
 }
 // count how many cols in the panel
 $col = 1;
 @reset($user_maps[$maps[$i]]['fields']);
 while (list($field_name, $field_data) = @each($user_maps[$maps[$i]]['fields'])) {
     if ($field_data['leg'] && ($field_data['img'] || $field_data['txt'])) {
         $col++;
         $col++;
         break;
     }
 }
 // panel title
 $title = '';
 if (is_string($user_maps[$maps[$i]]['title'])) {
     $title = mods_settings_get_lang($user_maps[$maps[$i]]['title']);
 } else {
     $user_maps['_temp'] = array();
     $user_maps['_temp']['fields'] = $user_maps[$maps[$i]]['title'];
     $title .= pcp_output_panel('_temp', $view_userdata);
 }
 $template->assign_block_vars('col.panel', array('SPAN' => $col, 'TITLE' => $title));
 if (!$split) {
     $template->assign_block_vars('col.panel.linefeed', array());
 }
 // panel field
 @reset($user_maps[$maps[$i]]['fields']);
 while (list($field_name, $field_data) = @each($user_maps[$maps[$i]]['fields'])) {
     if (substr($field_name, 0, 4) == '[lf]') {
         $template->assign_block_vars('col.panel.row', array());
         $template->assign_block_vars('col.panel.row.linefeed', array());
            }
            break;
    }
    // overwrite user choice
    $override = '';
    if (!empty($input) && !empty($field['user']) && isset($userdata[$field['user']])) {
        $override = '';
        @reset($list_yes_no);
        while (list($key, $val) = @each($list_yes_no)) {
            $selected = $config[$field_name . '_over'] == $val ? ' checked="checked"' : '';
            $l_key = mods_settings_get_lang($key);
            $override .= '<input type="radio" name="' . $field_name . '_over' . '" value="' . $val . '"' . $selected . ' />' . $l_key . '&nbsp;&nbsp;';
        }
        $override = '<hr />' . $lang['Override_user_choices'] . ':&nbsp;' . $override;
    }
    $explain = !empty($field['explain']) ? '<br />' . mods_settings_get_lang($field['explain']) : '';
    if (!empty($field['action'])) {
        $explain .= '<br /><a href="' . append_sid('./admin_' . strtolower($mod_name) . '.' . $phpEx) . '" onClick="if(document.forms[0].' . $field_name . '.value != \'' . $config[$field_name] . '\') { alert(\'The field is modified. Please submit your settings first\'); return false; } else return true;">' . mods_settings_get_lang($field['action']) . '</a>';
    }
    // dump to template
    $template->assign_block_vars('field', array('L_NAME' => mods_settings_get_lang($field['lang_key']), 'L_EXPLAIN' => $explain, 'INPUT' => $input, 'OVERRIDE' => $override));
}
// system
$s_hidden_fields = '';
$s_hidden_fields .= '<input type="hidden" name="menu_id" value="' . $menu_id . '" />';
$s_hidden_fields .= '<input type="hidden" name="mod_id" value="' . $mod_id . '" />';
$s_hidden_fields .= '<input type="hidden" name="sub_id" value="' . $sub_id . '" />';
$template->assign_vars(array('S_ACTION' => append_sid("./admin_board_extend.{$phpEx}"), 'S_HIDDEN_FIELDS' => $s_hidden_fields));
// footer
$template->pparse("body");
include './page_footer_admin.' . $phpEx;
                case 'INT':
                    $input = '<input type="text" name="' . $user_field . '" maxlength="13" size="11" class="post" value="' . $view_userdata[$user_field] . '" />';
                    break;
                case 'VARCHAR':
                case 'HTMLVARCHAR':
                    $input = '<input type="text" name="' . $user_field . '" maxlength="255" size="45" class="post" value="' . $view_userdata[$user_field] . '" />';
                    break;
                case 'TEXT':
                case 'HTMLTEXT':
                    $input = '<textarea rows="5" cols="45" wrap="virtual" name="' . $user_field . '" class="post">' . $view_userdata[$user_field] . '</textarea>';
                    break;
                default:
                    $input = '';
                    if (!empty($field['get_func']) && function_exists($field['get_func'])) {
                        $input = $field['get_func']($user_field, $view_userdata[$user_field]);
                    }
                    break;
            }
            // dump to template
            $template->assign_block_vars('field', array('L_NAME' => mods_settings_get_lang($field['lang_key']), 'L_EXPLAIN' => !empty($field['explain']) ? '<br />' . mods_settings_get_lang($field['explain']) : '', 'INPUT' => $input));
        }
    }
    // system
    $s_hidden_fields .= '<input type="hidden" name="mod_id" value="' . $mod_id . '" />';
    $s_hidden_fields .= '<input type="hidden" name="mod_sub_id" value="' . $sub_id . '" />';
    $s_hidden_fields .= '<input type="hidden" name="set" value="add" />';
    $s_hidden_fields .= '<input type="hidden" name="submit" value="1" />';
    $template->assign_vars(array('S_PROFILCP_ACTION' => append_sid("profile.{$phpEx}"), 'S_HIDDEN_FIELDS' => $s_hidden_fields));
    // page
    $template->pparse('body');
}
function pcp_output($field_name, $view_userdata, $map_name = '', $legend_only = false)
{
    global $board_config, $phpbb_root_path, $phpEx, $lang, $images, $userdata;
    global $values_list, $tables_linked, $classes_fields, $user_maps, $user_fields;
    $res = '';
    // no field, exit
    if (empty($field_name)) {
        return '';
    }
    // fix user id
    $user_id = $userdata['user_id'];
    if (!$userdata['session_logged_in']) {
        $user_id = ANONYMOUS;
    }
    // values overwritten in maps
    if (!empty($user_maps[$map_name]['fields'][$field_name])) {
        @reset($user_maps[$map_name]['fields'][$field_name]);
        while (list($field_def, $field_def_value) = @each($user_maps[$map_name]['fields'][$field_name])) {
            $user_fields[$field_name][$field_def] = $field_def_value;
        }
    }
    // get field def
    $field_data = array();
    if (isset($user_fields[$field_name])) {
        $field_data = $user_fields[$field_name];
    }
    // default values
    if (empty($field_data['lang_key'])) {
        $field_data['lang_key'] = ucfirst($field_name);
    }
    if (empty($field_data['class'])) {
        $field_data['class'] = 'generic';
    }
    if (empty($field_data['type'])) {
        $field_data['type'] = 'VARCHAR';
    }
    // legend only
    if ($legend_only) {
        return mods_settings_get_lang($field_data['lang_key']);
    }
    // get class def
    $class_data = array();
    if (isset($classes_fields[$field_data['class']])) {
        $class_data = $classes_fields[$field_data['class']];
    }
    // check the data classes
    if (!pcp_get_class_check($field_data['class'], $view_userdata)) {
        return '';
    }
    // process special display
    if (!empty($field_data['dsp_func'])) {
        $func = $field_data['dsp_func'];
        $res = function_exists($func) ? $func($field_name, $view_userdata, $map_name) : $lang['PCP_err_field_dsp_func_unknown'];
    } else {
        // value
        $txt = '';
        $img = '';
        $lnk = $field_data['link'];
        $res = '';
        $constant_link = $field_data['lnk'] && !isset($view_userdata[$field_name]) && ($field_data['txt'] && !empty($field_data['title']) || $field_data['img'] && !empty($field_data['image']));
        if ($view_userdata['user_id'] != ANONYMOUS && (!empty($view_userdata[$field_name]) || $field_data['leg'] && !$field_data['txt'] && !$field_data['img'] || $constant_link)) {
            $title = isset($field_data['title']) ? mods_settings_get_lang($field_data['title']) : $view_userdata[$field_name];
            $alt = mods_settings_get_lang($field_data['lang_key']);
            switch ($field_data['type']) {
                case 'DATE':
                    $txt = !empty($view_userdata[$field_name]) ? create_date($lang['DATE_FORMAT'], $view_userdata[$field_name], $userdata['user_timezone']) : '';
                    $img .= isset($images[$field_data['image']]) ? '<img src="' . $images[$field_data['image']] . '" border="0" alt="' . $alt . '" title="' . $title . '" />' : '';
                    break;
                case 'DATETIME':
                    $txt = !empty($view_userdata[$field_name]) ? create_date($userdata['user_dateformat'], $view_userdata[$field_name], $userdata['user_timezone']) : '';
                    $img .= isset($images[$field_data['image']]) ? '<img src="' . $images[$field_data['image']] . '" border="0" alt="' . $alt . '" title="' . $title . '" />' : '';
                    break;
                case 'BIRTHDAY':
                    $pm_display = pcp_get_class_check('pm', $view_userdata);
                    if (!empty($view_userdata[$field_name])) {
                        $temp_url = $pm_display ? append_sid("./privmsg.{$phpEx}?mode=post&amp;" . POST_USERS_URL . '=' . $view_userdata['user_id']) : '';
                        $txt = create_birthday_date($lang['DATE_FORMAT'], $view_userdata[$field_name], $userdata['user_timezone']);
                        $img = intval(substr($view_userdata[$field_name], 4, 4)) == date('md', cal_date(time(), $board_config['board_timezone'])) ? $pm_display ? '<a href="' . $temp_url . '"><img src="' . $images['icon_birthday'] . '" border="0" align="absbottom" alt="' . $lang['Happy_birthday'] . '" title="' . $lang['Happy_birthday'] . '" /></a>' : '<img src="' . $images['icon_birthday'] . '" border="0" align="absbottom" alt="' . $lang['Happy_birthday'] . '" title="' . $lang['Happy_birthday'] . '" />' : '';
                    }
                    break;
                default:
                    $txt = $view_userdata[$field_name];
                    if ($field_data['lnk'] && !isset($view_userdata[$field_name])) {
                        $txt = $title;
                    }
                    $img .= isset($images[$field_data['image']]) ? '<img src="' . $images[$field_data['image']] . '" border="0" alt="' . $alt . '" title="' . $title . '" />' : '';
                    break;
            }
            // res
            $res = pcp_output_format($field_name, $txt, $img, $map_name, $lnk, $view_userdata);
        }
    }
    return $res;
}