}
 //-------------------
 // fields
 //-------------------
 $text = is_string($maps[$map]['fields']) || empty($maps[$map]['fields']);
 $template->assign_block_vars('details.block', array('L_TITLE' => $lang['PCP_usermaps_fields'], 'TITLE' => $text ? empty($maps[$map]['fields']) ? $lang['None'] : pcp_format_lang($maps[$map]['fields'], true) : '', 'SPAN' => count($list_field)));
 // one field
 if ($text) {
     $template->assign_block_vars('details.block.text', array());
 }
 // list of field
 if (!$text) {
     $template->assign_block_vars('details.block.multi', array());
     // header
     for ($j = 0; $j < count($list_field); $j++) {
         $template->assign_block_vars('details.block.multi.col', array('TITLE' => '&nbsp;' . ($list_field[$j] != 'field_name' ? pcp_format_lang($field_def[$list_field[$j]]['short']) : $lang['PCP_usermaps_fields']) . '&nbsp;', 'WIDTH' => $list_field[$j] == 'field_name' ? '50%' : ($list_field[$j] == 'lang_key' ? '50%' : '10%')));
     }
     $color = false;
     @reset($maps[$map]['fields']);
     $i = 0;
     while (list($field_name, $field_data) = @each($maps[$map]['fields'])) {
         $field_data['field_name'] = $field_name;
         $i++;
         $color = !$color;
         $template->assign_block_vars('details.block.multi.row', array('COLOR' => $color ? 'row1' : 'row2'));
         for ($j = 0; $j < count($list_field); $j++) {
             $value = $field_data[$list_field[$j]];
             if (empty($value) && !empty($user_fields[$field_name][$list_field[$j]])) {
                 $value = $user_fields[$field_name][$list_field[$j]];
             }
             $template->assign_block_vars('details.block.multi.row.col', array('ALIGN' => empty($types_list[$field_def[$list_field[$j]]['type']]['align']) ? 'left' : $types_list[$field_def[$list_field[$j]]['type']]['align'], 'VALUE' => pcp_format_output($field_def[$list_field[$j]]['type'], $value, $field_def[$list_field[$j]]['style'])));
function pcp_output_maps($user_maps)
{
    global $phpbb_root_path, $phpEx, $template, $userdata;
    global $auth_list, $field_def, $user_fields;
    // save template state
    $sav_tpl = $template->_tpldata;
    // template
    $template->set_filenames(array('output' => 'admin/pcp_usermaps_def.tpl'));
    // main
    $template->assign_vars(array('TIME' => date('Y-m-d H:i:s', time()), 'USERNAME' => $userdata['username']));
    // first pass : get the longest field lib
    $max_length = 0;
    @reset($field_def);
    while (list($def_key, $def_value) = @each($field_def)) {
        if (strlen($def_key) > $max_length) {
            $max_length = strlen($def_key);
        }
    }
    $max_length += 2;
    // send the header description
    @reset($field_def);
    while (list($def_key, $def_value) = @each($field_def)) {
        $template->assign_block_vars('def_title', array('KEY' => $def_key, 'L_KEY' => pcp_format_lang($def_value['lang_key']), 'PAD' => str_pad('', $max_length - strlen($def_key))));
    }
    // dump map
    @reset($user_maps);
    while (list($map_name, $map_data) = @each($user_maps)) {
        // map header
        $template->assign_block_vars('map', array('NAME' => str_replace("''", "\\'", $map_name), 'ORDER' => str_replace("''", "\\'", $map_data['order']), 'SPLIT' => $map_data['split'] ? 'true' : 'false', 'CUSTOM' => intval($map_data['custom']), 'TITLE_SINGLE' => is_string($map_data['title']) ? str_replace("''", "\\'", $map_data['title']) : ''));
        if (!empty($map_data['order'])) {
            $template->assign_block_vars('map.order', array());
        }
        if ($map_data['split']) {
            $template->assign_block_vars('map.split', array());
        }
        if (!empty($map_data['custom'])) {
            $template->assign_block_vars('map.custom', array());
        }
        if (empty($map_data['title']) || is_string($map_data['title'])) {
            $template->assign_block_vars('map.title_single', array());
        }
        // fields title
        if (!empty($map_data['title']) && !is_string($map_data['title'])) {
            $template->assign_block_vars('map.block', array('NAME' => 'title'));
            @reset($map_data['title']);
            while (list($field_name, $field_data) = @each($map_data['title'])) {
                $template->assign_block_vars('map.block.field', array('NAME' => str_replace("''", "\\'", $field_name)));
                @reset($field_def);
                while (list($def_key, $def_value) = @each($field_def)) {
                    if ($def_key != 'field_name' && $field_data[$def_key] != $user_fields[$field_name][$def_key] && (!empty($field_data[$def_key]) || empty($field_data[$def_key]) && !is_string($field_data[$def_key]) && $field_data[$def_key] == "0")) {
                        $value = $field_data[$def_key];
                        if (is_string($value) || empty($value) && $value != "0") {
                            $value = sprintf("'%s'", str_replace("''", "\\'", str_replace('\\"', '"', $value)));
                        }
                        if ($def_value['type'] == 'BOOLEAN') {
                            $value = $value ? 'true' : 'false';
                        }
                        $template->assign_block_vars('map.block.field.def', array('DEF_KEY' => $def_key, 'VALUE' => $value, 'PAD' => str_pad('', $max_length - strlen($def_key))));
                    }
                }
            }
        }
        // fields
        if (!empty($map_data['fields'])) {
            $template->assign_block_vars('map.block', array('NAME' => 'fields'));
            @reset($map_data['fields']);
            while (list($field_name, $field_data) = @each($map_data['fields'])) {
                $template->assign_block_vars('map.block.field', array('NAME' => str_replace("''", "\\'", $field_name)));
                @reset($field_def);
                while (list($def_key, $def_value) = @each($field_def)) {
                    if ($def_key != 'field_name' && $field_data[$def_key] != $user_fields[$field_name][$def_key] && !empty($field_data[$def_key])) {
                        $data = $field_data[$def_key];
                        $pres = "'%s'";
                        switch ($def_key) {
                            case 'get_mode':
                                if ($data == $field_data['type']) {
                                    $data = '';
                                }
                                break;
                            case 'auth':
                                $pres = '%s';
                                $data = $auth_list[$data];
                                break;
                        }
                        if (!empty($data)) {
                            if ($def_value['type'] == 'BOOLEAN') {
                                $data = $data ? 'true' : 'false';
                                $pres = '%s';
                            }
                            $template->assign_block_vars('map.block.field.def', array('DEF_KEY' => str_replace("''", "\\'", $def_key), 'VALUE' => sprintf($pres, str_replace('\\"', '"', str_replace("''", "\\'", $data))), 'PAD' => str_pad('', $max_length - strlen($def_key))));
                        }
                    }
                }
            }
        }
    }
    // transfert to a var
    $template->assign_var_from_handle('output', 'output');
    $res = "<?php\n" . $template->_tpldata['.'][0]['output'] . "\n?>";
    // restore template saved state
    $template->_tpldata = $sav_tpl;
    // output to file
    $fname = $phpbb_root_path . './profilcp/def/def_usermaps.' . $phpEx;
    @chmod($fname, 0666);
    $handle = @fopen($fname, 'w');
    @fwrite($handle, $res);
    @fclose($handle);
}
    $color = false;
    @reset($fields);
    while (list($field_name, $field_data) = @each($fields)) {
        // check if sql actions can be performed
        $sql_actions = '';
        $sql_create = false;
        $sql_modify = false;
        $sql_delete = false;
        pcp_check_sql_actions($field_name, $fields, $fields_table, $sql_create, $sql_modify, $sql_delete);
        $link = '<a href="' . append_sid("./admin_pcp_userfields.{$phpEx}?mode=sql%s&field={$field_name}&sort={$sort}" . ($order == 'ASC' ? '' : "&order={$order}")) . '" class="genmed" />%s</a>';
        $sql_actions .= (empty($sql_actions) ? '' : '<br />') . ($sql_create ? sprintf($link, 'create', $lang['Create']) : '');
        $sql_actions .= (empty($sql_actions) ? '' : '<br />') . ($sql_modify ? sprintf($link, 'edit', $lang['Edit']) : '');
        $sql_actions .= (empty($sql_actions) ? '' : '<br />') . ($sql_delete ? sprintf($link, 'delete', $lang['Delete']) : '');
        // send to template
        $color = !$color;
        $template->assign_block_vars('fields', array('COLOR' => $color ? 'row1' : 'row2', 'NAME' => $field_name, 'LANG_KEY' => pcp_format_lang($field_data['lang_key'], true), 'EXPLAIN' => empty($field_data['explain']) ? '' : '<br />' . pcp_format_lang($field_data['explain'], true), 'IMAGE' => pcp_format_image($field_data['image'], true), 'CLASS' => $field_data['class'], 'TYPE' => $field_data['type'], 'GET_MODE' => $field_data['type'] == $field_data['get_mode'] ? '' : $field_data['get_mode'], 'U_NAME' => append_sid("./admin_pcp_userfields.{$phpEx}?mode=edit&field={$field_name}&sort={$sort}" . ($order == 'ASC' ? '' : "&order={$order}")), 'U_CLASS' => append_sid("./admin_pcp_classesfields.{$phpEx}?mode=edit&class=" . $field_data['class']), 'SQL_ACTIONS' => $sql_actions));
        for ($i = 0; $i < count($maps_usage[$field_name]); $i++) {
            $template->assign_block_vars('fields.maps', array('NAME' => $maps_usage[$field_name][$i], 'U_NAME' => append_sid("./admin_pcp_usermaps.{$phpEx}?map=" . $maps_usage[$field_name][$i])));
        }
        if (!empty($sql_actions)) {
            $template->assign_block_vars('fields.sql_actions', array());
        }
    }
    // footer
    $s_hidden_fields = '';
    $s_hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
    $template->assign_vars(array('S_ACTION' => append_sid("./admin_pcp_userfields.{$phpEx}"), 'S_HIDDEN_FIELDS' => $s_hidden_fields));
}
// dump
$template->pparse('body');
include './page_footer_admin.' . $phpEx;