Example #1
0
 /**
  * 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);
 }
Example #2
0
                        </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>
Example #4
0
/**
* 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;
}
Example #5
0
 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 .= '&nbsp;&nbsp;';
         }
         // 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;
 }
Example #6
0
    // 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;
    }