support for simple self service fields

This commit is contained in:
Roland Gruber 2013-04-20 16:14:03 +00:00
parent 546303df10
commit c4ba99bbba
1 changed files with 74 additions and 0 deletions

View File

@ -1261,6 +1261,80 @@ abstract class baseModule {
$this->attributes[$attrName] = array_values($this->attributes[$attrName]);
}
/**
* Adds a simple text input field for the self service.
* The field name will be the same as the class name plus "_" plus attribute name (e.g. posixAccount_cn).
*
* @param array $container array that is used as return value for getSelfServiceOptions()
* @param String $name attribute name (== field name)
* @param String $label label to display in front of input field
* @param array $fields list of active fields
* @param array $attributes attributes of LDAP account
* @param array $readOnlyFields list of read-only fields
* @param boolean $required field is required
* @param boolean $isTextArea display as text area
*/
protected function addSimpleSelfServiceTextField(&$container, $name, $label, &$fields, &$attributes, &$readOnlyFields, $required = false, $isTextArea = false) {
$value = '';
if (isset($attributes[$name][0])) {
$value = $attributes[$name][0];
}
if (!$isTextArea && !in_array($name, $readOnlyFields)) {
$field = new htmlInputField(get_class($this) . '_' . $name, $value);
$field->setRequired($required);
}
elseif ($isTextArea && !in_array($name, $readOnlyFields)) {
$field = new htmlInputTextarea(get_class($this) . '_' . $name, $value, 30, 3);
}
else {
if (!$isTextArea) {
$field = new htmlOutputText($value);
}
else {
$value = htmlspecialchars($value);
$value = str_replace("\n", '<br>', $value);
$field = new htmlOutputText($value, false);
}
}
$container[$name] = new htmlTableRow(array(
new htmlOutputText($label), $field
));
}
/**
* Checks the input value of a self service text field.
* The field name must be the same as the class name plus "_" plus attribute name (e.g. posixAccount_cn).
* If validation is used then there must exist a message named [{attribute name}][0] (e.g. $this->messages['street'][0]).
*
* @param array $container return value of checkSelfServiceOptions()
* @param String $name attribute name
* @param array $attributes LDAP attributes
* @param string $fields input fields
* @param array $readOnlyFields list of read-only fields
* @param String $validationID validation ID for get_preg()
*/
protected function checkSimpleSelfServiceTextField(&$container, $name, &$attributes, $fields, &$readOnlyFields, $validationID = null) {
if (in_array($name, $fields) && !in_array($name, $readOnlyFields)) {
$fieldName = get_class($this) . '_' . $name;
if (isset($_POST[$fieldName]) && ($_POST[$fieldName] != '')) {
if (($validationID != null) && !get_preg($_POST[$fieldName], $validationID)) {
$container['messages'][] = $this->messages[$name][0];
}
else {
if (isset($attributes[$name])) {
$container['mod'][$name] = array($_POST[$fieldName]);
}
else {
$container['add'][$name] = array($_POST[$fieldName]);
}
}
}
elseif (isset($attributes[$name])) {
$container['del'][$name] = $attributes[$name];
}
}
}
/**
* Returns a list of managed object classes for this module.
*