This commit is contained in:
kindlm
2017-02-07 11:46:06 +01:00
16 changed files with 556 additions and 157 deletions
@@ -604,7 +604,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
foreach ($prestudent->result as $ps)
{
if ($ps->getLaststatus($ps->prestudent_id, $stdsem))
if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch))
{
if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher"))
{
+6 -1
View File
@@ -36,7 +36,7 @@ require_once('../../../include/datum.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/lvangebot.class.php');
require_once('../../../include/addon.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
@@ -56,6 +56,11 @@ require_once('../../../include/addon.class.php');
else
$stdsem=$studiensemester->getaktorNext();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin') && $uid!=$user)
die('Sie haben keine Berechtigung für diesen Vorgang');
$datum = new datum();
$addon = new addon();
+29 -3
View File
@@ -2948,6 +2948,7 @@ function StudentZeugnisAnzeigen()
}
}
// ****
// * Loescht ein Dokument aus dem Archiv
// ****
@@ -2958,7 +2959,7 @@ function StudentAkteDel()
var tree = document.getElementById('student-zeugnis-tree');
if (tree.currentIndex==-1)
return;
return;
try
{
@@ -2987,12 +2988,11 @@ function StudentAkteDel()
var val = new ParseReturnValue(response)
if(!val.dbdml_return)
alert(val.dbdml_errormsg)
alert(val.dbdml_errormsg)
StudentTreeRefresh();
}
}
// ****
// * Deaktiviert die Felder
// ****
@@ -3001,6 +3001,32 @@ function StudentAkteDisableFields(val)
document.getElementById('student-zeugnis-button-archivieren').disabled=val;
}
// ****
// * Offent eine Seite zum Upload einer neuen Datei zu einer archivierten Akte
// ****
function StudentAkteUpload()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('student-zeugnis-tree');
if (tree.currentIndex==-1)
return;
try
{
//Ausgewaehlte Akte holen
var akte_id = getTreeCellText(tree, 'student-zeugnis-tree-akte_id', tree.currentIndex);
}
catch(e)
{
alert(e);
return false;
}
window.open('../vilesci/personen/akteupdate.php?akte_id='+akte_id);
}
// ****
// * Startet das Script zum Archivieren des Zeugnisses und
// * Refresht dann den Tree
+16 -4
View File
@@ -26,6 +26,12 @@ header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
header("Content-type: application/vnd.mozilla.xul+xml");
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
?>
@@ -39,6 +45,12 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<popupset>
<menupopup id="student-zeugnis-tree-popup">
<menuitem label="Entfernen" oncommand="StudentAkteDel();" id="student-zeugnis-tree-popup-aktedel" hidden="false"/>
<?php
if($rechte->isBerechtigt('admin'))
{
echo '<menuitem label="Datei überschreiben" oncommand="StudentAkteUpload();" id="student-zeugnis-tree-popup-akteupload" hidden="false"/>';
}
?>
</menupopup>
</popupset>
<hbox>
@@ -51,7 +63,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
context="student-zeugnis-tree-popup"
flags="dont-build-content"
>
<treecols>
<treecol id="student-zeugnis-tree-titel" label="Titel" flex="2" hidden="false" primary="true"
class="sortDirectionIndicator"
@@ -67,14 +79,14 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<splitter class="tree-splitter"/>
<treecol id="student-zeugnis-tree-gedruckt" label="Gedruckt" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/akte/rdf#gedruckt" />
sort="rdf:http://www.technikum-wien.at/akte/rdf#gedruckt" />
<splitter class="tree-splitter"/>
<treecol id="student-zeugnis-tree-akte_id" label="akte_id" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/akte/rdf#akte_id" />
sort="rdf:http://www.technikum-wien.at/akte/rdf#akte_id" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<treechildren flex="1" >
<treeitem uri="rdf:*">
+1 -1
View File
@@ -374,7 +374,7 @@ class bisverwendung extends basis_db
mitarbeiter_uid=".$this->db_add_param($uid)."
AND (beginn<=".$this->db_add_param($datum)." OR beginn is null)
AND (ende>=".$this->db_add_param($datum_obj->formatDatum($datum,'Y-m-01'))." OR ende is null)
ORDER BY beginn;";
ORDER BY ende desc;";
if($this->db_query($qry))
{
+18 -1
View File
@@ -88,7 +88,7 @@ class vertrag extends basis_db
* @param $person_id
* @return boolean true wenn ok ,false im Fehlerfall
*/
public function loadVertrag($person_id, $abgerechnet=null)
public function loadVertrag($person_id, $abgerechnet=null, $datum=null)
{
$qry = "SELECT
*,
@@ -106,6 +106,23 @@ class vertrag extends basis_db
if($abgerechnet===false)
$qry.=" AND NOT EXISTS (SELECT 1 FROM lehre.tbl_vertrag_vertragsstatus WHERE vertrag_id=tbl_vertrag.vertrag_id AND vertragsstatus_kurzbz='abgerechnet')";
if(!is_null($datum))
{
$qry.=" AND NOT
(
vertragstyp_kurzbz='Lehrauftrag'
AND EXISTS(SELECT
1
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
vertrag_id=tbl_vertrag.vertrag_id
AND studiensemester_kurzbz in (SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start>=".$this->db_add_param($datum).")
)
)";
}
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
+4
View File
@@ -2428,6 +2428,10 @@ class wochenplan extends basis_db
$end_time=$row->ende;
break;
}
else
{
break;
}
}
}
}
+2 -2
View File
@@ -126,8 +126,8 @@ $this->phrasen['pruefung/anmeldungErfolgreichGeloescht'] = 'Iscrizione cancellat
// Mailtexte
$this->phrasen['pruefung/emailSubjectAnmeldungBestaetigung'] = 'Conferma discrizione allappello desame';
$this->phrasen['pruefung/emailBody1'] = 'La sua iscrizione allappello desame è stata';
$this->phrasen['pruefung/emailBody2'] = 'confermata.';
$this->phrasen['pruefung/emailBody1'] = 'La sua iscrizione allappello desame è stata confermata da';
$this->phrasen['pruefung/emailBody2'] = '.';
$this->phrasen['pruefung/emailBodyPruefung'] = 'Appello desame:';
$this->phrasen['pruefung/emailBodyTermin'] = 'Data:';
$this->phrasen['pruefung/emailBodyDauer'] = 'Durata:';
+33 -33
View File
@@ -1,40 +1,40 @@
<?php
$this->phrasen['upload/aktionen']='azioni';
$this->phrasen['upload/auswaehlen']='';
$this->phrasen['upload/benutzerKonnteNichtZugeordnetWerden']='';
$this->phrasen['upload/dateiAufServerDateiformat']='Errore: il formato del file che si vuole caricare sul server non viene supportato';
$this->phrasen['upload/dateien']='';
$this->phrasen['upload/dateienAutomatischUeberschreiben']='sovrascrivere file omonimi';
$this->phrasen['upload/dateienImOrdner']='';
$this->phrasen['upload/dateienInOrdnern']='';
$this->phrasen['upload/dateiExistiertBereits']='Errore: il file è già esistente! Si prega di utilizzare l\'opzione "sovrascrivere automaticamente i file';
$this->phrasen['upload/dateinameDarfNurBuchstaben']='';
$this->phrasen['upload/dateiUpload']='';
$this->phrasen['upload/esWurdeKeinPfadDefiniert']='';
$this->phrasen['upload/fehlerBeimLadenDerLv']='errore di caricamento della LV';
$this->phrasen['upload/fehlerBeimLoeschenDesOrdners']='errore in sede di cancellazione della cartella';
$this->phrasen['upload/formattributInEinNeues ']='';
$this->phrasen['upload/kbGespeichert']='';
$this->phrasen['upload/keineDateienGefunden']='impossibile trovare file';
$this->phrasen['upload/keineGegenstaendeDefiniert']='';
$this->phrasen['upload/keineOrdnerGefunden']='impossibile trovare cartelle corrispondenti';
$this->phrasen['upload/keineSemesterDefiniert']='';
$this->phrasen['upload/keineStudiengaengeDefiniert']='';
$this->phrasen['upload/leeren']='';
$this->phrasen['upload/auswaehlen']='Sfoglia';
$this->phrasen['upload/benutzerKonnteNichtZugeordnetWerden']='Non è stato potuto assegnare lutente %s';
$this->phrasen['upload/dateiAufServerDateiformat']='Errore: il formato del file che si vuole caricare non è supportato';
$this->phrasen['upload/dateien']='File';
$this->phrasen['upload/dateienAutomatischUeberschreiben']='sovrascrivere automaticamente file omonimi';
$this->phrasen['upload/dateienImOrdner']='File nella cartella';
$this->phrasen['upload/dateienInOrdnern']='%s file in %s cartella/e, per un totale di %sKB';
$this->phrasen['upload/dateiExistiertBereits']='Errore: il file è già esistente! Si prega di utilizzare lopzione "sovrascrivere automaticamente file omonimi" ';
$this->phrasen['upload/dateinameDarfNurBuchstaben']='Il nome del file %s non è valido. Il nome del file può contenere solo lettere e numeri';
$this->phrasen['upload/dateiUpload']='Upload';
$this->phrasen['upload/esWurdeKeinPfadDefiniert']='Non è stato definito un percorso per il file';
$this->phrasen['upload/fehlerBeimLadenDerLv']='errore di caricamento del corso';
$this->phrasen['upload/fehlerBeimLoeschenDesOrdners']='errore nella cancellazione della cartella';
$this->phrasen['upload/formattributInEinNeues ']='Errore: si è tentato di cambiare il formato del file in un formato non supportato';
$this->phrasen['upload/kbGespeichert']='KB salvati';
$this->phrasen['upload/keineDateienGefunden']='Nessun file trovtato';
$this->phrasen['upload/keineGegenstaendeDefiniert']='Non è stato possibile definire gli oggetti';
$this->phrasen['upload/keineOrdnerGefunden']='Nessuna cartella trovata';
$this->phrasen['upload/keineSemesterDefiniert']='Non è stato possibile definire il semestre';
$this->phrasen['upload/keineStudiengaengeDefiniert']='Non è stato possibile definire il corso di studi';
$this->phrasen['upload/leeren']='Cancella';
$this->phrasen['upload/maxUploadgroesse']='Grandezza massima per file';
$this->phrasen['upload/name']='';
$this->phrasen['upload/name']='Nome';
$this->phrasen['upload/neuesVerzeichnisErstellen']='crea nuova cartella';
$this->phrasen['upload/studentenUploadEinsehen']='';
$this->phrasen['upload/studentenUploadVerwalten']='';
$this->phrasen['upload/studentenUploadverzeichnis']='';
$this->phrasen['upload/studentenUploadverzeichnisLeeren']='';
$this->phrasen['upload/umEinenOrdnerOderEineDatei']='Per cancellare o modificare un file o una cartella barrare la corrispettiva casella.';
$this->phrasen['upload/unterordnerVon']='';
$this->phrasen['upload/upload']='';
$this->phrasen['upload/verzeichnisErstellen']='';
$this->phrasen['upload/studentenUploadEinsehen']='Visualizza upload studenti';
$this->phrasen['upload/studentenUploadVerwalten']='Gestisci upload studenti';
$this->phrasen['upload/studentenUploadverzeichnis']='Registro degli upload';
$this->phrasen['upload/studentenUploadverzeichnisLeeren']='Cancella registro degli upload';
$this->phrasen['upload/umEinenOrdnerOderEineDatei']='Per cancellare o modificare un file/cartella barrare la corrispettiva casella.';
$this->phrasen['upload/unterordnerVon']='sottocartella di';
$this->phrasen['upload/upload']='Upload';
$this->phrasen['upload/verzeichnisErstellen']='Genera un registro degli upload';
$this->phrasen['upload/verzeichnisname']='Nome cartella';
$this->phrasen['upload/verzeichnisnameDarfNurBuchstaben']='';
$this->phrasen['upload/wollenSieOrdnerWirklichLoeschen']='';
$this->phrasen['upload/wollenSieUploadWirklichLeeren']='';
$this->phrasen['upload/verzeichnisnameDarfNurBuchstaben']='Il nome del registro può contenere solo lettere o numeri';
$this->phrasen['upload/wollenSieOrdnerWirklichLoeschen']='Si vuole veramente cancellare i dati selezionati? Loperazione è irreversibile';
$this->phrasen['upload/wollenSieUploadWirklichLeeren']='Si vuole veramente cancellare il registro degli upload? Loperazione è irreversibile';
?>
+2 -1
View File
@@ -48,7 +48,7 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz)
tbl_person.vorname, tbl_person.nachname,tbl_person.gebdatum,
tbl_studiensemester.bezeichnung as sembezeichnung,
tbl_studiengang.english as bezeichnung_englisch,
tbl_studiengang.orgform_kurzbz, tbl_studiengang.typ
tbl_studiengang.typ, tbl_studiengang.orgform_kurzbz, tbl_person.matr_nr
FROM
public.tbl_person, public.tbl_student, public.tbl_studiengang, public.tbl_benutzer,
public.tbl_studentlehrverband, public.tbl_studiensemester
@@ -189,6 +189,7 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz)
$gebdatum = date('d.m.Y',strtotime($row->gebdatum));
$xml .= " <gebdatum>".$gebdatum."</gebdatum>";
$xml .= " <matrikelnr>".$row->matrikelnr."</matrikelnr>";
$xml .= " <matr_nr>".$row->matr_nr."</matr_nr>";
$xml .= " <studiensemester_kurzbz>".(($stdsem->beschreibung != NULL) ? $stdsem->beschreibung : $studiensemester_kurzbz)."</studiensemester_kurzbz>";
$datum_aktuell = date('d.m.Y');
$xml .= " <datum>".$datum_aktuell."</datum>";
Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

+41 -13
View File
@@ -1396,27 +1396,19 @@ if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM testtool.tbl_
echo 'testtool.tbl_gebiet: Spalte bezeichnung_mehrsprachig hinzugefuegt!<br>';
// Bezeichnung_mehrsprachig aus existierender Bezeichnung vorausfuellen. Ein Eintrag fuer jede Sprache mit Content aktiv.
$qry_help = "SELECT count(*) FROM public.tbl_sprache WHERE content=TRUE;";
$qry_help = "SELECT index FROM public.tbl_sprache WHERE content=TRUE;";
if(!$result = $db->db_query($qry_help))
echo '<strong>tbl_gebiet bezeichnung_mehrsprachig: Fehler beim ermitteln der Sprachen: '.$db->db_last_error().'</strong>';
else
{
$row = $db->db_fetch_row($result);
// In integer umwandeln
$row = intval($row[0]);
$bezeichnungen = '';
for ($i = 1; $i <= $row; $i++)
{
$bezeichnungen .= "\"'||bezeichnung||'\",";
}
//Komma am Ende entfernen
$bezeichnungen = mb_substr($bezeichnungen,0,-1);
$qry = "UPDATE testtool.tbl_gebiet set bezeichnung_mehrsprachig = cast('{".$bezeichnungen."}' as varchar[]);";
$qry='';
while($row = $db->db_fetch_object($result))
$qry.= "UPDATE testtool.tbl_gebiet set bezeichnung_mehrsprachig[".$row->index."] = bezeichnung;";
if(!$db->db_query($qry))
echo '<strong>Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'</strong><br>';
else
echo 'testtool.tbl_gebiet: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen und fuer '.$row.' Sprachen gesetzt<br>';
echo 'testtool.tbl_gebiet: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen<br>';
}
}
@@ -1474,6 +1466,42 @@ if($result = $db->db_query("SELECT character_maximum_length FROM information_sch
}
}
// Nummer in campus.tbl_beispiel von smallint auf integer aendern
if($result = $db->db_query("SELECT data_type FROM information_schema.columns WHERE column_name='nummer' AND table_name='tbl_beispiel' AND table_schema='campus';"))
{
if($row = $db->db_fetch_object($result))
{
if($row->data_type=='smallint')
{
$qry = "ALTER TABLE campus.tbl_beispiel ALTER COLUMN nummer TYPE integer;";
if(!$db->db_query($qry))
echo '<strong>campus.tbl_beispiel: '.$db->db_last_error().'</strong><br>';
else
echo 'campus.tbl_beispiel: Spalte nummer von smallint auf integer geändert<br>';
}
}
}
// Index fuer prestudent und prestudentstatus
if($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_prestudent_person'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "
CREATE INDEX idx_prestudent_person ON public.tbl_prestudent USING btree (person_id);
CREATE INDEX idx_prestudentstatus_prestudent ON public.tbl_prestudentstatus USING btree (prestudent_id);
";
if(!$db->db_query($qry))
echo '<strong>Indizes: '.$db->db_last_error().'</strong><br>';
else
echo 'Diverse Indizes fuer Prestudent und Prestudentstatus hinzugefuegt';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
+224
View File
@@ -0,0 +1,224 @@
<?php
/* Copyright (C) 2017 FHComplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Östereicher <oesi@technikum-wien.at>
*/
require_once('../config/system.config.inc.php');
require_once('../include/basis_db.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/studiensemester.class.php');
// Datenbank Verbindung
$db = new basis_db();
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('admin'))
{
exit('Sie haben keine Berechtigung');
}
echo '<html>
<head>
<title>Studienordnung generieren</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="../skin/vilesci.css" type="text/css" />
</head>
<body>
';
if(isset($_POST["start"]) && $_POST["start"] == "start")
{
$qry = "
SELECT
upper(typ || kurzbz) as kurzbz, kurzbzlang, studiengang_kz, bezeichnung, english,max_semester, orgform_kurzbz,
(
SELECT
studiensemester_kurzbz
FROM
public.tbl_prestudentstatus
JOIN public.tbl_prestudent USING(prestudent_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
studiengang_kz=tbl_studiengang.studiengang_kz
ORDER BY
tbl_studiensemester.start asc limit 1
) as start_studiensemester,
(
SELECT
studiensemester_kurzbz
FROM
public.tbl_prestudentstatus
JOIN public.tbl_prestudent USING(prestudent_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
studiengang_kz=tbl_studiengang.studiengang_kz
AND tbl_prestudentstatus.status_kurzbz='Student'
ORDER BY
tbl_studiensemester.start desc limit 1
) as letztes_studenten_studiensemester,
(
SELECT
gueltigvon
FROM
lehre.tbl_studienordnung
JOIN public.tbl_studiensemester ON(tbl_studiensemester.studiensemester_kurzbz=tbl_studienordnung.gueltigvon)
WHERE
tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz
ORDER BY
tbl_studiensemester.start asc limit 1
) as start_studienordnung
FROM
public.tbl_studiengang
ORDER BY typ, kurzbz
";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
if($row->start_studienordnung == '')
{
echo $row->bezeichnung.' wird uebersprungen da keine Studienordnung vorhanden ist<br>';
continue;
}
if($row->start_studiensemester == '')
{
echo $row->bezeichnung.' wird uebersprungen da keine Statuseintraege vorhanden sind<br>';
continue;
}
if($row->start_studiensemester == $row->start_studienordnung)
{
echo $row->bezeichnung.' wird uebersprungen da bereits eine vollstaendige Studienordnung vorhanden ist<br>';
continue;
}
$stsem = new studiensemester();
$stsem_bis = $stsem->getPreviousFrom($row->start_studienordnung);
$bezeichnung = sprintf("%04s",$row->studiengang_kz).'-'.$row->kurzbz.'-'.$row->start_studiensemester;
// Studienordnung anlegen
$qry_sto = "INSERT INTO lehre.tbl_studienordnung(studiengang_kz, version, gueltigvon, gueltigbis,
bezeichnung, ects, studiengangbezeichnung, studiengangbezeichnung_englisch, studiengangkurzbzlang,
insertamum, insertvon, status_kurzbz) VALUES(".
$db->db_add_param($row->studiengang_kz).','.
"'01',".
$db->db_add_param($row->start_studiensemester).','.
$db->db_add_param($stsem_bis).','.
$db->db_add_param($bezeichnung).','.
$db->db_add_param($row->max_semester*30).','.
$db->db_add_param($row->bezeichnung).','.
$db->db_add_param($row->english).','.
$db->db_add_param($row->kurzbzlang).",now(),'autogenerate','approved');";
if($db->db_query('BEGIN;'.$qry_sto))
{
$qry="SELECT currval('lehre.seq_studienordnung_studienordnung_id') as id;";
if($db->db_query($qry))
{
if($rowseq = $db->db_fetch_object())
{
$studienordnung_id = $rowseq->id;
}
}
// Studienplan anlegen
$qry_stpl = 'INSERT INTO lehre.tbl_studienplan (studienordnung_id, orgform_kurzbz,version,
bezeichnung, regelstudiendauer, sprache, aktiv, semesterwochen, testtool_sprachwahl,
pflicht_sws, pflicht_lvs, ects_stpl, insertamum, insertvon) VALUES ('.
$db->db_add_param($studienordnung_id, FHC_INTEGER).', '.
$db->db_add_param($row->orgform_kurzbz).', '.
"'V1', ".
$db->db_add_param($bezeichnung.'-'.$row->orgform_kurzbz).', '.
$db->db_add_param($row->max_semester, FHC_INTEGER).', '.
"'German', true, 15, false, 0, 0,".
$db->db_add_param($row->max_semester*30, FHC_INTEGER).', '.
"now(),'autogenerate');";
if($db->db_query($qry_stpl))
{
$qry="SELECT currval('lehre.seq_studienplan_studienplan_id') as id;";
if($db->db_query($qry))
{
if($row_seq = $db->db_fetch_object())
{
$studienplan_id = $row_seq->id;
}
}
// Gueltigkeiten setzen
$qry = "SELECT
*
FROM
public.tbl_studiensemester
WHERE
start>=(SELECT start FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz=".$db->db_add_param($row->start_studiensemester).")
AND ende<=(SELECT ende FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz=".$db->db_add_param($stsem_bis).")";
if($result_stsem = $db->db_query($qry))
{
while($row_stsem = $db->db_fetch_object($result_stsem))
{
if(mb_substr($row_stsem->studiensemester_kurzbz,0,2)=='WS')
$sem=1;
else
$sem=2;
while($sem<=$row->max_semester)
{
$qry_stplsem = "INSERT INTO lehre.tbl_studienplan_semester (
studienplan_id, studiensemester_kurzbz, semester) VALUES (" .
$db->db_add_param($studienplan_id) . ', ' .
$db->db_add_param($row_stsem->studiensemester_kurzbz) . ', ' .
$db->db_add_param($sem) . '); ';
$db->db_query($qry_stplsem);
$sem+=2;
}
}
}
}
echo "Generiere ".$bezeichnung." für ".$row->bezeichnung.'<br>';
$db->db_query('COMMIT;');
}
}
}
}
else
{
echo '
<h1>Studienordnungen generieren</h1>
Dieses Script generiert pro Studiengang eine Studienordnung wenn Statuseinträge vorhanden sind
jedoch keine dazupassende Studienordnung. Es werden nur Studienordnungen angelegt VOR bereits bestehenden Studienordnungen.
Es werden keine Lücken gefüllt. Wenn noch keine Studienordnung vorhanden ist, wird der Studiengang uebersprungen.<br>
Es wird jeweils eine Studienordnung, ein Studienplan und die Gültigkeit gesetzt. Es werde leere Dummy Studienpläne erstellt
die keine Lehrveranstaltungen zugeordnet haben.<br>
Dieses Script sollte nur einmalig beim Update auf Version 3.2 gestartet werden und nur dann wenn die Studienpläne
nicht bereits vollständig eingetragen sind.
<form method="POST">
<input type="hidden" name="start" value="start">
<input type="submit" value="Starten">
</form>';
}
echo '</body>
</html>';
+173 -95
View File
@@ -26,6 +26,7 @@ require_once('../include/benutzerberechtigung.class.php');
require_once('../include/studiengang.class.php');
require_once('../include/prestudent.class.php');
require_once('../include/student.class.php');
require_once('../include/studiensemester.class.php');
// Datenbank Verbindung
$db = new basis_db();
@@ -95,7 +96,7 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
SELECT prestudent_id, orgform_kurzbz, studiengang_kz, studiensemester_kurzbz, ausbildungssemester, status_kurzbz
FROM public.tbl_prestudentstatus
JOIN public.tbl_prestudent USING(prestudent_id)
WHERE studienplan_id IS NULL;"))
WHERE studienplan_id IS NULL order by 3,4,5"))
{
$all_count = $db->db_num_rows($result);
$entries_not_unique = 0;
@@ -146,100 +147,68 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
$ct = $db->db_num_rows($result_search);
if($ct < 1)
{
$entries_not_found++;
// Es wurde kein genau passender Studienplan gefunden
/* load informations about the student */
$ps = new prestudent();
$ps->load($row->prestudent_id);
$stud = new student();
$uid = $stud->getUid($row->prestudent_id);
if(in_array($row->status_kurzbz,array('Abbrecher','Unterbrecher','Diplomand','Absolvent')))
{
// Schauen ob fuer das vorherige Studiensemester ein eindeutiger Eintrag vorhanden ist
// Da bei diesen Statuseintraegen Studiensemster und Ausbildungssemester meist versetzt sind
// (zB Wintersemester 2. Semester)
$stsem_obj = new studiensemester();
$stsem_prev = $stsem_obj->getPreviousFrom($row->studiensemester_kurzbz);
$qry_analyze1="
SELECT
studienplan_id
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE lehre.tbl_studienplan.orgform_kurzbz=
(
SELECT COALESCE
(
".$db->db_add_param($row->orgform_kurzbz).",
$qry_search="
SELECT
studienplan_id
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=".$db->db_add_param($row->studiengang_kz)."
AND lehre.tbl_studienplan.orgform_kurzbz=
(
SELECT orgform_kurzbz FROM public.tbl_studiengang
SELECT COALESCE
(
".$db->db_add_param($row->orgform_kurzbz).",
(
SELECT orgform_kurzbz FROM public.tbl_studiengang
WHERE
studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")
)
)
)
AND EXISTS
(
SELECT 1 FROM lehre.tbl_studienplan_semester
WHERE
studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")
)
)
);
";
$result_analyze1 = $db->db_query($qry_analyze1);
if($db->db_num_rows($result_analyze1) == 0)
{
$orgform = $row->orgform_kurzbz;
studienplan_id=tbl_studienplan.studienplan_id
AND studiensemester_kurzbz=".$db->db_add_param($stsem_prev)."
AND semester=".$db->db_add_param($row->ausbildungssemester,FHC_INTEGER)."
LIMIT 1
);
";
if($orgform == null)
if($result_search_alternativ = $db->db_query($qry_search))
{
$qry_analyze1_2="
SELECT orgform_kurzbz FROM public.tbl_studiengang
WHERE
studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")";
$result_analyze1_2 = $db->db_query($qry_analyze1_2);
if($row3 = $db->db_fetch_object($result_analyze1_2))
$orgform = $row3->orgform_kurzbz;
}
if($orgform == null)
{
if(!isset($array_no_orgform[$row->prestudent_id]))
if($db->db_num_rows($result_search_alternativ)==1)
{
$info = array("uid" => $uid, "vorname" => $ps->vorname, "nachname" => $ps->nachname, "stg_kz" => $row->studiengang_kz, "count" => 0);
$array_no_orgform[$row->prestudent_id] = $info;
// Es wurde ein eindeutiger Eintrag gefunden
// dieser wird gesetzt
$sp = $db->db_fetch_object($result_search_alternativ);
if(!$db->db_query("UPDATE public.tbl_prestudentstatus SET studienplan_id=".$db->db_add_param($sp->studienplan_id, FHC_INTEGER).
" WHERE prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER).
" AND status_kurzbz=".$db->db_add_param($row->status_kurzbz).
" AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz).
" AND ausbildungssemester=".$db->db_add_param($row->ausbildungssemester, FHC_INTEGER)
))
$entries_with_error ++;
continue;
}
$array_no_orgform[$row->prestudent_id]["count"] ++;
}
else
{
$key = $orgform;
if(!isset($array_orgform[$key]))
{
$info = array("orgform_kurzbz" => $orgform, "count" => 0);
$array_orgform[$key] = $info;
}
$array_orgform[$key]["count"] ++;
}
}
$qry_analyze2="
SELECT
studienplan_id
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=".$db->db_add_param($row->studiengang_kz);
$result_analyze2 = $db->db_query($qry_analyze2);
if($db->db_num_rows($result_analyze2) == 0)
{
$key = $row->studiengang_kz;
if(!isset($array_stg_without_studienplan[$key]))
{
$info = array("stg_kz" => $row->studiengang_kz, "count" => 0);
$array_stg_without_studienplan[$key] = $info;
}
$array_stg_without_studienplan[$key]["count"] ++;
}
// Pruefen ob der Studiengang in diesem Semester Studienplaene hat
// unabhaengig der orgform
$qry_analyze3="
SELECT
studienplan_id
@@ -263,22 +232,138 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
);";
$result_analyze3 = $db->db_query($qry_analyze3);
if($db->db_num_rows($result_analyze3) == 0)
$cnt = $db->db_num_rows($result_analyze3);
if($cnt == 0)
{
$key = $row->studiengang_kz." ".$row->status_kurzbz;
$key = $row->studiengang_kz." ".$row->ausbildungssemester." ".$row->studiensemester_kurzbz." ".$row->status_kurzbz;
if(!isset($array_studienplan_semester[$key]))
{
$info = array("stg_kz" => $row->studiengang_kz, "ausbildungssemester" => $row->ausbildungssemester, "studiensemester_kurzbz" => $row->studiensemester_kurzbz, "status_kurzbz" => $row->status_kurzbz, "count" => 0);
$array_studienplan_semester[$key] = $info;
}
$array_studienplan_semester[$key]["count"] ++;
$analyse_gefunden=true;
}
elseif($cnt == 1)
{
// Wenn es in dem Studiengang genau einen passenden Studienplan gibt
// dieser jedoch die falsche orgform hat, dann wird dieser trotzdem gesetzt
// da dies bei alten Studiengaengen nicht immer so genau angelegt wurde
$sp = $db->db_fetch_object($result_analyze3);
if(!$db->db_query("UPDATE public.tbl_prestudentstatus SET studienplan_id=".$db->db_add_param($sp->studienplan_id, FHC_INTEGER).
" WHERE prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER).
" AND status_kurzbz=".$db->db_add_param($row->status_kurzbz).
" AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz).
" AND ausbildungssemester=".$db->db_add_param($row->ausbildungssemester, FHC_INTEGER)
))
$entries_with_error ++;
continue;
}
$entries_not_found++;
$analyse_gefunden=false;
/* load informations about the student */
$ps = new prestudent();
$ps->load($row->prestudent_id);
$stud = new student();
$uid = $stud->getUid($row->prestudent_id);
// Pruefen ob die Orgform generell existiert in einem Studienplan
$qry_analyze1="
SELECT
studienplan_id
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE lehre.tbl_studienplan.orgform_kurzbz=
(
SELECT COALESCE
(
".$db->db_add_param($row->orgform_kurzbz).",
(
SELECT orgform_kurzbz FROM public.tbl_studiengang
WHERE
studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")
)
)
)
";
$result_analyze1 = $db->db_query($qry_analyze1);
if($db->db_num_rows($result_analyze1) == 0)
{
$orgform = $row->orgform_kurzbz;
if($orgform == null)
{
$qry_analyze1_2="
SELECT orgform_kurzbz FROM public.tbl_studiengang
WHERE
studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")";
$result_analyze1_2 = $db->db_query($qry_analyze1_2);
if($row3 = $db->db_fetch_object($result_analyze1_2))
$orgform = $row3->orgform_kurzbz;
}
if($orgform == null)
{
if(!isset($array_no_orgform[$row->prestudent_id]))
{
$info = array("uid" => $uid, "vorname" => $ps->vorname, "nachname" => $ps->nachname, "stg_kz" => $row->studiengang_kz, "count" => 0);
$array_no_orgform[$row->prestudent_id] = $info;
}
$array_no_orgform[$row->prestudent_id]["count"] ++;
}
else
{
$key = $orgform;
if(!isset($array_orgform[$key]))
{
$info = array("orgform_kurzbz" => $orgform, "count" => 0);
$array_orgform[$key] = $info;
}
$array_orgform[$key]["count"] ++;
}
$analyse_gefunden=true;
}
// Pruefen ob der Studiengang Studienplaene hat
$qry_analyze2="
SELECT
studienplan_id
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=".$db->db_add_param($row->studiengang_kz);
$result_analyze2 = $db->db_query($qry_analyze2);
if($db->db_num_rows($result_analyze2) == 0)
{
$key = $row->studiengang_kz;
if(!isset($array_stg_without_studienplan[$key]))
{
$info = array("stg_kz" => $row->studiengang_kz, "count" => 0);
$array_stg_without_studienplan[$key] = $info;
}
$array_stg_without_studienplan[$key]["count"] ++;
$analyse_gefunden=true;
}
/*if(!$analyse_gefunden)
var_dump($row);
*/
}
else if($ct > 1)
{
// Es wurden mehrere passende Studienplaene gefunden
// Eindeutige zuordnung nicht moeglich
$ps = new prestudent();
$ps->load($row->prestudent_id);
$stud = new student();
$uid = $stud->getUid($row->prestudent_id);
if(!isset($array_not_unique[$row->prestudent_id]))
{
$info = array("prestudent_id" => $row->prestudent_id, "uid" => $uid, "vorname" => $ps->vorname, "nachname" => $ps->nachname, "stg_kz" => $row->studiengang_kz, "count" => 0);
@@ -289,6 +374,8 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
}
else
{
// Es wurde ein eindeutiger Eintrag gefunden
// dieser wird gesetzt
$sp = $db->db_fetch_object($result_search);
if(!$db->db_query("UPDATE public.tbl_prestudentstatus SET studienplan_id=".$db->db_add_param($sp->studienplan_id, FHC_INTEGER).
" WHERE prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER).
@@ -315,13 +402,8 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
echo $entries_not_unique." sind nicht eindeutig<br>";
echo $entries_with_error." konnten aufgrund eines Fehlers nicht eingetragen werden<br>";
echo "Es wurde eine quote von <span style='color:$color;'>" . round($quote,2) . "%</span> erreicht<br>";
echo "<h2 style='margin-top:20px;'>Details</h2>";
$ct = countIntArray($array_no_orgform);
if($ct)
{
@@ -337,9 +419,6 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
echo "</table>";
}
$ct = countIntArray($array_stg_without_studienplan);
if($ct)
{
@@ -368,7 +447,6 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
echo "</table>";
}
$ct = countIntArray($array_studienplan_semester);
if($ct)
{
@@ -387,7 +465,6 @@ if(isset($_POST["start"]) && $_POST["start"] == "start")
echo "</div>";
}
$ct = countIntArray($array_not_unique);
if($ct)
{
@@ -414,6 +491,7 @@ else
<p>Es werden nur Einträge mit studienplan_id IS NULL geändert</p>
<p>Hinweis:</p>
<p style="color:orange;">Vor diesem Skript sollte <a style="color:red;text-decoration: underline;" href="checksystem.php">Checksystem</a> ausgef&uuml;hrt werden!</p>
<p style="color:orange;">Wenn die Studienordnungen nicht vollständig eingepflegt sind, kann <a style="color:red;text-decoration: underline;" href="generate_missing_sto.php">dieses Script</a> ausgef&uuml;hrt werden um Dummy Studienpläne aufgrund von Statuseinträgen zu generieren!</p>
<?php
}
+6 -2
View File
@@ -65,7 +65,11 @@ if(isset($_POST['submitdatei']))
}
}
echo '
if(isset($_GET['akte_id']) && is_numeric($_GET['akte_id']))
$akte_id = $_GET['akte_id'];
else
$akte_id = '';
echo '
<br>
Hier können bestehnde Akten die bereits im FAS archiviert mit neuen Dokumenten überschrieben werden.<br>
Dies ist hilfreich wenn zB Zeugnisse manuell korrigiert wurden.
@@ -73,7 +77,7 @@ Dies ist hilfreich wenn zB Zeugnisse manuell korrigiert wurden.
<form method="POST" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'">
<table>
<tr><td>Datei:</td><td><input type="file" name="datei" /></td></tr>
<tr><td>AkteID:</td><td><input type="text" name="akte_id" /></td></tr>
<tr><td>AkteID:</td><td><input type="text" name="akte_id" value="'.$akte_id.'"/></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td></td><td><input type="submit" name="submitdatei" value="Upload" /></td></tr>