/** * Assign/add a user to a statusgruppe. */ public function assign_action() { $this->check_ticket(); $role_id = Request::option('role_id'); if ($role_id) { $group = new Statusgruppe($role_id); $range_id = $group->getRange_id(); $group = new Statusgruppe($range_id); while ($group->getRange_id()) { $range_id = $group->getRange_id(); $group = new Statusgruppe($range_id); } if (InsertPersonStatusgruppe($this->user->user_id, $role_id)) { $globalperms = get_global_perm($this->user->user_id); $query = "INSERT IGNORE INTO user_inst (Institut_id, user_id, inst_perms)\n VALUES (?, ?, ?)\n ON DUPLICATE KEY UPDATE inst_perms = VALUES(inst_perms)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($range_id, $this->user->user_id, $globalperms)); if ($statement->rowCount() == 1) { log_event('INST_USER_ADD', $range_id, $this->user->user_id, $globalperms); } else { if ($statement->rowCount() == 2) { log_event('INST_USER_STATUS', $range_id, $this->user->user_id, $globalperms); } } checkExternDefaultForUser($this->user->user_id); $_SESSION['edit_about_data']['open'] = $role_id; $this->reportSuccess(_('Die Person wurde in die ausgewählte Gruppe eingetragen!')); } else { $this->reportError(_('Fehler beim Eintragen in die Gruppe!')); } } $this->redirect('settings/statusgruppen#' . $role_id); }
</select> </td> </tr> <? if ($range_type != 'sem') : ?> <tr> <td><?php echo _("Übergeordnete Gruppe"); ?> :</td> <td> <select name="vather"> <option value="root"> -- <?php echo _("Hauptebene"); ?> -- </option> <? Statusgruppe::displayOptionsForRoles($all_roles); ?> </select> </td> </tr> <? endif; ?> <tr> <td> <?php echo _("Gruppengröße"); ?> : <?php echo tooltipicon(_("Mit dem Feld 'Gruppengröße' haben Sie die Möglichkeit, die Sollstärke für eine Gruppe festzulegen. Dieser Wert ist nur aus Teilnehmersicht relevant - verantwortliche Personen (Tutoren, Lehrende) können auch mehr Gruppenmitglieder eintragen.")); ?> </td>
<label for="vather"><?php echo _("Übergeordnete Gruppe"); ?> :</label> </td> <td> <select name="vather" id="vather"> <option value="nochange"> -- <?php echo _("Keine Änderung"); ?> -- </option> <option value="root"> -- <?php echo _("Hauptebene"); ?> -- </option> <? Statusgruppe::displayOptionsForRoles($all_roles, $role->getId()); ?> </select> </td> </tr> <tr> <td> <label for="new_size"><?php echo _("Gruppengröße"); ?> :</label> <?php echo tooltipicon(_("Mit dem Feld 'Gruppengröße' haben Sie die Möglichkeit, die Sollstärke für eine Gruppe festzulegen. Dieser Wert ist nur aus Teilnehmersicht relevant - verantwortliche Personen (Tutoren, Lehrende) können auch mehr Gruppenmitglieder eintragen.")); ?> </td> <td>
/** * Returns all statusgruppen for the given range. * * If there is no statusgruppe for the given range, it returns FALSE. * * @access public * @param string $range_id * @param string $user_id * @return array (structure statusgruppe_id => name) */ function GetAllStatusgruppen($parent, $check_user = null, $exclude = false) { $query = "SELECT * FROM statusgruppen WHERE range_id = ? ORDER BY position"; $statement = DBManager::get()->prepare($query); $statement->execute(array($parent)); $groups = $statement->fetchAll(PDO::FETCH_ASSOC); if (empty($groups)) { return false; } $query = "SELECT visible FROM statusgruppe_user WHERE user_id = ? AND statusgruppe_id = ?"; $presence = DBManager::get()->prepare($query); $childs = array(); foreach ($groups as $group) { $user_there = $visible = $user_in_child = false; $kids = getAllStatusgruppen($group['statusgruppe_id'], $check_user, $exclude); if ($check_user) { $presence->execute(array($check_user, $group['statusgruppe_id'])); $present = $presence->fetchColumn(); $presence->closeCursor(); if ($user_there = ($present !== false)) { $visible = $present; } if (is_array($kids)) { foreach ($kids as $kid) { if ($kid['user_there'] || $kid['user_in_child']) { $user_in_child = true; } } } } if (!$check_user || !$exclude || $user_in_child || $user_there) { $childs[$group['statusgruppe_id']] = array( 'role' => Statusgruppe::getFromArray($group), 'visible' => $visible, 'user_there' => $user_there, 'user_in_child' => $user_in_child, 'child' => $kids ); } } return is_array($childs) ? $childs : false; }
static function getFlattenedRoles($roles, $level = 0, $parent_name = false) { if (!is_array($roles)) { return array(); } $ret = array(); //var_dump($roles); foreach ($roles as $id => $role) { if (!isset($role['name'])) { $role['name'] = $role['role']->getName(); } $spaces = ''; for ($i = 0; $i < $level; $i++) { $spaces .= ' '; } // generate an indented version of the role-name $role['name'] = $spaces . $role['name']; // generate a name with all parent-roles in the name if ($parent_name) { $role['name_long'] = $parent_name . ' > ' . $role['role']->getName(); } else { $role['name_long'] = $role['role']->getName(); } $ret[$id] = $role; if ($role['child']) { $ret = array_merge($ret, Statusgruppe::getFlattenedRoles($role['child'], $level + 1, $role['name_long'])); } } return $ret; }
// the persons of the institute who can be added directly $template->set_attribute('seminar_persons', getPersons($range_id, 'sem')); $template->set_attribute('inst_persons', getPersons($range_id, 'inst')); // all statusgroups in a tree-structured array $template->set_attribute('roles', $statusgruppen); // set the options for the box list($self_assign_all, $self_assign_exclusive) = CheckSelfAssignAll($range_id); $template->set_attribute('self_assign_all', $self_assign_all); $template->set_attribute('self_assign_exclusive', $self_assign_exclusive); $template->set_attribute('seminar_class', SeminarCategories::GetBySeminarId($range_id)->id); if (Request::option('cmd') == 'editRole') { $role = new Statusgruppe(Request::option('role_id')); $template->set_attribute('role_data', $role->getData()); $template->set_attribute('edit_role', $role->getId()); } else if (Request::submitted('choosePreset')) { $template->set_attribute('role_data', array('name' => Request::quoted('presetName'))); } $template->set_attribute('show_search_and_members_form', !LockRules::Check($range_id, 'participants')); // quickfilters foreach (getPersons($range_id, 'sem') as $k=>$v) { $quickfilter_sem[] = $k; } $template->set_attribute('quickfilter_sem', $quickfilter_sem); foreach (getPersons($range_id, 'sem_no_group') as $k=>$v) { $quickfilter_sem_no_group[] = $k; }