} //------------------- // 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' => ' ' . ($list_field[$j] != 'field_name' ? pcp_format_lang($field_def[$list_field[$j]]['short']) : $lang['PCP_usermaps_fields']) . ' ', '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;