/** * 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); }
/** * 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'); } } }
/** * 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]); }
/** * 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'); }
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)); } } }
static function checkLockRule($fields) { $entries = DataField::getDataFields('usersemdata'); foreach ($entries as $id => $entry) { if ($fields[$id] == 1) return true; } return false; }