pla_error(_('You cannot perform updates while server is in read-only mode')); } if (!$ldapserver->haveAuthInfo()) { pla_error(_('Not enough information to login to server. Please check your configuration.')); } $new_dn = isset($_POST['new_dn']) ? $_POST['new_dn'] : null; $required_attrs = isset($_POST['required_attrs']) ? $_POST['required_attrs'] : false; $object_classes = unserialize(rawurldecode($_POST['object_classes'])); $redirect = isset($_POST['redirect']) ? $_POST['redirect'] : false; # See if there are any presubmit values to work out. if (isset($_POST['presubmit']) && count($_POST['presubmit']) && isset($_POST['template'])) { $templates = new Templates($ldapserver->server_id); $template = $templates->GetTemplate($_POST['template']); foreach ($_POST['presubmit'] as $attr) { $_POST['attrs'][] = $attr; $_POST['form'][$attr] = $templates->EvaluateDefault($ldapserver, $template['attribute'][$attr]['presubmit'], $_POST['container']); $_POST['vals'][] = $_POST['form'][$attr]; } # @todo: This section needs to be cleaned up, and will be when the old templates are removed. In the mean time... # Rebuild the $_POST['attrs'] & $_POST['vals'], as they can be inconsistent. unset($_POST['attrs']); unset($_POST['vals']); foreach ($_POST['form'] as $attr => $val) { $_POST['attrs'][] = $attr; $_POST['vals'][] = $val; } } $vals = isset($_POST['vals']) ? $_POST['vals'] : array(); $attrs = isset($_POST['attrs']) ? $_POST['attrs'] : array(); # build the new entry $new_entry = array();
if (is_array($detail['value'])) { # If value is an array, then it must a select list. $type = 'select'; $defaultresult = sprintf('<select name="form[%s]" id="%%s" %%s %%s>', $attr); foreach ($detail['value'] as $key => $value) { if (preg_match('/^_KEY:/', $key)) { $key = preg_replace('/^_KEY:/', '', $key); } else { $key = $value; } $defaultresult .= sprintf('<option name="%s" value="%s" %s>%s</option>', $value, $key, isset($detail['default']) && $detail['default'] == $key ? 'selected' : '', $value); } $defaultresult .= '</select>'; $detail['value'] = $defaultresult; } else { $detail['value'] = $templates->EvaluateDefault($ldapserver, $detail['value'], $_REQUEST['container'], null, isset($detail['default']) ? $detail['default'] : null); } #if the default has a select list, then change the type to select if (preg_match('/<select .*>/i', $detail['value'])) { $type = 'select'; } } # @todo: if value is a select list, then it cannot be hidden. # If this is a hidden attribute, then set its value. if (isset($detail['hidden']) && $detail['hidden']) { if (isset($detail['value'])) { printf('<input type="%s" name="form[%s]" id="%s" value="%s"/>', 'hidden', $attr, $attr, $detail['value']); continue; } else { pla_error(sprintf(_('Attribute [%s] is a HIDDEN attribute, however, it is missing a VALUE in your template.'), $attr)); }