Kopieren von Studienordnungen hinzugefügt

This commit is contained in:
Andreas Österreicher
2014-05-21 13:57:42 +00:00
parent 029216e78e
commit f55fcaad05
5 changed files with 289 additions and 149 deletions
+87 -146
View File
@@ -71,6 +71,12 @@ class lehrveranstaltung extends basis_db
public $stpllv_pflicht=true;
public $stpllv_koordinator;
public $stpllv_semester;
public $sws;
public $lvs;
public $alvs;
public $lvps;
public $las;
/**
* Konstruktor
@@ -142,6 +148,12 @@ class lehrveranstaltung extends basis_db
$this->semester_alternativ = $row->semester_alternativ;
$this->farbe = $row->farbe;
$this->sws = $row->sws;
$this->lvs = $row->lvs;
$this->alvs = $row->alvs;
$this->lvps = $row->lvps;
$this->las = $row->las;
$this->bezeichnung_arr['German'] = $this->bezeichnung;
$this->bezeichnung_arr['English'] = $this->bezeichnung_english;
if ($this->bezeichnung_arr['English'] == '')
@@ -695,7 +707,8 @@ class lehrveranstaltung extends basis_db
$qry = 'BEGIN; INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz,
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, 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) VALUES (' .
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) VALUES (' .
$this->db_add_param($this->studiengang_kz) . ', ' .
$this->db_add_param($this->bezeichnung) . ', ' .
$this->db_add_param($this->kurzbz) . ', ' .
@@ -731,7 +744,12 @@ class lehrveranstaltung extends basis_db
$this->db_add_param($this->semesterwochen) . ',' .
$this->db_add_param($this->lvnr) .','.
$this->db_add_param($this->semester_alternativ).','.
$this->db_add_param($this->farbe).');';
$this->db_add_param($this->farbe).','.
$this->db_add_param($this->sws).','.
$this->db_add_param($this->lvs).','.
$this->db_add_param($this->alvs).','.
$this->db_add_param($this->lvps).','.
$this->db_add_param($this->las).');';
}
else
{
@@ -777,7 +795,12 @@ class lehrveranstaltung extends basis_db
'semesterwochen=' . $this->db_add_param($this->semesterwochen, FHC_INTEGER) . ',' .
'lvnr = ' . $this->db_add_param($this->lvnr) . ', ' .
'semester_alternativ = '.$this->db_add_param($this->semester_alternativ).', '.
'farbe = '.$this->db_add_param($this->farbe).' '.
'farbe = '.$this->db_add_param($this->farbe).', '.
'sws = '.$this->db_add_param($this->sws).', '.
'lvs = '.$this->db_add_param($this->lvs).', '.
'alvs = '.$this->db_add_param($this->alvs).', '.
'lvps = '.$this->db_add_param($this->lvps).', '.
'las = '.$this->db_add_param($this->las).' '.
'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';';
}
@@ -1609,100 +1632,6 @@ class lehrveranstaltung extends basis_db
return true;
}
/**
* Loescht eine Lehrveranstaltung
* @param $lvid
* @return true wenn ok, false wenn Fehler
*/
/* public function delete_lva($lvid)
{
if(!is_numeric($lvid))
{
$this->errormsg = 'lvid ist ungueltig';
return false;
}
$qry = "DELETE FROM public.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER);
if($this->load($lvid))
{
$this->db_query('BEGIN;');
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->beschreibung = 'Loeschen der Lehrveranstaltung '.$lvid;
$log->mitarbeiter_uid = get_uid();
$log->sql = $qry;
$log->sqlundo = 'INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz,
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, 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) VALUES (' .
$this->db_add_param($this->studiengang_kz) . ', ' .
$this->db_add_param($this->bezeichnung) . ', ' .
$this->db_add_param($this->kurzbz) . ', ' .
$this->db_add_param($this->lehrform_kurzbz) . ', ' .
$this->db_add_param($this->semester) . ', ' .
$this->db_add_param($this->ects) . ', ' .
$this->db_add_param($this->semesterstunden) . ', ' .
$this->db_add_param($this->anmerkung) . ', ' .
$this->db_add_param($this->lehre, FHC_BOOLEAN) . ',' .
$this->db_add_param($this->lehreverzeichnis) . ', ' .
$this->db_add_param($this->aktiv, FHC_BOOLEAN) . ', ' .
$this->db_add_param($this->ext_id) . ', ' .
$this->db_add_param($this->insertamum) . ', ' .
$this->db_add_param($this->insertvon) . ', ' .
$this->db_add_param($this->planfaktor) . ', ' .
$this->db_add_param($this->planlektoren) . ', ' .
$this->db_add_param($this->planpersonalkosten) . ', ' .
$this->db_add_param($this->plankostenprolektor) . ', ' .
$this->db_add_param($this->updateamum) . ', ' .
$this->db_add_param($this->updatevon) . ',' .
$this->db_add_param($this->sort) . ',' .
$this->db_add_param($this->zeugnis, FHC_BOOLEAN) . ',' .
$this->db_add_param($this->projektarbeit, FHC_BOOLEAN) . ',' .
$this->db_add_param($this->sprache) . ',' .
$this->db_add_param($this->koordinator) . ',' .
$this->db_add_param($this->bezeichnung_english) . ',' .
$this->db_add_param($this->orgform_kurzbz) . ',' .
$this->db_add_param($this->incoming) . ',' .
$this->db_add_param($this->lehrtyp_kurzbz) . ',' .
$this->db_add_param($this->oe_kurzbz) . ',' .
$this->db_add_param($this->raumtyp_kurzbz) . ',' .
$this->db_add_param($this->anzahlsemester) . ',' .
$this->db_add_param($this->semesterwochen) . ',' .
$this->db_add_param($this->lvnr) .','.
$this->db_add_param($this->semester_alternativ).','.
$this->db_add_param($this->farbe).');';
if($log->save(true))
{
if($this->db_query($qry))
{
$this->db_query('COMMIT');
return true;
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Loeschen der Daten';
return false;
}
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
return false;
}
} */
/**
* Loescht den Datenensatz mit der ID die uebergeben wird
@@ -2052,61 +1981,73 @@ class lehrveranstaltung extends basis_db
}
/**
* Lädt alle Lehreinheit_IDs eine Lehrveranstaltung (optional mit Studiensemester)
* @param integer $lehrveranstaltung_id ID der Lehrveranstaltung
* Lädt alle Lehreinheit_IDs eine Lehrveranstaltung (optional mit Studiensemester)
* @param integer $lehrveranstaltung_id ID der Lehrveranstaltung
* @param string $uid UID eines Studenten
* @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters
* @return boolean|array false, wenn eine Fehler auftritt; Array mit UIDs wenn erfolgreich
*/
public function getLehreinheitenOfLv($lehrveranstaltung_id, $uid, $studiensemester_kurzbz=null)
{
if(!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein.";
return false;
}
$qry = 'SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung WHERE '
. 'lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id)
. ' AND uid='.$this->db_add_param($uid);
if(!is_null($studiensemester_kurzbz))
{
$qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz);
}
$qry .= ' ORDER BY lehreinheit_id;';
if($this->db_query($qry))
{
$result = array();
while($row = $this->db_fetch_object())
{
array_push($result, $row->lehreinheit_id);
}
return $result;
}
return false;
}
public function lehreverzeichnisExists($lehreverzeichnis)
* @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters
* @return boolean|array false, wenn eine Fehler auftritt; Array mit UIDs wenn erfolgreich
*/
public function getLehreinheitenOfLv($lehrveranstaltung_id, $uid, $studiensemester_kurzbz=null)
{
$qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehreverzeichnis='.$this->db_add_param($lehreverzeichnis);
$qry .= ';';
if($this->db_query($qry))
{
if($this->db_num_rows() > 0)
if(!is_numeric($lehrveranstaltung_id))
{
return true;
$this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein.";
return false;
}
$qry = 'SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung WHERE '
. 'lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id)
. ' AND uid='.$this->db_add_param($uid);
if(!is_null($studiensemester_kurzbz))
{
$qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz);
}
$qry .= ' ORDER BY lehreinheit_id;';
if($this->db_query($qry))
{
$result = array();
while($row = $this->db_fetch_object())
{
array_push($result, $row->lehreinheit_id);
}
return $result;
}
return false;
}
else
{
$this->errormsg = "Fehler beim Laden der Daten";
return false;
}
}
/**
* Prueft ob das Lehrverzeichnis bereits anderwertig verwendet wird
* @param $lehreverzeichnis
* @param $studiengang_kz
* @param $semester
*/
public function lehreverzeichnisExists($lehreverzeichnis, $studiengang_kz, $semester)
{
$qry = 'SELECT
1
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehreverzeichnis='.$this->db_add_param($lehreverzeichnis).'
AND studiengang_kz='.$this->db_add_param($studiengang_kz).'
AND semester='.$this->db_add_param($semester).';';
if($this->db_query($qry))
{
if($this->db_num_rows() > 0)
{
return true;
}
return false;
}
else
{
$this->errormsg = "Fehler beim Laden der Daten";
return false;
}
}
}
?>
+1 -1
View File
@@ -29,7 +29,7 @@ require_once 'studiensemester.class.php';
class studienordnung extends basis_db
{
private $new = true; // boolean
public $new = true; // boolean
public $result = array(); // Objekte
//Tabellenspalten
+40 -1
View File
@@ -28,7 +28,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
class studienplan extends basis_db
{
private $new = true; // boolean
public $new = true; // boolean
public $result = array(); // Objekte
//Tabellenspalten
@@ -596,6 +596,45 @@ class studienplan extends basis_db
}
}
/**
* Laedt die Lehrveranstaltungszuordnungen zu einem Studienplan
*
* @param $studienplan_id ID des Studienplanes
*/
public function loadStudienplanLV($studienplan_id)
{
$qry = "SELECT * FROM lehre.tbl_studienplan_lehrveranstaltung WHERE studienplan_id=".$this->db_add_param($studienplan_id);
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new studienplan();
$obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id;
$obj->semester = $row->semester;
$obj->pflicht = $this->db_parse_bool($row->pflicht);
$obj->studienplan_id = $row->studienplan_id;
$obj->koordinator = $row->koordinator;
$obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->new=false;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Löscht eine Lehrveranstaltung aus dem Studienplan
* @param $studienplan_lehrveranstaltung_id ID der LV in der Zwischentabelle
+131
View File
@@ -9,6 +9,8 @@ require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/studienordnung.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/studienplan.class.php');
require_once('../include/lvregel.class.php');
$uid = get_uid();
@@ -55,6 +57,135 @@ switch($method)
$data['errormsg']=$studienordnung->errormsg;
}
break;
case 'copyStudienordnung':
$studienordnung_id=$_REQUEST['studienordnung_id'];
$studienordnung = new studienordnung();
if($studienordnung->loadStudienordnung($studienordnung_id))
{
// Studienordnung anlegen
$studienordnung->new=true;
$studienordnung->bezeichnung .= ' Kopie 1';
$studienordnung->insertamum=date('Y-m-d H:i:s');
$studienordnung->insertvon=$uid;
if($studienordnung->save())
{
$studienordnung_id_neu = $studienordnung->studienordnung_id;
// Studienplaene kopieren
$studienplan = new studienplan();
if($studienplan->loadStudienplanSTO($studienordnung_id))
{
foreach($studienplan->result as $studienplan_obj)
{
$stpllv_ID_Array=array();
$lvregel_ID_Array=array();
$studienplan_obj->studienordnung_id = $studienordnung_id_neu;
$studienplan_obj->new=true;
$studienplan_obj->insertamum=date('Y-m-d H:i:s');
$studienplan_obj->insertvon=$uid;
$studienplan_id_alt = $studienplan_obj->studienplan_id;
if($studienplan_obj->save())
{
// Lehrveranstaltungszuordnungen kopieren
$stpllv = new studienplan();
$stpllv->loadStudienplanLV($studienplan_id_alt);
foreach($stpllv->result as $stpllv_obj)
{
$stpllv_obj->new=true;
$stpllv_obj->studienplan_id=$studienplan_obj->studienplan_id;
$stpllv_obj->insertamum = date('Y-m-d H:i:s');
$stpllv_obj->insertvon = $uid;
$studienplan_lehrveranstaltung_id_alt = $stpllv_obj->studienplan_lehrveranstaltung_id;
if($stpllv_obj->saveStudienplanLehrveranstaltung())
{
// Alte und neue ID Speichern damit danach die Parents gesetzt werden koennen
$stpllv_ID_Array[$studienplan_lehrveranstaltung_id_alt]=$stpllv_obj->studienplan_lehrveranstaltung_id;
// LVRegeln kopieren
$lvregel = new lvregel();
$lvregel->loadLVRegeln($studienplan_lehrveranstaltung_id_alt);
foreach($lvregel->result as $regel_obj)
{
$regel_obj->new=false;
$regel_obj->studienplan_lehrveranstaltung_id=$stpllv_obj->studienplan_lehrveranstaltung_id;
$regel_obj->insertamum = date('Y-m-d H:i:s');
$regel_obj->insertvon = $uid;
$lvregel_id_alt = $regel_obj->lvregel_id;
if($regel_obj->save())
{
// Alte und neue ID Speichern damit danach die Parents gesetzt werden koennen
$lvregel_ID_Array[$lvregel_id_alt]=$regel_obj->lvregel_id;
}
}
}
}
}
// Damit die Parent Eintraege korrekt gesetzt werden koennen, muessen zuerst die uebergeordneten
// Eintraege in der Datenbank vorhanden sein. Deshalb werden zuerst alle Eintraege angelegt
// und danach die Parent Keys korrekt gesetzt.
// Alle neuen LVZuordnungen nochmals durchlaufen und die parents korrekt setzen
foreach($stpllv_ID_Array as $studienplan_lehrveranstaltung_id)
{
$stpllv_obj = new studienplan();
if($stpllv_obj->loadStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id))
{
if($stpllv_obj->studienplan_lehrveranstaltung_id_parent!='')
{
$stpllv_obj->studienplan_lehrveranstaltung_id_parent = $stpllv_ID_Array[$stpllv_obj->studienplan_lehrveranstaltung_id_parent];
$stpllv_obj->saveStudienplanLehrveranstaltung();
}
}
}
// Alle neuen LVRegeln nochmals durchlaufen und die parents korrekt setzen
foreach($lvregel_ID_Array as $lvregel_id)
{
$lvregel_obj = new lvregel();
if($lvregel_obj->load($lvregel_id))
{
if($lvregel_obj->lvregel_id_parent!='')
{
$lvregel_obj->lvregel_id_parent = $lvregel_ID_Array[$lvregel_obj->lvregel_id_parent];
$lvregel_obj->save();
}
}
}
}
// tbl_studienordnung_semester: wird nicht kopiert da es sonst dazu kommen kann, dass mehrere aktive Studienordnungen vorhanden sind
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$studienplan->errormsg;
}
}
else
{
$data['error']='true';
$data['errormsg']=$studienordnung->errormsg;
}
}
else
{
$data['error']='true';
$data['errormsg']=$studienordnung->errormsg;
}
break;
default:
break;
}
+30 -1
View File
@@ -134,7 +134,8 @@ function drawStudienordnungen(data)
if(data[i].studienordnung_id !== null)
{
obj=obj+'<li><a href="#Load'+data[i].studienordnung_id+'" onclick="loadStudienplanSTO('+data[i].studienordnung_id+',\''+data[i].bezeichnung+'\');return false;">'+data[i].bezeichnung+'</a>'
+' <a href="#Edit'+data[i].studienordnung_id+'" onclick="editStudienordnung('+data[i].studienordnung_id+');return false;"><img title="edit" src="../../skin/images/edit.png"></a></li>';
+' <a href="#Edit'+data[i].studienordnung_id+'" onclick="editStudienordnung('+data[i].studienordnung_id+');return false;"><img title="Bearbeiten" src="../../skin/images/edit.png"></a>'
+' <a href="#Copy'+data[i].studienordnung_id+'" onclick="copyStudienordnung('+data[i].studienordnung_id+');return false;"><img title="Studienordnung kopieren" src="../../skin/images/copy.png"></a></li>';
}
}
obj=obj+'</ul>';
@@ -1395,3 +1396,31 @@ function deleteSemesterZuordnung(ausbildungssemester_kurzbz, studiensemester)
}
}
/**
* Kopiert eine Studienordnung
* @param studienordnung_id
*/
function copyStudienordnung(studienordnung_id)
{
if(confirm("Wollen Sie diese Studienordnung wirklich kopieren?"))
{
$.ajax({
dataType: "json",
url: "../../soap/studienordnung.json.php",
type: "POST",
data: {
"method": "copyStudienordnung",
"studienordnung_id": studienordnung_id
},
error: loadError
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
loadStudienordnung();
});
}
}