Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2019-03-21 14:02:36 +01:00
10 changed files with 229 additions and 116 deletions
@@ -81,10 +81,15 @@ class Manager extends Auth_Controller
}
/**
*
* Installiert eine Extension.
* Es wird davon ausgegangen, dass die Extension ueber einen Fileupload hochgeladen wird.
* alternativ kann hier auch der Name und Filename uebergeben werden um die installation ueber
* die Commandline ohne Upload durchzufuehren.
* @param $extensioName string Name der Extension
* @param $filename Url Encoded Pfad zum tgz File der Extension
*/
public function uploadExtension()
public function uploadExtension($extensionName = null, $filename = null)
{
$this->extensionslib->installExtension();
$this->extensionslib->installExtension($extensionName, urldecode($filename));
}
}
+16 -4
View File
@@ -59,17 +59,29 @@ class ExtensionsLib
/**
* Main method to install an extension
* If no filename / Extensionname is provided the extension should be uploaded via webupload
*
* @param $extensionName string Name of Extension (optional)
* @param $filename Path to tgz Extension File (optional)
*/
public function installExtension()
public function installExtension($extensionName = null, $filename = null)
{
$extensionDB = null; // contains data from DB about an extension
$extensionJson = null; // contains the extension.json data
$this->_printInfo('WARNING!!! Please do not change page or stop this procedure before it is finished');
$this->_loadUploadLibrary(); // loads CI upload library
$uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it
if (!is_null($extensionName) && !is_null($filename))
{
$uploadData = new stdClass();
$uploadData->fullPath = $filename;
$uploadData->extensionName = $extensionName;
}
else
{
$this->_loadUploadLibrary(); // loads CI upload library
$uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it
}
if ($uploadData != null) // if no error occurred
{
+2 -1
View File
@@ -123,11 +123,12 @@ class PermissionLib
public function isEntitled($requiredPermissions, $calledMethod)
{
$checkPermissions = false;
$requestMethod = $_SERVER['REQUEST_METHOD'];
// If it's called from command line than it's trusted
if (is_cli()) return true;
$requestMethod = $_SERVER['REQUEST_METHOD'];
// Checks if the parameter $requiredPermissions is set, is an array and contains at least one element
if (isset($requiredPermissions) && !isEmptyArray($requiredPermissions))
{
+5 -3
View File
@@ -155,7 +155,7 @@ if (isset($_SESSION['pruefling_id']))
prestudent_id = ".$db->db_add_param($_SESSION['prestudent_id'])."
)
-- Filter only future studiensemester (incl. actual one)
/* Filter only future studiensemester (incl. actual one) */
AND
studiensemester_kurzbz IN (
SELECT
@@ -184,7 +184,7 @@ if (isset($_SESSION['pruefling_id']))
$qry .= "
-- Order to get last semester when using distinct on
/* Order to get last semester when using distinct on */
ORDER BY
prestudent_id,
datum DESC,
@@ -197,6 +197,7 @@ if (isset($_SESSION['pruefling_id']))
semester,
gebiet_id,
bezeichnung,
reihung,
". $bezeichnung_mehrsprachig_sel. "
FROM
(
@@ -250,7 +251,8 @@ if (isset($_SESSION['pruefling_id']))
) temp
ORDER BY
semester
semester,
reihung
";
$result = $db->db_query($qry);
+3
View File
@@ -174,6 +174,9 @@ define('VIEW_BEGIN', 'vw_');
//Legt fest ob die Personalnummer beim Anlegen NULL sein soll
define('FAS_PERSONALNUMMER_GENERATE_NULL', false);
// Legt fest ob Felder mit Reihgungstest-Basispunkten im Reiter Aufnahme-Termine angezeigt werden
define('FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN', false);
// API Informationen
define('FHC_REST_API_KEY', 'testapikey@fhcomplete.org');
define('FHC_REST_USER', 'username');
+19
View File
@@ -244,6 +244,7 @@ function AufnahmeTermineAuswahl()
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
var endpunkte_inkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_inkl_gebiete" ));
var endpunkte_exkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_exkl_gebiete" ));
var typ = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" ));
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=rt_person_id;
document.getElementById('aufnahmetermine-textbox-person_id').value=person_id;
@@ -259,6 +260,24 @@ function AufnahmeTermineAuswahl()
document.getElementById('aufnahmetermine-menulist-studienplan').value=studienplan_id;
document.getElementById('aufnahmetermine-textbox-endpunkte-inkl-gebiete').value = endpunkte_inkl_gebiete;
document.getElementById('aufnahmetermine-textbox-endpunkte-exkl-gebiete').value = endpunkte_exkl_gebiete;
// Sichtbarkeit der RT-Vergleichsergebnispunkte (ohne Quereinsteiger)
var basisgebiet_punkte_anzeigen = <?php echo FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN ? 'true' : 'false' ?>;
// * Generell Anzeige nur wenn über config-Datei gesetzt ist
if (basisgebiet_punkte_anzeigen)
{
// * für Bachelor-Studiengänge anzeigen
if (typ == 'b')
{
document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = false;
}
// * für Master-Studiengänge verstecken
else if (typ == 'm')
{
document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = true;
}
}
}
function AufnahmeTermineNeu()
+19 -12
View File
@@ -28,6 +28,7 @@ require_once('../../config/global.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/variable.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/studiengang.class.php');
$user=get_uid();
$variable = new variable();
@@ -294,18 +295,24 @@ echo ']>
<spacer flex="1" />
</hbox>
</row>
<row>
<label value="Punkte inkl. Physik" control="aufnahmetermine-textbox-endpunkte-inkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-inkl-gebiete" readonly="true" maxlength="8" size="6"/>
</hbox>
</row>
<row>
<label value="Punkte exkl. Physik" control="aufnahmetermine-textbox-endpunkte-exkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-exkl-gebiete" readonly="true" maxlength="8" size="6"/>
</hbox>
</row>
<groupbox id="aufnahmetermine-groupbox-vergleich-endpunkte" hidden="true">
<caption label="Vergleichswerte Reihungstestpunkte (Basisgebiete)"></caption>
<vbox style="padding: 10px;">
<spacer resize='none' height='10' flex="1"/>
<row>
<label value="Reihungstestpunkte (inkl. Physik)" control="aufnahmetermine-textbox-endpunkte-inkl-gebiete" style="margin-right: 7px;"/>
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-inkl-gebiete" readonly="true" maxlength="8" size="6" flex="1"/>
</hbox>
</row>
<row>
<label value="Reihungstestpunkte (exkl. Physik)" control="aufnahmetermine-textbox-endpunkte-exkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-exkl-gebiete" readonly="true" maxlength="8" size="6" flex="1"/>
</hbox>
</row>
</vbox>
</groupbox>
</rows>
</grid>
<hbox>
@@ -995,9 +995,9 @@ function StudentAbschlusspruefungPrintUrkundeMultiple(event, sprache)
return false;
}
if(pruefungstyp_kurzbz=='Bachelor' && sprache=='deutsch')
if((pruefungstyp_kurzbz=='Bachelor' || pruefungstyp_kurzbz=='lgabschluss') && sprache=='deutsch')
xsl='Bakkurkunde';
else if(pruefungstyp_kurzbz=='Bachelor' && sprache=='englisch')
else if((pruefungstyp_kurzbz=='Bachelor' || pruefungstyp_kurzbz=='lgabschluss') && sprache=='englisch')
xsl='BakkurkundeEng';
else if(pruefungstyp_kurzbz=='Diplom' && sprache=='deutsch')
xsl='Diplomurkunde';
+115 -74
View File
@@ -20,6 +20,7 @@
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/ablauf.class.php');
class pruefling extends basis_db
{
@@ -308,100 +309,140 @@ class pruefling extends basis_db
/**
* Berechnet das Reihungstestergebnis fuer eine Person und ggf Reihungstest
* ACHTUNG - Diese Funktion liefert keine zuverlaessigen Ergebnisse wenn keine ReihungstestID uebergeben wird
* und die Person mehrere Reihungstests absolviert hat!
* @param $person_id ID der Person.
* @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme.
* @param $reihungstest_id ID des Reihungstests.
* @param $has_excluded_gebiete Wenn true werden die Punkte der Fragengebiete, die im config-array
* definiert sind, bei der Berechnung der Endpunkte nicht berücksichtigt.
* @param $studiengang_kz Wenn eine Studiengangskennzahl übergeben wird, dann werden nur die Punkte der
* Basis-Fragengebiete (ohne Quereinsteiger) bei der Berechnung der Endpunkte berücksichtigt.
* @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden
*/
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id=null, $has_excluded_gebiete = false)
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id, $has_excluded_gebiete = false, $studiengang_kz = null)
{
$qry = "SELECT * FROM testtool.vw_auswertung
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
if ($has_excluded_gebiete)
if(is_numeric($reihungstest_id))
{
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
$ergebnis=0;
$qry = "
SELECT DISTINCT ON (vw_auswertung_ablauf.gebiet_id) gebiet_id,
vw_auswertung_ablauf.*,
tbl_studiengang.typ
FROM
testtool.vw_auswertung_ablauf
JOIN
public.tbl_studiengang ON vw_auswertung_ablauf.stg_kurzbz = tbl_studiengang.kurzbzlang
WHERE
reihungstest_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER);
// Ggf. die Basis-Fragengebiete ermitteln (ohne Quereinsteigergebiete)
if (is_numeric($studiengang_kz))
{
$exclude_gebiet_id_arr = FAS_REIHUNGSTEST_EXCLUDE_GEBIETE;
$exclude_gebiet_id_toString = implode(', ', $exclude_gebiet_id_arr);
$qry .= " AND gebiet_id NOT IN (". $exclude_gebiet_id_toString. ")";
$ablauf = new Ablauf();
$ablauf->getAblaufGebiete($studiengang_kz, NULL, 1);
$basis_gebiet_id_arr = array();
$basis_gebiet_id_toString = '';
foreach ($ablauf->result as $obj)
{
$basis_gebiet_id_arr []= $obj->gebiet_id;
}
$basis_gebiet_id_toString = implode(', ', $basis_gebiet_id_arr);
if (!empty($basis_gebiet_id_toString))
{
$qry .= "
AND
gebiet_id IN (". $basis_gebiet_id_toString. ")
";
}
}
}
$ergebnis=0;
if(!is_null($reihungstest_id))
{
$qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER);
// Quercheck der PrestudentID ueber den Status damit bei Personen
// die den Reihungstest oefter im selben Studiengang gemacht haben nicht das
// Ergebniss der beiden Tests summiert bekommen
// Im Zweifelsfall wird der neuere Reihungstest genommen
$qry.= "
AND
prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
AND
tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz
)
WHERE
tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
// Ggf. Fragengebiete exkludieren
if ($has_excluded_gebiete)
{
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
$exclude_gebiet_id_arr = FAS_REIHUNGSTEST_EXCLUDE_GEBIETE;
$exclude_gebiet_id_toString = implode(', ', $exclude_gebiet_id_arr);
$qry .= "
AND
tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
gebiet_id NOT IN (". $exclude_gebiet_id_toString. ")
AND
tbl_prestudentstatus.status_kurzbz='Interessent'
AND
(tbl_reihungstest.stufe = 1 OR tbl_reihungstest.stufe IS NULL)
ORDER BY
tbl_reihungstest.datum desc LIMIT 1
)";
}
typ = 'b'
";
}
}
if($result = $this->db_query($qry))
{
// Wenn keine Eintraege vorhanden dann false
if($this->db_num_rows($result)==0)
/**
* Quercheck der PrestudentID ueber den Status damit bei Personen
* die den Reihungstest oefter im selben Studiengang gemacht haben nicht das
* Ergebniss der beiden Tests summiert bekommen
* Im Zweifelsfall wird der neuere Reihungstest genommen */
$qry .= "
AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id, studienplan_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
)
WHERE
tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND
tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
AND
tbl_prestudentstatus.status_kurzbz='Interessent'
AND
(tbl_reihungstest.stufe = 1 OR tbl_reihungstest.stufe IS NULL)
ORDER BY
tbl_reihungstest.datum desc LIMIT 1
)
";
if($result = $this->db_query($qry))
{
// Wenn keine Eintraege vorhanden dann false
if($this->db_num_rows($result)==0)
return false;
while($row = $this->db_fetch_object($result))
{
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
{
$prozent=100;
$row->punkte = $row->maxpunkte;
}
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
if($punkte)
{
$ergebnis +=$row->punkte;
}
else
$ergebnis+=$prozent*$row->gewicht;
}
return $ergebnis;
}
else
{
$this->errormsg = 'Fehler bei einer Abfrage';
return false;
while($row = $this->db_fetch_object($result))
{
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
{
$prozent=100;
$row->punkte = $row->maxpunkte;
}
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
if($punkte)
{
$ergebnis +=$row->punkte;
}
else
$ergebnis+=$prozent*$row->gewicht;
}
return $ergebnis;
}
else
{
$this->errormsg = 'Fehler bei einer Abfrage';
$this->errormsg = 'reihungstest_id muss numerisch sein';
return false;
}
}
+40 -17
View File
@@ -95,35 +95,47 @@ if($prestudent_id!='')
$stsem_arr[] = $reihungstest_obj_arr[$row->reihungstest_id]->studiensemester_kurzbz;
}
// Reale (nicht von Assistenz überarbeitete) Gesamtpunkte des RT laden; ggf. ohne bestimmte Fragengebiete
$pruefling = new Pruefling();
// Studiengangstyp ermitteln
$stpl = new Studienplan();
$stpl->loadStudienplan($row->studienplan_id); // Studienplan von RT-Person
$rtp_sto_id = $stpl->studienordnung_id; // Studienordnung-ID von RT-Person
$sto = new Studienordnung();
$sto->loadStudienordnung($rtp_sto_id);
$studiengang_kz = $sto->studiengang_kz; // Studiengang-KZ von RT-Person
$stg = new Studiengang($studiengang_kz);
$typ = $stg->typ; // Studiengangstyp von RT-Person
// * Gesamtpunkte inklusive alle Fragengebiete
// Reihungstestpunkte der Basisgebiete ermitteln (ohne Quereinsteiger)
$pruefling = new Pruefling();
$endpunkte_inkl_gebiete = 0;
$endpunkte_exkl_gebiete = 0;
// * Endpunkte über alle Basisgebiete
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, false, $row->studiengang_kz);
}
else
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, false, $row->studiengang_kz);
}
// * ggf. Gesamtpunkte exklusive bestimmte Fragengebiete
// * ggf. Endpunkte exklusive bestimmter Gebiete, die in der config-Datei gesetzt sind
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true, $row->studiengang_kz);
}
else
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true, $row->studiengang_kz);
}
}
$row->endpunkte_inkl_gebiete = round($endpunkte_inkl_gebiete, 2);
$row->endpunkte_exkl_gebiete = round($endpunkte_exkl_gebiete, 2);
$row->typ = $typ;
}
if(count($stsem_arr) > 0)
{
@@ -144,36 +156,46 @@ elseif($rt_person_id!='')
$reihungstest_obj_arr[$reihungstest->reihungstest_id] = new reihungstest();
$reihungstest_obj_arr[$reihungstest->reihungstest_id]->load($reihungstest->reihungstest_id);
// Reale (nicht von Assistenz überarbeitete) Gesamtpunkte des RT laden; ggf. ohne bestimmte Fragengebiete
$pruefling = new Pruefling();
// Studiengangstyp ermitteln
$stpl = new Studienplan();
$stpl->loadStudienplan($reihungstest->studienplan_id); // Studienplan von RT-Person
$rtp_sto_id = $stpl->studienordnung_id; // Studienordnung-ID von RT-Person
$sto = new Studienordnung();
$sto->loadStudienordnung($rtp_sto_id);
$studiengang_kz = $sto->studiengang_kz; // Studiengang-KZ von RT-Person
$stg = new Studiengang($studiengang_kz);
$typ = $stg->typ; // Studiengangstyp von RT-Person
// * Gesamtpunkte inklusive alle Fragengebiete
// Reihungstestpunkte der Basisgebiete ermitteln (ohne Quereinsteiger)
$pruefling = new Pruefling();
$endpunkte_inkl_gebiete = 0;
$endpunkte_exkl_gebiete = 0;
// * Endpunkte über alle Basisgebiete
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, false, $studiengang_kz);
}
else
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id);
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, false, $studiengang_kz);
}
// * ggf. Gesamtpunkte exklusive bestimmte Fragengebiete
// * ggf. Endpunkte exklusive bestimmter Gebiete, die in der config-Datei gesetzt sind
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true, $studiengang_kz);
}
else
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true);
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true, $studiengang_kz);
}
}
$reihungstest->endpunkte_inkl_gebiete = round($endpunkte_inkl_gebiete, 2);
$reihungstest->endpunkte_exkl_gebiete = round($endpunkte_exkl_gebiete, 2);
$reihungstest->typ = $typ;
drawrow($reihungstest);
}
@@ -228,6 +250,7 @@ function drawrow($row)
$oRdf->obj[$i]->setAttribut('datum_iso',$reihungstest_obj->datum,true);
$oRdf->obj[$i]->setAttribut('endpunkte_inkl_gebiete', $row->endpunkte_inkl_gebiete, true);
$oRdf->obj[$i]->setAttribut('endpunkte_exkl_gebiete', $row->endpunkte_exkl_gebiete, true);
$oRdf->obj[$i]->setAttribut('typ', $row->typ, true);
// Es wird der neueste Reihungstest im Studiengang des Prestudenten markiert damit im FAS erkennbar ist welches
// Eintraege zur Punkteberechnung verwendet werden