public static function showCustomField($field, $selected = array(), $editable = true, $show_required = true, $type = 'user') { if (empty($field) || empty($field->type)) { return false; } $name_field = $type == 'user' ? 'rsm_fields' : 'rsm_membership_fields'; $return = array(); $return[0] = '<label title="' . JText::_($field->label) . '" class="fs-field-label fs-anim-upper hasTip" for="rsm_' . $field->name . '" id="jform_' . $field->name . '-lbl">' . JText::_($field->label) . '</label>'; $return[1] = ''; switch ($field->type) { case 'hidden': $name = $name_field . '[' . $field->name . ']'; $app = JFactory::getApplication(); if ($app->isAdmin() && isset($selected[$field->name])) { $field->values = $selected[$field->name]; } else { $field->values = RSMembershipHelper::isCode($field->values); } $return[1] = '<input type="hidden" name="' . $name . '" id="rsm_' . $field->name . '" value="' . htmlspecialchars($field->values, ENT_COMPAT, 'utf-8') . '" />'; if ($editable && $app->isAdmin()) { $return[1] = '<input type="text" class="rsm_textbox" name="' . $name . '" id="rsm_' . $field->name . '" value="' . htmlspecialchars($field->values, ENT_COMPAT, 'utf-8') . '" size="40" />'; } else { if (!$editable && $app->isAdmin()) { $return[1] = htmlspecialchars($field->values, ENT_COMPAT, 'utf-8'); } } if (!$app->isAdmin()) { $return[2] = 'hidden'; } break; case 'freetext': $field->values = RSMembershipHelper::isCode($field->values); $return[1] = $field->values; break; case 'textbox': if (isset($selected[$field->name])) { $field->values = $selected[$field->name]; } else { $field->values = RSMembershipHelper::isCode($field->values); } $name = $name_field . '[' . $field->name . ']'; /*$return[1] = '<input type="text" name="'.$name.'" id="rsm_'.$field->name.'" value="'.htmlspecialchars($field->values, ENT_COMPAT, 'utf-8').'" size="40" '.RSMembershipHelper::addClass($field->additional, 'rsm_textbox').' />';*/ $return[1] = '<input type="text" name="' . $name . '" class="fs-anim-lower" id="rsm_' . $field->name . '" value="' . htmlspecialchars($field->values, ENT_COMPAT, 'utf-8') . '" size="40" required />'; if (!$editable) { $return[1] = htmlspecialchars($field->values, ENT_COMPAT, 'utf-8'); } break; case 'textarea': if (isset($selected[$field->name])) { $field->values = $selected[$field->name]; } else { $field->values = RSMembershipHelper::isCode($field->values); } $name = $name_field . '[' . $field->name . ']'; $return[1] = '<textarea name="' . $name . '" id="rsm_' . $field->name . '" ' . RSMembershipHelper::addClass($field->additional, 'textarea rsm_textarea') . '>' . htmlspecialchars($field->values, ENT_COMPAT, 'utf-8') . '</textarea>'; if (!$editable) { $return[1] = nl2br(htmlspecialchars($field->values, ENT_COMPAT, 'utf-8')); } break; case 'select': case 'multipleselect': $field->values = RSMembershipHelper::isCode($field->values); $field->values = str_replace("\r\n", "\n", $field->values); $field->values = explode("\n", $field->values); $multiple = $field->type == 'multipleselect' ? 'multiple="multiple"' : ''; $name = $name_field . '[' . $field->name . '][]'; if ($editable) { $return[1] = '<select ' . $multiple . ' name="' . $name . '" id="rsm_' . $field->name . '" ' . RSMembershipHelper::addClass($field->additional, 'rsm_select') . '>'; foreach ($field->values as $value) { $tmp = explode('|', $value, 2); $label = isset($tmp[1]) ? $tmp[1] : $tmp[0]; $val = $tmp[0]; $found_checked = false; if (preg_match('/\\[c\\]/', $value)) { $value = str_replace('[c]', '', $value); $label = str_replace('[c]', '', $label); $val = str_replace('[c]', '', $val); $found_checked = true; } $checked = ''; if (isset($selected[$field->name]) && in_array($val, $selected[$field->name])) { $checked = 'selected="selected"'; } elseif (!isset($selected[$field->name]) && $found_checked) { $checked = 'selected="selected"'; } $return[1] .= '<option ' . $checked . ' value="' . htmlspecialchars($val, ENT_COMPAT, 'utf-8') . '">' . htmlspecialchars($label, ENT_COMPAT, 'utf-8') . '</option>'; } $return[1] .= '</select>'; } else { $return[1] = ''; if (isset($selected[$field->name])) { foreach ($field->values as $value) { $value = str_replace('[c]', '', $value); $tmp = explode('|', $value, 2); $label = isset($tmp[1]) ? $tmp[1] : $tmp[0]; $val = $tmp[0]; if (is_array($selected[$field->name]) && in_array($val, $selected[$field->name]) || !is_array($selected[$field->name]) && $selected[$field->name] == $val) { $return[1] .= htmlspecialchars($label, ENT_COMPAT, 'utf-8') . '<br />'; } } } } break; case 'checkbox': $field->values = RSMembershipHelper::isCode($field->values); $field->values = str_replace("\r\n", "\n", $field->values); $field->values = explode("\n", $field->values); if ($editable) { foreach ($field->values as $i => $value) { $tmp = explode('|', $value, 2); $label = isset($tmp[1]) ? $tmp[1] : $tmp[0]; $val = $tmp[0]; $found_checked = false; if (preg_match('/\\[c\\]/', $value)) { $value = str_replace('[c]', '', $value); $label = str_replace('[c]', '', $label); $val = str_replace('[c]', '', $val); $found_checked = true; } $checked = ''; if (isset($selected[$field->name]) && in_array($val, $selected[$field->name])) { $checked = 'checked="checked"'; } elseif (!isset($selected[$field->name]) && $found_checked) { $checked = 'checked="checked"'; } $name = $name_field . '[' . $field->name . '][]'; $return[1] .= '<input ' . $checked . ' type="checkbox" name="' . $name . '" value="' . htmlspecialchars($val, ENT_COMPAT, 'utf-8') . '" id="rsm_field_' . $field->id . '_' . $i . '" ' . RSMembershipHelper::addClass($field->additional, 'pull-left rsm-margin-chradio') . ' /> <label for="rsm_field_' . $field->id . '_' . $i . '">' . $label . '</label>'; } } else { $return[1] = ''; if (isset($selected[$field->name])) { foreach ($field->values as $value) { $value = str_replace('[c]', '', $value); $tmp = explode('|', $value, 2); $label = isset($tmp[1]) ? $tmp[1] : $tmp[0]; $val = $tmp[0]; if (is_array($selected[$field->name]) && in_array($val, $selected[$field->name]) || !is_array($selected[$field->name]) && $selected[$field->name] == $val) { $return[1] .= htmlspecialchars($label, ENT_COMPAT, 'utf-8') . '<br />'; } } } } break; case 'radio': $field->values = RSMembershipHelper::isCode($field->values); $field->values = str_replace("\r\n", "\n", $field->values); $field->values = explode("\n", $field->values); if ($editable) { foreach ($field->values as $i => $value) { $tmp = explode('|', $value, 2); $label = isset($tmp[1]) ? $tmp[1] : $tmp[0]; $val = $tmp[0]; $found_checked = false; if (preg_match('/\\[c\\]/', $value)) { $value = str_replace('[c]', '', $value); $label = str_replace('[c]', '', $label); $val = str_replace('[c]', '', $val); $found_checked = true; } $checked = ''; if (isset($selected[$field->name]) && $selected[$field->name] == $val) { $checked = 'checked="checked"'; } elseif (!isset($selected[$field->name]) && $found_checked) { $checked = 'checked="checked"'; } $name = $name_field . '[' . $field->name . ']'; $return[1] .= '<input ' . $checked . ' type="radio" name="' . $name . '" value="' . htmlspecialchars($val, ENT_COMPAT, 'utf-8') . '" id="rsm_field_' . $field->id . '_' . $i . '" ' . RSMembershipHelper::addClass($field->additional, 'pull-left rsm-margin-chradio') . '/> <label for="rsm_field_' . $field->id . '_' . $i . '">' . $label . '</label>'; } } else { $return[1] = ''; if (isset($selected[$field->name])) { foreach ($field->values as $value) { $value = str_replace('[c]', '', $value); $tmp = explode('|', $value, 2); $label = isset($tmp[1]) ? $tmp[1] : $tmp[0]; $val = $tmp[0]; if ($selected[$field->name] == $val) { $return[1] .= htmlspecialchars($label, ENT_COMPAT, 'utf-8') . '<br />'; } } } } break; case 'calendar': if (isset($selected[$field->name])) { $field->values = $selected[$field->name]; } else { $field->values = RSMembershipHelper::isCode($field->values); } $name = $name_field . '[' . $field->name . ']'; $format = RSMembershipHelper::getConfig('date_format'); $format = RSMembershipHelper::getCalendarFormat($format); if ($editable) { $return[1] = JHTML::_('calendar', $field->values, $name, 'rsm_' . $field->name, $format, $field->additional); } else { $return[1] = htmlspecialchars($field->values, ENT_COMPAT, 'utf-8'); } break; } if ($field->required && $editable && $show_required) { /*$return[1] .= ' '.JText::_('COM_RSMEMBERSHIP_REQUIRED');*/ } return $return; }