// hidden roles can also see hidden categories if ($role->getValue('cat_system') == 1) { $showSystemCategory = true; } } else { $role->setValue('rol_this_list_view', '1'); $role->setValue('rol_mail_this_role', '2'); } if (isset($_SESSION['roles_request'])) { // durch fehlerhafte Eingabe ist der User zu diesem Formular zurueckgekehrt // nun die vorher eingegebenen Inhalte ins Objekt schreiben $role->setArray($_SESSION['roles_request']); unset($_SESSION['roles_request']); } // holt eine Liste der ausgewaehlten abhaengigen Rolen $childRoles = RoleDependency::getChildRoles($gDb, $getRoleId); $childRoleObjects = array(); // create html page object $page = new HtmlPage($headline); $page->addJavascript(' checkMaxMemberCount(); $("#rol_assign_roles").change(function() { markRoleRight("rol_assign_roles", "rol_all_lists_view", true); }); $("#rol_all_lists_view").change(function() { markRoleRight(\'rol_all_lists_view\', \'rol_assign_roles\', false); }); $("#rol_max_members").change(function() { checkMaxMemberCount(); });', true); $page->addJavascript('
// but don't change their own membership, because there must be at least one webmaster if ($row['rol_webmaster'] == 0 || $row['rol_webmaster'] == 1 && $gCurrentUser->isWebmaster() && $getUserId != $gCurrentUser->getValue('usr_id')) { $roleAssign = 0; if (isset($_POST['role-' . $row['rol_id']]) && $_POST['role-' . $row['rol_id']] == 1) { $roleAssign = 1; } $roleLeader = 0; if (isset($_POST['leader-' . $row['rol_id']]) && $_POST['leader-' . $row['rol_id']] == 1) { $roleLeader = 1; } // update role membership if ($roleAssign == 1) { $user->setRoleMembership($row['rol_id'], DATE_NOW, '9999-12-31', $roleLeader); ++$count_assigned; // find the parent roles and assign user to parent roles $tmpRoles = RoleDependency::getParentRoles($gDb, $row['rol_id']); foreach ($tmpRoles as $tmpRole) { if (!in_array($tmpRole, $parentRoles, true)) { $parentRoles[] = $tmpRole; } } } else { // if membership already exists then stop this membership if ($row['mem_id'] > 0) { // subtract one day, so that user leaves role immediately $newEndDate = date('Y-m-d', time() - 24 * 60 * 60); $user->editRoleMembership($row['mem_id'], $row['mem_begin'], $newEndDate, $roleLeader); } } } }
if (isset($_POST['member_' . $getUserId]) && $_POST['member_' . $getUserId] === 'true') { $membership = true; } if (isset($_POST['leader_' . $getUserId]) && $_POST['leader_' . $getUserId] === 'true') { $membership = true; $leadership = true; } // Member $member = new TableMembers($gDb); // Datensatzupdate $mem_count = $role->countMembers($getUserId); // Wenn Rolle weniger mitglieder hätte als zugelassen oder Leiter hinzugefügt werden soll if ($leadership || !$leadership && $membership && ($role->getValue('rol_max_members') > $mem_count || $role->getValue('rol_max_members') == 0 || $role->getValue('rol_max_members') == 0)) { $member->startMembership($role->getValue('rol_id'), $getUserId, $leadership); // find the parent roles and assign user to parent roles $dependencies = RoleDependency::getParentRoles($gDb, $role->getValue('rol_id')); $parentRoles = array(); foreach ($dependencies as $tmpRole) { $member->startMembership($tmpRole, $getUserId); } echo 'success'; } elseif (!$leadership && !$membership) { $member->stopMembership($role->getValue('rol_id'), $getUserId); echo 'success'; } else { $gMessage->show($gL10n->get('SYS_ROLE_MAX_MEMBERS', $role->getValue('rol_name'))); } } catch (AdmException $e) { $e->showText(); } } else {
} } } // Daten in Datenbank schreiben $returnCode = $role->save(); if ($returnCode < 0) { $gMessage->show($gL10n->get('SYS_NO_RIGHTS')); } // holt die Role ID des letzten Insert Statements if ($getRoleId === 0) { $getRoleId = $role->getValue('rol_id'); } // save role dependencies in database if (array_key_exists('dependent_roles', $_POST)) { $sentChildRoles = $_POST['dependent_roles']; $roleDep = new RoleDependency($gDb); // holt eine Liste der ausgewählten Rolen $dbChildRoles = RoleDependency::getChildRoles($gDb, $getRoleId); // entferne alle Rollen die nicht mehr ausgewählt sind if ($dbChildRoles != -1) { foreach ($dbChildRoles as $dbChildRole) { if (!in_array($dbChildRole, $sentChildRoles, true)) { $roleDep->get($dbChildRole, $getRoleId); $roleDep->delete(); } } } // add all new role dependencies to database if (count($sentChildRoles) > 0) { foreach ($sentChildRoles as $sentChildRole) { if ($dbChildRoles != -1 && !in_array($sentChildRole, $dbChildRoles, true) && $sentChildRole > 0) {
if (array_key_exists('first_row', $_POST)) { $firstRowTitle = true; } else { $firstRowTitle = false; } // jede Zeile aus der Datei einzeln durchgehen und den Benutzer in der DB anlegen $line = reset($_SESSION['file_lines']); $user = new User($gDb, $gProfileFields); $startRow = 0; $countImportNewUser = 0; $countImportEditUser = 0; $countImportEditRole = 0; $importedFields = array(); $depRoles = array(); // Abhängige Rollen ermitteln $depRoles = RoleDependency::getParentRoles($gDb, $_SESSION['rol_id']); if ($firstRowTitle == true) { // erste Zeile ueberspringen, da hier die Spaltenbezeichnungen stehen $line = next($_SESSION['file_lines']); $startRow = 1; } for ($i = $startRow; $i < count($_SESSION['file_lines']); $i++) { $user->clear(); $columnArray = explode($_SESSION['value_separator'], $line); foreach ($columnArray as $columnKey => $columnValue) { // Hochkomma und Spaces entfernen $columnValue = trim(strip_tags(str_replace('"', '', $columnValue))); $columnValueToLower = admStrToLower($columnValue); // nun alle Userfelder durchgehen und schauen, bei welchem // die entsprechende Dateispalte ausgewaehlt wurde // dieser dann den Wert zuordnen