diff --git a/application/controllers/components/SearchBar.php b/application/controllers/components/SearchBar.php
index 09a49e163..dd3c22690 100644
--- a/application/controllers/components/SearchBar.php
+++ b/application/controllers/components/SearchBar.php
@@ -17,6 +17,9 @@ class SearchBar extends FHC_Controller
{
parent::__construct();
+ // Loads the AuthLib and starts the authentication
+ $this->load->library('AuthLib');
+
// Load the library SearchBarLib
$this->load->library('SearchBarLib');
}
diff --git a/application/controllers/jobs/AnrechnungJob.php b/application/controllers/jobs/AnrechnungJob.php
index 7aae80d54..5784830b6 100644
--- a/application/controllers/jobs/AnrechnungJob.php
+++ b/application/controllers/jobs/AnrechnungJob.php
@@ -37,6 +37,9 @@ class AnrechnungJob extends JOB_Controller
$this->load->helper('hlp_sancho_helper');
$this->load->library('AnrechnungLib');
+
+ // Load configs
+ $this->load->config('anrechnung');
}
/**
@@ -213,7 +216,7 @@ class AnrechnungJob extends JOB_Controller
'datentabelle' => $anrechnungen_table,
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
);
-
+
// Send mail
sendSanchoMail(
'AnrechnungAntragStellen',
@@ -227,6 +230,82 @@ class AnrechnungJob extends JOB_Controller
$this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.');
}
+ // Send Sancho mail to LV-Leitung (fallback Lectors) that were requested for recommendation yesterday.
+ public function sendMailRecommendationRequests(){
+
+ $this->logInfo('Start AnrechnungJob sendMailRecommendationRequests to inform lecturers about yesterdays requests for recommendation.');
+
+ // Get Anrechnungen, für die gestern eine Empfehlung angefragt worden ist
+ $this->AnrechnungModel->addSelect('astat.anrechnung_id, astat.datum, astat.insertamum');
+ $this->AnrechnungModel->addDistinct('astat.anrechnung_id');
+ $this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus astat', 'anrechnung_id');
+
+ $result = $this->AnrechnungModel->loadWhere('
+ studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende)
+ AND genehmigt_von IS NULL
+ AND empfehlung_anrechnung IS NULL
+ AND status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR) .' -- in Bearbeitung durch Lektor
+ AND NOW()::date = (astat.datum + interval \'1 day\') -- nur gestrige Empfehlungsanfrage
+ ORDER BY astat.anrechnung_id, astat.datum DESC, astat.insertamum DESC -- nur letzten status dabei prüfen
+ ');
+
+ // Exit, wenn es gestern keine Empfehlungsanfragen gab
+ if (!hasData($result))
+ {
+ $this->logInfo('End AnrechnungJob sendMailRecommendationRequests, because no recommendations were requested yesterday.');
+ exit;
+ }
+
+ $anrechnung_id_arr = array_column(getData($result), 'anrechnung_id');
+
+ $arr_lvLector_arr = array();
+ foreach ($anrechnung_id_arr as $anrechnung_id)
+ {
+ // Get full name of Fachbereichsleitung or LV Leitung.
+ if($this->config->item('fbl') === TRUE)
+ {
+ $arr_lvLector_arr[] = $this->anrechnunglib->getLeitungOfLvOe($anrechnung_id);
+ }
+ else
+ {
+ $arr_lvLector_arr[] = $this->anrechnunglib->getLectors($anrechnung_id); // Returns LV Leitung. If not present, then all lectors of LV.
+ }
+ }
+
+ // Unique lector array to send only one mail per lector
+ $arr_lvLector_arr = array_unique($arr_lvLector_arr, SORT_REGULAR);
+
+ // Link to 'Anrechnungen prüfen' dashboard
+ $url =
+ CIS_ROOT. 'cis/index.php?menu='.
+ CIS_ROOT. 'cis/menu.php?content_id=&content='.
+ CIS_ROOT. index_page(). self::REVIEW_ANRECHNUNG_URI;
+
+ foreach ($arr_lvLector_arr as $lvLector_arr)
+ {
+ foreach ($lvLector_arr as $lector)
+ {
+ // Prepare mail content
+ $fields = array(
+ 'vorname' => $lector->vorname,
+ 'stgl_name' => 'Die Studiengangsleitung',
+ 'link' => anchor($url, 'Anrechnungsanträge Übersicht')
+ );
+
+ // Send mail
+ sendSanchoMail(
+ 'AnrechnungEmpfehlungAnfordern',
+ $fields,
+ $lector->uid. '@'. DOMAIN,
+ 'Deine Empfehlung wird benötigt zur Anerkennung nachgewiesener Kenntnisse'
+ );
+ }
+ }
+
+ $this->logInfo('SUCCEDED AnrechnungJob sendMailRecommendationRequests');
+
+ }
+
/**
* Send Sancho mail to students, whose Anrechnungen were approved 24 hours ago.
*/
@@ -308,7 +387,7 @@ class AnrechnungJob extends JOB_Controller
$db = new DB_Model();
$result = $db->execReadOnlyQuery($qry);
-
+
// Exit if there are no rejected Anrechnungen
if (!hasData($result))
{
@@ -361,9 +440,9 @@ html;
$result = $this->AnrechnungModel->loadWhere('
studiensemester_kurzbz = (
- SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende)
+ SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende
)
- AND genehmigt_von IS NULL
+ AND genehmigt_von IS NULL
AND empfehlung_anrechnung IS NULL
AND status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR) .' -- in Bearbeitung durch Lektor
AND NOW()::date = (astat.datum + interval \'1 week\') -- eine Woche nach Empfehlungsanfrage
@@ -376,7 +455,7 @@ html;
$this->logInfo('End AnrechnungJob sendMailRemindRecommendation, because no recommendations to be done.');
exit;
}
-
+
$anrechnung_id_arr = array_column(getData($result), 'anrechnung_id');
$arr_lvLector_arr = array();
@@ -435,7 +514,7 @@ html;
'vorname' => $stgl->vorname
);
}
-
+
return $stglMailAdress_arr;
}
// If not available, get assistance mail address
diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php
index ab6c429a0..431ac5b04 100644
--- a/application/controllers/jobs/ReihungstestJob.php
+++ b/application/controllers/jobs/ReihungstestJob.php
@@ -3,6 +3,9 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
class ReihungstestJob extends JOB_Controller
{
+
+ const LAST_DAYS_PRESTUDENTSTATUS = 5;
+
/**
* Constructor
*/
@@ -826,7 +829,7 @@ class ReihungstestJob extends JOB_Controller
AND tbl_studiengang.typ IN ('b', 'm')
)
SELECT * FROM prst
- WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - 1)
+ WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - ". self::LAST_DAYS_PRESTUDENTSTATUS .")
AND (studiengang_typ = 'b' OR (studiengang_typ = 'm' AND EXISTS (SELECT 1 /* Master Studiengänge berücksichtigen wenn auch Bachelor im gleichen Semester */
FROM prst prstb
WHERE studiengang_typ = 'b'
@@ -868,7 +871,8 @@ class ReihungstestJob extends JOB_Controller
tbl_person.nachname,
tbl_person.vorname,
tbl_prestudent.*,
- tbl_studiengang.typ AS studiengang_typ
+ tbl_studiengang.typ AS studiengang_typ,
+ tbl_prestudentstatus.datum
FROM PUBLIC.tbl_person
JOIN PUBLIC.tbl_prestudent USING (person_id)
JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id)
@@ -901,7 +905,7 @@ class ReihungstestJob extends JOB_Controller
$mailArray[$rowNiedrPrios->studiengang_kz][$rowNiedrPrios->orgform_kurzbz]['AufnahmeHoeherePrio'][]
= $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
}
- elseif ($rowNiedrPrios->laststatus == 'Bewerber')
+ elseif ($rowNiedrPrios->laststatus == 'Bewerber' && $row_ps->prestudenstatus_datum > $rowNiedrPrios->datum)
{
// Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
$lastStatus = $this->PrestudentstatusModel->getLastStatus($rowNiedrPrios->prestudent_id);
@@ -927,7 +931,7 @@ class ReihungstestJob extends JOB_Controller
= $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
}
}
- elseif ($rowNiedrPrios->laststatus == 'Wartender')
+ elseif ($rowNiedrPrios->laststatus == 'Wartender' && $row_ps->prestudenstatus_datum > $rowNiedrPrios->datum)
{
// Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
// Mail zur Info an Assistenz schicken
diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php
index 8f71dc8d0..3a62ff7d9 100644
--- a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php
+++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php
@@ -242,7 +242,7 @@ class approveAnrechnungDetail extends Auth_Controller
$empfehlungsanfrage_an = !isEmptyArray($result) ? implode(', ', array_column($result, 'fullname')) : '';
// Request Recommendation
- if($this->anrechnunglib->requestRecommendation($anrechnung_id))
+ if ($this->anrechnunglib->requestRecommendation($anrechnung_id))
{
$retval[]= array(
'anrechnung_id' => $anrechnung_id,
@@ -254,31 +254,23 @@ class approveAnrechnungDetail extends Auth_Controller
);
}
- /**
- * Send mails to lectors
- * NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
- * even if they are required for more recommendations
- * */
- if (!isEmptyArray($retval))
- {
- if ($this->config->item('send_mail') === TRUE)
- {
- $this->_sendSanchoMailToLectors($anrechnung_id);
- }
-
- // Output json to ajax
- return $this->outputJsonSuccess($retval);
- }
-
// Output json to ajax
+ if ($empfehlungsanfrage_an == '')
+ {
+ $this->terminateWithJsonError(
+ "Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
+ );
+ }
+
if (isEmptyArray($retval))
{
- $this->terminateWithJsonError(
- "Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
- );
+ $this->terminateWithJsonError("Empfehlung wurde nicht angefordert");
}
-
- $this->terminateWithJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
+ else
+ {
+ // Output json to ajax
+ return $this->outputJsonSuccess($retval);
+ }
}
/**
diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php
index f13814e66..b5a44b8f6 100644
--- a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php
+++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php
@@ -249,19 +249,6 @@ class approveAnrechnungUebersicht extends Auth_Controller
}
}
- /**
- * Send mails
- * NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
- * even if they are required for more recommendations
- * */
- if (!isEmptyArray($retval))
- {
- if ($this->config->item('send_mail') === TRUE)
- {
- $this->_sendSanchoMail($retval);
- }
- }
-
// Output json to ajax
if (isEmptyArray($retval))
{
@@ -273,7 +260,7 @@ class approveAnrechnungUebersicht extends Auth_Controller
$this->terminateWithJsonError('Es wurden keine Empfehlungen angefordert');
}
- return $this->outputJsonSuccess($retval);
+ $this->outputJsonSuccess($retval);
}
/**
diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php
index e9059720b..1922bacda 100644
--- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php
+++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php
@@ -111,6 +111,8 @@ class requestAnrechnung extends Auth_Controller
$lehrveranstaltung_id = $this->input->post('lv_id');
$studiensemester_kurzbz = $this->input->post('studiensemester');
$bestaetigung = $this->input->post('bestaetigung');
+ $begruendung_ects = $this->input->post('begruendung_ects');
+ $begruendung_lvinhalt = $this->input->post('begruendung_lvinhalt');
// Validate data
if (empty($_FILES['uploadfile']['name']))
@@ -121,7 +123,9 @@ class requestAnrechnung extends Auth_Controller
if (isEmptyString($begruendung_id) ||
isEmptyString($anmerkung) ||
isEmptyString($lehrveranstaltung_id) ||
- isEmptyString($studiensemester_kurzbz))
+ isEmptyString($studiensemester_kurzbz) ||
+ isEmptyString($begruendung_ects) ||
+ isEmptyString($begruendung_lvinhalt))
{
return $this->outputJsonError($this->p->t('ui', 'errorFelderFehlen'));
}
@@ -172,7 +176,9 @@ class requestAnrechnung extends Auth_Controller
$lehrveranstaltung_id,
$begruendung_id,
$lastInsert_dms_id,
- $anmerkung
+ $anmerkung,
+ $begruendung_ects,
+ $begruendung_lvinhalt
);
if (isError($result))
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 548b071d3..cf0c6755a 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -21,6 +21,7 @@ class InfoCenter extends Auth_Controller
const FREIGEGEBEN_PAGE = 'freigegeben';
const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert';
const ABGEWIESEN_PAGE = 'abgewiesen';
+ const AUFGENOMMEN_PAGE = 'aufgenommen';
const SHOW_DETAILS_PAGE = 'showDetails';
const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails';
const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung';
@@ -115,6 +116,7 @@ class InfoCenter extends Auth_Controller
'index' => 'infocenter:r',
'freigegeben' => 'infocenter:r',
'abgewiesen' => 'infocenter:r',
+ 'aufgenommen' => 'infocenter:r',
'reihungstestAbsolviert' => 'infocenter:r',
'showDetails' => 'infocenter:r',
'showZGVDetails' => 'lehre/zgvpruefung:r',
@@ -228,6 +230,16 @@ class InfoCenter extends Auth_Controller
$this->load->view('system/infocenter/infocenterAbgewiesen.php');
}
+
+ /**
+ * Aufgenommene page of the InfoCenter tool
+ */
+ public function aufgenommen()
+ {
+ $this->_setNavigationMenu(self::AUFGENOMMEN_PAGE); // define the navigation menu for this page
+
+ $this->load->view('system/infocenter/infocenterAufgenommen.php');
+ }
/**
*
@@ -314,7 +326,7 @@ class InfoCenter extends Auth_Controller
show_error('Person does not exist!');
$origin_page = $this->input->get(self::ORIGIN_PAGE);
- if ($origin_page == self::INDEX_PAGE)
+ if (in_array($origin_page, array(self::INDEX_PAGE, self::ABGEWIESEN_PAGE)))
{
// mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP);
@@ -359,7 +371,14 @@ class InfoCenter extends Auth_Controller
if (isError($result)) show_error(getError($result));
- $redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
+ $origin_page = $this->input->get(self::ORIGIN_PAGE);
+
+ if ($origin_page === self::ABGEWIESEN_PAGE)
+ $redirectLink = self::INFOCENTER_URI. '/' .self::ABGEWIESEN_PAGE;
+ else
+ $redirectLink = '/'.self::INFOCENTER_URI;
+
+ $redirectLink .= '?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
// Force reload of Dataset after Unlock
$redirectLink .= '&'.self::KEEP_TABLESORTER_FILTER.'=true';
@@ -1526,6 +1545,7 @@ class InfoCenter extends Auth_Controller
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
+ $aufgenommenLink = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE);
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
@@ -1533,6 +1553,7 @@ class InfoCenter extends Auth_Controller
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
+ $aufgenommenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
}
$this->navigationlib->setSessionMenu(
@@ -1583,7 +1604,19 @@ class InfoCenter extends Auth_Controller
null, // subscriptLinkValue
'', // target
30 // sort
- )
+ ),
+ 'aufgenommen' => $this->navigationlib->oneLevel(
+ 'Aufgenommene', // description
+ $aufgenommenLink, // link
+ null, // children
+ 'check', // icon
+ null, // subscriptDescription
+ false, // expand
+ null, // subscriptLinkClass
+ null, // subscriptLinkValue
+ '', // target
+ 40 // sort
+ ),
)
);
}
@@ -1611,6 +1644,9 @@ class InfoCenter extends Auth_Controller
if ($origin_page === self::ABGEWIESEN_PAGE)
$link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
+ if ($origin_page === self::AUFGENOMMEN_PAGE)
+ $link = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE);
+
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
diff --git a/application/controllers/system/issues/IssuesKonfiguration.php b/application/controllers/system/issues/IssuesKonfiguration.php
index f6b3ff556..a19a2a93b 100644
--- a/application/controllers/system/issues/IssuesKonfiguration.php
+++ b/application/controllers/system/issues/IssuesKonfiguration.php
@@ -18,7 +18,8 @@ class IssuesKonfiguration extends Auth_Controller
'getApps' => 'admin:r',
'getFehlerKonfigurationByApp' => 'admin:r',
'saveFehlerKonfiguration' => 'admin:rw',
- 'deleteKonfiguration' => 'admin:rw'
+ 'deleteKonfiguration' => 'admin:rw',
+ 'deleteKonfigurationsWerte' => 'admin:rw'
)
);
@@ -204,6 +205,73 @@ class IssuesKonfiguration extends Auth_Controller
$this->outputJson($result);
}
+ /**
+ * Deletes values of a Konfiguration.
+ */
+ public function deleteKonfigurationsWerte()
+ {
+ $konfigurationstyp_kurzbz = $this->input->post('konfigurationstyp_kurzbz');
+ $fehlercode = $this->input->post('fehlercode');
+ $konfigurationsWert = $this->input->post('konfigurationsWert');
+
+ // check if Konfigurationstyp correctly passed
+ if (isEmptyString($konfigurationstyp_kurzbz)) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'ungueltigerKonfigurationstyp'));
+
+ // check if fehlercode correctly passed
+ if (isEmptyString($fehlercode)) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'fehlercodeFehlt'));
+
+ // separate by semicolon if multiple values passed
+ $konfigurationsWert = explode(';', $konfigurationsWert);
+
+ // check if konfiguration already set for the fehlercode
+ $this->FehlerkonfigurationModel->addSelect('konfiguration');
+ $fehlerkonfigurationRes = $this->FehlerkonfigurationModel->loadWhere(
+ array(
+ 'konfigurationstyp_kurzbz' => $konfigurationstyp_kurzbz,
+ 'fehlercode' => $fehlercode
+ )
+ );
+
+ if (!hasData($fehlerkonfigurationRes)) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'fehlerFehlerKonfigurationLaden'));
+
+ // if konfiguration exists, update values
+ if (hasData($fehlerkonfigurationRes))
+ {
+ $fehlerkonfiguration = getData($fehlerkonfigurationRes);
+
+ $existingKonf = json_decode($fehlerkonfiguration[0]->konfiguration);
+
+ if (!$existingKonf) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'fehlerJsonDekodierung'));
+
+ if (!is_array($existingKonf)) $existingKonf = array($existingKonf);
+
+ $newKonfArr = array_values(array_diff($existingKonf, $konfigurationsWert));
+
+ // if no konfiguration values left, delete whole entry
+ if (isEmptyArray($newKonfArr))
+ {
+ $this->outputJson(
+ $this->FehlerkonfigurationModel->delete(
+ array('konfigurationstyp_kurzbz' => $konfigurationstyp_kurzbz, 'fehlercode' => $fehlercode)
+ )
+ );
+ }
+ else
+ {
+ $newKonf = json_encode($newKonfArr);
+ if (!$newKonf) $this->terminateWithJsonError("error when encoding JSON");
+
+ // if there are still values, delete only part of the konfiguration
+ $this->outputJson(
+ $this->FehlerkonfigurationModel->update(
+ array('konfigurationstyp_kurzbz' => $konfigurationstyp_kurzbz, 'fehlercode' => $fehlercode),
+ array('konfiguration' => $newKonf, 'updateamum' => 'NOW()', 'updatevon' => $this->_uid)
+ )
+ );
+ }
+ }
+ }
+
/**
* Deletes a Konfiguration.
*/
diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php
index d8c4b1fd3..8ee1891b5 100644
--- a/application/libraries/AnrechnungLib.php
+++ b/application/libraries/AnrechnungLib.php
@@ -174,6 +174,8 @@ class AnrechnungLib
$anrechnung_data->insertvon = '';
$anrechnung_data->studiensemester_kurzbz = '';
$anrechnung_data->empfehlung = '';
+ $anrechnung_data->begruendung_ects = '';
+ $anrechnung_data->begruendung_lvinhalt = '';
$anrechnung_data->status_kurzbz = '';
$anrechnung_data->status = getUserLanguage() == 'German' ? 'neu' : 'new';
$anrechnung_data->dokumentname = '';
@@ -894,6 +896,8 @@ class AnrechnungLib
$anrechnung_data->insertvon= $anrechnung->insertvon;
$anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz;
$anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung;
+ $anrechnung_data->begruendung_ects = $anrechnung->begruendung_ects;
+ $anrechnung_data->begruendung_lvinhalt = $anrechnung->begruendung_lvinhalt;
// Get last status_kurzbz
$result = $this->ci->AnrechnungModel->getLastAnrechnungstatus($anrechnung->anrechnung_id);
diff --git a/application/libraries/AuthLib.php b/application/libraries/AuthLib.php
index ae30d41fa..de9c15350 100644
--- a/application/libraries/AuthLib.php
+++ b/application/libraries/AuthLib.php
@@ -551,10 +551,7 @@ class AuthLib
// Needed information
$this->_ci->PersonModel->addSelect('person_id, vorname, nachname, uid');
// Retrieves the uid if it is possible for active users
- $this->_ci->PersonModel->addJoin(
- '(SELECT uid, person_id FROM public.tbl_benutzer WHERE aktiv = TRUE) tb', 'person_id',
- 'LEFT'
- );
+ $this->_ci->PersonModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT');
// Execute query with where clause
$personResult = $this->_ci->PersonModel->loadWhere($queryParamsArray);
diff --git a/application/libraries/MailLib.php b/application/libraries/MailLib.php
index dbbc22f08..60dd52342 100644
--- a/application/libraries/MailLib.php
+++ b/application/libraries/MailLib.php
@@ -182,6 +182,7 @@ class MailLib
{
if ($this->sended == $this->email_number_per_time_range)
{
+ $this->sended = 0;
sleep($this->email_time_range); // Wait!!!
}
}
diff --git a/application/libraries/issues/PlausicheckLib.php b/application/libraries/issues/PlausicheckLib.php
deleted file mode 100644
index 9c768da02..000000000
--- a/application/libraries/issues/PlausicheckLib.php
+++ /dev/null
@@ -1,1627 +0,0 @@
-_ci =& get_instance(); // get ci instance
-
- // load models
- $this->_ci->load->model('crm/Prestudent_model', 'PrestudentModel');
- $this->_ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
- $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
-
- // get database for queries
- $this->_db = new DB_Model();
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Studiengang checks
-
- /**
- * Studiengang should be the same for prestudent and student.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStgPrestudentUngleichStgStudent($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz prestudent_stg_oe_kurzbz, student_stg.oe_kurzbz student_stg_oe_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_student stud USING(prestudent_id)
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- JOIN public.tbl_studiengang student_stg ON stud.studiengang_kz = student_stg.studiengang_kz
- WHERE
- stud.studiengang_kz != pre.studiengang_kz";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Orgform of a Studiengang in Studienplan should be the same as orgform of student.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getOrgformStgUngleichOrgformPrestudent(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- prestudent.person_id, prestudent.prestudent_id, status.studiensemester_kurzbz,
- studiengang.orgform_kurzbz AS stg_orgform, status.orgform_kurzbz AS student_orgform,
- prestudent.studiengang_kz AS student_studiengang, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_studiengang studiengang
- JOIN public.tbl_student student USING(studiengang_kz)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- LEFT JOIN lehre.tbl_studienplan stpl USING (studienplan_id)
- WHERE
- benutzer.aktiv = true
- AND status.status_kurzbz IN ('Student', 'Unterbrecher', 'Abbrecher', 'Diplomand', 'Absolvent')
- AND studiengang.studiengang_kz < 10000
- AND status.studiensemester_kurzbz = ?
- AND NOT (status.orgform_kurzbz IS NULL AND studiengang.mischform = FALSE)
- AND NOT EXISTS(
- SELECT 1
- FROM
- lehre.tbl_studienplan
- JOIN
- lehre.tbl_studienordnung USING(studienordnung_id)
- WHERE
- tbl_studienplan.studienplan_id = stpl.studienplan_id
- AND tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
- AND tbl_studienplan.orgform_kurzbz = status.orgform_kurzbz)";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND studiengang.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- $qry .= "
- ORDER BY student_uid";
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students in "mixed" Studiengang should have Orgform.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getPrestudentMischformOhneOrgform(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status.status_kurzbz IN ('Bewerber', 'Student')
- AND stg.mischform
- AND (status.orgform_kurzbz='' OR status.orgform_kurzbz IS NULL)
- AND status.studiensemester_kurzbz=?";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Studiengang should be the same for prestudent and studienplan.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param studienordnung_id int if check is to be executed only for a certain studienordnung_id
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStgPrestudentUngleichStgStudienplan(
- $studiengang_kz = null,
- $prestudent_id = null,
- $studienordnung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON (ps.prestudent_id) ps.person_id, ps.prestudent_id, stordnung.studienordnung_id,
- stplan.bezeichnung AS studienplan, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudent ps
- JOIN public.tbl_prestudentstatus USING(prestudent_id)
- JOIN lehre.tbl_studienplan stplan USING(studienplan_id)
- JOIN lehre.tbl_studienordnung stordnung USING(studienordnung_id)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_studiengang stg ON ps.studiengang_kz = stg.studiengang_kz
- WHERE
- ps.studiengang_kz<>stordnung.studiengang_kz
- AND stg.melderelevant";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND ps.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($studienordnung_id))
- {
- $qry .= " AND stordnung.studienordnung_id = ?";
- $params[] = $studienordnung_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Studentstatus checks
-
- /**
- * Abbrecher cannot be active.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAbbrecherAktiv($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudentstatus pre_status
- JOIN public.tbl_prestudent pre USING(prestudent_id)
- JOIN public.tbl_student student USING(prestudent_id)
- JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- pre_status.status_kurzbz ='Abbrecher'
- AND benutzer.aktiv=true";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * There shouldn't be any status after Abbrecher status.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStudentstatusNachAbbrecher($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student student
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- prestatus.status_kurzbz = 'Abbrecher'
- AND get_rolle_prestudent(prestudent.prestudent_id, prestatus.studiensemester_kurzbz) <> 'Abbrecher'";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Ausbildungssemester of prestudent (lehrverband) must be the same as Ausbildungssemester of prestudentstatus.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAusbildungssemPrestudentUngleichAusbildungssemStatus(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz, $studiensemester_kurzbz, $studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT(student.student_uid), student.student_uid, prestudent.person_id, prestudent.prestudent_id,
- status.ausbildungssemester AS status_ausbildungssemester, lv.semester AS student_ausbildungssemester, status.studiensemester_kurzbz,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student student
- JOIN public.tbl_studentlehrverband lv USING(student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- status.studiensemester_kurzbz = ?
- AND lv.studiensemester_kurzbz = ?
- AND status.status_kurzbz NOT IN ('Interessent','Bewerber','Aufgenommener','Wartender','Abgewiesener','Unterbrecher')
- AND get_rolle_prestudent (prestudent_id, ?)='Student'
- AND status.ausbildungssemester != lv.semester";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students with active status should have an active Benutzer.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getInaktiverStudentAktiverStatus(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $aktStudiensemesterRes = $this->_ci->StudiensemesterModel->getAkt();
-
- if (isError($aktStudiensemesterRes)) return $aktStudiensemesterRes;
-
- $studiensemester_kurzbz = hasData($aktStudiensemesterRes) ? getData($aktStudiensemesterRes)[0]->studiensemester_kurzbz : '';
-
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT(student.student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_benutzer benutzer
- JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=false
- AND EXISTS (SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id = prestudent.prestudent_id AND studiensemester_kurzbz = ?)
- AND get_rolle_prestudent(prestudent_id, NULL) IN ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')
- AND stg.melderelevant
- AND prestudent.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students of a semester shouldn't start studies before the date of Bismeldung.
- * e.g. If student studies in WS2022 datum of status shouldn't be before 15.4.2020
- * e.g. If student studies in SS2022 datum of status shouldn't be before 15.11.2022
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getInskriptionVorLetzerBismeldung(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- // get Bismeldedatum
- $datumBis = $this->_getBisdateFromSemester($studiensemester_kurzbz);
-
- $params = array($datumBis, $studiensemester_kurzbz, $datumBis);
-
- // get active students
- $qry = "
- SELECT
- DISTINCT ON (student.student_uid) ? AS datum_bismeldung,
- prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_benutzer benutzer
- JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=true
- AND status.studiensemester_kurzbz = ?
- /* inscription date before date of first student status */
- AND (
- SELECT datum
- FROM public.tbl_prestudentstatus
- WHERE prestudent_id = prestudent.prestudent_id
- AND studiensemester_kurzbz = status.studiensemester_kurzbz
- AND status_kurzbz = 'Student'
- ORDER BY datum, insertamum, ext_id
- LIMIT 1
- ) < ?
- AND stg.melderelevant
- AND prestudent.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Status Dates and status studysemester dates should be in correct order.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if check is to be executed only for certain Studiengaenge
- * @return success with prestudents or error
- */
- public function getDatumStudiensemesterFalscheReihenfolge($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- // all active students with Status student in current semester
- $qry = "
- SELECT DISTINCT ON (prestudent_id) *
- FROM (
- SELECT
- prestudent.person_id, prestudent.prestudent_id,
- stg.studiengang_kz, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
- ROW_NUMBER () OVER (
- PARTITION BY prestudent.prestudent_id
- ORDER BY sem.start DESC, status.datum DESC, status.insertamum DESC, status.ext_id DESC
- ) AS reihenfolge_semester,
- ROW_NUMBER () OVER (
- PARTITION BY prestudent.prestudent_id
- ORDER BY status.datum DESC, status.insertamum DESC, status.ext_id DESC
- ) AS reihenfolge_datum
- FROM
- public.tbl_student student
- JOIN public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=true
- AND status.status_kurzbz='Student'
- ) reihenfolge
- WHERE reihenfolge_semester <> reihenfolge_datum";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students with active Benutzer should have a status in the current semester.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAktiverStudentOhneStatus($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT (student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student student
- JOIN public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=TRUE
- AND stg.melderelevant
- AND prestudent.bismelden
- AND NOT EXISTS (
- SELECT 1
- FROM public.tbl_prestudentstatus
- JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz)
- WHERE prestudent_id = prestudent.prestudent_id
- /* buffer of four months, as status are often entered later */
- AND sem.ende::date > NOW() - interval '4 months'
- )";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Studienplan should be valid in current Ausbildungssemester of prestudent.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStudienplanUngueltig(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT pre.person_id, pre.prestudent_id,
- tbl_studienplan.bezeichnung AS studienplan,
- status.status_kurzbz,
- status.studiensemester_kurzbz,
- status.ausbildungssemester,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_person USING(person_id)
- JOIN lehre.tbl_studienplan USING(studienplan_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- status_kurzbz in('Student', 'Interessent','Bewerber','Aufgenommener')
- AND NOT EXISTS (
- SELECT
- 1
- FROM
- lehre.tbl_studienplan_semester
- WHERE
- studienplan_id=status.studienplan_id
- AND tbl_studienplan_semester.semester = status.ausbildungssemester
- AND tbl_studienplan_semester.studiensemester_kurzbz = status.studiensemester_kurzbz
- )
- AND status.studiensemester_kurzbz=?
- AND pre.bismelden
- AND stg.melderelevant";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND tbl_prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students with finished studies should have exactly one final exam.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getFalscheAnzahlAbschlusspruefungen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT * FROM (
- SELECT
- DISTINCT ON(pre.prestudent_id) pre.person_id, pre.prestudent_id, student_uid, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
- (
- SELECT COUNT(*)
- FROM lehre.tbl_abschlusspruefung
- WHERE student_uid = stud.student_uid
- AND abschlussbeurteilung_kurzbz != 'nicht'
- AND abschlussbeurteilung_kurzbz IS NOT NULL
- ) AS anzahl_abschlusspruefungen
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_student stud USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- status_kurzbz = 'Absolvent'
- AND pre.bismelden
- AND stg.melderelevant
- AND NOT EXISTS ( /* exclude gs */
- SELECT 1
- FROM bis.tbl_mobilitaet
- WHERE prestudent_id = pre.prestudent_id
- AND studiensemester_kurzbz = status.studiensemester_kurzbz
- )";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- $qry .= ") studenten
- WHERE anzahl_abschlusspruefungen != 1";
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Date of final exam shouldn't be missing for Absolvent.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param abschlusspruefung_id int if check is to be executed for a certain Abschlussprüfung
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getDatumAbschlusspruefungFehlt(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $abschlusspruefung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $results = array();
-
- $pruefungenRes = $this->_getInvalidAbschlusspruefungen(
- $studiensemester_kurzbz,
- $studiengang_kz,
- $abschlusspruefung_id,
- $exkludierte_studiengang_kz
- );
-
- if (isError($pruefungenRes)) return $pruefungenRes;
-
- if (hasData($pruefungenRes))
- {
- $pruefungen = getData($pruefungenRes);
-
- foreach ($pruefungen as $pruefung)
- {
- if (isEmptyString($pruefung->datum)) $results[] = $pruefung;
- }
- }
-
- return success($results);
- }
-
- /**
- * Date of sponsion shouldn't be missing for Absolvent.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param abschlusspruefung_id int if check is to be executed only for a certain Abschlussprüfung
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getDatumSponsionFehlt(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $abschlusspruefung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $results = array();
-
- $pruefungenRes = $this->_getInvalidAbschlusspruefungen(
- $studiensemester_kurzbz,
- $studiengang_kz,
- $abschlusspruefung_id,
- $exkludierte_studiengang_kz
- );
-
- if (isError($pruefungenRes)) return $pruefungenRes;
-
- if (hasData($pruefungenRes))
- {
- $pruefungen = getData($pruefungenRes);
-
- foreach ($pruefungen as $pruefung)
- {
- if (isEmptyString($pruefung->sponsion)) $results[] = $pruefung;
- }
- }
-
- return success($results);
- }
-
- /**
- * Bewerber should have participated in Reihungstest.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getBewerberNichtZumRtAngetreten(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $previousStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
-
- if (isError($previousStudiensemesterRes)) return $previousStudiensemesterRes;
-
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent prestudent
- JOIN public.tbl_prestudentstatus status ON(prestudent.prestudent_id=status.prestudent_id)
- JOIN public.tbl_person USING(person_id)
- LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status_kurzbz='Bewerber'
- AND reihungstestangetreten=false
- AND stg.melderelevant
- AND prestudent.bismelden";
-
- if (hasData($previousStudiensemesterRes))
- {
- $previousStudiensemester = getData($previousStudiensemesterRes)[0]->studiensemester_kurzbz;
- $qry .= " AND (studiensemester_kurzbz=? OR studiensemester_kurzbz=?)";
- $params[] = $previousStudiensemester;
- }
- else
- {
- $qry .= " AND studiensemester_kurzbz=?";
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Current Ausbildungssemester shouldn't be 0.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, prestat.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_prestudentstatus prestat USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- prestat.status_kurzbz != 'Incoming'
- AND prestat.studiensemester_kurzbz = ?
- AND ausbildungssemester = 0
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Prestudent should have a final status.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAbschlussstatusFehlt(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON (pre.prestudent_id)
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- NOT EXISTS( /*student does not study anymore*/
- SELECT
- 1
- FROM
- public.tbl_prestudentstatus ps
- JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
- WHERE
- prestudent_id=pre.prestudent_id
- /* 4 months: There might be Diplomanden, in summer months end status is often not entered yet */
- AND tbl_studiensemester.ende>now() - interval '4 months'
- )
- /* check only valid begininng with 2018 */
- AND '2018-01-01'<(SELECT max(datum) FROM public.tbl_prestudentstatus WHERE prestudent_id=pre.prestudent_id)
- AND NOT EXISTS( /* no end status */
- SELECT 1
- FROM public.tbl_prestudentstatus ps
- WHERE
- prestudent_id=pre.prestudent_id
- AND status_kurzbz IN('Abbrecher','Abgewiesener','Absolvent','Incoming')
- )
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiensemester_kurzbz))
- {
- $prevStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
-
- if (isError($prevStudiensemesterRes)) return $prevStudiensemesterRes;
-
- if (hasData($prevStudiensemesterRes))
- {
- // if Studiensemester given, check only if has status in current or previous semester
- $prevStudiensemester = getData($prevStudiensemesterRes)[0]->studiensemester_kurzbz;
- $qry .= " AND EXISTS (
- SELECT 1
- FROM public.tbl_prestudentstatus ps
- WHERE studiensemester_kurzbz IN (?, ?)
- AND ps.prestudent_id = pre.prestudent_id
- )";
- $params[] = $prevStudiensemester;
- $params[] = $studiensemester_kurzbz;
- }
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Student with active status should have been charged, i.e. have a Kontobuchung with a negative or zero value.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAktiverStudentstatusOhneKontobuchung(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT ON (pre.prestudent_id)
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status.studiensemester_kurzbz = ?
- AND status.status_kurzbz IN ('Student', 'Incoming')
- AND NOT EXISTS (
- SELECT 1
- FROM
- public.tbl_konto
- WHERE
- person_id = pers.person_id
- AND studiensemester_kurzbz = status.studiensemester_kurzbz
- AND buchungsnr_verweis IS NULL
- AND betrag <= 0
- )
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Person checks
-
- /**
- * Birthdate is too long ago.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getGbDatumWeitZurueck(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- pers.person_id
- FROM
- public.tbl_person pers
- WHERE
- pers.gebdatum < '1920-01-01'
- AND EXISTS (
- SELECT 1
- FROM public.tbl_prestudent
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE person_id = pers.person_id";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- $qry .= ")";
-
- if (isset($person_id))
- {
- $qry .= " AND pers.person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Nation is not Austria, but address has austrian Gemeinde.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @return success with prestudents or error
- */
- public function getNationNichtOesterreichAberGemeinde($studiengang_kz = null, $person_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "SELECT DISTINCT tbl_person.person_id, adr.gemeinde, adr.adresse_id
- FROM
- public.tbl_adresse adr
- JOIN public.tbl_prestudent USING(person_id)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_student USING(prestudent_id)
- JOIN public.tbl_benutzer ON(uid=student_uid)
- JOIN public.tbl_studiengang stg ON tbl_prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- adr.nation!='A'
- AND tbl_benutzer.aktiv
- AND gemeinde NOT IN ('Münster')
- AND EXISTS(SELECT 1 FROM bis.tbl_gemeinde WHERE name = adr.gemeinde)";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND tbl_person.person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students should have exactly one home address.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getFalscheAnzahlHeimatadressen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT person_id
- FROM
- (
- SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
- FROM public.tbl_adresse addr
- WHERE heimatadresse IS TRUE
- GROUP BY person_id
- ) adressen
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudent pre USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_student USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- anzahl_adressen != 1
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students should have exactly one delivery address.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getFalscheAnzahlZustelladressen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT person_id
- FROM
- (
- SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
- FROM public.tbl_adresse addr
- WHERE zustelladresse IS TRUE
- GROUP BY person_id
- ) adressen
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudent pre USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_student USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- anzahl_adressen != 1
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // I/O checks
-
- /**
- * Incoming shouldn't have austrian home address.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getIncomingHeimatNationOesterreich(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT pers.person_id, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_adresse addr USING(person_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status.status_kurzbz = 'Incoming'
- AND addr.nation = 'A'
- AND addr.heimatadresse
- AND status.studiensemester_kurzbz = ?
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND pers.person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Incoming should have IN/OUT data.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getIncomingOhneIoDatensatz($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON(student_uid, nachname, vorname)
- tbl_person.person_id,
- tbl_prestudent.prestudent_id,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student
- JOIN public.tbl_benutzer ON(student_uid=uid)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
- JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=tbl_student.studiengang_kz)
- WHERE
- bismelden=TRUE
- AND status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid)
- AND stg.melderelevant";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND tbl_prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Incoming or gemeinsame Studien students should not receive funding (not be förderrelevant).
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return object success or error
- */
- public function getIncomingOrGsFoerderrelevant(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON(prestudent_id)
- pers.person_id,
- ps.prestudent_id,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student stud
- JOIN public.tbl_benutzer ON(student_uid=uid)
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_prestudent ps USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=stud.studiengang_kz)
- WHERE
- (
- status.status_kurzbz = 'Incoming'
- OR EXISTS (
- SELECT 1
- FROM
- bis.tbl_mobilitaet
- JOIN public.tbl_prestudent USING(prestudent_id)
- WHERE
- prestudent_id = ps.prestudent_id
- AND gsstudientyp_kurzbz = 'Extern'
- )
- )
- AND (ps.foerderrelevant <> FALSE OR ps.foerderrelevant IS NULL)
- AND bismelden=TRUE
- AND stg.melderelevant";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND ps.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Private methods
-
- /**
- * Get final exams in a semester which are invalid (e.g. missing data)
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiengang
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param abschlusspruefung_id int if check is to be executed for certain Abschlussprüfung
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- */
- private function _getInvalidAbschlusspruefungen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $abschlusspruefung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id,
- pruefung.sponsion, pruefung.datum, pruefung.abschlusspruefung_id,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_student stud USING(prestudent_id)
- JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- JOIN lehre.tbl_abschlusspruefung pruefung ON stud.student_uid = pruefung.student_uid
- WHERE
- status_kurzbz = 'Absolvent'
- AND NOT EXISTS ( /* exclude gs */
- SELECT 1
- FROM bis.tbl_mobilitaet
- WHERE prestudent_id = pre.prestudent_id
- AND studiensemester_kurzbz = prestatus.studiensemester_kurzbz
- )
- AND abschlussbeurteilung_kurzbz!='nicht'
- AND abschlussbeurteilung_kurzbz IS NOT NULL
- AND (pruefung.datum IS NULL OR pruefung.sponsion IS NULL)
- AND pre.bismelden
- AND stg.melderelevant";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND prestatus.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($abschlusspruefung_id))
- {
- $qry .= " AND pruefung.abschlusspruefung_id = ?";
- $params[] = $abschlusspruefung_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Gets Bismeldedate from Studiensemester.
- * @param studiensemester_kurzbz string
- */
- private function _getBisdateFromSemester($studiensemester_kurzbz)
- {
- $semesterYear = substr($studiensemester_kurzbz, 2, 6);
- $semesterType = substr($studiensemester_kurzbz, 0, 2);
-
- if ($semesterType == 'SS')
- {
- return date_format(date_create(($semesterYear - 1)."-11-15"), 'Y-m-d');
- }
-
- if ($semesterType == 'WS')
- {
- return date_format(date_create($semesterYear."-04-15"), 'Y-m-d');
- }
- }
-}
diff --git a/application/libraries/issues/plausichecks/AbbrecherAktiv.php b/application/libraries/issues/plausichecks/AbbrecherAktiv.php
index caa8dd91c..9eae389b5 100644
--- a/application/libraries/issues/plausichecks/AbbrecherAktiv.php
+++ b/application/libraries/issues/plausichecks/AbbrecherAktiv.php
@@ -20,7 +20,7 @@ class AbbrecherAktiv extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAbbrecherAktiv($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getAbbrecherAktiv($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,49 @@ class AbbrecherAktiv extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Abbrecher cannot be active.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAbbrecherAktiv($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudentstatus pre_status
+ JOIN public.tbl_prestudent pre USING(prestudent_id)
+ JOIN public.tbl_student student USING(prestudent_id)
+ JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ pre_status.status_kurzbz ='Abbrecher'
+ AND benutzer.aktiv=true";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php b/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php
index e7894c7a8..3690e1331 100644
--- a/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php
+++ b/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php
@@ -21,7 +21,7 @@ class AbschlussstatusFehlt extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAbschlussstatusFehlt(
+ $prestudentRes = $this->getAbschlussstatusFehlt(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -49,4 +49,95 @@ class AbschlussstatusFehlt extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Prestudent should have a final status.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAbschlussstatusFehlt(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON (pre.prestudent_id)
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ NOT EXISTS( /*student does not study anymore*/
+ SELECT
+ 1
+ FROM
+ public.tbl_prestudentstatus ps
+ JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
+ WHERE
+ prestudent_id=pre.prestudent_id
+ /* 4 months: There might be Diplomanden, in summer months end status is often not entered yet */
+ AND tbl_studiensemester.ende>now() - interval '4 months'
+ )
+ /* check only valid begininng with 2018 */
+ AND '2018-01-01'<(SELECT max(datum) FROM public.tbl_prestudentstatus WHERE prestudent_id=pre.prestudent_id)
+ AND NOT EXISTS( /* no end status */
+ SELECT 1
+ FROM public.tbl_prestudentstatus ps
+ WHERE
+ prestudent_id=pre.prestudent_id
+ AND status_kurzbz IN('Abbrecher','Abgewiesener','Absolvent','Incoming')
+ )
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $prevStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
+
+ if (isError($prevStudiensemesterRes)) return $prevStudiensemesterRes;
+
+ if (hasData($prevStudiensemesterRes))
+ {
+ // if Studiensemester given, check only if has status in current or previous semester
+ $prevStudiensemester = getData($prevStudiensemesterRes)[0]->studiensemester_kurzbz;
+ $qry .= " AND EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudentstatus ps
+ WHERE studiensemester_kurzbz IN (?, ?)
+ AND ps.prestudent_id = pre.prestudent_id
+ )";
+ $params[] = $prevStudiensemester;
+ $params[] = $studiensemester_kurzbz;
+ }
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AktSemesterNull.php b/application/libraries/issues/plausichecks/AktSemesterNull.php
index fa251a95e..1223a2720 100644
--- a/application/libraries/issues/plausichecks/AktSemesterNull.php
+++ b/application/libraries/issues/plausichecks/AktSemesterNull.php
@@ -21,7 +21,7 @@ class AktSemesterNull extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -50,4 +50,51 @@ class AktSemesterNull extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Current Ausbildungssemester shouldn't be 0.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, prestat.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_prestudentstatus prestat USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ prestat.status_kurzbz != 'Incoming'
+ AND prestat.studiensemester_kurzbz = ?
+ AND ausbildungssemester = 0
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php b/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php
index 225c6242f..94fe5cc8d 100644
--- a/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php
+++ b/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php
@@ -20,7 +20,7 @@ class AktiverStudentOhneStatus extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAktiverStudentOhneStatus($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getAktiverStudentOhneStatus($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,57 @@ class AktiverStudentOhneStatus extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students with active Benutzer should have a status in the current semester.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAktiverStudentOhneStatus($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT (student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=TRUE
+ AND stg.melderelevant
+ AND prestudent.bismelden
+ AND NOT EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudentstatus
+ JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz)
+ WHERE prestudent_id = prestudent.prestudent_id
+ /* buffer of four months, as status are often entered later */
+ AND sem.ende::date > NOW() - interval '4 months'
+ )";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php b/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
index a9b30a1d2..28684388f 100644
--- a/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
+++ b/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
@@ -21,7 +21,7 @@ class AktiverStudentstatusOhneKontobuchung extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAktiverStudentstatusOhneKontobuchung(
+ $prestudentRes = $this->getAktiverStudentstatusOhneKontobuchung(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -55,4 +55,66 @@ class AktiverStudentstatusOhneKontobuchung extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Student with active status should have been charged, i.e. have a Kontobuchung with a negative or zero value.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAktiverStudentstatusOhneKontobuchung(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT ON (pre.prestudent_id)
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status.studiensemester_kurzbz = ?
+ AND status.status_kurzbz IN ('Student', 'Incoming')
+ AND NOT EXISTS (
+ SELECT 1
+ FROM
+ public.tbl_konto
+ WHERE
+ person_id = pers.person_id
+ AND studiensemester_kurzbz = status.studiensemester_kurzbz
+ AND buchungsnr_verweis IS NULL
+ AND betrag <= 0
+ )
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php b/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php
index 3462685ab..00ff16ae0 100644
--- a/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php
+++ b/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php
@@ -21,7 +21,7 @@ class AusbildungssemPrestudentUngleichAusbildungssemStatus extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAusbildungssemPrestudentUngleichAusbildungssemStatus(
+ $prestudentRes = $this->getAusbildungssemPrestudentUngleichAusbildungssemStatus(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -58,4 +58,59 @@ class AusbildungssemPrestudentUngleichAusbildungssemStatus extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Ausbildungssemester of prestudent (lehrverband) must be the same as Ausbildungssemester of prestudentstatus.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAusbildungssemPrestudentUngleichAusbildungssemStatus(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz, $studiensemester_kurzbz, $studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT(student.student_uid), student.student_uid, prestudent.person_id, prestudent.prestudent_id,
+ status.ausbildungssemester AS status_ausbildungssemester, lv.semester AS student_ausbildungssemester, status.studiensemester_kurzbz,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_studentlehrverband lv USING(student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ status.studiensemester_kurzbz = ?
+ AND lv.studiensemester_kurzbz = ?
+ AND status.status_kurzbz NOT IN ('Interessent','Bewerber','Aufgenommener','Wartender','Abgewiesener','Unterbrecher')
+ AND get_rolle_prestudent (prestudent_id, ?)='Student'
+ AND status.ausbildungssemester != lv.semester";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php b/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php
index a1b1941dd..4a9655d13 100644
--- a/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php
+++ b/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php
@@ -21,7 +21,7 @@ class BewerberNichtZumRtAngetreten extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getBewerberNichtZumRtAngetreten(
+ $prestudentRes = $this->getBewerberNichtZumRtAngetreten(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,72 @@ class BewerberNichtZumRtAngetreten extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Bewerber should have participated in Reihungstest.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getBewerberNichtZumRtAngetreten(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
+ $previousStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
+
+ if (isError($previousStudiensemesterRes)) return $previousStudiensemesterRes;
+
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent prestudent
+ JOIN public.tbl_prestudentstatus status ON(prestudent.prestudent_id=status.prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status_kurzbz='Bewerber'
+ AND reihungstestangetreten=false
+ AND stg.melderelevant
+ AND prestudent.bismelden";
+
+ if (hasData($previousStudiensemesterRes))
+ {
+ $previousStudiensemester = getData($previousStudiensemesterRes)[0]->studiensemester_kurzbz;
+ $qry .= " AND (studiensemester_kurzbz=? OR studiensemester_kurzbz=?)";
+ $params[] = $previousStudiensemester;
+ }
+ else
+ {
+ $qry .= " AND studiensemester_kurzbz=?";
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php b/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php
index 0d66324fb..f606e2c8c 100644
--- a/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php
+++ b/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php
@@ -21,7 +21,7 @@ class DatumAbschlusspruefungFehlt extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getDatumAbschlusspruefungFehlt(
+ $prestudentRes = $this->getDatumAbschlusspruefungFehlt(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,72 @@ class DatumAbschlusspruefungFehlt extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Date of final exam shouldn't be missing for Absolvent.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param abschlusspruefung_id int if check is to be executed for a certain Abschlussprüfung
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getDatumAbschlusspruefungFehlt(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $abschlusspruefung_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id,
+ pruefung.sponsion, pruefung.datum, pruefung.abschlusspruefung_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ JOIN lehre.tbl_abschlusspruefung pruefung ON stud.student_uid = pruefung.student_uid
+ WHERE
+ status_kurzbz = 'Absolvent'
+ AND NOT EXISTS ( /* exclude gs */
+ SELECT 1
+ FROM bis.tbl_mobilitaet
+ WHERE prestudent_id = pre.prestudent_id
+ AND studiensemester_kurzbz = prestatus.studiensemester_kurzbz
+ )
+ AND abschlussbeurteilung_kurzbz!='nicht'
+ AND abschlussbeurteilung_kurzbz IS NOT NULL
+ AND pruefung.datum IS NULL
+ AND pre.bismelden
+ AND stg.melderelevant";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND prestatus.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($abschlusspruefung_id))
+ {
+ $qry .= " AND pruefung.abschlusspruefung_id = ?";
+ $params[] = $abschlusspruefung_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/DatumSponsionFehlt.php b/application/libraries/issues/plausichecks/DatumSponsionFehlt.php
index 719afc2e2..210ae6f01 100644
--- a/application/libraries/issues/plausichecks/DatumSponsionFehlt.php
+++ b/application/libraries/issues/plausichecks/DatumSponsionFehlt.php
@@ -21,7 +21,7 @@ class DatumSponsionFehlt extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getDatumSponsionFehlt(
+ $prestudentRes = $this->getDatumSponsionFehlt(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,72 @@ class DatumSponsionFehlt extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Date of sponsion shouldn't be missing for Absolvent.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param abschlusspruefung_id int if check is to be executed only for a certain Abschlussprüfung
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getDatumSponsionFehlt(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $abschlusspruefung_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id,
+ pruefung.sponsion, pruefung.datum, pruefung.abschlusspruefung_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ JOIN lehre.tbl_abschlusspruefung pruefung ON stud.student_uid = pruefung.student_uid
+ WHERE
+ status_kurzbz = 'Absolvent'
+ AND NOT EXISTS ( /* exclude gs */
+ SELECT 1
+ FROM bis.tbl_mobilitaet
+ WHERE prestudent_id = pre.prestudent_id
+ AND studiensemester_kurzbz = prestatus.studiensemester_kurzbz
+ )
+ AND abschlussbeurteilung_kurzbz!='nicht'
+ AND abschlussbeurteilung_kurzbz IS NOT NULL
+ AND pruefung.sponsion IS NULL
+ AND pre.bismelden
+ AND stg.melderelevant";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND prestatus.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($abschlusspruefung_id))
+ {
+ $qry .= " AND pruefung.abschlusspruefung_id = ?";
+ $params[] = $abschlusspruefung_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php b/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php
index e1f01f735..381bea7df 100644
--- a/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php
+++ b/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php
@@ -20,7 +20,7 @@ class DatumStudiensemesterFalscheReihenfolge extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getDatumStudiensemesterFalscheReihenfolge($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getDatumStudiensemesterFalscheReihenfolge($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -45,4 +45,64 @@ class DatumStudiensemesterFalscheReihenfolge extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Status Dates and status studysemester dates should be in correct order.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if check is to be executed only for certain Studiengaenge
+ * @return success with prestudents or error
+ */
+ public function getDatumStudiensemesterFalscheReihenfolge($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ // all active students with Status student in current semester
+ $qry = "
+ SELECT DISTINCT ON (prestudent_id) *
+ FROM (
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id,
+ stg.studiengang_kz, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
+ ROW_NUMBER () OVER (
+ PARTITION BY prestudent.prestudent_id
+ ORDER BY sem.start DESC, status.datum DESC, status.insertamum DESC, status.ext_id DESC
+ ) AS reihenfolge_semester,
+ ROW_NUMBER () OVER (
+ PARTITION BY prestudent.prestudent_id
+ ORDER BY status.datum DESC, status.insertamum DESC, status.ext_id DESC
+ ) AS reihenfolge_datum
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=true
+ AND status.status_kurzbz='Student'
+ ) reihenfolge
+ WHERE reihenfolge_semester <> reihenfolge_datum";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php b/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php
index 68b67ec29..1021fe85a 100644
--- a/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php
+++ b/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php
@@ -21,7 +21,7 @@ class FalscheAnzahlAbschlusspruefungen extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getFalscheAnzahlAbschlusspruefungen(
+ $prestudentRes = $this->getFalscheAnzahlAbschlusspruefungen(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -49,4 +49,77 @@ class FalscheAnzahlAbschlusspruefungen extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students with finished studies should have exactly one final exam.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getFalscheAnzahlAbschlusspruefungen(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT * FROM (
+ SELECT
+ DISTINCT ON(pre.prestudent_id) pre.person_id, pre.prestudent_id, student_uid, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
+ (
+ SELECT COUNT(*)
+ FROM lehre.tbl_abschlusspruefung
+ WHERE student_uid = stud.student_uid
+ AND abschlussbeurteilung_kurzbz != 'nicht'
+ AND abschlussbeurteilung_kurzbz IS NOT NULL
+ ) AS anzahl_abschlusspruefungen
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ status_kurzbz = 'Absolvent'
+ AND pre.bismelden
+ AND stg.melderelevant
+ AND NOT EXISTS ( /* exclude gs */
+ SELECT 1
+ FROM bis.tbl_mobilitaet
+ WHERE prestudent_id = pre.prestudent_id
+ AND studiensemester_kurzbz = status.studiensemester_kurzbz
+ )";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ $qry .= ") studenten
+ WHERE anzahl_abschlusspruefungen != 1";
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php b/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php
index f3189eaa5..b3551904e 100644
--- a/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php
+++ b/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php
@@ -21,7 +21,7 @@ class FalscheAnzahlHeimatadressen extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getFalscheAnzahlHeimatadressen(
+ $personRes = $this->getFalscheAnzahlHeimatadressen(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -47,4 +47,67 @@ class FalscheAnzahlHeimatadressen extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students should have exactly one home address.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getFalscheAnzahlHeimatadressen(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT person_id
+ FROM
+ (
+ SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
+ FROM public.tbl_adresse addr
+ WHERE heimatadresse IS TRUE
+ GROUP BY person_id
+ ) adressen
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudent pre USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ anzahl_adressen != 1
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php b/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php
index 1fb974aa1..9d72b0236 100644
--- a/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php
+++ b/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php
@@ -21,7 +21,7 @@ class FalscheAnzahlZustelladressen extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getFalscheAnzahlZustelladressen(
+ $personRes = $this->getFalscheAnzahlZustelladressen(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -47,4 +47,67 @@ class FalscheAnzahlZustelladressen extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students should have exactly one delivery address.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getFalscheAnzahlZustelladressen(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT person_id
+ FROM
+ (
+ SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
+ FROM public.tbl_adresse addr
+ WHERE zustelladresse IS TRUE
+ GROUP BY person_id
+ ) adressen
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudent pre USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ anzahl_adressen != 1
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php b/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php
index 5b7326986..04e1cf97b 100644
--- a/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php
+++ b/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php
@@ -21,7 +21,7 @@ class GbDatumWeitZurueck extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getGbDatumWeitZurueck($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
+ $personRes = $this->getGbDatumWeitZurueck($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($personRes)) return $personRes;
@@ -42,4 +42,63 @@ class GbDatumWeitZurueck extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Birthdate is too long ago.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getGbDatumWeitZurueck(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pers.person_id
+ FROM
+ public.tbl_person pers
+ WHERE
+ pers.gebdatum < '1920-01-01'
+ AND EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudent
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE person_id = pers.person_id";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ $qry .= ")";
+
+ if (isset($person_id))
+ {
+ $qry .= " AND pers.person_id = ?";
+ $params[] = $person_id;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php b/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php
index 559d31263..dead2b1e7 100644
--- a/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php
+++ b/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php
@@ -21,7 +21,7 @@ class InaktiverStudentAktiverStatus extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getInaktiverStudentAktiverStatus(
+ $prestudentRes = $this->getInaktiverStudentAktiverStatus(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,62 @@ class InaktiverStudentAktiverStatus extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students with active status should have an active Benutzer.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getInaktiverStudentAktiverStatus(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $aktStudiensemesterRes = $this->_ci->StudiensemesterModel->getAkt();
+
+ if (isError($aktStudiensemesterRes)) return $aktStudiensemesterRes;
+
+ $studiensemester_kurzbz = hasData($aktStudiensemesterRes) ? getData($aktStudiensemesterRes)[0]->studiensemester_kurzbz : '';
+
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT(student.student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_benutzer benutzer
+ JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=false
+ AND EXISTS (SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id = prestudent.prestudent_id AND studiensemester_kurzbz = ?)
+ AND get_rolle_prestudent(prestudent_id, NULL) IN ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')
+ AND stg.melderelevant
+ AND prestudent.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php b/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php
index 113416486..5276164dc 100644
--- a/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php
+++ b/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php
@@ -21,7 +21,7 @@ class IncomingHeimatNationOesterreich extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getIncomingHeimatNationOesterreich(
+ $personRes = $this->getIncomingHeimatNationOesterreich(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -47,4 +47,58 @@ class IncomingHeimatNationOesterreich extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Incoming shouldn't have austrian home address.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getIncomingHeimatNationOesterreich(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT pers.person_id, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_adresse addr USING(person_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status.status_kurzbz = 'Incoming'
+ AND addr.nation = 'A'
+ AND addr.heimatadresse
+ AND status.studiensemester_kurzbz = ?
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND pers.person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php b/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php
index 6eaa9db3f..e08280f83 100644
--- a/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php
+++ b/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php
@@ -20,7 +20,7 @@ class IncomingOhneIoDatensatz extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getIncomingOhneIoDatensatz($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getIncomingOhneIoDatensatz($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,54 @@ class IncomingOhneIoDatensatz extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Incoming should have IN/OUT data.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getIncomingOhneIoDatensatz($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON(student_uid, nachname, vorname)
+ tbl_person.person_id,
+ tbl_prestudent.prestudent_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
+ JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=tbl_student.studiengang_kz)
+ WHERE
+ bismelden=TRUE
+ AND status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid)
+ AND stg.melderelevant";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND tbl_prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php b/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php
index 23002b71b..4d789f71a 100644
--- a/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php
+++ b/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php
@@ -21,7 +21,7 @@ class IncomingOrGsFoerderrelevant extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getIncomingOrGsFoerderrelevant(
+ $prestudentRes = $this->getIncomingOrGsFoerderrelevant(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -49,4 +49,77 @@ class IncomingOrGsFoerderrelevant extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Incoming or gemeinsame Studien students should not receive funding (not be förderrelevant).
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return object success or error
+ */
+ public function getIncomingOrGsFoerderrelevant(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON(prestudent_id)
+ pers.person_id,
+ ps.prestudent_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student stud
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_prestudent ps USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=stud.studiengang_kz)
+ WHERE
+ (
+ status.status_kurzbz = 'Incoming'
+ OR EXISTS (
+ SELECT 1
+ FROM
+ bis.tbl_mobilitaet
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ WHERE
+ prestudent_id = ps.prestudent_id
+ AND gsstudientyp_kurzbz = 'Extern'
+ )
+ )
+ AND (ps.foerderrelevant <> FALSE OR ps.foerderrelevant IS NULL)
+ AND bismelden=TRUE
+ AND stg.melderelevant";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND ps.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php b/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php
index d977b4124..871b3b3d4 100644
--- a/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php
+++ b/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php
@@ -21,7 +21,7 @@ class InskriptionVorLetzerBismeldung extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getInskriptionVorLetzerBismeldung(
+ $prestudentRes = $this->getInskriptionVorLetzerBismeldung(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -56,4 +56,93 @@ class InskriptionVorLetzerBismeldung extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students of a semester shouldn't start studies before the date of Bismeldung.
+ * e.g. If student studies in WS2022 datum of status shouldn't be before 15.4.2020
+ * e.g. If student studies in SS2022 datum of status shouldn't be before 15.11.2022
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getInskriptionVorLetzerBismeldung(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ // get Bismeldedatum
+ $datumBis = $this->_getBisdateFromSemester($studiensemester_kurzbz);
+
+ $params = array($datumBis, $studiensemester_kurzbz, $datumBis);
+
+ // get active students
+ $qry = "
+ SELECT
+ DISTINCT ON (student.student_uid) ? AS datum_bismeldung,
+ prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_benutzer benutzer
+ JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=true
+ AND status.studiensemester_kurzbz = ?
+ /* inscription date before date of first student status */
+ AND (
+ SELECT datum
+ FROM public.tbl_prestudentstatus
+ WHERE prestudent_id = prestudent.prestudent_id
+ AND studiensemester_kurzbz = status.studiensemester_kurzbz
+ AND status_kurzbz = 'Student'
+ ORDER BY datum, insertamum, ext_id
+ LIMIT 1
+ ) < ?
+ AND stg.melderelevant
+ AND prestudent.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
+
+ /**
+ * Gets Bismeldedate from Studiensemester.
+ * @param studiensemester_kurzbz string
+ */
+ private function _getBisdateFromSemester($studiensemester_kurzbz)
+ {
+ $semesterYear = substr($studiensemester_kurzbz, 2, 6);
+ $semesterType = substr($studiensemester_kurzbz, 0, 2);
+
+ if ($semesterType == 'SS')
+ {
+ return date_format(date_create(($semesterYear - 1)."-11-15"), 'Y-m-d');
+ }
+
+ if ($semesterType == 'WS')
+ {
+ return date_format(date_create($semesterYear."-04-15"), 'Y-m-d');
+ }
+ }
}
diff --git a/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php b/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php
index 53bd59826..c04cd664c 100644
--- a/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php
+++ b/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php
@@ -20,7 +20,7 @@ class NationNichtOesterreichAberGemeinde extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getNationNichtOesterreichAberGemeinde(
+ $personRes = $this->getNationNichtOesterreichAberGemeinde(
$studiengang_kz,
null,
$exkludierte_studiengang_kz
@@ -46,4 +46,49 @@ class NationNichtOesterreichAberGemeinde extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Nation is not Austria, but address has austrian Gemeinde.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @return success with prestudents or error
+ */
+ public function getNationNichtOesterreichAberGemeinde($studiengang_kz = null, $person_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "SELECT DISTINCT tbl_person.person_id, adr.gemeinde, adr.adresse_id
+ FROM
+ public.tbl_adresse adr
+ JOIN public.tbl_prestudent USING(person_id)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ JOIN public.tbl_benutzer ON(uid=student_uid)
+ JOIN public.tbl_studiengang stg ON tbl_prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ adr.nation!='A'
+ AND tbl_benutzer.aktiv
+ AND gemeinde NOT IN ('Münster')
+ AND EXISTS(SELECT 1 FROM bis.tbl_gemeinde WHERE name = adr.gemeinde)";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND tbl_person.person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php b/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php
index d9515a777..316e81072 100644
--- a/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php
+++ b/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php
@@ -21,7 +21,7 @@ class OrgformStgUngleichOrgformPrestudent extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getOrgformStgUngleichOrgformPrestudent(
+ $prestudentRes = $this->getOrgformStgUngleichOrgformPrestudent(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -57,4 +57,74 @@ class OrgformStgUngleichOrgformPrestudent extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Orgform of a Studiengang in Studienplan should be the same as orgform of student.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getOrgformStgUngleichOrgformPrestudent(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id, status.studiensemester_kurzbz,
+ studiengang.orgform_kurzbz AS stg_orgform, status.orgform_kurzbz AS student_orgform,
+ prestudent.studiengang_kz AS student_studiengang, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_studiengang studiengang
+ JOIN public.tbl_student student USING(studiengang_kz)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ LEFT JOIN lehre.tbl_studienplan stpl USING (studienplan_id)
+ WHERE
+ benutzer.aktiv = true
+ AND status.status_kurzbz IN ('Student', 'Unterbrecher', 'Abbrecher', 'Diplomand', 'Absolvent')
+ AND studiengang.studiengang_kz < 10000
+ AND status.studiensemester_kurzbz = ?
+ AND NOT (status.orgform_kurzbz IS NULL AND studiengang.mischform = FALSE)
+ AND NOT EXISTS(
+ SELECT 1
+ FROM
+ lehre.tbl_studienplan
+ JOIN
+ lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE
+ tbl_studienplan.studienplan_id = stpl.studienplan_id
+ AND tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
+ AND tbl_studienplan.orgform_kurzbz = status.orgform_kurzbz)";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND studiengang.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ $qry .= "
+ ORDER BY student_uid";
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/PlausiChecker.php b/application/libraries/issues/plausichecks/PlausiChecker.php
index 0d8da4007..086a44cc4 100644
--- a/application/libraries/issues/plausichecks/PlausiChecker.php
+++ b/application/libraries/issues/plausichecks/PlausiChecker.php
@@ -7,6 +7,7 @@ abstract class PlausiChecker
{
protected $_ci; // code igniter instance
protected $_config; // configuration parameters for this plausicheck
+ protected $_db; // database for queries
public function __construct($configurationParams = null)
{
@@ -15,8 +16,8 @@ abstract class PlausiChecker
// set configuration
$this->_config = $configurationParams;
- // load libraries
- $this->_ci->load->library('issues/PlausicheckLib'); // load plausicheck library
+ // get database for queries
+ $this->_db = new DB_Model();
}
/**
diff --git a/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php b/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php
index e68d840d9..a4c3e2a4b 100644
--- a/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php
+++ b/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php
@@ -21,7 +21,7 @@ class PrestudentMischformOhneOrgform extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getPrestudentMischformOhneOrgform(
+ $prestudentRes = $this->getPrestudentMischformOhneOrgform(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -55,4 +55,55 @@ class PrestudentMischformOhneOrgform extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students in "mixed" Studiengang should have Orgform.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getPrestudentMischformOhneOrgform(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status.status_kurzbz IN ('Bewerber', 'Student')
+ AND stg.mischform
+ AND (status.orgform_kurzbz='' OR status.orgform_kurzbz IS NULL)
+ AND status.studiensemester_kurzbz=?";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php
index 61737cc4d..94bea2f35 100644
--- a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php
+++ b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php
@@ -20,7 +20,7 @@ class StgPrestudentUngleichStgStudent extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudent($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getStgPrestudentUngleichStgStudent($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,48 @@ class StgPrestudentUngleichStgStudent extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Studiengang should be the same for prestudent and student.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStgPrestudentUngleichStgStudent($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz prestudent_stg_oe_kurzbz, student_stg.oe_kurzbz student_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ JOIN public.tbl_studiengang student_stg ON stud.studiengang_kz = student_stg.studiengang_kz
+ WHERE
+ stud.studiengang_kz != pre.studiengang_kz";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php
index 0c9ce9300..fc0f52f23 100644
--- a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php
+++ b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php
@@ -20,7 +20,7 @@ class StgPrestudentUngleichStgStudienplan extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudienplan($studiengang_kz, null, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getStgPrestudentUngleichStgStudienplan($studiengang_kz, null, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,62 @@ class StgPrestudentUngleichStgStudienplan extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Studiengang should be the same for prestudent and studienplan.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param studienordnung_id int if check is to be executed only for a certain studienordnung_id
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStgPrestudentUngleichStgStudienplan(
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $studienordnung_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON (ps.prestudent_id) ps.person_id, ps.prestudent_id, stordnung.studienordnung_id,
+ stplan.bezeichnung AS studienplan, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent ps
+ JOIN public.tbl_prestudentstatus USING(prestudent_id)
+ JOIN lehre.tbl_studienplan stplan USING(studienplan_id)
+ JOIN lehre.tbl_studienordnung stordnung USING(studienordnung_id)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_studiengang stg ON ps.studiengang_kz = stg.studiengang_kz
+ WHERE
+ ps.studiengang_kz<>stordnung.studiengang_kz
+ AND stg.melderelevant";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND ps.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($studienordnung_id))
+ {
+ $qry .= " AND stordnung.studienordnung_id = ?";
+ $params[] = $studienordnung_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php b/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php
index 47ca1fa2a..87bb51d7e 100644
--- a/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php
+++ b/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php
@@ -20,7 +20,7 @@ class StudentstatusNachAbbrecher extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStudentstatusNachAbbrecher($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getStudentstatusNachAbbrecher($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,48 @@ class StudentstatusNachAbbrecher extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * There shouldn't be any status after Abbrecher status.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStudentstatusNachAbbrecher($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ prestatus.status_kurzbz = 'Abbrecher'
+ AND get_rolle_prestudent(prestudent.prestudent_id, prestatus.studiensemester_kurzbz) <> 'Abbrecher'";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StudienplanUngueltig.php b/application/libraries/issues/plausichecks/StudienplanUngueltig.php
index 22924abd8..9a306278e 100644
--- a/application/libraries/issues/plausichecks/StudienplanUngueltig.php
+++ b/application/libraries/issues/plausichecks/StudienplanUngueltig.php
@@ -21,7 +21,7 @@ class StudienplanUngueltig extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStudienplanUngueltig(
+ $prestudentRes = $this->getStudienplanUngueltig(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -56,4 +56,71 @@ class StudienplanUngueltig extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Studienplan should be valid in current Ausbildungssemester of prestudent.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStudienplanUngueltig(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT pre.person_id, pre.prestudent_id,
+ tbl_studienplan.bezeichnung AS studienplan,
+ status.status_kurzbz,
+ status.studiensemester_kurzbz,
+ status.ausbildungssemester,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ JOIN lehre.tbl_studienplan USING(studienplan_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ status_kurzbz in('Student', 'Interessent','Bewerber','Aufgenommener')
+ AND NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ lehre.tbl_studienplan_semester
+ WHERE
+ studienplan_id=status.studienplan_id
+ AND tbl_studienplan_semester.semester = status.ausbildungssemester
+ AND tbl_studienplan_semester.studiensemester_kurzbz = status.studiensemester_kurzbz
+ )
+ AND status.studiensemester_kurzbz=?
+ AND pre.bismelden
+ AND stg.melderelevant";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND tbl_prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0007.php b/application/libraries/issues/resolvers/CORE_INOUT_0007.php
index 2d9c7a3f4..31ca79ffb 100644
--- a/application/libraries/issues/resolvers/CORE_INOUT_0007.php
+++ b/application/libraries/issues/resolvers/CORE_INOUT_0007.php
@@ -17,10 +17,10 @@ class CORE_INOUT_0007 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/IncomingHeimatNationOesterreich');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getIncomingHeimatNationOesterreich($params['studiensemester_kurzbz'], null, $params['issue_person_id']);
+ $checkRes = $this->_ci->incomingheimatnationoesterreich->getIncomingHeimatNationOesterreich($params['studiensemester_kurzbz'], null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0008.php b/application/libraries/issues/resolvers/CORE_INOUT_0008.php
index 30bbefdf1..4fa090c6a 100644
--- a/application/libraries/issues/resolvers/CORE_INOUT_0008.php
+++ b/application/libraries/issues/resolvers/CORE_INOUT_0008.php
@@ -14,10 +14,10 @@ class CORE_INOUT_0008 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/IncomingOhneIoDatensatz');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getIncomingOhneIoDatensatz(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->incomingohneiodatensatz->getIncomingOhneIoDatensatz(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0009.php b/application/libraries/issues/resolvers/CORE_INOUT_0009.php
index b56344042..c739d71c3 100644
--- a/application/libraries/issues/resolvers/CORE_INOUT_0009.php
+++ b/application/libraries/issues/resolvers/CORE_INOUT_0009.php
@@ -14,10 +14,10 @@ class CORE_INOUT_0009 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/IncomingOrGsFoerderrelevant');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getIncomingOrGsFoerderrelevant(null, null, $params['prestudent_id']);
+ $checkRes = $this->_ci->incomingorgsfoerderrelevant->getIncomingOrGsFoerderrelevant(null, null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0001.php b/application/libraries/issues/resolvers/CORE_PERSON_0001.php
index cf1560171..d0ac0d3ed 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0001.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0001.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0001 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/GbDatumWeitZurueck');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getGbDatumWeitZurueck(null, null, $params['issue_person_id']);
+ $checkRes = $this->_ci->gbdatumweitzurueck->getGbDatumWeitZurueck(null, null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0002.php b/application/libraries/issues/resolvers/CORE_PERSON_0002.php
index 969b2a5b0..608dcf0ce 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0002.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0002.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0002 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/NationNichtOesterreichAberGemeinde');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getNationNichtOesterreichAberGemeinde(null, $params['issue_person_id']);
+ $checkRes = $this->_ci->nationnichtoesterreichabergemeinde->getNationNichtOesterreichAberGemeinde(null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0003.php b/application/libraries/issues/resolvers/CORE_PERSON_0003.php
index 8f53d159c..23a81b660 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0003.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0003.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0003 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/FalscheAnzahlHeimatadressen');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getFalscheAnzahlHeimatadressen(null, null, $params['issue_person_id']);
+ $checkRes = $this->_ci->falscheanzahlheimatadressen->getFalscheAnzahlHeimatadressen(null, null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0004.php b/application/libraries/issues/resolvers/CORE_PERSON_0004.php
index 9ce9b7b8a..ae3a855ec 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0004.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0004.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0004 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/FalscheAnzahlZustelladressen');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getFalscheAnzahlZustelladressen(null, null, $params['issue_person_id']);
+ $checkRes = $this->_ci->falscheanzahlzustelladressen->getFalscheAnzahlZustelladressen(null, null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0001.php b/application/libraries/issues/resolvers/CORE_STG_0001.php
index aee3fe0d2..09c34be74 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0001.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0001.php
@@ -14,10 +14,10 @@ class CORE_STG_0001 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StgPrestudentUngleichStgStudent');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudent(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->stgprestudentungleichstgstudent->getStgPrestudentUngleichStgStudent(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0002.php b/application/libraries/issues/resolvers/CORE_STG_0002.php
index dd0e293d4..999958042 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0002.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0002.php
@@ -17,10 +17,10 @@ class CORE_STG_0002 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/OrgformStgUngleichOrgformPrestudent');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getOrgformStgUngleichOrgformPrestudent($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->orgformstgungleichorgformprestudent->getOrgformStgUngleichOrgformPrestudent($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0003.php b/application/libraries/issues/resolvers/CORE_STG_0003.php
index 9559cdfb5..22d6399be 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0003.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0003.php
@@ -17,10 +17,10 @@ class CORE_STG_0003 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/PrestudentMischformOhneOrgform');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getPrestudentMischformOhneOrgform($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->prestudentmischformohneorgform->getPrestudentMischformOhneOrgform($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0004.php b/application/libraries/issues/resolvers/CORE_STG_0004.php
index 6ecc80863..2eedfc7fe 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0004.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0004.php
@@ -17,10 +17,10 @@ class CORE_STG_0004 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StgPrestudentUngleichStgStudienplan');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudienplan(null, $params['prestudent_id'], $params['studienordnung_id']);
+ $checkRes = $this->_ci->stgprestudentungleichstgstudienplan->getStgPrestudentUngleichStgStudienplan(null, $params['prestudent_id'], $params['studienordnung_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php
index 1f9dea34d..c74cd38fb 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0001 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AbbrecherAktiv');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAbbrecherAktiv(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->abbrecheraktiv->getAbbrecherAktiv(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php
index 95da215c1..36827684c 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0002 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StudentstatusNachAbbrecher');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStudentstatusNachAbbrecher(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->studentstatusnachabbrecher->getStudentstatusNachAbbrecher(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php
index 12e7a8da6..f3b150d8d 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php
@@ -17,10 +17,14 @@ class CORE_STUDENTSTATUS_0003 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAusbildungssemPrestudentUngleichAusbildungssemStatus($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->ausbildungssemprestudentungleichausbildungssemstatus->getAusbildungssemPrestudentUngleichAusbildungssemStatus(
+ $params['studiensemester_kurzbz'],
+ null,
+ $params['prestudent_id']
+ );
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php
index 5cd8b7027..cbce2b01e 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php
@@ -17,10 +17,14 @@ class CORE_STUDENTSTATUS_0004 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/InaktiverStudentAktiverStatus');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getInaktiverStudentAktiverStatus($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->inaktiverstudentaktiverstatus->getInaktiverStudentAktiverStatus(
+ $params['studiensemester_kurzbz'],
+ null,
+ $params['prestudent_id']
+ );
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php
index 420021289..f5e265194 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0005 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/InskriptionVorLetzerBismeldung');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getInskriptionVorLetzerBismeldung($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->inskriptionvorletzerbismeldung->getInskriptionVorLetzerBismeldung($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php
index 64e28ddc8..94658ec9c 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0006 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/DatumStudiensemesterFalscheReihenfolge');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getDatumStudiensemesterFalscheReihenfolge(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->datumstudiensemesterfalschereihenfolge->getDatumStudiensemesterFalscheReihenfolge(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php
index 68523b53b..3a2575e53 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0007 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AktiverStudentOhneStatus');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAktiverStudentOhneStatus(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->aktiverstudentohnestatus->getAktiverStudentOhneStatus(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php
index 940cb9b4c..53bfd72a6 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0008 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StudienplanUngueltig');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStudienplanUngueltig($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->studienplanungueltig->getStudienplanUngueltig($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php
index c55e4a9cc..816b7e933 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0009 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/FalscheAnzahlAbschlusspruefungen');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getFalscheAnzahlAbschlusspruefungen(null, null, $params['prestudent_id']);
+ $checkRes = $this->_ci->falscheanzahlabschlusspruefungen->getFalscheAnzahlAbschlusspruefungen(null, null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php
index 8da8e9c1d..b31fb872a 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0010 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/DatumAbschlusspruefungFehlt');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getDatumAbschlusspruefungFehlt(null, null, $params['abschlusspruefung_id']);
+ $checkRes = $this->_ci->datumabschlusspruefungfehlt->getDatumAbschlusspruefungFehlt(null, null, $params['abschlusspruefung_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php
index 6568d0b3e..9dff0181e 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0011 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/DatumSponsionFehlt');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getDatumSponsionFehlt(null, null, $params['abschlusspruefung_id']);
+ $checkRes = $this->_ci->datumsponsionfehlt->getDatumSponsionFehlt(null, null, $params['abschlusspruefung_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php
index d331ef6a2..7fe5dbde4 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php
@@ -17,10 +17,14 @@ class CORE_STUDENTSTATUS_0012 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/BewerberNichtZumRtAngetreten');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getBewerberNichtZumRtAngetreten($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->bewerbernichtzumrtangetreten->getBewerberNichtZumRtAngetreten(
+ $params['studiensemester_kurzbz'],
+ null,
+ $params['prestudent_id']
+ );
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php
index e57b0aea0..86e8b75b1 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0013 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AktSemesterNull');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAktSemesterNull($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->aktsemesternull->getAktSemesterNull($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php
index b58736f66..4b542cf0a 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0014 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AbschlussstatusFehlt');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAbschlussstatusFehlt(null, null, $params['prestudent_id']);
+ $checkRes = $this->_ci->abschlussstatusfehlt->getAbschlussstatusFehlt(null, null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
index aafee1124..37e42ec0a 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0015 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AktiverStudentstatusOhneKontobuchung');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAktiverStudentstatusOhneKontobuchung(
+ $checkRes = $this->_ci->aktiverstudentstatusohnekontobuchung->getAktiverStudentstatusOhneKontobuchung(
$params['studiensemester_kurzbz'],
null,
$params['prestudent_id']
diff --git a/application/models/education/Anrechnung_model.php b/application/models/education/Anrechnung_model.php
index ebecf4118..cbfdb6607 100644
--- a/application/models/education/Anrechnung_model.php
+++ b/application/models/education/Anrechnung_model.php
@@ -30,7 +30,7 @@ class Anrechnung_model extends DB_Model
*/
public function createAnrechnungsantrag(
$prestudent_id, $studiensemester_kurzbz, $lehrveranstaltung_id,
- $begruendung_id, $dms_id, $anmerkung_student = null
+ $begruendung_id, $dms_id, $anmerkung_student = null, $begruendung_ects = null, $begruendung_lvinhalt = null
)
{
// Start DB transaction
@@ -44,6 +44,8 @@ class Anrechnung_model extends DB_Model
'dms_id' => $dms_id,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'anmerkung_student' => $anmerkung_student,
+ 'begruendung_ects' => $begruendung_ects,
+ 'begruendung_lvinhalt' => $begruendung_lvinhalt,
'insertvon' => $this->_uid
));
diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php
index bb9b94c92..45a4eac7c 100644
--- a/application/models/organisation/Studiensemester_model.php
+++ b/application/models/organisation/Studiensemester_model.php
@@ -204,4 +204,14 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query, array($studiensemester_kurzbz));
}
+
+ public function getAktAndFutureSemester()
+ {
+ $query = 'SELECT studiensemester_kurzbz
+ FROM public.tbl_studiensemester
+ WHERE start >= NOW() OR (start <= NOW() AND ende >= NOW())
+ ORDER BY start';
+
+ return $this->execQuery($query);
+ }
}
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 8875fd4c5..ed21082e2 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -326,10 +326,12 @@ class Person_model extends DB_Model
SELECT p2.person_id
FROM tbl_person p1
+ JOIN tbl_prestudent ps ON p1.person_id = ps.person_id
INNER JOIN (
- SELECT vorname, nachname, gebdatum, person_id
- FROM tbl_person
- ) p2
+ SELECT vorname, nachname, gebdatum, person.person_id
+ FROM tbl_person person
+ JOIN tbl_prestudent sps ON person.person_id = sps.person_id
+ ) p2
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 = ?)";
diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php
index 87b9d53cc..0970b6edd 100644
--- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php
+++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php
@@ -92,85 +92,93 @@ $this->load->view(
-
+
- p->t('person', 'studentIn')); ?>
+ p->t('person', 'studentIn')); ?>
vorname . ' ' . $antragData->nachname; ?>
- p->t('person', 'personenkennzeichen'); ?>
+ p->t('person', 'personenkennzeichen'); ?>
matrikelnr ?>
- p->t('lehre', 'studiensemester')); ?>
+ p->t('lehre', 'studiensemester')); ?>
studiensemester_kurzbz ?>
- p->t('lehre', 'studiengang')); ?>
+ p->t('lehre', 'studiengang')); ?>
stg_bezeichnung ?>
- p->t('lehre', 'lehrveranstaltung'); ?>
+ p->t('lehre', 'lehrveranstaltung'); ?>
lv_bezeichnung ?>
-
-
-
-
-
-
-
-
-
- p->t('lehre', 'ects'); ?>
- ects ?>
-
-
- p->t('anrechnung', 'bisherAngerechneteEcts'); ?>
+ p->t('lehre', 'lektorInnen'); ?>
+
+ lektoren) - 1 ?>
+ lektoren as $key => $lektor): ?>
+ vorname . ' ' . $lektor->nachname;
+ echo $key === $len ? '' : ', ' ?>
+
+
+
+
+ p->t('lehre', 'ects'); ?>
+ ects ?>
+
+
+
+ p->t('anrechnung', 'bisherAngerechneteEcts'); ?>
-
+
Total: sumEctsSchulisch + $antragData->sumEctsBeruflich, 1) ?>
[Schulisch: sumEctsSchulisch ?> /
Beruflich: sumEctsBeruflich ?> ]
-
+
+
+
+
+
+
+
+
+
- p->t('lehre', 'lektorInnen'); ?>
-
- lektoren) - 1 ?>
- lektoren as $key => $lektor): ?>
- vorname . ' ' . $lektor->nachname;
- echo $key === $len ? '' : ', ' ?>
-
-
-
-
- p->t('global', 'zgv')); ?>
- zgv ?>
+ p->t('global', 'zgv')); ?>
+ zgv ?>
p->t('anrechnung', 'herkunftDerKenntnisse'); ?>
- anmerkung ?>
+ anmerkung ?>
p->t('anrechnung', 'nachweisdokumente'); ?>
-
+
dokumentname) ?>
p->t('global', 'begruendung'); ?>
- begruendung ?>
+ begruendung ?>
+
+
+ p->t('anrechnung', 'begruendungEctsLabel'); ?>
+ begruendung_ects ?>
+
+
+ p->t('anrechnung', 'begruendungLvinhaltLabel'); ?>
+ begruendung_lvinhalt ?>
diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php
index cfd9058f5..18fd66a67 100644
--- a/application/views/lehre/anrechnung/requestAnrechnung.php
+++ b/application/views/lehre/anrechnung/requestAnrechnung.php
@@ -1,5 +1,8 @@
load->view(
'templates/FHC-Header',
@@ -197,6 +200,46 @@ $this->load->view(
+
+
+
+
+
+ p->t('anrechnung', 'begruendungEcts'); ?>
+
+
+
+
+
+
+ p->t('ui', 'maxZeichen'); ?> :
+
+
+
+
+
+
+
+
+
+ p->t('anrechnung', 'begruendungLvinhalt'); ?>
+
+
+
+
+
+
+ / p->t('ui', 'maxZeichen'); ?> :
+ p->t('ui', 'fehlendeMinZeichen'); ?> :
+
+
+
+
@@ -242,8 +285,8 @@ $this->load->view(
- p->t('ui', 'maxZeichen'); ?> :
+ maxlength="" required>anmerkung; ?>
+ p->t('ui', 'maxZeichen'); ?> :
diff --git a/application/views/lehre/anrechnung/requestAnrechnungImportant.php b/application/views/lehre/anrechnung/requestAnrechnungImportant.php
index d157b22c2..8cacb9c26 100644
--- a/application/views/lehre/anrechnung/requestAnrechnungImportant.php
+++ b/application/views/lehre/anrechnung/requestAnrechnungImportant.php
@@ -16,6 +16,23 @@
+
+
+
+
+
+ p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungBody'); ?>
+
+
+
diff --git a/application/views/lehre/anrechnung/reviewAnrechnungDetail.php b/application/views/lehre/anrechnung/reviewAnrechnungDetail.php
index 4c67c939a..08d23d8c4 100644
--- a/application/views/lehre/anrechnung/reviewAnrechnungDetail.php
+++ b/application/views/lehre/anrechnung/reviewAnrechnungDetail.php
@@ -84,49 +84,50 @@ $this->load->view(
-
+
- p->t('person', 'studentIn')); ?>
+ p->t('person', 'studentIn')); ?>
vorname . ' ' . $antragData->nachname; ?>
- p->t('person', 'personenkennzeichen'); ?>
+ p->t('person', 'personenkennzeichen'); ?>
matrikelnr ?>
- p->t('lehre', 'studiensemester')); ?>
+ p->t('lehre', 'studiensemester')); ?>
studiensemester_kurzbz ?>
- p->t('lehre', 'studiengang')); ?>
+ p->t('lehre', 'studiengang')); ?>
stg_bezeichnung ?>
- p->t('lehre', 'lehrveranstaltung'); ?>
+ p->t('lehre', 'lehrveranstaltung'); ?>
lv_bezeichnung ?>
-
-
-
-
-
-
-
- p->t('lehre', 'ects'); ?>
- ects ?>
-
-
- p->t('lehre', 'lektorInnen'); ?>
-
+
+ p->t('lehre', 'ects'); ?>
+ ects ?>
+
+
+ p->t('lehre', 'lektorInnen'); ?>
+
lektoren) - 1 ?>
lektoren as $key => $lektor): ?>
vorname . ' ' . $lektor->nachname;
echo $key === $len ? '' : ', ' ?>
-
-
+
+
+
+
+
+
+
+
+
p->t('global', 'zgv')); ?>
zgv ?>
@@ -142,6 +143,14 @@ $this->load->view(
target="_blank">dokumentname) ?>
+
+ p->t('anrechnung', 'begruendungEctsLabel'); ?>
+ begruendung_ects ?>
+
+
+ p->t('anrechnung', 'begruendungLvinhaltLabel'); ?>
+ begruendung_lvinhalt ?>
+
diff --git a/application/views/lehre/anrechnung/reviewAnrechnungInfo.php b/application/views/lehre/anrechnung/reviewAnrechnungInfo.php
index 4b899d4dc..7e658ffcb 100644
--- a/application/views/lehre/anrechnung/reviewAnrechnungInfo.php
+++ b/application/views/lehre/anrechnung/reviewAnrechnungInfo.php
@@ -15,6 +15,22 @@
+
+
+
+
+ p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungBody'); ?>
+
+
+
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
index 635fd9da9..0414ddbf6 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
@@ -25,6 +25,7 @@ SELECT
lv_oe_kurzbz,
lektor,
stunden,
+ stundensatz,
betrag,
vertrag_id,
vertrag_stunden,
@@ -149,6 +150,7 @@ FROM
END AS "lv_oe_kurzbz",
(person.nachname || \' \' || person.vorname) AS "lektor",
TRUNC(lema.semesterstunden, 1) AS "stunden",
+ lema.stundensatz,
TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag",
vertrag_id,
vertragsstunden AS "vertrag_stunden",
@@ -270,6 +272,7 @@ FROM
END AS "lv_oe_kurzbz",
(nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
+ pb.stundensatz,
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
vertrag_id,
vertragsstunden AS "vertrag_stunden",
@@ -325,6 +328,7 @@ $filterWidgetArray = array(
ucfirst($this->p->t('lehre', 'organisationseinheit')),
ucfirst($this->p->t('lehre', 'lektor')),
ucfirst($this->p->t('ui', 'stunden')),
+ ucfirst($this->p->t('ui', 'stundensatz')),
ucfirst($this->p->t('ui', 'betrag')),
ucfirst($this->p->t('ui', 'vertrag')). '-ID',
ucfirst($this->p->t('ui', 'vertrag')). '-'. ucfirst($this->p->t('ui', 'stunden')),
@@ -399,6 +403,8 @@ $filterWidgetArray = array(
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
+ stundensatz: {visible: true, align:"right", formatter: form_formatNulltoStringNumber,
+ headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator},
betrag: {align:"right", formatter: form_formatNulltoStringNumber,
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money", bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"}},
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftragData.php b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
index c272c392c..5a2ad98bd 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
@@ -435,7 +435,7 @@ $filterWidgetArray = array(
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
- stundensatz: {visible: false, align:"right", formatter: form_formatNulltoStringNumber,
+ stundensatz: {visible: true, align:"right", formatter: form_formatNulltoStringNumber,
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator},
betrag: {align:"right", formatter: form_formatNulltoStringNumber,
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php
index d09f0f41e..2307ea87e 100644
--- a/application/views/system/infocenter/infocenterAbgewiesenData.php
+++ b/application/views/system/infocenter/infocenterAbgewiesenData.php
@@ -1,6 +1,7 @@
config->load('infocenter');
+ $APP = '\'infocenter\'';
$ABGEWIESENEN_STATUS = '\'Abgewiesener\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
@@ -17,6 +18,8 @@ $query = '
p.nachname AS "Nachname",
so.studiengangkurzbzlang as "Studiengang",
pss.insertamum AS "AbgewiesenAm",
+ pl.zeitpunkt AS "LockDate",
+ pl.lockuser AS "LockUser",
(
SELECT l.zeitpunkt
FROM system.tbl_log l
@@ -54,6 +57,15 @@ $query = '
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
+ LEFT JOIN (
+ SELECT tpl.person_id,
+ tpl.zeitpunkt,
+ sp.nachname AS lockuser
+ FROM system.tbl_person_lock tpl
+ JOIN public.tbl_benutzer sb USING (uid)
+ JOIN public.tbl_person sp ON sb.person_id = sp.person_id
+ WHERE tpl.app = '.$APP.'
+ ) pl USING(person_id)
WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .'
AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND (sg.typ IN ('. $STUDIENGANG_TYP .')
@@ -70,6 +82,7 @@ $query = '
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
'checkboxes' => 'PersonId',
+ 'additionalColumns' => array('Details'),
'columnsAliases' => array(
'PersonId',
'PreStudentID',
@@ -77,11 +90,23 @@ $query = '
ucfirst($this->p->t('person', 'nachname')),
ucfirst($this->p->t('lehre', 'studiengang')),
ucfirst($this->p->t('infocenter', 'abgewiesenam')),
+ ucfirst($this->p->t('global', 'sperrdatum')),
+ ucfirst($this->p->t('global', 'gesperrtVon')),
ucfirst($this->p->t('global', 'nachricht')),
ucfirst($this->p->t('infocenter', 'kaution'))
),
'formatRow' => function($datasetRaw) {
+ /* NOTE: Dont use $this here for PHP Version compatibility */
+ $datasetRaw->{'Details'} = sprintf(
+ 'Details ',
+ site_url('system/infocenter/InfoCenter/showDetails'),
+ $datasetRaw->{'PersonId'},
+ 'abgewiesen',
+ (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
+ (isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
+ );
+
if ($datasetRaw->{'Nachricht'} === null)
{
$datasetRaw->{'Nachricht'} = 'Nein';
@@ -103,10 +128,29 @@ $query = '
{
$datasetRaw->{'Kaution'} = 'Offen';
}
+
+ if ($datasetRaw->{'LockDate'} == null)
+ {
+ $datasetRaw->{'LockDate'} = '-';
+ }
+
+ if ($datasetRaw->{'LockUser'} == null)
+ {
+ $datasetRaw->{'LockUser'} = '-';
+ }
$datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i');
return $datasetRaw;
+ },
+
+ 'markRow' => function($datasetRaw) {
+
+ if ($datasetRaw->LockDate != null)
+ {
+ return FilterWidget::DEFAULT_MARK_ROW_CLASS;
+ }
}
+
);
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
diff --git a/application/views/system/infocenter/infocenterAufgenommen.php b/application/views/system/infocenter/infocenterAufgenommen.php
new file mode 100644
index 000000000..6d65c0f7c
--- /dev/null
+++ b/application/views/system/infocenter/infocenterAufgenommen.php
@@ -0,0 +1,50 @@
+load->view(
+ 'templates/FHC-Header',
+ array(
+ 'title' => 'Info Center',
+ 'jquery3' => true,
+ 'jqueryui1' => true,
+ 'jquerycheckboxes1' => true,
+ 'bootstrap3' => true,
+ 'fontawesome4' => true,
+ 'sbadmintemplate3' => true,
+ 'tablesorter2' => true,
+ 'ajaxlib' => true,
+ 'filterwidget' => true,
+ 'navigationwidget' => true,
+ 'dialoglib' => true,
+ 'phrases' => array(
+ 'person' => array('vorname', 'nachname'),
+ 'global' => array('mailAnXversandt'),
+ 'ui' => array('bitteEintragWaehlen')
+ ),
+ 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
+ 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
+ )
+ );
+?>
+
+
+
+
+ widgetlib->widget('NavigationWidget'); ?>
+
+
+
+
+
+ load->view('system/infocenter/infocenterAufgenommenData.php'); ?>
+
+
+
+
+
+
+load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/system/infocenter/infocenterAufgenommenData.php b/application/views/system/infocenter/infocenterAufgenommenData.php
new file mode 100644
index 000000000..720d118e3
--- /dev/null
+++ b/application/views/system/infocenter/infocenterAufgenommenData.php
@@ -0,0 +1,95 @@
+config->load('infocenter');
+ $AUFGENOMMENER_STATUS = '\'Aufgenommener\'';
+ $REJECTED_STATUS = '\'Abgewiesener\'';
+ $STUDIENGANG_TYP = '\'l\'';
+ $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
+ $LOGDATA_NAME = '\'Message sent\'';
+ $LOGDATA_VON = '\'online\'';
+
+$query = '
+ SELECT
+ p.person_id AS "PersonId",
+ p.vorname AS "Vorname",
+ p.nachname AS "Nachname",
+ (
+ SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ) || UPPER(sg.kurzbz)), \', \')
+ FROM public.tbl_prestudentstatus pss
+ JOIN public.tbl_prestudent ps USING(prestudent_id)
+ JOIN public.tbl_studiengang sg USING(studiengang_kz)
+ WHERE
+ pss.status_kurzbz = '. $AUFGENOMMENER_STATUS .'
+ AND ps.person_id = p.person_id
+ AND sg.typ IN ('.$STUDIENGANG_TYP.')
+ AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
+ AND NOT EXISTS (
+ SELECT 1
+ FROM tbl_prestudentstatus spss
+ WHERE spss.prestudent_id = pss.prestudent_id
+ AND spss.status_kurzbz = '. $REJECTED_STATUS .'
+ AND spss.studiensemester_kurzbz IN (
+ SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >
+ (SELECT start FROM public.tbl_studiensemester sss WHERE studiensemester_kurzbz = '. $STUDIENSEMESTER .'))
+ )
+ LIMIT 1
+ ) AS "Studiengang"
+ FROM
+ public.tbl_person p
+ WHERE
+ EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudent sps
+ JOIN public.tbl_studiengang ssg USING(studiengang_kz)
+ WHERE sps.person_id = p.person_id
+ AND ssg.typ IN (' . $STUDIENGANG_TYP . ')
+ AND ' . $AUFGENOMMENER_STATUS . ' = (
+ SELECT spss.status_kurzbz
+ FROM public.tbl_prestudentstatus spss
+ WHERE spss.prestudent_id = sps.prestudent_id
+ ORDER BY spss.datum DESC, spss.insertamum DESC, spss.ext_id DESC
+ LIMIT 1
+ )
+ AND EXISTS (
+ SELECT 1
+ FROM tbl_prestudentstatus spss
+ WHERE spss.prestudent_id = sps.prestudent_id
+ AND spss.status_kurzbz = ' . $AUFGENOMMENER_STATUS . '
+ AND spss.studiensemester_kurzbz = ' . $STUDIENSEMESTER . '
+ )
+ )
+
+ ';
+
+ $filterWidgetArray = array(
+ 'query' => $query,
+ 'app' => InfoCenter::APP,
+ 'datasetName' => 'aufgenommen',
+ 'filter_id' => $this->input->get('filter_id'),
+ 'requiredPermissions' => 'infocenter',
+ 'datasetRepresentation' => 'tablesorter',
+ 'checkboxes' => 'PersonId',
+ 'additionalColumns' => array('Details'),
+ 'columnsAliases' => array(
+ 'PersonId',
+ ucfirst($this->p->t('person', 'vorname')) ,
+ ucfirst($this->p->t('person', 'nachname')),
+ ucfirst($this->p->t('lehre', 'studiengang'))
+ ),
+
+ 'formatRow' => function($datasetRaw)
+ {
+ $datasetRaw->{'Details'} = sprintf(
+ 'Details ',
+ site_url('system/infocenter/InfoCenter/showDetails'),
+ $datasetRaw->{'PersonId'},
+ 'aufgenommen',
+ (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
+ (isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
+ );
+ return $datasetRaw;
+ }
+ );
+
+ echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
+?>
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php
index 401e34099..c61bb3cd2 100644
--- a/application/views/system/infocenter/infocenterDetails.php
+++ b/application/views/system/infocenter/infocenterDetails.php
@@ -57,10 +57,11 @@
if (isset($lockedby)):
echo $this->p->t('global', 'wirdBearbeitetVon').': ';
echo $lockedby;
- if ($origin_page == 'index'):
+ if (in_array($origin_page, array('index', 'abgewiesen'))):
$unlockpath = 'unlockPerson/'.$stammdaten->person_id;
$unlockpath .= '?fhc_controller_id='.$fhc_controller_id;
$unlockpath .= '&filter_id='.$prev_filter_id;
+ $unlockpath .= '&origin_page='.$origin_page;
?>
diff --git a/application/views/system/issues/issuesKonfiguration.php b/application/views/system/issues/issuesKonfiguration.php
index 8b07157d2..dbd62a26a 100644
--- a/application/views/system/issues/issuesKonfiguration.php
+++ b/application/views/system/issues/issuesKonfiguration.php
@@ -82,6 +82,9 @@ $this->load->view(
p->t('fehlermonitoring', 'konfigurationswertZuweisen') ?>
+
+ p->t('fehlermonitoring', 'konfigurationswertLoeschen') ?>
+
diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php
index 73d0e6fca..8337b7c36 100644
--- a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php
+++ b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php
@@ -98,9 +98,9 @@ if($stsem=='')
//$note = $_REQUEST["note"];
-if(!$rechte->isBerechtigt('admin',0) &&
- !$rechte->isBerechtigt('admin',$lv_obj->studiengang_kz) &&
- !$rechte->isBerechtigt('lehre',$lv_obj->studiengang_kz))
+if(!$rechte->isBerechtigt('admin', 0) &&
+ !$rechte->isBerechtigt('admin', $lv_obj->studiengang_kz) &&
+ !$rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz))
{
$qry = "SELECT lehreinheit_id FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
@@ -117,11 +117,11 @@ if(!$rechte->isBerechtigt('admin',0) &&
}
}
-function savenote($db,$lvid, $student_uid, $note, $punkte=null)
+function savenote($db, $lvid, $student_uid, $note, $punkte = null)
{
global $stsem, $user, $p, $noten_anmerkung;
$jetzt = date("Y-m-d H:i:s");
- $punkte = str_replace(',','.',$punkte);
+ $punkte = str_replace(',', '.', $punkte);
//Ermitteln ob der Student diesem Kurs zugeteilt ist
$qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung WHERE uid=".$db->db_add_param($student_uid)." AND lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER);
if($result = $db->db_query($qry))
@@ -207,13 +207,12 @@ if (isset($_REQUEST["submit"]))
$note = $_REQUEST["note"];
$punkte = (isset($_REQUEST["punkte"])?$_REQUEST["punkte"]:'');
- $response = savenote($db,$lvid, $student_uid, $note, $punkte);
+ $response = savenote($db, $lvid, $student_uid, $note, $punkte);
echo $response;
}
else
{
-
- foreach ($_POST as $row=>$val)
+ foreach ($_POST as $row => $val)
{
if(mb_strstr(mb_strtolower($row), 'matrikelnr_'))
{
@@ -232,7 +231,7 @@ if (isset($_REQUEST["submit"]))
$response.="\nNote oder Punkte fehlen";
continue;
}
- $punkte=str_replace(',','.', $punkte);
+ $punkte=str_replace(',', '.', $punkte);
//check ob statt Matrikelnummer nicht bereits student_uid (Moodle Grade Import) vorliegt..
$student = new student();
@@ -241,7 +240,7 @@ if (isset($_REQUEST["submit"]))
//UID ermitteln
if(!$student_uid = $student->getUidFromMatrikelnummer($matrikelnummer))
{
- $response.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht',array($matrikelnummer));
+ $response.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht', array($matrikelnummer));
continue;
}
}
@@ -268,7 +267,7 @@ if (isset($_REQUEST["submit"]))
}
}
- $val=savenote($db,$lvid, $student_uid, $note, $punkte);
+ $val=savenote($db, $lvid, $student_uid, $note, $punkte);
if($val!='neu' && $val!='update' && $val!='update_f')
$response.=$val;
}
diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
index ddf3c54e4..6dce2b6ae 100644
--- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
+++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
@@ -20,33 +20,33 @@
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
* Manuela Thamer
*/
-require_once ('../../../../config/cis.config.inc.php');
-require_once ('../../../../config/global.config.inc.php');
-require_once ('../../../../include/functions.inc.php');
-require_once ('../../../../include/lehrveranstaltung.class.php');
-require_once ('../../../../include/studiengang.class.php');
-require_once ('../../../../include/studiensemester.class.php');
-require_once ('../../../../include/lehreinheit.class.php');
-require_once ('../../../../include/benutzerberechtigung.class.php');
-require_once ('../../../../include/uebung.class.php');
-require_once ('../../../../include/beispiel.class.php');
-require_once ('../../../../include/studentnote.class.php');
-require_once ('../../../../include/datum.class.php');
-require_once ('../../../../include/legesamtnote.class.php');
-require_once ('../../../../include/lvgesamtnote.class.php');
-require_once ('../../../../include/zeugnisnote.class.php');
-require_once ('../../../../include/pruefung.class.php');
-require_once ('../../../../include/person.class.php');
-require_once ('../../../../include/benutzer.class.php');
-require_once ('../../../../include/mitarbeiter.class.php');
-require_once ('../../../../include/mail.class.php');
-require_once ('../../../../include/phrasen.class.php');
-require_once ('../../../../include/note.class.php');
-require_once ('../../../../include/notenschluessel.class.php');
-require_once ('../../../../include/studienplan.class.php');
-require_once ('../../../../include/addon.class.php');
-require_once ('../../../../include/mobilitaet.class.php');
-require_once ('../../../../include/student.class.php');
+require_once('../../../../config/cis.config.inc.php');
+require_once('../../../../config/global.config.inc.php');
+require_once('../../../../include/functions.inc.php');
+require_once('../../../../include/lehrveranstaltung.class.php');
+require_once('../../../../include/studiengang.class.php');
+require_once('../../../../include/studiensemester.class.php');
+require_once('../../../../include/lehreinheit.class.php');
+require_once('../../../../include/benutzerberechtigung.class.php');
+require_once('../../../../include/uebung.class.php');
+require_once('../../../../include/beispiel.class.php');
+require_once('../../../../include/studentnote.class.php');
+require_once('../../../../include/datum.class.php');
+require_once('../../../../include/legesamtnote.class.php');
+require_once('../../../../include/lvgesamtnote.class.php');
+require_once('../../../../include/zeugnisnote.class.php');
+require_once('../../../../include/pruefung.class.php');
+require_once('../../../../include/person.class.php');
+require_once('../../../../include/benutzer.class.php');
+require_once('../../../../include/mitarbeiter.class.php');
+require_once('../../../../include/mail.class.php');
+require_once('../../../../include/phrasen.class.php');
+require_once('../../../../include/note.class.php');
+require_once('../../../../include/notenschluessel.class.php');
+require_once('../../../../include/studienplan.class.php');
+require_once('../../../../include/addon.class.php');
+require_once('../../../../include/mobilitaet.class.php');
+require_once('../../../../include/student.class.php');
$summe_stud = 0;
$summe_t2 = 0;
@@ -104,6 +104,152 @@ $sprachen->getAll(true);
$errormsg = '';
+// eingetragene lv-gesamtnoten freigeben
+if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
+{
+ // Passwort pruefen
+ if (checkldapuser($user, $_REQUEST['passwort']))
+ {
+ $jetzt = date("Y-m-d H:i:s");
+ $neuenoten = 0;
+
+ $studlist = "
+ ";
+
+ // entweder personenbezogene Daten einbinden
+ if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
+ {
+ $studlist .= "
+ " . $p->t('global/personenkz') . "
+ " . $p->t('global/studiengang') . "
+ " . $p->t('global/nachname') . "
+ " . $p->t('global/vorname') . "
+ ";
+
+ if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
+ {
+ $studlist .= "" . $p->t('benotungstool/punkte') . " \n";
+ }
+ $studlist .= "" . $p->t('benotungstool/note') . " \n";
+
+ $studlist .= "" . $p->t('benotungstool/bearbeitetvon') . " \n";
+ }
+ // oder anonymisiert nur die UIDs einbinden
+ else
+ {
+ $studlist .= "
+ " . $p->t('global/uid') . " \n
+ ";
+ }
+
+ // studentenquery
+ $qry_stud = "SELECT
+ DISTINCT uid, vorname, nachname, matrikelnr, kurzbzlang
+ FROM
+ campus.vw_student_lehrveranstaltung
+ JOIN campus.vw_student USING(uid)
+ JOIN public.tbl_studiengang ON campus.vw_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
+ WHERE
+ studiensemester_kurzbz = " . $db->db_add_param($stsem) . "
+ AND lehrveranstaltung_id = " . $db->db_add_param($lvid, FHC_INTEGER) . "
+ ORDER BY nachname, vorname ";
+ if ($result_stud = $db->db_query($qry_stud))
+ {
+ $i = 1;
+ while ($row_stud = $db->db_fetch_object($result_stud))
+ {
+ $lvgesamtnote = new lvgesamtnote();
+ if ($lvgesamtnote->load($lvid, $row_stud->uid, $stsem))
+ {
+ if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum)
+ {
+ $lvgesamtnote->freigabedatum = $jetzt;
+ $lvgesamtnote->freigabevon_uid = $user;
+ $lvgesamtnote->save();
+
+ if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
+ {
+ $studlist .= "" . trim($row_stud->matrikelnr) . " ";
+ $studlist .= "" . trim($row_stud->kurzbzlang) . " ";
+ $studlist .= "" . trim($row_stud->nachname) . " ";
+ $studlist .= "" . trim($row_stud->vorname) . " ";
+
+ if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
+ {
+ $studlist .= "";
+ if ($lvgesamtnote->punkte != '')
+ $studlist .= trim(number_format($lvgesamtnote->punkte, 2));
+ $studlist .= " \n";
+ }
+ $studlist .= "" . $noten_array[trim($lvgesamtnote->note)]['bezeichnung_mehrsprachig'][$sprache] . " ";
+
+ $studlist .= "" . $lvgesamtnote->mitarbeiter_uid;
+ if ($lvgesamtnote->updatevon != '')
+ $studlist .= " (" . $lvgesamtnote->updatevon . ")";
+ $studlist .= " \n";
+ }
+ else
+ {
+ $studlist .= "" . trim($row_stud->uid) . " \n";
+ }
+
+ $neuenoten ++;
+ }
+ }
+ }
+ }
+
+ $studlist .= "
";
+
+ // mail an assistentin und den user selber verschicken
+ if ($neuenoten > 0)
+ {
+ $lv = new lehrveranstaltung($lvid);
+ $sg = new studiengang($lv->studiengang_kz);
+ $lektor_adresse = $user . "@" . DOMAIN;
+ $adressen = $sg->email . ", " . $user . "@" . DOMAIN;
+
+ $studienplan = new studienplan();
+ $studienplan->getStudienplanLehrveranstaltung($lvid, $stsem);
+ $studienplan_bezeichnung = '';
+ foreach ($studienplan->result as $row)
+ $studienplan_bezeichnung .= $row->bezeichnung . ' ';
+
+ $mit = new mitarbeiter();
+ $mit->load($user);
+ $name = $mit->anrede.' '.$mit->vorname.' '.$mit->nachname.' ('.$mit->kurzbz.')';
+
+ $betreff = 'Notenfreigabe ' . $lv->bezeichnung . ' ' . $lv->orgform_kurzbz . ' - ' . $studienplan_bezeichnung;
+ $mail = new mail($adressen, 'vilesci@' . DOMAIN, $betreff, '');
+ $htmlcontent = "
+
+ $name hat neue Noten für die Lehrveranstaltung\n\n
+ " . $sg->kuerzel . ' ' . $lv->semester . '.Semester
+ ' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . "
+ eingetragen.\n
+ Die Noten können jetzt ins Zeugnis übernommen werden.\n";
+
+ $htmlcontent .= $studlist;
+
+ $htmlcontent.= "
+ Anzahl der Noten:" . $neuenoten . "
+ " . $p->t('abgabetool/mailVerschicktAn') . ": " . $adressen . "
+ ";
+ $mail->setHTMLContent($htmlcontent);
+ $mail->setReplyTo($lektor_adresse);
+ $mail->send();
+ }
+
+ http_response_code(303);
+ header('Location: ' . $_SERVER['REQUEST_URI']);
+ exit;
+ }
+ else
+ {
+ $errormsg = $p->t('gesamtnote/passwortFalsch');
+ }
+}
+
echo '
@@ -145,8 +291,8 @@ echo '
position:absolute;
top:100px;
left:300px;
- width:400px;
- height:200px;
+ min-width:450px;
+ min-height:200px;
background-color:#cccccc;
visibility:hidden;
border-style:solid;
@@ -190,11 +336,14 @@ foreach ($noten_obj->result as $row)
$noten_array[$row->note]['lehre'] = $row->lehre;
$noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar;
$noten_array[$row->note]['anmerkung'] = $row->anmerkung;
- foreach ($sprachen->result AS $s)
+ foreach ($sprachen->result as $s)
$noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache];
}
?>
+
+ const CIS_GESAMTNOTE_PUNKTE = ;
+
function getOffset(pos)
{
var x,y;
@@ -376,7 +525,7 @@ foreach ($noten_obj->result as $row)
var datum_test = datum.split(".");
if (datum_test[0].length != 2 || datum_test[1].length != 2 || datum_test[2].length!=4
|| isNaN(datum_test[2]) || datum_test[1]>12 || datum_test[1]<1 || datum_test[0]>31 || datum_test[0]<1)
- alert("Invalid Date Format: DD.MM.YYYY");
+ alert("Das Datum entspricht nicht dem Format TT.MM.JJJJ!");
else
{
var anlegendiv = document.getElementById("nachpruefung_div");
@@ -402,6 +551,7 @@ foreach ($noten_obj->result as $row)
url += '&typ='+typ;
url += '&'+ts;
+
$.ajax({
type:"GET",
url: url,
@@ -593,8 +743,8 @@ foreach ($noten_obj->result as $row)
str += "X ";
var anlegendiv = document.getElementById("nachpruefung_div");
var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
- str += 't('benotungstool/importAnweisung');?>: ';
- str += ' ';
+ str += 't('benotungstool/importAnweisung');?>:
';
+ str += ' ';
str += " ' onclick='saveGradeBulk();'>";
str += " ";
anlegendiv.innerHTML = str;
@@ -602,6 +752,25 @@ foreach ($noten_obj->result as $row)
$('#noteimporttextarea').focus();
}
+ // ****
+ // * Oeffnet ein Fenster fuer den Import von Noten für die Nachprüfung aus dem Excel
+ // ****
+ function GradeImportNachp(termin)
+ {
+ var str = "";
+ anlegendiv.innerHTML = str;
+ anlegendiv.style.visibility = "visible";
+ $('#noteimporttextareaNachp').focus();
+ }
+
// Speichert die Noten ueber den Import
function saveGradeBulk()
{
@@ -633,33 +802,48 @@ foreach ($noten_obj->result as $row)
}
?>
+ var linenumber = 0;
for(row in rows)
{
- zeile = rows[row].split(" ");
-
-
-
- if (zeile[0]!='' && zeile[1]!='')
+ linenumber++;
+ if( rows[row] == '' )
{
- gradedata['matrikelnr_'+i]=zeile[0];
-
-
- i++;
+ //skip empty lines
+ continue;
}
+ zeile = rows[row].split(" ");
+
+ if( zeile.length < 2 )
+ {
+ alertMsg = alertMsg + "Zeile " + linenumber + ': '
+ + 'Zu wenig Paramter - 2 erforderlich. '
+ + 'Die Zeile wurde uebersprungen.' + "\n\n";
+ continue;
+ }
+
+ if (CIS_GESAMTNOTE_PUNKTE == false)
+ {
+ // check for valid grades
+ if (validGrades.indexOf(zeile[1]) === -1)
+ {
+ alertMsg = alertMsg + "Zeile " + linenumber + ': '
+ + "Die Note "+zeile[1]+" ist nicht zulaessig. "
+ + "Die Zeile wurde uebersprungen. \n\n";
+ continue;
+ }
+ }
+
+ gradedata['matrikelnr_'+i]=zeile[0];
+ if (CIS_GESAMTNOTE_PUNKTE)
+ {
+ gradedata['punkte_'+i]= zeile[1];
+ }
+ else
+ {
+ gradedata['note_'+i]= zeile[1];
+ }
+
+ i++;
}
if (alertMsg != "")
@@ -698,6 +882,142 @@ foreach ($noten_obj->result as $row)
}
}
+ // Speichert die Noten der Nachprüfung ueber den Import
+ function saveGradeBulkNachp(typ)
+ {
+ data = $('#noteimporttextareaNachp').val();
+ closeDiv();
+
+ //Reihen ermitteln
+ var rows = data.split("\n");
+ var i=0;
+ var params='';
+ alertMsg = '';
+
+ var gradedata = {};
+ var validGrades = '';
+
+ result as $row_note)
+ {
+ if ($row_note->lehre && $row_note->aktiv)
+ $gradesArray[] = '"' . $row_note->anmerkung . '"';
+ }
+ // Output JS variable with valid grades
+ echo 'var validGrades = [' . implode(',', $gradesArray) . '];';
+ }
+ ?>
+
+ var linenumber = 0;
+ for(row in rows)
+ {
+ linenumber++;
+ if( rows[row] == '' )
+ {
+ //skip empty lines
+ continue;
+ }
+ zeile = rows[row].split(" ");
+
+ if( zeile.length < 3 )
+ {
+ alertMsg = alertMsg + "Zeile " + linenumber + ': '
+ + 'Zu wenig Paramter - 3 erforderlich. '
+ + 'Die Zeile wurde uebersprungen.' + "\n\n";
+ continue;
+ }
+
+ if( zeile[1] == '' && zeile[2] == '' )
+ {
+ // ignore lines just copied from excel
+ continue;
+ }
+
+ if( zeile[2] == '' )
+ {
+ alertMsg = alertMsg + "Zeile " + linenumber + ': '
+ + "Die Note oder Punkte fehlen. "
+ + "Die Zeile wurde uebersprungen. \n\n";
+ continue;
+ }
+
+ if (CIS_GESAMTNOTE_PUNKTE == false)
+ {
+ // check for valid grades
+ if (validGrades.indexOf(zeile[2]) === -1)
+ {
+ alertMsg = alertMsg + "Zeile " + linenumber + ': '
+ + "Die Note "+zeile[2]+" ist nicht zulaessig. "
+ + "Die Zeile wurde uebersprungen. \n\n";
+ continue;
+ }
+ }
+
+ if( !zeile[1].match(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/) )
+ {
+ alertMsg = alertMsg + "Zeile " + linenumber + ': '
+ + "Das Datum "+zeile[1]+" fehlt oder ist nicht zulaessig. "
+ + "Die Zeile wurde uebersprungen. \n\n";
+ continue;
+ }
+
+ gradedata['student_uid_'+i]=zeile[0];
+ gradedata['datumNachp_'+i]=zeile[1];
+ if (CIS_GESAMTNOTE_PUNKTE)
+ {
+ gradedata['punkte_'+i]= zeile[2];
+ }
+ else
+ {
+ gradedata['note_'+i]= zeile[2];
+ }
+ i++;
+ }
+
+
+ if (alertMsg != "")
+ alert(alertMsg);
+
+ if (i>0)
+ {
+
+ var jetzt = new Date();
+ var ts = jetzt.getTime();
+ var url= '';
+ url += '&sammel=1';
+ url += '&typ=' + typ;
+ url += '&submit=1&'+ts;
+ $.ajax({
+ type:"POST",
+ url: url,
+ data: gradedata,
+ success:function(result)
+ {
+ var resp = result;
+ if (resp!='')
+ {
+ alert(resp);
+ }
+ window.location.reload();
+ },
+ error:function(result)
+ {
+ alert('Request Nachprüfung fehlgeschlagen');
+ }
+ });
+
+ }
+ else
+ {
+ alert('t('benotungstool/hilfeImport');?>');
+ }
+ }
+
//-->
@@ -803,149 +1123,6 @@ if (defined('CIS_ANWESENHEITSLISTE_NOTENLISTE_ANZEIGEN') && CIS_ANWESENHEITSLIST
{
$hrefpath = "../notenliste.xls.php?stg=$stg_obj->studiengang_kz&lvid=$lvid&stsem=$stsem";
echo "" . $p->t('benotungstool/notenlisteImport') . " ";
-
-}
-
-// eingetragene lv-gesamtnoten freigeben
-if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
-{
- // Passwort pruefen
- if (checkldapuser($user, $_REQUEST['passwort']))
- {
- $jetzt = date("Y-m-d H:i:s");
- $neuenoten = 0;
-
- $studlist = "
- ";
-
- // entweder personenbezogene Daten einbinden
- if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
- {
- $studlist .= "
- " . $p->t('global/personenkz') . "
- " . $p->t('global/studiengang') . "
- " . $p->t('global/nachname') . "
- " . $p->t('global/vorname') . "
- ";
-
- if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
- {
- $studlist .= "" . $p->t('benotungstool/punkte') . " \n";
- }
- $studlist .= "" . $p->t('benotungstool/note') . " \n";
-
- $studlist .= "" . $p->t('benotungstool/bearbeitetvon') . " \n";
- }
- // oder anonymisiert nur die UIDs einbinden
- else
- {
- $studlist .= "
- " . $p->t('global/uid') . " \n
- ";
- }
-
- // studentenquery
- $qry_stud = "SELECT
- DISTINCT uid, vorname, nachname, matrikelnr, kurzbzlang
- FROM
- campus.vw_student_lehrveranstaltung
- JOIN campus.vw_student USING(uid)
- JOIN public.tbl_studiengang ON campus.vw_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
- WHERE
- studiensemester_kurzbz = " . $db->db_add_param($stsem) . "
- AND lehrveranstaltung_id = " . $db->db_add_param($lvid, FHC_INTEGER) . "
- ORDER BY nachname, vorname ";
- if ($result_stud = $db->db_query($qry_stud))
- {
- $i = 1;
- while ($row_stud = $db->db_fetch_object($result_stud))
- {
- $lvgesamtnote = new lvgesamtnote();
- if ($lvgesamtnote->load($lvid, $row_stud->uid, $stsem))
- {
- if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum)
- {
- $lvgesamtnote->freigabedatum = $jetzt;
- $lvgesamtnote->freigabevon_uid = $user;
- $lvgesamtnote->save();
-
- if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
- {
- $studlist .= "" . trim($row_stud->matrikelnr) . " ";
- $studlist .= "" . trim($row_stud->kurzbzlang) . " ";
- $studlist .= "" . trim($row_stud->nachname) . " ";
- $studlist .= "" . trim($row_stud->vorname) . " ";
-
- if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
- {
- $studlist .= "";
- if ($lvgesamtnote->punkte != '')
- $studlist .= trim(number_format($lvgesamtnote->punkte, 2));
- $studlist .= " \n";
- }
- $studlist .= "" . $noten_array[trim($lvgesamtnote->note)]['bezeichnung_mehrsprachig'][$sprache] . " ";
-
- $studlist .= "" . $lvgesamtnote->mitarbeiter_uid;
- if ($lvgesamtnote->updatevon != '')
- $studlist .= " (" . $lvgesamtnote->updatevon . ")";
- $studlist .= " \n";
- }
- else
- {
- $studlist .= "" . trim($row_stud->uid) . " \n";
- }
-
- $neuenoten ++;
- }
- }
- }
- }
-
- $studlist .= "
";
-
- // mail an assistentin und den user selber verschicken
- if ($neuenoten > 0)
- {
- $lv = new lehrveranstaltung($lvid);
- $sg = new studiengang($lv->studiengang_kz);
- $lektor_adresse = $user . "@" . DOMAIN;
- $adressen = $sg->email . ", " . $user . "@" . DOMAIN;
-
- $studienplan = new studienplan();
- $studienplan->getStudienplanLehrveranstaltung($lvid, $stsem);
- $studienplan_bezeichnung = '';
- foreach ($studienplan->result as $row)
- $studienplan_bezeichnung .= $row->bezeichnung . ' ';
-
- $mit = new mitarbeiter();
- $mit->load($user);
- $name = $mit->anrede.' '.$mit->vorname.' '.$mit->nachname.' ('.$mit->kurzbz.')';
-
- $betreff = 'Notenfreigabe ' . $lv->bezeichnung . ' ' . $lv->orgform_kurzbz . ' - ' . $studienplan_bezeichnung;
- $mail = new mail($adressen, 'no-reply@' . DOMAIN, $betreff, '');
- $htmlcontent = "
-
- $name hat neue Noten für die Lehrveranstaltung\n\n
- " . $sg->kuerzel . ' ' . $lv->semester . '.Semester
- ' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . "
- eingetragen.\n
- Die Noten können jetzt ins Zeugnis übernommen werden.\n";
-
- $htmlcontent .= $studlist;
-
- $htmlcontent.= "
- Anzahl der Noten: " . $neuenoten . "
- " . $p->t('abgabetool/mailVerschicktAn') . ": " . $adressen . "
- ";
- $mail->setHTMLContent($htmlcontent);
- $mail->setReplyTo($lektor_adresse);
- $mail->send();
- }
- }
- else
- {
- $errormsg = $p->t('gesamtnote/passwortFalsch');
- }
}
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
@@ -1052,11 +1229,15 @@ $htmlstring .= "" . $p->t('benotungstool/punkte') . ' / ' . $p->t('benotungs
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
- $htmlstring .= " " . $p->t('benotungstool/nachpruefung') . " ";
+ $htmlstring .= " " . $p->t('benotungstool/nachpruefung') . "
+
+ ";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
- $htmlstring .= "" . $p->t('benotungstool/nachpruefung2') . " ";
+ $htmlstring .= " " . $p->t('benotungstool/nachpruefung2') . "
+
+ ";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
@@ -1184,7 +1365,7 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
foreach ($addon_obj->result as $row)
{
if (file_exists('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php'))
- include ('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php');
+ include('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php');
}
}
}
@@ -1193,7 +1374,6 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
foreach ($grades as $uid => $data)
//Ausgabe Array
{
-
$htmlstring .= '
' . $db->convert_html_chars($uid) . '
@@ -1325,7 +1505,6 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
// Punkte
if (CIS_GESAMTNOTE_PUNKTE)
{
-
$htmlstring .= '
checkformatDatum($datum, 'Y-m-d', true) OR die('Invalid date format');
-}
-else
- die('Fehlerhafte Parameteruebergabe');
-
-//Laden der Lehrveranstaltung
-$lv_obj = new lehrveranstaltung();
-if(!$lv_obj->load($lvid))
- die($lv_obj->errormsg);
-
-//Studiengang laden
-$stg_obj = new studiengang($lv_obj->studiengang_kz);
+ $lehreinheit_id_pr = $_GET['lehreinheit_id_pr'];
if(isset($_GET['stsem']))
$stsem = $_GET['stsem'];
else
$stsem = '';
-
-$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
-$uid = (isset($_GET['uid'])?$_GET['uid']:'');
-
//Studiensemester laden
$stsem_obj = new studiensemester();
if($stsem=='')
$stsem = $stsem_obj->getaktorNext();
-$student_uid = $_REQUEST["student_uid"];
-
-$note = $_REQUEST["note"];
-if(isset($_REQUEST['punkte']))
- $punkte = $_REQUEST['punkte'];
-else
- $punkte = '';
-
-$punkte = str_replace(',','.',$punkte);
-
-if($punkte!='')
+//Notenanmerkung für Eintragung von nichtnumerischen Noten wie en (entschuldigt), ue(unentschuldigt)
+$noten_anmerkung = array();
+$noten_arr = array();
+$note_obj = new note();
+$note_obj->getAll();
+foreach($note_obj->result as $row)
{
- // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
- $notenschluessel = new notenschluessel();
- $note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
- if($note_pruef!=$note)
- {
- $note = $note_pruef;
- $note_dirty=true;
- }
+ $noten_anmerkung[$row->anmerkung] = $row->note;
+ $noten_arr[$row->note] = $row;
}
if(!isset($_GET['typ']))
@@ -122,22 +97,177 @@ if(!isset($_GET['typ']))
}
else
{
- if(in_array($_GET['typ'],array('Termin2','Termin3')))
+ if(in_array($_GET['typ'], array('Termin2', 'Termin3')))
$typ=$_GET['typ'];
else
die('Typ ist ungueltig');
}
-if($note=='')
- $note = 9;
-
-$old_note = $note;
-
-// lvgesamtnote für studenten speichern
-if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
+if (isset($_REQUEST['sammel']) && $_REQUEST["sammel"] == 1)
+{
+ $errorMatrnr = '';
+ $errorDatum = '';
+ $errorNachp = '';
+
+ foreach ($_POST as $row => $val)
+ {
+ if(mb_strstr(mb_strtolower($row), 'student_uid_'))
+ {
+ $id=mb_substr($row, mb_strlen('student_uid_'));
+
+ $student_uid = $_POST['student_uid_'.$id];
+ $note = null;
+ $punkte = null;
+ $datum = null;
+ $response = '';
+ if(isset($_POST['note_'.$id]))
+ $note = $_POST['note_'.$id];
+ elseif(isset($_POST['punkte_'.$id]))
+ $punkte = $_POST['punkte_'.$id];
+ else
+ {
+ $response.="\nNote oder Punkte fehlen";
+ continue;
+ }
+ $punkte=str_replace(',', '.', $punkte);
+ if($punkte!='')
+ {
+ // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
+ $notenschluessel = new notenschluessel();
+ $note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
+ if($note_pruef!=$note)
+ {
+ $note = $note_pruef;
+ $note_dirty=true;
+ }
+ }
+
+ $datum = $_POST['datumNachp_'.$id];
+ //check Datumsformat
+ $checkedDatum = $datum;
+ $datum_obj = new datum();
+ if(!$datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true))
+ {
+ $errorDatum .="\n".$p->t('benotungstool/datumsformatUnzulaessig', array($checkedDatum));
+ continue;
+ }
+
+ //check ob Matrikelnummer anstelle der student_uid übergeben wurde
+ $student = new student();
+ if (!$student->checkIfValidStudentUID($student_uid))
+ {
+ $checkedMatrnr = $student_uid;
+ //UID ermitteln
+ if(!$student_uid = $student->getUidFromMatrikelnummer($student_uid))
+ {
+ $errorMatrnr.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht', array($checkedMatrnr));
+ continue;
+ }
+ }
+
+ //check ob eine Note vorhanden ist oder (intern) angerechnet wurde
+ $lvnote = new lvgesamtnote();
+ if (!$lvnote->load($lvid, $student_uid, $stsem))
+ {
+ $errorNachp.="\n".$p->t('benotungstool/NachpruefungNichtZulaessig', array($student_uid));
+ continue;
+ }
+
+ $lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem);
+
+ if(isset($_POST['student_uid_'.$id]) && (isset($_POST['note_'.$id]) || isset($_POST['punkte_'.$id])) && isset($_POST['datumNachp_'.$id]))
+ {
+ if(!is_numeric($note))
+ {
+ if(isset($noten_anmerkung[$note]))
+ $note = $noten_anmerkung[$note];
+ }
+ $response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte);
+ if($response!='neu' && $response!='update' && $response!='update_f')
+ {
+ echo $response;
+ }
+ }
+ else
+ {
+ echo "\n fehlende oder fehlerhafte Inputparameter";
+ }
+ }
+ }
+ echo $errorMatrnr . $errorDatum . $errorNachp;
+}
+else
+{
+ // Einzelupdate
+
+ if(isset($_GET['datum']))
+ {
+ $datum = $_GET['datum'];
+ $datum_obj = new datum();
+ $datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true) or die($p->t('benotungstool/datumsformatUnzulaessig', array($checkedDatum)));
+ }
+ $student_uid = $_REQUEST["student_uid"];
+
+ $note = $_REQUEST["note"];
+ if(isset($_REQUEST['punkte']))
+ $punkte = $_REQUEST['punkte'];
+ else
+ $punkte = '';
+
+ $punkte = str_replace(',', '.', $punkte);
+
+ if($punkte!='')
+ {
+ // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
+ $notenschluessel = new notenschluessel();
+ $note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
+ if($note_pruef!=$note)
+ {
+ $note = $note_pruef;
+ $note_dirty=true;
+ }
+ }
+
+ if($note=='')
+ $note = 9;
+
+ $old_note = $note;
+
+ //Laden der Lehrveranstaltung
+ $lv_obj = new lehrveranstaltung();
+ if(!$lv_obj->load($lvid))
+ die($lv_obj->errormsg);
+
+ //Studiengang laden
+ $stg_obj = new studiengang($lv_obj->studiengang_kz);
+
+ $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
+ $uid = (isset($_GET['uid'])?$_GET['uid']:'');
+
+ // lvgesamtnote für studenten speichern
+ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != ''))
+ {
+ // Die Pruefung muss einer Lehreinheit zugeordnet werden
+ // deshalb wird hier versucht eine passende Lehreinheit zu ermitteln.
+ $lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem);
+
+ $response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note);
+ echo $response;
+ }
+ else
+ echo "Fehler beim Eintragen der Prüfungen";
+}
+
+/**
+ * Berechnet Lehreinheit auf Basis LV-Daten
+ * @param string $db Datenbankvariable
+ * @param string $student_uid student_uid
+ * @param int $lvid Lehrveranstaltungsid
+ * @param string $stsem Studiensemester im Format 'WSYYYY'
+ * @return String LehreinheitId
+ */
+function getLehreinheit($db, $lvid, $student_uid, $stsem)
{
- // Die Pruefung muss einer Lehreinheit zugeordnet werden
- // deshalb wird hier versucht eine passende Lehreinheit zu ermitteln.
$le_arr = array();
$qry_stud = "SELECT lehreinheit_id, lehrform_kurzbz
FROM
@@ -158,104 +288,159 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
}
}
- if (!in_array($lehreinheit_id,$le_arr))
+ //if (!in_array($lehreinheit_id,$le_arr))
$lehreinheit_id = $le_arr[0];
+ return $lehreinheit_id;
+}
+
+/**
+ * Prüfung speichern
+ */
+function savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte = null)
+{
$jetzt = date("Y-m-d H:i:s");
+ global $user; //, $note, $punkte, $datum;
- $pr = new Pruefung();
-
- // Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt
- // und dort die Zeugnisnote gespeichert
- if($pr->getPruefungen($student_uid, "Termin1", $lvid, $stsem))
+ if ($typ == "Termin2")
{
- if ($pr->result)
+ $pr = new Pruefung();
+ // Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt
+ // und dort die Zeugnisnote gespeichert
+ if($pr->getPruefungen($student_uid, "Termin1", $lvid, $stsem))
{
- $termin1 = 1;
- }
- else
- {
- $lvnote = new lvgesamtnote();
- if ($lvnote->load($lvid, $student_uid, $stsem))
+ if ($pr->result)
{
- $pr_note = $lvnote->note;
- $pr_punkte = $lvnote->punkte;
- $benotungsdatum = $lvnote->benotungsdatum;
+ $termin1 = 1;
}
else
{
- $pr_note = 9;
- $pr_punkte = '';
- $benotungsdatum = $jetzt;
+ $lvnote = new lvgesamtnote();
+ if ($lvnote->load($lvid, $student_uid, $stsem))
+ {
+ $pr_note = $lvnote->note;
+ $pr_punkte = $lvnote->punkte;
+ $benotungsdatum = $lvnote->benotungsdatum;
+ }
+ else
+ {
+ $pr_note = 9;
+ $pr_punkte = '';
+ $benotungsdatum = $jetzt;
+ }
+
+ $pr_1 = new Pruefung();
+ $pr_1->lehreinheit_id = $lehreinheit_id;
+ $pr_1->student_uid = $student_uid;
+ $pr_1->mitarbeiter_uid = $user;
+ $pr_1->note = $pr_note;
+ $pr_1->punkte = $pr_punkte;
+ $pr_1->pruefungstyp_kurzbz = "Termin1";
+ $pr_1->datum = $benotungsdatum;
+ $pr_1->anmerkung = "";
+ $pr_1->insertamum = $jetzt;
+ $pr_1->insertvon = $user;
+ $pr_1->updateamum = null;
+ $pr_1->updatevon = null;
+ $pr_1->ext_id = null;
+ $pr_1->new = true;
+ $pr_1->save();
+ $response = "neu T1";
}
- $pr_1 = new Pruefung();
- $pr_1->lehreinheit_id = $lehreinheit_id;
- $pr_1->student_uid = $student_uid;
- $pr_1->mitarbeiter_uid = $user;
- $pr_1->note = $pr_note;
- $pr_1->punkte = $pr_punkte;
- $pr_1->pruefungstyp_kurzbz = "Termin1";
- $pr_1->datum = $benotungsdatum;
- $pr_1->anmerkung = "";
- $pr_1->insertamum = $jetzt;
- $pr_1->insertvon = $user;
- $pr_1->updateamum = null;
- $pr_1->updatevon = null;
- $pr_1->ext_id = null;
- $pr_1->new = true;
- $pr_1->save();
+ $prTermin2 = new Pruefung();
+ $pr_2 = new Pruefung();
+
+ // Die Pruefung wird als Termin2 eingetragen
+ if ($prTermin2->getPruefungen($student_uid, 'Termin2', $lvid, $stsem))
+ {
+ if ($prTermin2->result)
+ {
+ $pr_2->load($prTermin2->result[0]->pruefung_id);
+ $pr_2->new = null;
+ $pr_2->updateamum = $jetzt;
+ $pr_2->updatevon = $user;
+ $old_note = $pr_2->note;
+ $pr_2->note = $note;
+ $pr_2->punkte = $punkte;
+ $pr_2->datum = $datum;
+ $pr_2->anmerkung = "";
+ $response = "update T2";
+ }
+ else
+ {
+ $pr_2->lehreinheit_id = $lehreinheit_id;
+ $pr_2->student_uid = $student_uid;
+ $pr_2->mitarbeiter_uid = $user;
+ $pr_2->note = $note;
+ $pr_2->punkte = $punkte;
+ $pr_2->pruefungstyp_kurzbz = $typ;
+ $pr_2->datum = $datum;
+ $pr_2->anmerkung = "";
+ $pr_2->insertamum = $jetzt;
+ $pr_2->insertvon = $user;
+ $pr_2->updateamum = null;
+ $pr_2->updatevon = null;
+ $pr_2->ext_id = null;
+ $pr_2->new = true;
+ $old_note = -1;
+ $response = "new T2";
+ }
+ $pr_2->save();
+ }
}
}
-
-
- $prTermin2 = new Pruefung();
- $pr_2 = new Pruefung();
-
- // Die Pruefung wird als Termin2 eingetragen
- if ($prTermin2->getPruefungen($student_uid, $typ, $lvid, $stsem))
+ elseif ($typ == "Termin3")
{
- if ($prTermin2->result)
+ $prTermin3 = new Pruefung();
+ $pr_3 = new Pruefung();
+
+ if ($prTermin3->getPruefungen($student_uid, 'Termin3', $lvid, $stsem))
{
- $pr_2->load($prTermin2->result[0]->pruefung_id);
- $pr_2->new = null;
- $pr_2->updateamum = $jetzt;
- $pr_2->updatevon = $user;
- $old_note = $pr_2->note;
- $pr_2->note = $note;
- $pr_2->punkte = $punkte;
- $pr_2->datum = $datum;
- $pr_2->anmerkung = "";
+ if ($prTermin3->result)
+ {
+ $pr_3->load($prTermin3->result[0]->pruefung_id);
+ $pr_3->new = null;
+ $pr_3->updateamum = $jetzt;
+ $pr_3->updatevon = $user;
+ $old_note = $pr_3->note;
+ $pr_3->note = $note;
+ $pr_3->punkte = $punkte;
+ $pr_3->datum = $datum;
+ $pr_3->anmerkung = "";
+ $response = "update T3";
+ }
+ else
+ {
+ $pr_3->lehreinheit_id = $lehreinheit_id;
+ $pr_3->student_uid = $student_uid;
+ $pr_3->mitarbeiter_uid = $user;
+ $pr_3->note = $note;
+ $pr_3->punkte = $punkte;
+ $pr_3->pruefungstyp_kurzbz = $typ;
+ $pr_3->datum = $datum;
+ $pr_3->anmerkung = "";
+ $pr_3->insertamum = $jetzt;
+ $pr_3->insertvon = $user;
+ $pr_3->updateamum = null;
+ $pr_3->updatevon = null;
+ $pr_3->ext_id = null;
+ $pr_3->new = true;
+ $old_note = -1;
+ $response = "new T3";
+ }
+ $pr_3->save();
}
- else
- {
- $pr_2->lehreinheit_id = $lehreinheit_id;
- $pr_2->student_uid = $student_uid;
- $pr_2->mitarbeiter_uid = $user;
- $pr_2->note = $note;
- $pr_2->punkte = $punkte;
- $pr_2->pruefungstyp_kurzbz = $typ;
- $pr_2->datum = $datum;
- $pr_2->anmerkung = "";
- $pr_2->insertamum = $jetzt;
- $pr_2->insertvon = $user;
- $pr_2->updateamum = null;
- $pr_2->updatevon = null;
- $pr_2->ext_id = null;
- $pr_2->new = true;
- $old_note = -1;
- }
- $pr_2->save();
+ }
+ else
+ {
+ $response = "fehlende oder fehlerhafte Inputparameter";
}
-
- // Wenn eine Pruefung eingetragen wird, wird danach die LV-Note korrigiert
- $jetzt = date("Y-m-d H:i:s");
-
- $lvid = $_REQUEST["lvid"];
+ //Gesamtnote updaten
$lvgesamtnote = new lvgesamtnote();
- if (!$lvgesamtnote->load($lvid, $student_uid, $stsem))
- {
+ if (!$lvgesamtnote->load($lvid, $student_uid, $stsem))
+ {
$lvgesamtnote->student_uid = $student_uid;
$lvgesamtnote->lehrveranstaltung_id = $lvid;
$lvgesamtnote->studiensemester_kurzbz = $stsem;
@@ -272,9 +457,9 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
$lvgesamtnote->insertvon = $user;
$new = true;
$response = "neu";
- }
- else
- {
+ }
+ else
+ {
$lvgesamtnote->note = $note;
$lvgesamtnote->punkte = $punkte;
$lvgesamtnote->benotungsdatum = $jetzt;
@@ -286,12 +471,11 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
else
$response = "update";
}
+
if (!$lvgesamtnote->save($new))
- echo "".$lvgesamtnote->errormsg." ";
+ return $lvgesamtnote->errormsg;
else
- echo $response;
+ return $response;
}
-else
- echo "Fehler beim Eintragen der Prüfungen";
?>
diff --git a/cis/private/lehre/notenliste.xls.php b/cis/private/lehre/notenliste.xls.php
index 74cb7e7c1..63cf45d29 100644
--- a/cis/private/lehre/notenliste.xls.php
+++ b/cis/private/lehre/notenliste.xls.php
@@ -35,6 +35,7 @@ require_once('../../../include/note.class.php');
require_once('../../../include/notenschluessel.class.php');
require_once('../../../include/Excel/excel.php');
require_once('../../../include/phrasen.class.php');
+require_once('../../../include/pruefung.class.php');
$uid = get_uid();
@@ -120,6 +121,13 @@ else
$format_highlightright->setBorderColor('white');
$format_highlightright->setAlign('right');
+ $format_highlightright_date=& $workbook->addFormat();
+ $format_highlightright_date->setFgColor(15);
+ $format_highlightright_date->setBorder(1);
+ $format_highlightright_date->setBorderColor('white');
+ $format_highlightright_date->setAlign('right');
+ $format_highlightright_date->setNumFormat(49);
+
$format_border_bottom =& $workbook->addFormat();
$format_border_bottom ->setBottom(2);
$format_border_bottom->setBold();
@@ -191,6 +199,19 @@ else
}
//Studenten holen
+
+ //Spaltengruppe für Nachprüfung
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
+ {
+ $worksheet->write($lines,8,$p->t('benotungstool/nachpruefung'),$format_bold);
+ }
+
+ //Spaltengruppe für 2.Nebensprüfungstermin
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
+ {
+ $worksheet->write($lines,12,$p->t('benotungstool/nachpruefung2'),$format_bold);
+ }
+
$lines++;
$worksheet->write($lines,1,$p->t('global/uid'),$format_border_bottom);
$worksheet->write($lines,2,$p->t('global/nachname'),$format_border_bottom);
@@ -203,6 +224,26 @@ else
else
$worksheet->write($lines,6,$p->t('benotungstool/note'),$format_border_bottom);
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
+ {
+ $worksheet->write($lines,8,$p->t('global/personenkennzeichen'),$format_border_bottom);
+ $worksheet->write($lines,9,$p->t('global/datum'),$format_border_bottom);
+ if(defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
+ $worksheet->write($lines,10,$p->t('benotungstool/punkte'),$format_border_bottom);
+ else
+ $worksheet->write($lines,10,$p->t('benotungstool/note'),$format_border_bottom);
+ }
+
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
+{
+ $worksheet->write($lines,12,$p->t('global/personenkennzeichen'),$format_border_bottom);
+ $worksheet->write($lines,13,$p->t('global/datum'),$format_border_bottom);
+ if(defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
+ $worksheet->write($lines,14,$p->t('benotungstool/punkte'),$format_border_bottom);
+ else
+ $worksheet->write($lines,14,$p->t('benotungstool/note'),$format_border_bottom);
+}
+
$stsem_obj = new studiensemester();
$stsem_obj->load($stsem);
$stsemdatumvon = $stsem_obj->start;
@@ -229,17 +270,18 @@ else
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
- LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
+ LEFT JOIN bis.tbl_mobilitaet ON (bis.tbl_mobilitaet.prestudent_id = public.tbl_student.prestudent_id)
LEFT JOIN lehre.tbl_note USING(note)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)."
- AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
+ AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
if($lehreinheit_id!='')
$qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER);
$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis, doubledegree DESC';
+
if($result = $db->db_query($qry))
{
$i=1;
@@ -282,6 +324,49 @@ else
$worksheet->write($lines,4,'="'.$elem->semester.$elem->verband.$elem->gruppe.'"');
$worksheet->write($lines,5,'="'.trim($elem->matrikelnr).'"',$format_highlight);
$worksheet->write($lines,6, $note, $format_highlightright);
+
+ // Nachprüfung
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
+ {
+ $worksheet->write($lines,8, '="'.trim($elem->matrikelnr).'"', $format_highlight);
+ $pr = new Pruefung();
+ $pr->getPruefungen($elem->uid, "Termin2", $lvid, $sem);
+ $output2 = $pr->result;
+
+ if ($output2)
+ {
+ $resultPr = $output2[0];
+ $worksheet->write($lines,9, date('d.m.Y', strtotime($resultPr->datum)), $format_highlightright_date);
+ $worksheet->write($lines,10, $resultPr->note, $format_highlightright);
+ }
+ else
+ {
+ $worksheet->write($lines,9, '', $format_highlightright_date);
+ $worksheet->write($lines,10, '', $format_highlightright);
+ }
+ }
+
+ // Nachprüfung
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
+ {
+ $worksheet->write($lines,12, '="'.trim($elem->matrikelnr).'"', $format_highlight);
+ $pr = new Pruefung();
+ $pr->getPruefungen($elem->uid, "Termin3", $lvid, $sem);
+ $output3 = $pr->result;
+
+ if ($output3)
+ {
+ $resultPr = $output3[0];
+ $worksheet->write($lines,13, date('d.m.Y', strtotime($resultPr->datum)), $format_highlightright_date);
+ $worksheet->write($lines,14, $resultPr->note, $format_highlightright);
+ }
+ else
+ {
+ $worksheet->write($lines,13, '', $format_highlightright_date);
+ $worksheet->write($lines,14, '', $format_highlightright);
+ }
+ }
+
$i++;
$lines++;
}
@@ -335,5 +420,17 @@ else
$worksheet->setColumn(0, 3, 25);
$worksheet->setColumn(0, 4, 7);
$worksheet->setColumn(0, 5, 21);
+
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
+ {
+ $worksheet->setColumn(8, 8, 15);
+ $worksheet->setColumn(9, 9, 10);
+ }
+ if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
+ {
+ $worksheet->setColumn(12, 12, 15);
+ $worksheet->setColumn(13, 13, 10);
+ }
+
$workbook->close();
?>
diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php
index 773582177..0eb86bdb1 100644
--- a/cis/private/tools/zeitaufzeichnung.php
+++ b/cis/private/tools/zeitaufzeichnung.php
@@ -1433,7 +1433,8 @@ if ($projekt->getProjekteMitarbeiter($user, true))
$sem_akt = $stsem->getakt();
$lehre = new zeitaufzeichnung();
$l_arr = $lehre->getLehreForUser($user, $sem_akt);
- if ($l_arr["LehreAuftraege"]>0 || $l_arr["Lehre"] > 0 || $l_arr["LehreExtern"] > 0)
+ $displayLehresaldo = false;
+ if ($displayLehresaldo && ($l_arr["LehreAuftraege"]>0 || $l_arr["Lehre"] > 0 || $l_arr["LehreExtern"] > 0))
{
if ($lehre_inkludiert == -1)
{
diff --git a/cis/testtool/admin/auswertung_detail.php b/cis/testtool/admin/auswertung_detail.php
index 775234670..2e6b9f0e9 100644
--- a/cis/testtool/admin/auswertung_detail.php
+++ b/cis/testtool/admin/auswertung_detail.php
@@ -147,7 +147,7 @@ if(isset($_GET['show']))
Level
Frage
Gesamt (m/w)
- Nummer | Punkte | Gesamt | Männlich | Weiblich
+ Nummer | Punkte | Gesamt | % | Männlich | Weiblich
';
}
}
@@ -244,12 +244,20 @@ if(isset($_GET['show']))
$anz_m = $row_geschlecht->anz_m;
$anz_w = $row_vorschlag->anzahl_vorschlag-$row_geschlecht->anz_m;
+ if ($row_vorschlag->anzahl_gesamt == 0)
+ $anzahl_gesamt = 1;
+ else
+ $anzahl_gesamt = $row_vorschlag->anzahl_gesamt;
+
+ $vorschlag_prozent = round(100 * $row_vorschlag->anzahl_vorschlag / $anzahl_gesamt, 1);
+ $vorschlag_prozent = number_format($vorschlag_prozent,1,',','');
$hlp2.= '
'.$row_vorschlag->nummer.'
'.number_format($row_vorschlag->punkte,2).'
'.$row_vorschlag->anzahl_vorschlag.'
+ '.$vorschlag_prozent.'%
'.$anz_m.'
'.$anz_w.' ';
diff --git a/cis/testtool/admin/auswertung_detail_frage.php b/cis/testtool/admin/auswertung_detail_frage.php
index 0256d00eb..8471eabf4 100644
--- a/cis/testtool/admin/auswertung_detail_frage.php
+++ b/cis/testtool/admin/auswertung_detail_frage.php
@@ -58,6 +58,7 @@ if($frage_id!='' && is_numeric($frage_id))
tbl_frage_sprache.text as frage_text,
tbl_frage_sprache.audio as frage_audio,
tbl_frage_sprache.bild as frage_bild,
+ tbl_vorschlag.nummer as vorschlag_nummer,
tbl_vorschlag_sprache.text as vorschlag_text,
tbl_vorschlag_sprache.audio as vorschlag_audio,
tbl_vorschlag_sprache.bild as vorschlag_bild,
@@ -108,9 +109,11 @@ if($frage_id!='' && is_numeric($frage_id))
}
//Vorschlaege
+ echo 'Nummer: '.$row->vorschlag_nummer.' ';
echo '';
//echo "
Vorschlag $i: ";
$first=false;
+
echo $row->vorschlag_text;
if($row->vorschlag_audio!='')
{
diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php
index 6f47992a1..9f6cd4fb7 100644
--- a/cis/testtool/frage.php
+++ b/cis/testtool/frage.php
@@ -161,7 +161,7 @@ if(!isset($_SESSION['pruefling_id']))
$pruefling = new pruefling();
$pruefling->load($_SESSION['pruefling_id']);
-if ($pruefling->gesperrt === 't')
+if ($pruefling->isGesperrt($_SESSION['pruefling_id']))
die("");
if (!in_array($gebiet_id, $_SESSION['alleGebiete']))
diff --git a/cis/testtool/login.php b/cis/testtool/login.php
index 0b114b8c5..0ff84f4a0 100644
--- a/cis/testtool/login.php
+++ b/cis/testtool/login.php
@@ -362,6 +362,8 @@ if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
$pruefling->idnachweis = '';
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
+ $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
+
if ($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
@@ -385,6 +387,7 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
$pruefling->semester = $_POST['semester'];
+ $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
if ($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php
index 5a7162765..27e0a9a70 100644
--- a/config/cis.config-default.inc.php
+++ b/config/cis.config-default.inc.php
@@ -86,7 +86,7 @@ define("AUTH_NAME","FH-Complete");
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
- * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_PORT',389);
diff --git a/config/system.config-default.inc.php b/config/system.config-default.inc.php
index 0d93b8eec..a1f70086a 100644
--- a/config/system.config-default.inc.php
+++ b/config/system.config-default.inc.php
@@ -52,7 +52,7 @@
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
- * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_PORT',389);
diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php
index 1d8e476c7..fdd971be0 100644
--- a/config/vilesci.config-default.inc.php
+++ b/config/vilesci.config-default.inc.php
@@ -75,7 +75,7 @@ define('AUTH_NAME', 'FH Complete');
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
- * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER', 'ldap://ldap.example.com');
define('LDAP_PORT', 389);
diff --git a/config/wawi.config-default.inc.php b/config/wawi.config-default.inc.php
index a5adccf04..0081c2420 100644
--- a/config/wawi.config-default.inc.php
+++ b/config/wawi.config-default.inc.php
@@ -53,7 +53,7 @@ define("AUTH_NAME","FHComplete");
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
- * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_PORT',389);
diff --git a/content/pdfExport.php b/content/pdfExport.php
index a2a5a1a33..2f9180418 100644
--- a/content/pdfExport.php
+++ b/content/pdfExport.php
@@ -253,7 +253,7 @@ else
array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id',
'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis',
'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort',
- 'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz')
+ 'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz', 'studiensemester_kurzbz')
)
)
{
diff --git a/content/student/studentkontooverlay.xul.php b/content/student/studentkontooverlay.xul.php
index a15275fac..7dec7f9a2 100644
--- a/content/student/studentkontooverlay.xul.php
+++ b/content/student/studentkontooverlay.xul.php
@@ -27,8 +27,14 @@ header("Pragma: no-cache");
header("Content-type: application/vnd.mozilla.xul+xml");
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/global.config.inc.php');
+require_once('../../include/functions.inc.php');
+require_once('../../include/benutzerberechtigung.class.php');
echo '';
+$user = get_uid();
+$rechte = new benutzerberechtigung();
+$rechte->getBerechtigungen($user);
+
?>
';
-
-
-
-
@@ -218,6 +220,20 @@ echo '';
+ getBerechtigungen($user);
+ if($rechte->isBerechtigt('admin'))
+ $hidden = '';
+ ?>
+ >
+
+
+
+
+
+
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index d9686d5e3..334080fb2 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -3452,6 +3452,10 @@ function StudentZeugnisDokumentArchivieren()
xml = 'ausbildungsvertrag.xml.php';
break;
+ case 'AbschlussdokumentLehrgaenge':
+ xml = 'abschlussdokument_lehrgaenge.xml.php';
+ break;
+
default:
alert('Das Archivieren fuer diesen Dokumenttyp wird derzeit nicht unterstuetzt');
return
diff --git a/content/zutrittskarte.php b/content/zutrittskarte.php
index c936400da..21f6e53d0 100644
--- a/content/zutrittskarte.php
+++ b/content/zutrittskarte.php
@@ -270,7 +270,8 @@ foreach ($uid_arr as $uid)
'matrikelnummer' => rtrim($student->matrikelnr),
'matr_nr' => $person->matr_nr,
'ausstellungsdatum' => date('M.Y'),
- 'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y')
+ 'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y'),
+ 'gueltigbis_3jahre' => date('d.m.Y', strtotime('+3 years'))
);
}
}
diff --git a/include/berechtigung.class.php b/include/berechtigung.class.php
index ab224be4d..f4c55e576 100644
--- a/include/berechtigung.class.php
+++ b/include/berechtigung.class.php
@@ -29,6 +29,10 @@ class berechtigung extends basis_db
public $rolle_kurzbz;
public $beschreibung;
public $berechtigung_kurzbz;
+ public $art;
+ public $anmerkung;
+ public $insertamum;
+ public $insertvon;
/**
* Konstruktor
@@ -79,7 +83,7 @@ class berechtigung extends basis_db
{
if(is_null($new))
$new = $this->new;
-
+
if($new)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES(".
@@ -103,14 +107,38 @@ class berechtigung extends basis_db
return false;
}
}
+
+ /**
+ * Loescht ein Recht
+ *
+ * @param $berechtigung_kurzbz
+ */
+ public function delete($berechtigung_kurzbz)
+ {
+ $qry = "DELETE FROM system.tbl_berechtigung WHERE berechtigung_kurzbz=".$this->db_add_param($berechtigung_kurzbz).";";
+
+ if($this->db_query($qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Löschen des Rechts:'.$this->db_last_error();
+ return false;
+ }
+ }
/**
* Holt alle BerechtigungsRollen
* @return true wenn erfolgreich, false im Fehlerfall
*/
- public function getRollen()
+ public function getRollen($order = null)
{
$qry = 'SELECT * FROM system.tbl_rolle';
+ if ($order != '')
+ {
+ $qry .= " ORDER BY $order";
+ }
if($this->db_query($qry))
{
@@ -152,6 +180,9 @@ class berechtigung extends basis_db
$obj->rolle_kurzbz = $row->rolle_kurzbz;
$obj->art = $row->art;
$obj->beschreibung = $row->beschreibung;
+ $obj->anmerkung = $row->anmerkung;
+ $obj->insertamum = $row->insertamum;
+ $obj->insertvon = $row->insertvon;
$this->result[] = $obj;
}
@@ -252,15 +283,22 @@ class berechtigung extends basis_db
if($this->db_num_rows()>0)
{
//Update
- $qry = "UPDATE system.tbl_rolleberechtigung SET art=".$this->db_add_param($this->art)." WHERE rolle_kurzbz=".$this->db_add_param($this->rolle_kurzbz)." AND berechtigung_kurzbz=".$this->db_add_param($this->berechtigung_kurzbz).";";
+ $qry = "UPDATE system.tbl_rolleberechtigung SET art=".$this->db_add_param($this->art).",
+ anmerkung=".$this->db_add_param($this->anmerkung).",
+ insertamum=".$this->db_add_param($this->insertamum).",
+ insertvon=".$this->db_add_param($this->insertvon)."
+ WHERE rolle_kurzbz=".$this->db_add_param($this->rolle_kurzbz)." AND berechtigung_kurzbz=".$this->db_add_param($this->berechtigung_kurzbz).";";
}
else
{
//Insert
- $qry = "INSERT INTO system.tbl_rolleberechtigung (rolle_kurzbz, berechtigung_kurzbz, art) VALUES(".
+ $qry = "INSERT INTO system.tbl_rolleberechtigung (rolle_kurzbz, berechtigung_kurzbz, art, anmerkung, insertamum, insertvon) VALUES(".
$this->db_add_param($this->rolle_kurzbz).",".
$this->db_add_param($this->berechtigung_kurzbz).",".
- $this->db_add_param($this->art).");";
+ $this->db_add_param($this->art).",".
+ $this->db_add_param($this->anmerkung).",".
+ $this->db_add_param($this->insertamum).",".
+ $this->db_add_param($this->insertvon).");";
}
if($this->db_query($qry))
diff --git a/include/organisationseinheit.class.php b/include/organisationseinheit.class.php
index 1a2e0ca16..78b0e40c3 100644
--- a/include/organisationseinheit.class.php
+++ b/include/organisationseinheit.class.php
@@ -650,11 +650,14 @@ class organisationseinheit extends basis_db
LOWER(bezeichnung) LIKE LOWER(\'%'.$this->db_escape((implode(' ',$searchItem))).'%\')
OR
LOWER(organisationseinheittyp_kurzbz) LIKE LOWER(\'%'.$this->db_escape((implode(' ',$searchItem))).'%\')
+ OR
+ LOWER(organisationseinheittyp_kurzbz) LIKE LOWER(\'%'.$this->db_escape((implode(' ',$searchItem))).'%\')
)';
foreach($searchItem as $value)
{
$qry.=' OR (LOWER(oe_kurzbz)=LOWER('.$this->db_add_param($value).'))
- OR (LOWER(bezeichnung) LIKE LOWER(\'%'.$this->db_escape($value).'%\'))';
+ OR (LOWER(bezeichnung) LIKE LOWER(\'%'.$this->db_escape($value).'%\'))
+ OR (LOWER(organisationseinheittyp_kurzbz||bezeichnung) LIKE LOWER(\'%'.$this->db_escape($value).'%\'))';
}
$qry.= ' ORDER BY organisationseinheittyp_kurzbz, bezeichnung;';
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index 13f3e5e00..557412413 100644
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -870,6 +870,42 @@ class prestudent extends person
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)";
break;
+ case "bewerberrtnichtangemeldet":
+ $qry.=" AND a.rolle='Bewerber'
+ AND NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ public.tbl_rt_person
+ JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
+ WHERE
+ person_id=a.person_id
+ AND studienplan_id IN (
+ SELECT studienplan_id FROM lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
+ )
+ AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ )";
+ break;
+ case "bewerberrtangemeldet":
+ $qry.=" AND a.rolle='Bewerber'
+ AND EXISTS (
+ SELECT
+ 1
+ FROM
+ public.tbl_rt_person
+ JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
+ WHERE
+ person_id=a.person_id
+ AND studienplan_id IN (
+ SELECT studienplan_id FROM lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
+ )
+ AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ )";
+ break;
case "zgv":
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
diff --git a/include/pruefling.class.php b/include/pruefling.class.php
index fc64d90c4..efe660ca9 100644
--- a/include/pruefling.class.php
+++ b/include/pruefling.class.php
@@ -108,12 +108,13 @@ class pruefling extends basis_db
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
- $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('.
+ $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester, gesperrt) VALUES('.
$this->db_add_param($this->studiengang_kz).",".
$this->db_add_param($this->idnachweis).",".
$this->db_add_param($this->registriert).",".
$this->db_add_param($this->prestudent_id).",".
- $this->db_add_param($this->semester).");";
+ $this->db_add_param($this->semester).",".
+ $this->db_add_param($this->gesperrt, FHC_BOOLEAN).");";
}
else
{
@@ -122,7 +123,8 @@ class pruefling extends basis_db
' idnachweis='.$this->db_add_param($this->idnachweis).','.
' registriert='.$this->db_add_param($this->registriert).','.
' semester='.$this->db_add_param($this->semester).','.
- ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).
+ ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).','.
+ ' gesperrt='.$this->db_add_param($this->gesperrt, FHC_BOOLEAN).
" WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";";
}
@@ -557,5 +559,43 @@ class pruefling extends basis_db
return false;
}
}
+
+ public function isGesperrt($pruefling_id = null, $prestudent_id = null)
+ {
+ if (is_null($pruefling_id) && is_null($prestudent_id))
+ {
+ $this->errormsg = 'Falsche Parameterübergabe';
+ return false;
+ }
+
+ $qry = "SELECT spruefling.gesperrt
+ FROM testtool.tbl_pruefling
+ RIGHT JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id
+ JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id
+ WHERE spruefling.gesperrt";
+
+ if (!is_null($pruefling_id))
+ $qry .= " AND tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER);
+
+ if (!is_null($prestudent_id))
+ $qry .= " AND tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER);
+
+ $qry .= " LIMIT 1";
+
+ if($result = $this->db_query($qry))
+ {
+ if ($this->db_num_rows($result) == 0)
+ return false;
+ else
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler bei einer Abfrage';
+ return false;
+ }
+ }
}
?>
diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php
index 30d603afc..df4134ebf 100644
--- a/include/reihungstest.class.php
+++ b/include/reihungstest.class.php
@@ -694,11 +694,17 @@ class reihungstest extends basis_db
tbl_reihungstest.studiensemester_kurzbz,
tbl_reihungstest.stufe,
tbl_reihungstest.anmeldefrist,
- tbl_reihungstest.aufnahmegruppe_kurzbz
+ tbl_reihungstest.aufnahmegruppe_kurzbz,
+ tbl_studiengang.typ,
+ UPPER(typ::varchar(1) || kurzbz) AS stg_kuerzel,
+ so.studiengangbezeichnung,
+ so.studiengangbezeichnung_englisch
FROM
public.tbl_rt_person
- JOIN
- public.tbl_reihungstest ON (rt_id=reihungstest_id)
+ JOIN public.tbl_reihungstest ON (rt_id=reihungstest_id)
+ JOIN public.tbl_studiengang ON tbl_reihungstest.studiengang_kz = tbl_studiengang.studiengang_kz
+ JOIN lehre.tbl_studienplan sp USING(studienplan_id)
+ JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE
tbl_rt_person.person_id=".$this->db_add_param($person_id);
@@ -737,6 +743,10 @@ class reihungstest extends basis_db
$obj->stufe = $row->stufe;
$obj->anmeldefrist = $row->anmeldefrist;
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
+ $obj->typ = $row->typ;
+ $obj->stg_kuerzel = $row->stg_kuerzel;
+ $obj->studiengangbezeichnung = $row->studiengangbezeichnung;
+ $obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch;
$this->result[] = $obj;
}
diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php
index 834183c2c..7d24f16f3 100644
--- a/include/tw/vilesci_menu_main.inc.php
+++ b/include/tw/vilesci_menu_main.inc.php
@@ -33,7 +33,7 @@ $menu=array
'Lehrveranstaltung'=>array('name'=>'Lehrveranstaltung', 'link'=>'lehre/lehrveranstaltung_frameset.html', 'target'=>'main'),
/* Leerzeile */'emptyrow1'=>array('name'=>'', 'link'=>'#empty', 'target'=>'main'),
'Verplanungsuebersicht'=>array('name'=>'Verplanungsübersicht', 'link'=>'lehre/check/verplanungsuebersicht.php', 'target'=>'main'),
- 'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('reihungstest')),
+ 'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('lehre/reihungstest')),
'LV-Planung'=>array
(
'name'=>'LV-Planung', 'permissions'=>array('admin','lv-plan','support'),
@@ -109,7 +109,7 @@ $menu=array
),
'Benutzer'=>array
(
- 'name'=>'Benutzer','permissions'=>array('admin','lv-plan','support'),
+ 'name'=>'Benutzer','permissions'=>array('admin','lv-plan','support','mitarbeiter'),
'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main', 'permissions'=>array('mitarbeiter')),
'Berechtigungen'=>array('name'=>'Berechtigungen', 'link'=>'stammdaten/benutzerberechtigung_frameset.html', 'target'=>'main','permissions'=>array('basis/berechtigung')),
'Rollen'=>array('name'=>'Rollen', 'link'=>'stammdaten/berechtigungrolle.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
@@ -132,14 +132,15 @@ $menu=array
'name'=>'Stammdaten', 'opener'=>'true', 'hide'=>'true', 'permissions'=>array('admin','lv-plan','support','basis/berechtigung','basis/variable','basis/studiengang','basis/ort','basis/firma','basis/fhausweis','basis/infoscreen','basis/organisationseinheit'), 'image'=>'vilesci_stammdaten.png',
'link'=>'left.php?categorie=Stammdaten', 'target'=>'nav',
'Betriebsmittel'=>array('name'=>'Betriebsmittel', 'link'=>'stammdaten/betriebsmittel_frameset.php', 'target'=>'main','permissions'=>array('basis/betriebsmittel')),
- 'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('admin','assistenz')),
+ 'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('lehre/reihungstest')),
- 'User'=>array
+ 'Rechtemanagement'=>array
(
- 'name'=>'User', 'permissions'=>array('basis/variable','basis/berechtigung'),
+ 'name'=>'Rechtemanagement', 'permissions'=>array('basis/berechtigung','mitarbeiter'),
'Berechtigungen'=>array('name'=>'Berechtigungen', 'link'=>'stammdaten/benutzerberechtigung_frameset.html', 'target'=>'main','permissions'=>array('basis/berechtigung')),
+ 'Rechte'=>array('name'=>'Rechte', 'link'=>'stammdaten/berechtigungen.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
'Rollen'=>array('name'=>'Rollen', 'link'=>'stammdaten/berechtigungrolle.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
- 'Variablen'=>array('name'=>'Variablen', 'link'=>'stammdaten/variablen_frameset.html', 'target'=>'main', 'target'=>'main','permissions'=>array('basis/variable')),
+ 'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main', 'permissions'=>array('mitarbeiter')),
),
'Personal'=>array
(
@@ -155,7 +156,7 @@ $menu=array
'Statistik'=>array('name'=>'Statistik', 'link'=>'stammdaten/statistik_frameset.html', 'target'=>'main','permissions'=>array('basis/statistik')),
'Ampel'=>array('name'=>'Ampel', 'link'=>'stammdaten/ampel_frameset.html', 'target'=>'main','permissions'=>array('basis/ampel')),
'Infoscreen'=>array('name'=>'Infoscreen', 'link'=>'stammdaten/infoscreen_frameset.html', 'target'=>'main','permissions'=>array('basis/infoscreen')),
- 'Ferien'=>array('name'=>'Ferien', 'link'=>'lehre/ferienverwaltung.php', 'target'=>'main','permissions'=>array('admin')),
+ 'Ferien'=>array('name'=>'Ferien', 'link'=>'lehre/ferienverwaltung.php', 'target'=>'main','permissions'=>array('basis/ferien')),
'Service'=>array('name'=>'Service', 'link'=>'stammdaten/service_frameset.html', 'target'=>'main','permissions'=>array('basis/service')),
'Dokumentvorlagen'=>array('name'=>'Dokumentvorlagen', 'link'=>'stammdaten/dokumentvorlagen_verwaltung.php', 'target'=>'main','permissions'=>array('basis/dokumente')),
'GSProgramm'=>array('name'=>'GSProgramm', 'link'=>'stammdaten/gsprogramm.php', 'target'=>'main','permissions'=>array('inout/uebersicht')),
diff --git a/locale/de-AT/benotungstool.php b/locale/de-AT/benotungstool.php
index 3c8063936..d6e77d3ce 100644
--- a/locale/de-AT/benotungstool.php
+++ b/locale/de-AT/benotungstool.php
@@ -148,8 +148,11 @@ $this->phrasen['benotungstool/anzahlKommisionellePruefungen']='Anzahl kommission
$this->phrasen['benotungstool/pruefungAnlegenFuer']='Prüfung anlegen für';
$this->phrasen['benotungstool/kreuzerltool']='Kreuzerltool';
$this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Der Student %s %s (%s) ist dieser Lehrveranstaltung nicht zugeordnet. Die Note wird nicht uebernommen!';
-$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student mit Matrikelnummer %s existiert nicht.';
-$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Für Student mit Matrikelnummer %s eingetragene Zeugnisote %s ist nicht überschreibbar';
+$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student*in mit Matrikelnummer %s existiert nicht.';
+$this->phrasen['benotungstool/datumsformatUnzulaessig']='Das Datum %s entspricht nicht dem Format TT.MM.JJJJ!';
+$this->phrasen['benotungstool/NachpruefungNichtZulaessig']='Nachprüfung für Student*in %s nicht zulässig.';
+$this->phrasen['benotungstool/noteUnzulaessig']='Die Note %s ist nicht zulaessig. Die Zeile wurde uebersprungen.';
+$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Für Student mit Matrikelnummer %s eingetragene Zeugnisnote %s ist nicht überschreibbar';
$this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Fehlerhafte Note bei Student %s %s';
$this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='Derzeit gibt es keine Kreuzerllisten für diese Lehrveranstaltung';
$this->phrasen['benotungstool/notenuebersichtFuer']='Notenübersicht für';
@@ -170,7 +173,8 @@ $this->phrasen['benotungstool/eingetrageneNoten']='Eingetragene Noten';
$this->phrasen['benotungstool/zeunis']='Zeugnis';
$this->phrasen['benotungstool/handbuch']='Handbuch';
$this->phrasen['benotungstool/punkte']='Punkte';
-$this->phrasen['benotungstool/importAnweisung']='Kopieren Sie die Spalten Personenkennzeichen und Note aus der Notenliste (bzw. StudentenUid und Note aus dem MoodleExport) und fügen Sie diese in folgendes Feld ein';
+$this->phrasen['benotungstool/importAnweisung']='Kopieren Sie die Spalten StudentenUid und Note aus der Notenliste (bzw. StudentenUid und Note aus dem MoodleExport) und fügen Sie diese in folgendes Feld ein';
+$this->phrasen['benotungstool/importAnweisungNachp']='Kopieren Sie die Spalten StudentenUid (bzw. Personenkennzeichen), Datum und Note aus der Notenliste bzw. dem Moodle Export File und fügen Sie diese in folgendes Feld ein';
$this->phrasen['benotungstool/pruefung']='Prüfung';
$this->phrasen['benotungstool/notenlisteImport']='Notenliste für den LV-Noten-Import (Excel)';
$this->phrasen['benotungstool/bearbeitetvon']='Bearbeitet von';
diff --git a/locale/en-US/benotungstool.php b/locale/en-US/benotungstool.php
index 17f78d2ba..73a3bd343 100644
--- a/locale/en-US/benotungstool.php
+++ b/locale/en-US/benotungstool.php
@@ -148,6 +148,8 @@ $this->phrasen['benotungstool/pruefungAnlegenFuer']='Create an examination for '
$this->phrasen['benotungstool/kreuzerltool']='"Kreuzerl" tool';
$this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Student is not assigned to this course. The grade was not accepted!';
$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student with student ID number %s does not exist.';
+$this->phrasen['benotungstool/NachpruefungNichtZulaessig']='Re-examination for student %s not allowed.';
+$this->phrasen['benotungstool/datumsformatUnzulaessig']='The date %s is not in valid format TT.MM.JJJJ.';
$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Transcript grade %2$s for student with Personal identifier %1$s is not rewritable';
$this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Incorrect grade for student %s %s';
$this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='There are currently no checklists for this course';
@@ -170,6 +172,7 @@ $this->phrasen['benotungstool/zeunis']='Transcript';
$this->phrasen['benotungstool/handbuch']='Handbook';
$this->phrasen['benotungstool/punkte']='Points';
$this->phrasen['benotungstool/importAnweisung']='Copy the columns "personal identifier" and "grade" from the grade list (or "student ID number" and "grade" from the moodle export file) and insert them in the following field';
+$this->phrasen['benotungstool/importAnweisungNachp']='Copy the columns "student ID number" (or "personal identifier"), "date" and "grade" from the grade list or from the moodle export file and insert them in the following field';
$this->phrasen['benotungstool/pruefung']='Examination';
$this->phrasen['benotungstool/notenlisteImport']='Grade list for the subject grade import (Excel)';
$this->phrasen['benotungstool/geaenderteNotenVorhanden']='There are changed grades. Please send the changes to the assistant by clicking "Approval"';
diff --git a/public/js/issues/issuesKonfiguration.js b/public/js/issues/issuesKonfiguration.js
index 9e0ebaf4d..f2e7aa5c3 100644
--- a/public/js/issues/issuesKonfiguration.js
+++ b/public/js/issues/issuesKonfiguration.js
@@ -144,6 +144,34 @@ var IssuesKonfiguration = {
}
);
},
+ deleteKonfigurationsWerte: function(konfigurationstyp_kurzbz, fehlercode, konfigurationsWert)
+ {
+ FHC_AjaxClient.ajaxCallPost(
+ 'system/issues/IssuesKonfiguration/deleteKonfigurationsWerte',
+ {
+ konfigurationstyp_kurzbz: konfigurationstyp_kurzbz,
+ fehlercode: fehlercode,
+ konfigurationsWert: konfigurationsWert
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
+ if (FHC_AjaxClient.hasData(data))
+ {
+ FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t('fehlermonitoring', 'konfigurationGeloescht'))
+ // reload dataset to see change
+ IssuesKonfiguration._reloadKonfigurationOverview();
+ }
+ else
+ {
+ FHC_DialogLib.alertError(FHC_PhrasesLib.t('fehlermonitoring', 'konfigurationGeloeschtFehler'));
+ }
+ },
+ errorCallback: function(jqXHR, textStatus, errorThrown) {
+ FHC_DialogLib.alertError(textStatus);
+ }
+ }
+ );
+ },
deleteKonfiguration: function(konfigurationstyp_kurzbz, fehlercode)
{
FHC_AjaxClient.ajaxCallPost(
@@ -229,7 +257,7 @@ $(document).ready(function() {
}
);
- // get new fehlercodes each time app is changed
+ // set assign configuration event
$("#assignKonfiguration").click(
function()
{
@@ -241,6 +269,18 @@ $(document).ready(function() {
}
);
+ // set delete configuration event
+ $("#deleteKonfiguration").click(
+ function()
+ {
+ IssuesKonfiguration.deleteKonfigurationsWerte(
+ $("#"+FEHLERKONFIGURATIONSTYP_DROPDOWN_ID).val(),
+ $("#"+FEHLERCODE_DROPDOWN_ID).val(),
+ $("#konfigurationsWert").val()
+ );
+ }
+ );
+
// set events for showing info modals
$("#fehlercodeInfoIcon").click(
function()
diff --git a/public/js/lehre/anrechnung/requestAnrechnung.js b/public/js/lehre/anrechnung/requestAnrechnung.js
index 5edb4e162..2947aebe9 100644
--- a/public/js/lehre/anrechnung/requestAnrechnung.js
+++ b/public/js/lehre/anrechnung/requestAnrechnung.js
@@ -1,6 +1,9 @@
const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
-const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
+const CHAR_LENGTH125 = 125;
+const CHAR_LENGTH150 = 150;
+const CHAR_LENGTH500 = 500;
+const CHAR_LENGTH1000 = 1000;
const COLOR_DANGER = '#f2dede';
@@ -25,7 +28,7 @@ $(function(){
// Alert message inside Begruendungsbox, if maximum ECTS exceeded
requestAnrechnung.alertIfMaxEctsExceededInsideBegruendungsbox();
- // Set chars counter for textarea 'Herkunft der Kenntnisse'
+ // Set chars counter for textareas
requestAnrechnung.setCharsCounter();
// If Sperregrund exists: display Sperre panel, hide Status panel and disable all form elements
@@ -98,6 +101,8 @@ $(function(){
begruendung: this.begruendung.value,
lv_id: this.lv_id.value,
studiensemester: this.studiensemester.value,
+ begruendung_ects: this.begruendung_ects.value,
+ begruendung_lvinhalt: this.begruendung_lvinhalt.value,
bestaetigung: this.bestaetigung.value,
uploadfile: this.uploadfile.files
},
@@ -207,11 +212,22 @@ var requestAnrechnung = {
},
setCharsCounter: function(){
$('#requestAnrechnung-herkunftDerKenntnisse').keyup(function() {
-
- let length = HERKUNFT_DER_KENNTNISSE_MAX_LENGTH - $(this).val().length;
-
+ let length = CHAR_LENGTH125 - $(this).val().length;
$('#requestAnrechnung-herkunftDerKenntnisse-charCounter').text(length);
});
+
+ $('#requestAnrechnung-begruendungEcts').keyup(function() {
+ let length = CHAR_LENGTH150 - $(this).val().length;
+ $('#requestAnrechnung-begruendungEcts-charCounter').text(length);
+ });
+
+ $('#requestAnrechnung-begruendungLvinhalt').keyup(function() {
+ let maxlength = CHAR_LENGTH1000 - $(this).val().length;
+ $('#requestAnrechnung-begruendungLvinhalt-charCounterMax').text(maxlength);
+
+ let minlength = CHAR_LENGTH500 - $(this).val().length;
+ $('#requestAnrechnung-begruendungLvinhalt-charCounterMin').text(minlength);
+ });
},
formatAnrechnungIsApplied: function (antragdatum, dms_id, filename){
$('#requestAnrechnung-antragdatum').text(antragdatum);
diff --git a/rdf/lehrverbandsgruppe.rdf.php b/rdf/lehrverbandsgruppe.rdf.php
index 20956d279..19affa245 100644
--- a/rdf/lehrverbandsgruppe.rdf.php
+++ b/rdf/lehrverbandsgruppe.rdf.php
@@ -290,6 +290,24 @@ function draw_orgformsubmenu($stg_kz, $orgform)
bewerber
+
+
+ Nicht zum Reihungstest angemeldet
+
+
+ studiensemester_kurzbz.']]>
+ bewerberrtnichtangemeldet
+
+
+
+
+ Reihungstest angemeldet
+
+
+ studiensemester_kurzbz.']]>
+ bewerberrtangemeldet
+
+
Aufgenommen
@@ -344,8 +362,14 @@ function draw_orgformsubmenu($stg_kz, $orgform)
$orgform_sequence[$stg_kz].= "\t\t\t\tstudiensemester_kurzbz/interessenten/reihungstestangemeldet\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t";
$orgform_sequence[$stg_kz].= "\n\t\t\t \n";
-
- $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber\" />\n";
+
+ $orgform_sequence[$stg_kz].= "\t\t\t";
+ $orgform_sequence[$stg_kz].= "\n\t\t\t\tstudiensemester_kurzbz/bewerber\">\n";
+ $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
+ $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber/reihungstestangemeldet\" />\n";
+ $orgform_sequence[$stg_kz].= "\t\t\t\t ";
+ $orgform_sequence[$stg_kz].= "\n\t\t\t \n";
+
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/aufgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/warteliste\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/absage\" />\n";
@@ -624,6 +648,22 @@ while ($row=$dbo->db_fetch_object())
+
+
+ ]]>
+ studiengang_kz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+
+
+
+
+
+ ]]>
+ studiengang_kz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+
+
+
]]>
@@ -832,8 +872,14 @@ draw_orgformpart($stg_kz);
echo "\t\t\t\tstudiensemester_kurzbz/interessenten/reihungstestangemeldet\" />\n";
echo "\t\t\t\t";
echo "\n\t\t\t \n";
+
+ echo "\t\t\t";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber\">\n";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber/reihungstestangemeldet\" />\n";
+ echo "\t\t\t\t ";
+ echo "\n\t\t\t \n";
- echo "\t\t\t\tstudiensemester_kurzbz/bewerber\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/aufgenommen\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/warteliste\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/absage\" />\n";
diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php
index 11e841c2b..1625f161c 100644
--- a/rdf/student.rdf.php
+++ b/rdf/student.rdf.php
@@ -737,7 +737,7 @@ if($xmlformat=='rdf')
}
elseif(in_array($typ, array('prestudent', 'interessenten', 'bewerber', 'aufgenommen',
'warteliste', 'absage', 'zgv', 'reihungstestangemeldet', 'reihungstestnichtangemeldet', 'absolvent',
- 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt', 'statusbestaetigtrtnichtangemeldet', 'statusbestaetigtrtangemeldet')))
+ 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt', 'statusbestaetigtrtnichtangemeldet', 'statusbestaetigtrtangemeldet', 'bewerberrtangemeldet', 'bewerberrtnichtangemeldet')))
{
$prestd = new prestudent();
diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index 5687d4ca3..1723f4139 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -27,6 +27,7 @@ require_once('dbupdate_3.4/example.php');
require_once('dbupdate_3.4/example2.php');
...
*/
+require_once('dbupdate_3.4/25003_notenimport_nachpruefung.php');
require_once('dbupdate_3.4/26173_index_webservicelog.php');
require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php');
@@ -39,8 +40,12 @@ require_once('dbupdate_3.4/27107_vilesci_erfassung_abwesenheiten_reinigung.php')
require_once('dbupdate_3.4/24913_tabelle_raumtyp_neues_attribut_aktiv.php');
require_once('dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php');
require_once('dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php');
+require_once('dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php');
+require_once('dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php');
+require_once('dbupdate_3.4/29529_infocenter_anpassungen.php');
require_once('dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php');
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo 'Pruefe Tabellen und Attribute! ';
@@ -150,7 +155,7 @@ $tabellen=array(
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"),
"lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"),
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
- "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"),
+ "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung", "begruendung_ects", "begruendung_lvinhalt"),
"lehre.tbl_anrechnungstatus" => array("status_kurzbz", "bezeichnung_mehrsprachig"),
"lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id", "status_kurzbz", "datum", "insertamum", "insertvon"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
@@ -327,7 +332,7 @@ $tabellen=array(
"system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon","category"),
"system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"),
"system.tbl_rolle" => array("rolle_kurzbz","beschreibung"),
- "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art"),
+ "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art","anmerkung","insertamum","insertvon"),
"system.tbl_verarbeitungstaetigkeit" => array("taetigkeit_kurzbz", "bezeichnung", "bezeichnung_mehrsprachig","aktiv"),
"system.tbl_webservicelog" => array("webservicelog_id","webservicetyp_kurzbz","request_id","beschreibung","request_data","execute_time","execute_user"),
"system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"),
diff --git a/system/dbupdate_3.4/25003_notenimport_nachpruefung.php b/system/dbupdate_3.4/25003_notenimport_nachpruefung.php
new file mode 100644
index 000000000..7c2406d0e
--- /dev/null
+++ b/system/dbupdate_3.4/25003_notenimport_nachpruefung.php
@@ -0,0 +1,15 @@
+db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefungstyp_kurzbz='Termin3'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO lehre.tbl_pruefungstyp(pruefungstyp_kurzbz, beschreibung, abschluss) VALUES('Termin3', '3.Termin', false);";
+
+ if(!$db->db_query($qry))
+ echo 'Prüfungstyp: '.$db->db_last_error().' ';
+ else
+ echo ' Prüfungstyp 3.Termin in lehre.tbl_pruefungstyp hinzugefügt';
+ }
+}
diff --git a/system/dbupdate_3.4/29529_infocenter_anpassungen.php b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
new file mode 100644
index 000000000..e11f3ed39
--- /dev/null
+++ b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
@@ -0,0 +1,34 @@
+db_query("SELECT has_sequence_privilege('web', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to web;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' Web User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+// Update Berechtigungen fuer vilesci User erteilen fuer tbl_pruefling_pruefling_id_seq
+if($result = @$db->db_query("SELECT has_sequence_privilege('vilesci', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to vilesci;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' vilesci User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+
diff --git a/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php b/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php
new file mode 100644
index 000000000..922920071
--- /dev/null
+++ b/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php
@@ -0,0 +1,28 @@
+db_query("SELECT begruendung_ects FROM lehre.tbl_anrechnung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_ects text;
+ COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_ects IS 'Begruendung gleichwertiger ECTS';
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung '.$db->db_last_error().' ';
+ else
+ echo ' Spalte begruendung_ects zu Tabelle lehre.tbl_anrechnung hinzugefügt';
+}
+
+//Add column begruendung_lvinhalt to lehre.tbl_anrechnung
+if(!@$db->db_query("SELECT begruendung_lvinhalt FROM lehre.tbl_anrechnung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_lvinhalt text;
+ COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_lvinhalt IS 'Begruendung gleichwertiger LV-Inhalte';
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung '.$db->db_last_error().' ';
+ else
+ echo ' Spalte begruendung_lvinhalt zu Tabelle lehre.tbl_anrechnung hinzugefügt';
+}
\ No newline at end of file
diff --git a/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php b/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php
new file mode 100644
index 000000000..0d7b43b8f
--- /dev/null
+++ b/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php
@@ -0,0 +1,15 @@
+db_query("SELECT anmerkung FROM system.tbl_rolleberechtigung LIMIT 1"))
+{
+ $qry = "ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN anmerkung varchar(256);
+ ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN insertamum timestamp DEFAULT now();
+ ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN insertvon varchar(32);";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_rolleberechtigung '.$db->db_last_error().' ';
+ else
+ echo ' Spalten anmerkung, insertamum, insertvon in system.tbl_rolleberechtigung hinzugefügt';
+}
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index 241e44f2f..cc9abfb98 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -520,7 +520,29 @@ $filters = array(
{"name": "Studiengang"},
{"name": "AbgewiesenAm"},
{"name": "Nachricht"},
- {"name": "Kaution"}
+ {"name": "Kaution"},
+ {"name": "LockUser"}
+ ],
+ "filters": []
+ }
+ ',
+ 'oe_kurzbz' => null,
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'dataset_name' => 'aufgenommen',
+ 'filter_kurzbz' => 'InfoCenterAufgenommenAlle',
+ 'description' => '{Alle}',
+ 'sort' => 1,
+ 'default_filter' => true,
+ 'filter' => '
+ {
+ "name": "Aufgenommen - Lehrgänge",
+ "columns": [
+ {"name": "PersonId"},
+ {"name": "Vorname"},
+ {"name": "Nachname"},
+ {"name": "Studiengang"}
],
"filters": []
}
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 8acdffca7..1539b0641 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -10909,6 +10909,178 @@ Any unusual occurrences
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungEcts',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründen Sie die Gleichwertigkeit der ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Give reasons for the equivalence of ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungLvinhalt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründen Sie die Gleichwertigkeit der Lehrveranstaltungsinhalte',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Give reasons for the equivalence of the course contents',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungBegruendungEctsTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Hinsichtlich des Umfangs der LV, die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum Ihr Zeugnis bzw. Ihre berufliche Praxis mit dem Umfang der LV gleichwertig ist. Referenzbeispiele für die ECTS-Berechnung finden Sie rechts in der Infobox.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Regarding the scope of the course you want to have credited: Please explain why your certificate or your professional practice is equivalent to the scope of the course. Reference examples for the ECTS calculation can be found in the info box on the right.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungBegruendungLvinhaltTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Hinsichtlich der Lernergebnisse der LV (vgl. CIS), die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum die von Ihnen erworbenen Kompetenzen mit diesen Lernergebnissen gleichwertig sind.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'With regard to the learning outcomes of the course (cf. CIS) for which you want to receive credit: Please explain why the competences you have acquired are equivalent to these learning outcomes.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'requestAnrechnungInfoEctsBerechnungTitle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Referenzbeispiele ECTS-Berechnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reference examples of ECTS calculation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'requestAnrechnungInfoEctsBerechnungBody',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "1 ECTS an der FH Technikum Wien entspricht einem Arbeitsaufwand von 25 Stunden.
+ Schulisches Zeugnis:
+ Bitte die Unterrichtsstunden nachvollziehbar in ECTS umrechnen (ein Schuljahr besteht aus ca. 40 Wochen; d.h., eine Unterrichtsstunde pro Woche sind insgesamt ca. 40 Stunden Jahresaufwand.)
+ Hochschulzeugnis:
+ Bitte die ECTS angeben.
+ Berufliche Praxis:
+ Bitte die Dauer der einschlägigen beruflichen Praxis nachvollziehbar in ECTS umrechnen (1,5 ECTS sind ungefähr eine Arbeitswoche im Umfang von 37,5 Stunden).",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => " 1 ECTS at the FH Technikum Wien corresponds to a workload of 25 hours.
+ School certificate:
+ Please convert the teaching hours into ECTS in a comprehensible way (a school year consists of approx. 40 weeks; i.e. one teaching hour per week is a total of approx. 40 hours of annual work).
+ University certificate:
+ Please indicate the ECTS.
+ Professional practice:
+ Please convert the duration of the relevant professional practice into ECTS in a comprehensible way (1.5 ECTS are approximately one working week of 37.5 hours).",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungEctsLabel',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründung Gleichwertigkeit ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason Equivalency of ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungLvinhaltLabel',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründung Gleichwertigkeit LV-Inhalt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason Equivalency of Course content',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -13745,6 +13917,26 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'fehlendeMinZeichen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Fehlende min. Zeichen",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "Missing min. Characters",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -17897,7 +18089,7 @@ array(
),
array(
'sprache' => 'English',
- 'text' => 'Invalid configuration value for data type {1}, special characters not allowed',
+ 'text' => 'Invalid configuration value for data type {0}, special characters not allowed',
'description' => '',
'insertvon' => 'system'
)
@@ -18123,6 +18315,26 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationswertLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationswert(e) löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete configuration value(s)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'uhstat',
@@ -18138,6 +18350,7 @@ array(
array(
'sprache' => 'English',
'text' => 'Value is missing',
+
'description' => '',
'insertvon' => 'system'
)
diff --git a/vilesci/lehre/check/ueberbuchung.php b/vilesci/lehre/check/ueberbuchung.php
index 3cb6b62e5..1e133384a 100644
--- a/vilesci/lehre/check/ueberbuchung.php
+++ b/vilesci/lehre/check/ueberbuchung.php
@@ -50,31 +50,47 @@ echo '
-
-
-
+ ';
+
+ include('../../../include/meta/jquery.php');
+ include('../../../include/meta/jquery-tablesorter.php');
+
+echo '
-
-
+
+
LV-Plan Überbuchungen - '.$db_stpl_table.'
';
@@ -93,8 +109,8 @@ if($beginn=='' || $ende=='')
$dontloadcontent=true;
}
-echo " Beginn ";
-echo " Ende ";
+echo " Beginn ";
+echo " Ende ";
$stg = new studiengang();
$stg->getAll('typ, kurzbzlang', true);
@@ -128,7 +144,7 @@ foreach ($ort_obj->result as $row)
$ort[$row->ort_kurzbz] = new stdClass(); // Prevents the warning "Creating default object from empty value"
$ort[$row->ort_kurzbz]->max_person = $row->max_person;
}
-$qry = "SELECT DISTINCT vw_".$db_stpl_table.".unr,datum, stunde, ort_kurzbz, studiensemester_kurzbz, vw_".$db_stpl_table.".studiengang_kz, vw_".$db_stpl_table.".semester, verband, gruppe, gruppe_kurzbz, UPPER(stg_typ || stg_kurzbz) as stg_kurzbz, lehrfach, lehrfach_bez
+$qry = "SELECT DISTINCT vw_".$db_stpl_table.".unr,datum, stunde, ort_kurzbz, studiensemester_kurzbz, vw_".$db_stpl_table.".studiengang_kz, vw_".$db_stpl_table.".semester, verband, gruppe, gruppe_kurzbz, UPPER(stg_typ || stg_kurzbz) as stg_kurzbz, lehrfach, lehrfach_bez, lehrform
FROM lehre.vw_".$db_stpl_table." JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung ON(tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
WHERE datum>='".addslashes($beginn)."' AND datum<='".addslashes($ende)."'";
if($stg_kz!='')
@@ -144,7 +160,8 @@ echo '
Ort
Studierende aktuell (Plätze maximal)
Gruppen (Studierende aktuell)
- Lehrfach
+ Lehrveranstaltung
+ Lehrform
';
@@ -156,6 +173,7 @@ $lastort=0;
$anzahl_studenten=0;
$lehrfach='';
$lehrfach_bez='';
+$lehrform='';
$arr=array();
function getAnzahl($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz, $studiensemester_kurzbz)
@@ -192,7 +210,7 @@ if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
- if($lastdatum==$row->datum && $laststunde==$row->stunde && $lastort==$row->ort_kurzbz && $lehrfach==$row->lehrfach && $lehrfach_bez==$row->lehrfach_bez)
+ if($lastdatum==$row->datum && $laststunde==$row->stunde && $lastort==$row->ort_kurzbz && $lehrfach==$row->lehrfach && $lehrfach_bez==$row->lehrfach_bez && $lehrform==$row->lehrform)
{
//Solange alles gleich ist zusammenzaehlen
$anzahl = getAnzahl($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $row->studiensemester_kurzbz);
@@ -222,7 +240,13 @@ if($result = $db->db_query($qry))
$style='style="background-color: a00404; color: d3d3d3"';
//echo "$lastdatum $laststunde $lastort $anzahl_studenten (".$ort[$lastort]->max_person.") $gruppen $lehrfach - $lehrfach_bez ";
- $arr[]="$lastdatum $lastort $anzahl_studenten (".$ort[$lastort]->max_person.") $gruppen $lehrfach - $lehrfach_bez ";
+ $arr[]="
+ $lastdatum
+ $lastort
+ $anzahl_studenten (".$ort[$lastort]->max_person.")
+ $gruppen
+ $lehrfach - $lehrfach_bez
+ $lehrform ";
}
$anzahl_studenten=0;
@@ -238,6 +262,7 @@ if($result = $db->db_query($qry))
$lastort = $row->ort_kurzbz;
$lehrfach = $row->lehrfach;
$lehrfach_bez = $row->lehrfach_bez;
+ $lehrform = $row->lehrform;
}
}
else
diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php
index e5975b651..e52235fda 100644
--- a/vilesci/stammdaten/auswertung_fhtw.php
+++ b/vilesci/stammdaten/auswertung_fhtw.php
@@ -490,22 +490,67 @@ if ($rtprueflingEntSperren)
exit();
}
- if (isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id'])
+ if (isset($_POST['person_id']) && is_numeric($_POST['person_id'])
&& isset($_POST['art']))
{
- $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . "
- WHERE prestudent_id IN
- (SELECT prestudent_id FROM public.tbl_prestudent ps
- JOIN public.tbl_person tp ON tp.person_id = ps.person_id
- WHERE tp.person_id = (SELECT person_id FROM public.tbl_prestudent sps WHERE sps.prestudent_id = " . $db->db_add_param($_POST['prestudent_id']) . "));";
+ $qry = "SELECT pruefling_id
+ FROM testtool.tbl_pruefling
+ WHERE prestudent_id IN (
+ SELECT prestudent_id
+ FROM public.tbl_prestudent
+ WHERE person_id = ". $db->db_add_param($_POST['person_id']) . "
+ )";
if ($result = $db->db_query($qry))
{
- $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet';
- echo json_encode(array(
- 'status' => 'ok',
- 'msg' => $msg));
- exit();
+ if ($db->db_num_rows($result) === 0)
+ {
+ $ps = new prestudent();
+ $ps->getPrestudenten($_POST['person_id']);
+
+ $prestudent = new prestudent($ps->result[0]->prestudent_id);
+ $prestudent->getLastStatus($prestudent->prestudent_id);
+
+ $pruefling = new pruefling();
+ $pruefling->new = true;
+ $pruefling->studiengang_kz = $prestudent->studiengang_kz;
+ $pruefling->registriert = date('Y-m-d H:i:s');
+ $pruefling->semester = $prestudent->ausbildungssemester;
+ $pruefling->prestudent_id = $prestudent->prestudent_id;
+ $pruefling->gesperrt = true;
+
+ $resultSperre = $pruefling->save();
+ }
+ else
+ {
+ $pruefling_ids = array();
+
+ while ($row = $db->db_fetch_object($result))
+ $pruefling_ids[] = $row->pruefling_id;
+
+ $qry = "UPDATE testtool.tbl_pruefling
+ SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . "
+ WHERE pruefling_id IN (" . $db->db_implode4SQL($pruefling_ids) . ")";
+
+ $resultSperre = $db->db_query($qry);
+ }
+
+ if ($resultSperre)
+ {
+ $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet';
+ echo json_encode(array(
+ 'status' => 'ok',
+ 'msg' => $msg));
+ exit();
+ }
+ else
+ {
+ echo json_encode(array(
+ 'status' => 'fehler',
+ 'msg' => 'Fehler beim speichern der Daten'
+ ));
+ exit();
+ }
}
else
{
@@ -1248,6 +1293,7 @@ $semester = isset($_REQUEST['semester']) ? $_REQUEST['semester'] : '';
$prestudent_id = isset($_REQUEST['prestudent_id']) ? $_REQUEST['prestudent_id'] : '';
$orgform_kurzbz = isset($_REQUEST['orgform_kurzbz']) ? $_REQUEST['orgform_kurzbz'] : '';
$format = (isset($_REQUEST['format']) ? $_REQUEST['format'] : '');
+$stgtyp = (isset($_REQUEST['stgtyp']) ? $_REQUEST['stgtyp'] : '');
$rtStudiensemester = '';
if ($reihungstest != '' && (is_array($reihungstest) || is_numeric($reihungstest)))
@@ -1418,7 +1464,12 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
ORDER BY studienplan_id DESC LIMIT 1)
OR tbl_ablauf.studienplan_id IS NULL)";
}
- //$query .= " AND nachname='Al-Mafrachi'";
+
+ if ($stgtyp !== '')
+ {
+ $query .= " AND tbl_studiengang.typ = " .$db->db_add_param($stgtyp);
+ }
+
$query .= " ORDER BY tbl_ablauf.studiengang_kz, tbl_ablauf.semester, reihung";
if (!($result = $db->db_query($query)))
@@ -1638,18 +1689,23 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
//$query .= " AND tbl_ablauf.studienplan_id = 5";
$query .= " AND tbl_studienplan.orgform_kurzbz=" . $db->db_add_param($orgform_kurzbz);
}
+
+ if ($stgtyp !== '')
+ {
+ $query .= " AND tbl_studiengang.typ = " . $db->db_add_param($stgtyp);
+ }
+
//$query .= " AND nachname='Al-Mafrachi'";
$query .= " ORDER BY nachname,
vorname,
- person_id
- ";/*print_r($query);*/
- //echo '', var_dump($query), ' ';
+ person_id";
if (!($result = $db->db_query($query)))
{
die($db->db_last_error());
}
$gebiete_arr = array();
+ $gesperrt_arr = array();
while ($row = $db->db_fetch_object($result))
{
// Hack für BEW-BB, wenn auch BEW-DL-Ergebnisse vorliegen
@@ -1666,7 +1722,10 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id] = new stdClass();
$gebiete_arr[$row->prestudent_id] = array();
}
-
+
+ if (!isset($gesperrt_arr[$row->person_id]))
+ $gesperrt_arr[$row->person_id] = new stdClass();
+
$ergebnis[$row->prestudent_id]->prestudent_id = $row->prestudent_id;
$ergebnis[$row->prestudent_id]->person_id = $row->person_id;
$ergebnis[$row->prestudent_id]->reihungstest_id = $row->reihungstest_id;
@@ -1678,7 +1737,6 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->geschlecht = $row->geschlecht;
$ergebnis[$row->prestudent_id]->idnachweis = $row->idnachweis;
$ergebnis[$row->prestudent_id]->registriert = $row->registriert;
- $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt;
$ergebnis[$row->prestudent_id]->stg_kurzbz = $row->stg_kurzbz;
$ergebnis[$row->prestudent_id]->stg_bez = $row->stg_bez;
$ergebnis[$row->prestudent_id]->ausbildungssemester = $row->ausbildungssemester;
@@ -1690,6 +1748,13 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->teilgenommen = $db->db_parse_bool($row->teilgenommen);
$ergebnis[$row->prestudent_id]->qualifikationskurs = $db->db_parse_bool($row->qualifikationskurs);
$ergebnis[$row->prestudent_id]->letzter_status = $row->letzter_status;
+ $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt;
+
+ $gesperrt = $db->db_parse_bool($row->gesperrt);
+ if (!isset($gesperrt_arr[$row->person_id]->gesperrt) || ($gesperrt_arr[$row->person_id]->gesperrt !== true && $gesperrt === true))
+ {
+ $gesperrt_arr[$row->person_id]->gesperrt = $gesperrt;
+ }
if (!isset($ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]))
{
@@ -2440,7 +2505,7 @@ else
});
}
}
- function prueflingEntSperren(prestudent_id, name, art)
+ function prueflingEntSperren(person_id, name, art)
{
if (art === true)
var text = "sperren";
@@ -2450,7 +2515,7 @@ else
if (confirm("Wollen Sie den Studenten "+ name + " wirklich " + text + "?"))
{
data = {
- prestudent_id: prestudent_id,
+ person_id: person_id,
art: art,
rtprueflingEntSperren: true
};
@@ -2464,21 +2529,31 @@ else
{
if(data.status !== "ok")
{
- $("#msgbox").attr("class","alert alert-danger");
- $("#msgbox").show();
- $("#msgbox").html(data["msg"]);
+ if (data.status === "warning")
+ {
+ $("#msgbox").attr("class","alert alert-warning");
+ $("#msgbox").show();
+ $("#msgbox").html(data["msg"]);
+ $("#msgbox").html(data["msg"]).delay(2000).fadeOut();
+ }
+ else
+ {
+ $("#msgbox").attr("class","alert alert-danger");
+ $("#msgbox").show();
+ $("#msgbox").html(data["msg"]);
+ }
}
else
{
if (art === true)
{
- $("#prueflingentsperren_" + prestudent_id).removeClass("hidden");
- $("#prueflingsperren_" + prestudent_id).addClass("hidden");
+ $(".prueflingentsperren_" + person_id).removeClass("hidden");
+ $(".prueflingsperren_" + person_id).addClass("hidden");
}
else if (art === false)
{
- $("#prueflingsperren_" + prestudent_id).removeClass("hidden");
- $("#prueflingentsperren_" + prestudent_id).addClass("hidden");
+ $(".prueflingsperren_" + person_id).removeClass("hidden");
+ $(".prueflingentsperren_" + person_id).addClass("hidden");
}
}
},
@@ -3019,6 +3094,20 @@ else
echo ' von Datum: ';
echo 'bis Datum: ';
+
+ $studiengangtyp = ['b' => 'Bachelor', 'm' => 'Master'];
+ echo ' Studiengang Typ:
+
+ Alle ';
+ foreach ($studiengangtyp as $key => $typ)
+ {
+ $selected = "";
+ if (isset($_REQUEST['stgtyp']) && $_REQUEST['stgtyp'] !== '' && $_REQUEST['stgtyp'] === $key)
+ $selected = 'selected';
+
+ echo ''. $typ . ' ';
+ }
+ echo ' ';
echo '';
echo '';
echo 'PrestudentIn: ';
@@ -3032,6 +3121,7 @@ else
&prestudent_id=' . $prestudent_id . '
&' . http_build_query(array('reihungstest' => $reihungstest)) . '
&orgform_kurzbz=' . $orgform_kurzbz . '
+ &stgtyp=' . $stgtyp . '
&format=xls"
class="btn btn-primary"
role="button">
@@ -3293,10 +3383,10 @@ else
echo "
-
+
-
+
";
diff --git a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
index a888a5b67..f963da2d9 100644
--- a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
+++ b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
@@ -36,9 +36,9 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'benutzer')
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
-
+
$benutzer = new benutzer();
-
+
if ($benutzer->search(array(
$search
)))
@@ -61,9 +61,9 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'berechtigu
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
-
+
$berechtigung = new berechtigung();
-
+
if ($berechtigung->searchBerechtigungen($search))
{
$result_obj = array();
@@ -98,17 +98,29 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'oe_kurzbz'
if(is_array($oe->result) && count($oe->result) > 0)
{
- $result_obj = array();
+ $resultArray = array();
foreach($oe->result as $row)
{
if($row->aktiv==true)
{
- $item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz);
- $item['organisationseinheittyp_kurzbz'] = html_entity_decode($row->organisationseinheittyp_kurzbz);
- $item['bezeichnung'] = html_entity_decode($row->bezeichnung);
- $result_obj[] = $item;
+ $resultArray[html_entity_decode($row->oe_kurzbz)] = array('organisationseinheittyp_kurzbz' => html_entity_decode($row->organisationseinheittyp_kurzbz),'bezeichnung' => html_entity_decode($row->bezeichnung));
}
}
+
+ uasort($resultArray, function($a, $b)
+ {
+ return $a['organisationseinheittyp_kurzbz'].$a['bezeichnung'] <=> $b['organisationseinheittyp_kurzbz'].$b['bezeichnung'];
+ });
+
+ $result_obj = array();
+ foreach($resultArray as $key => $value)
+ {
+ $item['oe_kurzbz'] = $key;
+ $item['organisationseinheittyp_kurzbz'] = $value['organisationseinheittyp_kurzbz'];
+ $item['bezeichnung'] = $value['bezeichnung'];
+ $result_obj[] = $item;
+ }
+
echo json_encode($result_obj);
}
exit();
diff --git a/vilesci/stammdaten/benutzerberechtigung_details.php b/vilesci/stammdaten/benutzerberechtigung_details.php
index 4cee06950..b230d702f 100644
--- a/vilesci/stammdaten/benutzerberechtigung_details.php
+++ b/vilesci/stammdaten/benutzerberechtigung_details.php
@@ -479,12 +479,11 @@ if(isset($_POST['copy']) && $_POST['copy'] != '')
if (!$b = new berechtigung())
die($b->errormsg);
-$b->getRollen();
+$b->getRollen('rolle_kurzbz');
foreach($b->result as $berechtigung)
{
$rolle_arr[$berechtigung->rolle_kurzbz] = $berechtigung->beschreibung;
}
-ksort($rolle_arr, SORT_STRING | SORT_FLAG_CASE);
$b->getBerechtigungen();
foreach($b->result as $berechtigung)
@@ -600,7 +599,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
}
if (count($bn) > 0)
{
- $htmlstr .= "Rechte Details
";
+ $htmlstr .= "Rechte Detailaufschlüsselung
";
}
}
elseif(isset($_REQUEST['funktion_kurzbz']) && $_REQUEST['funktion_kurzbz']!='')
diff --git a/vilesci/stammdaten/benutzerberechtigung_uebersicht.php b/vilesci/stammdaten/benutzerberechtigung_uebersicht.php
index ecc9c6e09..0be268b70 100644
--- a/vilesci/stammdaten/benutzerberechtigung_uebersicht.php
+++ b/vilesci/stammdaten/benutzerberechtigung_uebersicht.php
@@ -182,7 +182,7 @@ $(document).ready(function()
-Benutzerberechtigungen Übersicht ';
+Berechtigungen Übersicht ';
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -229,7 +229,7 @@ $htmlstr='
- Berechtigung:
+ Rechte:
';
$berechtigung = new berechtigung();
@@ -251,7 +251,7 @@ $htmlstr='
';
$rollen = new berechtigung();
- $rollen->getRollen();
+ $rollen->getRollen('rolle_kurzbz');
foreach($rollen->result as $rolle)
{
if ($rolle_kurzbz == $rolle->rolle_kurzbz)
diff --git a/vilesci/stammdaten/berechtigungen.php b/vilesci/stammdaten/berechtigungen.php
new file mode 100644
index 000000000..54ff60e27
--- /dev/null
+++ b/vilesci/stammdaten/berechtigungen.php
@@ -0,0 +1,218 @@
+
+ * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
+ * Rudolf Hangl < rudolf.hangl@technikum-wien.at >
+ * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
+ */
+require_once('../../config/vilesci.config.inc.php');
+require_once('../../include/functions.inc.php');
+require_once('../../include/berechtigung.class.php');
+require_once('../../include/benutzerberechtigung.class.php');
+
+$user = get_uid();
+
+$rechte = new benutzerberechtigung();
+$rechte->getBerechtigungen($user);
+
+if(!$rechte->isBerechtigt('basis/berechtigung'))
+ die($rechte->errormsg);
+
+$berechtigung_kurzbz = filter_input(INPUT_POST, 'berechtigung_kurzbz');
+$beschreibung = filter_input(INPUT_POST, 'beschreibung');
+$kurzbz = filter_input(INPUT_GET, 'kurzbz');
+$kurzbzPost = filter_input(INPUT_POST, 'kurzbz_post');
+$edit = filter_input(INPUT_GET, 'edit');
+$save = filter_input(INPUT_POST, 'save');
+$delete = filter_input(INPUT_GET, 'delete');
+$saveNew = filter_input(INPUT_POST, 'saveNew');
+
+//$delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
+?>
+
+
+ Rechte Übersicht
+
+
+
+
+
+
+
+
+
+
+ Rechte Übersicht
+
+ berechtigung_kurzbz = $kurzbzPost;
+ $berechtigung->beschreibung = $beschreibung;
+ $berechtigung->new = true;
+
+ if($berechtigung->save())
+ {
+ echo 'Recht '.$kurzbzPost.' wurde angelegt ';
+ }
+ else
+ {
+ echo 'Fehler beim Speichern:'.$berechtigung->errormsg.' ';
+ }
+ }
+ else
+ {
+ echo 'Zum Speichern der Daten muss die Kurzbz und die Beschreibung angegeben werden ';
+ }
+ }
+
+ if(isset($delete) && isset($kurzbz))
+ {
+ $berechtigung = new berechtigung();
+ if($berechtigung->delete($kurzbz))
+ echo 'Das Recht "'.$kurzbz.'" wurde erfolgreich gelöscht ';
+ else
+ echo 'Fehler beim Löschen des Rechts:'.$berechtigung->errormsg.' ';
+ }
+
+ if(isset($save))
+ {
+ $berechtigung = new berechtigung();
+ $berechtigung->load($berechtigung_kurzbz);
+ $berechtigung->beschreibung = $beschreibung;
+ if (!$berechtigung->save(false))
+ echo 'Fehler beim Speichern:'.$berechtigung->errormsg.' ';
+ }
+
+ //Tabelle mit Rollen anzeigen
+ $berechtigung = new berechtigung();
+ $berechtigung->getBerechtigungen();
+
+ echo 'Reset Filter ';
+ echo '
+
+
+ ';
+
+ echo '
+ Neues Recht einfügen
+ Kurzbz:
+ Beschreibung:
+ 256
+
+
+
+
+';
+ ?>
diff --git a/vilesci/stammdaten/berechtigungrolle.php b/vilesci/stammdaten/berechtigungrolle.php
index e33057d59..7e87a4901 100644
--- a/vilesci/stammdaten/berechtigungrolle.php
+++ b/vilesci/stammdaten/berechtigungrolle.php
@@ -35,10 +35,12 @@ if(!$rechte->isBerechtigt('basis/berechtigung'))
$rolle_kurzbz = filter_input(INPUT_GET, 'rolle_kurzbz');
$delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
+$copy = filter_input(INPUT_POST, 'copy');
+$vergleich = filter_input(INPUT_GET, 'vergleich');
?>
- Berechtigungen Uebersicht
+ Rollen Uebersicht
@@ -54,15 +56,37 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
$("#t1").tablesorter(
{
sortList: [[0,0]],
- widgets: ["zebra"],
- headers: {3:{sorter:false}}
+ widgets: ["zebra", "filter", "stickyHeaders"],
+ headers: {3:{filter:false, sorter:false}},
+ widgetOptions : {filter_saveFilters : true}
});
$("#t2").tablesorter(
{
sortList: [[0,0]],
- widgets: ["zebra"],
- headers: {2:{sorter:false}}
+ widgets: ["zebra", "filter", "stickyHeaders"],
+ headers: {2:{filter:false, sorter:false}},
+ widgetOptions : {filter_saveFilters : true}
+ });
+ $("#t3").tablesorter(
+ {
+ sortList: [],
+ widgets: ["zebra"]
+ });
+ $("#t4").tablesorter(
+ {
+ sortList: [],
+ widgets: ["zebra"]
+ });
+ $('.resetsaved').click(function()
+ {
+ $(".tablesorter").trigger("filterReset");
+ window.location("");
+ return false;
+ });
+ $("textarea").keyup(function()
+ {
+ $(this).siblings("span").text((256 - $(this).val().length));
});
// Breite des Autocompletes korrigieren um das Springen zu verhindern
@@ -93,16 +117,15 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
$(this).val(ui.item.berechtigung_kurzbz);
}
});
- });
- function confdel()
- {
- var value=prompt('Achtung! Sie sind dabei eine Rolle zu löschen. Die Zuordnungen gehen dadurch verloren! Um diese Rolle wirklich zu Löschen tippen Sie "LÖSCHEN" in das untenstehende Feld.');
- if(value=='LÖSCHEN')
- return true;
- else
- return false;
- }
+ $(".copyButton").click(function(event)
+ {
+ event.preventDefault();
+ $(this).siblings().show();
+ $(this).hide();
+ });
+ });
+
function validateNewData()
{
if($('#berechtigung_neu_autocomplete').val() == '')
@@ -138,14 +161,16 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
- Berechtigung - Rolle -
+
Berechtigungen der Rolle "'.$rolle_kurzbz.'"';
$berechtigung_kurzbz = filter_input(INPUT_GET, 'berechtigung_kurzbz');
$art = filter_input(INPUT_GET, 'art');
$save = filter_input(INPUT_GET, 'save');
+ $anmerkung = filter_input(INPUT_GET, 'anmerkung');
if(isset($save))
{
@@ -155,10 +180,17 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
$berechtigung->rolle_kurzbz = $rolle_kurzbz;
$berechtigung->berechtigung_kurzbz = $berechtigung_kurzbz;
$berechtigung->art = $art;
+ $berechtigung->anmerkung = $anmerkung;
+ $berechtigung->insertamum = date('Y-m-d H:i:s');
+ $berechtigung->insertvon = $user;
if($berechtigung->saveRolleBerechtigung()): ?>
Zuteilung gespeichert
-
+
Fehler beim Speichern der Zuteilung: errormsg ?>
- Zurück zur Rollenübersicht
+ Zurück zur Rollen Übersicht
getBerechtigungen();
?>
-
+
+
-
- getRolleBerechtigung($rolle_kurzbz);
- $berechtigungen_arr = array();
- foreach ($berechtigungen->result as $row)
- {
- $berechtigungen_arr[] = $row->berechtigung_kurzbz;
- }
- foreach ($berechtigung->result as $row): ?>
- berechtigung_kurzbz,$berechtigungen_arr)!==false ? 'disabled' : '' ?>>
- berechtigung_kurzbz ?>
-
-
-
-
+
+
+
-
+ Reset Filter
Kurzbz
Art
Beschreibung
-
+ Anmerkung
+
@@ -224,9 +262,15 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
berechtigung_kurzbz ?>
art ?>
beschreibung ?>
+ anmerkung ?>
-
- entfernen
+
+ Bearbeiten
+
+
+
+
+ Recht entfernen
@@ -235,8 +279,166 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
Rollen vergleichen';
+ $rolle1 = filter_input(INPUT_GET, 'rolle_kurzbz1');
+ $rolle2 = filter_input(INPUT_GET, 'rolle_kurzbz2');
+ ?>
+
+
+ Zurück zur Rollen Übersicht
+
+
+
+ getRolleBerechtigung($rolle1);
+ foreach ($rollen->result AS $recht)
+ {
+ $rollen1Arr[$recht->berechtigung_kurzbz] = $recht->art;
+ }
+ $rollen = new berechtigung();
+ $rollen->getRolleBerechtigung($rolle2);
+ foreach ($rollen->result AS $recht)
+ {
+ $rollen2Arr[$recht->berechtigung_kurzbz] = $recht->art;
+ }
+ $rollenGesamt = array_merge($rollen1Arr,$rollen2Arr);
+ ksort($rollenGesamt);
+
+ echo '
+
+
+ Rolle 1:
+
+ Bitte auswählen ';
+ $rollen = new berechtigung();
+ $rollen->getRollen('rolle_kurzbz');
+ foreach($rollen->result as $rolle)
+ {
+ if ($rolle1 == $rolle->rolle_kurzbz)
+ $selected = 'selected="selected"';
+ else
+ $selected = '';
+
+ echo ''.$rolle->rolle_kurzbz.' ';
+ }
+ echo ' ';
+ if (isset($rolle1))
+ {
+ echo '
+
+
+ Kurzbz
+ Art
+
+
+ ';
+
+ foreach ($rollenGesamt AS $recht => $art)
+ {
+ if (array_key_exists($recht, $rollen1Arr))
+ {
+ if ($art != $rollen1Arr[$recht])
+ {
+ echo '
+ '.$recht.'
+ '.$rollen1Arr[$recht].'
+ ';
+ }
+ else
+ {
+ echo '
+ '.$recht.'
+ '.$art.'
+ ';
+ }
+
+ }
+ else
+ {
+ echo '
+
+
+ ';
+ }
+ }
+ echo '
+
+
';
+ }
+ echo '
+
+
+ Rolle 2:
+
+ Bitte auswählen ';
+ $rollen = new berechtigung();
+ $rollen->getRollen('rolle_kurzbz');
+ foreach($rollen->result as $rolle)
+ {
+ if ($rolle2 == $rolle->rolle_kurzbz)
+ $selected = 'selected="selected"';
+ else
+ $selected = '';
+
+ echo ''.$rolle->rolle_kurzbz.' ';
+ }
+ echo ' ';
+ echo '
';
+ if (isset($rolle2))
+ {
+ echo '
+
+
+ Kurzbz
+ Art
+
+
+ ';
+ foreach ($rollenGesamt AS $recht => $art)
+ {
+ if (array_key_exists($recht, $rollen2Arr))
+ {
+ if ($art != $rollen2Arr[$recht])
+ {
+ echo '
+ '.$recht.'
+ '.$rollen2Arr[$recht].'
+ ';
+ }
+ else
+ {
+ echo '
+ '.$recht.'
+ '.$art.'
+ ';
+ }
+ }
+ else
+ {
+ echo '
+
+
+ ';
+ }
+ }
+ echo '
+
+
';
+ }
+ echo '
+
+
+ ';
+ }
else
{
+ echo 'Rollen Übersicht ';
$save = filter_input(INPUT_POST, 'save');
$edit = filter_input(INPUT_POST, 'edit');
@@ -273,11 +475,56 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
{
$berechtigung = new berechtigung();
if($berechtigung->deleteRolle($kurzbz))
- echo 'Rolle wurde entfernt';
+ echo 'Die Rolle '.$kurzbz.' wurde erfolgreich gelöscht';
else
echo 'Fehler beim Löschen:'.$berechtigung->errormsg;
}
+ if(isset($copy))
+ {
+ $kurzbz = filter_input(INPUT_POST, 'kurzbz');
+ $copyName = filter_input(INPUT_POST, 'copy_name');
+ $beschreibung = filter_input(INPUT_POST, 'beschreibung');
+
+ if(isset($kurzbz))
+ {
+ $berechtigung = new berechtigung();
+ $berechtigung->rolle_kurzbz = $copyName;
+ $berechtigung->beschreibung = $beschreibung;
+ $berechtigung->new = true;
+
+ if($berechtigung->saveRolle())
+ {
+ $rollenrechte = new berechtigung();
+ $rollenrechte->getRolleBerechtigung($kurzbz);
+ foreach($rollenrechte->result as $rollenrecht)
+ {
+ $newRolleRecht = new berechtigung();
+ $newRolleRecht->rolle_kurzbz = $copyName;
+ $newRolleRecht->berechtigung_kurzbz = $rollenrecht->berechtigung_kurzbz;
+ $newRolleRecht->art = $rollenrecht->art;
+ $newRolleRecht->anmerkung = $rollenrecht->anmerkung;
+ $newRolleRecht->insertamum = date('Y-m-d H:i:s');
+ $newRolleRecht->insertvon = $user;
+ if(!$newRolleRecht->saveRolleBerechtigung())
+ {
+ echo 'Fehler beim Speichern des Rechts '.$rollenrecht->berechtigung_kurzbz.' zur Rolle '.$rollenrecht->rolle_kurzbz;
+ break;
+ }
+ }
+ echo 'Rolle erfolgreich kopiert';
+ }
+ else
+ {
+ echo 'Fehler beim kopieren der Rolle '.$kurzbz.':'.$berechtigung->errormsg;
+ }
+ }
+ else
+ {
+ echo 'Zum Speichern der Daten muss die kurzbz und die Beschreibung angegeben werden';
+ }
+ }
+
if(isset($edit))
{
$beschreibung = filter_input(INPUT_POST, 'beschreibung');
@@ -292,13 +539,18 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
$berechtigung = new berechtigung();
$berechtigung->getRollen(); ?>
- Rollen:
+
+
+ Rollen vergleichen
+
+
+ Reset Filter
Kurzbz
Beschreibung
- Aktion
+ Aktion
@@ -325,7 +577,18 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
-
+
+
+
+
+
+
+
+ Rolle kopieren
+
+
+
+
Rolle löschen
@@ -341,6 +604,7 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
Kurzbz:
Beschreibung: beschreibung ?>
+ beschreibung)) ?>
Neue Rolle anlegen
@@ -348,6 +612,7 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
Kurzbz:
Beschreibung:
+ 256
diff --git a/vilesci/stammdaten/reihungstest_administration.php b/vilesci/stammdaten/reihungstest_administration.php
index 3f3ec6e83..3b59e1961 100644
--- a/vilesci/stammdaten/reihungstest_administration.php
+++ b/vilesci/stammdaten/reihungstest_administration.php
@@ -783,7 +783,9 @@ $qry="SELECT
studiengang_kz,
reihung,
gebiet_id,
- tbl_gebiet.bezeichnung,
+ gb.bezeichnung,
+ gb.bezeichnung_mehrsprachig[1] as bezeichnung_de,
+ gb.bezeichnung_mehrsprachig[2] as bezeichnung_en,
zeit,
multipleresponse,
maxfragen,
@@ -794,17 +796,19 @@ $qry="SELECT
level_sprung_ab,
levelgleichverteilung,
maxpunkte,
+ offsetpunkte,
antwortenprozeile,
(SELECT SUM (zeit) AS sum FROM testtool.tbl_gebiet JOIN testtool.tbl_ablauf USING (gebiet_id) WHERE studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
if ($semester!='')
$qry.=" AND semester=".$db->db_add_param($semester, FHC_INTEGER);
$qry.=" ) AS gesamtzeit,
+ (SELECT count(*) FROM testtool.tbl_frage WHERE gebiet_id=gb.gebiet_id AND demo=false) AS anz_fragen,
(SELECT SUM (zeit) AS sum FROM testtool.tbl_gebiet JOIN testtool.tbl_ablauf USING (gebiet_id) WHERE studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
if ($semester!='')
$qry.=" AND semester=".$db->db_add_param($semester, FHC_INTEGER);
$qry.=" )-'00:40:00'::time without time zone AS gesamtzeit_persoenlichkeit
FROM testtool.tbl_ablauf
- JOIN testtool.tbl_gebiet USING (gebiet_id)
+ JOIN testtool.tbl_gebiet gb USING (gebiet_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
if ($semester!='')
@@ -827,9 +831,11 @@ if ($studiengang_kz!=1 && $num_rows!=0)
KZ
NR
Gebiet_id
- Bezeichnung
+ Bezeichnung DE
+ Bezeichnung EN
Zeit
MR
+ Summe Fragen
Maxfragen
ZFF
ZFV
@@ -838,6 +844,7 @@ if ($studiengang_kz!=1 && $num_rows!=0)
Level ab
LGV
Maxpunkte
+ Offset
AWPZ
\n";
echo "";
echo " ";
@@ -850,7 +857,8 @@ if ($studiengang_kz!=1 && $num_rows!=0)
$row->studiengang_kz
$row->reihung
$row->gebiet_id
- $row->bezeichnung ";
+ $row->bezeichnung_de
+ $row->bezeichnung_en ";
if ($row->gebiet_id==7)
{
echo "00:20:00* ";
@@ -861,15 +869,17 @@ if ($studiengang_kz!=1 && $num_rows!=0)
{
echo "$row->zeit ";
}
- echo "
+ echo "".($row->multipleresponse=='t'?'Ja':'Nein')."
+ $row->anz_fragen
$row->maxfragen
-
-
+ ".($row->zufallfrage=='t'?'Ja':'Nein')."
+ ".($row->zufallvorschlag=='t'?'Ja':'Nein')."
$row->level_start
$row->level_sprung_auf
$row->level_sprung_ab
-
+ ".($row->levelgleichverteilung=='t'?'Ja':'Nein')."
$row->maxpunkte
+ ".number_format((intval(($row->offsetpunkte*100))/100),2,',','.')."
$row->antwortenprozeile ";
echo "\n";
}
@@ -881,6 +891,7 @@ if ($studiengang_kz!=1 && $num_rows!=0)
echo " ";
echo " ";
echo " ";
+ echo " ";
echo "Gesamt ";
echo "".$gesamtzeit." ";
echo " ";
@@ -893,6 +904,8 @@ if ($studiengang_kz!=1 && $num_rows!=0)
echo " ";
echo " ";
echo " ";
+ echo " ";
+ echo " ";
echo "\n";
echo "
";
}