mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-22 17:32:18 +00:00
Studienplatzverwaltung benutzt nun Datenbank anstatt Testdaten.
This commit is contained in:
@@ -96,6 +96,44 @@ class appdaten extends basis_db
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Appdaten nach bezeichnung und version laden
|
||||
* @param type $app
|
||||
* @param type $bezeichnung
|
||||
* @param type $version
|
||||
* @return boolean true wenn keine Fehler, sonst false
|
||||
*/
|
||||
public function getByBezeichnungVersion($app, $bezeichnung, $version)
|
||||
{
|
||||
$this->new = false;
|
||||
if(!is_numeric($version))
|
||||
{
|
||||
$this->errormsg = 'version muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT * FROM system.tbl_appdaten "
|
||||
. "WHERE "
|
||||
. "app=".$this->db_add_param($app, FHC_STRING, false).' '
|
||||
. "AND bezeichnung=".$this->db_add_param($bezeichnung, FHC_STRING, false).' '
|
||||
. "AND version=".$this->db_add_param($version, FHC_INTEGER, false);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->mapRow($this, $row);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laden aller Appdaten sortiert nach Bezeichnung und version
|
||||
* @param string app name
|
||||
@@ -143,7 +181,7 @@ class appdaten extends basis_db
|
||||
$target->freigabe=$this->db_parse_bool($row->freigabe);
|
||||
$target->insertamum=$row->insertamum;
|
||||
$target->insertvon=$row->insertvon;
|
||||
$target->updatenamum=$row->updateamum;
|
||||
$target->updateamum=$row->updateamum;
|
||||
$target->updatevon=$row->updatevon;
|
||||
}
|
||||
|
||||
@@ -339,6 +377,32 @@ class appdaten extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteByBezeichnungVersion($app, $bezeichnung, $version)
|
||||
{
|
||||
//Pruefen ob appdaten_id eine gueltige Zahl ist
|
||||
if(!is_numeric($version) || $version === '')
|
||||
{
|
||||
$this->errormsg = 'Version muss eine gültige Zahl sein'."\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
//loeschen des Datensatzes
|
||||
$qry="DELETE FROM system.tbl_appdaten "
|
||||
. "WHERE "
|
||||
. "app=".$this->db_add_param($app, FHC_STRING, false).' '
|
||||
. "AND bezeichnung=".$this->db_add_param($bezeichnung, FHC_STRING, false).' '
|
||||
. "AND version=".$this->db_add_param($version, FHC_INTEGER, false);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* public function cleanResult()
|
||||
{
|
||||
|
||||
@@ -904,4 +904,43 @@ function clearHtmlTags($text)
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* nächstes Semester erzeugen. Bsp incSemester('SS2014') liefert 'WS2014'
|
||||
* @param string $semester z.B. SS2014
|
||||
* @return string nächstes semester
|
||||
*/
|
||||
function incSemester($semester)
|
||||
{
|
||||
$result = null;
|
||||
$jahr = intval(substr($semester,2,4));
|
||||
if (substr($semester,0,2) === 'SS') {
|
||||
$result = 'WS';
|
||||
} else {
|
||||
$result = 'SS';
|
||||
$jahr++;
|
||||
}
|
||||
$result = $result.$jahr;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liste mit Semestern erzeugen
|
||||
* @param type $semester
|
||||
* @param type $anzahlFolgesemester
|
||||
* @return array Semesterliste
|
||||
*/
|
||||
function generateSemesterList($semester, $anzahlFolgesemester)
|
||||
{
|
||||
$result[] = $semester;
|
||||
$jahr = intval(substr($semester,2,4));
|
||||
$currentSemester = $semester;
|
||||
for ($index = 0; $index < $anzahlFolgesemester; $index++)
|
||||
{
|
||||
$currentSemester = incSemester($currentSemester);
|
||||
$result[] = $currentSemester;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -1332,5 +1332,103 @@ class prestudent extends person
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Anzahl der Abbrecher liefern.<br>
|
||||
* WM: Kopie von getBewerber() => @TODO: überprüfen!!!
|
||||
* @param type $studiensemester_kurzbz
|
||||
* @param type $studiengang_kz
|
||||
* @param type $orgform_kurzbz
|
||||
* @param type $ausbildungssemester
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAnzAbbrecher($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
count(*) as anzahl
|
||||
FROM
|
||||
public.tbl_prestudent
|
||||
JOIN public.tbl_prestudentstatus USING(prestudent_id)
|
||||
WHERE
|
||||
tbl_prestudentstatus.status_kurzbz='Abbrecher'
|
||||
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
|
||||
|
||||
if(!is_null($studiengang_kz))
|
||||
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
|
||||
if(!is_null($orgform_kurzbz))
|
||||
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
|
||||
|
||||
if(!is_null($ausbildungssemester))
|
||||
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
return $row->anzahl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Anzahl der Studierenden liefern.<br>
|
||||
* WM: Kopie von getBewerber() => @TODO: überprüfen!!!
|
||||
* @param type $studiensemester_kurzbz
|
||||
* @param type $studiengang_kz
|
||||
* @param type $orgform_kurzbz
|
||||
* @param type $ausbildungssemester
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAnzStudierende($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
count(*) as anzahl
|
||||
FROM
|
||||
public.tbl_prestudent
|
||||
JOIN public.tbl_prestudentstatus USING(prestudent_id)
|
||||
WHERE
|
||||
tbl_prestudentstatus.status_kurzbz='Student'
|
||||
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
|
||||
|
||||
if(!is_null($studiengang_kz))
|
||||
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
|
||||
if(!is_null($orgform_kurzbz))
|
||||
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
|
||||
|
||||
if(!is_null($ausbildungssemester))
|
||||
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
return $row->anzahl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* (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
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty oferr
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
@@ -44,7 +44,7 @@ class studienplatz extends basis_db
|
||||
/** @var string */
|
||||
private $studiensemester_kurzbz;
|
||||
/** @var integer */
|
||||
private $ausbildungssemester;
|
||||
private $ausbildungssemester;
|
||||
/** @var integer */
|
||||
private $gpz;
|
||||
/** @var integer */
|
||||
@@ -75,11 +75,11 @@ class studienplatz extends basis_db
|
||||
switch ($name)
|
||||
{
|
||||
case 'gpz':
|
||||
case 'npz':
|
||||
case 'ausbildungssemester':
|
||||
case 'npz':
|
||||
case 'ausbildungssemester':
|
||||
case 'studienplatz_id':
|
||||
if (!is_numeric($value))
|
||||
throw new Exception("Attribute $name must be numeric!");
|
||||
if ($value != null && !is_numeric($value))
|
||||
throw new Exception("Attribute $name must be numeric! ($value)");
|
||||
$this->$name=$value;
|
||||
break;
|
||||
default:
|
||||
@@ -146,15 +146,23 @@ class studienplatz extends basis_db
|
||||
$target->updatevon = $row->updatevon;
|
||||
$target->insertamum = $row->insertamum;
|
||||
$target->insertvon = $row->insertvon;
|
||||
$target->new = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle Studienplaetze zu einem Studiengang und Semester
|
||||
* Laedt alle Studienplaetze zu einem Studiengang und Semester. Ergebnis
|
||||
* steht in result, wobei es nur einen Datensatz geben kann, wenn
|
||||
* keinAusbildungssemester = true ist.
|
||||
* @param integer $studiengang_kz
|
||||
* @param string$ studiensemester_kurzbz
|
||||
* @param string studiensemester_kurzbz
|
||||
* @param string orgform_kurzbz
|
||||
* @param boolean Ausbildungssemester ist optional. Wenn true werden
|
||||
* nur Datensätze geladen wo das Ausbildungssemester null ist. Wenn
|
||||
* false werden alle geladen wo ein Ausbildungssemester eingetragen
|
||||
* ist.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load_studiengang_studiensemester($studiengang_kz, $studiensemester_kurzbz)
|
||||
public function load_studiengang_studiensemester_orgform($studiengang_kz, $studiensemester_kurzbz, $orgform, $keinAusbildungssemester = true)
|
||||
{
|
||||
//Pruefen ob $studiengang_kz eine gueltige Zahl ist
|
||||
if(!is_numeric($studiengang_kz) || $studiengang_kz == '')
|
||||
@@ -164,19 +172,24 @@ class studienplatz extends basis_db
|
||||
}
|
||||
|
||||
//Lesen der Daten aus der Datenbank
|
||||
$qry = "SELECT * FROM lehre.tbl_studienplatz WHERE studienplatz_id=".
|
||||
$this->db_add_param($studienplatz_id, FHC_INTEGER, false).
|
||||
" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false);
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
$qry = "SELECT * FROM lehre.tbl_studienplatz WHERE studiengang_kz=".
|
||||
$this->db_add_param($studiengang_kz, FHC_INTEGER, false).
|
||||
" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false).
|
||||
//" AND art=".$this->db_add_param($art, FHC_STRING, false).
|
||||
" AND orgform_kurzbz=".$this->db_add_param($orgform, FHC_STRING, false).
|
||||
" AND ausbildungssemester ".($keinAusbildungssemester ? 'is null':'is not null');
|
||||
$this->result = array();
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->result[] = $this->mapRow(new studienplatz(), $row);
|
||||
}
|
||||
$rec = new studienplatz();
|
||||
$this->mapRow($rec, $row);
|
||||
$this->result[] = $rec;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -249,6 +262,7 @@ class studienplatz extends basis_db
|
||||
$this->db_add_param($this->orgform_kurzbz).', '.
|
||||
$this->db_add_param($this->studiensemester_kurzbz).', '.
|
||||
$this->db_add_param($this->ausbildungssemester, FHC_INTEGER).', '.
|
||||
//$this->db_add_param($this->art).', '.
|
||||
$this->db_add_param($this->gpz, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->npz, FHC_INTEGER).', '.
|
||||
'now(), '.
|
||||
@@ -269,11 +283,12 @@ class studienplatz extends basis_db
|
||||
' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).', '.
|
||||
' studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '.
|
||||
' ausbildungssemester='.$this->db_add_param($this->ausbildungssemester).', '.
|
||||
//' art='.$this->db_add_param($this->art).', '.
|
||||
' gpz='.$this->db_add_param($this->gpz).', '.
|
||||
' npz='.$this->db_add_param($this->npz).', '.
|
||||
' updateamum= now(), '.
|
||||
' updatevon='.$this->db_add_param($this->updatevon).', '.
|
||||
'WHERE studienplatz_id='.$this->db_add_param($this->studienplatz_id, FHC_INTEGER, false).';';
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
' WHERE studienplatz_id='.$this->db_add_param($this->studienplatz_id, FHC_INTEGER, false).';';
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
@@ -306,8 +321,7 @@ class studienplatz extends basis_db
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Studienplatz-Datensatzes';
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return $this->studienplatz_id;
|
||||
@@ -335,8 +349,7 @@ class studienplatz extends basis_db
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Löschen der Daten'."\n";
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* 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: Werner Masik <werner@gefi.at>,
|
||||
*/
|
||||
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
require_once('../../include/functions.inc.php');
|
||||
|
||||
class FunctionsTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
}
|
||||
|
||||
public function testIncSemester()
|
||||
{
|
||||
$this->assertEquals('WS2014',incSemester('SS2014'));
|
||||
$this->assertEquals('SS2015',incSemester('WS2014'));
|
||||
$this->assertEquals('WS2015',incSemester('SS2015'));
|
||||
$this->assertEquals('SS2016',incSemester('WS2015'));
|
||||
}
|
||||
|
||||
public function testGenerateSemesterList()
|
||||
{
|
||||
$liste = generateSemesterList('WS2013', 3);
|
||||
$this->assertEquals(4,count($liste));
|
||||
$this->assertEquals('WS2013',$liste[0]);
|
||||
$this->assertEquals('SS2014',$liste[1]);
|
||||
$this->assertEquals('WS2014',$liste[2]);
|
||||
$this->assertEquals('SS2015',$liste[3]);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
+21
@@ -61,6 +61,27 @@ class StudienplatzverwaltungAPITest extends PHPUnit_Framework_TestCase
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function testParseBasisDaten() {
|
||||
$api = StudienplatzverwaltungAPI::init();
|
||||
$result = $api->parseBasisdatenUV('testfile.xml');
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testStudiengangSPVGetAll()
|
||||
{
|
||||
$studiengangSPV = new studiengangSPV();
|
||||
$this->assertTrue($studiengangSPV->getAll('2013/14',2));
|
||||
}
|
||||
|
||||
public function testNewUV()
|
||||
{
|
||||
$api = StudienplatzverwaltungAPI::init();
|
||||
$appdaten = $api->newUV('2013/14',2, $this->uid);
|
||||
$this->assertNotNull($appdaten);
|
||||
}
|
||||
|
||||
|
||||
public function testGetMetadata() {
|
||||
$sj = '2013/14';
|
||||
$this->assertNotEquals($this->createAppdaten($sj, $this->createDaten($sj)), false);
|
||||
File diff suppressed because one or more lines are too long
@@ -433,7 +433,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_studienplatz LIMIT 1;"))
|
||||
orgform_kurzbz varchar(3),
|
||||
ausbildungssemester smallint,
|
||||
gpz integer,
|
||||
npz integer,
|
||||
npz integer,
|
||||
insertamum timestamp,
|
||||
insertvon varchar(32),
|
||||
updateamum timestamp,
|
||||
|
||||
Reference in New Issue
Block a user