/** * @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 = ''; } }
} else { // Usergroup query because no All option $usergroups['-1'] = "All"; $usergroupquery = $db->simple_select("usergroups", "gid,title"); while ($group = $db->fetch_array($usergroupquery)) { $usergroups[$group['gid']] = $group['title']; } $form = new DefaultForm("index.php?module=style-theme_vars&action=create", "post"); $form_container = new FormContainer("Create"); $form_container->output_row("Unique Name <em>*</em>", "Enter a unique name for the variable.", $form->generate_text_box("unique_name", $mybb->get_input("unique_name")), "unique_name"); $form_container->output_row("Name <em>*</em>", "Enter the readable name of the variable.", $form->generate_text_box("name", $mybb->get_input("name")), "name"); $form_container->output_row("Theme ", "Which theme the variable belongs to.", $form->generate_select_box("tid", $themearray, $mybb->get_input("tid")), "tid"); $form_container->output_row("Active", "If no, this variable will not be replaced.", $form->generate_select_box("active", array("1" => "Yes", "0" => "No"), $mybb->get_input("active")), "active"); $form_container->output_row("Forums", "Select which forums this variable will work in.", $form->generate_forum_select("forums[]", -1, array("main_option" => "All", "multiple" => "multiple")), "forums"); $form_container->output_row("Usergroups", "Select which usergroups will see the content.", $form->generate_select_box("usergroups[]", $usergroups, -1, array("multiple" => "multiple")), "usergroups"); $form_container->output_row("Content <em>*</em>", "This is the content users will see.", $form->generate_text_area("content", ""), "content"); $form_container->end(); $form->output_submit_wrapper(array($form->generate_submit_button("Create Variable"))); $form->end(); } } if ($mybb->input['action'] == "copy" && $mybb->input['vid']) { $vid = (int) $mybb->get_input("vid"); $variablequery = $db->simple_select("theme_variables", "*", "vid={$vid}"); $info = $db->fetch_array($variablequery); if (!$info['vid']) { flash_message("Invalid variable.", "error"); admin_redirect("index.php?module=style-theme_vars"); } $page->add_breadcrumb_item("Copy Variable"); $page->output_header("Theme Variable Manager");