Exemplo n.º 1
0
/**
 * @param array $fields
 * @param array $values
 * @param DefaultFormContainer $form_container
 * @param DefaultForm $form
 * @param bool $search
 */
function output_custom_profile_fields($fields, $values, &$form_container, &$form, $search = false)
{
    global $lang;
    if (!is_array($fields)) {
        return;
    }
    foreach ($fields as $profile_field) {
        $profile_field['name'] = htmlspecialchars_uni($profile_field['name']);
        $profile_field['description'] = htmlspecialchars_uni($profile_field['description']);
        $profile_field['type'] = htmlspecialchars_uni($profile_field['type']);
        list($type, $options) = explode("\n", $profile_field['type'], 2);
        $type = trim($type);
        $field_name = "fid{$profile_field['fid']}";
        switch ($type) {
            case "multiselect":
                if (!is_array($values[$field_name])) {
                    $user_options = explode("\n", $values[$field_name]);
                } else {
                    $user_options = $values[$field_name];
                }
                $selected_options = array();
                foreach ($user_options as $val) {
                    $selected_options[$val] = $val;
                }
                $select_options = explode("\n", $options);
                $options = array();
                if ($search == true) {
                    $select_options[''] = $lang->na;
                }
                foreach ($select_options as $val) {
                    $val = trim($val);
                    $options[$val] = $val;
                }
                if (!$profile_field['length']) {
                    $profile_field['length'] = 3;
                }
                $code = $form->generate_select_box("profile_fields[{$field_name}][]", $options, $selected_options, array('id' => "profile_field_{$field_name}", 'multiple' => true, 'size' => $profile_field['length']));
                break;
            case "select":
                $select_options = array();
                if ($search == true) {
                    $select_options[''] = $lang->na;
                }
                $select_options += explode("\n", $options);
                $options = array();
                foreach ($select_options as $val) {
                    $val = trim($val);
                    $options[$val] = $val;
                }
                if (!$profile_field['length']) {
                    $profile_field['length'] = 1;
                }
                if ($search == true) {
                    $code = $form->generate_select_box("profile_fields[{$field_name}][{$field_name}]", $options, $values[$field_name], array('id' => "profile_field_{$field_name}", 'size' => $profile_field['length']));
                } else {
                    $code = $form->generate_select_box("profile_fields[{$field_name}]", $options, $values[$field_name], array('id' => "profile_field_{$field_name}", 'size' => $profile_field['length']));
                }
                break;
            case "radio":
                $radio_options = array();
                if ($search == true) {
                    $radio_options[''] = $lang->na;
                }
                $radio_options += explode("\n", $options);
                $code = '';
                foreach ($radio_options as $val) {
                    $val = trim($val);
                    $code .= $form->generate_radio_button("profile_fields[{$field_name}]", $val, $val, array('id' => "profile_field_{$field_name}", 'checked' => $val == $values[$field_name] ? true : false)) . "<br />";
                }
                break;
            case "checkbox":
                if (!is_array($values[$field_name])) {
                    $user_options = explode("\n", $values[$field_name]);
                } else {
                    $user_options = $values[$field_name];
                }
                foreach ($user_options as $val) {
                    $selected_options[$val] = $val;
                }
                $select_options = array();
                if ($search == true) {
                    $select_options[''] = $lang->na;
                }
                $select_options += explode("\n", $options);
                $code = '';
                foreach ($select_options as $val) {
                    $val = trim($val);
                    $code .= $form->generate_check_box("profile_fields[{$field_name}][]", $val, $val, array('id' => "profile_field_{$field_name}", 'checked' => $val == $selected_options[$val] ? true : false)) . "<br />";
                }
                break;
            case "textarea":
                $extra = '';
                if (isset($mybb->input['action']) && $mybb->input['action'] == "search") {
                    $extra = " {$lang->or} " . $form->generate_check_box("profile_fields[{$field_name}_blank]", 1, $lang->is_not_blank, array('id' => "{$field_name}_blank", 'checked' => $values[$field_name . '_blank']));
                }
                $code = $form->generate_text_area("profile_fields[{$field_name}]", $values[$field_name], array('id' => "profile_field_{$field_name}", 'rows' => 6, 'cols' => 50)) . $extra;
                break;
            default:
                $extra = '';
                if (isset($mybb->input['action']) && $mybb->input['action'] == "search") {
                    $extra = " {$lang->or} " . $form->generate_check_box("profile_fields[{$field_name}_blank]", 1, $lang->is_not_blank, array('id' => "{$field_name}_blank", 'checked' => $values[$field_name . '_blank']));
                }
                $code = $form->generate_text_box("profile_fields[{$field_name}]", $values[$field_name], array('id' => "profile_field_{$field_name}", 'maxlength' => $profile_field['maxlength'], 'length' => $profile_field['length'])) . $extra;
                break;
        }
        $form_container->output_row($profile_field['name'], $profile_field['description'], $code, "", array('id' => "profile_field_{$field_name}"));
        $code = $user_options = $selected_options = $radio_options = $val = $options = '';
    }
}