Merge branch 'master' into feature-19538/Gruppenadministratoren

This commit is contained in:
Harald Bamberger
2022-08-16 07:54:43 +02:00
30 changed files with 1946 additions and 96 deletions
@@ -309,4 +309,50 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id));
}
/**
* Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus
* Diese funktion ist für autocomplete gedacht
*
* @param string $filter Suchfilter
* @return \stdClass A return object
*/
public function loadTemplates($filter)
{
$filter = strtolower($filter);
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR
LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR
LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%'
)
";
return $this->execQuery($qry);
}
/**
* Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück
* Diese funktion ist für autocomplete gedacht
*
* @param string $name
* @return \stdClass A return object
*/
public function loadTemplateByName($name)
{
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "'
)
";
return $this->execQuery($qry);
}
}
+6 -6
View File
@@ -82,7 +82,7 @@ class Person_model extends DB_Model
}
else
{
$person['svnr'] = $person['svnr'] . 'v' . ($result->retval[0]->svnr{11} + 1);
$person['svnr'] = $person['svnr'] . 'v' . ($result->retval[0]->svnr[11] + 1);
}
}
}
@@ -283,8 +283,8 @@ class Person_model extends DB_Model
SELECT p2.person_id
FROM public.tbl_person p
JOIN public.tbl_person p2
ON p.vorname = p2.vorname
AND p.nachname = p2.nachname
ON lower(p.vorname) = lower(p2.vorname)
AND lower(p.nachname) = lower(p2.nachname)
AND p.gebdatum = p2.gebdatum
AND p.person_id = ?
)
@@ -310,8 +310,8 @@ class Person_model extends DB_Model
SELECT p2.person_id
FROM public.tbl_person p
JOIN public.tbl_person p2
ON p.vorname = p2.vorname
AND p.nachname = p2.nachname
ON lower(p.vorname) = lower(p2.vorname)
AND lower(p.nachname) = lower(p2.nachname)
AND p.gebdatum = p2.gebdatum
AND p.person_id = ?
)
@@ -330,7 +330,7 @@ class Person_model extends DB_Model
SELECT vorname, nachname, gebdatum, person_id
FROM tbl_person
) p2
ON (p1.vorname = p2.vorname AND p1.nachname = p2.nachname AND p1.gebdatum = p2.gebdatum)
ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum)
WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)";
return $this->execQuery($qry, array($person_id, $person_id, $person_id));
@@ -254,6 +254,22 @@
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
LIMIT 1
) AS "ZGVMNation",
(
SELECT upper(tbl_nation.nationengruppe_kurzbz)
FROM public.tbl_prestudent ps
JOIN bis.tbl_nation ON ps.zgvnation = tbl_nation.nation_code
WHERE ps.person_id = p.person_id
ORDER BY ps.zgvnation DESC NULLS LAST, ps.prestudent_id DESC
LIMIT 1
) AS "ZGVNationGruppe",
(
SELECT upper(tbl_nation.nationengruppe_kurzbz)
FROM public.tbl_prestudent ps
JOIN bis.tbl_nation ON ps.zgvmanation = tbl_nation.nation_code
WHERE ps.person_id = p.person_id
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
LIMIT 1
) AS "ZGVMNationGruppe",
(
SELECT tbl_organisationseinheit.bezeichnung
FROM public.tbl_benutzerfunktion
@@ -361,6 +377,8 @@
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')',
'ZGV Nation BA',
'ZGV Nation MA',
'ZGV Gruppe BA',
'ZGV Gruppe MA',
'InfoCenter Mitarbeiter'
),
'formatRow' => function($datasetRaw) {
@@ -452,6 +470,16 @@
$datasetRaw->{'ZGVMNation'} = '-';
}
if ($datasetRaw->{'ZGVNationGruppe'} == null)
{
$datasetRaw->{'ZGVNationGruppe'} = '-';
}
if ($datasetRaw->{'ZGVMNationGruppe'} == null)
{
$datasetRaw->{'ZGVMNationGruppe'} = '-';
}
if ($datasetRaw->{'InfoCenterMitarbeiter'} === null)
{
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
@@ -199,14 +199,15 @@ $query = '
LIMIT 1
) AS "ReihungstestApplied",
(
SELECT rtp.datum
SELECT CONCAT(rtp.datum, rtp.uhrzeit)
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
LEFT JOIN (
SELECT rtp.person_id,
rt.studiensemester_kurzbz,
rtp.teilgenommen,
rt.datum
rt.datum,
rt.uhrzeit
FROM public.tbl_rt_person rtp
JOIN tbl_reihungstest rt ON(rtp.rt_id = rt.reihungstest_id)
WHERE rt.stufe = 1
@@ -409,13 +410,13 @@ $query = '
$datasetRaw->{'ReihungstestApplied'} = 'Nein';
}
if ($datasetRaw->{'ReihungstestDate'} == null)
if ($datasetRaw->{'ReihungstestDate'} == '')
{
$datasetRaw->{'ReihungstestDate'} = '-';
}
else
{
$datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d');
$datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d H:i');
}
if ($datasetRaw->{'ZGVNation'} == null)
+33 -14
View File
@@ -31,15 +31,35 @@ $query = "WITH zustaendigkeiten AS (
$query .= " THEN TRUE
ELSE FALSE
END AS \"zustaendig\"
FROM system.tbl_fehler_zustaendigkeiten zst
FROM system.tbl_fehler_zustaendigkeiten zst
)";
$query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
ftyp.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlerstatus\",
verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\",
fr.fehlertyp_kurzbz AS \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\",
(
/* show all relevant Studiengänge of person and wether it is an employee*/
SELECT STRING_AGG(studiengang || ' ' || last_status, ' | ')
|| (CASE WHEN EXISTS (
SELECT 1 FROM public.tbl_mitarbeiter ma
JOIN public.tbl_benutzer ben ON ma.mitarbeiter_uid = ben.uid
WHERE person_id = prestudents.person_id
AND ben.aktiv
) THEN ' | Mitarbeiter' ELSE '' END)
FROM (
SELECT DISTINCT person_id, prestudent_id, UPPER(stg.typ || stg.kurzbz) AS studiengang, get_rolle_prestudent(ps.prestudent_id, null) AS last_status
FROM public.tbl_prestudent ps
JOIN public.tbl_studiengang stg USING (studiengang_kz)
WHERE person_id = pers.person_id
ORDER BY prestudent_id DESC
) prestudents
WHERE last_status IN ('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')
GROUP BY person_id
LIMIT 1;
) AS \"Zugehörigkeit\",
CASE
WHEN
EXISTS(SELECT 1
@@ -60,7 +80,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern
FROM system.tbl_fehler_zustaendigkeiten
JOIN public.tbl_person USING (person_id)
WHERE fehlercode = fr.fehlercode
GROUP BY fehlercode
GROUP BY fehlercode
) AS \"Person Zuständigkeiten\",
(
SELECT string_agg(organisationseinheittyp_kurzbz || ' ' || oe.bezeichnung || COALESCE(' - ' || fu.beschreibung, ''), ' | ' ORDER BY bezeichnung, oe_kurzbz)
@@ -68,7 +88,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern
LEFT JOIN public.tbl_organisationseinheit oe USING (oe_kurzbz)
LEFT JOIN public.tbl_funktion fu USING (funktion_kurzbz)
WHERE fehlercode = fr.fehlercode
GROUP BY fehlercode
GROUP BY fehlercode
) AS \"Organisationseinheit Zuständigkeiten\"
FROM system.tbl_issue iss
JOIN system.tbl_fehler fr USING (fehlercode)
@@ -95,13 +115,13 @@ if (!isEmptyArray($all_oe_kurzbz_berechtigt))
AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */
FROM public.tbl_prestudentstatus ps_finished
JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz)
WHERE prestudent_id = ps.prestudent_id
WHERE prestudent_id = ps.prestudent_id
AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener')
AND datum::date + interval '2 months' < NOW()
AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
AND person_id = ps.person_id
AND prestudent_id <> ps_finished.prestudent_id
AND tbl_studiensemester.start::date > sem_finished.start::date)
@@ -149,6 +169,7 @@ $filterWidgetArray = array(
ucfirst($this->p->t('fehlermonitoring', 'statuscode')),
ucfirst($this->p->t('person', 'vorname')),
ucfirst($this->p->t('person', 'nachname')),
ucfirst($this->p->t('fehlermonitoring', 'zugehoerigkeit')),
ucfirst($this->p->t('fehlermonitoring', 'hauptzustaendig')),
ucfirst($this->p->t('fehlermonitoring', 'zustaendigePersonen')),
ucfirst($this->p->t('fehlermonitoring', 'zustaendigeOrganisationseinheiten'))
@@ -180,16 +201,16 @@ $filterWidgetArray = array(
$datasetRaw->{'OE'} = '-';
}
if ($datasetRaw->{'Verarbeitet am'} == null)
{
$datasetRaw->{'Verarbeitet am'} = '-';
}
if ($datasetRaw->{'Verarbeitet von'} == null)
{
$datasetRaw->{'Verarbeitet von'} = '-';
}
if ($datasetRaw->{'Zugehörigkeit'} == null)
{
$datasetRaw->{'Zugehörigkeit'} = '-';
}
if ($datasetRaw->{'Person Zuständigkeiten'} == null)
{
$datasetRaw->{'Person Zuständigkeiten'} = '-';
@@ -200,8 +221,6 @@ $filterWidgetArray = array(
$datasetRaw->{'Organisationseinheit Zuständigkeiten'} = '-';
}
return $datasetRaw;
},
'markRow' => function($datasetRaw) {
@@ -282,7 +282,7 @@ function showHideBezeichnungDropDown()
}
else if (dd.options[dd.selectedIndex].value == 'DienstF')
{
sp.innerHTML = '<font color="red"><b>Dienstfreistellungen</b> nur in Absprache mit Personalservice eintragen!</font><br><input type="text" name="bezeichnung" maxlength="32" size="32" value="">';
sp.innerHTML = '<font color="red"><b>Dienstfreistellungen</b> nur in Absprache mit HR Service eintragen!</font><br><input type="text" name="bezeichnung" maxlength="32" size="32" value="">';
}
else
{
+1 -1
View File
@@ -275,7 +275,7 @@ function searchOE($searchItems)
$oe->result[] = new organisationseinheit($row->oe_kurzbz);
}
if(count($oe->result)>0)
if(is_array($oe->result) && count($oe->result)>0)
{
echo '<h2 style="padding-bottom: 10px;">',$p->t('global/organisationseinheiten'),'</h2>';
echo '
+1 -1
View File
@@ -496,7 +496,7 @@ if(!$error)
elseif(isset($_POST['stsem_aktuell']))
{
$stsem = new studiensemester();
$studiensemester_kurzbz = $stsem->getakt();
$studiensemester_kurzbz = $stsem->getNearest();
$variable->name = 'semester_aktuell';
$variable->wert = $studiensemester_kurzbz;
+1 -1
View File
@@ -1477,7 +1477,7 @@ if(!$error)
$lema_new->insertamum = date('Y-m-d H:i:s');
$lema_new->insertvon = $user;
$lema_new->ext_id = $row->ext_id;
$lema_new->vertrag_id = $row->vertrag_id;
$lema_new->vertrag_id = '';
if (!$lema_new->save(true))
{
+221 -7
View File
@@ -95,6 +95,7 @@ if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$r
$data = '';
$error = true;
}
$check_statusaenderung_berechtigung = 'student/keine_studstatuspruefung';
// *** FUNKTIONEN ***
@@ -372,6 +373,175 @@ function isBuchungAllowedToChange($buchung_obj)
return true;
}
/**
*
* Prüft für einen Prestudenten, ob eine bestimmte Statusänderung valide ist.
* @param $prestudent_id
* @param $status_kurzbz des neuen/bearbeiteten Status
* @param $new_status_studiensemester Studiensemester des neuen/zu ändernen Status
* @param $new_status_datum Datum des neuen/zu ändernen Status
* @param $new_status_ausbildungssemester Ausbildungssemester des neuen/zu ändernen Status
* @param $old_status_studiensemester Studiensemester des alten Status, leer wenn neuer Status
* @param $old_status_ausbildungssemester Ausbildungssemester des alten Status, leer wenn neuer Status
* @return array
*/
function checkStatusaenderung(
$prestudent_id, $status_kurzbz, $new_status_studiensemester, $new_status_datum, $new_status_ausbildungssemester,
$old_status_studiensemester = '', $old_status_ausbildungssemester = ''
)
{
global $db;
// Es ist ein neuer Status wenn es kein altes Semester gibt
$isNewStatus = $old_status_studiensemester == '' && $old_status_ausbildungssemester == '';
// status_kurzbz für Endstatus
$endstatusArr = array('Absolvent', 'Abbrecher');
// Datum des neuen Status setzen
$new_status_datum = new DateTime($new_status_datum);
// Wenn neuer Status
if ($isNewStatus)
{
// Datum des neuen Status darf nicht in Vergangenheit liegen, sonst Probleme wenn neues Datum < Bismeldedatum
$current_date = new DateTime('today');
if ($new_status_datum < $current_date)
{
return array(
'error' => true,
'errormsg' => 'Datum eines neuen Statuseintrags darf nicht in der Vergangenheit liegen'
);
}
}
// start des Studiensemesters holen
$studiensemester = new studiensemester();
$studiensemester->load($new_status_studiensemester);
$new_status_semesterstart = new DateTime($studiensemester->start);
// Alle bisherigen prestudentstatus nach Datum sortiert
$qry = "SELECT status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, sem.start AS studiensemester_start
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz)
WHERE prestudent_id=".$db->db_add_param($prestudent_id, FHC_INTEGER);
// zu ändernden Status rausfiltern wenn Status bearbeitet wird
if (!$isNewStatus)
{
$qry .= " AND NOT (
status_kurzbz=".$db->db_add_param($status_kurzbz)
." AND studiensemester_kurzbz=".$db->db_add_param($old_status_studiensemester)
." AND ausbildungssemester=".$db->db_add_param($old_status_ausbildungssemester, FHC_INTEGER)."
)";
}
$qry .= " ORDER BY datum DESC, pss.insertamum DESC, pss.ext_id DESC";
$statusArr = array();
if ($result = $db->db_query($qry))
{
$newStatusInserted = false;
// für jeden Status
while ($row = $db->db_fetch_object($result))
{
$studiensemester_start = new DateTime($row->studiensemester_start);
$status_datum = new DateTime($row->datum);
// Neuer/editierter Statuseintrag nach bestehendem Statuseintrag
if ($new_status_datum >= $status_datum && $new_status_semesterstart >= $studiensemester_start)
{
if (!$newStatusInserted)
{
// neuer Status erstmals größer als Datum eines bestehenden Status -> neuen Status einfügen
$new_status = new stdClass();
$new_status->status_kurzbz = $status_kurzbz;
$new_status->studiensemester_kurzbz = $new_status_studiensemester;
$new_status->datum = $new_status_datum;
$new_status->ausbildungssemester = $new_status_ausbildungssemester;
$statusArr[] = $new_status;
$newStatusInserted = true;
}
// Gültige Zeitabfolge, bestehenden Status hinzufügen
$statusArr[] = $row;
}
// oder Neuer/editierter Statuseintrag nach bestehendem Statuseintrag
elseif ($new_status_datum <= $status_datum && $new_status_semesterstart <= $studiensemester_start)
{
// Gültige Zeitabfolge, bestehenden Status hinzufügen
$statusArr[] = $row;
}
else
{
// Zeitabfolge ungültig, Fehler
return array(
'error' => true,
'errormsg' => 'Datum des Statuseintrags muss nach dem Statusdatum,'
.' Semesterstartdatum nach Semesterstartdatum des vorherigen Statuseintrags sein'
);
}
}
// Prüfungen den Prestudentstatus betreffend
// Über alle gespeicherten Status gehen und Statusabfolge prüfen
for ($i = 0; $i < count($statusArr); $i++)
{
$curr_status = $statusArr[$i];
$curr_status_kurzbz = $curr_status->status_kurzbz;
$curr_status_ausbildungssemester = $curr_status->ausbildungssemester;
$next_idx = $i - 1; //absteigend sortiert, nächster Status ist vorheriger Eintrag
$next_status = isset($statusArr[$next_idx]) ? $statusArr[$next_idx] : null;
// Abbrecher- oder Absolventenstatus muss Endstatus sein
if (isset($next_status) && in_array($curr_status_kurzbz, $endstatusArr))
{
return array(
'error' => true,
'errormsg' => 'Nach Abbrecher- und Absolventenstatus darf kein anderer Status mehr eingetragen werden'
);
}
// wenn Unterbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
if (
$curr_status_kurzbz == 'Unterbrecher' && isset($next_status) && $next_status->status_kurzbz == 'Unterbrecher'
&& $curr_status_ausbildungssemester != $next_status->ausbildungssemester
)
{
return array(
'error' => true,
'errormsg' => 'Aufeinanderfolgende Unterbrecher müssen gleiches Ausbildungssemester haben'
);
}
// wenn Abbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
if (
isset($next_status) && $curr_status_kurzbz == 'Unterbrecher'
&& $next_status->status_kurzbz == 'Abbrecher' && $curr_status_ausbildungssemester != $next_status->ausbildungssemester
)
{
return array(
'error' => true,
'errormsg' => 'Unterbrecher und folgender Abbrecher müssen gleiches Ausbildungssemester haben'
);
}
// keine Studenten nach Diplomand Status
if (
isset($next_status) && $curr_status_kurzbz == 'Diplomand' && $next_status->status_kurzbz == 'Student'
)
{
return array(
'error' => true,
'errormsg' => 'Nach Diplomantenstatus darf kein Studentenstatus mehr eingetragen werden'
);
}
}
}
else
return array('error' => true, 'errormsg' => 'Fehler bei Statusänderungcheck');
return array('error' => false, 'errormsg' => '');
}
if(!$error)
{
@@ -403,7 +573,7 @@ if(!$error)
$return = false;
$errormsg = 'Geburtsdatum ist nicht korrekt.';
$error = true;
}
}
if(!$error)
{
@@ -648,12 +818,12 @@ if(!$error)
$prestudent->zgvort = $_POST['zgvort'];
$prestudent->zgvdatum = $_POST['zgvdatum'];
$prestudent->zgvnation = $_POST['zgvnation'];
$prestudent->zgv_erfuellt = $_POST['zgv_erfuellt'];
$prestudent->zgv_erfuellt = $_POST['zgv_erfuellt'];
$prestudent->zgvmas_code = $_POST['zgvmas_code'];
$prestudent->zgvmaort = $_POST['zgvmaort'];
$prestudent->zgvmadatum = $_POST['zgvmadatum'];
$prestudent->zgvmanation = $_POST['zgvmanation'];
$prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt'];
$prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt'];
$prestudent->zgvdoktor_code = $_POST['zgvdoktor_code'];
$prestudent->zgvdoktorort = $_POST['zgvdoktorort'];
$prestudent->zgvdoktordatum = $_POST['zgvdoktordatum'];
@@ -808,6 +978,28 @@ if(!$error)
}
}
// wenn keine spezielle Berechtiung zur Umgebung, Statusänderung Checks durchführen
if (!$rechte->isBerechtigt($check_statusaenderung_berechtigung))
{
$new_status_datum = isset($_POST['datum']) ? $_POST['datum'] : date('Y-m-d');
$check_statusaenderung_result = checkStatusaenderung(
$prestudent_id,
$_POST['status_kurzbz'],
$studiensemester,
$new_status_datum,
$sem
);
if (isset($check_statusaenderung_result['error']) && $check_statusaenderung_result['error'] === true)
{
$return = false;
$error = true;
$errormsg .= isset($check_statusaenderung_result['errormsg']) ? $check_statusaenderung_result['errormsg'] : '';
$anzahl_fehler++;
}
}
if(!$error)
{
$prestd_neu = new prestudent();
@@ -1003,7 +1195,7 @@ if(!$error)
isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) &&
isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester']))
{
if($_POST['status_kurzbz']=='Student' && !$rechte->isBerechtigt('admin', null, 'suid'))
if($_POST['status_kurzbz']=='Student' && !$rechte->isBerechtigt('admin', null, 'suid') && !$rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid'))
{
$return = false;
$errormsg = 'Studentenrolle kann nur durch den Administrator geloescht werden';
@@ -1019,7 +1211,7 @@ if(!$error)
if($row->anzahl<=1)
{
$deletePrestudent = true;
if (!$rechte->isBerechtigt('admin', null, 'suid'))
if (!$rechte->isBerechtigt('admin', null, 'suid') && !$rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid'))
{
$return = false;
$errormsg = 'Die letzte Rolle kann nur durch den Administrator geloescht werden';
@@ -1307,6 +1499,28 @@ if(!$error)
$rolle->new = false;
}
// Statuschecks durchführen wenn keine spezielle Berechtigung zur Umgehung
if (!$rechte->isBerechtigt($check_statusaenderung_berechtigung))
{
// allgemeine Prüfung bei Änderung oder Hinzufügen eines Status, inkludiert alle Status
$check_statusaenderung_result = checkStatusaenderung(
$_POST['prestudent_id'],
$_POST['status_kurzbz'],
$_POST['studiensemester_kurzbz'],
$_POST['datum'],
$_POST['ausbildungssemester'],
$_POST['studiensemester_old'],
$_POST['ausbildungssemester_old']
);
if (isset($check_statusaenderung_result['error']) && $check_statusaenderung_result['error'] === true)
{
$return = false;
$error = true;
$errormsg = isset($check_statusaenderung_result['errormsg']) ? $check_statusaenderung_result['errormsg'] : '';
}
}
if(!$error)
{
// Bei Studenten wird der Studentlehrverband Eintrag angelegt/korrigiert
@@ -2361,7 +2575,7 @@ if(!$error)
{
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
continue;
if($dokument_kurzbz!='')
{
$dok = new dokument();
@@ -2374,7 +2588,7 @@ if(!$error)
$dok->new = true;
if ($dokument_kurzbz === 'Sonst')
$sonst++;
if(!$dok->save())
{
+3 -2
View File
@@ -71,9 +71,10 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<row>
<label value="Person ID" control="student-detail-textbox-person_id"/>
<hbox><textbox id="student-detail-textbox-person_id" readonly="true" maxlength="16" size="16"/></hbox>
<label value="Zugangscode" control="student-detail-zugangscode"/>
<?php $hideZugangscode = (defined('ACTIVE_ADDONS') && strpos(ACTIVE_ADDONS, 'bewerbung') !== false) ? '':' hidden="true"'; ?>
<label value="Zugangscode" control="student-detail-zugangscode" <?php echo $hideZugangscode; ?>/>
<label id="label-student-detail-link_bewerbungstool" hidden="true" value=""></label>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" onclick="window.open(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" <?php echo $hideZugangscode; ?> onclick="window.open(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<?php $hideBpk = $rechte->isBerechtigt('student/bpk') ? '':' hidden="true"'; ?>
<label value="BPK" control="student-detail-textbox-bpk"<?php echo $hideBpk; ?>/>
<hbox><textbox id="student-detail-textbox-bpk" disabled="true" maxlength="28" size="50"<?php echo $hideBpk; ?>/></hbox>
+1
View File
@@ -831,6 +831,7 @@ class lehreinheit extends basis_db
}
while($row = $this->db_fetch_object())
{
if(!isset($this->lehreinheiten[$row->unr])) $this->lehreinheiten[$row->unr] = new stdClass();
$this->lehreinheiten[$row->unr]->lehreinheit_id[]=$row->lehreinheit_id;
$this->lehreinheiten[$row->unr]->lvnr[]=$row->lvnr;
$this->lehreinheiten[$row->unr]->unr=$row->unr;
+115 -4
View File
@@ -69,6 +69,7 @@ class lehrveranstaltung extends basis_db
public $semester_alternativ; // smallint
public $farbe;
public $lehrauftrag=true;
public $lehrveranstaltung_template_id; // integer
public $studienplan_lehrveranstaltung_id;
@@ -158,6 +159,7 @@ class lehrveranstaltung extends basis_db
$this->lvnr = $row->lvnr;
$this->semester_alternativ = $row->semester_alternativ;
$this->farbe = $row->farbe;
$this->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$this->sws = $row->sws;
$this->lvs = $row->lvs;
@@ -237,6 +239,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -387,6 +390,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -516,6 +520,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -598,6 +603,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -729,6 +735,25 @@ class lehrveranstaltung extends basis_db
$this->errormsg = 'Semesterwochen muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->lehrveranstaltung_template_id != '')
{
if (!isint($this->lehrveranstaltung_template_id)) {
$this->errormsg = 'Lehrveranstaltung Template Id muss eine gültige ganze Zahl sein';
return false;
} elseif($this->lehrtyp_kurzbz == 'tpl') {
$this->errormsg = 'Lehrveranstaltung Template Id darf bei Lehrveranstaltungen des Typs "Template" nicht gesetzt werden';
return false;
} else {
$template = new lehrveranstaltung($this->lehrveranstaltung_template_id);
if ($template->errormsg) {
$this->errormsg = 'Lehrveranstaltung Template: ' . $template->errormsg;
return false;
} elseif ($template->lehrtyp_kurzbz != 'tpl') {
$this->errormsg = 'Lehrveranstaltung Template: Als Lehrtyp muss Template ausgewählt sein';
return false;
}
}
}
$this->errormsg = '';
return true;
}
@@ -753,7 +778,7 @@ class lehrveranstaltung extends basis_db
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, insertamum,
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,
zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz,
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo,
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe, lehrveranstaltung_template_id,sws,lvs,alvs,lvps,las,benotung,lvinfo,
lehrauftrag, lehrmodus_kurzbz) VALUES ('.
$this->db_add_param($this->studiengang_kz). ', '.
$this->db_add_param($this->bezeichnung). ', '.
@@ -790,6 +815,7 @@ class lehrveranstaltung extends basis_db
$this->db_add_param($this->lvnr).','.
$this->db_add_param($this->semester_alternativ).','.
$this->db_add_param($this->farbe).','.
$this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).','.
$this->db_add_param($this->sws).','.
$this->db_add_param($this->lvs).','.
$this->db_add_param($this->alvs).','.
@@ -846,6 +872,7 @@ class lehrveranstaltung extends basis_db
'lvnr = ' . $this->db_add_param($this->lvnr) . ', ' .
'semester_alternativ = '.$this->db_add_param($this->semester_alternativ).', '.
'farbe = '.$this->db_add_param($this->farbe).', '.
'lehrveranstaltung_template_id = '.$this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).', '.
'sws = '.$this->db_add_param($this->sws).', '.
'lvs = '.$this->db_add_param($this->lvs).', '.
'alvs = '.$this->db_add_param($this->alvs).', '.
@@ -960,6 +987,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1054,6 +1082,7 @@ class lehrveranstaltung extends basis_db
$l->lvnr = $row->lvnr;
$l->semester_alternativ = $row->semester_alternativ;
$l->farbe = $row->farbe;
$l->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$l->benotung = $this->db_parse_bool($row->benotung);
$l->lvinfo = $this->db_parse_bool($row->lvinfo);
$l->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1137,6 +1166,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1236,6 +1266,7 @@ class lehrveranstaltung extends basis_db
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
$obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->stpllv_sort = $row->stpllv_sort;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -1309,7 +1340,7 @@ class lehrveranstaltung extends basis_db
return $childs;
}
/**
/**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
public function hasChildren($studienplan_lehrveranstaltung_id)
@@ -1360,6 +1391,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->lvnr = $lv->lvnr;
$obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($lv->benotung);
$obj->lvinfo =$this->db_parse_bool( $lv->lvinfo);
$obj->zeugnis = $this->db_parse_bool($lv->zeugnis);
@@ -1385,6 +1417,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_koordinator = $this->stpllv_koordinator;
$obj->oe_kurzbz = $this->oe_kurzbz;
$obj->lvnr = $this->lvnr;
$obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($this->benotung);
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
@@ -1424,6 +1457,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->lvnr = $lv->lvnr;
$obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id;
$obj->stpllv_sort = $lv->stpllv_sort;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->sws = $lv->sws;
@@ -1467,6 +1501,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_pflicht = $this->stpllv_pflicht;
$obj->stpllv_koordinator = $this->stpllv_koordinator;
$obj->lvnr = $this->lvnr;
$obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($this->benotung);
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
@@ -1574,6 +1609,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1660,6 +1696,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1750,7 +1787,7 @@ class lehrveranstaltung extends basis_db
* @param $aktiv optional, true wenn nur aktive LVs
* @param $lehrtyp optional, gewünschter Lehrtyp
*/
public function load_lva_oe($oe_kurzbz, $aktiv=null, $lehrtyp=null, $sort=null, $semester=null)
public function load_lva_oe($oe_kurzbz, $aktiv=null, $lehrtyp=null, $sort=null, $semester=null, $lehrmodus=null)
{
if (is_null($oe_kurzbz))
@@ -1831,6 +1868,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -1961,6 +1999,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -2088,6 +2127,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -2276,7 +2316,7 @@ class lehrveranstaltung extends basis_db
}
/**
* Lädt alle Lehrveranstaltungen eine Studienplans
* Lädt alle Lehrveranstaltungen eines Studienplans
* Optionale Filterung nach Lehrtyp und Semester
* @param type $studienplan_id
* @param type $lehrtyp_kurzbz
@@ -2358,6 +2398,7 @@ class lehrveranstaltung extends basis_db
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
$obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -2665,5 +2706,75 @@ class lehrveranstaltung extends basis_db
return false;
}
}
/**
* Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus
* Diese funktion ist für autocomplete gedacht
*
* @param string $filter Suchfilter
* @return array
*/
public function loadTemplates($filter)
{
$filter = strtolower($filter);
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR
LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR
LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%'
)
";
$lehrveranstaltungen = [];
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$lehrveranstaltungen[] = $row;
}
return $lehrveranstaltungen;
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage';
return [];
}
}
/**
* Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück
* Diese funktion ist für autocomplete gedacht
*
* @param string $name
* @return stdClass | null
*/
public function loadTemplateByName($name)
{
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "'
)
";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
return $row;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
}
return null;
}
}
?>
+1 -1
View File
@@ -284,7 +284,7 @@ class person extends basis_db
//Quersumme bilden
for ($i = 0; $i < 10; $i++)
{
$erg += $gewichtung[$i] * $this->svnr{$i};
$erg += $gewichtung[$i] * $this->svnr[$i];
}
if ($this->svnr[3] != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
+47 -32
View File
@@ -27,35 +27,36 @@ class studiengang extends basis_db
public $new; // boolean
public $result = array(); // studiengang Objekt
public $studiengang_kz; // integer
public $kurzbz; // varchar(5)
public $kurzbzlang; // varchar(10)
public $bezeichnung; // varchar(128)
public $english; // varchar(128)
public $typ; // char(1)
public $farbe; // char(6)
public $email; // varchar(64)
public $max_semester; // smallint
public $max_verband; // char(1)
public $max_gruppe; // char(1)
public $erhalter_kz; // smallint
public $bescheid; // varchar(256)
public $bescheidbgbl1; // varchar(16)
public $bescheidbgbl2; // varchar(16)
public $bescheidgz; // varchar(16)
public $bescheidvom; // Date
public $titelbescheidvom; // Date
public $ext_id; // bigint
public $orgform_kurzbz; // varchar(3)
public $zusatzinfo_html; // text
public $sprache; // varchar(16)
public $testtool_sprachwahl;// boolean
public $studienplaetze; // smallint
public $oe_kurzbz; // varchar(32)
public $onlinebewerbung; // boolean
public $melderelevant; // boolean
public $foerderrelevant; // boolean
public $standort_code; // integer
public $studiengang_kz; // integer
public $kurzbz; // varchar(5)
public $kurzbzlang; // varchar(10)
public $bezeichnung; // varchar(128)
public $english; // varchar(128)
public $typ; // char(1)
public $farbe; // char(6)
public $email; // varchar(64)
public $max_semester; // smallint
public $max_verband; // char(1)
public $max_gruppe; // char(1)
public $erhalter_kz; // smallint
public $bescheid; // varchar(256)
public $bescheidbgbl1; // varchar(16)
public $bescheidbgbl2; // varchar(16)
public $bescheidgz; // varchar(16)
public $bescheidvom; // Date
public $titelbescheidvom; // Date
public $ext_id; // bigint
public $orgform_kurzbz; // varchar(3)
public $zusatzinfo_html; // text
public $sprache; // varchar(16)
public $testtool_sprachwahl; // boolean
public $studienplaetze; // smallint
public $oe_kurzbz; // varchar(32)
public $onlinebewerbung; // boolean
public $melderelevant; // boolean
public $foerderrelevant; // boolean
public $standort_code; // integer
public $melde_studiengang_kz; // varchar(32)
public $kuerzel; // = typ + kurzbz (Bsp: BBE)
public $kuerzel_arr = array(); // Array mit allen Kurzeln Index=studiengangs_kz
@@ -134,6 +135,7 @@ class studiengang extends basis_db
$this->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
$this->melde_studiengang_kz = $row->melde_studiengang_kz;
$this->bezeichnung_arr['German'] = $this->bezeichnung;
$this->bezeichnung_arr['English'] = $this->english;
@@ -210,6 +212,7 @@ class studiengang extends basis_db
$stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$stg_obj->standort_code = $row->standort_code;
$stg_obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$stg_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$stg_obj->bezeichnung_arr['English'] = $row->english;
@@ -431,6 +434,7 @@ class studiengang extends basis_db
$stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$stg_obj->standort_code = $row->standort_code;
$stg_obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$stg_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$stg_obj->bezeichnung_arr['English'] = $row->english;
@@ -474,6 +478,11 @@ class studiengang extends basis_db
$this->errormsg = 'studiengang_kz ungueltig!';
return false;
}
if(isset($this->melde_studiengang_kz) && $this->melde_studiengang_kz != '' && !is_numeric($this->melde_studiengang_kz))
{
$this->errormsg = 'melde_studiengang_kz ungueltig!';
return false;
}
$this->errormsg = '';
return true;
}
@@ -501,7 +510,7 @@ class studiengang extends basis_db
typ, farbe, email, telefon, max_verband, max_semester, max_gruppe, erhalter_kz, bescheid, bescheidbgbl1,
bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, aktiv, onlinebewerbung, orgform_kurzbz, zusatzinfo_html,
oe_kurzbz, moodle, sprache, testtool_sprachwahl, studienplaetze, lgartcode, mischform,projektarbeit_note_anzeige,
melderelevant, foerderrelevant, standort_code) VALUES ('.
melderelevant, foerderrelevant, standort_code, melde_studiengang_kz) VALUES ('.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
$this->db_add_param($this->kurzbz).', '.
$this->db_add_param($this->kurzbzlang).', '.
@@ -535,7 +544,8 @@ class studiengang extends basis_db
$this->db_add_param($this->projektarbeit_note_anzeige, FHC_BOOLEAN).','.
$this->db_add_param($this->melderelevant, FHC_BOOLEAN).','.
$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).','.
$this->db_add_param($this->standort_code).');';
$this->db_add_param($this->standort_code).','.
$this->db_add_param($this->melde_studiengang_kz).');';
}
else
{
@@ -575,7 +585,8 @@ class studiengang extends basis_db
'mischform='.$this->db_add_param($this->mischform, FHC_BOOLEAN).', '.
'melderelevant='.$this->db_add_param($this->melderelevant, FHC_BOOLEAN).', '.
'foerderrelevant='.$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).', '.
'standort_code='.$this->db_add_param($this->standort_code).' '.
'standort_code='.$this->db_add_param($this->standort_code).', '.
'melde_studiengang_kz='.$this->db_add_param($this->melde_studiengang_kz).' '.
'WHERE studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER, false).';';
}
@@ -701,6 +712,7 @@ class studiengang extends basis_db
$this->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
$this->melde_studiengang_kz = $row->melde_studiengang_kz;
$this->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$this->bezeichnung_arr['German'] = $this->bezeichnung;
@@ -844,6 +856,7 @@ class studiengang extends basis_db
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$this->result[] = $obj;
@@ -1024,6 +1037,7 @@ class studiengang extends basis_db
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
@@ -1161,6 +1175,7 @@ class studiengang extends basis_db
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
+21
View File
@@ -27,6 +27,8 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/lehrveranstaltung.class.php');
require_once(dirname(__FILE__).'/studienordnung.class.php');
class studienplan extends basis_db
{
@@ -526,6 +528,25 @@ class studienplan extends basis_db
public function saveStudienplanLehrveranstaltung()
{
$lv = new lehrveranstaltung();
$lv->load($this->lehrveranstaltung_id);
if ($lv->lehrtyp_kurzbz == 'tpl') {
$lv->lehrtyp_kurzbz = 'lv';
$sp = new studienplan();
$sp->loadStudienplan($this->studienplan_id);
$so = new studienordnung();
$so->loadStudienordnung($sp->studienordnung_id);
$lv->studiengang_kz = $so->studiengang_kz;
$lv->semester = $this->semester;
$lv->lehrveranstaltung_template_id = $this->lehrveranstaltung_id;
if (!$lv->save(true)) {
$this->errormsg = "Fehler beim kopieren des Templates: " . $lv->errormsg;
return false;
}
$this->lehrveranstaltung_id = $lv->lehrveranstaltung_id;
}
if ($this->new)
{
//Neuen Datensatz einfuegen
+1 -1
View File
@@ -72,7 +72,7 @@ $menu=array
'Lehrveranstaltung'=>array('name'=>'Lehrveranstaltung', 'link'=>'lehre/lehrveranstaltung_frameset.html', 'target'=>'main'),
'Studienordnung'=>array('name'=>'Studienordnung', 'link'=>'lehre/studienordnung.php', 'target'=>'_blank','permissions'=>array('lehre/studienordnung')),
'StudienplanGueltigkeit'=>array('name'=>'Studienplan Gültigkeit', 'link'=>'lehre/studienplan_gueltigkeit.php', 'target'=>'main','permissions'=>array('lehre/studienordnung')),
'StudienplanVorruecken'=>array('name'=>'Studienplan vorrücken', 'link'=>'lehre/studienplan_vorrueckung.php', 'target'=>'main','permissions'=>array('lehre/studienordnung')),
'StudienplanVorruecken'=>array('name'=>'Studienplan vorrücken', 'link'=>'lehre/studienplan_vorrueckung.php', 'target'=>'main','permissions'=>array('lehre/studienplan')),
'Freifach'=>array
(
+4 -2
View File
@@ -754,8 +754,9 @@ class wochenplan extends basis_db
if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='')
$lvb.=$lehrstunde->grp;
}
if (count($lehrstunde->gruppe_kurzbz)>0)
if ($lehrstunde->gruppe_kurzbz != '')
$lvb=$lehrstunde->gruppe_kurzbz;
$lehrverband[]=$lvb;
// Lehrfach
$lf=$lehrstunde->lehrfach;
@@ -1458,8 +1459,9 @@ class wochenplan extends basis_db
if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='')
$lvb.=$lehrstunde->grp;
}
if (count($lehrstunde->gruppe_kurzbz)>0)
if ($lehrstunde->gruppe_kurzbz != '')
$lvb=$lehrstunde->gruppe_kurzbz;
$lehrverband[]=$lvb;
// Lehrfach
$lf=htmlspecialchars($lehrstunde->lehrfach);
@@ -43,7 +43,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$this->edit = $edit;
$this->data = $data;
}
/**
* @return string
@@ -77,7 +77,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$this->addError($ex->getMessage());
}
}
/**
* @param string $zeitaufzeichnung_id
* @return void
@@ -125,7 +125,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$this->zeit->service_id = $service_id;
$this->zeit->kunde_uid = $kunde_uid;
}
/**
* @param string $start datetime
* @param string $end datetime
@@ -145,7 +145,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
* @param string $start "Y-m-d H:i:s" formatted datetime
* @param string $end "Y-m-d H:i:s" formatted datetime
* @return void
*
*
* @throws Exception
*/
protected function checkPauseInArbeitszeit($start, $end) {
@@ -158,7 +158,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
* @param string $start "Y-m-d H:i:s" formatted datetime
* @param string $end "Y-m-d H:i:s" formatted datetime
* @return void
*
*
* @throws Exception
*/
protected function checkPauseValid($start, $end) {
@@ -177,7 +177,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$ende = $this->zeit->ende;
$this->zeit->ende = $this->datum->formatDatum($start, 'Y-m-d H:i:s');
if (!$this->zeit->save()) {
$this->addError($p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $this->zeit->errormsg);
$this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $this->zeit->errormsg);
}
//Eintrag für die Pause
$pause = new zeitaufzeichnung();
@@ -193,7 +193,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$pause->ende = $this->datum->formatDatum($end, 'Y-m-d H:i:s');
$pause->beschreibung = '';
if (!$pause->save()) {
$this->addError($p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $pause->errormsg);
$this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $pause->errormsg);
}
// Eintrag Arbeit ab der Pause
if ($this->zeit->new == false) {
@@ -208,7 +208,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
/**
* @return void
*
*
* @throws Exception
*/
protected function saveZeit() {
@@ -218,5 +218,5 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$this->addInfo($this->p->t("global/datenWurdenGespeichert"));
}
}
}
+99 -2
View File
@@ -6126,6 +6126,20 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic
}
}
// Add column melde_studiengang_kz to public.tbl_studiengang and prefill values
if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studiengang LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN melde_studiengang_kz varchar(32);
UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT lpad(abs(studiengang_kz)::text, 4, '0') FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND lgartcode IS NULL;
UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT (SELECT lpad(erhalter_kz::text, 3, '0') FROM public.tbl_erhalter) || lpad(abs(studiengang_kz)::text, 4, '0') FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND lgartcode IS NOT NULL;
COMMENT ON COLUMN public.tbl_studiengang.melde_studiengang_kz IS 'Studiengangskennzahl, mit der der Studiengang gemeldet wird (z.B. Bismeldung)'";
if(!$db->db_query($qry))
echo '<strong>public.tbl_studiengang: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_studiengang: Neue Spalte melde_studiengang_kz hinzugefuegt.';
}
// ADD COLUMN insertamum to system.tbl_fehler_zustaendigkeiten
if(!@$db->db_query("SELECT insertamum FROM system.tbl_fehler_zustaendigkeiten LIMIT 1"))
{
@@ -6242,6 +6256,89 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
// NOTE(chris): Add "Template" to "Lehrtyp"
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrtyp WHERE bezeichnung = 'Template';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO lehre.tbl_lehrtyp(lehrtyp_kurzbz, bezeichnung) VALUES('tpl', 'Template');";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_lehrtyp '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_lehrtyp: Added "Template"';
}
}
// NOTE(chris): Add Column "lehrveranstaltung_template_id" in tbl_lehrveranstaltung
if(!$result = @$db->db_query("SELECT lehrveranstaltung_template_id FROM lehre.tbl_lehrveranstaltung LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lehrveranstaltung_template_id integer;
ALTER TABLE lehre.tbl_lehrveranstaltung ADD CONSTRAINT fk_lehrveranstaltung_template FOREIGN KEY (lehrveranstaltung_template_id) REFERENCES lehre.tbl_lehrveranstaltung (lehrveranstaltung_id) ON DELETE RESTRICT ON UPDATE CASCADE;";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_lehrveranstaltung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_lehrveranstaltung: Spalte lehrveranstaltung_template_id hinzugefuegt';
}
// NOTE(chris): Add Webservice Rights for lehrveranstaltung::loadTemplates
if($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicerecht WHERE berechtigung_kurzbz='soap/studienordnung' AND methode = 'loadTemplates' AND klasse = 'lehrveranstaltung';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, insertamum, insertvon, klasse) VALUES('soap/studienordnung', 'loadTemplates', now(), 'checksystem', 'lehrveranstaltung');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_webservicerecht '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_webservicerecht: soap/studienordnung/loadTemplates->lehrveranstaltung hinzugefügt';
}
}
// NOTE(chris): Add Webservice Rights for lehrveranstaltung::loadTemplateByName
if($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicerecht WHERE berechtigung_kurzbz='soap/studienordnung' AND methode = 'loadTemplateByName' AND klasse = 'lehrveranstaltung';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, insertamum, insertvon, klasse) VALUES('soap/studienordnung', 'loadTemplateByName', now(), 'checksystem', 'lehrveranstaltung');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_webservicerecht '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_webservicerecht: soap/studienordnung/loadTemplateByName->lehrveranstaltung hinzugefügt';
}
}
// Add permission for avoiding checks when saving prestudentstatus
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/keine_studstatuspruefung';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/keine_studstatuspruefung', 'Ermöglicht Umgehen der Checks beim Speichern der Presstudentstatus');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo 'system.tbl_berechtigung: Added permission for student/keine_studstatuspruefung<br>';
}
}
// Grant SELECT to bis.tbl_gsprogramm for web-user
if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_gsprogramm' AND table_schema='bis' AND grantee='web' AND privilege_type in ('SELECT')"))
{
if($db->db_num_rows($result)==0)
{
$qry = "GRANT SELECT ON bis.tbl_gsprogramm TO web;";
if(!$db->db_query($qry))
echo '<strong>tbl_gsprogramm Berechtigungen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted SELECT privileges to web for bis.tbl_gsprogramm';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -6366,7 +6463,7 @@ $tabellen=array(
"lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"),
"lehre.tbl_lehrmodus" => array("lehrmodus_kurzbz","bezeichnung_mehrsprachig","aktiv"),
"lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"),
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz"),
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz","lehrveranstaltung_template_id"),
"lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"),
"lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"),
@@ -6477,7 +6574,7 @@ $tabellen=array(
"public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","gruppe","sql","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz","publish","preferences"),
"public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code","melde_studiengang_kz"),
"public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung","bezeichnung_mehrsprachig"),
"public.tbl_studienjahr" => array("studienjahr_kurzbz","bezeichnung"),
"public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"),
+3
View File
@@ -927,6 +927,7 @@ $filters = array(
{"name": "Nachname"},
{"name": "PersonId"},
{"name": "Fehlerstatus"},
{"name": "Zugehörigkeit"},
{"name": "Person Zuständigkeiten"},
{"name": "Organisationseinheit Zuständigkeiten"}
],
@@ -963,6 +964,7 @@ $filters = array(
{"name": "Nachname"},
{"name": "PersonId"},
{"name": "Fehlerstatus"},
{"name": "Zugehörigkeit"},
{"name": "Person Zuständigkeiten"},
{"name": "Organisationseinheit Zuständigkeiten"}
],
@@ -995,6 +997,7 @@ $filters = array(
{"name": "Nachname"},
{"name": "PersonId"},
{"name": "Fehlerstatus"},
{"name": "Zugehörigkeit"},
{"name": "Verarbeitet von"},
{"name": "Verarbeitet am"}
],
File diff suppressed because it is too large Load Diff
+3 -1
View File
@@ -304,7 +304,9 @@ elseif ($stg_kz == 'alleBaMa')
JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
WHERE
bismelden=TRUE
AND tbl_studiengang.typ IN ('b','m')
AND tbl_studiengang.typ IN ('b','m','e')
AND tbl_studiengang.melderelevant=TRUE
AND tbl_studiengang.studiengang_kz > 0
AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
AND (status_kurzbz='Student' OR status_kurzbz='Outgoing'
OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent'
+8 -3
View File
@@ -727,9 +727,9 @@ echo '
16: {sorter: false, filter: false},
19: {sorter: false, filter: false},
20: {sorter: false, filter: false},
21: {sorter: false, filter: false},
22: {sorter: false, filter: false},
23: {sorter: false, filter: false}},
23: {sorter: false, filter: false},
24: {sorter: false, filter: false}},
widgetOptions : {filter_functions : {
// Add select menu to this column
12 : {
@@ -1083,7 +1083,8 @@ if ($result_lv!=0)
<th>Zeugnis</th>
<th title='Soll diese Lehrveranstaltung bei Diplom-/Bachelorarbeit ausgewaehlt werden koennen?'>BA/DA</th>
<th>Koordinator</th>
<th class=\"lvinfo\" >LV-Info</th>\n";
<th class=\"lvinfo\" >LV-Info</th>
<th>Template</th>\n";
if($write_admin)
{
@@ -1295,6 +1296,10 @@ if ($result_lv!=0)
else
echo 'vorhanden';
echo '</td>';
//Template
echo "<td align='right'>";
echo $db->convert_html_chars($row->lehrveranstaltung_template_id);
echo '</td>';
if($write_admin)
{
echo '
@@ -121,6 +121,7 @@
$lv->benotung = isset($_POST['benotung']);
$lv->lvinfo = isset($_POST['lvinfo']);
$lv->lehrauftrag = isset($_POST['lehrauftrag']);
$lv->lehrveranstaltung_template_id = $lv->lehrtyp_kurzbz == 'tpl' ? '' : $_POST['lehrveranstaltung_template_id'];
if(!$lv->save())
$errorstr = "Fehler beim Speichern der Daten: $lv->errormsg";
@@ -436,6 +437,13 @@
<td>Lehrauftrag</td>
<td><input type="checkbox" name="lehrauftrag" '.($lv->lehrauftrag?'checked':'').'></td>
</tr>
<tr id="lehrveranstaltung_template_id">
<td>Template</td>
<td colspan="2"><input type="text" name="lehrveranstaltung_template_id" value="'.$lv->lehrveranstaltung_template_id.'" size="6"> <span class="text-template_name"></span></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
@@ -527,6 +535,7 @@
<title>Lehrveranstaltung - Details</title>
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../skin/colorpicker.css" type="text/css"/>
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css"/>
<script type="text/javascript" src="../../include/js/mailcheck.js"></script>
<script type="text/javascript" src="../../include/js/datecheck.js"></script>
@@ -665,6 +674,91 @@
{
$(this).ColorPickerSetColor(this.value);
});
$('input[name="lehrveranstaltung_template_id"]').autocomplete({
minLength: 2,
source: function(request, response) {
$.ajax({
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
typ: "json",
class: "lehrveranstaltung",
method: "loadTemplates",
parameter_0: request.term
}
}).then(data => {
for (var k in data.return) {
data.return[k].value = data.return[k].lehrveranstaltung_id;
data.return[k].name = data.return[k].bezeichnung + " [" + data.return[k].kurzbz + "]";
data.return[k].label = data.return[k].name + " (" + data.return[k].lehrveranstaltung_id + ")";
}
response(data.return);
});
},
close: function(e, ui) {
$(this).trigger('check.ac-template');
},
focus: function(e, ui) {
$(this).removeClass('input_ok input_error').val(ui.item.value).parent().parent().find('.text-template_name').text(ui.item.name);
return false;
},
select: function(e, ui) {
$(this).addClass('input_ok').val(ui.item.value).parent().parent().find('.text-template_name').text(ui.item.name);
return false;
}
}).focus(function(e) {
$(this).removeClass('input_ok input_error');
}).blur(function(e) {
$(this).trigger('check.ac-template');
}).on('check.ac-template', function(e) {
var self = $(this),
val = self.val();
if (!val) {
self.removeClass('input_ok input_error').parent().parent().find('.text-template_name').text('');
} else {
$.ajax({
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
typ: "json",
class: "lehrveranstaltung",
method: "loadTemplates",
parameter_0: val
},
success: function(data) {
if (self.val() == val) {
var label = '',
state = '',
item = null;
for (var k in data.return) {
if (data.return[k].lehrveranstaltung_id == val) {
item = data.return[k];
break;
}
}
if (item) {
state = 'input_ok';
label = item.bezeichnung + " [" + item.kurzbz + "]";
} else if (val) {
state = 'input_error';
}
self.removeClass('input_ok input_error').addClass(state).parent().parent().find('.text-template_name').text(label);
}
}
});
}
}).trigger('check.ac-template');
$('select[name="lehrtyp_kurzbz"]').change(function(e) {
if ($(this).val() == 'tpl') {
$('#lehrveranstaltung_template_id').hide();
} else {
$('#lehrveranstaltung_template_id').show();
}
}).change();
});
</script>
<style type="text/css">
+1
View File
@@ -1180,6 +1180,7 @@ function saveJsondataFromTree(nodeId, studienplan_id, studienplan_lehrveranstalt
{
if(d.error!==undefined && d.error=='false')
{
node.attr("lvid", d.result[0].lehrveranstaltung_id);
node.attr("studienplan_lehrveranstaltung_id", d.result[0].studienplan_lehrveranstaltung_id);
node.attr("id", d.result[0].studienplan_lehrveranstaltung_id);
$("#jsonData").html(d);
+6 -3
View File
@@ -31,11 +31,13 @@ $uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('lehre/studienordnung', null, 's'))
if(!$rechte->isBerechtigt('lehre/studienplan', null, 's'))
{
die($rechte->errormsg);
}
$berechtigteStgKz = $rechte->getStgKz('lehre/studienplan');
echo '<!DOCTYPE HTML>
<html>
<head>
@@ -138,7 +140,7 @@ echo '</form>';
if(isset($_POST['vorruecken']) && !empty($studienplaene) && $studiensemester_kurzbz_to != '')
{
if(!$rechte->isBerechtigt('lehre/studienordnung', null, 'suid'))
if(!$rechte->isBerechtigt('lehre/studienplan', null, 'sui'))
{
die($rechte->errormsg);
}
@@ -193,6 +195,7 @@ if(isset($_POST['show']) && $studiensemester_kurzbz_from != '' && $studiensemest
AND studiengang_kz = sto.studiengang_kz
)
AND tbl_studiengang.typ IN ('b', 'm', 'l')
AND tbl_studiengang.studiengang_kz IN (".implode(',',$berechtigteStgKz).")
AND studienplan.onlinebewerbung_studienplan = true";
if (substr($studiensemester_kurzbz_from,0,2) == 'SS')
{
@@ -244,7 +247,7 @@ if(isset($_POST['show']) && $studiensemester_kurzbz_from != '' && $studiensemest
</tr>';
}
echo "</tbody></table>";
if ($rechte->isBerechtigt('lehre/studienordnung', null, 'suid'))
if ($rechte->isBerechtigt('lehre/studienplan', null, 'sui'))
{
echo '<button type="submit" name="vorruecken">Ausgewählte Studienpläne vorrücken</button>';
}
+75
View File
@@ -440,6 +440,44 @@ if ($deleteAllResults)
}
}
// Ajax-Request um die Liste zusammenzuräumen
$clearList = filter_input(INPUT_POST, 'clearList', FILTER_VALIDATE_BOOLEAN);
if ($clearList)
{
if (!$rechte->isBerechtigt('infocenter', null, 'suid'))
{
echo json_encode(array(
'status' => 'fehler',
'msg' => $rechte->errormsg
));
exit();
}
$qry = "DELETE FROM testtool.tbl_pruefling pf
WHERE
(
NOT EXISTS (SELECT 1 FROM testtool.tbl_pruefling_frage WHERE pruefling_id=pf.pruefling_id) AND
NOT EXISTS (SELECT 1 FROM testtool.tbl_antwort WHERE pruefling_id=pf.pruefling_id)
)";
if ($result = $db->db_query($qry))
{
echo json_encode(array(
'status' => 'ok',
'msg' => $db->db_affected_rows($result).' leere Prüflinge wurden gelöscht'));
exit();
}
else
{
echo json_encode(array(
'status' => 'fehler',
'msg' => 'Fehler beim Löschen der leeren Prüflinge'
));
exit();
}
}
// Ajax-Request um einen Prüfling zu sperren
$rtprueflingEntSperren = filter_input(INPUT_POST, 'rtprueflingEntSperren', FILTER_VALIDATE_BOOLEAN);
if ($rtprueflingEntSperren)
{
@@ -2581,6 +2619,39 @@ else
});
window.location.href = "mailto:?bcc="+adresseArray.join(";");
}
function clearList()
{
$.ajax({
url: "auswertung_fhtw.php",
data: {clearList: true},
type: "POST",
dataType: "json",
success: function(data)
{
if(data.status !== "ok")
{
$("#msgbox").attr("class","alert alert-danger");
$("#msgbox").show();
$("#msgbox").html(data["msg"]);
}
else
{
$("#freischaltenWarning").show();
$("#freischaltenInfo").hide();
$("#msgbox").show();
$("#msgbox").html(data["msg"]).delay(2000).fadeOut();
}
},
error: function(data)
{
$("#msgbox").attr("class","alert alert-danger");
$("#msgbox").show();
$("#msgbox").html(data["msg"]);
}
});
}
function checkAllWithResult()
{
// Schleife ueber die einzelnen Elemente
@@ -2965,6 +3036,10 @@ else
{
echo '&nbsp;&nbsp;<a href="#" class="btn btn-default btn-xs" disabled="" role="button" title="Aktiv nur bei Einzelterminauswahl">Testfortschritt ansehen</a>';
}
if ($rechte->isBerechtigt('infocenter', null, 'suid'))
{
echo '&nbsp;&nbsp;<button type="button" class="btn btn-default btn-xs" onclick="clearList()" id="clearListButton" title="Löscht alle Prüflinge, bei denen keine Daten vorhanden sind">Liste aufräumen</button>';
}
echo '</div></div></form>';
echo ' <form class="form" role="form">
<div class="panel panel-default hiddenEl" id="uebertragenOptions">
+1 -1
View File
@@ -438,7 +438,7 @@ Alte Anmerkungen: ".$personToDelete_obj->anmerkungen;
$anmerkung .= "
Zusammengelegt mit Person-ID ".$personToDelete_obj->person_id." am ".date('d.m.Y H:i:s');
Zusammengelegt mit Person-ID ".$personToDelete_obj->person_id." am ".date('d.m.Y H:i:s')." von ".$uid;
// Letztbenutzten Zugangscode abfragen und übernehmen
$zugangscode = '';
@@ -92,6 +92,7 @@ $lgartcode='';
$melderelevant = false;
$foerderrelevant = false;
$standort_code='';
$melde_studiengang_kz = '';
$schick = filter_input(INPUT_POST, 'schick');
$onlinebewerbung = false;
@@ -155,6 +156,7 @@ if($schick)
$melderelevant = filter_input(INPUT_POST, 'melderelevant', FILTER_VALIDATE_BOOLEAN);
$foerderrelevant = filter_input(INPUT_POST, 'foerderrelevant', FILTER_VALIDATE_BOOLEAN);
$standort_code = filter_input(INPUT_POST, 'standort_code');
$melde_studiengang_kz = filter_input(INPUT_POST, 'melde_studiengang_kz');
$ext_id = filter_input(INPUT_POST, 'ext_id');
@@ -223,6 +225,7 @@ if($schick)
$sg_update->melderelevant = $melderelevant;
$sg_update->foerderrelevant = $foerderrelevant;
$sg_update->standort_code = $standort_code;
$sg_update->melde_studiengang_kz = $melde_studiengang_kz;
$sg_update->bescheidvom=$date->formatDatum($sg_update->bescheidvom,'Y-m-d');
$sg_update->titelbescheidvom=$date->formatDatum($sg_update->titelbescheidvom,'Y-m-d');
@@ -292,6 +295,7 @@ if ((isset($_REQUEST['studiengang_kz'])) && ((!isset($_REQUEST['neu'])) || ($_RE
$melderelevant = $sg->melderelevant;
$foerderrelevant = $sg->foerderrelevant;
$standort_code = $sg->standort_code;
$melde_studiengang_kz = $sg->melde_studiengang_kz;
}
$erh = new erhalter();
@@ -611,6 +615,12 @@ if (!$erh->getAll('kurzbz'))
</td>
<td valign="top">
<table>
<tr>
<td>Meldestudiengangskennzahl</td>
<td>
<input class="detail" type="text" name="melde_studiengang_kz" size="16" maxlength="7" value="<?php echo $melde_studiengang_kz ?>" onchange="submitable()">
</td>
</tr>
<tr>
<td>Bezeichnung</td>
<td>