Пример #1
0
 /**
  * Maintenance view for the datafield view
  *
  * @param $class static types for datafields
  */
 public function index_action($class = null)
 {
     if ($this->class_filter) {
         $this->datafields_list = array($this->class_filter => DataField::getDataFields($this->class_filter));
     } else {
         $this->datafields_list = array('sem' => DataField::getDataFields('sem'), 'inst' => DataField::getDataFields('inst'), 'user' => DataField::getDataFields('user'), 'userinstrole' => DataField::getDataFields('userinstrole'), 'usersemdata' => DataField::getDataFields('usersemdata'), 'roleinstdata' => DataField::getDataFields('roleinstdata'));
     }
     // set variables for view
     $this->current_class = $class;
     $this->allclass = array_keys($this->allclasses);
 }
Пример #2
0
 /**
  * Edit or create a rule
  *
  * @param md5 $edit_id
  */
 function edit_action($id = null)
 {
     //get data
     $user_field = 'user';
     $semdata_field = 'usersemdata';
     $this->semFields = AuxLockRules::getSemFields();
     $this->entries_user = DataField::getDataFields($user_field);
     $this->entries_semdata = DataField::getDataFields($semdata_field);
     $this->rule = is_null($id) ? false : AuxLockRules::getLockRuleByID($id);
     if ($GLOBALS['perm']->have_perm('root') && count($this->entries_semdata) == 0) {
         $this->flash['info'] = sprintf(_('Sie müssen zuerst im Bereich %sDatenfelder%s in der Kategorie ' . '<i>Datenfelder für Personenzusatzangaben in Veranstaltungen</i> einen neuen Eintrag erstellen.'), '<a href="' . URLHelper::getLink('dispatch.php/admin/datafields') . '">', '</a>');
     }
     // save action
     if (Request::submitted('erstellen') || Request::submitted('uebernehmen')) {
         //checking for errors
         $errors = array();
         if (!Request::get('rulename')) {
             array_push($errors, _("Bitte geben Sie der Regel mindestens einen Namen!"));
         }
         if (!AuxLockRules::checkLockRule(Request::getArray('fields'))) {
             array_push($errors, _('Bitte wählen Sie mindestens ein Feld aus der Kategorie "Zusatzinformationen" aus!'));
         }
         if (!empty($errors)) {
             $this->flash['error'] = _("Ihre Eingaben sind ungültig.");
             $this->flash['error_detail'] = $errors;
             // save
         } else {
             //new
             if (is_null($id)) {
                 AuxLockRules::createLockRule(Request::get('rulename'), Request::get('description'), Request::getArray('fields'), Request::getArray('order'));
                 //edit
             } else {
                 AuxLockRules::updateLockRule($id, Request::get('rulename'), Request::get('description'), Request::getArray('fields'), Request::getArray('order'));
             }
             $this->flash['success'] = sprintf(_('Die Regel "%s" wurde erfolgreich gespeichert!'), htmlReady(Request::get('rulename')));
             $this->redirect('admin/specification');
         }
     }
 }
Пример #3
0
 /**
  * returns an array containing all lockable attributes for
  * given entity type
  * 
  * @param string $type entity type, one of [sem,inst,user]
  * @return array
  */
 public static function getLockRuleConfig($type)
 {
     $groups['basic'] = _("Grunddaten");
     $groups['personnel'] = _("Personen und Einordnung");
     $groups['misc'] = _("weitere Daten");
     $groups['room_time'] = _("Zeiten/Räume");
     $groups['access'] = _("Zugangsberechtigungen");
     $groups['actions'] = _("spezielle Aktionen");
     $attributes['sem']['veranstaltungsnummer'] = array('name' => _("Veranstaltungsnummer"), 'group' => 'basic');
     $attributes['sem']['seminar_inst'] = array('name' => _("beteiligte Einrichtungen"), 'group' => 'basic');
     $attributes['sem']['name'] = array('name' => _("Name"), 'group' => 'basic');
     $attributes['sem']['untertitel'] = array('name' => _("Untertitel"), 'group' => 'basic');
     $attributes['sem']['status'] = array('name' => _("Status"), 'group' => 'basic');
     $attributes['sem']['beschreibung'] = array('name' => _("Beschreibung"), 'group' => 'basic');
     $attributes['sem']['ort'] = array('name' => _("Ort"), 'group' => 'basic');
     $attributes['sem']['art'] = array('name' => _("Veranstaltungstyp"), 'group' => 'basic');
     $attributes['sem']['ects'] = array('name' => _("ECTS-Punkte"), 'group' => 'basic');
     $attributes['sem']['admission_turnout'] = array('name' => _("Teilnehmerzahl"), 'group' => 'basic');
     $attributes['sem']['dozent'] = array('name' => _("Lehrende"), 'group' => 'personnel');
     $attributes['sem']['tutor'] = array('name' => _("Tutor/-innen"), 'group' => 'personnel');
     $attributes['sem']['institut_id'] = array('name' => _("Heimateinrichtung"), 'group' => 'personnel');
     $attributes['sem']['sem_tree'] = array('name' => _("Studienbereiche"), 'group' => 'personnel');
     $attributes['sem']['participants'] = array('name' => _("Personen hinzufügen/löschen"), 'group' => 'personnel');
     $attributes['sem']['groups'] = array('name' => _("Gruppen hinzufügen/löschen"), 'group' => 'personnel');
     $attributes['sem']['sonstiges'] = array('name' => _("Sonstiges"), 'group' => 'misc');
     $attributes['sem']['teilnehmer'] = array('name' => _("Beschreibung des Teilnehmerkreises"), 'group' => 'misc');
     $attributes['sem']['voraussetzungen'] = array('name' => _("Teilnahmevoraussetzungen"), 'group' => 'misc');
     $attributes['sem']['lernorga'] = array('name' => _("Lernorganisation"), 'group' => 'misc');
     $attributes['sem']['leistungsnachweis'] = array('name' => _("Leistungsnachweis"), 'group' => 'misc');
     $attributes['sem']['room_time'] = array('name' => _("Zeiten/Räume"), 'group' => 'room_time');
     $attributes['sem']['cancelled_dates'] = array('name' => _("Termine ausfallen lassen"), 'group' => 'room_time');
     $attributes['sem']['admission_endtime'] = array('name' => _("Zeit/Datum des Losverfahrens/Kontingentierung"), 'group' => 'access');
     $attributes['sem']['admission_disable_waitlist'] = array('name' => _("Aktivieren/Deaktivieren der Warteliste"), 'group' => 'access');
     $attributes['sem']['admission_binding'] = array('name' => _("Verbindlichkeit der Anmeldung"), 'group' => 'access');
     $attributes['sem']['admission_type'] = array('name' => _("Typ des Anmeldeverfahrens"), 'group' => 'access');
     $attributes['sem']['admission_prelim'] = array('name' => _("zugelassenene Studiengänge"), 'group' => 'access');
     $attributes['sem']['admission_prelim_txt'] = array('name' => _("Vorläufigkeit der Anmeldungen"), 'group' => 'access');
     $attributes['sem']['admission_disable_waitlist'] = array('name' => _("Hinweistext bei Anmeldungen"), 'group' => 'access');
     $attributes['sem']['admission_starttime'] = array('name' => _("Startzeitpunkt der Anmeldemöglichkeit"), 'group' => 'access');
     $attributes['sem']['admission_endtime_sem'] = array('name' => _("Endzeitpunkt der Anmeldemöglichkeit"), 'group' => 'access');
     $attributes['sem']['lesezugriff'] = array('name' => _("Lesezugriff"), 'group' => 'access');
     $attributes['sem']['schreibzugriff'] = array('name' => _("Schreibzugriff"), 'group' => 'access');
     $attributes['sem']['passwort'] = array('name' => _("Passwort"), 'group' => 'access');
     $attributes['sem']['user_domain'] = array('name' => _("Nutzerdomänen zuordnen"), 'group' => 'access');
     $attributes['sem']['seminar_copy'] = array('name' => _("Veranstaltung kopieren"), 'group' => 'actions');
     $attributes['sem']['seminar_archive'] = array('name' => _("Veranstaltung archivieren"), 'group' => 'actions');
     $attributes['sem']['seminar_visibility'] = array('name' => _("Veranstaltung sichtbar/unsichtbar schalten"), 'group' => 'actions');
     $attributes['inst']['name'] = array('name' => _("Name"), 'group' => 'basic');
     $attributes['inst']['fakultaets_id'] = array('name' => _("Fakultät"), 'group' => 'basic');
     $attributes['inst']['type'] = array('name' => _("Bezeichnung"), 'group' => 'basic');
     $attributes['inst']['strasse'] = array('name' => _("Straße"), 'group' => 'basic');
     $attributes['inst']['plz'] = array('name' => _("Ort"), 'group' => 'basic');
     $attributes['inst']['telefon'] = array('name' => _("Telefonnummer"), 'group' => 'basic');
     $attributes['inst']['fax'] = array('name' => _("Faxnummer"), 'group' => 'basic');
     $attributes['inst']['email'] = array('name' => _("E-Mail-Adresse"), 'group' => 'basic');
     $attributes['inst']['url'] = array('name' => _("Homepage"), 'group' => 'basic');
     $attributes['inst']['participants'] = array('name' => _("Mitarbeiter hinzufügen/löschen"), 'group' => 'personnel');
     $attributes['inst']['groups'] = array('name' => _("Gruppen hinzufügen/löschen"), 'group' => 'personnel');
     $attributes['user']['name'] = array('name' => _("Vor- und Nachname"), 'group' => 'basic');
     $attributes['user']['username'] = array('name' => _("Nutzername"), 'group' => 'basic');
     $attributes['user']['password'] = array('name' => _("Passwort"), 'group' => 'basic');
     $attributes['user']['email'] = array('name' => _("E-Mail"), 'group' => 'basic');
     $attributes['user']['title'] = array('name' => _("Titel"), 'group' => 'basic');
     $attributes['user']['gender'] = array('name' => _("Geschlecht"), 'group' => 'basic');
     $attributes['user']['privatnr'] = array('name' => _("Telefon (privat)"), 'group' => 'basic');
     $attributes['user']['privatcell'] = array('name' => _("Mobiltelefon"), 'group' => 'basic');
     $attributes['user']['privadr'] = array('name' => _("Adresse (privat)"), 'group' => 'basic');
     $attributes['user']['hobby'] = array('name' => _("Hobbys"), 'group' => 'basic');
     $attributes['user']['lebenslauf'] = array('name' => _("Lebenslauf"), 'group' => 'basic');
     $attributes['user']['home'] = array('name' => _("Homepage"), 'group' => 'basic');
     $attributes['user']['publi'] = array('name' => _("Schwerpunkte"), 'group' => 'misc');
     $attributes['user']['schwerp'] = array('name' => _("Publikationen"), 'group' => 'misc');
     $attributes['user']['institute_data'] = array('name' => _("Einrichtungsdaten"), 'group' => 'misc');
     foreach (DataField::getDataFields($type) as $df_id => $df) {
         $attributes[$type][$df_id] = array('name' => $df->data['name'], 'group' => 'misc');
     }
     return array('groups' => $groups, 'attributes' => $attributes[$type]);
 }
Пример #4
0
 /**
  * Old version of CSV import (copy and paste from teilnehmer.php
  * @return type
  * @throws AccessDeniedException
  */
 public function set_autor_csv_action()
 {
     // Security Check
     if (!$this->is_tutor) {
         throw new AccessDeniedException('Sie haben leider keine ausreichende Berechtigung, um auf diesen Bereich von Stud.IP zuzugreifen.');
     }
     CSRFProtection::verifyUnsafeRequest();
     // prepare CSV-Lines
     $messaging = new messaging();
     $csv_request = preg_split('/(\\n\\r|\\r\\n|\\n|\\r)/', trim(Request::get('csv_import')));
     $csv_mult_founds = array();
     $csv_count_insert = 0;
     $csv_count_multiple = 0;
     $datafield_id = null;
     if (Request::get('csv_import_format') && !in_array(Request::get('csv_import_format'), words('realname username'))) {
         foreach (DataField::getDataFields('user', 1 | 2 | 4 | 8, true) as $df) {
             if ($df->accessAllowed() && in_array($df->getId(), $GLOBALS['TEILNEHMER_IMPORT_DATAFIELDS']) && $df->getId() == Request::quoted('csv_import_format')) {
                 $datafield_id = $df->getId();
                 break;
             }
         }
     }
     if (Request::get('csv_import')) {
         // remove duplicate users from csv-import
         $csv_lines = array_unique($csv_request);
         $csv_count_contingent_full = 0;
         foreach ($csv_lines as $csv_line) {
             $csv_name = preg_split('/[,\\t]/', substr($csv_line, 0, 100), -1, PREG_SPLIT_NO_EMPTY);
             $csv_nachname = trim($csv_name[0]);
             $csv_vorname = trim($csv_name[1]);
             if ($csv_nachname) {
                 if (Request::quoted('csv_import_format') == 'realname') {
                     $csv_users = $this->members->getMemberByIdentification($csv_nachname, $csv_vorname);
                 } elseif (Request::quoted('csv_import_format') == 'username') {
                     $csv_users = $this->members->getMemberByUsername($csv_nachname);
                 } else {
                     $csv_users = $this->members->getMemberByDatafield($csv_nachname, $datafield_id);
                 }
             }
             // if found more then one result to given name
             if (count($csv_users) > 1) {
                 // if user have two accounts
                 $csv_count_present = 0;
                 foreach ($csv_users as $row) {
                     if ($row['is_present']) {
                         $csv_count_present++;
                     } else {
                         $csv_mult_founds[$csv_line][] = $row;
                     }
                 }
                 if (is_array($csv_mult_founds[$csv_line])) {
                     $csv_count_multiple++;
                 }
             } elseif (count($csv_users) > 0) {
                 $row = reset($csv_users);
                 if (!$row['is_present']) {
                     $consider_contingent = Request::option('consider_contingent_csv');
                     if (insert_seminar_user($this->course_id, $row['user_id'], 'autor', isset($consider_contingent), $consider_contingent)) {
                         $csv_count_insert++;
                         setTempLanguage($this->user_id);
                         $message = sprintf(_('Sie wurden in die Veranstaltung **%s** eingetragen.'), $this->course_title);
                         restoreLanguage();
                         $messaging->insert_message($message, $row['username'], '____%system%____', FALSE, FALSE, '1', FALSE, sprintf('%s %s', _('Systemnachricht:'), _('Eintragung in Veranstaltung')), TRUE);
                     } elseif (isset($consider_contingent)) {
                         $csv_count_contingent_full++;
                     }
                 } else {
                     $csv_count_present++;
                 }
             } else {
                 // not found
                 $csv_not_found[] = stripslashes($csv_nachname) . ($csv_vorname ? ', ' . stripslashes($csv_vorname) : '');
             }
         }
     }
     $selected_users = Request::getArray('selected_users');
     if (!empty($selected_users) && count($selected_users) > 0) {
         foreach ($selected_users as $selected_user) {
             if ($selected_user) {
                 if (insert_seminar_user($this->course_id, get_userid($selected_user), 'autor', isset($consider_contingent), $consider_contingent)) {
                     $csv_count_insert++;
                     setTempLanguage($this->user_id);
                     if ($GLOBALS['SEM_CLASS'][$GLOBALS['SEM_TYPE'][$_SESSION['SessSemName']['art_num']]['class']]['workgroup_mode']) {
                         $message = sprintf(_('Sie wurden manuell in die Veranstaltung **%s** eingetragen.'), $this->course_title);
                     } else {
                         $message = sprintf(_('Sie wurden manuell in die Veranstaltung **%s** eingetragen.'), $this->course_title);
                     }
                     restoreLanguage();
                     $messaging->insert_message($message, $selected_user, '____%system%____', FALSE, FALSE, '1', FALSE, sprintf('%s %s', _('Systemnachricht:'), _('Eintragung in Veranstaltung')), TRUE);
                 } elseif (isset($consider_contingent)) {
                     $csv_count_contingent_full++;
                 }
             }
         }
     }
     // no results
     if (!sizeof($csv_lines) && !sizeof($selected_users)) {
         PageLayout::postMessage(MessageBox::error(_("Niemanden gefunden!")));
     }
     if ($csv_count_insert) {
         PageLayout::postMessage(MessageBox::success(sprintf(_('%s Personen in die Veranstaltung
             eingetragen!'), $csv_count_insert)));
     }
     if ($csv_count_present) {
         PageLayout::postMessage(MessageBox::info(sprintf(_('%s Personen waren bereits in der Veranstaltung
             eingetragen!'), $csv_count_present)));
     }
     // redirect to manual assignment
     if ($csv_mult_founds) {
         PageLayout::postMessage(MessageBox::info(sprintf(_('%s Personen konnten <b>nicht eindeutig</b>
             zugeordnet werden! Nehmen Sie die Zuordnung bitte manuell vor.'), $csv_count_multiple)));
         $this->flash['csv_mult_founds'] = $csv_mult_founds;
         $this->redirect('course/members/csv_manual_assignment');
         return;
     }
     if (count($csv_not_found) > 0) {
         PageLayout::postMessage(MessageBox::error(sprintf(_('%s konnten <b>nicht</b> zugeordnet werden!'), htmlReady(join(',', $csv_not_found)))));
     }
     if ($csv_count_contingent_full) {
         PageLayout::postMessage(MessageBox::error(sprintf(_('%s Personen konnten <b>nicht</b> zugeordnet werden,
             da das ausgewählte Kontingent keine freien Plätze hat.'), $csv_count_contingent_full)));
     }
     $this->redirect('course/members/index');
 }
Пример #5
0
function MakeDatafieldsDefault($user_id, $statusgruppe_id, $default = 'default_value')
{
    global $auth;
    $fields = DataField::getDataFields('userinstrole');

    $query = "SELECT datafield_id FROM datafields WHERE object_type = 'userinstrole'";
    $ids = DBManager::get()->query($query)->fetchAll(PDO::FETCH_COLUMN);

    $query = "REPLACE INTO datafields_entries (datafield_id, range_id, content, sec_range_id, mkdate, chdate)
              VALUES (?, ?, ?, ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())";
    $insert = DBManager::get()->prepare($query);

    foreach ($ids as $id) {
        if ($fields[$id]->editAllowed($auth->auth['perm'])) {
            $insert->execute(array($id, $user_id, $default, $statusgruppe_id));
        }
    }
}
Пример #6
0
    static function checkLockRule($fields)
    {
        $entries = DataField::getDataFields('usersemdata');
        foreach ($entries as $id => $entry) {
            if ($fields[$id] == 1) return true;
        }

        return false;
    }