diff --git a/lam/lib/types/user.inc b/lam/lib/types/user.inc index 771d9973..6ce75040 100644 --- a/lam/lib/types/user.inc +++ b/lam/lib/types/user.inc @@ -318,6 +318,7 @@ class user extends baseType { * @param boolean $windowsLocked Windows part is locked */ private function buildAccountStatusDialogDiv($unixAvailable, $unixLocked, $sambaAvailable, $sambaLocked, $ppolicyAvailable, $ppolicyLocked, $windowsAvailable, $windowsLocked) { + $typeSettings = $_SESSION['config']->get_typeSettings(); $partiallyLocked = $unixLocked || $sambaLocked || $ppolicyLocked || $windowsLocked; $fullyLocked = ($unixAvailable || $sambaAvailable || $ppolicyAvailable || $windowsAvailable) && (!$unixAvailable || $unixLocked) @@ -387,6 +388,10 @@ class user extends baseType { $lockContent->addElement(new htmlImage('../../graphics/groupBig.png')); $lockContent->addElement(new htmlTableExtendedInputCheckbox('lam_accountStatusRemoveGONGroups', true, _('Remove from all group of (unique) names'), null, false), true); } + if (!empty($typeSettings['user_dnDeactivated'])) { + $lockContent->addElement(new htmlImage('../../graphics/moveBig.png')); + $lockContent->addElement(new htmlTableExtendedInputCheckbox('lam_moveToDeactivatedDN', true, 'Nach "' . getAbstractDN($typeSettings['user_dnDeactivated']) . '" verschieben', null, false), true); + } $lockDiv = new htmlDiv('lam_accountStatusDialogLockDiv', $lockContent); $container->addElement($lockDiv, true); @@ -411,6 +416,10 @@ class user extends baseType { $unlockContent->addElement(new htmlImage('../../graphics/samba.png')); $unlockContent->addElement(new htmlTableExtendedInputCheckbox('lam_accountStatusUnlockWindows', true, _('Windows'), null, false), true); } + if (!empty($typeSettings['user_dnActivated'])) { + $unlockContent->addElement(new htmlImage('../../graphics/moveBig.png')); + $unlockContent->addElement(new htmlTableExtendedInputCheckbox('lam_moveToActivatedDN', true, 'Nach "' . getAbstractDN($typeSettings['user_dnActivated']) . '" verschieben', null, false), true); + } $unlockDiv = new htmlDiv('lam_accountStatusDialogUnlockDiv', $unlockContent); if (!$fullyLocked) { @@ -438,6 +447,7 @@ class user extends baseType { * @param accountContainer $container account container */ public function runEditPagePostAction(&$container) { + $typeSettings = $_SESSION['config']->get_typeSettings(); // check if account status should be changed if (isset($_POST['lam_accountStatusResult']) && ($_POST['lam_accountStatusResult'] == 'ok')) { // lock account @@ -466,6 +476,9 @@ class user extends baseType { if (isset($_POST['lam_accountStatusRemoveGONGroups']) && ($_POST['lam_accountStatusRemoveGONGroups'] == 'on')) { $container->getAccountModule('posixAccount')->removeFromGONGroups(); } + if (isset($_POST['lam_moveToDeactivatedDN']) && ($_POST['lam_moveToDeactivatedDN'] == 'on')) { + $container->dnSuffix = $typeSettings['user_dnDeactivated']; + } } // unlock account elseif ($_POST['lam_accountStatusAction'] == 'unlock') { @@ -485,10 +498,51 @@ class user extends baseType { if (isset($_POST['lam_accountStatusUnlockWindows']) && ($_POST['lam_accountStatusUnlockWindows'] == 'on')) { $container->getAccountModule('windowsUser')->setIsDeactivated(false); } + if (isset($_POST['lam_moveToActivatedDN']) && ($_POST['lam_moveToActivatedDN'] == 'on')) { + $container->dnSuffix = $typeSettings['user_dnActivated']; + } } } } + /** + * Returns a list of configuration options. + * + * The field names are used as keywords to load and save settings. + * We recommend to use the type name as prefix for them (e.g. user_someSetting) to avoid naming conflicts. + * + * @return mixed htmlElement or array of htmlElement + * + * @see htmlElement + */ + public function get_configOptions() { + $optDeac = new htmlTableExtendedInputField('DN für deaktivierte Konten', 'user_dnDeactivated'); + $optDeac->setFieldSize(40); + $optAc = new htmlTableExtendedInputField('DN für aktivierte Konten', 'user_dnActivated'); + $optAc->setFieldSize(40); + return array($optDeac, $optAc); + } + + /** + * Checks input values of config settings. + *
+ * If the input data is invalid the return value is an array that contains subarrays to build StatusMessages ('message type', 'message head', 'message text'). + *
If no errors occured the function returns an empty array. + * + * @param array $options hash array (option name => value) that contains the input. The option values are all arrays containing one or more elements. + * @return array list of error messages + */ + public function check_configOptions(&$options) { + $return = array(); + if (!empty($options['user_dnDeactivated'][0]) && !get_preg($options['user_dnDeactivated'][0], 'dn')) { + $return[] = array('ERROR', 'Bitte geben Sie einen gültigen DN für "DN für deaktivierte Konten" an.'); + } + if (!empty($options['user_dnActivated'][0]) && !get_preg($options['user_dnActivated'][0], 'dn')) { + $return[] = array('ERROR', 'Bitte geben Sie einen gültigen DN für "DN für aktivierte Konten" an.'); + } + return $return; + } + } /**