aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2025-12-05 20:56:08 +0100
committerElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2025-12-05 20:56:08 +0100
commit20c40719edb1d85de8c9682f319e988558d95c4c (patch)
tree1e1346c85e607a7afdb77da97ba70ff9935195eb /lib
parenta0773db3e7fc1c3a99f604caff48c83683d82dd2 (diff)
use SORM to display data from user_inst, fixes #5377
Merge request studip/studip!4631
Diffstat (limited to 'lib')
-rw-r--r--lib/extern/elements/main/ExternElementMainTemplatePersons.class.php9
-rw-r--r--lib/extern/modules/ExternModuleTemplatePersondetails.class.php18
-rw-r--r--lib/extern/modules/ExternModuleTemplatePersons.class.php15
-rw-r--r--lib/extern/modules/views/persons.inc.php15
4 files changed, 34 insertions, 23 deletions
diff --git a/lib/extern/elements/main/ExternElementMainTemplatePersons.class.php b/lib/extern/elements/main/ExternElementMainTemplatePersons.class.php
index a82aa44..bdd0d57 100644
--- a/lib/extern/elements/main/ExternElementMainTemplatePersons.class.php
+++ b/lib/extern/elements/main/ExternElementMainTemplatePersons.class.php
@@ -47,7 +47,7 @@ class ExternElementMainTemplatePersons extends ExternElementMain {
function __construct($module_name, &$data_fields, &$field_names, &$config) {
$this->attributes = [
'name', 'sort', 'groupsalias', 'groupsvisible', 'grouping',
- 'nameformat', 'defaultadr', 'genericdatafields'
+ 'nameformat', 'language', 'defaultadr', 'genericdatafields'
];
$this->real_name = _("Grundeinstellungen");
$this->description = _("In den Grundeinstellungen können Sie allgemeine Daten des Moduls ändern.");
@@ -70,6 +70,7 @@ class ExternElementMainTemplatePersons extends ExternElementMain {
'groupsalias' => '',
'groupsvisible' => $groups,
'nameformat' => '',
+ 'language' => '',
// 'nodatatext' => '',
'defaultadr' => ''
];
@@ -136,6 +137,12 @@ class ExternElementMainTemplatePersons extends ExternElementMain {
_("Dr. Peter Meyer"), _("Meyer, Peter, Dr.")];
$table = $edit_form->editOptionGeneric("nameformat", $title, $info, $values, $names);
+ $title = _('Sprache') . ':';
+ $info = _('Wählen Sie eine Sprache für die Datumsangaben aus.');
+ $values = ['', 'de_DE', 'en_GB'];
+ $names = [_('keine Auswahl'), _('Deutsch'), _('Englisch')];
+ $table .= $edit_form->editOptionGeneric('language', $title, $info, $values, $names);
+
$title = _('Standard-Adresse') . ':';
$info = _("Wenn Sie diese Option wählen, wird die Standard-Adresse ausgegeben, die jede(r) Mitarbeiter(in) bei seinen universitären Daten auswählen kann. Wählen Sie diese Option nicht, wenn immer die Adresse der Einrichtung ausgegeben werden soll.");
$table .= $edit_form->editCheckboxGeneric('defaultadr', $title, $info, '1', '0');
diff --git a/lib/extern/modules/ExternModuleTemplatePersondetails.class.php b/lib/extern/modules/ExternModuleTemplatePersondetails.class.php
index c1dab1f..02fd931 100644
--- a/lib/extern/modules/ExternModuleTemplatePersondetails.class.php
+++ b/lib/extern/modules/ExternModuleTemplatePersondetails.class.php
@@ -454,6 +454,7 @@ class ExternModuleTemplatePersondetails extends ExternModule {
}
}
+ $member = InstituteMember::find($row['id']);
$content['PERSONDETAILS']['INST-NAME'] = ExternModule::ExtHtmlReady($row['Name']);
$content['PERSONDETAILS']['INST-HREF'] = ExternModule::ExtHtmlReady(trim($row['url']));
$content['PERSONDETAILS']['STREET'] = ExternModule::ExtHtmlReady($row['Strasse']);
@@ -464,17 +465,18 @@ class ExternModuleTemplatePersondetails extends ExternModule {
$content['PERSONDETAILS']['EMAIL-LOCAL'] = array_shift($emails);
$emails = explode('@', $content['PERSONDETAILS']['EMAIL']);
$content['PERSONDETAILS']['EMAIL-DOMAIN'] = array_pop($emails);
- $content['PERSONDETAILS']['ROOM'] = ExternModule::ExtHtmlReady($row['raum']);
- $content['PERSONDETAILS']['PHONE'] = ExternModule::ExtHtmlReady($row['Telefon']);
- $content['PERSONDETAILS']['FAX'] = ExternModule::ExtHtmlReady($row['Fax']);
+ $content['PERSONDETAILS']['ROOM'] = ExternModule::ExtHtmlReady($member->raum);
+ $content['PERSONDETAILS']['PHONE'] = ExternModule::ExtHtmlReady($member->telefon);
+ $content['PERSONDETAILS']['FAX'] = ExternModule::ExtHtmlReady($member->fax);
if (Visibility::verify('homepage', $this->user_id)) {
$content['PERSONDETAILS']['HOMEPAGE-HREF'] = ExternModule::ExtHtmlReady(trim($row['Home']));
}
- $content['PERSONDETAILS']['OFFICE-HOURS'] = ExternModule::ExtHtmlReady($row['sprechzeiten']);
+ $content['PERSONDETAILS']['OFFICE-HOURS'] = ExternModule::ExtHtmlReady($member->sprechzeiten);
$j = 0;
foreach($allRows as $curRow)
{
+ $member = InstituteMember::find($curRow['id']);
$content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-NAME'] = ExternModule::ExtHtmlReady($curRow['Name']);
$content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-HREF'] = ExternModule::ExtHtmlReady(trim($curRow['url']));
$content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-STREET'] = ExternModule::ExtHtmlReady($curRow['Strasse']);
@@ -484,11 +486,11 @@ class ExternModuleTemplatePersondetails extends ExternModule {
$content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-EMAIL-LOCAL'] = array_shift($emails);
$emails = explode('@', $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-EMAIL']);
$content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-EMAIL-DOMAIN'] = array_pop($emails);
- $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-ROOM'] = ExternModule::ExtHtmlReady($curRow['raum']);
- $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-PHONE'] = ExternModule::ExtHtmlReady($curRow['Telefon']);
- $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-FAX'] = ExternModule::ExtHtmlReady($curRow['Fax']);
+ $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-ROOM'] = ExternModule::ExtHtmlReady($member->raum);
+ $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-PHONE'] = ExternModule::ExtHtmlReady($member->telefon);
+ $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-FAX'] = ExternModule::ExtHtmlReady($member->fax);
$content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-HOMEPAGE-HREF'] = ExternModule::ExtHtmlReady(trim($curRow['Home']));
- $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-OFFICE-HOURS'] = ExternModule::ExtHtmlReady($curRow['sprechzeiten']);
+ $content['PERSONDETAILS']['ALL-INST']['SINGLE-INST'][$j]['SINGLE-INST-OFFICE-HOURS'] = ExternModule::ExtHtmlReady($member->sprechzeiten);
$j++;
}
diff --git a/lib/extern/modules/ExternModuleTemplatePersons.class.php b/lib/extern/modules/ExternModuleTemplatePersons.class.php
index 2380029..ecea69b 100644
--- a/lib/extern/modules/ExternModuleTemplatePersons.class.php
+++ b/lib/extern/modules/ExternModuleTemplatePersons.class.php
@@ -172,7 +172,7 @@ class ExternModuleTemplatePersons extends ExternModule {
}
if(!$grouping) {
- $query = "SELECT DISTINCT ui.raum, ui.sprechzeiten, ui.Telefon, inst_perms, Email, aum.user_id, ";
+ $query = "SELECT DISTINCT ui.id, inst_perms, Email, aum.user_id, ";
$query .= 'username, aum.Vorname, title_front, title_rear, Home, ';
$query .= $GLOBALS['_fullname_sql'][$nameformat] . " AS fullname, aum.Nachname ";
if ($query_order) {
@@ -211,7 +211,7 @@ class ExternModuleTemplatePersons extends ExternModule {
if (!$query_order) {
$query_order = ' ORDER BY su.position';
}
- $query = 'SELECT ui.raum, ui.sprechzeiten, ui.Telefon, inst_perms, Email, aum.user_id, ';
+ $query = 'SELECT ui.id, inst_perms, Email, aum.user_id, ';
$query .= 'username, aum.Vorname, title_front, title_rear, Home, ';
$query .= $GLOBALS['_fullname_sql'][$nameformat] . " AS fullname, aum.Nachname ";
$query .= 'FROM statusgruppe_user su LEFT JOIN auth_user_md5 aum USING(user_id) ';
@@ -244,7 +244,7 @@ class ExternModuleTemplatePersons extends ExternModule {
$instituts_id = $this->config->range_id;
if ($defaultaddress) {
- $query = 'SELECT ui.raum, ui.sprechzeiten, ui.Telefon, inst_perms, Email, ';
+ $query = 'SELECT ui.id, inst_perms, Email, ';
$query .= 'title_front, title_rear, Home, Institut_id, ';
$query .= 'aum.user_id, username, ' . $GLOBALS['_fullname_sql'][$nameformat];
$query .= ' AS fullname, aum.Nachname, aum.Vorname FROM auth_user_md5 aum LEFT JOIN ';
@@ -257,7 +257,7 @@ class ExternModuleTemplatePersons extends ExternModule {
$db_out = $statement2->fetch(PDO::FETCH_ASSOC);
//no default
if ($db_out === false) {
- $query = 'SELECT ui.raum, ui.sprechzeiten, ui.Telefon, inst_perms, Email, ';
+ $query = 'SELECT ui.id, inst_perms, Email, ';
$query .= 'title_front, title_rear, Home, ';
$query .= 'aum.user_id, username, ' . $GLOBALS['_fullname_sql'][$nameformat];
$query .= ' AS fullname, aum.Nachname, aum.Vorname FROM auth_user_md5 aum LEFT JOIN ';
@@ -290,8 +290,9 @@ class ExternModuleTemplatePersons extends ExternModule {
$content['PERSONS']['GROUP'][$i]['PERSON'][$j]['IMAGE-URL-MEDIUM'] = $avatar->getURL(Avatar::MEDIUM);
$content['PERSONS']['GROUP'][$i]['PERSON'][$j]['IMAGE-URL-NORMAL'] = $avatar->getURL(Avatar::NORMAL);
- $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['PHONE'] = ExternModule::ExtHtmlReady($db_out['Telefon']);
- $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['ROOM'] = ExternModule::ExtHtmlReady($db_out['raum']);
+ $member = InstituteMember::find($db_out['id']);
+ $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['PHONE'] = ExternModule::ExtHtmlReady($member->telefon);
+ $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['ROOM'] = ExternModule::ExtHtmlReady($member->raum);
$content['PERSONS']['GROUP'][$i]['PERSON'][$j]['EMAIL'] = get_visible_email($row['user_id']);
$emails = explode('@', $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['EMAIL']);
$content['PERSONS']['GROUP'][$i]['PERSON'][$j]['EMAIL-LOCAL'] = array_shift($emails);
@@ -300,7 +301,7 @@ class ExternModuleTemplatePersons extends ExternModule {
if ($row['Home'] && Visibility::verify('homepage', $row['user_id'])) {
$content['PERSONS']['GROUP'][$i]['PERSON'][$j]['HOMEPAGE-HREF'] = ExternModule::ExtHtmlReady(trim($row['Home']));
}
- $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['OFFICEHOURS'] = ExternModule::ExtHtmlReady($db_out['sprechzeiten']);
+ $content['PERSONS']['GROUP'][$i]['PERSON'][$j]['OFFICEHOURS'] = ExternModule::ExtHtmlReady($member->sprechzeiten);
$content['PERSONS']['GROUP'][$i]['PERSON'][$j]['PERSON-NO'] = $j + 1;
// generic data fields
diff --git a/lib/extern/modules/views/persons.inc.php b/lib/extern/modules/views/persons.inc.php
index d032b12..5a2b9eb 100644
--- a/lib/extern/modules/views/persons.inc.php
+++ b/lib/extern/modules/views/persons.inc.php
@@ -104,7 +104,7 @@ if (!$grouping) {
$range_ids = array_merge($range_ids, $children);
}
- $query = "SELECT DISTINCT ui.raum, ui.sprechzeiten, ui.Telefon, inst_perms,
+ $query = "SELECT DISTINCT ui.id, inst_perms,
Email, aum.user_id, username, aum.Nachname,
{$_fullname_sql[$nameformat]} AS fullname ";
if ($query_order) {
@@ -157,7 +157,7 @@ foreach ($visible_groups as $group_id => $group) {
}
$ext_vis_query = get_ext_vis_query();
- $query = "SELECT ui.raum, ui.sprechzeiten, ui.Telefon, inst_perms,
+ $query = "SELECT ui.id, inst_perms,
Email, aum.user_id, username, aum.Nachname,
{$_fullname_sql[$nameformat]} AS fullname
FROM statusgruppe_user AS su
@@ -201,7 +201,7 @@ foreach ($visible_groups as $group_id => $group) {
foreach ($rows as $row) {
if ($defaultadr) {
$ext_vis_query = get_ext_vis_query();
- $query = "SELECT ui.raum, ui.sprechzeiten, ui.Telefon,
+ $query = "SELECT ui.id,
inst_perms, Email, aum.user_id, username,
{$_fullname_sql[$nameformat]} AS fullname,
aum.Nachname
@@ -218,7 +218,7 @@ foreach ($visible_groups as $group_id => $group) {
$row = $temp;
} else {
// No default
- $query = "SELECT ui.raum, ui.sprechzeiten, ui.Telefon,
+ $query = "SELECT ui.id,
inst_perms, Email, aum.user_id, username,
{$_fullname_sql[$nameformat]} AS fullname,
aum.Nachname
@@ -234,15 +234,16 @@ foreach ($visible_groups as $group_id => $group) {
}
$email = get_visible_email($row['user_id']);
+ $member = InstituteMember::find($row['id']);
$data['content'] = [
'Nachname' => $this->elements['LinkIntern']->toString([
'content' => htmlReady($row['fullname']),
'module' => 'Persondetails',
'link_args' => 'username=' . $row['username']
]),
- 'Telefon' => htmlReady($row['Telefon']),
- 'sprechzeiten' => htmlReady($row['sprechzeiten']),
- 'raum' => htmlReady($row['raum']),
+ 'Telefon' => htmlReady($member->telefon),
+ 'sprechzeiten' => htmlReady($member->sprechzeiten),
+ 'raum' => htmlReady($member->raum),
'Email' => $this->elements['Link']->toString([
'content' => htmlReady($email),
'link' => 'mailto:' . htmlReady($email)