/**
* Génère l'affichage public (non-éditable).
*
* @param $profile_data données du membre concerné.
* @param $user_data données de l'utilisateur affichang la page.
* @param $context contexte considéré.
* @param $bloc_name nom du bloc dans le fichier .tpl destination (par défaut <em>ADVANCED_BLOCK</em>).
* @param $row éventuel bloc dans lequel sera inséré ce bloc (exemple dans le cas des posts : 'postrow').
* @param $nbHardCodedFields nombre de champs codés en dur déjà présents et à ajouter dans le colspan (utile pour la memberlist notamment).
* @return nombre de champs affichés.
*/
function get_field_display($profile_data, $user_data, $context, $block_name = 'ADVANCED_BLOCK', $row = '', $nbHardCodedFields = 9)
{
global $template, $lang, $board_config, $phpbb_root_path, $phpEx;
$displayed_fields = 0;
// Récupéraiton des données relatives au contexte.
$context_data = AddedFields::get_context($context);
if($context_data['context_alias'] != '') { $context = $context_data['context_alias']; }
// On ne génère rien dans le cas des invités ou dans le cas où les données de configuration sont incomplètes.
if($block_name != '' && $context_data['context_template_block'] != '' && (!$context_data['context_generate_values'] || $profile_data['user_id'] != ANONYMOUS))
{
// Sauvegarde de l'état du template.
$template_state_save = $template->_tpldata;
// Création du bloc pour le template.
$template->set_filenames(array('advanced_block' => 'extended_profile_blocks.tpl'));
// Données globales au bloc.
$template->assign_block_vars($context_data['context_template_block'], array(
'L_ADVANCED_PROFILE' => $lang['ChSu_Advanced_profile'],
'L_ITEMS_REQUIRED' => $lang['Items_required'])
);
// Parcours des champs.
if(is_array($this->get_all_fields()))
{
foreach($this->get_all_fields() as $field)
{
// On affiche le champ s'il doit être affiché dnas le profil public.
if(AddedFields::can_display($field, $user_data, $context))
{
// Calcul de la valeur affichable du champ, si elle existe.
if($context_data['context_generate_values'])
{
if($field['field_type'] == 'custom_field')
{
$this->temporary_profile_data = $profile_data;
$value = $field['field_text'];
$value = str_replace('<', '<', $value);
$value = str_replace('>', '>', $value);
$value = str_replace('"', '"', $value);
$value = preg_replace_callback("#%%(\S*)%%#U", 'ChSu_replace_reference', $value);
}
else
{
$value = AddedFields::get_converted_value($field, $profile_data[$field['_field_var']], 'displayable');
}
}
else
{
$value = FALSE;
}
// Si l'on doit ignorer les champs vides, on n'affiche pas.
if(!$context_data['context_generate_values'] || $context_data['context_display_empty'] || $value !== FALSE)
{
$displayed_fields++;
$template->assign_block_vars($context_data['context_template_block'] . '.field_row', array(
'NAME' => $field['field_name'],
'DESCRIPTION' => $field['field_description'],
'VALUE' => $value)
);
}
}
}
}
// Génération du bloc.
$template->assign_var_from_handle('_block', 'advanced_block');
$generated_block = $template->_tpldata['.'][0]['_block'];
// Restauration de l'état du template.
$template->_tpldata = $template_state_save;
// Assigantion du bloc à la page.
if($row == '')
{
$template->assign_vars(array(
'CHSU_DISPLAYED_FIELDS' => $displayed_fields,
'CHSU_COLSPAN_VALUE' => $nbHardCodedFields + $displayed_fields,
$block_name => $generated_block)
);
}
else
{
$template->assign_block_vars($row, array(
'CHSU_DISPLAYED_FIELDS' => $displayed_fields,
'CHSU_COLSPAN_VALUE' => $nbHardCodedFields + $displayed_fields,
$block_name => $generated_block)
);
}
}
return $displayed_fields;
}