コード例 #1
0
ファイル: helper.php プロジェクト: JozefAB/qk
 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;
 }