public static function getFieldsValidation($membership_id = null, $upgrade = null) { $return = array(); if (is_null($upgrade)) { $fields = RSMembership::getCustomFields(array('published' => 1, 'required' => 1)); } else { $fields = array(); } if (!is_null($membership_id)) { $membership_fields = RSMembership::getCustomMembershipFields($membership_id, array('published' => 1, 'required' => 1)); $fields = array_merge($fields, $membership_fields); } foreach ($fields as $field) { $js = ''; switch ($field->type) { case 'select': case 'multipleselect': case 'textarea': case 'textbox': case 'calendar': $element = 'rsm_' . $field->name; $js .= "if (document.getElementById('" . $element . "').value.length == 0)" . "\n"; break; case 'checkbox': case 'radio': $field->values = RSMembershipHelper::isCode($field->values); $field->values = str_replace("\r\n", "\n", $field->values); $field->values = explode("\n", $field->values); $ids = array(); foreach ($field->values as $i => $value) { $element = 'rsm_field_' . $field->id . '_' . $i; $ids[] = "!document.getElementById('" . $element . "').checked"; } $element = ''; $js .= "if (" . implode(" && ", $ids) . ")" . "\n"; break; } $validation_message = JText::_($field->validation); if (empty($validation_message)) { $validation_message = JText::sprintf('COM_RSMEMBERSHIP_VALIDATION_DEFAULT_ERROR', JText::_($field->label)); } $validation_message = str_replace(array("\r\n", "\r"), "\n", $validation_message); $validation_message = str_replace("\n", '\\n', $validation_message); $js .= "{\n"; $js .= "msg.push('" . JText::_($validation_message, true) . "');" . "\n"; if (@$element) { $js .= "document.getElementById('" . $element . "').className += ' rsm_field_error';\n"; } $js .= "}\n"; $return[] = $js; } return $return; }
function getFieldsValidation() { $return = array(); $db = JFactory::getDBO(); $db->setQuery("SELECT * FROM #__rsmembership_fields WHERE published='1' AND required = '1' ORDER BY ordering"); $fields = $db->loadObjectList(); foreach ($fields as $field) { $js = ''; switch ($field->type) { case 'select': case 'multipleselect': case 'textarea': case 'textbox': case 'calendar': $element = 'rsm_' . $field->name; $js .= "if (document.getElementById('" . $element . "').value.length == 0)" . "\n"; break; case 'checkbox': case 'radio': $field->values = RSMembershipHelper::isCode($field->values); $field->values = str_replace("\r\n", "\n", $field->values); $field->values = explode("\n", $field->values); $ids = array(); foreach ($field->values as $i => $value) { $element = 'rsm_field_' . $field->id . '_' . $i; $ids[] = "!document.getElementById('" . $element . "').checked"; } $element = ''; $js .= "if (" . implode(" && ", $ids) . ")" . "\n"; break; } $validation_message = JText::_($field->validation); if (empty($validation_message)) { $validation_message = JText::sprintf('RSM_VALIDATION_DEFAULT_ERROR', JText::_($field->label)); } $validation_message = str_replace(array("\r\n", "\r"), "\n", $validation_message); $validation_message = str_replace("\n", '\\n', $validation_message); $js .= "{\n"; $js .= "msg.push('" . JText::_($validation_message, true) . "');" . "\n"; if (@$element) { $js .= "document.getElementById('" . $element . "').className += ' rsm_field_error';\n"; } $js .= "}\n"; $return[] = $js; } return $return; }