merge master into 11952/DetailansichtVorgesetzte

This commit is contained in:
ma0068
2021-10-18 10:49:12 +02:00
115 changed files with 7170 additions and 2579 deletions
+15
View File
@@ -23,6 +23,14 @@ $config['navigation_header'] = array(
'expand' => true,
'sort' => 10,
'requiredPermissions' => 'basis/vilesci:r'
),
'oehbeitragsverwaltung' => array(
'link' => site_url('codex/Oehbeitrag'),
'icon' => '',
'description' => 'Öhbeitragsverwaltung',
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'admin:w'
)
)
),
@@ -125,6 +133,13 @@ $config['navigation_header'] = array(
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'system/developer:r'
),
'errormonitoring' => array(
'link' => site_url('system/issues/Issues'),
'description' => 'Fehler Monitoring',
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'system/issues_verwalten:r'
)
)
)
+10 -6
View File
@@ -9,6 +9,13 @@
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"]
},
"requiredPermissions": {
"type": "array"
},
"description": {
"type": "array",
},
@@ -18,10 +25,6 @@
"title": {
"type": "array",
},
"type": {
"type": "string",
"enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"]
},
"sort": {
"type": "integer"
},
@@ -67,5 +70,6 @@
}
}
},
"required": ["type", "name"]
}
"required": ["type", "name", "requiredPermissions"]
}
@@ -0,0 +1,261 @@
<?php
if (! defined("BASEPATH")) exit("No direct script access allowed");
class Oehbeitrag extends Auth_Controller
{
const STUDIENSEMESTER_START = 'WS2020';
public function __construct()
{
parent::__construct(
array(
'index' => 'admin:r',// TODO which Berechtigung?
'getOehbeitraege' => 'admin:r',
'getValidStudiensemester' => 'admin:r',
'addOehbeitrag' => 'admin:rw',
'updateOehbeitrag' => 'admin:rw',
'deleteOehbeitrag' => 'admin:rw'
)
);
$this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->library('WidgetLib');
}
public function index()
{
$oehbeitraege = array();
$oehbeitragRes = $this->_loadOehbeitraege();
if (isError($oehbeitragRes))
show_error(getError($oehbeitragRes));
if (hasData($oehbeitragRes))
$oehbeitraege = getData($oehbeitragRes);
$this->load->view("codex/oehbeitrag.php", array('oehbeitraege' => $oehbeitraege));
}
/**
* Gets all valid, i.e. unassigned, Studiensemester.
*/
public function getValidStudiensemester()
{
$oehbeitrag_id = $this->input->get('oehbeitrag_id');
$oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null;
$studiensemester = array();
$studiensemesterres = $this->OehbeitragModel->getUnassignedStudiensemester(self::STUDIENSEMESTER_START, $oehbeitrag_id_arr);
if (isError($studiensemesterres))
{
$this->outputJsonError(getError($studiensemesterres));
return;
}
if (hasData($studiensemesterres))
$studiensemester = getData($studiensemesterres);
$this->outputJsonSuccess($studiensemester);
}
/**
* Gets all Öhbeiträge. Wrapper function for output as JSON.
*/
public function getOehbeitraege()
{
$this->outputJson($this->_loadOehbeitraege());
}
/**
* Adds an Öhbeitrag. Checks for errors beforehand.
*/
public function addOehbeitrag()
{
$studierendenbeitrag = $this->input->post('studierendenbeitrag');
$versicherung = $this->input->post('versicherung');
$von_studiensemester_kurzbz = $this->input->post('von_studiensemester_kurzbz');
$bis_studiensemester_kurzbz = $this->input->post('bis_studiensemester_kurzbz');
if ($bis_studiensemester_kurzbz == 'null')
$bis_studiensemester_kurzbz = null;
if (!$this->_checkAmount($studierendenbeitrag))
$this->outputJsonError('Ungültiger Studierendenbeitrag');
elseif (!$this->_checkAmount($versicherung))
$this->outputJsonError('Ungültige Versicherung');
else
{
$vonBisCheck = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz);
if (isError($vonBisCheck))
$this->outputJsonError(getError($vonBisCheck));
else
{
$data = array(
'studierendenbeitrag' => $studierendenbeitrag,
'versicherung' => $versicherung,
'von_studiensemester_kurzbz' => $von_studiensemester_kurzbz,
'bis_studiensemester_kurzbz' => $bis_studiensemester_kurzbz
);
$this->outputJson($this->OehbeitragModel->insert($data));
}
}
}
/**
* Updates an Öhbeitrag. Checks for errors beforehand.
*/
public function updateOehbeitrag()
{
$oehbeitrag_id = $this->input->post("oehbeitrag_id");
$data = $this->input->post("data");
if (!is_numeric($oehbeitrag_id) || isEmptyArray($data))
{
$this->outputJsonError("Ungültige Parameter");
return;
}
foreach ($data as $idx => $value)
{
if ($idx == 'studierendenbeitrag' || $idx == 'versicherung')
{
if (!$this->_checkAmount($value))
{
$this->outputJsonError("Ungültige(r) $idx");
return;
}
}
elseif ($idx == 'von_studiensemester_kurzbz' || $idx == 'bis_studiensemester_kurzbz')
{
$this->OehbeitragModel->addSelect('von_studiensemester_kurzbz, bis_studiensemester_kurzbz');
$vonBisStudiensemesterRes = $this->OehbeitragModel->load($oehbeitrag_id);
if (!hasData($vonBisStudiensemesterRes))
{
$this->outputJsonError("Fehler beim Holen des Öhbeitrags");
return;
}
$vonBisStudiensemester = getData($vonBisStudiensemesterRes);
$von_studiensemester_kurzbz = isset($data['von_studiensemester_kurzbz'])
? $data['von_studiensemester_kurzbz']
: $vonBisStudiensemester[0]->von_studiensemester_kurzbz;
if (isset($data['bis_studiensemester_kurzbz']))
{
$bis_studiensemester_kurzbz = $data['bis_studiensemester_kurzbz'] = $data['bis_studiensemester_kurzbz'] == 'null' ? null : $data['bis_studiensemester_kurzbz'];
}
else
$bis_studiensemester_kurzbz = $vonBisStudiensemester[0]->bis_studiensemester_kurzbz;
$checkStudiensemester = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id);
if (isError($checkStudiensemester))
{
$this->outputJsonError(getError($checkStudiensemester));
return;
}
}
}
$this->outputJson($this->OehbeitragModel->update($oehbeitrag_id, $data));
}
/**
* Deletes an Öhbeitrag.
*/
public function deleteOehbeitrag()
{
$oehbeitrag_id = $this->input->post("oehbeitrag_id");
$this->outputJson($this->OehbeitragModel->delete($oehbeitrag_id));
}
/**
* Loads all Öhbeiträge sorted by date descending.
* @return object
*/
private function _loadOehbeitraege()
{
$this->OehbeitragModel->addSelect('oehbeitrag_id, von_studiensemester_kurzbz, bis_studiensemester_kurzbz, studierendenbeitrag, versicherung, sem_von.start as von_datum, sem_bis.ende as bis_datum');
$this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_von', 'tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz');
$this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_bis', 'tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz', 'LEFT');
$this->OehbeitragModel->addOrder('sem_von.start', 'DESC');
return $this->OehbeitragModel->load();
}
/**
* Checks if an amount is numeric and not too big.
* @param $amount
* @return bool true if valid amount, false otherwise
*/
private function _checkAmount($amount)
{
return is_numeric($amount) && (float) $amount <= 99999.99;
}
/**
* Checks if a certain Von-Studiensemester is valid together with a Bis-Studiensemester.
* Checks for correct format, Von-Studiensemester cannot be after the Bis-Studiensemester,
* checks that semester are not overlapping with semester for existent Öhbeiträge.
* @param string $von_studiensemester_kurzbz
* @param string $bis_studiensemester_kurzbz
* @param int $oehbeitrag_id öhbeitrag to ignore, i.e. which is assignable (id of Öhbeitrag of the passed semesters)
* @return object array with true if assignable, with false if not
*/
private function _checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id = null)
{
$regex = "/^(WS|SS)\d{4}$/";
if (!preg_match($regex, $von_studiensemester_kurzbz))
return error("Ungültiges Von-Studiensemester");
if (!preg_match($regex, $bis_studiensemester_kurzbz) && $bis_studiensemester_kurzbz != null)
return error("Ungültiges Bis-Studiensemester");
$this->StudiensemesterModel->addSelect("start");
$vonStudiensemesterRes = $this->StudiensemesterModel->load($von_studiensemester_kurzbz);
if (!hasData($vonStudiensemesterRes))
return error("Fehler beim Holen von Von-Studiensemester");
$this->StudiensemesterModel->addSelect("start");
$bisStudiensemesterRes = $this->StudiensemesterModel->load($bis_studiensemester_kurzbz);
if (!hasData($bisStudiensemesterRes))
return error("Fehler beim Holen von Bis-Studiensemester");
$vonStudiensemester = getData($vonStudiensemesterRes)[0]->start;
$bisStudiensemester = getData($bisStudiensemesterRes)[0]->start;
if ($bis_studiensemester_kurzbz != null && new DateTime($vonStudiensemester) > new DateTime($bisStudiensemester))
return error("Von-Studiensemester größer als Bis-Studiensemester");
$oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null;
$assignableRes = $this->OehbeitragModel->checkIfStudiensemesterAssignable(
$von_studiensemester_kurzbz,
$bis_studiensemester_kurzbz,
$oehbeitrag_id_arr
);
if (isError($assignableRes))
return $assignableRes;
if (hasData($assignableRes))
{
$assignable = getData($assignableRes)[0];
if (!$assignable)
return error("Keine Zuweisung möglich, Semesterüberschneidung");
}
return success("Studiensemester gültig");
}
}
+6 -2
View File
@@ -129,6 +129,7 @@ class Statusgrund extends Auth_Controller
$aktiv = $this->input->post("aktiv") != null && $this->input->post("aktiv") == "on" ? true : false;
$bezeichnung_mehrsprachig = $this->input->post("bezeichnung_mehrsprachig");
$beschreibung = $this->input->post("beschreibung");
$statusgrund_kurzbz = $this->input->post("statusgrund_kurzbz");
for ($i = 0; $i < count($bezeichnung_mehrsprachig); $i++)
{
@@ -177,7 +178,8 @@ class Statusgrund extends Auth_Controller
$data = array(
"aktiv" => $aktiv,
"bezeichnung_mehrsprachig" => $bezeichnung_mehrsprachig,
"beschreibung" => $beschreibung
"beschreibung" => $beschreibung,
"statusgrund_kurzbz" => $statusgrund_kurzbz
);
$statusgrund = $this->StatusgrundModel->update($statusgrund_id, $data);
@@ -196,6 +198,7 @@ class Statusgrund extends Auth_Controller
$bezeichnung_mehrsprachig = $this->input->post("bezeichnung_mehrsprachig");
$beschreibung = $this->input->post("beschreibung");
$status_kurzbz = $this->input->post("status_kurzbz");
$statusgrund_kurzbz = $this->input->post("statusgrund_kurzbz");
for ($i = 0; $i < count($bezeichnung_mehrsprachig); $i++)
{
@@ -245,7 +248,8 @@ class Statusgrund extends Auth_Controller
"status_kurzbz" => $status_kurzbz,
"aktiv" => $aktiv,
"bezeichnung_mehrsprachig" => $bezeichnung_mehrsprachig,
"beschreibung" => $beschreibung
"beschreibung" => $beschreibung,
"statusgrund_kurzbz" => $statusgrund_kurzbz
);
$statusgrund = $this->StatusgrundModel->insert($data);
+71 -69
View File
@@ -16,7 +16,7 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
class AnrechnungJob extends JOB_Controller
{
const APPROVE_ANRECHNUNG_URI = '/lehre/anrechnung/ApproveAnrechnungUebersicht';
const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL = 'AnrechnungNotizSTGL';
@@ -30,7 +30,7 @@ class AnrechnungJob extends JOB_Controller
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->helper('url');
$this->load->helper('hlp_sancho_helper');
}
@@ -94,7 +94,7 @@ class AnrechnungJob extends JOB_Controller
}
$this->logInfo('End Anrechnung Grades Job', array('Number of Grades added'=>$cnt));
}
/**
* Deletes Zeugnisnoten 'angerechnet', when Anrechnung is rejected afterwards.
* E.g., when STGL first accepts, then withdraws and finally rejects the approvement.
@@ -102,7 +102,7 @@ class AnrechnungJob extends JOB_Controller
public function deleteAnrechnungGrades()
{
$this->logInfo('Start AnrechnungJob to delete Grades');
// Get all Zeungisnoten,
// WHERE note is angerechnet
// AND Anrechnung was rejected AFTER the Zeugnisnote was created
@@ -127,15 +127,15 @@ class AnrechnungJob extends JOB_Controller
AND status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). '
ORDER BY status.anrechnung_id, status.insertamum DESC
';
$db = new DB_Model();
$result = $db->execReadOnlyQuery($qry);
$cnt = 0;
if (hasData($result))
{
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
foreach (getData($result) as $row)
{
// Delete Zeugnisnote
@@ -144,20 +144,20 @@ class AnrechnungJob extends JOB_Controller
'student_uid' => $row->student_uid,
'studiensemester_kurzbz' => $row->studiensemester_kurzbz
));
// Count up
$cnt++;
}
}
$this->logInfo('End AnrechnungJob to delete Grades', array('Number of Grades deleted: ' => $cnt));
}
// Send Sancho mail to STGL with yesterdays new Anrechnungen
public function sendMailToSTGL()
{
$this->logInfo('Start AnrechnungJob to send emails to STGL about yesterdays new Anrechnungen.');
// Get all yesterdays Anrechnungen, that did not process further than first status
// (If Anrechnung is new, but STGL already started the process yesterday,
// he does not need to be informed about this new Anrechnung anymore)
@@ -167,38 +167,38 @@ class AnrechnungJob extends JOB_Controller
$this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)');
$this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id');
$this->AnrechnungModel->addOrder('lv.studiengang_kz, lv.bezeichnung');
$result = $this->AnrechnungModel->loadWhere(
'(lehre.tbl_anrechnung.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE
AND 1 = (SELECT COUNT(*) FROM lehre.tbl_anrechnung_anrechnungstatus status WHERE status.anrechnung_id = tbl_anrechnung.anrechnung_id)'
);
// Exit if there are no Anrechnungen
if (!$anrechnungen = getData($result)) {
$this->logInfo('ABORTED: Sending emails to STGL about yesterdays new Anrechnungen aborted - No new Anrechnungen found.');
exit;
}
$unique_studiengang_kz_arr = array_unique(array_column($anrechnungen, 'studiengang_kz'));
foreach ($unique_studiengang_kz_arr as $studiengang_kz)
{
// Get STG bezeichnung
$this->StudiengangModel->addSelect('UPPER( typ || kurzbz ) AS "stg_bezeichnung"');
$studiengang_bezeichnung = $this->StudiengangModel->load($studiengang_kz)->retval[0]->stg_bezeichnung;
// Get STGL mail address
list ($to, $vorname) = self::_getSTGLMailAddress($studiengang_kz);
// Get HTML table with new Anrechnungen of that STG plus amount of them
list ($anrechnungen_amount, $anrechnungen_table) = self::_getSTGLMailDataTable($studiengang_kz, $anrechnungen);
// Link to Antrag genehmigen dashboard
$url =
CIS_ROOT. 'cis/index.php?menu='.
CIS_ROOT. 'cis/menu.php?content_id=&content='.
CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI;
// Prepare mail content
$body_fields = array(
'vorname' => $vorname,
@@ -207,7 +207,7 @@ class AnrechnungJob extends JOB_Controller
'datentabelle' => $anrechnungen_table,
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
);
// Send mail
sendSanchoMail(
'AnrechnungAntragStellen',
@@ -216,17 +216,17 @@ class AnrechnungJob extends JOB_Controller
'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt'
);
}
$this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.');
}
/**
* Send Sancho mail to students, whose Anrechnungen were approved 24 hours ago.
*/
public function sendMailApproved(){
$this->logInfo('Start AnrechnungJob to send emails to students, whose Anrechnungen were approved.');
// Get all yesterdays approvements
$this->AnrechnungModel->addSelect('student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung');
$this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus status', 'anrechnung_id');
@@ -234,35 +234,35 @@ class AnrechnungJob extends JOB_Controller
$this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id');
$this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)');
$this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id');
$result = $this->AnrechnungModel->loadWhere(
'(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND
status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_APPROVED)
);
// Exit if there are no approved Anrechnungen
if (!hasData($result))
{
$this->logInfo('ABORTED sending emails to students, whose Anrechnungen were approved. No new approvements found.');
exit;
}
// Loop through students
foreach ($result->retval as $student)
{
$to = $student->student_uid. '@'. DOMAIN;
$anrede = $student->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr ';
$text = 'Ihrem Antrag auf Anerkennung nachgewiesener Kenntnisse der Lehrveranstaltung "'.
$student->bezeichnung. '" wurde stattgegeben.';
// Prepare mail content
$body_fields = array(
'anrede_name' => $anrede. $student->vorname. ' '. $student->nachname,
'text' => $text
);
// Send mail
sendSanchoMail(
'AnrechnungGenehmigen',
@@ -272,33 +272,35 @@ class AnrechnungJob extends JOB_Controller
);
}
}
/**
* Send Sancho mail to students, whose Anrechnungen were rejected 24 hours ago.
*/
public function sendMailRejected(){
$this->logInfo('Start AnrechnungJob to send emails to students, whose Anrechnungen were rejected.');
// Get all yesterdays rejections
$this->AnrechnungModel->addSelect('student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung, notiz.text');
$this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus status', 'anrechnung_id');
$this->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
$this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id');
$this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)');
$this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id');
$this->AnrechnungModel->addJoin('public.tbl_notizzuordnung', 'anrechnung_id');
$this->AnrechnungModel->addJoin('public.tbl_notiz notiz', 'notiz_id');
$this->AnrechnungModel->addOrder('notiz.insertamum', 'DESC');
$this->AnrechnungModel->addLimit(1);
$result = $this->AnrechnungModel->loadWhere(
'(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND
status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). ' AND
notiz.titel = '. $this->db->escape(self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL)
);
$qry = '
SELECT
student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung,
(SELECT text FROM public.tbl_notizzuordnung JOIN public.tbl_notiz USING(notiz_id)
WHERE tbl_notizzuordnung.anrechnung_id=tbl_anrechnung.anrechnung_id
AND tbl_notiz.titel='. $this->db->escape(self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL).'
ORDER BY tbl_notiz.insertamum DESC LIMIT 1) as text
FROM lehre.tbl_anrechnung
JOIN lehre.tbl_lehrveranstaltung lv USING(lehrveranstaltung_id)
JOIN public.tbl_student student USING(prestudent_id)
JOIN public.tbl_benutzer benutzer ON (benutzer.uid = student.student_uid)
JOIN public.tbl_person person USING(person_id)
WHERE EXISTS(SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus status WHERE
anrechnung_id=tbl_anrechnung.anrechnung_id AND
(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND
status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). ')
';
$db = new DB_Model();
$result = $db->execReadOnlyQuery($qry);
// Exit if there are no rejected Anrechnungen
if (!hasData($result))
@@ -306,26 +308,26 @@ class AnrechnungJob extends JOB_Controller
$this->logInfo('ABORTED sending emails to students, whose Anrechnungen were rejected. No new rejectments found.');
exit;
}
// Loop through students
foreach ($result->retval as $student)
{
$to = $student->student_uid. '@'. DOMAIN;
$anrede = $student->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr ';
$text = <<<html
wir haben Ihren Antrag auf Anerkennung nachgewiesener Kenntnisse geprüft und können die Lehrveranstaltung
"$student->bezeichnung" leider nicht anrechnen, weil die Gleichwertigkeit nicht festgestellt werden konnte.<br><br>
Begründung: $student->text
html;
// Prepare mail content
$body_fields = array(
'anrede_name' => $anrede. $student->vorname. ' '. $student->nachname,
'text' => $text
);
// Send mail
sendSanchoMail(
'AnrechnungGenehmigen',
@@ -334,14 +336,14 @@ html;
'Anerkennung nachgewiesener Kenntnisse: Ihr Antrag ist abgeschlossen'
);
}
}
// Get STGL mail address
private function _getSTGLMailAddress($studiengang_kz)
{
$result = $this->StudiengangModel->getLeitung($studiengang_kz);
// Get STGL mail address
if (hasData($result))
{
@@ -354,7 +356,7 @@ html;
else
{
$result = $this->StudiengangModel->load($studiengang_kz);
if (hasData($result))
{
return array(
@@ -364,7 +366,7 @@ html;
}
}
}
// Build HTML table with yesterdays new Anrechnungen of the given STG
private function _getSTGLMailDataTable($studiengang_kz, $anrechnungen)
{
@@ -377,7 +379,7 @@ html;
function ($anrechnung) use (&$studiengang_kz) {
return $anrechnung->studiengang_kz == $studiengang_kz;
});
// Amount of Anrechnungen
$amount = count($anrechnungen);
@@ -386,7 +388,7 @@ html;
<table style="width: 60%; border-collapse: collapse;" border="1" cellpadding="5">
<tbody>
';
foreach ($anrechnungen as $anrechnung)
{
// Head line for each LV bezeichnung
@@ -394,18 +396,18 @@ html;
{
$html .= '<tr><td><span><strong>' . $anrechnung->bezeichnung . '</strong></span></td></tr>';
}
$lv_bezeichnung = $anrechnung->bezeichnung;
// Row for each Anrechnung / student
$html .= '<tr><td><span>'. $anrechnung->vorname. ' '. $anrechnung->nachname. '</span></td></tr>';
}
$html .= '
</tbody>
</table>
';
return array($amount, $html);
}
}
@@ -85,7 +85,7 @@ class approveAnrechnungDetail extends Auth_Controller
// Get Anrechung data
$anrechnungData = $this->anrechnunglib->getAnrechnungData($anrechnung_id);
// Get Antrag data
$antragData = $this->anrechnunglib->getAntragData(
$anrechnungData->prestudent_id,
@@ -98,7 +98,7 @@ class approveAnrechnungDetail extends Auth_Controller
// Get Genehmigung data
$genehmigungData = $this->anrechnunglib->getGenehmigungData($anrechnung_id);
$viewData = array(
'antragData' => $antragData,
'anrechnungData' => $anrechnungData,
@@ -121,13 +121,13 @@ class approveAnrechnungDetail extends Auth_Controller
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
// Get STGLs person data
if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
{
show_error('Failed retrieving person data');
}
// Approve Anrechnung
foreach ($data as $item)
{
@@ -166,13 +166,13 @@ class approveAnrechnungDetail extends Auth_Controller
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
// Get STGLs person data
if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
{
show_error('Failed retrieving person data');
}
// Reject Anrechnung
foreach ($data as $item)
{
@@ -210,10 +210,10 @@ class approveAnrechnungDetail extends Auth_Controller
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
$retval = array();
$counter = 0;
foreach ($data as $item)
{
// Check if Anrechnungs-LV has lector
@@ -221,18 +221,18 @@ class approveAnrechnungDetail extends Auth_Controller
{
// Count up LV with no lector
$counter++;
// Break, if LV has no lector
break;
}
// Get full name of LV Leitung.
// If LV Leitung is not present, get full name of LV lectors.
$lector_arr = $this->anrechnunglib->getLectors($item['anrechnung_id']);
$empfehlungsanfrage_an = !isEmptyArray($lector_arr)
? implode(', ', array_column($lector_arr, 'fullname'))
: '';
// Request Recommendation
if($this->anrechnunglib->requestRecommendation($item['anrechnung_id']))
{
@@ -246,7 +246,7 @@ 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
@@ -255,11 +255,11 @@ class approveAnrechnungDetail extends Auth_Controller
if (!isEmptyArray($retval))
{
self::_sendSanchoMailToLectors($retval);
// Output json to ajax
return $this->outputJsonSuccess($retval);
}
// Output json to ajax
if (isEmptyArray($retval) && $counter > 0)
{
@@ -267,22 +267,22 @@ class approveAnrechnungDetail extends Auth_Controller
"Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
);
}
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
}
/**
* Withdraw approved / rejected Anrechnung and reset to 'inProgressDP'.
*/
public function withdraw()
{
$anrechnung_id = $this->input->post('anrechnung_id');
if (!is_numeric($anrechnung_id))
{
$this->terminateWithJsonError($this->p->t('ui', 'errorFelderFehlen'));
}
// Delete last status approved / rejected.
// If last status is 'approved', Genehmigung is resetted.
$result = $this->AnrechnungModel->withdrawApprovement($anrechnung_id);
@@ -291,13 +291,13 @@ class approveAnrechnungDetail extends Auth_Controller
{
$this->terminateWithJsonError(getError($result));
}
// Success output to AJAX
$this->outputJsonSuccess(array(
'status_bezeichnung' => $this->anrechnunglib->getLastAnrechnungstatus($anrechnung_id))
);
}
/**
* Withdraw request for reommendation and reset to 'inProgressDP'.
* This is only possible if the lector has not provided a recommendation yet.
@@ -305,69 +305,69 @@ class approveAnrechnungDetail extends Auth_Controller
public function withdrawRequestRecommendation()
{
$anrechnung_id = $this->input->post('anrechnung_id');
if (!is_numeric($anrechnung_id))
{
show_error('Wrong parameter.');
}
// Get boolean empfehlung of given Anrechnung
if (!$result = getData($this->AnrechnungModel->load($anrechnung_id))[0])
{
show_error('Failed loading Anrechnung');
}
$empfehlung = $result->empfehlung_anrechnung;
// Get last Anrechnungstatus
if (!$result = getData($this->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id))[0])
{
show_error('Failed loading last Anrechnungstatus');
}
$last_status = $result->status_kurzbz;
$anrechnungstatus_id = $result->anrechnungstatus_id;
// Return if Anrechnung was not waiting for recommendation or if Anrechnung has already been recommended
if ($last_status != self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR && !is_null($empfehlung))
if ($last_status != self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR || !is_null($empfehlung))
{
return $this->outputJsonError('No recommendation to withdraw.');
}
// Reset status to 'inProgressDP'
$result = $this->AnrechnungModel->deleteAnrechnungstatus($anrechnungstatus_id);
if (isError($result))
{
return $this->outputJsonError('Could not withdraw this application.');
}
// Success output to AJAX
return $this->outputJsonSuccess(array(
'status_bezeichnung' => $this->anrechnunglib->getLastAnrechnungstatus($anrechnung_id))
);
}
public function saveEmpfehlungsNotiz()
{
$anrechnung_id = $this->input->post('anrechnung_id');
$notiz_id = $this->input->post('notiz_id');
$empfehlungstext = $this->input->post('empfehlung_text');
// Validate data
if (isEmptyString($anrechnung_id))
{
$this->terminateWithJsonError($this->p->t('ui', 'systemFehler'));
}
// Save Empfehlungstext
$result = self::_saveEmpfehlungsNotiz($anrechnung_id, $empfehlungstext, $notiz_id);
if (isError($result))
{
$this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
}
// Output success message
$this->outputJsonSuccess($this->p->t('ui', 'gespeichert'));
}
@@ -386,10 +386,10 @@ class approveAnrechnungDetail extends Auth_Controller
// Check if user is entitled to read dms doc
self::_checkIfEntitledToReadDMSDoc($dms_id);
// Set filename to be used on downlaod
$filename = $this->anrechnunglib->setFilenameOnDownload($dms_id);
// Download file
$this->dmslib->download($dms_id, $filename);
}
@@ -475,7 +475,7 @@ class approveAnrechnungDetail extends Auth_Controller
show_error('You are not entitled to read this document');
}
/**
* Send mail to lectors asking for recommendation. (first to LV-Leitung, if not present to all lectors of lv)
* @param $mail_params
@@ -503,8 +503,8 @@ class approveAnrechnungDetail extends Auth_Controller
* Anyway this function will receive a unique array to avoid sending more mails to one and the same lector.
* **/
$lector_arr = $this->_getLectors($anrechnung_arr);
// Send mail to lectors
foreach ($lector_arr as $lector)
@@ -594,11 +594,11 @@ class approveAnrechnungDetail extends Auth_Controller
return $lector_arr;
}
private function _saveEmpfehlungsNotiz($anrechnung_id, $empfehlungstext, $notiz_id)
{
$this->load->model('person/Notiz_model', 'NotizModel');
if (!isEmptyString($notiz_id))
{
return $this->NotizModel->update(
@@ -610,15 +610,15 @@ class approveAnrechnungDetail extends Auth_Controller
)
);
}
return $this->NotizModel->addNotizForAnrechnung(
$anrechnung_id,
self::ANRECHNUNG_NOTIZTITEL_EMPFEHLUNGSNOTIZ_BY_STGL,
trim($empfehlungstext),
$this->_uid
);
}
}
+2 -2
View File
@@ -31,7 +31,7 @@ class FAS_UDF extends Auth_Controller
if (isset($person_id) && is_numeric($person_id))
{
if ($this->PersonModel->hasUDF())
if ($this->PersonModel->udfsExistAndDefined())
{
$personUdfs = $this->PersonModel->getUDFs($person_id);
$data['person_id'] = $person_id;
@@ -41,7 +41,7 @@ class FAS_UDF extends Auth_Controller
if (isset($prestudent_id) && is_numeric($prestudent_id))
{
if ($this->PrestudentModel->hasUDF())
if ($this->PrestudentModel->udfsExistAndDefined())
{
$prestudentUdfs = $this->PrestudentModel->getUDFs($prestudent_id);
$data['prestudent_id'] = $prestudent_id;
@@ -124,20 +124,20 @@ class InfoCenter extends Auth_Controller
'saveAbsage' => 'infocenter:rw',
'saveFreigabe' => 'infocenter:rw',
'getNotiz' => 'infocenter:r',
'saveNotiz' => 'infocenter:rw',
'saveNotiz' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
'updateNotiz' => 'infocenter:rw',
'reloadZgvPruefungen' => 'infocenter:r',
'reloadMessages' => 'infocenter:r',
'reloadDoks' => 'infocenter:r',
'reloadNotizen' => 'infocenter:r',
'reloadNotizen' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'reloadLogs' => 'infocenter:r',
'outputAkteContent' => 'infocenter:r',
'getPostponeDate' => 'infocenter:r',
'outputAkteContent' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'getPostponeDate' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'park' => 'infocenter:rw',
'unpark' => 'infocenter:rw',
'setOnHold' => 'infocenter:rw',
'removeOnHold' => 'infocenter:rw',
'getStudienjahrEnd' => 'infocenter:r',
'removeOnHold' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
'getStudienjahrEnd' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'setNavigationMenuArrayJson' => 'infocenter:r',
'getAbsageData' => 'infocenter:r',
'saveAbsageForAll' => 'infocenter:rw'
@@ -0,0 +1,142 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Issues extends Auth_Controller
{
private $_uid;
const FUNKTION_KURZBZ = 'ass'; // // user having this funktion can see issues for oes assigned with this funktion
const BERECHTIGUNG_KURZBZ = 'system/issues_verwalten'; // user having this permission can see issues for oes assigned with this permission
public function __construct()
{
parent::__construct(
array(
'index' => array(self::BERECHTIGUNG_KURZBZ.':r'),
'changeIssueStatus' => array(self::BERECHTIGUNG_KURZBZ.':rw')
)
);
// Load libraries
$this->load->library('IssuesLib');
$this->load->library('PermissionLib');
$this->load->library('WidgetLib');
$this->loadPhrases(
array(
'global',
'ui',
'filter'
)
);
// Load models
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
$this->_setAuthUID(); // sets property uid
}
public function index()
{
$oes_for_issues = $this->_getOesForIssues();
$this->load->view(
'system/issues/issues',
$oes_for_issues
);
}
/**
* Initializes issues status change
*/
public function changeIssueStatus()
{
$issue_ids = $this->input->post('issue_ids');
$status_kurzbz = $this->input->post('status_kurzbz');
$verarbeitetvon = $this->_uid;
$errors = array();
foreach ($issue_ids as $issue_id)
{
$issueRes = $this->issueslib->changeIssueStatus($issue_id, $status_kurzbz, $verarbeitetvon);
if (isError($issueRes))
$errors[] = getError($issueRes);
}
if (!isEmptyArray($errors))
$this->outputJsonError(implode(", ", $errors));
else
$this->outputJsonSuccess("Status erfolgreich aktualisiert");
}
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
/**
* Gets oes of logged in user, which are needed to display issues of the user.
* This includes oes assigned by a funktio and as the issue permission.
* @return array
*/
private function _getOesForIssues()
{
// get oes of uid for which there is a current funktion
$all_funktionen_oe_kurzbz = array();
$oe_kurzbz_for_funktion = array();
$benutzerfunktionRes = $this->BenutzerfunktionModel->getBenutzerFunktionByUid($this->_uid, null, date('Y-m-d'), date('Y-m-d'));
if (isError($benutzerfunktionRes))
show_error(getError($benutzerfunktionRes));
if (hasData($benutzerfunktionRes))
{
foreach (getData($benutzerfunktionRes) as $benutzerfunktion)
{
$all_funktionen_oe_kurzbz[$benutzerfunktion->oe_kurzbz][] = $benutzerfunktion->funktion_kurzbz;
// separate oes for the funktion needed for displaying issues
if ($benutzerfunktion->funktion_kurzbz == self::FUNKTION_KURZBZ)
{
$oe_kurzbz_for_funktion[] = $benutzerfunktion->oe_kurzbz;
// permission also for all oes under the oe for which funktion is assigend
$childOesFunktionRes = $this->OrganisationseinheitModel->getChilds($benutzerfunktion->oe_kurzbz);
if (isError($childOesFunktionRes))
show_error(getError($childOesFunktionRes));
if (hasData($childOesFunktionRes))
{
$childOesFunktion = getData($childOesFunktionRes);
foreach ($childOesFunktion as $childOeFunktion)
{
if (!in_array($childOeFunktion->oe_kurzbz, $oe_kurzbz_for_funktion))
$oe_kurzbz_for_funktion[] = $childOeFunktion->oe_kurzbz;
}
}
}
}
}
// add oes for which there is the "manage issues" Berechtigung
if (!$oe_kurzbz_berechtigt = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_KURZBZ))
show_error('Keine Berechtigung oder Fehler bei Berechtigungsprüfung');
$all_oe_kurzbz_berechtigt = array_unique(array_merge($oe_kurzbz_for_funktion, $oe_kurzbz_berechtigt));
return array(
'all_funktionen_oe_kurzbz' => $all_funktionen_oe_kurzbz,
'all_oe_kurzbz_berechtigt' => $all_oe_kurzbz_berechtigt
);
}
}
+2 -1
View File
@@ -211,7 +211,7 @@ class Filters extends FHC_Controller
public function setNavigationMenu()
{
// Generates the filters structure array
$filterMenu = $this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE));
$this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE));
$this->outputJsonSuccess('Success');
}
@@ -271,3 +271,4 @@ class Filters extends FHC_Controller
}
}
}
+2 -16
View File
@@ -26,9 +26,6 @@ class UDF extends FHC_Controller
// Loads the UDFLib with HTTP GET/POST parameters
$this->_loadUDFLib();
// Checks if the caller is allow to use this UDF widget
$this->_isAllowed();
}
//------------------------------------------------------------------------------------------------------------------
@@ -39,7 +36,6 @@ class UDF extends FHC_Controller
*/
public function saveUDFs()
{
$udfUniqueId = $this->input->post(self::UDF_UNIQUE_ID);
$udfs = $this->input->post(UDFLib::UDFS_ARG_NAME);
if (!isEmptyString($udfs))
@@ -47,7 +43,7 @@ class UDF extends FHC_Controller
$jsonDecodedUDF = json_decode($udfs);
if ($jsonDecodedUDF != null)
{
$this->outputJson($this->udflib->saveUDFs($udfUniqueId, $jsonDecodedUDF));
$this->outputJson($this->udflib->saveUDFs($jsonDecodedUDF));
}
else
{
@@ -63,17 +59,6 @@ class UDF extends FHC_Controller
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Checks if the user is allowed to use this UDFWidget
*/
private function _isAllowed()
{
if (!$this->udflib->isAllowed())
{
$this->terminateWithJsonError('You are not allowed to access to this content');
}
}
/**
* Loads the UDFLib with the UDF_UNIQUE_ID parameter
* If the parameter UDF_UNIQUE_ID is not given then the execution of the controller is terminated and
@@ -105,3 +90,4 @@ class UDF extends FHC_Controller
}
}
}
+96 -60
View File
@@ -86,7 +86,7 @@ class DB_Model extends CI_Model
if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL);
// If this table has UDF and the validation of them is ok
if (isError($validate = $this->_manageUDFs($data, $this->dbTable))) return $validate;
if (isError($validate = $this->_prepareUDFsWrite($data, $this->dbTable))) return $validate;
// DB-INSERT
$insert = $this->db->insert($this->dbTable, $data);
@@ -137,7 +137,7 @@ class DB_Model extends CI_Model
if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL);
// If this table has UDF and the validation of them is ok
if (isError($validate = $this->_manageUDFs($data, $this->dbTable, $id))) return $validate;
if (isError($validate = $this->_prepareUDFsWrite($data, $this->dbTable, $id))) return $validate;
$tmpId = $id;
@@ -670,6 +670,7 @@ class DB_Model extends CI_Model
/**
* Returns all the UDF contained in this table ($dbTable)
* If no UDF are present, an empty array will be returned
* NOTE: only the UDFs that the logged user is allowed to read are loaded by this method
*/
public function getUDFs($id, $udfName = null)
{
@@ -700,9 +701,9 @@ class DB_Model extends CI_Model
}
/**
* Checks if this table has the field udf_values
* Checks if this table has the field udf_values and if there is a UDF definition for this table
*/
public function hasUDF()
public function udfsExistAndDefined()
{
if ($this->fieldExists(UDFLib::COLUMN_NAME))
{
@@ -844,25 +845,25 @@ class DB_Model extends CI_Model
}
/**
* Wrapper method for UDFLib->manageUDFs
* Wrapper method for UDFLib->prepareUDFsWrite
*/
private function _manageUDFs(&$data, $schemaAndTable, $id = null)
private function _prepareUDFsWrite(&$data, $schemaAndTable, $id = null)
{
$manageUDFs = success();
$prepareUDFsWrite = success();
if ($this->hasUDF())
if ($this->udfsExistAndDefined())
{
if ($id != null)
{
$manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable, $this->getUDFs($id));
$prepareUDFsWrite = $this->udflib->prepareUDFsWrite($data, $this->dbTable, $this->_getUDFsNoPerms($id));
}
else
{
$manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable);
$prepareUDFsWrite = $this->udflib->prepareUDFsWrite($data, $this->dbTable);
}
}
return $manageUDFs;
return $prepareUDFsWrite;
}
/**
@@ -874,9 +875,10 @@ class DB_Model extends CI_Model
*/
private function _toPhp($result)
{
$udfs = false; // if UDFs are inside the given result set
$toPhp = $result; // if there is nothing to convert then return the result from DB
// If it's an object its fields will be parsed to find booleans and arrays types
// If it's an object its fields will be parsed to find booleans, arrays and UDFs types
if (is_object($result))
{
$toBeConverterdArray = array(); // Fields to be converted
@@ -884,40 +886,48 @@ class DB_Model extends CI_Model
$this->executedQueryMetaData = $result->field_data(); // Fields information
$this->executedQueryListFields = $result->list_fields(); // List of the retrieved fields
for ($i = 0; $i < count($this->executedQueryMetaData); $i++) // Looking for booleans and arrays
// Looking for booleans, arrays and UDFs
foreach ($this->executedQueryMetaData as $eqmd)
{
// If array type, boolean type OR a UDF
if (strpos($this->executedQueryMetaData[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false
|| $this->executedQueryMetaData[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE
|| $this->udflib->isUDFColumn($this->executedQueryMetaData[$i]->name, $this->executedQueryMetaData[$i]->type))
if (strpos($eqmd->type, DB_Model::PGSQL_ARRAY_TYPE) !== false
|| $eqmd->type == DB_Model::PGSQL_BOOLEAN_TYPE
|| $this->udflib->isUDFColumn($eqmd->name, $eqmd->type))
{
// Name and type of the field to be converted
$toBeConverted = new stdClass();
// Set the type of the field to be converted
$toBeConverted->type = $this->executedQueryMetaData[$i]->type;
// Set the name of the field to be converted
$toBeConverted->name = $this->executedQueryMetaData[$i]->name;
// Add the field to be converted to $toBeConverterdArray
array_push($toBeConverterdArray, $toBeConverted);
// If UDFs are inside this result set
if ($this->udflib->isUDFColumn($eqmd->name, $eqmd->type))
{
$udfs = true;
}
else // all the other cases
{
// Name and type of the field to be converted
$toBeConverted = new stdClass();
// Set the type of the field to be converted
$toBeConverted->type = $eqmd->type;
// Set the name of the field to be converted
$toBeConverted->name = $eqmd->name;
// Add the field to be converted to $toBeConverterdArray
array_push($toBeConverterdArray, $toBeConverted);
}
}
}
// If there is something to convert, otherwhise don't lose time
if (count($toBeConverterdArray) > 0)
{
// Returns the array of objects, each of them represents a DB record
$resultsArray = $result->result();
// Looping on results
for ($i = 0; $i < count($resultsArray); $i++)
{
// Single element
$resultElement = $resultsArray[$i];
// Looping on fields to be converted
for ($j = 0; $j < count($toBeConverterdArray); $j++)
{
// Single element
$toBeConverted = $toBeConverterdArray[$j];
// Returns the array of objects, each of them represents a DB record
$resultsArray = $result->result();
// If in this result set there are UDFs then prepare them
if ($udfs) $this->udflib->prepareUDFsRead($resultsArray, $this->dbTable);
// If there is something to convert, otherwhise don't waste time
if (!isEmptyArray($toBeConverterdArray))
{
// Looping on results
foreach ($resultsArray as $resultElement)
{
// Looping on fields to be converted
foreach ($toBeConverterdArray as $toBeConverted)
{
// Array type
if (strpos($toBeConverted->type, DB_Model::PGSQL_ARRAY_TYPE) !== false)
{
@@ -931,30 +941,12 @@ class DB_Model extends CI_Model
{
$resultElement->{$toBeConverted->name} = $this->pgBoolPhp($resultElement->{$toBeConverted->name});
}
// UDF
elseif ($this->udflib->isUDFColumn($toBeConverted->name, $toBeConverted->type))
{
$jsonValues = json_decode($resultElement->{$toBeConverted->name}); // decode UDFs values
if ($jsonValues != null) // if decode is ok
{
// For every UDF
foreach ($jsonValues as $key => $value)
{
$resultElement->{$key} = $value; // create a new element called like the UDF
}
}
unset($resultElement->{UDFLib::COLUMN_NAME}); // remove udf_values from the response
}
}
}
// Returns DB data as an array
$toPhp = $resultsArray;
}
// And returns DB data as an array
else
{
$toPhp = $result->result();
}
// Returns DB data as an array
$toPhp = $resultsArray;
}
return $toPhp;
@@ -998,4 +990,48 @@ class DB_Model extends CI_Model
{
if ($this->debugMode) $this->loglib->logDebug($this->db->last_query());
}
/**
* Returns all the UDF contained in this table ($dbTable)
* If no UDF are present, an empty array will be returned
* NOTE: it returns all the UDFs, does _not_ check the permissions
*/
private function _getUDFsNoPerms($id)
{
$udfs = array();
$this->db->select(UDFLib::COLUMN_NAME, true); // get only the UDF column
// Primary key management
$tmpId = $id;
// Check for composite Primary Key
if (is_array($id))
{
if (isset($id[0]))
{
$tmpId = $this->_arrayCombine($this->pk, $id);
}
}
elseif ($id != null)
{
$tmpId = array($this->pk => $id);
}
// Read the record from the table
$result = $this->db->get_where($this->dbTable, $tmpId);
// If was a success and there are data
if ($result && count($result->result()) == 1)
{
// Get the UDF column and decode it from JSON
$jsonValues = json_decode($result->result()[0]->{UDFLib::COLUMN_NAME});
// If the JSON convertion was fine convert the object to an array
if ($jsonValues != null) $udfs = get_object_vars($jsonValues);
}
return $udfs;
}
}
+13
View File
@@ -70,6 +70,19 @@ abstract class JQW_Controller extends JOB_Controller
return $jobs;
}
/**
* To get all the jobs specified by the given parameters
*/
protected function getJobsByTypeStatus($type, $status)
{
$jobs = $this->jobsqueuelib->getJobsByTypeStatus($type, $status);
// If an error occurred then log it in database
if (isError($jobs)) $this->logError(getError($jobs), array($type, $status));
return $jobs;
}
/**
* To get all the jobs specified by the given parameters
*/
+9 -5
View File
@@ -266,6 +266,7 @@ class FilterWidgetLib
$whereParameters = array(
'app' => $app,
'dataset_name' => $datasetName,
'person_id' => null,
'default_filter' => true
);
@@ -738,8 +739,10 @@ class FilterWidgetLib
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
// Loads all the filters related to this page (same dataset_name and same app name)
$filters = $this->_ci->FiltersModel->getFiltersByAppDatasetName(
$session[self::APP], $session[self::DATASET_NAME]
$filters = $this->_ci->FiltersModel->getFiltersByAppDatasetNamePersonId(
$session[self::APP],
$session[self::DATASET_NAME],
getAuthPersonId()
);
// If filters were loaded
@@ -813,9 +816,6 @@ class FilterWidgetLib
}
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Return an unique string that identify this filter widget
* NOTE: The default value is the URI where the FilterWidget is called
@@ -857,6 +857,9 @@ class FilterWidgetLib
$this->_filterUniqueId = $filterUniqueId;
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Generates a condition for a SQL where clause using the given applied filter definition.
* By default an empty string is returned.
@@ -972,3 +975,4 @@ class FilterWidgetLib
return $pos;
}
}
+244
View File
@@ -0,0 +1,244 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Library for writing and reading issues (problems in fhcomplete system which need resolving)
*/
class IssuesLib
{
private $_ci; // Code igniter instance
const APP_INDEX = 'app';
const INSERTVON_INDEX = 'insertvon';
const FALLBACK_FEHLERCODE_INDEX = 'fallbackFehlercode';
const STATUS_NEU = 'new';
const STATUS_IN_BEARBEITUNG = 'inProgress';
const STATUS_BEHOBEN = 'resolved';
const ERRORTYPE_CODE = 'error';
const WARNINGTYPE_CODE = 'warning';
public function __construct($params = null)
{
$this->_ci =& get_instance();
// Properties default values
$this->_app = 'core';
$this->_insertvon = 'system';
$this->_fallbackFehlercode = 'UNKNOWN_ERROR';
// If parameters are given then overwrite the default values
if (!isEmptyArray($params)) $this->setConfigs($params);
// load models
$this->_ci->load->model('system/Issue_model', 'IssueModel');
$this->_ci->load->model('system/Fehler_model', 'FehlerModel');
}
// --------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Store configuration parameters for this lib
*/
public function setConfigs($params)
{
// If parameters are given then overwrite the default values
if (!isEmptyArray($params))
{
if (isset($params[self::APP_INDEX])) $this->_app = $params[self::APP_INDEX];
if (isset($params[self::INSERTVON_INDEX])) $this->_insertvon = $params[self::INSERTVON_INDEX];
if (isset($params[self::FALLBACK_FEHLERCODE_INDEX])) $this->_fallbackFehlercode = $params[self::FALLBACK_FEHLERCODE_INDEX];
}
}
/**
* Adds an Fhc issue, i.e. an internal, self-defined issue.
* @param string $fehler_kurzbz short unique text name of the issue
* @param int $person_id
* @param string $oe_kurzbz
* @param array $fehlertext_params params for sprint replace of error text in system.tbl_fehler
* @return object success or error
*/
public function addFhcIssue($fehler_kurzbz, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null)
{
$fehlerRes = $this->_ci->FehlerModel->loadWhere(array('fehler_kurzbz' => $fehler_kurzbz));
if (hasData($fehlerRes))
{
$fehlercode = getData($fehlerRes)[0]->fehlercode;
return $this->_addIssue($fehlercode, $person_id, $oe_kurzbz, $fehlertext_params);
}
else
return error("Fehler $fehler_kurzbz nicht gefunden");
}
/**
* Adds an external issue, already defined externally by another system.
* @param string $fehlercode_extern the error code in the external system
* @param string $inhalt_extern error text in external system
* @param int $person_id
* @param int $oe_kurzbz
* @param array $fehlertext_params params for replacement of parts of error text
* @param bool $force_predefined if true, only predefined external issues are added
* @return object success or error
*/
public function addExternalIssue($fehlercode_extern, $inhalt_extern, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null, $force_predefined = false)
{
if (isEmptyString($fehlercode_extern))
return error("fehlercode_extern fehlt");
// get external fehlercode (unique for each app)
$this->_ci->FehlerModel->addSelect('fehlercode');
$fehlerRes = $this->_ci->FehlerModel->loadWhere(
array(
'fehlercode_extern' => $fehlercode_extern,
'app' => $this->_app
)
);
if (isError($fehlerRes))
return $fehlerRes;
$fehlerData = getData($fehlerRes)[0];
// check if there is a predefined custom error for the external issue
if (hasData($fehlerRes))
{
// if found, use the code
$fehlercode = $fehlerData->fehlercode;
}
elseif ($force_predefined === true)
{
// only added if predefined
return success("No definition found - not added");
}
else
{
// if predefined error is not found, insert with fallback code
$fehlercode = $this->_fallbackFehlercode;
}
// add external issue
return $this->_addIssue($fehlercode, $person_id, $oe_kurzbz, $fehlertext_params, $fehlercode_extern, $inhalt_extern);
}
/**
* Changes status of an issue.
* @param int $issue_id
* @param string $status_kurzbz the new status
* @param string $verarbeitetvon uid of person changing the status (needed for in Bearbeitung and behoben)
* @return success or error
*/
public function changeIssueStatus($issue_id, $status_kurzbz, $verarbeitetvon = null)
{
if (!isset($issue_id) || !is_numeric($issue_id))
return error("Issue Id muss korrekt gesetzt sein.");
// check if given status is same as existing
$this->_ci->IssueModel->addSelect('status_kurzbz');
$currStatus = $this->_ci->IssueModel->load($issue_id);
if (hasData($currStatus))
{
if (getData($currStatus)[0]->status_kurzbz == $status_kurzbz)
return success("Gleicher Status bereits gesetzt");
}
else
return error("Fehler beim Holen des Status");
$data = array(
'status_kurzbz' => $status_kurzbz,
'updatevon' => $verarbeitetvon,
'updateamum' => date('Y-m-d H:i:s')
);
if ($status_kurzbz == self::STATUS_NEU)
{
$data['verarbeitetvon'] = null;
}
if ($status_kurzbz == self::STATUS_NEU || $status_kurzbz == self::STATUS_IN_BEARBEITUNG)
{
$data['verarbeitetamum'] = null;
}
if ($status_kurzbz == self::STATUS_IN_BEARBEITUNG || $status_kurzbz == self::STATUS_BEHOBEN)
{
if (isset($verarbeitetvon))
$data['verarbeitetvon'] = $verarbeitetvon;
else
return error("Verarbeitetvon nicht gesetzt");
}
if ($status_kurzbz == self::STATUS_BEHOBEN)
$data['verarbeitetamum'] = date('Y-m-d H:i:s');
return $this->_ci->IssueModel->update(
array(
'issue_id' => $issue_id
),
$data
);
}
/**
* Adds an issue.
* @param $fehlercode
* @param int $person_id
* @param string $oe_kurzbz
* @param array $fehlertext_params
* @param string $fehlercode_extern
* @param string $inhalt_extern
* @return object success or error
*/
private function _addIssue($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null, $fehlercode_extern = null, $inhalt_extern = null)
{
if (isEmptyString($person_id) && isEmptyString($oe_kurzbz))
return error("Person_id oder oe_kurzbz muss gesetzt sein.");
// get fehlertextVorlage and replace it with params
$fehlerRes = $this->_ci->FehlerModel->load($fehlercode);
if (hasData($fehlerRes))
{
$fehlertextVorlage = getData($fehlerRes)[0]->fehlertext;
$fehlertext = isEmptyArray($fehlertext_params) ? $fehlertextVorlage : vsprintf($fehlertextVorlage, $fehlertext_params);
$openIssuesCountRes = $this->_ci->IssueModel->getOpenIssueCount($fehlercode, $person_id, $oe_kurzbz, $fehlercode_extern);
if (hasData($openIssuesCountRes))
{
// don't insert if issue is already open
// already open - status new with same fehlercode or same fehlercode-extern (if set)
$openIssueCount = getData($openIssuesCountRes)[0]->anzahl_open_issues;
if ($openIssueCount == 0)
{
return $this->_ci->IssueModel->insert(
array(
'fehlercode' => $fehlercode,
'fehlercode_extern' => $fehlercode_extern,
'inhalt' => $fehlertext,
'inhalt_extern' => $inhalt_extern,
'person_id' => $person_id,
'oe_kurzbz' => $oe_kurzbz,
'datum' => date('Y-m-d H:i:s'),
'status_kurzbz' => self::STATUS_NEU,
'insertvon' => $this->_insertvon
)
);
}
else
return success($openIssueCount);
}
else
return error("Anzahl offener Issues konnte nicht ermittelt werden.");
}
else
return error("Fehler $fehlercode nicht gefunden");
}
}
+12
View File
@@ -72,6 +72,18 @@ class JobsQueueLib
return $this->_ci->JobsQueueModel->loadWhere(array('status' => self::STATUS_NEW, 'type' => $type));
}
/**
* To get all the jobs specified by the given parameters
*/
public function getJobsByTypeStatus($type, $status)
{
$this->_ci->JobsQueueModel->resetQuery();
$this->_ci->JobsQueueModel->addOrder('creationtime', 'DESC');
return $this->_ci->JobsQueueModel->loadWhere(array('status' => $status, 'type' => $type));
}
/**
* To get all the jobs specified by the given parameters
*/
+295 -126
View File
@@ -30,13 +30,14 @@ class UDFLib
// ...to specify permissions that are needed to use this TableWidget
const REQUIRED_PERMISSIONS_PARAMETER = 'requiredPermissions';
const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib
const PERMISSION_TYPE_READ = 'r';
const PERMISSION_TYPE_WRITE = 'w';
// ...to specify the primary key name and value
const PRIMARY_KEY_NAME = 'primaryKeyName';
const PRIMARY_KEY_VALUE = 'primaryKeyValue';
const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib
const PERMISSION_TYPE = 'rw';
// HTML components
const LABEL = 'title';
const TITLE = 'description';
@@ -76,10 +77,10 @@ class UDFLib
// Public methods
/**
* UDFWidget
*/
public function UDFWidget($args, $htmlArgs = array())
{
* UDFWidget
*/
public function UDFWidget($args, $htmlArgs = array())
{
if ((isset($args[self::SCHEMA_ARG_NAME]) && !isEmptyString($args[self::SCHEMA_ARG_NAME]))
&& (isset($args[self::TABLE_ARG_NAME]) && !isEmptyString($args[self::TABLE_ARG_NAME])))
{
@@ -112,16 +113,17 @@ class UDFLib
show_error(self::TABLE_ARG_NAME.' parameter is missing!');
}
}
}
}
/**
/**
* It renders the HTML of the UDF
*
* NOTE: When this method is called $widgetData contains different data from
* parameter $args in the constructor
*/
public function displayUDFWidget(&$widgetData)
public function displayUDFWidget(&$widgetData)
{
$field = null;
$schema = $widgetData[self::SCHEMA_ARG_NAME]; // schema attribute
$table = $widgetData[self::TABLE_ARG_NAME]; // table attribute
@@ -133,7 +135,7 @@ class UDFLib
$udfResults = $this->_loadUDF($schema, $table); // loads UDF definition
if (hasData($udfResults))
{
$udf = $udfResults->retval[0]; // only one record is loaded
$udf = getData($udfResults)[0]; // only one record is loaded
if (isset($udf->jsons))
{
$jsonSchemas = json_decode($udf->jsons); // decode the json schema
@@ -155,7 +157,7 @@ class UDFLib
$found = false; // used to check if the field is found or not in the json schema
$this->_sortJsonSchemas($jsonSchemasArray); // Sort the list of UDF by sort property
// Loops through json schemas
foreach ($jsonSchemasArray as $jsonSchema)
{
@@ -169,21 +171,37 @@ class UDFLib
{
show_error(sprintf('%s.%s: Attribute "name" not present in the json schema', $schema, $table));
}
// If the requiredPermissions property is not present then show an error
if (!isset($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
{
show_error(sprintf('%s.%s: Attribute "requiredPermissions" not present in the json schema', $schema, $table));
}
// Set the required permissions for this UDF
$this->_setRequiredPermissions($jsonSchema->{self::NAME}, $jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER});
// If a UDF is specified and is present in the json schemas list or no UDF is specified
if ((isset($field) && $field == $jsonSchema->{self::NAME}) || !isset($field))
{
// Set attributes using phrases
$this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// If the user has the permissions to read this field
if ($this->_readAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
{
// Set attributes using phrases
$this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// Set validation attributes
$this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// Set validation attributes
$this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// Set name and id attributes
$this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// Set name and id attributes
$this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// Render the HTML for this UDF
$this->_render($jsonSchema, $widgetData);
// Set if the field is in read only mode
$this->_setReadOnly($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
// Render the HTML for this UDF
$this->_render($jsonSchema, $widgetData);
}
// otherwise the UDF is not displayed
// If a UDf is specified and it was found then stop looking through this list
if (isset($field) && $field == $jsonSchema->{self::NAME})
@@ -213,12 +231,97 @@ class UDFLib
show_error(sprintf('%s.%s: Does not contain "jsons" field', $schema, $table));
}
}
}
}
/**
* Manage UDFs
* UDFs permissions check and convertion to read them from database
*/
public function manageUDFs(&$data, $schemaAndTable, $udfValues = null)
public function prepareUDFsRead(&$data, $schemaAndTable, $udfValues = null)
{
$this->_ci->load->model('system/UDF_model', 'UDFModel');
// Retrieves UDFs definitions for this table
$resultUDFsDefinitions = $this->_ci->UDFModel->getUDFsDefinitions($schemaAndTable);
// If an error occurred while reading from database
if (isError($resultUDFsDefinitions))
{
$data = array(); // then set data as an empty array
return; // and exit from this method
}
// If there are no UDFs defined for this table the return
if (!hasData($resultUDFsDefinitions)) return;
// If not an error and has data, decodes json that define the UDFs for this table
$decodedUDFDefinitions = json_decode(
getData($resultUDFsDefinitions)[0]->{self::COLUMN_JSON_DESCRIPTION}
);
// Looping on results, resultElement is an object that represent a database record
foreach ($data as $resultElement)
{
// Decode the JSON column udf_values
$udfColumn = json_decode($resultElement->{self::COLUMN_NAME});
// If this is not a valid JSON then skip to the next database record
if ($udfColumn == null) continue;
// For each UDF column of this database record
foreach (get_object_vars($udfColumn) as $columnName => $columnValue)
{
$udfColumnToBeRemoved = $columnName; // let's try to remove it
// Loops through the UDFs definitions
foreach ($decodedUDFDefinitions as $decodedUDFDefinition)
{
// If the column exists in the UDF definition
if ($columnName == $decodedUDFDefinition->{self::NAME})
{
$udfColumnToBeRemoved = null; // then keep it
}
}
// If in this record have been found a _not_ defined UDF then remove it
if (!isEmptyString($udfColumnToBeRemoved)) unset($udfColumn->{$udfColumnToBeRemoved});
}
// Loops through the UDFs definitions
foreach ($decodedUDFDefinitions as $decodedUDFDefinition)
{
// Checks if the requiredPermissions is available and it is a valid array or a valid string
if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
&& (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
|| !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})))
{
// Then check if the user has the permissions to read such UDF
if (!$this->_readAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))
{
// If not then remove the UDF from the result set
unset($udfColumn->{$decodedUDFDefinition->{self::NAME}});
}
}
else // If not then remove the UDF from the result set
{
unset($udfColumn->{$decodedUDFDefinition->{self::NAME}});
}
}
// Add the defined and permitted UDF columns to the record set
foreach (get_object_vars($udfColumn) as $columnName => $columnValue)
{
$resultElement->{$columnName} = $columnValue;
}
}
// And finally remove the UDFs column
unset($resultElement->{self::COLUMN_NAME});
}
/**
* UDFs validation and permissions check to write them into database
*/
public function prepareUDFsWrite(&$data, $schemaAndTable, $udfValues = null)
{
$validate = success(true); // returned value
// Contains a list of validation errors for the UDFs that have not passed the validation
@@ -241,18 +344,34 @@ class UDFLib
// Decodes json that define the UDFs for this table
$decodedUDFDefinitions = json_decode(
$resultUDFsDefinitions->retval[0]->{self::COLUMN_JSON_DESCRIPTION}
getData($resultUDFsDefinitions)[0]->{self::COLUMN_JSON_DESCRIPTION}
);
// Loops through the UDFs definitions
for ($i = 0; $i < count($decodedUDFDefinitions); $i++)
foreach ($decodedUDFDefinitions as $decodedUDFDefinition)
{
$decodedUDFDefinition = $decodedUDFDefinitions[$i]; // Definition of a single UDF
// Checks if the requiredPermissions is available and it is a valid array or a valid string
if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
&& (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
|| !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})))
{
// Then check if the user has the permissions to write such UDF
if (!$this->_writeAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))
{
// If the logged user has no permissions then remove the UDF
unset($udfsParameters[$decodedUDFDefinition->{self::NAME}]);
}
}
else
{
// If no permissions have been defined for this UDF then remove it
unset($udfsParameters[$decodedUDFDefinition->{self::NAME}]);
}
// Loops through the UDFs values that should be stored
foreach ($udfsParameters as $key => $val)
{
$tmpValidate = success(true); // temporary variable used to store the returned value from _validateUDFs
$tmpValidateArray = array(); // temporary variable used to store the returned value from _validateUDFs
// If this is the definition of this UDF
if ($decodedUDFDefinition->{self::NAME} == $key)
@@ -314,7 +433,7 @@ class UDFLib
if ($toBeValidated === true) // Checks if validation should be performed
{
$tmpValidate = $this->_validateUDFs(
$tmpValidateArray = $this->_validateUDFs(
$decodedUDFDefinition->{self::VALIDATION},
$decodedUDFDefinition->{self::NAME},
$val
@@ -324,13 +443,13 @@ class UDFLib
}
// If validation is ok copy the value that is to be stored into $toBeStoredUDFsArray
if (isSuccess($tmpValidate))
if (isEmptyArray($tmpValidateArray))
{
$toBeStoredUDFsArray[$key] = $val;
}
else // otherwise store the validation error in $notValidUDFsArray
else // otherwise store the validation errors in $notValidUDFsArray
{
$notValidUDFsArray[] = $tmpValidate;
$notValidUDFsArray = array_merge($notValidUDFsArray, $tmpValidateArray);
}
}
}
@@ -344,11 +463,11 @@ class UDFLib
}
// If the validation of all the supplied UDFs is ok
if (count($notValidUDFsArray) == 0)
if (isEmptyArray($notValidUDFsArray))
{
// An update is performed, then in this case it preserves the values
// of the UDF that are not updated
if (is_array($udfValues) && count($udfValues) > 0)
if (!isEmptyArray($udfValues))
{
foreach ($udfValues as $fieldName => $fieldValue)
{
@@ -379,7 +498,7 @@ class UDFLib
/**
* isUDFColumn
*/
public function isUDFColumn($columnName, $columnType)
public function isUDFColumn($columnName, $columnType = self::COLUMN_TYPE)
{
$isUDFColumn = false;
@@ -466,7 +585,7 @@ class UDFLib
/**
* Save UDFs
*/
public function saveUDFs($udfUniqueId, $udfs)
public function saveUDFs($udfs)
{
// Read the all session for this udf widget
$session = $this->getSession();
@@ -490,30 +609,80 @@ class UDFLib
// Returns the result of the database update operation to save UDFs
return $dbModel->update(
array($session[self::PRIMARY_KEY_NAME] => $session[self::PRIMARY_KEY_VALUE]),
(array)$udfs
get_object_vars($udfs)
);
}
/**
* Checks if at least one of the permissions given as parameter (requiredPermissions) belongs
* to the authenticated user, if confirmed then is allowed to use this UDFWidget.
* If the parameter requiredPermissions is NOT given or is not present in the session,
* then NO one is allow to use this UDFWidget
* Wrapper method to permissionlib->hasAtLeastOne
*/
public function isAllowed($requiredPermissions = null)
{
$this->_ci->load->library('PermissionLib'); // Load permission library
// Gets the required permissions from the session if they are not provided as parameter
$rq = $requiredPermissions;
if ($rq == null) $rq = $this->getSessionElement(self::REQUIRED_PERMISSIONS_PARAMETER);
return $this->_ci->permissionlib->hasAtLeastOne($rq, self::PERMISSION_TABLE_METHOD, self::PERMISSION_TYPE);
}
// -------------------------------------------------------------------------------------------------
// Private methods
//
/**
* Checks if at least one of the permissions given as parameter belongs to the authenticated user in read mode
* Wrapper method to permissionlib->hasAtLeastOne
*/
private function _readAllowed($requiredPermissions)
{
$readAllowed = false;
// If the user is logged then it is possible to check the permissions
if (isLogged())
{
$this->_ci->load->library('PermissionLib'); // Load permission library
$readAllowed = $this->_ci->permissionlib->hasAtLeastOne(
$requiredPermissions,
self::PERMISSION_TABLE_METHOD,
self::PERMISSION_TYPE_READ
);
} // otherwise it is not possible to check the permissions
return $readAllowed;
}
/**
* Checks if at least one of the permissions given as parameter belongs to the authenticated user in write mode
* Wrapper method to permissionlib->hasAtLeastOne
*/
private function _writeAllowed($requiredPermissions)
{
$writeAllowed = false;
// If the user is logged then it is possible to check the permissions
if (isLogged())
{
$this->_ci->load->library('PermissionLib'); // Load permission library
$writeAllowed = $this->_ci->permissionlib->hasAtLeastOne(
$requiredPermissions,
self::PERMISSION_TABLE_METHOD,
self::PERMISSION_TYPE_WRITE
);
} // otherwise it is not possible to check the permissions
return $writeAllowed;
}
/**
* Set an array of required permissions for a UDF into the session
*/
private function _setRequiredPermissions($udfName, $permissions)
{
// Get the session for this UDFWidget
$session = $this->getSession();
// If does _not_ exist yet in the session
if (!isset($session[self::REQUIRED_PERMISSIONS_PARAMETER]))
{
$session[self::REQUIRED_PERMISSIONS_PARAMETER] = array();
}
// Set the required permission in the session for this UDFWidget
$session[self::REQUIRED_PERMISSIONS_PARAMETER][$udfName] = $permissions;
// Write into the session
$this->setSession($session);
}
/**
* Print the block for UDFs
@@ -544,12 +713,12 @@ class UDFLib
{
$udfsParameters = array();
foreach ($data as $key => $val)
foreach ($data as $columnName => $columnValue)
{
if (substr($key, 0, 4) == self::COLUMN_PREFIX)
if ($this->isUDFColumn($columnName))
{
$udfsParameters[$key] = $val; // stores UDF value into property UDFs
unset($data[$key]); // remove from data
$udfsParameters[$columnName] = $columnValue; // stores UDF value into property UDFs
unset($data[$columnName]); // remove from data
}
}
@@ -645,29 +814,39 @@ class UDFLib
}
}
// If no UDF validation errors were raised, it's a success!!
if (count($returnArrayValidation) == 0)
{
$returnArrayValidation = success(true);
}
return $returnArrayValidation;
}
/**
* Set the name and id attribute of the HTML element
*/
private function _setNameAndId($jsonSchema, &$htmlParameters)
{
/**
* Disable the HTML element if in read only mode
*/
private function _setReadOnly($jsonSchema, &$htmlParameters)
{
// If write permissions _not_ exist then set the field as disabled
if (!$this->_writeAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
{
$htmlParameters[HTMLWidget::DISABLED] = HTMLWidget::DISABLED; // any values is fine
}
else // otherwise restore to default
{
if (isset($htmlParameters[HTMLWidget::DISABLED])) unset($htmlParameters[HTMLWidget::DISABLED]);
}
}
/**
* Set the name and id attribute of the HTML element
*/
private function _setNameAndId($jsonSchema, &$htmlParameters)
{
$htmlParameters[HTMLWidget::HTML_ID] = $jsonSchema->{self::NAME};
$htmlParameters[HTMLWidget::HTML_NAME] = $jsonSchema->{self::NAME};
}
/**
* Sort the list of UDF by sort property
*/
private function _sortJsonSchemas(&$jsonSchemasArray)
{
}
/**
* Sort the list of UDF by sort property
*/
private function _sortJsonSchemas(&$jsonSchemasArray)
{
usort($jsonSchemasArray, function ($a, $b) {
if (!isset($a->{self::SORT}))
{
@@ -684,13 +863,13 @@ class UDFLib
return ($a->{self::SORT} < $b->{self::SORT}) ? -1 : 1;
});
}
/**
* Loads the UDF description by the given schema and table
*/
private function _loadUDF($schema, $table)
{
}
/**
* Loads the UDF description by the given schema and table
*/
private function _loadUDF($schema, $table)
{
// Loads UDF model
$this->_ci->load->model('system/UDF_model', 'UDFModel');
@@ -703,18 +882,7 @@ class UDFLib
if (isError($udfResults))
{
if (is_object($udfResults) && isset($udfResults->retval))
{
show_error(getError($udfResults));
}
elseif (is_string($udfResults))
{
show_error($udfResults);
}
else
{
show_error('UDFWidget: generic error occurred');
}
show_error(getError($udfResults));
}
elseif (!hasData($udfResults))
{
@@ -722,13 +890,13 @@ class UDFLib
}
return $udfResults;
}
}
/**
* Render the HTML for the UDF
*/
private function _render($jsonSchema, &$widgetData)
{
/**
* Render the HTML for the UDF
*/
private function _render($jsonSchema, &$widgetData)
{
// Checkbox
if ($jsonSchema->{self::TYPE} == 'checkbox')
{
@@ -759,11 +927,11 @@ class UDFLib
{
$this->_renderDropdown($jsonSchema, $widgetData, true);
}
}
}
/**
* Renders a dropdown element
*/
/**
* Renders a dropdown element
*/
private function _renderDropdown($jsonSchema, &$widgetData, $multiple = false)
{
// Selected element/s
@@ -792,7 +960,7 @@ class UDFLib
$queryResult = $this->_ci->UDFModel->execReadOnlyQuery($jsonSchema->{self::LIST_VALUES}->sql);
if (hasData($queryResult))
{
$parameters = $queryResult->retval;
$parameters = getData($queryResult);
}
}
@@ -805,8 +973,8 @@ class UDFLib
}
/**
* Renders a textarea element
*/
* Renders a textarea element
*/
private function _renderTextarea($jsonSchema, &$widgetData)
{
$text = null; // text value
@@ -823,8 +991,8 @@ class UDFLib
}
/**
* Renders an input text element
*/
* Renders an input text element
*/
private function _renderTextfield($jsonSchema, &$widgetData)
{
$text = null; // text value
@@ -841,8 +1009,8 @@ class UDFLib
}
/**
* Renders a checkbox element
*/
* Renders a checkbox element
*/
private function _renderCheckbox($jsonSchema, &$widgetData)
{
// Set checkbox value if present in the DB
@@ -861,11 +1029,11 @@ class UDFLib
$checkboxWidgetUDF->render();
}
/**
* Sets the attributes of the HTML element using the phrases system
*/
private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters)
{
/**
* Sets the attributes of the HTML element using the phrases system
*/
private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters)
{
// By default set to null all the attributes
$htmlParameters[HTMLWidget::LABEL] = null;
$htmlParameters[HTMLWidget::TITLE] = null;
@@ -893,7 +1061,7 @@ class UDFLib
);
if (hasData($tmpResult))
{
$htmlParameters[HTMLWidget::LABEL] = $tmpResult->retval[0]->text;
$htmlParameters[HTMLWidget::LABEL] = getData($tmpResult)[0]->text;
}
}
@@ -911,7 +1079,7 @@ class UDFLib
);
if (hasData($tmpResult))
{
$htmlParameters[HTMLWidget::TITLE] = $tmpResult->retval[0]->text;
$htmlParameters[HTMLWidget::TITLE] = getData($tmpResult)[0]->text;
}
}
@@ -929,17 +1097,17 @@ class UDFLib
);
if (hasData($tmpResult))
{
$htmlParameters[HTMLWidget::PLACEHOLDER] = $tmpResult->retval[0]->text;
$htmlParameters[HTMLWidget::PLACEHOLDER] = getData($tmpResult)[0]->text;
}
}
}
}
}
/**
* Sets the validation attributes of the HTML element using the configuration inside the json schema
*/
private function _setValidationAttributes($jsonSchema, &$htmlParameters)
{
/**
* Sets the validation attributes of the HTML element using the configuration inside the json schema
*/
private function _setValidationAttributes($jsonSchema, &$htmlParameters)
{
// Validation attributes set by default to null
$htmlParameters[HTMLWidget::REGEX] = null;
$htmlParameters[HTMLWidget::REQUIRED] = null;
@@ -998,3 +1166,4 @@ class UDFLib
}
}
}
@@ -0,0 +1,14 @@
<?php
class Aufenthaltfoerderung_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'bis.tbl_aufenthaltfoerderung';
$this->pk = 'aufenthaltfoerderung_code';
}
}
@@ -0,0 +1,107 @@
<?php
class Oehbeitrag_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'bis.tbl_oehbeitrag';
$this->pk = 'oehbeitrag_id';
}
/**
* Gets oehbeitrag data valid for a certain Studiensemester.
* @param string $studiensemester_kurzbz
* @return object
*/
public function getByStudiensemester($studiensemester_kurzbz)
{
$qry = "WITH semstart AS (
SELECT start FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = ?
)
SELECT * FROM bis.tbl_oehbeitrag oehb
JOIN public.tbl_studiensemester semvon ON oehb.von_studiensemester_kurzbz = semvon.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester sembis ON oehb.bis_studiensemester_kurzbz = sembis.studiensemester_kurzbz
JOIN semstart ON semstart.start::date >= semvon.start::date AND (sembis.studiensemester_kurzbz IS NULL OR semstart.start::date <= sembis.start::date)
ORDER BY semvon.start
LIMIT 1";
return $this->execQuery($qry, array($studiensemester_kurzbz));
}
/**
* Gets all Studiensemester for which no Oehbeitrag value assignment exists.
* @param string $start_studiensemester_kurzbz semester before the given semester are ignored
* @param array $excluded_oehbeitrag_id oehbeitraege to be ignored, i.e. which are assigned
* @return object
*/
public function getUnassignedStudiensemester($start_studiensemester_kurzbz, $excluded_oehbeitrag_id = array())
{
$params = array($start_studiensemester_kurzbz);
$qry = "SELECT * FROM public.tbl_studiensemester sem
WHERE sem.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?)
AND NOT EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag oeh
JOIN public.tbl_studiensemester oeh_von ON oeh.von_studiensemester_kurzbz = oeh_von.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester oeh_bis ON oeh.bis_studiensemester_kurzbz = oeh_bis.studiensemester_kurzbz
WHERE sem.start::date >= oeh_von.start::date AND (sem.start::date <= oeh_bis.start::date OR oeh_bis.studiensemester_kurzbz IS NULL)";
if (!isEmptyArray($excluded_oehbeitrag_id))
{
$qry .= " AND oehbeitrag_id NOT IN ?";
$params[] = $excluded_oehbeitrag_id;
}
$qry .= ") ORDER BY sem.start";
return $this->execQuery($qry, $params);
}
/**
* Checks if a Öhbeitrag can be assigned for a Studiensemester range.
* @param string $von_studiensemester_kurzbz
* @param string $bis_studiensemester_kurzbz
* @param array $excluded_oehbeitrag_id oehbeitraege to ignore, i.e. which are assignable
* @return object array with true if assignable, with false if not
*/
public function checkIfStudiensemesterAssignable($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz = null, $excluded_oehbeitrag_id = array())
{
$params = array($von_studiensemester_kurzbz);
$allStdSemSpanQry = "SELECT count(studiensemester_kurzbz) as number_assigned FROM public.tbl_studiensemester sem
WHERE start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?)";
if ($bis_studiensemester_kurzbz != null)
{
$allStdSemSpanQry .= " AND (start <= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?))";
$params[] = $bis_studiensemester_kurzbz;
}
$allStdSemSpanQry .= " AND EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag
JOIN public.tbl_studiensemester sem_von ON tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester sem_bis ON tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz
WHERE sem.start >= sem_von.start AND (sem.start <= sem_bis.start OR sem_bis.studiensemester_kurzbz IS NULL)";
if (!isEmptyArray($excluded_oehbeitrag_id))
{
$allStdSemSpanQry .= " AND oehbeitrag_id NOT IN ?";
$params[] = $excluded_oehbeitrag_id;
}
$allStdSemSpanQry .= ")";
$nrAssigned = $this->execQuery($allStdSemSpanQry, $params);
if (isError($nrAssigned))
return $nrAssigned;
if (!hasData($nrAssigned))
return error("Fehler bei Überprüfung der Möglichkeit der Semesterzuweisung");
return success(array(getData($nrAssigned)[0]->number_assigned == 0));
}
}
+31 -1
View File
@@ -291,7 +291,7 @@ class Prestudent_model extends DB_Model
$prestudentdata->prestudentstatus = $lastStatusData;
if ($this->hasUDF())
if ($this->udfsExistAndDefined())
{
$prestudentdata->prestudentUdfs = $this->getUDFs($prestudent_id);
}
@@ -625,4 +625,34 @@ class Prestudent_model extends DB_Model
return $this->execQuery($query, array($person, $studiengang, $studienSemester));
}
/**
* Gets förderrelevant flag for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang
* @param int $prestudent_id
* @return object
*/
public function getFoerderrelevant($prestudent_id)
{
$query = 'SELECT COALESCE (ps.foerderrelevant, stg.foerderrelevant) AS foerderrelevant
FROM public.tbl_prestudent ps
LEFT JOIN public.tbl_studiengang stg USING (studiengang_kz)
WHERE prestudent_id = ?';
return $this->execQuery($query, array($prestudent_id));
}
/**
* Gets bis standort_code for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang
* @param int $prestudent_id
* @return object
*/
public function getStandortCode($prestudent_id)
{
$query = 'SELECT COALESCE (ps.standort_code, stg.standort_code) AS standort_code
FROM public.tbl_prestudent ps
LEFT JOIN public.tbl_studiengang stg USING (studiengang_kz)
WHERE prestudent_id = ?';
return $this->execQuery($query, array($prestudent_id));
}
}
+3 -1
View File
@@ -12,7 +12,7 @@ class Statusgrund_model extends DB_Model
$this->pk = "statusgrund_id";
}
public function getStatus($status_kurzbz = null, $aktiv = null)
public function getStatus($status_kurzbz = null, $aktiv = null, $statusgrund_kurzbz = null)
{
$this->addOrder('bezeichnung_mehrsprachig');
$where = array();
@@ -20,6 +20,8 @@ class Statusgrund_model extends DB_Model
$where['status_kurzbz'] = $status_kurzbz;
if (!is_null($aktiv))
$where['aktiv'] = $aktiv;
if (!is_null($statusgrund_kurzbz))
$where['statusgrund_kurzbz'] = $statusgrund_kurzbz;
$status = $this->loadWhere($where);
@@ -169,18 +169,34 @@ class Lehrveranstaltung_model extends DB_Model
*/
public function getLecturersByLv($studiensemester_kurzbz, $lehrveranstaltung_id)
{
$query = "SELECT * FROM (SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid,
CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN true ELSE false END as lvleiter
FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person
WHERE
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
tbl_person.person_id=tbl_benutzer.person_id AND
lehrveranstaltung_id=? AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
studiensemester_kurzbz=?) AS a
ORDER BY lvleiter DESC, nachname, vorname";
$query = "SELECT
*
FROM
(SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid,
CASE WHEN
EXISTS(
SELECT
1
FROM
lehre.tbl_lehreinheitmitarbeiter lvllem
JOIN lehre.tbl_lehreinheit lvlle USING(lehreinheit_id)
WHERE
lehrfunktion_kurzbz='LV-Leitung'
AND lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
AND studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz
AND mitarbeiter_uid=tbl_benutzer.uid
) THEN true ELSE false END as lvleiter
FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person
WHERE
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
tbl_person.person_id=tbl_benutzer.person_id AND
lehrveranstaltung_id=? AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
studiensemester_kurzbz=?
) AS a
ORDER BY lvleiter DESC, nachname, vorname";
return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
}
@@ -273,7 +289,7 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($query, $parametersarray);
}
/**
* Gets Lehrveranstaltung and its Lehreinheiten (multiple rows possible).
* Returns empty array if student has no Lehrveranstaltung.
@@ -290,7 +306,7 @@ class Lehrveranstaltung_model extends DB_Model
AND studiensemester_kurzbz = ?
AND lehrveranstaltung_id = ?;
';
return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id));
}
}
@@ -11,4 +11,29 @@ class Pruefung_model extends DB_Model
$this->dbTable = 'campus.tbl_pruefung';
$this->pk = 'pruefung_id';
}
/**
* Gets Pruefungen of a person for a Studiensemester.
* @param int $person_id
* @param string $studiensemester_kurzbz
* @return object
*/
public function getByPerson($person_id, $studiensemester_kurzbz)
{
$qry = '
SELECT prfg.*, pers.matr_nr, lv.ects, stg.studiengang_kz, prst.prestudent_id,
UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung
FROM public.tbl_person pers
JOIN public.tbl_prestudent prst USING (person_id)
JOIN public.tbl_student USING (prestudent_id)
JOIN lehre.tbl_pruefung prfg USING (student_uid)
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
WHERE pers.person_id = ?
AND le.studiensemester_kurzbz = ?
ORDER BY prfg.datum, pruefung_id';
return $this->execQuery($qry, array($person_id, $studiensemester_kurzbz));
}
}
@@ -12,4 +12,125 @@ class Zeugnisnote_model extends DB_Model
$this->pk = array('studiensemester_kurzbz', 'student_uid', 'lehrveranstaltung_id');
$this->hasSequence = false;
}
/**
* Gets ECTS sums of completed courses (Zeugnisnoten) of a person for a Studiensemester.
* If no valid Noten for the course were entered, 0 ects is returned.
* @param int $person_id
* @param string $studiensemester_kurzbz
* @param bool $aktiv
* @param bool $lehre
* @param bool $offiziell
* @param bool $positiv
* @return object
*/
public function getEctsSumsByPerson($person_id, $studiensemester_kurzbz, $aktiv = true, $lehre = null, $offiziell = null, $positiv = null)
{
$params = array();
$qry = "SELECT DISTINCT ON (prst.prestudent_id) pers.matr_nr, stg.studiengang_kz, prst.prestudent_id, stg.erhalter_kz,
UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung, COALESCE(summen.summe_ects, 0) AS summe_ects
FROM public.tbl_person pers
JOIN public.tbl_prestudent prst USING (person_id)
JOIN public.tbl_prestudentstatus prstst USING (prestudent_id)
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
LEFT JOIN (
SELECT zgnisnote.student_uid, prestudent_id, zgnisnote.studiensemester_kurzbz, sum(ects) AS summe_ects
FROM public.tbl_student
LEFT JOIN lehre.tbl_zeugnisnote zgnisnote USING(student_uid)
LEFT JOIN lehre.tbl_note note ON zgnisnote.note = note.note
LEFT JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
WHERE TRUE";
if (isset($aktiv))
{
$qry .= ' AND (note.aktiv = ?)';
$params[] = $aktiv;
}
if (isset($lehre))
{
$qry .= ' AND (note.lehre = ?)';
$params[] = $lehre;
}
if (isset($offiziell))
{
$qry .= ' AND (note.offiziell = ?)';
$params[] = $offiziell;
}
if (isset($positiv))
{
$qry .= ' AND (note.positiv = ?)';
$params[] = $positiv;
}
$qry .= " GROUP BY zgnisnote.studiensemester_kurzbz, zgnisnote.student_uid, prestudent_id
) summen ON prst.prestudent_id = summen.prestudent_id AND prstst.studiensemester_kurzbz = summen.studiensemester_kurzbz
WHERE pers.person_id = ?
AND prstst.studiensemester_kurzbz = ?
ORDER BY prst.prestudent_id";
$params[] = $person_id;
$params[] = $studiensemester_kurzbz;
return $this->execQuery($qry, $params);
}
/**
* Gets courses (Zeugnisnoten) of a person for a Studiensemester.
* @param int $person_id
* @param string $studiensemester_kurzbz
* @param bool $aktiv
* @param bool $lehre
* @param bool $offiziell
* @param bool $positiv
* @return object
*/
public function getByPerson($person_id, $studiensemester_kurzbz, $aktiv = true, $lehre = null, $offiziell = null, $positiv = null)
{
$params = array($person_id, $studiensemester_kurzbz);
$qry = "SELECT zgnisnote.*, pers.matr_nr, lv.ects, stg.studiengang_kz, prst.prestudent_id, stg.erhalter_kz,
UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung, note.note,
note.bezeichnung AS note_bezeichnung
FROM public.tbl_person pers
JOIN public.tbl_prestudent prst USING (person_id)
JOIN public.tbl_student USING (prestudent_id)
JOIN lehre.tbl_zeugnisnote zgnisnote USING (student_uid)
JOIN lehre.tbl_note note ON zgnisnote.note = note.note
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
WHERE pers.person_id = ?
AND zgnisnote.studiensemester_kurzbz = ?";
if (isset($aktiv))
{
$qry .= ' AND note.aktiv = ?';
$params[] = $aktiv;
}
if (isset($lehre))
{
$qry .= ' AND note.lehre = ?';
$params[] = $lehre;
}
if (isset($offiziell))
{
$qry .= ' AND note.offiziell = ?';
$params[] = $offiziell;
}
if (isset($positiv))
{
$qry .= ' AND note.positiv = ?';
$params[] = $positiv;
}
$qry .= ' ORDER BY zgnisnote.benotungsdatum';
return $this->execQuery($qry, $params);
}
}
@@ -152,6 +152,7 @@ class Notiz_model extends DB_Model
*/
public function getNotizByTitel($person_id, $titel)
{
$this->addSelect('public.tbl_notiz.insertamum as insertnotiz, *');
// Join with the table public.tbl_notizzuordnung using notiz_id
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
$this->addJoin('public.tbl_prestudent', 'prestudent_id', 'LEFT');
+11 -9
View File
@@ -152,34 +152,36 @@ class Person_model extends DB_Model
*/
public function getPersonStammdaten($person_id, $zustellung_only = false)
{
$this->addSelect('public.tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
$this->addSelect('public.tbl_person.*, tbl_person.staatsbuergerschaft AS staatsbuergerschaft_code, tbl_person.geburtsnation AS geburtsnation_code,
s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
$this->addJoin('bis.tbl_nation s', 'public.tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
$this->addJoin('bis.tbl_nation g', 'public.tbl_person.geburtsnation = g.nation_code', 'LEFT');
$person = $this->load($person_id);
if($person->error) return $person;
if (isError($person)) return $person;
//return null if not found
if(count($person->retval) < 1)
if (!hasData($person))
return success(null);
$this->KontaktModel->addDistinct();
$this->KontaktModel->addSelect('kontakttyp, anmerkung, kontakt, zustellung');
$this->KontaktModel->addOrder('kontakttyp');
$this->KontaktModel->addOrder('insertamum', 'DESC');
$where = $zustellung_only === true ? array('person_id' => $person_id, 'zustellung' => true) : array('person_id' => $person_id);
$kontakte = $this->KontaktModel->loadWhere($where);
if($kontakte->error) return $kontakte;
if (isError($kontakte)) return $kontakte;
$where = $zustellung_only === true ? array('person_id' => $person_id, 'zustelladresse' => true) : array('person_id' => $person_id);
$this->AdresseModel->addSelect('public.tbl_adresse.*, bis.tbl_nation.kurztext AS nationkurztext');
$this->AdresseModel->addJoin('bis.tbl_nation', 'tbl_adresse.nation = tbl_nation.nation_code', 'LEFT');
$this->AdresseModel->addOrder('insertamum', 'DESC');
$adressen = $this->AdresseModel->loadWhere($where);
if($adressen->error) return $adressen;
if (isError($adressen)) return $adressen;
$stammdaten = $person->retval[0];
$stammdaten->kontakte = $kontakte->retval;
$stammdaten->adressen = $adressen->retval;
$stammdaten = getData($person)[0];
$stammdaten->kontakte = hasData($kontakte) ? getData($kontakte) : array();
$stammdaten->adressen = hasData($adressen) ? getData($adressen) : array();
return success($stammdaten);
}
@@ -0,0 +1,14 @@
<?php
class Fehler_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'system.tbl_fehler';
$this->pk = 'fehlercode';
}
}
+27 -12
View File
@@ -57,19 +57,34 @@ class Filters_model extends DB_Model
/**
* Loads all filters by their app and dataset_name
*/
public function getFiltersByAppDatasetName($app, $dataset_name)
public function getFiltersByAppDatasetNamePersonId($app, $dataset_name, $person_id)
{
$this->resetQuery(); // reset any previous built query
$query = '
(
-- Global filters
SELECT gs.filter_id,
gs.person_id,
gs.description
FROM system.tbl_filters gs
WHERE gs.app = ?
AND gs.dataset_name = ?
AND gs.person_id IS NULL
ORDER BY gs.person_id DESC, gs.sort ASC
)
UNION ALL
(
-- Personal filters
SELECT ps.filter_id,
ps.person_id,
ps.description
FROM system.tbl_filters ps
WHERE ps.app = ?
AND ps.dataset_name = ?
AND ps.person_id = ?
ORDER BY ps.person_id DESC, ps.sort ASC
)';
$this->addSelect('filter_id, person_id, description');
$this->addOrder('person_id', 'DESC'); // sort descending on column person_id
$this->addOrder('sort', 'ASC'); // sort on column sort
$filterParametersArray = array(
'app' => $app,
'dataset_name' => $dataset_name
);
return $this->loadWhere($filterParametersArray);
return $this->execQuery($query, array($app, $dataset_name, $app, $dataset_name, $person_id));
}
}
+51
View File
@@ -0,0 +1,51 @@
<?php
class Issue_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'system.tbl_issue';
$this->pk = 'issue_id';
}
/**
* Gets number of open (non-resolved) issues.
* @param string $fehlercode unique error code
* @param int $person_id if provided, only issues with this person_id are counted.
* @param string $oe_kurzbz if provided, only issues with this oe_kurzbz are counted.
* @param string $fehlercode_extern if provided, only issues with this external fehlercode are counted (for identifying issues from external systems).
* @return Object success with number of issues or error
*/
public function getOpenIssueCount($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlercode_extern = null)
{
$params = array($fehlercode);
// issue exists for a fehlercode (or fehlercode_extern), person_id, oe_kurzbz, if not verarbeitet yet
$qry = 'SELECT count(*) as anzahl_open_issues FROM system.tbl_issue
WHERE fehlercode = ?
AND verarbeitetamum IS NULL';
if (!isEmptyString($fehlercode_extern))
{
$qry .= ' AND fehlercode_extern = ?';
$params[] = $fehlercode_extern;
}
if (isset($person_id))
{
$qry .= ' AND person_id = ?';
$params[] = $person_id;
}
if (isset($oe_kurzbz))
{
$qry .= ' AND oe_kurzbz = ?';
$params[] = $oe_kurzbz;
}
return $this->execQuery($qry, $params);
}
}
+60
View File
@@ -0,0 +1,60 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'ÖH-Beitragsverwaltung',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'dialoglib' => true,
'ajaxlib' => true,
'navigationwidget' => true,
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/codex/oehbeitrag.css'),
'customJSs' => array('public/js/tablesort/tablesort.js', 'public/js/codex/oehbeitrag.js')
)
);
?>
<body>
<div id="wrapper">
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
&Ouml;hbeitragsverwaltung
</h3>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<button class="btn btn-default" id="addNewOeh">Neuen &Ouml;hbeitrag hinzuf&uuml;gen</button>
<br />
<br />
<table class="table table-bordered table-condensed" id="oehbeitraegeTbl">
<thead>
<tr>
<th>G&uuml;ltig von</th>
<th>G&uuml;ltig bis</th>
<th>Studierendenbetrag</th>
<th>Versicherungsbetrag</th>
<th id="actionHeading">Aktion</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
+3 -1
View File
@@ -15,6 +15,7 @@
<th>Aktiv</th>
<th>Bezeichnung mehrsprachig</th>
<th>Beschreibung</th>
<th>Statusgrund</th>
<th></th>
</tr>
</thead>
@@ -25,6 +26,7 @@
<td><?php echo json_encode($s->aktiv); ?></td>
<td><?php echo json_encode($s->bezeichnung_mehrsprachig); ?></td>
<td><?php echo json_encode($s->beschreibung); ?></td>
<td><?php echo json_encode($s->statusgrund_kurzbz); ?></td>
<td><a href="../editGrund/<?php echo $s->statusgrund_id; ?>" target="StatusgrundBottom">Edit</a></td>
</tr>
<?php endforeach ?>
@@ -33,4 +35,4 @@
</div>
</div>
</body>
</html>
</html>
+15
View File
@@ -81,6 +81,21 @@
&nbsp;
</td>
</tr>
<tr>
<td>
StatusGrund:
</td>
<tr>
</tr>
<td>
<input type="text" name="statusgrund_kurzbz" value="<?php echo $sg->statusgrund_kurzbz; ?>" /><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
+10
View File
@@ -51,6 +51,16 @@
&nbsp;
</td>
</tr>
<tr>
<td>
StatusGrund:
</td>
<tr>
</tr>
<td>
<input type="text" name="statusgrund_kurzbz" value="" /><br/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
+1 -2
View File
@@ -45,7 +45,6 @@
echo $this->udflib->UDFWidget(
array(
UDFLib::UDF_UNIQUE_ID => 'fasPersonUDFs',
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person',
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_person',
UDFLib::PRIMARY_KEY_NAME => 'person_id',
@@ -70,7 +69,6 @@
echo $this->udflib->UDFWidget(
array(
UDFLib::UDF_UNIQUE_ID => 'fasPrestudentUDFs',
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person',
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::PRIMARY_KEY_NAME => 'prestudent_id',
@@ -109,3 +107,4 @@
</body>
<?php $this->load->view("templates/footer"); ?>
@@ -12,7 +12,7 @@
<?php foreach ($notizenbewerbung as $notiz): ?>
<tr>
<td class="text-center">
<?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?>
<?php echo date_format(date_create($notiz->insertnotiz), 'd.m.Y H:i:s') ?>
</td>
<td>
<?php (!isset($notiz->kurzbzlang)) ?: print_r('(' . nl2br($notiz->kurzbzlang) . ') - ') ?>
@@ -184,6 +184,32 @@
)
LIMIT 1
) AS "StgNichtAbgeschickt",
(
SELECT COUNT(*)
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND pss.bewerbung_abgeschicktamum IS NULL
AND pss.bestaetigtam IS NULL
AND ps.person_id = p.person_id
AND (sg.typ IN ('.$STUDIENGANG_TYP.')
OR
sg.studiengang_kz in('.$ADDITIONAL_STG.')
)
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 "AnzahlStgNichtAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
@@ -322,6 +348,7 @@
ucfirst($this->p->t('global', 'abgeschickt')).' ('.$this->p->t('global', 'anzahl').')',
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'gesendet').')',
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'nichtGesendet').')',
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'anzahlNichtGesendet').')',
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')',
'ZGV Nation BA',
'ZGV Nation MA',
@@ -341,7 +341,6 @@
echo $this->udflib->UDFWidget(
array(
UDFLib::UDF_UNIQUE_ID => 'infocenterPrestudentUDFs_'.$zgvpruefung->prestudent_id,
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'infocenter',
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::PRIMARY_KEY_NAME => 'prestudent_id',
@@ -414,7 +413,7 @@
selected="selected"><?php echo ucfirst($this->p->t('ui', 'freigabeart')) . '...' ?>
</option>
<?php foreach ($intstatusgruende as $statusgrund): ?>
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
<option value="<?php echo $statusgrund->statusgrund_id ?>" data-kurzbz="<?php echo $statusgrund->statusgrund_kurzbz ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
<?php endforeach ?>
</select>
<span class="input-group-btn">
@@ -553,3 +552,4 @@
endforeach; // end foreach zgvpruefungen
?>
</div><!-- /.panel-group -->
@@ -0,0 +1,48 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Fehler Monitoring',
'jquery' => true,
'jqueryui' => true,
'jquerycheckboxes' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'ajaxlib' => true,
'filterwidget' => true,
'navigationwidget' => true,
'dialoglib' => true,
'phrases' => array(
'ui' => array('bitteEintragWaehlen')
),
'customCSSs' => array('public/css/issues/issuesDataset.css', 'public/css/sbadmin2/tablesort_bootstrap.css'),
'customJSs' => array('public/js/issues/issuesDataset.js', 'public/js/bootstrapper.js')
)
);
?>
<body>
<div id="wrapper">
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
Fehler Monitoring
</h3>
</div>
</div>
<div>
<?php $this->load->view('system/issues/issuesData.php'); ?>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -0,0 +1,173 @@
<?php
$PERSON_ID = getAuthPersonId();
$ALL_FUNKTIONEN_OE_KURZBZ = "('" . implode("','", array_keys($all_funktionen_oe_kurzbz)) . "')";
$ALL_OE_KURZBZ_BERECHTIGT = "('" . implode("','", $all_oe_kurzbz_berechtigt) . "')";
$RELEVANT_PRESTUDENT_STATUS = "('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')";
// get issues for the oes of the uid or for the persons (students, oe-zuordnung) of the oes
$query = "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
ftyp.bezeichnung_mehrsprachig[1] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[1] AS \"Fehlerstatus\",
verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\",
fr.fehlertyp_kurzbz as \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\"
FROM system.tbl_issue iss
JOIN system.tbl_fehler fr USING (fehlercode)
JOIN system.tbl_fehlertyp ftyp USING (fehlertyp_kurzbz)
JOIN system.tbl_issue_status stat USING (status_kurzbz)
LEFT JOIN public.tbl_person pers ON iss.person_id = pers.person_id
WHERE EXISTS (
SELECT 1 FROM system.tbl_fehler_zustaendigkeiten zst
WHERE fehlercode = iss.fehlercode
AND (
person_id = ".$PERSON_ID." /* person_id in fehler_zustaendigkeit for individual persons */";
if (!isEmptyArray($all_funktionen_oe_kurzbz))
{
$query .= " OR (zst.oe_kurzbz IN $ALL_FUNKTIONEN_OE_KURZBZ AND zst.funktion_kurzbz IS NULL) /* if oe is specified in fehler_zustaendigkeiten */";
// check for each oe for each function if zustaendig
foreach ($all_funktionen_oe_kurzbz as $oe_kurzbz => $funktionen_kurzbz)
{
foreach ($funktionen_kurzbz as $funktion_kurzbz)
{
$query .= " OR (zst.oe_kurzbz = '$oe_kurzbz' AND zst.funktion_kurzbz = '$funktion_kurzbz')";
}
}
}
$query .= "))"; // close AND of exists, and exists
// show issue if it is assigend to oe of logged in user or to student of oe of logged in user
if (!isEmptyArray($all_oe_kurzbz_berechtigt))
{
$query .= " OR iss.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT /* if issue is for oe */";
$query .= " OR (iss.oe_kurzbz IS NULL AND EXISTS ( /* if person_id of issue is a student of studiengang oe */
SELECT 1 FROM public.tbl_prestudent ps
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
JOIN public.tbl_studiengang stg USING (studiengang_kz)
WHERE person_id = iss.person_id
AND stg.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT
AND pss.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */
FROM public.tbl_prestudentstatus ps_finished
JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz)
WHERE prestudent_id = ps.prestudent_id
AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener')
AND datum::date + interval '2 months' < NOW()
AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
AND person_id = ps.person_id
AND prestudent_id <> ps_finished.prestudent_id
AND tbl_studiensemester.start::date > sem_finished.start::date)
)
)
)";
}
$query .= " ORDER BY CASE
WHEN iss.status_kurzbz = '".IssuesLib::STATUS_NEU."' THEN 0
WHEN iss.status_kurzbz = '".IssuesLib::STATUS_IN_BEARBEITUNG."' THEN 1
ELSE 2
END,
CASE
WHEN fehlertyp_kurzbz = '".IssuesLib::ERRORTYPE_CODE."' THEN 0
WHEN fehlertyp_kurzbz = '".IssuesLib::WARNINGTYPE_CODE."' THEN 1
ELSE 2
END,
datum DESC, fehlercode, issue_id DESC";
$filterWidgetArray = array(
'query' => $query,
'app' => 'core',
'datasetName' => 'issues',
'filter_id' => $this->input->get('filter_id'),
'tableUniqueId' => 'issues',
'requiredPermissions' => 'admin',
'datasetRepresentation' => 'tablesorter',
'checkboxes' => 'issue_id',
'columnsAliases' => array(
'ID',
'Fehlercode',
'Fehlercode extern',
'Datum',
'Inhalt',
'Inhalt extern',
'PersonId',
'OE',
'Fehlertyp',
'Fehlerstatus',
'Verarbeitet von',
'Verarbeitet am',
'Applikation',
'Fehlertypcode',
'Statuscode',
'Vorname',
'Nachname'
),
'formatRow' => function($datasetRaw) {
if ($datasetRaw->{'Fehlercode extern'} == null)
{
$datasetRaw->{'Fehlercode extern'} = '-';
}
if ($datasetRaw->{'Inhalt'} == null)
{
$datasetRaw->{'Inhalt'} = '-';
}
if ($datasetRaw->{'Inhalt extern'} == null)
{
$datasetRaw->{'Inhalt extern'} = '-';
}
if ($datasetRaw->{'PersonId'} == null)
{
$datasetRaw->{'PersonId'} = '-';
}
if ($datasetRaw->{'OE'} == null)
{
$datasetRaw->{'OE'} = '-';
}
if ($datasetRaw->{'Verarbeitet am'} == null)
{
$datasetRaw->{'Verarbeitet am'} = '-';
}
if ($datasetRaw->{'Verarbeitet von'} == null)
{
$datasetRaw->{'Verarbeitet von'} = '-';
}
return $datasetRaw;
},
'markRow' => function($datasetRaw) {
$mark = '';
if ($datasetRaw->Statuscode == IssuesLib::STATUS_BEHOBEN)
$mark = "text-success";
elseif ($datasetRaw->Statuscode == IssuesLib::STATUS_NEU || $datasetRaw->Statuscode == IssuesLib::STATUS_IN_BEARBEITUNG)
{
if ($datasetRaw->Fehlertypcode == IssuesLib::ERRORTYPE_CODE)
{
$mark = "text-danger";
}
elseif ($datasetRaw->Fehlertypcode == IssuesLib::WARNINGTYPE_CODE)
{
$mark = "text-warning";
}
}
return $mark;
}
);
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
@@ -44,6 +44,8 @@
<head>
<title><?php printPageTitle($title); ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<?php
+3 -1
View File
@@ -24,6 +24,7 @@
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::HTML_NAME); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REQUIRED); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
<?php
$checked = '';
if (${CheckboxWidget::VALUE_FIELD} === true)
@@ -38,4 +39,5 @@
</div>
</div>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
+2
View File
@@ -33,6 +33,7 @@
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::MAX_VALUE); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REGEX); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
>
<?php
$elements = ${DropdownWidget::WIDGET_DATA_ELEMENTS_ARRAY_NAME};
@@ -72,3 +73,4 @@
</div>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
+3 -1
View File
@@ -29,9 +29,11 @@
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::MAX_LENGTH); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REGEX); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
><?php echo ${TextareaWidget::TEXT}; ?></textarea>
</div>
</div>
</div>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
+3 -1
View File
@@ -31,10 +31,12 @@
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::MAX_LENGTH); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REGEX); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
value="<?php echo ${TextfieldWidget::VALUE}; ?>"
>
</div>
</div>
</div>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
+24 -22
View File
@@ -6,18 +6,18 @@
class HTMLWidget extends Widget
{
// The name of the array present in the data array given to the view that will render this widget
const HTML_ARG_NAME = 'HTML';
const HTML_ARG_NAME = 'HTML';
const HTML_DEFAULT_VALUE = ''; // Default value of the html element
const HTML_NAME = 'name'; // HTML name attribute
const HTML_ID = 'id'; // HTML id attribute
// External block definition
const EXTERNAL_BLOCK = 'externalBlock'; // External block name
const EXTERNAL_START_BLOCK_HTML_TAG = '<div>'; // External block start tag
const EXTERNAL_END_BLOCK_HTML_TAG = '</div>'; // External block end tag
// HTML attributes
const LABEL = 'title';
const HTML_NAME = 'name'; // HTML name attribute
const HTML_ID = 'id'; // HTML id attribute
// External block definition
const EXTERNAL_BLOCK = 'externalBlock'; // External block name
const EXTERNAL_START_BLOCK_HTML_TAG = '<div>'; // External block start tag
const EXTERNAL_END_BLOCK_HTML_TAG = '</div>'; // External block end tag
// HTML attributes
const LABEL = 'title';
const REGEX = 'regex';
const TITLE = 'description';
const REQUIRED = 'required-field';
@@ -26,11 +26,12 @@ class HTMLWidget extends Widget
const MAX_LENGTH = 'max-length';
const MIN_LENGTH = 'min-length';
const PLACEHOLDER = 'placeholder';
const DISABLED = 'disabled';
/**
* It gets also the htmlArgs array as parameter, it will be used to set the HTML properties
*/
public function __construct($name, $args = array(), $htmlArgs = array())
/**
* It gets also the htmlArgs array as parameter, it will be used to set the HTML properties
*/
public function __construct($name, $args = array(), $htmlArgs = array())
{
parent::__construct($name, $args);
@@ -38,11 +39,11 @@ class HTMLWidget extends Widget
$this->_setHtmlProperties($htmlArgs);
}
/**
* Initialising html properties, such as the id and name attributes of the HTML element
*/
private function _setHtmlProperties($htmlArgs)
{
/**
* Initialising html properties, such as the id and name attributes of the HTML element
*/
private function _setHtmlProperties($htmlArgs)
{
// If $htmlArgs wasn't already stored in $this->_args
if (!isset($this->_args[HTMLWidget::HTML_ARG_NAME]))
{
@@ -58,9 +59,9 @@ class HTMLWidget extends Widget
$this->_args[HTMLWidget::HTML_ARG_NAME][$argName] = $argValue;
}
}
}
}
/**
/**
* Prints an attribute name and eventually also the value extracted from $htmlArgs
* Set $isValuePresent to false the value should not be displayed
*/
@@ -113,3 +114,4 @@ class HTMLWidget extends Widget
}
}
}
+5 -29
View File
@@ -6,8 +6,6 @@
*/
class UDFWidget extends HTMLWidget
{
private $_requiredPermissions; // The required permissions to use this UDF widget
private $_schema; // Schema name
private $_table; // Table name
private $_primaryKeyName; // Primary key name
@@ -26,26 +24,16 @@ class UDFWidget extends HTMLWidget
$this->_initUDFWidget($args); // checks parameters and initialize properties
// Let's start if it's allowed
// NOTE: If it is NOT allowed then no data are loaded
if ($this->udflib->isAllowed($this->_requiredPermissions))
{
$this->_startUDFWidget($args[UDFLib::UDF_UNIQUE_ID]);
}
$this->_startUDFWidget($args[UDFLib::UDF_UNIQUE_ID]);
}
/**
* Called by the WidgetLib, it renders the HTML of the UDF
*/
public function display($widgetData)
public function display($widgetData)
{
// Let's start if it's allowed
// NOTE: If it is NOT allowed then no data are loaded
if ($this->_ci->udflib->isAllowed($this->_requiredPermissions))
{
$this->_ci->udflib->displayUDFWidget($widgetData);
}
}
$this->_ci->udflib->displayUDFWidget($widgetData);
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
@@ -60,18 +48,11 @@ class UDFWidget extends HTMLWidget
// If here then everything is ok
// Initialize class properties
$this->_requiredPermissions = null;
$this->_schema = null;
$this->_table = null;
$this->_primaryKeyName = null;
$this->_primaryKeyValue = null;
// Retrieved the required permissions parameter if present
if (isset($args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER]))
{
$this->_requiredPermissions = $args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER];
}
// Retrieved the
if (isset($args[UDFLib::SCHEMA_ARG_NAME]))
{
@@ -113,11 +94,6 @@ class UDFWidget extends HTMLWidget
show_error('The parameter "'.UDFLib::UDF_UNIQUE_ID.'" must be specified');
}
if (!isset($args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER]))
{
show_error('The parameter "'.UDFLib::REQUIRED_PERMISSIONS_PARAMETER.'" must be specified');
}
if (!isset($args[UDFLib::SCHEMA_ARG_NAME]))
{
show_error('The parameter "'.UDFLib::SCHEMA_ARG_NAME.'" must be specified');
@@ -149,7 +125,6 @@ class UDFWidget extends HTMLWidget
$this->udflib->setSession(
array(
UDFLib::UDF_UNIQUE_ID => $udfUniqueId, // table unique id
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => $this->_requiredPermissions, //
UDFLib::SCHEMA_ARG_NAME => $this->_schema, //
UDFLib::TABLE_ARG_NAME => $this->_table, //
UDFLib::PRIMARY_KEY_NAME => $this->_primaryKeyName, //
@@ -158,3 +133,4 @@ class UDFWidget extends HTMLWidget
);
}
}
+4 -3
View File
@@ -166,13 +166,14 @@ $qry = 'SELECT
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN lehre.tbl_note USING (note)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
WHERE
@@ -213,8 +214,8 @@ if($result = $db->db_query($qry))
if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing
$zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')';
if($row->note==6) //angerechnet
$zusatz.='(ar)';
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
if($row->mitarbeiter_uid!='') //mitarbeiter
$zusatz.='(ma)';
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,75 @@
<?php
/* Copyright (C) 2021 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Author: Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
/**
* Checks, if there is the possibility for homeoffice for the given bisverwendung of
* a certain date.
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/globals.inc.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/Excel/excel.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/zeitaufzeichnung.class.php');
require_once('../../../include/projekt.class.php');
require_once('../../../include/bisverwendung.class.php');
if ((isset($_GET['uid'])) && (isset($_GET['day'])))
{
$uid = get_uid();
//Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung
//des uebergebenen Users anzeigen
if (isset($_GET['uid']) && $_GET['uid'] != $uid)
{
$p = new phrasen();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if ($rechte->isBerechtigt('admin'))
{
$uid = $_GET['uid'];
}
else
{
die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte'));
}
}
$day = $_GET['day'];
$verwendung = new bisverwendung();
$verwendung->getVerwendungDatum($uid, $day);
$homeoffice = false;
foreach ($verwendung->result as $v)
{
if ($v->homeoffice)
{
$homeoffice = true;
}
}
echo json_encode($homeoffice);
}
@@ -559,9 +559,11 @@ $totalworktimewidth = 13;
$worktimewidth = 14;
$timecolumnswidth = 2 * $daywidth + $totalworktimewidth + $worktimewidth;
if ($nrProjects < 1)//no projekts - merge all cells and write notice
if ($nrProjects < 1) //no projekts - write notice
{
$projektnames[] = "Keine Projekte vorhanden";
$worksheet =& $workbook->addWorksheet('Tabelle');
$worksheet->setInputEncoding('utf-8');
$worksheet->write(0,0,'Für diesen Zeitraum sind keine Projekte zugeordnet');
}
foreach ($projektnames as $projektname)
@@ -1,18 +1,59 @@
<?php
/* Copyright (C) 2021 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Oliver Hacker <hacker@technikum-wien.at>
Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/basis_db.class.php');
require_once('../../../include/projektphase.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$user = get_uid();
//Wenn User Administrator ist und UID uebergeben wurde, dann die Phasen
//des uebergebenen Users anzeigen
if (isset($_GET['uid']) && $user != $_GET['uid'])
{
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if ($rechte->isBerechtigt('admin'))
{
$user = $_GET['uid'];
}
else
{
$p = new phrasen();
die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte'));
}
}
$datum_obj = new datum();
if(isset($_GET['projekt_kurzbz'])) // TODO maybe check that phasen only shown if projekt is projekt of logged in user
if (isset($_GET['projekt_kurzbz']))
{
$projekt_kurzbz = $_GET['projekt_kurzbz'];
$projektphase = new projektphase();
@@ -28,12 +69,12 @@ if(isset($_GET['projekt_kurzbz'])) // TODO maybe check that phasen only shown if
array_push($pp_user_ids, $pp_user->projektphase_id);
}
if($projektphase->getProjektphasen($projekt_kurzbz))
if ($projektphase->getProjektphasen($projekt_kurzbz))
{
$result_obj = array();
foreach($projektphase->result as $row)
foreach ($projektphase->result as $row)
{
if(in_array($row->projektphase_id, $pp_user_ids))
if (in_array($row->projektphase_id, $pp_user_ids))
{
$item['projektphase_id'] = $row->projektphase_id;
$item['bezeichnung'] = $row->bezeichnung;
+5 -3
View File
@@ -104,9 +104,11 @@ if(isset($_GET['show']))
SELECT
distinct on(tbl_frage.frage_id) *, tbl_gebiet.kurzbz as gebiet
FROM
testtool.tbl_frage
JOIN testtool.tbl_ablauf USING(gebiet_id)
JOIN testtool.tbl_frage_sprache USING(frage_id)
testtool.tbl_frage ";
if($stg_kz!='')
$qry.=" JOIN testtool.tbl_ablauf USING(gebiet_id) ";
$qry.=" JOIN testtool.tbl_frage_sprache USING(frage_id)
JOIN testtool.tbl_gebiet USING(gebiet_id)
WHERE
demo=false";
+736 -734
View File
File diff suppressed because it is too large Load Diff
+28 -1
View File
@@ -332,6 +332,7 @@ if (isset($_POST['fileupload']))
$dms_id = $_POST['dms_id'];
$beschreibung = $_POST['beschreibung'];
$schlagworte = $_POST['schlagworte'];
$mimetype = isset($_POST['mimetype']) ? $_POST['mimetype'] : '';
$cis_suche = isset($_POST['cis_suche']) ? true : false;
$ext = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
$filename = uniqid();
@@ -363,7 +364,14 @@ if (isset($_POST['fileupload']))
$dms->insertamum = date('Y-m-d H:i:s');
$dms->insertvon = $user;
$dms->mimetype = finfo_file($finfo, $uploadfile); // Davor deprecated: $_FILES['userfile']['type'];
if ($mimetype != '')
{
$dms->mimetype = $mimetype;
}
else
{
$dms->mimetype = finfo_file($finfo, $uploadfile);
}
$dms->filename = $filename;
$dms->name = $_FILES['userfile']['name'];
$dms->beschreibung = $beschreibung;
@@ -404,6 +412,7 @@ if (isset($_POST['action']) && $_POST['action'] == 'rename')
$version = $_POST['version'];
$beschreibung = $_POST['beschreibung'];
$schlagworte = $_POST['schlagworte'];
$mimetype = isset($_POST['mimetype']) ? $_POST['mimetype'] : '';
$cis_suche = isset($_POST['cis_suche']) ? true : false;
$dms = new dms();
@@ -413,6 +422,14 @@ if (isset($_POST['action']) && $_POST['action'] == 'rename')
$dms->beschreibung = $beschreibung;
$dms->schlagworte = $schlagworte;
$dms->cis_suche = $cis_suche;
if ($mimetype != '')
{
$dms->mimetype = $mimetype;
}
else
{
$dms->mimetype = finfo_file($finfo, $uploadfile);
}
$dms->updateamum = date('Y-m-d H:i:s');
$dms->updatevon = $user;
@@ -1012,6 +1029,10 @@ else
<td>Schlagworte<br/>(Semikolon getrennt)</td>
<td><textarea name="schlagworte" id="schlagworte-textarea" rows="2" cols="80" style="font-size: small;"></textarea></td>
</tr>
<tr>
<td>Mimetype</td>
<td><input type="text" name="mimetype" id="mimetype-input" size="50" maxlength="256" style="font-size: small;" /></td>
</tr>
<tr>
<td>CIS-Suche</td>
<td><input type="checkbox" id="cis_suche_checkbox" name="cis_suche"></td>
@@ -1088,6 +1109,7 @@ function drawAllVersions($id)
<th>CIS-Suche</th>
<th>Kategorie</th>
<th>Filename intern</th>
<th>Mimetype</th>
<th>Datum</th>
<th>User</th>
</tr>
@@ -1102,6 +1124,7 @@ function drawAllVersions($id)
<td style="padding: 1px; vertical-align:middle">'.($dms_help->cis_suche == 'true'?'Ja':'Nein').'</td>
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->kategorie_kurzbz.'</td>
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->filename.'</td>
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->mimetype.'</td>
<td style="padding: 1px; vertical-align:middle">'.$dms_help->insertamum.'</td>
<td style="padding: 1px; vertical-align:middle;">'.$dms_help->insertvon.'</td>
<td style="padding: 1px; vertical-align:middle;">
@@ -1568,6 +1591,10 @@ function drawRenameForm($dms_id, $version, $page = NULL, $dpp = NULL, $searching
<td>Schlagworte<br/>(Semikolon getrennt):</td>
<td><textarea name="schlagworte" rows="2" cols="80" style="font-size: small;">'.$dms->convert_html_chars($dms->schlagworte).'</textarea></td>
</tr>
<tr>
<td>Mimetype</td>
<td><input type="text" name="mimetype" size="80" maxlength="256" style="font-size: small;" value="'.$dms->convert_html_chars($dms->mimetype).'"/></td>
</tr>
<tr>
<td>CIS-Suche:</td>
<td><input type="checkbox" name="cis_suche" '.($dms->cis_suche == 'true'?'checked="checked"':'').'></td>
+4 -2
View File
@@ -907,8 +907,10 @@ function StatistikPrintLVPlanungExcel()
col = tree.columns ? tree.columns["stg_kz"] : "stg_kz";
var studiengang_kz=tree.view.getCellText(tree.currentIndex,col);
col = tree.columns ? tree.columns["sem"] : "sem";
var semester=tree.view.getCellText(tree.currentIndex,col);
var url = '<?php echo APP_ROOT ?>content/statistik/lvplanung.xls.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&studiensemester_kurzbz='+studiensemester;
var semester = tree.view.getCellText(tree.currentIndex,col);
col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
var orgform = tree.view.getCellText(tree.currentIndex,col);
var url = '<?php echo APP_ROOT ?>content/statistik/lvplanung.xls.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&studiensemester_kurzbz='+studiensemester+'&orgform_kurzbz='+orgform;
}
else if(document.getElementById('menu-content-tabs').selectedItem == document.getElementById('tab-organisationseinheit'))
{
+5 -1
View File
@@ -270,7 +270,7 @@ function FunktionDelete()
// ****
// * Speichert die Daten
// ****
function FunktionDetailSpeichern()
function FunktionDetailSpeichern(kopie)
{
var funktion_kurzbz = document.getElementById('funktion-menulist-funktion').value;
var oe_kurzbz = document.getElementById('funktion-menulist-oe_kurzbz').value;
@@ -283,6 +283,9 @@ function FunktionDetailSpeichern()
var bezeichnung = document.getElementById('funktion-textbox-bezeichnung').value;
var wochenstunden = document.getElementById('funktion-textbox-wochenstunden').value;
if(kopie == true)
var neu = true;
//Bei Mitarbeitern wird kein Studiengang mitgeschickt
if(window.parent.document.getElementById('main-content-tabs').selectedItem==window.parent.document.getElementById('tab-mitarbeiter'))
studiengang_kz_berecht='';
@@ -412,6 +415,7 @@ function FunktionDetailDisableFields(val)
document.getElementById('funktion-menulist-semester').disabled=val;
document.getElementById('funktion-menulist-funktion').disabled=val;
document.getElementById('funktion-button-speichern').disabled=val;
document.getElementById('funktion-button-kopiespeichern').disabled=val;
document.getElementById('funktion-box-datum_von').disabled=val;
document.getElementById('funktion-box-datum_bis').disabled=val;
document.getElementById('funktion-textbox-bezeichnung').disabled=val;
+2 -1
View File
@@ -289,7 +289,8 @@ else
</grid>
<hbox>
<spacer flex="1" />
<button id="funktion-button-speichern" oncommand="FunktionDetailSpeichern()" label="Speichern" disabled="true"/>
<button id="funktion-button-kopiespeichern" oncommand="FunktionDetailSpeichern(true)" label="Als Kopie speichern" disabled="true"/>
<button id="funktion-button-speichern" oncommand="FunktionDetailSpeichern(false)" label="Speichern" disabled="true"/>
</hbox>
</groupbox>
<spacer/>
+16 -2
View File
@@ -365,7 +365,7 @@ if(!$error)
{
if($row->summe>$max_stunden)
{
if(!$fixangestellt)
if(!$fixangestellt && !$rechte->isBerechtigt('admin'))
{
if(!LehrauftragAufFirma($lem->mitarbeiter_uid))
{
@@ -402,6 +402,20 @@ if(!$error)
}
}
}
//Pruefen, ob Benutzer inaktiv ist. Wenn ja, eine Warnung ausgeben
$benutzerAktiv = false;
if(!$error)
{
$benutzer = new benutzer($lem->mitarbeiter_uid);
$benutzerAktiv = $benutzer->bnaktiv;
if (!$benutzerAktiv)
{
$return = true;
$warnung = true;
$errormsg = "Achtung: Der/Die Benutzer*in ist inaktiv!\nBitte informieren Sie die Personalbteilung.\n\nDaten wurden gespeichert.\n\n";
}
}
}
if(!$error)
@@ -610,7 +624,7 @@ if(!$error)
if($row_std = $db->db_fetch_object($result_std))
{
//Grenze ueberschritten
if($row_std->summe>=$max_stunden)
if($row_std->summe>=$max_stunden && !$rechte->isBerechtigt('admin'))
{
$return = false;
$error = true;
@@ -159,7 +159,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#gruppen"/>
<splitter class="tree-splitter"/>
<treecol id="lehrveranstaltung-treecol-lektoren" label="Lektoren" flex="5" hidden="false" persist="hidden, width, ordinal"
<treecol id="lehrveranstaltung-treecol-lektoren" label="Lehrende" flex="5" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#lektoren"/>
<splitter class="tree-splitter"/>
+7
View File
@@ -181,6 +181,13 @@ if(!$error)
$verwendung->azgrelevant = false;
else
$verwendung->azgrelevant = '';
if($_POST['homeoffice']=='true')
$verwendung->homeoffice = true;
elseif($_POST['homeoffice']=='false')
$verwendung->homeoffice = false;
else
$verwendung->homeoffice = '';
if($verwendung->save())
{
@@ -1234,6 +1234,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui
inkludierte_lehre = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value;
zeitaufzeichnungspflichtig = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked;
azgrelevant = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked;
homeoffice = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-homeoffice').checked;
if(verwendung_code=='1')
{
@@ -1293,6 +1294,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui
req.add('inkludierte_lehre', inkludierte_lehre);
req.add('zeitaufzeichnungspflichtig', zeitaufzeichnungspflichtig);
req.add('azgrelevant', azgrelevant);
req.add('homeoffice', homeoffice);
var response = req.executePOST();
@@ -71,6 +71,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
inkludierte_lehre = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#inkludierte_lehre" ));
zeitaufzeichnungspflichtig = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnungspflichtig" ));
azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" ));
homeoffice = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#homeoffice" ));
}
else
{
@@ -89,6 +90,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
fixangestellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fixangestellt" ));
azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" ));
homeoffice = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#homeoffice" ));
//neuer Datensatz wird angelegt
MitarbeiterVerwendungDetailNeu='true';
@@ -121,6 +123,15 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
{
azgrelevant='Ja';
}
if (!homeoffice)
{
homeoffice='Nein';
}
else
{
homeoffice='Ja';
}
}
document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value=ba1code;
@@ -151,6 +162,11 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=false;
else
document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=true;
if(homeoffice=='Nein')
document.getElementById('mitarbeiter-verwendung-detail-checkbox-homeoffice').checked=false;
else
document.getElementById('mitarbeiter-verwendung-detail-checkbox-homeoffice').checked=true;
MitarbeiterVerwendungDetailToggleHauptberuf();
MitarbeiterVerwendungVerwendungChange();
}
@@ -170,6 +170,10 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type
<row>
<label value="AZG-relevant" control="mitarbeiter-verwendung-detail-checkbox-azgrelevant"/>
<checkbox id="mitarbeiter-verwendung-detail-checkbox-azgrelevant"/>
</row>
<row>
<label value="Homeoffice" control="mitarbeiter-verwendung-detail-checkbox-homeoffice"/>
<checkbox id="mitarbeiter-verwendung-detail-checkbox-homeoffice"/>
</row>
<row>
<spacer />
+37 -6
View File
@@ -61,6 +61,11 @@ if(isset($_GET['uid']))
else
$uid = '';
if(isset($_GET['orgform_kurzbz']))
$orgform_kurzbz = $_GET['orgform_kurzbz'];
else
$orgform_kurzbz = '';
$db = new basis_db();
$rechte = new benutzerberechtigung();
@@ -68,8 +73,16 @@ $rechte->getBerechtigungen($user);
if($studiengang_kz != '')
{
if(!$rechte->isBerechtigt('assistenz', $studiengang_kz, 's'))
die($rechte->errormsg);
$studiengang_kz_arr = explode(',',$studiengang_kz);
foreach ($studiengang_kz_arr AS $kennzahl)
{
if (!is_numeric($kennzahl))
{
die($kennzahl.' is not an iteger value');
}
if(!$rechte->isBerechtigt('assistenz', $kennzahl, 's'))
die($rechte->errormsg);
}
}
elseif($oe_kurzbz!='')
{
@@ -122,6 +135,7 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
tbl_lehrveranstaltung.semesterstunden AS sws,
tbl_lehrveranstaltung.lehrform_kurzbz,
tbl_lehrveranstaltung.lehrveranstaltung_id,
tbl_lehrveranstaltung.orgform_kurzbz,
(
SELECT nachname
FROM PUBLIC.tbl_person
@@ -156,7 +170,7 @@ JOIN lehre.tbl_lehreinheitmitarbeiter USING (lehreinheit_id)
WHERE tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz);
if($studiengang_kz!='')
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz IN (".$studiengang_kz.")";
if($oe_kurzbz!='')
$qry.=" AND tbl_lehrveranstaltung.oe_kurzbz=".$db->db_add_param($oe_kurzbz);
@@ -167,6 +181,9 @@ if($semester!='')
if($uid!='')
$qry.=" AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=".$db->db_add_param($uid);
if($orgform_kurzbz!='')
$qry.=" AND tbl_lehrveranstaltung.orgform_kurzbz=".$db->db_add_param($orgform_kurzbz);
$qry.=" ORDER BY tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.bezeichnung";
// Creating a workbook
@@ -240,6 +257,9 @@ $maxlength[$spalte]=9;
$worksheet->write($zeile,++$spalte,"LV-Typ", $format_bold);
$maxlength[$spalte]=9;
$worksheet->write($zeile,++$spalte,"Organisationsform", $format_bold);
$maxlength[$spalte]=15;
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
@@ -370,6 +390,10 @@ if($result = $db->db_query($qry))
if($maxlength[$spalte]<mb_strlen($row->lv_type))
$maxlength[$spalte]=mb_strlen($row->lv_type);
//Organisationsform
$worksheet->write($zeile,++$spalte,$row->orgform_kurzbz);
if($maxlength[$spalte]<mb_strlen($row->orgform_kurzbz))
$maxlength[$spalte]=mb_strlen($row->orgform_kurzbz);
}
//Betreuungen
@@ -382,7 +406,8 @@ if($result = $db->db_query($qry))
student_uid,
stunden,
tbl_projektbetreuer.stundensatz,
tbl_projektbetreuer.person_id
tbl_projektbetreuer.person_id,
tbl_lehrveranstaltung.orgform_kurzbz
FROM lehre.tbl_projektarbeit,
lehre.tbl_lehreinheit,
lehre.tbl_lehrveranstaltung,
@@ -404,11 +429,14 @@ if($result = $db->db_query($qry))
$qry.=" AND tbl_lehrveranstaltung.oe_kurzbz=".$db->db_add_param($oe_kurzbz);
if($studiengang_kz!='')
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz IN(".$studiengang_kz.")";
if($semester!='')
$qry.=" AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester, FHC_INTEGER);
if($orgform_kurzbz!='')
$qry.=" AND tbl_lehrveranstaltung.orgform_kurzbz=".$db->db_add_param($orgform_kurzbz);
if($result = $db->db_query($qry))
{
$spalte=0;
@@ -501,7 +529,10 @@ if($result = $db->db_query($qry))
$worksheet->write($zeile,++$spalte,$row->stunden*$row->stundensatz);
if($maxlength[$spalte]<mb_strlen($row->stunden*$row->stundensatz))
$maxlength[$spalte]=mb_strlen($row->stunden*$row->stundensatz);
//Organisationsform
$worksheet->write($zeile,++$spalte,$row->orgform_kurzbz);
if($maxlength[$spalte]<mb_strlen($row->orgform_kurzbz))
$maxlength[$spalte]=mb_strlen($row->orgform_kurzbz);
}
}
+1 -1
View File
@@ -61,7 +61,7 @@ foreach ($mitarbeiterDAO->result as $key => $foo)
array_multisort($nachname, SORT_ASC, $vorname, SORT_ASC, $mitarbeiterDAO->result);
$spalte = array('anrede','titelpre', 'vorname', 'vornamen', 'nachname', 'titelpost','gebdatum','svnr','ersatzkennzeichen',
'aktiv','personalnummer', 'kurzbz','fixangestellt','lektor');
'aktiv','personalnummer', 'kurzbz','fixangestellt','lektor','uid');
$anzSpalten = count($spalte);
// Creating a workbook
+7
View File
@@ -631,11 +631,18 @@ if(!$error)
$prestudent->aufnahmeschluessel = $_POST['aufnahmeschluessel'];
$prestudent->facheinschlberuf = ($_POST['facheinschlberuf']=='true'?true:false);
$prestudent->bismelden = ($_POST['bismelden']=='true'?true:false);
$foerderrelevant = null;
if ($_POST['foerderrelevant'] === 'true')
$foerderrelevant = true;
elseif ($_POST['foerderrelevant'] === 'false')
$foerderrelevant = false;
$prestudent->foerderrelevant = $foerderrelevant;
$prestudent->dual = ($_POST['dual']=='true'?true:false);
$prestudent->anmerkung = $_POST['anmerkung'];
$prestudent->mentor = $_POST['mentor'];
$prestudent->gsstudientyp_kurzbz = $_POST['gsstudientyp_kurzbz'];
$prestudent->priorisierung = $_POST['priorisierung'];
$prestudent->standort_code = $_POST['standort_code'];
//$prestudent->insertamum = date('Y-m-d H:i:s');
//$prestudent->insertvon = $user;
$prestudent->updateamum = date('Y-m-d H:i:s');
+41 -19
View File
@@ -448,7 +448,6 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</menupopup>
</template>
</menulist>
<label value="Studientyp" control="student-detail-menulist-gsstudientyp"/>
<menulist id="student-detail-menulist-gsstudientyp" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/gsstudientyp.rdf.php" flex="1"
@@ -461,6 +460,18 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</menupopup>
</template>
</menulist>
<label value="Bisstandort" control="student-prestudent-menulist-bisstandort" id="student-prestudent-label-bisstandort"/>
<menulist id="student-prestudent-menulist-bisstandort" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/bisstandort.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/bisstandort/alle" >
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/bisstandort/rdf#standort_code"
label="rdf:http://www.technikum-wien.at/bisstandort/rdf#bezeichnung"
uri="rdf:*"/>
</menupopup>
</template>
</menulist>
<label value="Facheinschlaegig berufstaetig" control="student-prestudent-checkbox-facheinschlberuf" hidden="true"/>
<checkbox id="student-prestudent-checkbox-facheinschlberuf" checked="true" disabled="true" hidden="true"/>
</row>
@@ -470,32 +481,43 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<columns>
<column flex="1"/>
<column flex="12"/>
<column flex="3"/>
<column flex="2"/>
<column flex="2"/>
<column flex="3"/>
</columns>
<rows>
<row>
<label value="Anmerkung" control="student-prestudent-textbox-anmerkung"/>
<textbox id="student-prestudent-textbox-anmerkung" disabled="true"/>
<hbox>
<label value="Bismelden" control="student-prestudent-checkbox-bismelden"/>
<checkbox id="student-prestudent-checkbox-bismelden" checked="true" disabled="true"/>
</hbox>
<label value="Anmerkung" control="student-prestudent-textbox-anmerkung"/>
<textbox id="student-prestudent-textbox-anmerkung" disabled="true"/>
<hbox>
<label value="Bismelden" control="student-prestudent-checkbox-bismelden"/>
<checkbox id="student-prestudent-checkbox-bismelden" checked="true" disabled="true"/>
</hbox>
<hbox>
<label value="Dual" control="student-prestudent-checkbox-dual"/>
<checkbox id="student-prestudent-checkbox-dual" checked="false" disabled="true"/>
</hbox>
<hbox>
<label value="Priorität" control="student-prestudent-textbox-priorisierung"/>
<?php
$readonly = 'readonly="true"';
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if($rechte->isBerechtigt('basis/prestudent'))
$readonly = '';
?>
<textbox id="student-prestudent-textbox-priorisierung" disabled="true" <?php echo $readonly ?>/>
</hbox>
<hbox>
<label value="Förderrelevant" id="student-prestudent-label-foerderrelevant" control="student-prestudent-menulist-foerderrelevant"/>
<menulist id="student-prestudent-menulist-foerderrelevant" disabled="true">
<menupopup>
<menuitem value="" label="Wie Studiengang"/>
<menuitem value="true" label="Ja"/>
<menuitem value="false" label="Nein"/>
</menupopup>
</menulist>
</hbox>
<hbox>
<label value="Priorität" control="student-prestudent-textbox-priorisierung"/>
<?php
$readonly = 'readonly="true"';
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if($rechte->isBerechtigt('basis/prestudent'))
$readonly = '';
?>
<textbox id="student-prestudent-textbox-priorisierung" disabled="true" <?php echo $readonly ?>/>
</hbox>
</row>
<row id="student-prestudent-row-mentor">
<label value="MentorIn" control="student-prestudent-textbox-mentor"/>
+21
View File
@@ -126,6 +126,12 @@ else
echo '
<menu id="'.$id.'" label="'.$label.'">
<menupopup>';
if ($id == 'student-toolbar-student')
echo '<menuitem label="Student" oncommand="StudentUnterbrecherZuStudent()" disabled="false" tooltiptext="Status ändern auf Student"/>';
if ($id == 'interessent-toolbar-zustudent')
echo '<menuitem label="Student" oncommand="InteressentzuStudent()" disabled="false" tooltiptext="Status ändern auf Student"/>';
foreach($gruende[$status_kurzbz] as $row)
{
$commandWithID = str_replace('STATUSGRUNDID',$row['statusgrund_id'],$command);
@@ -204,6 +210,21 @@ else
<menuitem id="student-toolbar-filter-offenebuchungen" label="offene Buchungen" oncommand="StudentKontoFilterStudenten('konto')" disabled="false" tooltiptext="Liste aller Studenten mit offenen Buchungen"/>
<menuitem id="student-toolbar-filter-studiengebuehr" label="nicht gebuchte Studiengebuehr" oncommand="StudentKontoFilterStudenten('studiengebuehr')" disabled="false" tooltiptext="Liste aller Studenten die noch nicht mit Studienbebuehr belastet wurden" />
<menuitem id="student-toolbar-filter-zgvohnedatum" label="ZGV eingetragen ohne Datum" oncommand="StudentKontoFilterStudenten('zgvohnedatum')" disabled="false" tooltiptext="Liste aller Studenten die ZGV eingetragen haben bei denen aber kein ZGV Datum gesetzt ist" />
<menu label="nach Statusgrund">
<menupopup id="student-filter-statusgrund-menu-popup">
<?php
$statusgrund = new statusgrund();
$statusgrund->getAll(true);
foreach($statusgrund->result as $row)
{
?>
<menuitem id="student-toolbar-filter-statusgrund-<?php echo $row->statusgrund_id;?>" label="<?php echo $row->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];?>" oncommand="StudentKontoFilterStudenten('stud-statusgrund-<?php echo $row->statusgrund_id; ?>')" disabled="false" tooltiptext="Liste aller Studenten mit Statusgrund <?php echo $row->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];?>" />
<?php
}
?>
</menupopup>
</menu>
</menupopup>
</toolbarbutton>
<?php
+85 -6
View File
@@ -1034,7 +1034,11 @@ function StudentAuswahl()
StudentGesamtNotenTreeloaded=false;
stsem = getStudiensemester();
var url = '<?php echo APP_ROOT ?>rdf/student.rdf.php?prestudent_id='+prestudent_id+'&studiensemester_kurzbz='+stsem+'&'+gettimestamp();
var url = buildStudentRDFURI({
'prestudent_id': prestudent_id,
'studiensemester_kurzbz': stsem
});
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
@@ -1149,6 +1153,8 @@ function StudentAuswahl()
dual = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dual" ));
gsstudientyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gsstudientyp_kurzbz" ));
priorisierung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#priorisierung" ));
foerderrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#foerderrelevant" ));
standort_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#standort_code" ));
document.getElementById('student-prestudent-menulist-aufmerksamdurch').value=aufmerksamdurch_kurzbz;
document.getElementById('student-prestudent-menulist-berufstaetigkeit').value=berufstaetigkeit_code;
@@ -1186,6 +1192,8 @@ function StudentAuswahl()
document.getElementById('student-prestudent-textbox-priorisierung').value=priorisierung;
document.getElementById('student-prestudent-textbox-mentor').value=mentor;
document.getElementById('student-detail-menulist-gsstudientyp').value=gsstudientyp_kurzbz;
document.getElementById('student-prestudent-menulist-foerderrelevant').value=foerderrelevant;
document.getElementById('student-prestudent-menulist-bisstandort').value=standort_code;
document.getElementById('student-detail-groupbox-caption').label='Zugangsvoraussetzung für '+nachname+' '+vorname;
rollentree = document.getElementById('student-prestudent-tree-rolle');
@@ -1701,12 +1709,14 @@ function StudentPrestudentDisableFields(val)
document.getElementById('student-prestudent-menulist-aufnahmeschluessel').disabled=val;
document.getElementById('student-prestudent-checkbox-facheinschlberuf').disabled=val;
document.getElementById('student-prestudent-checkbox-bismelden').disabled=val;
document.getElementById('student-prestudent-menulist-foerderrelevant').disabled=val;
document.getElementById('student-prestudent-checkbox-dual').disabled=val;
document.getElementById('student-prestudent-button-save').disabled=val;
document.getElementById('student-prestudent-textbox-anmerkung').disabled=val;
document.getElementById('student-prestudent-textbox-priorisierung').disabled=val;
document.getElementById('student-prestudent-textbox-mentor').disabled=val;
document.getElementById('student-detail-menulist-gsstudientyp').disabled=val;
document.getElementById('student-prestudent-menulist-bisstandort').disabled=val;
// Studiengang des angeklickten Prestudenten ermitteln
var tree = document.getElementById('student-tree');
@@ -1779,6 +1789,8 @@ function StudentPrestudentSave()
priorisierung = document.getElementById('student-prestudent-textbox-priorisierung').value;
mentor = document.getElementById('student-prestudent-textbox-mentor').value;
gsstudientyp = document.getElementById('student-detail-menulist-gsstudientyp').value;
foerderrelevant = document.getElementById('student-prestudent-menulist-foerderrelevant').value;
standort_code = document.getElementById('student-prestudent-menulist-bisstandort').value;
if(zgvdatum!='' && !CheckDatum(zgvdatum))
{
@@ -1824,6 +1836,8 @@ function StudentPrestudentSave()
req.add('priorisierung', priorisierung);
req.add('mentor', mentor);
req.add('gsstudientyp_kurzbz', gsstudientyp);
req.add('foerderrelevant', foerderrelevant);
req.add('standort_code', standort_code);
var response = req.executePOST();
@@ -2564,11 +2578,48 @@ function StudentKontoFilter()
kontotree.builder.addListener(StudentKontoTreeListener);
}
// ****
// * Generiert eine student.rdf URI
// ****
function buildStudentRDFURI(queryparams, tree)
{
var baseurl = "<?php echo APP_ROOT; ?>rdf/student.rdf.php";
if ( typeof tree !== "undefined" )
{
var col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
queryparams.orgform = tree.view.getCellText(tree.currentIndex,col);
}
return _buildURI(baseurl, queryparams);
}
// ****
// * Generiert aus einer BasisURL und einem Dictionary von Parametern eine URI
// ****
function _buildURI(baseurl, queryparams)
{
var str = [];
var url = baseurl;
for (var p in queryparams)
{
if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 )
{
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(queryparams[p]));
}
}
var querystring = str.join("&");
if ( querystring.length > 0 )
{
url = url + '?' + querystring + '&' + gettimestamp();
}
return url;
}
// ****
// * Setzt im Studententree einen vordefinierten Filter
// ****
function StudentKontoFilterStudenten(filter)
{
//alert(filter);
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree=document.getElementById('tree-verband');
@@ -2591,12 +2642,26 @@ function StudentKontoFilterStudenten(filter)
var gruppe = getTreeCellText(tree, 'gruppe', tree.currentIndex);
var typ = getTreeCellText(tree, 'typ', tree.currentIndex);
var stsem = getTreeCellText(tree, 'stsem', tree.currentIndex);
if(stsem=='')
stsem = getStudiensemester();
if(typ=='')
typ='student';
url = "<?php echo APP_ROOT; ?>rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2="+filter+"&buchungstyp="+buchungstyp+"&"+gettimestamp();
var url = buildStudentRDFURI({
'studiengang_kz': stg_kz,
'semester': sem,
'verband': ver,
'gruppe': grp,
'gruppe_kurzbz': gruppe,
'studiensemester_kurzbz': stsem,
'typ': typ,
'filter2': filter,
'buchungstyp': buchungstyp
}, tree);
console.log(url);
var treeStudent=document.getElementById('student-tree');
try
@@ -2614,6 +2679,7 @@ function StudentKontoFilterStudenten(filter)
treeStudent.database.RemoveDataSource(oldDatasources.getNext());
}
//alert(url);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
StudentTreeDatasource = rdfService.GetDataSource(url);
StudentTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
@@ -2655,7 +2721,18 @@ function StudentKontoFilterBuchungstyp()
stsem = getStudiensemester();
if(typ=='')
typ='student';
url = "<?php echo APP_ROOT; ?>rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2=buchungstyp;"+filter+"&"+gettimestamp();
var url = buildStudentRDFURI({
'studiengang_kz': stg_kz,
'semester': sem,
'verband': ver,
'gruppe': grp,
'gruppe_kurzbz': gruppe,
'studiensemester_kurzbz': stsem,
'typ': typ,
'filter2': 'buchungstyp;' + filter
}, tree);
var treeStudent=document.getElementById('student-tree');
try
@@ -5437,8 +5514,10 @@ function StudentSuche()
document.getElementById('tree-verband').view.selection.clearSelection();
//Datasource setzten und Felder deaktivieren
url = "<?php echo APP_ROOT; ?>rdf/student.rdf.php?filter="+encodeURIComponent(filter)+"&"+gettimestamp();
var url = buildStudentRDFURI({
'filter': filter
});
var treeStudent=document.getElementById('student-tree');
try
+159 -155
View File
@@ -1,155 +1,159 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once('../../config/vilesci.config.inc.php');
?>
var StudentRolleStudiensemester_old;
var StudentRolleAusbildungssemester_old;
var StudentRolleStatusgrundDatasource;
// ****
// * Laedt die Rolle
// ****
function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
if(status_kurzbz!='')
{
document.getElementById('student-rolle-grid-row-textbox').hidden=false;
document.getElementById('student-rolle-grid-row-menulist').hidden=true;
StudentRolleStudiensemester_old=studiensemester_kurzbz;
StudentRolleAusbildungssemester_old=ausbildungssemester;
//Daten holen
var url = '<?php echo APP_ROOT ?>rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester);
var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf";
//RDF parsen
var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" ));
var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" ));
var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" ));
var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" ));
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" ));
var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" ));
var neu = false;
StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id);
}
else
{
StudentRolleStudiensemester_old='';
StudentRolleAusbildungssemester_old='';
document.getElementById('student-rolle-grid-row-textbox').hidden=true;
document.getElementById('student-rolle-grid-row-menulist').hidden=false;
//Defaultwerte bei Neuem Datensatz
var status_kurzbz = 'Interessent';
var studiensemester_kurzbz=window.opener.getStudiensemester();
var ausbildungssemester='1';
var datum = '<?php echo date('d.m.Y') ?>';
var bestaetigt_datum = '<?php echo date('d.m.Y') ?>';
var bewerbung_abgeschicktamum = '';
var orgform_kurzbz = '';
var studienplan_id = '';
var anmerkung = '';
var statusgrund_id = '';
var rt_stufe = '';
StudentRolleLoadStatusgrund(status_kurzbz);
}
document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id;
document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz;
document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz;
document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester;
document.getElementById('student-rolle-datum-datum').value=datum;
document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum;
document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum;
document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz;
MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id);
document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung;
MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id);
MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe);
}
// ****
// * Speichern der Rolle
// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil
// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt
// * kommt.
// ****
function StudentRolleSpeichern()
{
if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old))
window.close();
}
function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund');
url='<?php echo APP_ROOT;?>rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp();
try
{
StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver);
}
catch(e)
{}
//Alte DS entfernen
var oldDatasources = menulistgrund.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
menulistgrund.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
menulistgrund.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url);
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource);
menulistgrund.builder.rebuild();
}
/**
* Wenn das Dropdown fuer den Status geaendert wird, dann
* werden die Statusgruende zu diesem Status geladen
*/
function StudentRolleChangeStatus()
{
var status = document.getElementById('student-rolle-menulist-status_kurzbz').value;
StudentRolleLoadStatusgrund(status);
}
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once('../../config/vilesci.config.inc.php');
?>
var StudentRolleStudiensemester_old;
var StudentRolleAusbildungssemester_old;
var StudentRolleStatusgrundDatasource;
// ****
// * Laedt die Rolle
// ****
function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
if(status_kurzbz!='')
{
document.getElementById('student-rolle-grid-row-textbox').hidden=false;
document.getElementById('student-rolle-grid-row-menulist').hidden=true;
StudentRolleStudiensemester_old=studiensemester_kurzbz;
StudentRolleAusbildungssemester_old=ausbildungssemester;
//Daten holen
var url = '<?php echo APP_ROOT ?>rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var dsource = rdfService.GetDataSourceBlocking(url);
var subject = rdfService.GetResource("http://www.technikum-wien.at/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester);
var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf";
//RDF parsen
var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" ));
var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" ));
var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" ));
var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" ));
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" ));
var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" ));
var neu = false;
StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id);
}
else
{
StudentRolleStudiensemester_old='';
StudentRolleAusbildungssemester_old='';
document.getElementById('student-rolle-grid-row-textbox').hidden=true;
document.getElementById('student-rolle-grid-row-menulist').hidden=false;
//Defaultwerte bei Neuem Datensatz
var status_kurzbz = 'Interessent';
var studiensemester_kurzbz=window.opener.getStudiensemester();
var ausbildungssemester='1';
var datum = '<?php echo date('d.m.Y') ?>';
var bestaetigt_datum = '<?php echo date('d.m.Y') ?>';
var bewerbung_abgeschicktamum = '';
var orgform_kurzbz = '';
var studienplan_id = '';
var anmerkung = '';
var statusgrund_id = '';
var rt_stufe = '';
StudentRolleLoadStatusgrund(status_kurzbz);
}
document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id;
document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz;
document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz;
document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester;
document.getElementById('student-rolle-datum-datum').value=datum;
document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum;
document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum;
document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz;
MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id);
document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung;
MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id);
MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe);
}
// ****
// * Speichern der Rolle
// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil
// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt
// * kommt.
// ****
function StudentRolleSpeichern()
{
if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old))
window.close();
}
function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund');
if (typeof statusgrund_id !== 'undefined')
url='<?php echo APP_ROOT;?>rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp();
else
url='<?php echo APP_ROOT;?>rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&ts'+gettimestamp();
try
{
StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver);
}
catch(e)
{}
//Alte DS entfernen
var oldDatasources = menulistgrund.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
menulistgrund.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
menulistgrund.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url);
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource);
menulistgrund.builder.rebuild();
}
/**
* Wenn das Dropdown fuer den Status geaendert wird, dann
* werden die Statusgruende zu diesem Status geladen
*/
function StudentRolleChangeStatus()
{
var status = document.getElementById('student-rolle-menulist-status_kurzbz').value;
StudentRolleLoadStatusgrund(status);
}
+22 -3
View File
@@ -48,6 +48,7 @@ class bisverwendung extends basis_db
public $inkludierte_lehre;
public $zeitaufzeichnungspflichtig;
public $azgrelevant;
public $homeoffice;
public $ba1bez;
public $ba2bez;
@@ -124,6 +125,7 @@ class bisverwendung extends basis_db
$this->inkludierte_lehre = $row->inkludierte_lehre;
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
return true;
}
else
@@ -257,13 +259,22 @@ class bisverwendung extends basis_db
{
$azgrelevant = 'null';
}
if(is_bool($this->homeoffice))
{
$homeoffice = $this->db_add_param($this->homeoffice, FHC_BOOLEAN);
}
else
{
$homeoffice = 'null';
}
if($new)
{
//Neuen Datensatz anlegen
$qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode,
verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden,
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig, azgrelevant) VALUES (".
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig,
azgrelevant, homeoffice) VALUES (".
$this->db_add_param($this->ba1code, FHC_INTEGER).', '.
$this->db_add_param($this->ba2code, FHC_INTEGER).', '.
$this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '.
@@ -282,7 +293,8 @@ class bisverwendung extends basis_db
$this->db_add_param($this->dv_art).','.
$this->db_add_param($this->inkludierte_lehre).','.
$zeitaufzeichnungspflichtig.','.
$azgrelevant. ');';
$azgrelevant.','.
$homeoffice. ');';
}
else
@@ -307,7 +319,8 @@ class bisverwendung extends basis_db
" dv_art=".$this->db_add_param($this->dv_art).",".
" inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",".
" zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.",".
" azgrelevant =". $azgrelevant.
" azgrelevant =". $azgrelevant.",".
" homeoffice =". $homeoffice.
" WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER);
}
@@ -401,6 +414,7 @@ class bisverwendung extends basis_db
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
return true;
@@ -458,6 +472,7 @@ class bisverwendung extends basis_db
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
@@ -517,6 +532,7 @@ class bisverwendung extends basis_db
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
@@ -571,6 +587,7 @@ class bisverwendung extends basis_db
$this->inkludierte_lehre = $row->inkludierte_lehre;
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
}
return true;
}
@@ -625,6 +642,7 @@ class bisverwendung extends basis_db
$this->inkludierte_lehre = $row->inkludierte_lehre;
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
}
return true;
}
@@ -688,6 +706,7 @@ class bisverwendung extends basis_db
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
+133
View File
@@ -0,0 +1,133 @@
<?php
/* Copyright (C) 2013 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once(dirname(__FILE__). '/basis_db.class.php');
require_once(dirname(__FILE__). '/sprache.class.php');
require_once(dirname(__FILE__). '/functions.inc.php');
class lehrmodus extends basis_db
{
//Objekt Lehrmodus
public $result = array();
//Tabellenspalten
public $lehrmodus_kurzbz;
public $bezeichnung_mehrsprachig;
public $aktiv;
/**
* Konstruktor - Laedt optional einen Lehrmodus
* @param lehrmodus_kurbz Lehrmodus der geladen werden soll
*/
public function __construct($lehrmodus_kurzbz = null)
{
parent::__construct();
if($lehrmodus_kurzbz != null)
$this->load($lehrmodus_kurzbz);
}
/**
* Liefert alle Lehrmodi aus der table tbl_lehrmodus
* @return true wenn ok, false im Fehlerfall
*/
public function getAll()
{
$sprache = new sprache();
$qry = "SELECT *, ".$sprache->getSprachQuery('bezeichnung_mehrsprachig')."
FROM lehre.tbl_lehrmodus";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$lehrmodus = new lehrmodus();
$lehrmodus->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lehrmodus->aktiv = $this->db_parse_bool($row->aktiv);
$lehrmodus->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
$this->result[] = $lehrmodus;
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Laedt einen Lehrmodus
* @param lehrmodus_kurzbz ID des Datensatzes der zu laden ist
* @return true wenn ok, false im Fehlerfall
*/
public function load($lehrmodus_kurzbz)
{
$sprache = new sprache();
$qry = "SELECT
*,".$sprache->getSprachQuery('bezeichnung_mehrsprachig')."
FROM
lehre.tbl_lehrmodus
WHERE
lehrmodus_kurzbz=".$this->db_add_param($lehrmodus_kurzbz).";";
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Lesen vom Lehrmodus';
return false;
}
if($row = $this->db_fetch_object())
{
$this->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row);
$this->aktiv = $this->db_parse_bool($row->aktiv);
}
else
{
$this->errormsg = 'Es ist kein Lehrmodus mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
// public function cleanResult()
// {
// $data = array();
// if(count($this->result)>0)
// {
// foreach ($this->result as $lm)
// {
// $obj = new stdClass();
// $obj->lehrmodus_kurzbz = $lm->lehrmodus_kurzbz;
// $data[] = $obj;
// }
// }
// return $data;
// }
}
?>
+71 -36
View File
@@ -58,6 +58,7 @@ class lehrveranstaltung extends basis_db
public $bezeichnung_english; // varchar(256)
public $orgform_kurzbz; // varchar(3)
public $lehrtyp_kurzbz; // varchar(32)
public $lehrmodus_kurzbz; //varchar(32)
public $oe_kurzbz; // varchar(32)
public $raumtyp_kurzbz; // varchar(16)
public $anzahlsemester; // smallint
@@ -68,6 +69,7 @@ class lehrveranstaltung extends basis_db
public $farbe;
public $lehrauftrag=true;
public $studienplan_lehrveranstaltung_id;
public $studienplan_lehrveranstaltung_id_parent;
public $stpllv_pflicht=true;
@@ -147,6 +149,7 @@ class lehrveranstaltung extends basis_db
$this->bezeichnung_english = $row->bezeichnung_english;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$this->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$this->anzahlsemester = $row->anzahlsemester;
@@ -225,6 +228,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -258,10 +262,12 @@ class lehrveranstaltung extends basis_db
* @param $sort smallint Sortierung
* @param $oe_kurzbz string Organisationseinheit
* @param $lehrtyp string lehrtyp_kurzbz
* @param $lehrmodus string lehrmodus_kurzbz
* @param $orgform string Organisationsform
* @param $lehrmodus string lehrmodus_kurzbz
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva($studiengang_kz=null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null, $orgform=null)
public function load_lva($studiengang_kz=null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null, $lehrmodus=null, $orgform=null)
{
//Variablen pruefen
if($semester == "null")
@@ -320,6 +326,9 @@ class lehrveranstaltung extends basis_db
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
if(!is_null($lehrmodus))
$qry .= " AND lehrmodus_kurzbz=".$this->db_add_param($lehrmodus);
if(!is_null($orgform) && $orgform!='')
$qry .= " AND orgform_kurzbz=".$this->db_add_param($orgform);
@@ -369,6 +378,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -497,6 +507,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -578,6 +589,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -740,40 +752,41 @@ class lehrveranstaltung extends basis_db
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, insertamum,
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,
zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz,
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo, lehrauftrag) VALUES (' .
$this->db_add_param($this->studiengang_kz) . ', ' .
$this->db_add_param($this->bezeichnung) . ', ' .
$this->db_add_param($this->kurzbz) . ', ' .
$this->db_add_param($this->lehrform_kurzbz) . ', ' .
$this->db_add_param($this->semester) . ', ' .
$this->db_add_param($this->ects) . ', ' .
$this->db_add_param($this->semesterstunden) . ', ' .
$this->db_add_param($this->anmerkung) . ', ' .
$this->db_add_param($this->lehre, FHC_BOOLEAN) . ',' .
$this->db_add_param($this->lehreverzeichnis) . ', ' .
$this->db_add_param($this->aktiv, FHC_BOOLEAN) . ', ' .
$this->db_add_param($this->insertamum) . ', ' .
$this->db_add_param($this->insertvon) . ', ' .
$this->db_add_param($this->planfaktor) . ', ' .
$this->db_add_param($this->planlektoren) . ', ' .
$this->db_add_param($this->planpersonalkosten) . ', ' .
$this->db_add_param($this->plankostenprolektor) . ', ' .
$this->db_add_param($this->updateamum) . ', ' .
$this->db_add_param($this->updatevon) . ',' .
$this->db_add_param($this->sort) . ',' .
$this->db_add_param($this->zeugnis, FHC_BOOLEAN) . ',' .
$this->db_add_param($this->projektarbeit, FHC_BOOLEAN) . ',' .
$this->db_add_param($this->sprache) . ',' .
$this->db_add_param($this->koordinator) . ',' .
$this->db_add_param($this->bezeichnung_english) . ',' .
$this->db_add_param($this->orgform_kurzbz) . ',' .
$this->db_add_param($this->incoming) . ',' .
$this->db_add_param($this->lehrtyp_kurzbz) . ',' .
$this->db_add_param($this->oe_kurzbz) . ',' .
$this->db_add_param($this->raumtyp_kurzbz) . ',' .
$this->db_add_param($this->anzahlsemester) . ',' .
$this->db_add_param($this->semesterwochen) . ',' .
$this->db_add_param($this->lvnr) .','.
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo,
lehrauftrag, lehrmodus_kurzbz) VALUES ('.
$this->db_add_param($this->studiengang_kz). ', '.
$this->db_add_param($this->bezeichnung). ', '.
$this->db_add_param($this->kurzbz). ', '.
$this->db_add_param($this->lehrform_kurzbz). ', '.
$this->db_add_param($this->semester). ', '.
$this->db_add_param($this->ects). ', '.
$this->db_add_param($this->semesterstunden). ', '.
$this->db_add_param($this->anmerkung). ', '.
$this->db_add_param($this->lehre, FHC_BOOLEAN). ','.
$this->db_add_param($this->lehreverzeichnis). ', '.
$this->db_add_param($this->aktiv, FHC_BOOLEAN). ', '.
$this->db_add_param($this->insertamum). ', '.
$this->db_add_param($this->insertvon). ', '.
$this->db_add_param($this->planfaktor). ', '.
$this->db_add_param($this->planlektoren). ', '.
$this->db_add_param($this->planpersonalkosten). ', '.
$this->db_add_param($this->plankostenprolektor). ', '.
$this->db_add_param($this->updateamum). ', '.
$this->db_add_param($this->updatevon). ','.
$this->db_add_param($this->sort). ','.
$this->db_add_param($this->zeugnis, FHC_BOOLEAN). ','.
$this->db_add_param($this->projektarbeit, FHC_BOOLEAN). ','.
$this->db_add_param($this->sprache). ','.
$this->db_add_param($this->koordinator). ','.
$this->db_add_param($this->bezeichnung_english). ','.
$this->db_add_param($this->orgform_kurzbz). ','.
$this->db_add_param($this->incoming).','.
$this->db_add_param($this->lehrtyp_kurzbz).','.
$this->db_add_param($this->oe_kurzbz). ','.
$this->db_add_param($this->raumtyp_kurzbz). ','.
$this->db_add_param($this->anzahlsemester). ','.
$this->db_add_param($this->semesterwochen). ','.
$this->db_add_param($this->lvnr).','.
$this->db_add_param($this->semester_alternativ).','.
$this->db_add_param($this->farbe).','.
$this->db_add_param($this->sws).','.
@@ -783,7 +796,8 @@ class lehrveranstaltung extends basis_db
$this->db_add_param($this->las).','.
$this->db_add_param($this->benotung, FHC_BOOLEAN).','.
$this->db_add_param($this->lvinfo, FHC_BOOLEAN).','.
$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN)
$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).','.
$this->db_add_param($this->lehrmodus_kurzbz)
.');';
}
else
@@ -823,6 +837,7 @@ class lehrveranstaltung extends basis_db
'bezeichnung_english=' . $this->db_add_param($this->bezeichnung_english) . ',' .
'orgform_kurzbz=' . $this->db_add_param($this->orgform_kurzbz) . ',' .
'lehrtyp_kurzbz=' . $this->db_add_param($this->lehrtyp_kurzbz) . ',' .
'lehrmodus_kurzbz=' . $this->db_add_param($this->lehrmodus_kurzbz) . ',' .
'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ',' .
'raumtyp_kurzbz=' . $this->db_add_param($this->raumtyp_kurzbz) . ',' .
'anzahlsemester=' . $this->db_add_param($this->anzahlsemester, FHC_INTEGER) . ',' .
@@ -936,6 +951,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -1029,6 +1045,7 @@ class lehrveranstaltung extends basis_db
$l->bezeichnung_english = $row->bezeichnung_english;
$l->orgform_kurzbz = $row->orgform_kurzbz;
$l->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$l->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$l->oe_kurzbz = $row->oe_kurzbz;
$l->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$l->anzahlsemester = $row->anzahlsemester;
@@ -1111,6 +1128,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -1209,6 +1227,7 @@ class lehrveranstaltung extends basis_db
$obj->bezeichnung_english = $row->bezeichnung_english;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$obj->anzahlsemester = $row->anzahlsemester;
@@ -1333,6 +1352,7 @@ class lehrveranstaltung extends basis_db
$obj->ects = $lv->ects;
$obj->semesterstunden = $lv->semesterstunden;
$obj->lehrtyp_kurzbz = $lv->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $lv->lehrmodus_kurzbz;
$obj->studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
$obj->stpllv_semester = $lv->stpllv_semester;
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
@@ -1398,6 +1418,7 @@ class lehrveranstaltung extends basis_db
$obj->semesterstunden = $lv->semesterstunden;
$obj->studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
$obj->lehrtyp_kurzbz = $lv->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $lv->lehrmodus_kurzbz;
$obj->stpllv_semester = $lv->stpllv_semester;
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
@@ -1550,6 +1571,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -1635,6 +1657,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -1750,6 +1773,9 @@ class lehrveranstaltung extends basis_db
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
if(!is_null($lehrmodus))
$qry .= " AND lehrmodus_kurzbz=".$this->db_add_param($lehrmodus);
if(!is_null($semester))
$qry .= " AND semester=".$this->db_add_param ($semester);
@@ -1800,6 +1826,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
@@ -1925,6 +1952,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -2051,6 +2079,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
@@ -2272,6 +2301,11 @@ class lehrveranstaltung extends basis_db
$qry.=" AND tbl_lehrveranstaltung.lehrtyp_kurzbz=" . $this->db_add_param($lehrtyp_kurzbz, FHC_STRING);
}
if (!is_null($lehrmodus_kurzbz))
{
$qry.=" AND tbl_lehrveranstaltung.lehrmodus_kurzbz=" . $this->db_add_param($lehrmodus_kurzbz, FHC_STRING);
}
if (!is_null($semester))
{
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
@@ -2315,6 +2349,7 @@ class lehrveranstaltung extends basis_db
$obj->bezeichnung_english = $row->bezeichnung_english;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$obj->anzahlsemester = $row->anzahlsemester;
+1 -1
View File
@@ -22,7 +22,7 @@
require_once(dirname(__FILE__).'/person.class.php');
require_once(dirname(__FILE__).'/benutzer.class.php');
require_once(dirname(__FILE__).'/functions.inc.php');
require_once(dirname(__FILE__).'/udf.class.php');
require_once(dirname(__FILE__).'/udf.class.php'); // required only to check if UDFs are defined
class mitarbeiter extends benutzer
{
+39 -27
View File
@@ -71,6 +71,8 @@ class prestudent extends person
public $gsstudientyp_kurzbz='Intern';
public $aufnahmegruppe_kurzbz;
public $priorisierung = null;
public $foerderrelevant = null;
public $standort_code = null;
public $status_kurzbz;
public $studiensemester_kurzbz;
@@ -164,6 +166,8 @@ class prestudent extends person
$this->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz;
$this->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
$this->priorisierung = $row->priorisierung;
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
if(!person::load($row->person_id))
return false;
@@ -250,7 +254,7 @@ class prestudent extends person
reihungstest_id, anmeldungreihungstest, reihungstestangetreten, rt_gesamtpunkte,
rt_punkte1, rt_punkte2, rt_punkte3, bismelden, insertamum, insertvon,
updateamum, updatevon, anmerkung, dual, ausstellungsstaat, mentor,
gsstudientyp_kurzbz, aufnahmegruppe_kurzbz, priorisierung) VALUES('.
gsstudientyp_kurzbz, aufnahmegruppe_kurzbz, priorisierung, foerderrelevant, standort_code) VALUES('.
$this->db_add_param($this->aufmerksamdurch_kurzbz).",".
$this->db_add_param($this->person_id).",".
$this->db_add_param($this->studiengang_kz).",".
@@ -284,7 +288,9 @@ class prestudent extends person
$this->db_add_param($this->mentor).",".
$this->db_add_param($this->gsstudientyp_kurzbz).",".
$this->db_add_param($this->aufnahmegruppe_kurzbz).",".
$this->db_add_param($this->priorisierung).");";
$this->db_add_param($this->priorisierung).",".
$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).",".
$this->db_add_param($this->standort_code).");";
}
else
{
@@ -320,7 +326,9 @@ class prestudent extends person
' dual='.$this->db_add_param($this->dual, FHC_BOOLEAN).",".
' ausstellungsstaat='.$this->db_add_param($this->ausstellungsstaat).",".
' aufnahmegruppe_kurzbz='.$this->db_add_param($this->aufnahmegruppe_kurzbz).",".
' priorisierung='.$this->db_add_param($this->priorisierung).' '.
' priorisierung='.$this->db_add_param($this->priorisierung).",".
' foerderrelevant='.$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).",".
' standort_code='.$this->db_add_param($this->standort_code)." ".
" WHERE prestudent_id=".$this->db_add_param($this->prestudent_id).";";
}
@@ -916,6 +924,8 @@ class prestudent extends person
$ps->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz;
$ps->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
$ps->priorisierung = $row->priorisierung;
$ps->foerderrelevant = $row->foerderrelevant;
$ps->standort_code = $row->standort_code;
$ps->status_kurzbz = $row->status_kurzbz;
$ps->studiensemester_kurzbz = $row->studiensemester_kurzbz;
@@ -1078,23 +1088,23 @@ class prestudent extends person
studiensemester_kurzbz, ausbildungssemester, datum, insertamum, insertvon,
updateamum, updatevon, ext_id, orgform_kurzbz, bestaetigtam, bestaetigtvon, anmerkung,
bewerbung_abgeschicktamum, studienplan_id, rt_stufe, statusgrund_id) VALUES('.
$this->db_add_param($this->prestudent_id).",".
$this->db_add_param($this->status_kurzbz).",".
$this->db_add_param($this->studiensemester_kurzbz).",".
$this->db_add_param($this->ausbildungssemester).",".
$this->db_add_param($this->datum).",".
$this->db_add_param($this->insertamum).",".
$this->db_add_param($this->insertvon).",".
$this->db_add_param($this->updateamum).",".
$this->db_add_param($this->updatevon).",".
$this->db_add_param($this->ext_id_prestudent).",".
$this->db_add_param($this->orgform_kurzbz).",".
$this->db_add_param($this->bestaetigtam).",".
$this->db_add_param($this->bestaetigtvon).",".
$this->db_add_param($this->anmerkung_status).",".
$this->db_add_param($this->bewerbung_abgeschicktamum).",".
$this->db_add_param($this->studienplan_id,FHC_INTEGER).",".
$this->db_add_param($this->rt_stufe,FHC_INTEGER).",".
$this->db_add_param($this->prestudent_id).",".
$this->db_add_param($this->status_kurzbz).",".
$this->db_add_param($this->studiensemester_kurzbz).",".
$this->db_add_param($this->ausbildungssemester).",".
$this->db_add_param($this->datum).",".
$this->db_add_param($this->insertamum).",".
$this->db_add_param($this->insertvon).",".
$this->db_add_param($this->updateamum).",".
$this->db_add_param($this->updatevon).",".
$this->db_add_param($this->ext_id_prestudent).",".
$this->db_add_param($this->orgform_kurzbz).",".
$this->db_add_param($this->bestaetigtam).",".
$this->db_add_param($this->bestaetigtvon).",".
$this->db_add_param($this->anmerkung_status).",".
$this->db_add_param($this->bewerbung_abgeschicktamum).",".
$this->db_add_param($this->studienplan_id,FHC_INTEGER).",".
$this->db_add_param($this->rt_stufe,FHC_INTEGER).",".
$this->db_add_param($this->statusgrund_id, FHC_INTEGER).");";
}
else
@@ -2422,13 +2432,15 @@ class prestudent extends person
return false;
}
$qry = "SELECT kurzbzlang
FROM public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
$qry = "SELECT
UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) as kuerzel
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
AND typ in ('b','m','d')
AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
AND typ in ('b','m','d')
ORDER BY status_kurzbz ASC
LIMIT 1;";
@@ -2436,7 +2448,7 @@ class prestudent extends person
{
if ($row = $this->db_fetch_object())
{
$stg = $row->kurzbzlang;
$stg = $row->kuerzel;
return $stg;
}
else
+2 -1
View File
@@ -688,7 +688,7 @@ public function getFortschritt($projektphase_id)
$qry = "
SELECT
DISTINCT tbl_projektphase.*
DISTINCT tbl_projektphase.*,tbl_projekt.titel
FROM
fue.tbl_projektphase
JOIN fue.tbl_projekt USING (projekt_kurzbz)
@@ -718,6 +718,7 @@ public function getFortschritt($projektphase_id)
$obj->bezeichnung = $row->bezeichnung;
$obj->typ = $row->typ;
$obj->beschreibung = $row->beschreibung;
$obj->projekttitel = $row->titel;
$obj->start = $row->start;
$obj->ende = $row->ende;
$obj->personentage = $row->personentage;
+2 -1
View File
@@ -185,7 +185,8 @@ class pruefungsanmeldung extends basis_db {
$qry = 'SELECT * FROM campus.tbl_pruefungsanmeldung pa '
. 'JOIN campus.tbl_pruefungstermin pt ON pa.pruefungstermin_id=pt.pruefungstermin_id '
. 'JOIN campus.tbl_pruefung p ON p.pruefung_id=pt.pruefung_id '
. 'WHERE uid='.$this->db_add_param($uid);
. 'WHERE uid='.$this->db_add_param($uid) . ' '
. 'AND p.storniert=false';
if($studiensemester_kurzbz != null)
{
+2 -1
View File
@@ -142,7 +142,7 @@ class statistik extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->udpatevon = $row->updatevon;
$obj->updatevon = $row->updatevon;
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$obj->preferences = $row->preferences;
@@ -510,6 +510,7 @@ class statistik extends basis_db
$this->html='';
$this->csv='';
$this->json=array();
set_time_limit(60);
if($this->sql!='')
{
+28
View File
@@ -16,6 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once('basis_db.class.php');
@@ -30,6 +31,7 @@ class statusgrund extends basis_db
public $aktiv = true; // boolean
public $bezeichnung_mehrsprachig; // varchar(255)[]
public $bezeichnung; // text[]
public $statusgrund_kurzbz; //varchar(32)
/**
* Konstruktor - Laedt optional einen Statusgrund
@@ -71,6 +73,7 @@ class statusgrund extends basis_db
$this->aktiv = $this->db_parse_bool($row->aktiv);
$this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
$this->beschreibung = $sprache->parseSprachResult('beschreibung', $row);
$this->statusgrund_kurzbz = $row->statusgrund_kurzbz;
}
else
{
@@ -120,6 +123,7 @@ class statusgrund extends basis_db
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
$obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row);
$obj->statusgrund_kurzbz = $row->statusgrund_kurzbz;
$this->result[] = $obj;
}
@@ -166,6 +170,7 @@ class statusgrund extends basis_db
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
$obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row);
$obj->statusgrund_kurzbz = $row->statusgrund_kurzbz;
$this->result[] = $obj;
}
@@ -179,5 +184,28 @@ class statusgrund extends basis_db
return true;
}
/**
* Laedt das Klassenobjekt anhand der kurzbz
*
* @param string $statusgrund_kurzbz Statusgrund zu dem das Objekt geladen werden soll.
* @return object classobject
*/
public function getByStatusgrundKurzbz($statusgrund_kurzbz)
{
$qry = "
SELECT
*
FROM
public.tbl_status_grund
WHERE
statusgrund_kurzbz ='". $statusgrund_kurzbz. "'
";
$this->db_query($qry);
return
$this->db_fetch_object();
}
}
?>
+35 -2
View File
@@ -53,6 +53,9 @@ class studiengang extends basis_db
public $studienplaetze; // smallint
public $oe_kurzbz; // varchar(32)
public $onlinebewerbung; // boolean
public $melderelevant; // boolean
public $foerderrelevant; // boolean
public $standort_code; // integer
public $kuerzel; // = typ + kurzbz (Bsp: BBE)
public $kuerzel_arr = array(); // Array mit allen Kurzeln Index=studiengangs_kz
@@ -128,6 +131,9 @@ class studiengang extends basis_db
$this->moodle = $this->db_parse_bool($row->moodle);
$this->mischform = $this->db_parse_bool($row->mischform);
$this->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$this->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
$this->bezeichnung_arr['German'] = $this->bezeichnung;
$this->bezeichnung_arr['English'] = $this->english;
@@ -201,6 +207,9 @@ class studiengang extends basis_db
$stg_obj->moodle = $this->db_parse_bool($row->moodle);
$stg_obj->mischform = $this->db_parse_bool($row->mischform);
$stg_obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$stg_obj->standort_code = $row->standort_code;
$stg_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$stg_obj->bezeichnung_arr['English'] = $row->english;
@@ -419,6 +428,9 @@ class studiengang extends basis_db
$stg_obj->moodle = $this->db_parse_bool($row->moodle);
$stg_obj->mischform = $this->db_parse_bool($row->mischform);
$stg_obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$stg_obj->standort_code = $row->standort_code;
$stg_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$stg_obj->bezeichnung_arr['English'] = $row->english;
@@ -519,7 +531,10 @@ class studiengang extends basis_db
$this->db_add_param($this->studienplaetze).', '.
$this->db_add_param($this->lgartcode).', '.
$this->db_add_param($this->mischform, FHC_BOOLEAN).','.
$this->db_add_param($this->projektarbeit_note_anzeige, FHC_BOOLEAN).');';
$this->db_add_param($this->projektarbeit_note_anzeige, FHC_BOOLEAN).','.
$this->db_add_param($this->melderelevant, FHC_BOOLEAN).','.
$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).','.
$this->db_add_param($this->standort_code).');';
}
else
{
@@ -556,7 +571,10 @@ class studiengang extends basis_db
'testtool_sprachwahl='.$this->db_add_param($this->testtool_sprachwahl, FHC_BOOLEAN).', '.
'studienplaetze='.$this->db_add_param($this->studienplaetze).', '.
'lgartcode='.$this->db_add_param($this->lgartcode).', '.
'mischform='.$this->db_add_param($this->mischform, FHC_BOOLEAN).' '.
'mischform='.$this->db_add_param($this->mischform, FHC_BOOLEAN).', '.
'melderelevant='.$this->db_add_param($this->melderelevant, FHC_BOOLEAN).', '.
'foerderrelevant='.$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).', '.
'standort_code='.$this->db_add_param($this->standort_code).' '.
'WHERE studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER, false).';';
}
@@ -679,6 +697,9 @@ class studiengang extends basis_db
$this->onlinebewerbung = $this->db_parse_bool($row->onlinebewerbung);
$this->moodle = $this->db_parse_bool($row->moodle);
$this->mischform = $this->db_parse_bool($row->mischform);
$this->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
$this->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$this->bezeichnung_arr['German'] = $this->bezeichnung;
@@ -819,6 +840,9 @@ class studiengang extends basis_db
$obj->moodle = $this->db_parse_bool($row->moodle);
$obj->mischform = $this->db_parse_bool($row->mischform);
$obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$this->result[] = $obj;
@@ -891,6 +915,9 @@ class studiengang extends basis_db
$obj->moodle = $this->db_parse_bool($row->moodle);
$obj->mischform = $this->db_parse_bool($row->mischform);
$obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
@@ -993,6 +1020,9 @@ class studiengang extends basis_db
$obj->moodle = $this->db_parse_bool($row->moodle);
$obj->mischform = $this->db_parse_bool($row->mischform);
$obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
@@ -1127,6 +1157,9 @@ class studiengang extends basis_db
$obj->moodle = $this->db_parse_bool($row->moodle);
$obj->mischform = $this->db_parse_bool($row->mischform);
$obj->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
+50 -18
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
/* Copyright (C) 2009-2021 fhcomplete.net
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -15,11 +15,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Bison Paolo <bison@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/../config/global.config.inc.php');
require_once(dirname(__FILE__).'/benutzerberechtigung.class.php');
/**
* Used to export UDF in MS Excel format
@@ -286,14 +286,21 @@ class UDF extends basis_db
});
}
/**
* Returns an array of associative arrays that contains the couple name and title related to an UDF
* These data are retrived from the UDF definitions given as parameter
*/
private function _getUDFDefinition($jsons)
{
/**
* Returns an array of associative arrays that contains the couple name and title related to an UDF
* These data are retrived from the UDF definitions given as parameter
*/
private function _getUDFDefinition($jsons)
{
$names = array();
$uid = get_uid(); // get the UID of the logged person
if ($uid == null) return names(); // if no logged then it is not possible to loads UDFs
// Gets the permissions for the logged user
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($uid);
if ($jsons != null && ($jsonsDecoded = json_decode($jsons)) != null)
{
if (is_object($jsonsDecoded) || is_array($jsonsDecoded))
@@ -305,27 +312,51 @@ class UDF extends basis_db
$this->_sortJsonSchemas($jsonsDecoded);
foreach($jsonsDecoded as $udfJsonShema)
foreach ($jsonsDecoded as $udfJsonShema)
{
if (isset($udfJsonShema->name) && isset($udfJsonShema->title))
// Checks if the requiredPermissions property exists
if (isset($udfJsonShema->requiredPermissions))
{
$tmpArray = array('name' => $udfJsonShema->name, 'title' => $udfJsonShema->title);
$isAllowed = false;
if (isset($udfJsonShema->type)
&& ($udfJsonShema->type == 'dropdown' || $udfJsonShema->type == 'multipledropdown')
&& isset($udfJsonShema->listValues) && isset($udfJsonShema->listValues->enum))
// If requiredPermissions is an array check if at least one of the permissions belongs to the logged user
if (is_array($udfJsonShema->requiredPermissions))
{
$tmpArray['enum'] = $udfJsonShema->listValues->enum;
foreach ($udfJsonShema->requiredPermissions as $permission)
{
$isAllowed = $berechtigung->isBerechtigt($permission);
if ($isAllowed === true) break;
}
}
else // otherwise check it directly
{
$isAllowed = $berechtigung->isBerechtigt($udfJsonShema->requiredPermissions);
}
$names[] = $tmpArray;
}
// If the logged user has at least one of the required permissions
if ($isAllowed === true)
{
if (isset($udfJsonShema->name) && isset($udfJsonShema->title))
{
$tmpArray = array('name' => $udfJsonShema->name, 'title' => $udfJsonShema->title);
if (isset($udfJsonShema->type)
&& ($udfJsonShema->type == 'dropdown' || $udfJsonShema->type == 'multipledropdown')
&& isset($udfJsonShema->listValues) && isset($udfJsonShema->listValues->enum))
{
$tmpArray['enum'] = $udfJsonShema->listValues->enum;
}
$names[] = $tmpArray;
}
} // otherwise this UDF is discarted because the requiredPermissions is mandatory
} // otherwise this UDF is discarted because the requiredPermissions is mandatory
}
}
}
return $names;
}
}
/**
* Loads UDf titles from phrases
@@ -374,3 +405,4 @@ class UDF extends basis_db
return $titles;
}
}
+9 -1
View File
@@ -49,6 +49,7 @@ class zeitaufzeichnung extends basis_db
public $ext_id; // bigint
public $service_id; // integer
public $kunde_uid; // varchar(32)
public $homeoffice; // bool
/**
* Konstruktor
@@ -104,6 +105,7 @@ class zeitaufzeichnung extends basis_db
$this->ext_id = $row->ext_id;
$this->service_id = $row->service_id;
$this->kunde_uid = $row->kunde_uid;
$this->homeoffice = $row->homeoffice;
}
else
{
@@ -203,7 +205,7 @@ class zeitaufzeichnung extends basis_db
{
//Neuen Datensatz einfuegen
$qry='BEGIN;INSERT INTO campus.tbl_zeitaufzeichnung (uid, aktivitaet_kurzbz, start, ende, beschreibung,
oe_kurzbz_1, oe_kurzbz_2, insertamum, insertvon, updateamum, updatevon, projekt_kurzbz, projektphase_id, service_id, kunde_uid) VALUES('.
oe_kurzbz_1, oe_kurzbz_2, insertamum, insertvon, updateamum, updatevon, projekt_kurzbz, projektphase_id, service_id, homeoffice, kunde_uid) VALUES('.
$this->db_add_param($this->uid).', '.
$this->db_add_param($this->aktivitaet_kurzbz).', '.
$this->db_add_param($this->start).', '.
@@ -218,6 +220,7 @@ class zeitaufzeichnung extends basis_db
$this->db_add_param($this->projekt_kurzbz).', '.
$this->db_add_param($this->projektphase_id, FHC_INTEGER).', '.
$this->db_add_param($this->service_id).', '.
$this->db_add_param($this->homeoffice, FHC_BOOLEAN).', '.
$this->db_add_param($this->kunde_uid).');';
}
else
@@ -244,6 +247,7 @@ class zeitaufzeichnung extends basis_db
' projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '.
' projektphase_id='.$this->db_add_param($this->projektphase_id, FHC_INTEGER).', '.
' service_id='.$this->db_add_param($this->service_id).', '.
' homeoffice ='.$this->db_add_param($this->homeoffice, FHC_BOOLEAN).', '.
' kunde_uid='.$this->db_add_param($this->kunde_uid).' '.
'WHERE zeitaufzeichnung_id='.$this->db_add_param($this->zeitaufzeichnung_id, FHC_INTEGER, false);
}
@@ -349,6 +353,7 @@ class zeitaufzeichnung extends basis_db
$obj->updatevon = $row->updatevon;
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projektphase_id = $row->projektphase_id;
$obj->homeoffice = $row->homeoffice;
$obj->ext_id = $row->ext_id;
$obj->service_id = $row->service_id;
$obj->kunde_uid = $row->kunde_uid;
@@ -430,6 +435,7 @@ class zeitaufzeichnung extends basis_db
$obj->updatevon = $row->updatevon;
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projektphase_id = $row->projektphase_id;
$obj->homeoffice = $row->homeoffice;
$obj->ext_id = $row->ext_id;
$obj->service_id = $row->service_id;
$obj->kunde_uid = $row->kunde_uid;
@@ -491,6 +497,7 @@ class zeitaufzeichnung extends basis_db
$obj->updatevon = $row->updatevon;
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projektphase_id = $row->projektphase_id;
$obj->homeoffice = $row->homeoffice;
$obj->ext_id = $row->ext_id;
$obj->service_id = $row->service_id;
$obj->kunde_uid = $row->kunde_uid;
@@ -556,6 +563,7 @@ class zeitaufzeichnung extends basis_db
$obj->updatevon = $row->updatevon;
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projektphase_id = $row->projektphase_id;
$obj->homeoffice = $row->homeoffice;
$obj->ext_id = $row->ext_id;
$obj->service_id = $row->service_id;
$obj->kunde_uid = $row->kunde_uid;
+2
View File
@@ -7,6 +7,7 @@ $this->phrasen['zeitaufzeichnung/projekt']='Projekt';
$this->phrasen['zeitaufzeichnung/projektphase']='Projektphase';
$this->phrasen['zeitaufzeichnung/keineAuswahl']='keine Auswahl';
$this->phrasen['zeitaufzeichnung/aktivitaet']='Aktivität';
$this->phrasen['zeitaufzeichnung/homeoffice']='Homeoffice';
$this->phrasen['zeitaufzeichnung/id']='ID';
$this->phrasen['zeitaufzeichnung/user']='User';
$this->phrasen['zeitaufzeichnung/start']='Start';
@@ -63,3 +64,4 @@ $this->phrasen['zeitaufzeichnung/projektphase']='AP';
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='Pause automatisch einfügen';
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Zeitraum zu kurz für automatische Pause';
$this->phrasen['zeitaufzeichnung/supportAnfragen']='<p><hr>Supportanfragen unter<br><a href="mailto:zeiterfassung@technikum-wien.at">zeiterfassung@technikum-wien.at</a></p>';
$this->phrasen['zeitaufzeichnung/homeofficeNichtErlaubt']='Homeoffice für den Tag %s nicht erlaubt';
+2
View File
@@ -7,6 +7,7 @@ $this->phrasen['zeitaufzeichnung/projekt']='Project';
$this->phrasen['zeitaufzeichnung/projektphase']='Projectphase';
$this->phrasen['zeitaufzeichnung/keineAuswahl']='no selection';
$this->phrasen['zeitaufzeichnung/aktivitaet']='Activity';
$this->phrasen['zeitaufzeichnung/homeoffice']='Homeoffice';
$this->phrasen['zeitaufzeichnung/id']='ID';
$this->phrasen['zeitaufzeichnung/user']='User';
$this->phrasen['zeitaufzeichnung/start']='Start';
@@ -63,3 +64,4 @@ $this->phrasen['zeitaufzeichnung/projektphase']='WP';
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='insert break automatically';
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Timeslot too short for automatic break.';
$this->phrasen['zeitaufzeichnung/supportAnfragen']='<p><hr>Contact for support<br><a href="mailto:zeiterfassung@technikum-wien.at">zeiterfassung@technikum-wien.at</a></p>';
$this->phrasen['zeitaufzeichnung/homeofficeNichtErlaubt']='Homeoffice for day %s not allowed';
+14
View File
@@ -0,0 +1,14 @@
.inline-inputfield {
width: auto;
display: inline;
}
.fa-edit {
cursor: pointer;
font-size: 1.2em;
}
.fa-check {
cursor: pointer;
font-size: 1.4em;
}
+8
View File
@@ -0,0 +1,8 @@
.datasetActionsTopBottomText {
padding-top: 1em;
}
.datasetActionsHorizontalLine {
margin-top: 5px;
margin-bottom: 5px;
}
+14 -3
View File
@@ -55,17 +55,27 @@ var FHC_UDFWidget = {
if (FHC_AjaxClient.hasData(data))
{
FHC_DialogLib.alertSuccess('Done!');
FHC_DialogLib.alertSuccess("Successfully saved");
}
else
{
console.log(FHC_AjaxClient.getError(data));
var msgError = "An error occurred while saving these fields:<br>";
var errors = FHC_AjaxClient.getError(data);
for (var i = 0; i < errors.length; i++)
{
var error = errors[i];
msgError += FHC_AjaxClient.getError(error)+ "<br>";
}
FHC_DialogLib.alertError(msgError);
}
}
},
{
errorCallback: function(data, textStatus, jqXHR) {
console.log('Contact the administrator');
FHC_DialogLib.alertError("A generic error occurred, please contact the support");
}
}
);
@@ -98,3 +108,4 @@ $(document).ready(function() {
FHC_UDFWidget.display();
});
+512
View File
@@ -0,0 +1,512 @@
const BASE_URL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router;
const CALLED_PATH = FHC_JS_DATA_STORAGE_OBJECT.called_path;
const CONTROLLER_URL = BASE_URL + "/"+CALLED_PATH;
/**
* javascript file for Öhbeitrag GUI
*/
$(document).ready(function ()
{
// get Öhbeiträge and show them in table
Oehbeitrag.getOehBeitraege();
// set event for adding new Oehhbeitrag
$("#addNewOeh").click(
function()
{
let callback = function(data)
{
if (FHC_AjaxClient.hasData(data))
{
let studiensemester = FHC_AjaxClient.getData(data);
let nextOehbeitragId = Oehbeitrag.newBeitragId;
// add new table row
let newRowHtml = "<tr>"+
"<td>";
newRowHtml += Oehbeitrag._getStudiensemesterDropdown(Oehbeitrag.newBeitragId, 'von_studiensemester_kurzbz', studiensemester);
newRowHtml += "</td><td>";
newRowHtml += Oehbeitrag._getStudiensemesterDropdown(Oehbeitrag.newBeitragId, 'bis_studiensemester_kurzbz', studiensemester);
newRowHtml += "</td>";
newRowHtml += "<td><input type='text' name='studierendenbeitrag' id='input_studierendenbeitrag_"+nextOehbeitragId+"' class='form-control' placeholder='0,00'></td>"+
"<td><input type='text' name='versicherung' id='input_versicherung_"+nextOehbeitragId+"' class='form-control' placeholder='0,00'></td>"+
"<td><button class='btn btn-default' id='addOeh_"+nextOehbeitragId+"'>Speichern</button>&nbsp;" +
" <button class='btn btn-default' id='delete_"+nextOehbeitragId+"'>Entfernen</button></td>"+
"</tr>";
$("#oehbeitraegeTbl tbody").prepend(newRowHtml);
$("#addOeh_"+Oehbeitrag.newBeitragId).click(
function()
{
// get form data into object
let oehbeitrag = {
"von_studiensemester_kurzbz": $("#input_von_studiensemester_kurzbz_"+nextOehbeitragId).val(),
"bis_studiensemester_kurzbz": $("#input_bis_studiensemester_kurzbz_"+nextOehbeitragId).val(),
"studierendenbeitrag": $("#input_studierendenbeitrag_"+nextOehbeitragId).val().replace(",", "."),
"versicherung": $("#input_versicherung_"+nextOehbeitragId).val().replace(",", ".")
}
let studiensemester_von_bis = {
"von_semester_with_date": $("#input_von_studiensemester_kurzbz_"+nextOehbeitragId+" option:selected").text(),
"bis_semester_with_date": $("#input_bis_studiensemester_kurzbz_"+nextOehbeitragId+" option:selected").text()
}
Oehbeitrag.addOehbeitrag(oehbeitrag, studiensemester_von_bis, nextOehbeitragId);
}
);
// remove html row if delete button clicked
$("#delete_"+nextOehbeitragId).click(
function()
{
$(this).parent('td').parent('tr').remove();
}
);
// increase counter for newly added rows id
Oehbeitrag.newBeitragId++;
}
else
FHC_DialogLib.alertInfo("ÖH-Beiträge für alle Studiensemester festgelegt");
}
Oehbeitrag.getValidStudiensemester(callback);
}
)
});
var Oehbeitrag = {
newBeitragId: 0,
// -----------------------------------------------------------------------------------------------------------------
// ajax calls
getOehBeitraege: function()
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getOehbeitraege",
null,
{
successCallback: function(data, textStatus, jqXHR)
{
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
else if (FHC_AjaxClient.hasData(data))
{
let oehbeitraege = FHC_AjaxClient.getData(data);
let oehbeitrStr = '';
for (let idx in oehbeitraege)
{
let oehbeitrag = oehbeitraege[idx];
// add Öhbeitrag row
oehbeitrStr += '<tr>' +
'<td id="cell_von_studiensemester_kurzbz_' + oehbeitrag.oehbeitrag_id + '">' +
Oehbeitrag._formatDateToGerman(oehbeitrag.von_datum) + '/' + oehbeitrag.von_studiensemester_kurzbz +
'&nbsp;<i class="fa fa-edit editVonStudiensemester" id="edit_von_studiensemester_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
'<td id="cell_bis_studiensemester_kurzbz_' + oehbeitrag.oehbeitrag_id + '">' + (oehbeitrag.bis_studiensemester_kurzbz == null ? 'unbeschr&aumlnkt' :
Oehbeitrag._formatDateToGerman(oehbeitrag.bis_datum) + '/' + oehbeitrag.bis_studiensemester_kurzbz) +
'&nbsp;<i class="fa fa-edit editBisStudiensemester" id="edit_bis_studiensemester_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
'<td id="cell_studierendenbeitrag_' + oehbeitrag.oehbeitrag_id + '">' + Oehbeitrag._formatDecimal(oehbeitrag.studierendenbeitrag) +
'&nbsp;<i class="fa fa-edit editStudierendenbeitrag" id="edit_studierendenbeitrag_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
'<td id="cell_versicherung_' + oehbeitrag.oehbeitrag_id + '">' + Oehbeitrag._formatDecimal(oehbeitrag.versicherung) +
'&nbsp;<i class="fa fa-edit editVersicherung" id="edit_versicherung_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
'<td>' +
'<button class="btn btn-default editBtn" id="edit_'+oehbeitrag.oehbeitrag_id+'">Bearbeiten</button>' +
'&nbsp;<button class="btn btn-default deleteBtn" id="delete_'+oehbeitrag.oehbeitrag_id+'">L&ouml;schen</button>' +
'</td>' +
'</tr>';
}
$("#oehbeitraegeTbl tbody").html(oehbeitrStr);
// set events for editing, deleting etc.
Oehbeitrag._setUpdateEvents();
//initialise table sorter
Oehbeitrag._addTablesorter();
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Holen der Öhbeiträge');
}
}
);
},
// get all Studiensemester which are valid for assignment (where no Öhbeitrag is assigned)
getValidStudiensemester: function(callback, oehbeitrag_id)
{
let params = oehbeitrag_id ? {"oehbeitrag_id": oehbeitrag_id} : null;
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getValidStudiensemester",
params,
{
successCallback: callback,
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Holen der Semester');
}
}
);
},
addOehbeitrag: function(oehbeitrag, studiensemester_von_bis, nextOehbeitragId)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/addOehbeitrag',
oehbeitrag,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
else if (FHC_AjaxClient.hasData(data))
{
// refresh Öhbeitragstable
Oehbeitrag.getOehBeitraege();
}
else
{
FHC_DialogLib.alertError('Fehler beim Hinzufügen des Öhbeitrags');
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Hinzufügen des Öhbeitrags');
}
}
);
},
// update whole Öhbeitrag
updateOehbeitrag: function(oehbeitrag_id, oehbeitragData)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/updateOehbeitrag',
{
"oehbeitrag_id": oehbeitrag_id,
"data": oehbeitragData
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
else if (FHC_AjaxClient.hasData(data))
{
// refresh Öhbeitragstable
Oehbeitrag.getOehBeitraege();
}
else
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
}
}
);
},
// update one field of Öhbeitrag (e.g. only semester or only Betrag)
updateOehbeitragField: function(oehbeitrag_id, fieldname, fieldelement, inputtype)
{
let oehbeitragdata = {};
let fieldvalue = fieldelement.val();
if (inputtype != 'semester') // formal number as decimal with point separator
fieldvalue = Oehbeitrag._formatDecimal(fieldvalue, ".");
oehbeitragdata[fieldname] = fieldvalue;
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/updateOehbeitrag',
{
"oehbeitrag_id": oehbeitrag_id,
"data": oehbeitragdata
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
else if (FHC_AjaxClient.hasData(data))
{
// refresh table cell with correct value and set edit event and tablesorter
if (inputtype == 'semester')
fieldvalue = $(fieldelement).find("option:selected").text();
else
fieldvalue = Oehbeitrag._formatDecimal(fieldvalue);
$("#confirm_"+fieldname+"_"+oehbeitrag_id).parent('td').html(
fieldvalue+" <i class='fa fa-edit' id='edit_"+fieldname+"_"+oehbeitrag_id+"'></i>"
);
$("#edit_"+fieldname+"_"+oehbeitrag_id).click(
function()
{
Oehbeitrag._makeFieldEditable($(this).prop("id"), fieldname, inputtype, true);
}
);
Oehbeitrag._addTablesorter();
}
else
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
}
}
);
},
deleteOehbeitrag: function(oehbeitrag_id)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/deleteOehbeitrag',
{"oehbeitrag_id": oehbeitrag_id},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
$("#delete_"+oehbeitrag_id).closest("tr").remove();
Oehbeitrag._addTablesorter();
}
else
{
FHC_DialogLib.alertError('Fehler beim Löschen des Öhbeitrags');
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Löschen des Öhbeitrags');
}
}
);
},
// -----------------------------------------------------------------------------------------------------------------
/**
* Sets click events for updating, deleting Oehbeitrag
*/
_setUpdateEvents: function()
{
// set edit event for whole row
$(".editBtn").click(
function()
{
let id = $(this).prop("id");
let oehbeitrag_id = id.substr(id.lastIndexOf('_')+1);
Oehbeitrag._makeFieldEditable(id, 'von_studiensemester_kurzbz', 'semester');
Oehbeitrag._makeFieldEditable(id, 'bis_studiensemester_kurzbz', 'semester');
Oehbeitrag._makeFieldEditable(id, 'studierendenbeitrag');
Oehbeitrag._makeFieldEditable(id, 'versicherung');
$(this).after("&nbsp;<button class='btn btn-default saveBtn' id='save_"+oehbeitrag_id+"'>Speichern</button>");
$(this).remove();
$("#delete_" + oehbeitrag_id).remove();
$("#save_"+oehbeitrag_id).click(
function()
{
let von_studiensemester_kurzbz = $("#input_von_studiensemester_kurzbz_"+oehbeitrag_id+" option:selected").val();
let bis_studiensemester_kurzbz = $("#input_bis_studiensemester_kurzbz_"+oehbeitrag_id+" option:selected").val();
let studierendenbeitrag = Oehbeitrag._formatDecimal($("#input_studierendenbeitrag_"+oehbeitrag_id).val(), '.');
let versicherung = Oehbeitrag._formatDecimal($("#input_versicherung_"+oehbeitrag_id).val(), '.');
let oehbeitragData = {
"von_studiensemester_kurzbz": von_studiensemester_kurzbz,
"bis_studiensemester_kurzbz": bis_studiensemester_kurzbz,
"studierendenbeitrag": studierendenbeitrag,
"versicherung": versicherung
}
Oehbeitrag.updateOehbeitrag(oehbeitrag_id, oehbeitragData);
}
)
}
);
// set delete event for all rows
$(".deleteBtn").click(
function()
{
let oehbeitrag_id_prefixed = $(this).prop("id");
let oehbeitrag_id = oehbeitrag_id_prefixed.substr(oehbeitrag_id_prefixed.lastIndexOf('_')+1);
Oehbeitrag.deleteOehbeitrag(oehbeitrag_id);
}
)
// set edit events for single cells
$(".editStudierendenbeitrag").off('click').click(
function()
{
Oehbeitrag._makeFieldEditable($(this).prop("id"), 'studierendenbeitrag', null, true);
}
);
$(".editVersicherung").off('click').click(
function()
{
Oehbeitrag._makeFieldEditable($(this).prop("id"), 'versicherung', null, true);
}
);
$(".editBisStudiensemester").off('click').click(
function()
{
Oehbeitrag._makeFieldEditable($(this).prop("id"), 'bis_studiensemester_kurzbz', 'semester', true);
}
);
$(".editVonStudiensemester").off('click').click(
function()
{
Oehbeitrag._makeFieldEditable($(this).prop("id"), 'von_studiensemester_kurzbz', 'semester', true);
}
);
},
// make Öhbeitrag field editable, i.e. show input field instead of text
_makeFieldEditable: function(oehbeitrag_id_prefixed, fieldname, inputtype, singleUpdate)
{
let oehbeitrag_id = oehbeitrag_id_prefixed.substr(oehbeitrag_id_prefixed.lastIndexOf('_')+1);
let initElement = $("#cell_"+fieldname+"_"+oehbeitrag_id); // clicked element triggering event
let currFieldvalue = initElement.text().trim();
let callback = function(validSemesterData)
{
let inputHtml = "";
// if semester dropdown, retrieve valid semester
if (inputtype === 'semester')
{
if (FHC_AjaxClient.hasData(validSemesterData))
{
let studiensemester = FHC_AjaxClient.getData(validSemesterData);
inputHtml = Oehbeitrag._getStudiensemesterDropdown(oehbeitrag_id, fieldname, studiensemester, currFieldvalue, 'inline-inputfield');
}
}
else // otherwise display textfield
{
inputHtml = "<input type='text' class='form-control inline-inputfield' id='input_" + fieldname + "_" + oehbeitrag_id+"'" +
" value='"+currFieldvalue+"' placeholder='0,00'>";
}
if (singleUpdate === true)
inputHtml += " <i class='fa fa-check text-success' id='confirm_"+fieldname+"_"+oehbeitrag_id+"' ></i>";
initElement.html(inputHtml);
if (singleUpdate === true)
{
// set the update event if single field update
$("#confirm_" + fieldname + "_" + oehbeitrag_id).click(
function()
{
Oehbeitrag.updateOehbeitragField(oehbeitrag_id, fieldname, $("#input_" + fieldname + "_" + oehbeitrag_id), inputtype);
}
);
}
}
// get valid Studiensemester with no Öhbeitrag assigned
if (inputtype == 'semester')
{
Oehbeitrag.getValidStudiensemester(callback, oehbeitrag_id);
}
else
callback(null);
},
_getStudiensemesterDropdown(oehbeitrag_id, name, studiensemester, selectedDateSemester, formatclass)
{
let selectedDateSemesterArr = null;
if (selectedDateSemester)
{
selectedDateSemesterArr = selectedDateSemester.split('/');
}
let rowHtml = "";
let inlineClass = formatclass != null ? ' '+formatclass : '';
rowHtml += "<select name='"+name+"' id='input_"+name+"_"+oehbeitrag_id+"' class='form-control"+inlineClass+"'>";
if (name === 'bis_studiensemester_kurzbz')
rowHtml += "<option value='null'>unbeschränkt</option>";
for (let idx in studiensemester)
{
let date = name === 'bis_studiensemester_kurzbz' ? studiensemester[idx].ende : studiensemester[idx].start;
let studiensemester_kurzbz = studiensemester[idx].studiensemester_kurzbz;
let dateSemester = Oehbeitrag._formatDateToGerman(date) + "/" + studiensemester_kurzbz;
let selected = dateSemester === selectedDateSemester ? ' selected' : '';
rowHtml += "<option value='" + studiensemester_kurzbz + "' "+selected+">" + dateSemester +"</option>";
}
rowHtml += "</select>";
return rowHtml;
},
_compareGermanDates: function(datea, dateb)
{
return datea.split(".").reverse().join("") < dateb.split(".").reverse().join("");
},
_addTablesorter: function()
{
// add parser through the tablesorter addParser method
$.tablesorter.addParser({
// set a unique id
id: 'germandatesort',
is: function(s, table, cell, $cell) {
// return false so this parser is not auto detected
return false;
},
format: function(s, table, cell, cellIndex) {
// format data, should sort by leading german date
return s.substring(0, 10).split(".").reverse().join("");
},
// set type, either numeric or text
type: 'numeric'
});
let headers = {headers: { 0: {sorter: "germandatesort"}, 1: {sorter: "germandatesort"}, 4: {sorter: false}}};
Tablesort.addTablesorter("oehbeitraegeTbl", [[0,1]], ["zebra"], 8, headers);
},
// Formats a numeric value as a float with two decimals
_formatDecimal: function(value, decSeparator)
{
let dec = null;
let prevSeparator = ".";
if (decSeparator === ".")
prevSeparator = ",";
else
decSeparator = ",";
dec = value.split(prevSeparator);
if (dec.length === 2)
{
dec = parseFloat(dec[0] + '.' + dec[1]).toFixed(2);
dec = dec.replace(prevSeparator, decSeparator);
}
else if (Math.floor(value) == value) // if integer, add zeros
dec = value + decSeparator + '00';
else
dec = value;
return dec;
},
// formats english date to as german
_formatDateToGerman: function(date)
{
return date.substring(8, 10) + "." + date.substring(5, 7) + "." + date.substring(0, 4);
}
};
+9 -3
View File
@@ -10,6 +10,7 @@ const RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ = "InfocenterRTfreigegQuerKurz";
const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben";
const STGFREIGABE_MESSAGE_VORLAGE_MASTER = "InfocenterSTGfreigegebenM";
const STGFREIGABE_MESSAGE_VORLAGE_MASTER_ENGLISCH = "InfocenterSTGfreigegebenMEng";
const STGFREIGABE_MESSAGE_VORLAGE_ANDERES_SEMESTER = "InfocenterSTGfreigegebenSemester";
//Statusgründe for which no Studiengang Freigabe Message should be sent
const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027];
@@ -653,7 +654,7 @@ var InfocenterDetails = {
}
else
{
if (receiverPrestudent.studiengangtyp === 'm' && (freigabedata.statusgrundbezeichnung === 'Ergänzungsprüfungen' || freigabedata.statusgrundbezeichnung === 'Supplementary exams'))
if (receiverPrestudent.studiengangtyp === 'm' && freigabedata.statuskurzbz === 'ergPruefung')
{
msgvars = {
'studiengangbezeichnung': studiengangbezeichnung,
@@ -671,7 +672,11 @@ var InfocenterDetails = {
//if Freigabe to Studiengang, send StgFreigabe Message if not already sent and allowed to send
else if (!stgFreigegeben && receiverPrestudent.sendStgFreigabeMsg === true)
{
InfocenterDetails.sendFreigabeMessage(prestudent_id, STGFREIGABE_MESSAGE_VORLAGE, msgvars);
if (receiverPrestudent.studiengangtyp === 'b' && freigabedata.statuskurzbz === 'anderesSemester')
vorlage = STGFREIGABE_MESSAGE_VORLAGE_ANDERES_SEMESTER
else
vorlage = STGFREIGABE_MESSAGE_VORLAGE
InfocenterDetails.sendFreigabeMessage(prestudent_id, vorlage, msgvars);
}
}
};
@@ -847,7 +852,8 @@ var InfocenterDetails = {
var statusgrundel = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]");
var statusgrund_id = statusgrundel.val();
var statusgrundbezeichnung = statusgrundel.find("option[value="+statusgrund_id+"]").text();
var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id, "statusgrundbezeichnung": statusgrundbezeichnung};
var statuskurzbz = statusgrundel.find(':selected').data('kurzbz');
var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id, "statusgrundbezeichnung": statusgrundbezeichnung, "statuskurzbz" : statuskurzbz};
InfocenterDetails.saveFreigabe(data);//Studiengangfreigabe
}
);
+151
View File
@@ -0,0 +1,151 @@
/**
* Javascript file for issues overview page
*/
var IssuesDataset = {
/**
* adds person table additional actions html (above and beneath it)
*/
appendTableActionsHtml: function()
{
let auswahlStatus =
'<div class="input-group">' +
'<select class="form-control d-inline auswahlStatus">' +
'<option value="resolved"> Behoben </option>' +
'<option value="inProgress"> in Bearbeitung </option>' +
'<option value="new"> Neu </option>' +
'</select>' +
'<span class="input-group-btn">' +
'<button class="btn btn-default setStatus">Status für Ausgew&auml;hlte setzen</button>' +
'</span>' +
'</div>';
let selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
let issuescount = 0;
FHC_AjaxClient.ajaxCallGet(
'widgets/Filters/rowNumber',
{
filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
issuescount = FHC_AjaxClient.getData(data);
if (issuescount > 0)
{
var countHtml = issuescount + " Fehler";
// Count Records after Filtering
$("#filterTableDataset").bind("filterEnd", function() {
var cnt = $("#filterTableDataset tr:visible").length - 2;
$(".filterTableDatasetCntFiltered").html(cnt + ' / ');
});
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-3 datasetActionsTopBottomText'>" + selectAllHtml + "</div>"+
"<div class='col-xs-6'>" + auswahlStatus + "</div>"+
"<div class='col-xs-3 datasetActionsTopBottomText text-right'>" +
"<span class='filterTableDatasetCntFiltered'></span>" +
countHtml + "</div>"+
"</div>"+
"<div>"+
"<hr class='datasetActionsHorizontalLine'>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
IssuesDataset.setTableActions();
}
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
/**
* sets functionality for the actions above and beneath the person table
*/
setTableActions: function()
{
$(".setStatus").click(function()
{
let status_kurzbz = $(".auswahlStatus").val();
let issue_ids_sel = $("#filterTableDataset input:checked[name=issue_id\\[\\]]");
if(status_kurzbz.length <= 0)
return FHC_DialogLib.alertInfo("Bitte wählen Sie den Status aus.");
if(issue_ids_sel.length <= 0)
return FHC_DialogLib.alertInfo("Bitte wählen Sie die Fehler aus.");
let issue_ids = [];
for (let i = 0; i < issue_ids_sel.length; i++)
{
issue_ids.push($(issue_ids_sel[i]).val());
}
FHC_AjaxClient.ajaxCallPost(
'system/issues/Issues/changeIssueStatus',
{
"issue_ids": issue_ids,
"status_kurzbz": status_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
FHC_DialogLib.alertError("Fehler beim Status &Auml;ndern: " + FHC_AjaxClient.getError(data));
else if (FHC_AjaxClient.hasData(data))
{
FHC_FilterWidget.reloadDataset();
FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data));
}
else
FHC_DialogLib.alertError("Unbekannter Fehler beim Status &Auml;ndern");
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError("Fehler beim Status &Auml;ndern: " + textStatus);
}
}
);
}
);
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=issue_id\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=issue_id\\[\\]]").prop("checked", false);
}
);
}
};
/**
* When JQuery is up
*/
$(document).ready(function() {
IssuesDataset.appendTableActionsHtml();
});
+13 -1
View File
@@ -129,7 +129,19 @@ function draw_content_xml($row)
if($person->load($row->pruefer3))
$pruefer3 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
$qry = "SELECT * FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='rek'";
$qry = "SELECT *
FROM PUBLIC.tbl_benutzerfunktion
JOIN campus.vw_mitarbeiter USING (uid)
WHERE funktion_kurzbz = 'rek'
AND (
tbl_benutzerfunktion.datum_von <= now()
OR tbl_benutzerfunktion.datum_von IS NULL
)
AND (
tbl_benutzerfunktion.datum_bis >= now()
OR tbl_benutzerfunktion.datum_bis IS NULL
)
ORDER BY tbl_benutzerfunktion.insertamum DESC LIMIT 1";
$rektor = '';
$db = new basis_db();
$db2 = new basis_db();
+75
View File
@@ -0,0 +1,75 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Alexei Karpenko <karpenko@technikum-wien.at>.
*/
// header für no cache
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
// content type setzen
header("Content-type: application/xhtml+xml");
// xml
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// DAO
require_once('../config/vilesci.config.inc.php');
require_once('../include/basis_db.class.php');
$rdf_url='http://www.technikum-wien.at/bisstandort';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:BISSTANDORT="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/alle">
<?php
if(isset($_GET['optional']) && $_GET['optional']=='true')
{
echo '
<RDF:li>
<RDF:Description id="" about="'.$rdf_url.'/" >
<BISSTANDORT:standort_code></BISSTANDORT:standort_code>
<BISSTANDORT:bezeichnung>-- keine Auswahl --</BISSTANDORT:bezeichnung>
</RDF:Description>
</RDF:li>
';
}
$qry = "SELECT * FROM bis.tbl_bisstandort WHERE aktiv ORDER BY bezeichnung";
$db = new basis_db();
if($db->db_query($qry))
{
while($row = $db->db_fetch_object())
{
?>
<RDF:li>
<RDF:Description id="<?php echo $row->standort_code; ?>" about="<?php echo $rdf_url.'/'.$row->standort_code; ?>" >
<BISSTANDORT:standort_code><![CDATA[<?php echo $row->standort_code; ?>]]></BISSTANDORT:standort_code>
<BISSTANDORT:bezeichnung><![CDATA[<?php echo $row->bezeichnung; ?>]]></BISSTANDORT:bezeichnung>
</RDF:Description>
</RDF:li>
<?php
}
}
?>
</RDF:Seq>
</RDF:RDF>
+6
View File
@@ -94,6 +94,11 @@ function draw_row($row)
$azgrelevant = $row->azgrelevant?'Ja':'Nein';
else
$azgrelevant = '';
if(is_bool($row->homeoffice))
$homeoffice = $row->homeoffice?'Ja':'Nein';
else
$homeoffice = '';
echo '
<RDF:li>
@@ -125,6 +130,7 @@ function draw_row($row)
<VERWENDUNG:inkludierte_lehre><![CDATA['.$row->inkludierte_lehre.']]></VERWENDUNG:inkludierte_lehre>
<VERWENDUNG:zeitaufzeichnungspflichtig><![CDATA['.$zeitaufzeichnungspflichtig.']]></VERWENDUNG:zeitaufzeichnungspflichtig>
<VERWENDUNG:azgrelevant><![CDATA['.$azgrelevant.']]></VERWENDUNG:azgrelevant>
<VERWENDUNG:homeoffice><![CDATA['.$homeoffice.']]></VERWENDUNG:homeoffice>
</RDF:Description>
</RDF:li>
';
+1 -1
View File
@@ -389,7 +389,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
echo "<bis>".$datum->convertISODate($row1->bis)."</bis>";
echo "<zweck>$row1->zweck</zweck>";
echo "<ort>$row1->ort</ort>";
echo "<universitaet>$row1->universitaet</universitaet>";
echo "<universitaet><![CDATA[$row1->universitaet]]></universitaet>";
echo "</auslandssemesters>";
}
echo "</auslandssemester>";
+200 -63
View File
@@ -61,8 +61,9 @@ function convdate($date)
function checkfilter($row, $filter2, $buchungstyp = null)
{
global $studiensemester_kurzbz, $kontofilterstg;
global $studiensemester_kurzbz, $kontofilterstg, $studiengang_kz;
$db = new basis_db();
$studstatusgrund = array();
if($filter2=='dokumente')
{
@@ -157,6 +158,21 @@ function checkfilter($row, $filter2, $buchungstyp = null)
}
}
}
elseif ( preg_match('/^stud-statusgrund-([0-9]+)$/', $filter2, $studstatusgrund) )
{
// Alle Studenten mit Statusgrund in tbl_prestudentstatus
$qry = "SELECT count(*) AS anzahl FROM public.tbl_prestudentstatus ps JOIN
public.tbl_prestudent p ON p.prestudent_id = ps.prestudent_id AND
ps. studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND
p. person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND
p.studiengang_kz=" . $db->db_add_param($studiengang_kz, FHC_INTEGER) . " AND
ps.statusgrund_id = " . $db->db_add_param($studstatusgrund[1], FHC_INTEGER);
//echo $qry . "\n";
$filtered = ( $db->db_query($qry) && ($row_filter = $db->db_fetch_object()) && ($row_filter->anzahl > 0) )
? true
: false;
return $filtered;
}
return true;
}
@@ -339,44 +355,141 @@ function draw_prestudent($row)
$prioRelativ = $prioRelativ->getRelativePriorisierungFromAbsolut($row->prestudent_id, $row->priorisierung);
if($row->prestudent_id!='')
{
echo '
<STUDENT:prestudent_id><![CDATA['.$row->prestudent_id.']]></STUDENT:prestudent_id>
<STUDENT:studiengang_kz_prestudent><![CDATA['.$row->studiengang_kz.']]></STUDENT:studiengang_kz_prestudent>
<STUDENT:studiengang_kz><![CDATA['.$row->studiengang_kz.']]></STUDENT:studiengang_kz>
<STUDENT:aufmerksamdurch_kurzbz><![CDATA['.$row->aufmerksamdurch_kurzbz.']]></STUDENT:aufmerksamdurch_kurzbz>
<STUDENT:studiengang><![CDATA['.$stg_arr[$row->studiengang_kz].']]></STUDENT:studiengang>
<STUDENT:berufstaetigkeit_code><![CDATA['.$row->berufstaetigkeit_code.']]></STUDENT:berufstaetigkeit_code>
<STUDENT:ausbildungcode><![CDATA['.$row->ausbildungcode.']]></STUDENT:ausbildungcode>
<STUDENT:zgv_code><![CDATA['.$row->zgv_code.']]></STUDENT:zgv_code>
<STUDENT:zgvort><![CDATA['.$row->zgvort.']]></STUDENT:zgvort>
<STUDENT:zgvdatum><![CDATA['.$datum_obj->convertISODate($row->zgvdatum).']]></STUDENT:zgvdatum>
<STUDENT:zgvdatum_iso><![CDATA['.$row->zgvdatum.']]></STUDENT:zgvdatum_iso>
<STUDENT:zgvnation><![CDATA['.$row->zgvnation.']]></STUDENT:zgvnation>
<STUDENT:zgvmas_code><![CDATA['.$row->zgvmas_code.']]></STUDENT:zgvmas_code>
<STUDENT:zgvmaort><![CDATA['.$row->zgvmaort.']]></STUDENT:zgvmaort>
<STUDENT:zgvmadatum><![CDATA['.$datum_obj->convertISODate($row->zgvmadatum).']]></STUDENT:zgvmadatum>
<STUDENT:zgvmadatum_iso><![CDATA['.$row->zgvmadatum.']]></STUDENT:zgvmadatum_iso>
<STUDENT:zgvmanation><![CDATA['.$row->zgvmanation.']]></STUDENT:zgvmanation>
<STUDENT:ausstellungsstaat><![CDATA['.$row->ausstellungsstaat.']]></STUDENT:ausstellungsstaat>
<STUDENT:aufnahmeschluessel><![CDATA['.$row->aufnahmeschluessel.']]></STUDENT:aufnahmeschluessel>
<STUDENT:facheinschlberuf><![CDATA['.($row->facheinschlberuf?'true':'false').']]></STUDENT:facheinschlberuf>
<STUDENT:reihungstest_id><![CDATA['.$row->reihungstest_id.']]></STUDENT:reihungstest_id>
<STUDENT:anmeldungreihungstest><![CDATA['.$datum_obj->convertISODate($row->anmeldungreihungstest).']]></STUDENT:anmeldungreihungstest>
<STUDENT:anmeldungreihungstest_iso><![CDATA['.$row->anmeldungreihungstest.']]></STUDENT:anmeldungreihungstest_iso>
<STUDENT:reihungstestangetreten><![CDATA['.($row->reihungstestangetreten?'true':'false').']]></STUDENT:reihungstestangetreten>
<STUDENT:punkte><![CDATA['.$row->punkte.']]></STUDENT:punkte>
<STUDENT:bismelden><![CDATA['.($row->bismelden?'true':'false').']]></STUDENT:bismelden>
<STUDENT:dual><![CDATA['.($row->dual?'true':'false').']]></STUDENT:dual>
<STUDENT:dual_bezeichnung><![CDATA['.($row->dual?'Ja':'Nein').']]></STUDENT:dual_bezeichnung>
<STUDENT:anmerkungpre><![CDATA['.$row->anmerkung.']]></STUDENT:anmerkungpre>
<STUDENT:mentor><![CDATA['.$row->mentor.']]></STUDENT:mentor>
<STUDENT:gsstudientyp_kurzbz><![CDATA['.$row->gsstudientyp_kurzbz.']]></STUDENT:gsstudientyp_kurzbz>
<STUDENT:aufnahmegruppe_kurzbz><![CDATA['.$row->aufnahmegruppe_kurzbz.']]></STUDENT:aufnahmegruppe_kurzbz>
<STUDENT:priorisierung><![CDATA['.$row->priorisierung.']]></STUDENT:priorisierung>
<STUDENT:priorisierung_realtiv><![CDATA['.$prioRelativ.' ('.$row->priorisierung.')'.']]></STUDENT:priorisierung_realtiv>
$foerderrelevant = '';
if ($row->foerderrelevant === true)
$foerderrelevant = 'true';
elseif ($row->foerderrelevant === false)
$foerderrelevant = 'false';
echo '
<STUDENT:prestudent_id><![CDATA['.$row->prestudent_id.']]></STUDENT:prestudent_id>
<STUDENT:studiengang_kz_prestudent><![CDATA['.$row->studiengang_kz.']]></STUDENT:studiengang_kz_prestudent>
<STUDENT:studiengang_kz><![CDATA['.$row->studiengang_kz.']]></STUDENT:studiengang_kz>
<STUDENT:aufmerksamdurch_kurzbz><![CDATA['.$row->aufmerksamdurch_kurzbz.']]></STUDENT:aufmerksamdurch_kurzbz>
<STUDENT:studiengang><![CDATA['.$stg_arr[$row->studiengang_kz].']]></STUDENT:studiengang>
<STUDENT:berufstaetigkeit_code><![CDATA['.$row->berufstaetigkeit_code.']]></STUDENT:berufstaetigkeit_code>
<STUDENT:ausbildungcode><![CDATA['.$row->ausbildungcode.']]></STUDENT:ausbildungcode>
<STUDENT:zgv_code><![CDATA['.$row->zgv_code.']]></STUDENT:zgv_code>
<STUDENT:zgvort><![CDATA['.$row->zgvort.']]></STUDENT:zgvort>
<STUDENT:zgvdatum><![CDATA['.$datum_obj->convertISODate($row->zgvdatum).']]></STUDENT:zgvdatum>
<STUDENT:zgvdatum_iso><![CDATA['.$row->zgvdatum.']]></STUDENT:zgvdatum_iso>
<STUDENT:zgvnation><![CDATA['.$row->zgvnation.']]></STUDENT:zgvnation>
<STUDENT:zgvmas_code><![CDATA['.$row->zgvmas_code.']]></STUDENT:zgvmas_code>
<STUDENT:zgvmaort><![CDATA['.$row->zgvmaort.']]></STUDENT:zgvmaort>
<STUDENT:zgvmadatum><![CDATA['.$datum_obj->convertISODate($row->zgvmadatum).']]></STUDENT:zgvmadatum>
<STUDENT:zgvmadatum_iso><![CDATA['.$row->zgvmadatum.']]></STUDENT:zgvmadatum_iso>
<STUDENT:zgvmanation><![CDATA['.$row->zgvmanation.']]></STUDENT:zgvmanation>
<STUDENT:ausstellungsstaat><![CDATA['.$row->ausstellungsstaat.']]></STUDENT:ausstellungsstaat>
<STUDENT:aufnahmeschluessel><![CDATA['.$row->aufnahmeschluessel.']]></STUDENT:aufnahmeschluessel>
<STUDENT:facheinschlberuf><![CDATA['.($row->facheinschlberuf?'true':'false').']]></STUDENT:facheinschlberuf>
<STUDENT:reihungstest_id><![CDATA['.$row->reihungstest_id.']]></STUDENT:reihungstest_id>
<STUDENT:anmeldungreihungstest><![CDATA['.$datum_obj->convertISODate($row->anmeldungreihungstest).']]></STUDENT:anmeldungreihungstest>
<STUDENT:anmeldungreihungstest_iso><![CDATA['.$row->anmeldungreihungstest.']]></STUDENT:anmeldungreihungstest_iso>
<STUDENT:reihungstestangetreten><![CDATA['.($row->reihungstestangetreten?'true':'false').']]></STUDENT:reihungstestangetreten>
<STUDENT:punkte><![CDATA['.$row->punkte.']]></STUDENT:punkte>
<STUDENT:bismelden><![CDATA['.($row->bismelden?'true':'false').']]></STUDENT:bismelden>
<STUDENT:foerderrelevant><![CDATA['.($foerderrelevant).']]></STUDENT:foerderrelevant>
<STUDENT:dual><![CDATA['.($row->dual?'true':'false').']]></STUDENT:dual>
<STUDENT:dual_bezeichnung><![CDATA['.($row->dual?'Ja':'Nein').']]></STUDENT:dual_bezeichnung>
<STUDENT:anmerkungpre><![CDATA['.$row->anmerkung.']]></STUDENT:anmerkungpre>
<STUDENT:mentor><![CDATA['.$row->mentor.']]></STUDENT:mentor>
<STUDENT:gsstudientyp_kurzbz><![CDATA['.$row->gsstudientyp_kurzbz.']]></STUDENT:gsstudientyp_kurzbz>
<STUDENT:aufnahmegruppe_kurzbz><![CDATA['.$row->aufnahmegruppe_kurzbz.']]></STUDENT:aufnahmegruppe_kurzbz>
<STUDENT:priorisierung><![CDATA['.$row->priorisierung.']]></STUDENT:priorisierung>
<STUDENT:priorisierung_realtiv><![CDATA['.$prioRelativ.' ('.$row->priorisierung.')'.']]></STUDENT:priorisierung_realtiv>
<STUDENT:standort_code><![CDATA['.$row->standort_code.']]></STUDENT:standort_code>
</RDF:Description>
</RDF:li>';
}
}
function draw_empty_content()
{
echo '<RDF:li>
<RDF:Description id="" about="" >
<STUDENT:person_id><![CDATA[]]></STUDENT:person_id>
<STUDENT:titelpre><![CDATA[]]></STUDENT:titelpre>
<STUDENT:titelpost><![CDATA[]]></STUDENT:titelpost>
<STUDENT:vornamen><![CDATA[]]></STUDENT:vornamen>
<STUDENT:vorname><![CDATA[]]></STUDENT:vorname>
<STUDENT:nachname><![CDATA[KEINE RESULTATE]]></STUDENT:nachname>
<STUDENT:geburtsdatum><![CDATA[]]></STUDENT:geburtsdatum>
<STUDENT:geburtsdatum_iso><![CDATA[]]></STUDENT:geburtsdatum_iso>
<STUDENT:homepage><![CDATA[]]></STUDENT:homepage>
<STUDENT:gebort><![CDATA[]]></STUDENT:gebort>
<STUDENT:gebzeit><![CDATA[]]></STUDENT:gebzeit>
<STUDENT:anmerkungen><![CDATA[]]></STUDENT:anmerkungen>
<STUDENT:anrede><![CDATA[]]></STUDENT:anrede>
<STUDENT:svnr><![CDATA[]]></STUDENT:svnr>
<STUDENT:ersatzkennzeichen><![CDATA[]]></STUDENT:ersatzkennzeichen>
<STUDENT:familienstand><![CDATA[]]></STUDENT:familienstand>
<STUDENT:geschlecht><![CDATA[]]></STUDENT:geschlecht>
<STUDENT:anzahlkinder><![CDATA[]]></STUDENT:anzahlkinder>
<STUDENT:staatsbuergerschaft><![CDATA[]]></STUDENT:staatsbuergerschaft>
<STUDENT:geburtsnation><![CDATA[]]></STUDENT:geburtsnation>
<STUDENT:sprache><![CDATA[]]></STUDENT:sprache>
<STUDENT:status><![CDATA[]]></STUDENT:status>
<STUDENT:status_datum><![CDATA[]]></STUDENT:status_datum>
<STUDENT:status_datum_iso><![CDATA[]]></STUDENT:status_datum_iso>
<STUDENT:status_bestaetigung><![CDATA[]]></STUDENT:status_bestaetigung>
<STUDENT:status_bestaetigung_iso><![CDATA[]]></STUDENT:status_bestaetigung_iso>
<STUDENT:orgform><![CDATA[]]></STUDENT:orgform>
<STUDENT:studienplan_bezeichnung><![CDATA[]]></STUDENT:studienplan_bezeichnung>
<STUDENT:studienplan_id><![CDATA[]]></STUDENT:studienplan_id>
<STUDENT:mail_privat><![CDATA[]]></STUDENT:mail_privat>
<STUDENT:mail_intern><![CDATA[]]></STUDENT:mail_intern>
<STUDENT:zugangscode><![CDATA[]]></STUDENT:zugangscode>
<STUDENT:link_bewerbungstool><![CDATA[]]></STUDENT:link_bewerbungstool>
<STUDENT:aktiv><![CDATA[]]></STUDENT:aktiv>
<STUDENT:uid><![CDATA[]]></STUDENT:uid>
<STUDENT:matrikelnummer><![CDATA[]]></STUDENT:matrikelnummer>
<STUDENT:alias><![CDATA[]]></STUDENT:alias>
<STUDENT:semester><![CDATA[]]></STUDENT:semester>
<STUDENT:verband><![CDATA[]]></STUDENT:verband>
<STUDENT:gruppe><![CDATA[]]></STUDENT:gruppe>
<STUDENT:studiengang_kz_student><![CDATA[]]></STUDENT:studiengang_kz_student>
<STUDENT:matr_nr><![CDATA[]]></STUDENT:matr_nr>
<STUDENT:studiengang_studiengangsleitung><![CDATA[]]></STUDENT:studiengang_studiengangsleitung>
<STUDENT:anzahl_notizen><![CDATA[]]></STUDENT:anzahl_notizen>
<STUDENT:prestudent_id><![CDATA[]]></STUDENT:prestudent_id>
<STUDENT:studiengang_kz_prestudent><![CDATA[]]></STUDENT:studiengang_kz_prestudent>
<STUDENT:studiengang_kz><![CDATA[]]></STUDENT:studiengang_kz>
<STUDENT:aufmerksamdurch_kurzbz><![CDATA[]]></STUDENT:aufmerksamdurch_kurzbz>
<STUDENT:studiengang><![CDATA[]]></STUDENT:studiengang>
<STUDENT:berufstaetigkeit_code><![CDATA[]]></STUDENT:berufstaetigkeit_code>
<STUDENT:ausbildungcode><![CDATA[]]></STUDENT:ausbildungcode>
<STUDENT:zgv_code><![CDATA[]]></STUDENT:zgv_code>
<STUDENT:zgvort><![CDATA[]]></STUDENT:zgvort>
<STUDENT:zgvdatum><![CDATA[]]></STUDENT:zgvdatum>
<STUDENT:zgvdatum_iso><![CDATA[]]></STUDENT:zgvdatum_iso>
<STUDENT:zgvnation><![CDATA[]]></STUDENT:zgvnation>
<STUDENT:zgvmas_code><![CDATA[]]></STUDENT:zgvmas_code>
<STUDENT:zgvmaort><![CDATA[]]></STUDENT:zgvmaort>
<STUDENT:zgvmadatum><![CDATA[]]></STUDENT:zgvmadatum>
<STUDENT:zgvmadatum_iso><![CDATA[]]></STUDENT:zgvmadatum_iso>
<STUDENT:zgvmanation><![CDATA[]]></STUDENT:zgvmanation>
<STUDENT:ausstellungsstaat><![CDATA[]]></STUDENT:ausstellungsstaat>
<STUDENT:aufnahmeschluessel><![CDATA[]]></STUDENT:aufnahmeschluessel>
<STUDENT:facheinschlberuf><![CDATA[]]></STUDENT:facheinschlberuf>
<STUDENT:reihungstest_id><![CDATA[]]></STUDENT:reihungstest_id>
<STUDENT:anmeldungreihungstest><![CDATA[]]></STUDENT:anmeldungreihungstest>
<STUDENT:anmeldungreihungstest_iso><![CDATA[]]></STUDENT:anmeldungreihungstest_iso>
<STUDENT:reihungstestangetreten><![CDATA[]]></STUDENT:reihungstestangetreten>
<STUDENT:punkte><![CDATA[]]></STUDENT:punkte>
<STUDENT:bismelden><![CDATA[]]></STUDENT:bismelden>
<STUDENT:dual><![CDATA[]]></STUDENT:dual>
<STUDENT:dual_bezeichnung><![CDATA[]]></STUDENT:dual_bezeichnung>
<STUDENT:anmerkungpre><![CDATA[]]></STUDENT:anmerkungpre>
<STUDENT:mentor><![CDATA[]]></STUDENT:mentor>
<STUDENT:gsstudientyp_kurzbz><![CDATA[]]></STUDENT:gsstudientyp_kurzbz>
<STUDENT:aufnahmegruppe_kurzbz><![CDATA[]]></STUDENT:aufnahmegruppe_kurzbz>
<STUDENT:priorisierung><![CDATA[]]></STUDENT:priorisierung>
<STUDENT:priorisierung_realtiv><![CDATA[]]></STUDENT:priorisierung_realtiv>
</RDF:Description>
</RDF:li>';
}
}
// ******* Init **************************
@@ -750,19 +863,22 @@ if($xmlformat=='rdf')
if($db->db_query($qry))
{
while($row = $db->db_fetch_object())
while ($row = $db->db_fetch_object())
{
$student=new student();
if($uid = $student->getUid($row->prestudent_id))
$student = new student();
if ($uid = $student->getUid($row->prestudent_id))
{
//Wenn kein Eintrag fuers aktuelle Studiensemester da ist, dann
//nochmal laden aber ohne studiensemester
if(!$student->load($uid, $studiensemester_kurzbz))
if (!$student->load($uid, $studiensemester_kurzbz))
{
$student->load($uid);
}
}
$prestd = new prestudent();
$prestd->load($row->prestudent_id);
if($uid!='')
if ($uid != '')
{
draw_content($student);
draw_prestudent($prestd);
@@ -807,29 +923,38 @@ if($xmlformat=='rdf')
matr_nr = ".$db->db_add_param($searchItems_string_orig)." OR
svnr = ".$db->db_add_param($searchItems_string_orig).";";
}
if($db->db_query($qry))
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object())
if ($db->db_num_rows($result) == 0)
{
$student=new student();
if($uid = $student->getUid($row->prestudent_id))
draw_empty_content();
}
else
{
while ($row = $db->db_fetch_object())
{
//Wenn kein Eintrag fuers aktuelle Studiensemester da ist, dann
//nochmal laden aber ohne studiensemester
if(!$student->load($uid, $studiensemester_kurzbz))
$student->load($uid);
}
$prestd = new prestudent();
$prestd->load($row->prestudent_id);
if($uid!='')
{
draw_content($student);
draw_prestudent($prestd);
}
else
{
draw_content($prestd);
draw_prestudent($prestd);
$student = new student();
if ($uid = $student->getUid($row->prestudent_id))
{
//Wenn kein Eintrag fuers aktuelle Studiensemester da ist, dann
//nochmal laden aber ohne studiensemester
if (!$student->load($uid, $studiensemester_kurzbz))
{
$student->load($uid);
}
}
$prestd = new prestudent();
$prestd->load($row->prestudent_id);
if ($uid != '')
{
draw_content($student);
draw_prestudent($prestd);
}
else
{
draw_content($prestd);
draw_prestudent($prestd);
}
}
}
}
@@ -901,7 +1026,19 @@ else
default: $typ = 'FH-Studiengang';
}
$qry = "SELECT * FROM campus.vw_benutzer JOIN public.tbl_benutzerfunktion USING(uid) WHERE funktion_kurzbz='rek'";
$qry = "SELECT *
FROM PUBLIC.tbl_benutzerfunktion
JOIN campus.vw_mitarbeiter USING (uid)
WHERE funktion_kurzbz = 'rek'
AND (
tbl_benutzerfunktion.datum_von <= now()
OR tbl_benutzerfunktion.datum_von IS NULL
)
AND (
tbl_benutzerfunktion.datum_bis >= now()
OR tbl_benutzerfunktion.datum_bis IS NULL
)
ORDER BY tbl_benutzerfunktion.insertamum DESC LIMIT 1";
$rektor = '';
if($db->db_query($qry))
{
+2
View File
@@ -154,6 +154,8 @@ foreach($uid_arr as $uid)
echo "\t\t<studiengangSpracheEnglisch><![CDATA[".$studienplan_sprache_englisch."]]></studiengangSpracheEnglisch>";
echo "\t\t<ects_gesamt><![CDATA[".$studienordnung->ects."]]></ects_gesamt>";
echo "\t\t<ects_pro_semester><![CDATA[".($studienplan->regelstudiendauer!=0?$studienordnung->ects/$studienplan->regelstudiendauer:0)."]]></ects_pro_semester>";
echo "\t\t<ects_gesamt_studienplan><![CDATA[".$studienplan->ects_stpl."]]></ects_gesamt_studienplan>";
echo "\t\t<ects_pro_semester_studienplan><![CDATA[".($studienplan->regelstudiendauer!=0?$studienplan->ects_stpl/$studienplan->regelstudiendauer:0)."]]></ects_pro_semester_studienplan>";
echo "\t\t<aktuellesJahr><![CDATA[".date('Y')."]]></aktuellesJahr>";
$status_aktuell = ($prestudent->getLastStatus($student->prestudent_id,null,null))?$prestudent->status_kurzbz:'';
+71
View File
@@ -26,6 +26,8 @@ require_once('../include/basis_db.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/dvb.class.php');
require_once('../include/errorhandler.class.php');
require_once('../include/person.class.php');
require_once('../include/adresse.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
@@ -63,12 +65,80 @@ $ausstellbehoerde = filter_input(INPUT_POST, 'ausstellbehoerde');
$ausstellland = filter_input(INPUT_POST, 'ausstellland');
$dokumentnr = filter_input(INPUT_POST, 'dokumentnr');
$getPersonData = filter_input(INPUT_POST, 'getPersonData', FILTER_VALIDATE_BOOLEAN);
$data_person_id = filter_input(INPUT_POST, 'data_person_id');
if ($getPersonData)
{
$person = new person($data_person_id);
$adresse = new adresse();
$adresse->loadZustellAdresse($person->person_id);
$svnr = $person->svnr;
if ($svnr == '' && $person->ersatzkennzeichen != '')
{
$svnr = $person->ersatzkennzeichen;
}
echo json_encode(array(
'status'=>'ok',
'matrikelnummer'=>$person->matr_nr,
'nachname'=>$person->nachname,
'vorname'=>$person->vorname,
'geburtsdatum'=>str_replace('-','',$person->gebdatum),
'geschlecht'=>strtoupper($person->geschlecht),
'postleitzahl'=>$adresse->plz,
'staat'=>$adresse->nation,
'sozialversicherungsnummer'=>$svnr
));
exit();
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Datenverbund-Client</title>
<script type="text/javascript" src="../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
</head>
<script type="text/javascript">
$(function () {
$('#getPersonDataButton').on('click', function ()
{
data = {
data_person_id: $('#getPersonDataInput').val(),
getPersonData: true
};
$.ajax({
url: 'datenverbund_client.php',
data: data,
type: 'POST',
dataType: "json",
success: function (data) {
if (data.status != 'ok') {
alert(JSON.stringify(data));
console.log(JSON.stringify(data));
}
else
{
$('input[name="matrikelnummer"]').val(data.matrikelnummer);
$('input[name="nachname"]').val(data.nachname);
$('input[name="vorname"]').val(data.vorname);
$('input[name="geburtsdatum"]').val(data.geburtsdatum);
$('input[name="geschlecht"]').val(data.geschlecht);
$('input[name="postleitzahl"]').val(data.postleitzahl);
$('input[name="staat"]').val(data.staat);
$('input[name="svnr"]').val(data.sozialversicherungsnummer);
}
},
error: function (data) {
alert(JSON.stringify(data));
console.log(JSON.stringify(data));
}
});
});
});
</script>
<body>
<h1>Testclient für Datenverbund-Webservice</h1>
<ul>
@@ -195,6 +265,7 @@ $dokumentnr = filter_input(INPUT_POST, 'dokumentnr');
break;
case 'setMatrikelnummer':
echo '<p><input id="getPersonDataInput" type="text" maxlength="10" size="10" placeholder="person_id"><button type="button" id="getPersonDataButton">Personendaten laden</button></p>';
printSetMatrikelnrRows();
printrow('staat', 'Staat', $staat, '1-3 Stellen Codex (zb A für Österreich)', 3);
printrow('svnr', 'SVNR', $svnr);
+52 -15
View File
@@ -173,7 +173,7 @@ class stip extends basis_db
* Suche Studenten anhand PersonKz
* @param $PersonKz
*/
function searchMatrikelnummerStg($Matrikelnummer, $StgKz)
function searchMatrikelnummerStg($Matrikelnummer, $StgKz, $studSemester)
{
$qry = "SELECT
prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
@@ -183,20 +183,35 @@ class stip extends basis_db
JOIN public.tbl_person person using(person_id)
WHERE
person.matr_nr = ".$this->db_add_param($Matrikelnummer)."
AND student.studiengang_kz=".$this->db_add_param(ltrim($StgKz,0)).";";
AND student.studiengang_kz=".$this->db_add_param(ltrim($StgKz,0))."
AND EXISTS(
SELECT 1 FROM public.tbl_prestudentstatus
WHERE
prestudent_id=student.prestudent_id
AND studiensemester_kurzbz=".$this->db_add_param($studSemester)."
);";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
// wenn mehr als 1 Datensatz gefunden wird --> Fehler
if($this->db_num_rows() == 1 )
{
$this->Vorname_Antwort = $row->vorname;
$this->Familienname_Antwort = $row->nachname;
$this->SVNR_Antwort = $row->svnr;
$this->PersKz_Antwort = trim($row->matrikelnr);
$this->StgKz_Antwort = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT);
$this->Matrikelnummer_Antwort = $row->matr_nr;
$this->AntwortStatusCode = 1;
return $row->prestudent_id;
if($row = $this->db_fetch_object())
{
$this->Vorname_Antwort = $row->vorname;
$this->Familienname_Antwort = $row->nachname;
$this->SVNR_Antwort = $row->svnr;
$this->PersKz_Antwort = trim($row->matrikelnr);
$this->StgKz_Antwort = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT);
$this->Matrikelnummer_Antwort = $row->matr_nr;
$this->AntwortStatusCode = 1;
return $row->prestudent_id;
}
else
{
$this->AntwortStatusCode = 2;
return false;
}
}
else
{
@@ -215,7 +230,7 @@ class stip extends basis_db
* Suche Studenten anhand Sozialversicherungsnummer
* @param $Svnr
*/
function searchSvnr($Svnr)
function searchSvnr($Svnr, $StgKz, $studSemester)
{
$qry = "SELECT
prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
@@ -223,7 +238,18 @@ class stip extends basis_db
public.tbl_student student
JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
JOIN public.tbl_person person using(person_id)
WHERE person.svnr = ".$this->db_add_param($Svnr).";";
WHERE person.svnr = ".$this->db_add_param($Svnr);
if ($StgKz != '')
$qry.=" AND student.studiengang_kz=".$this->db_add_param($StgKz);
if ($studSemester != '')
$qry.=" AND EXISTS(
SELECT 1 FROM public.tbl_prestudentstatus
WHERE
prestudent_id=student.prestudent_id
AND studiensemester_kurzbz=".$this->db_add_param($studSemester)."
)";
if($this->db_query($qry))
{
@@ -266,7 +292,7 @@ class stip extends basis_db
* Suche Studenten anhand Vor- und Nachname
* @param $Svnr
*/
function searchVorNachname($Vorname, $Nachname)
function searchVorNachname($Vorname, $Nachname, $StgKz, $studSemester)
{
$qry = "SELECT
prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr
@@ -276,7 +302,18 @@ class stip extends basis_db
JOIN public.tbl_person person using(person_id)
WHERE
person.vorname = ".$this->db_add_param($Vorname)."
AND person.nachname = ".$this->db_add_param($Nachname).";";
AND person.nachname = ".$this->db_add_param($Nachname);
if ($StgKz != '')
$qry.=" AND student.studiengang_kz=".$this->db_add_param($StgKz);
if ($studSemester != '')
$qry.=" AND EXISTS(
SELECT 1 FROM public.tbl_prestudentstatus
WHERE
prestudent_id=student.prestudent_id
AND studiensemester_kurzbz=".$this->db_add_param($studSemester)."
)";
if($this->db_query($qry))
{
+3 -3
View File
@@ -117,11 +117,11 @@ function GetStipendienbezieherStip($parameters)
if(!$prestudentID = $StipBezieher->searchPersonKz($BezieherStip->PersKz))
{
if(!$prestudentID = $StipBezieher->searchMatrikelnummerStg($BezieherStip->Matrikelnummer, $BezieherStip->StgKz))
if(!$prestudentID = $StipBezieher->searchMatrikelnummerStg($BezieherStip->Matrikelnummer, $BezieherStip->StgKz, $studSemester))
{
if(!$prestudentID = $StipBezieher->searchSvnr($BezieherStip->SVNR))
if(!$prestudentID = $StipBezieher->searchSvnr($BezieherStip->SVNR, $BezieherStip->StgKz, $studSemester))
{
$prestudentID = $StipBezieher->searchVorNachname($BezieherStip->Vorname, $BezieherStip->Familienname);
$prestudentID = $StipBezieher->searchVorNachname($BezieherStip->Vorname, $BezieherStip->Familienname, $BezieherStip->StgKz, $studSemester);
}
}
}
+593 -17
View File
@@ -532,6 +532,46 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue'
}
}
// Note "intern angerechnet" hinzufügen
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'iar' AND (bezeichnung = 'intern angerechnet' OR bezeichnung = 'Intern angerechnet');"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "
INSERT INTO
lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar)
VALUES(
(SELECT max(note)+1 FROM lehre.tbl_note),'intern angerechnet', 'iar', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"intern angerechnet\",\"internally credited\"}', FALSE
);
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_note: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_note: Note intern angerechnet hinzugefuegt!<br>';
}
}
// Note "nicht zugelassen" hinzufügen
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'nz' AND (bezeichnung = 'nicht zugelassen' OR bezeichnung = 'Nicht zugelassen');"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "
INSERT INTO
lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar)
VALUES(
(SELECT max(note)+1 FROM lehre.tbl_note), 'nicht zugelassen', 'nz', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"nicht zugelassen\",\"not admitted\"}', FALSE
);
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_note: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_note: Note nicht zugelassen hinzugefuegt!<br>';
}
}
// Spalte offiziell in lehre.tbl_note
if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;"))
{
@@ -1315,7 +1355,7 @@ if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_verarbeitungstaetigkeit"
}
// system.tbl_log.taetigkeit_kurzbz
if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log"))
if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log LIMIT 1"))
{
$qry = "
ALTER TABLE system.tbl_log ADD COLUMN taetigkeit_kurzbz varchar(32);
@@ -4798,13 +4838,11 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus LIMIT 1
status_kurzbz character varying(32),
bezeichnung character varying(256)
);
ALTER TABLE public.tbl_zgvpruefungstatus ADD CONSTRAINT status_kurzbz PRIMARY KEY (status_kurzbz);
INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('pruefung_stg', 'Wird vom Studiengang geprüft');
INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('rejected', 'Vom Studiengang abgelehnt');
INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('accepted', 'Vom Studiengang akzeptiert');
INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('accepted_pruefung', 'Vom Studiengang akzeptiert mit Prüfung');
GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefungstatus TO vilesci;
GRANT SELECT ON public.tbl_zgvpruefungstatus TO web;
";
@@ -4828,7 +4866,6 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefung LIMIT 1;"))
updateamum timestamp without time zone,
updatevon character varying(32)
);
CREATE SEQUENCE public.tbl_zgvpruefung_id_seq
INCREMENT BY 1
NO MAXVALUE
@@ -4837,11 +4874,9 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefung LIMIT 1;"))
ALTER TABLE public.tbl_zgvpruefung ADD CONSTRAINT pk_tbl_zgvpruefung PRIMARY KEY (zgvpruefung_id);
ALTER TABLE public.tbl_zgvpruefung ALTER COLUMN zgvpruefung_id SET DEFAULT nextval('public.tbl_zgvpruefung_id_seq');
ALTER TABLE public.tbl_zgvpruefung ADD CONSTRAINT fk_tbl_zgvpruefung_student FOREIGN KEY (prestudent_id) REFERENCES public.tbl_prestudent (prestudent_id) ON DELETE RESTRICT ON UPDATE CASCADE;
GRANT SELECT, UPDATE ON public.tbl_zgvpruefung_id_seq TO vilesci;
GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefung TO vilesci;
GRANT SELECT ON public.tbl_zgvpruefung TO web;
";
if(!$db->db_query($qry))
@@ -4861,18 +4896,15 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status
status character varying(32),
datum timestamp without time zone DEFAULT now()
);
CREATE SEQUENCE public.tbl_zgvpruefungstatus_status_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT pk_tbl_zgvpruefungstatus_status PRIMARY KEY (zgv_pruefung_status_id);
ALTER TABLE public.tbl_zgvpruefungstatus_status ALTER COLUMN zgv_pruefung_status_id SET DEFAULT nextval('tbl_zgvpruefungstatus_status_id_seq');
ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT fk_tbl_zgvpruefung_zgvpruefung FOREIGN KEY (zgvpruefung_id) REFERENCES public.tbl_zgvpruefung (zgvpruefung_id) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT fk_tbl_zgvpruefung_status FOREIGN KEY (status) REFERENCES public.tbl_zgvpruefungstatus (status_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
GRANT SELECT, UPDATE ON public.tbl_zgvpruefungstatus_status_id_seq TO vilesci;
GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefungstatus_status TO vilesci;
GRANT SELECT ON public.tbl_zgvpruefungstatus_status TO web;
@@ -4884,7 +4916,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status
echo ' public.tbl_zgvpruefungstatus_status: Tabelle hinzugefuegt<br>';
}
// Add index to system.tbl_log
// Add index to lehre.tbl_pruefung
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_pruefung_student_uid'"))
{
if ($db->db_num_rows($result) == 0)
@@ -4910,6 +4942,542 @@ if ($result = @$db->db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchung
echo ' public.tbl_buchungstyp: Added buchungstyp "ZuschussIO" <br>';
}
}
//Add Column statusgrund_kurzbz to public.tbl_status_grund
if(!@$db->db_query("SELECT statusgrund_kurzbz FROM public.tbl_status_grund LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_status_grund ADD COLUMN statusgrund_kurzbz varchar(32);
ALTER TABLE public.tbl_status_grund ADD CONSTRAINT uk_tbl_statusgrund_kurzbz UNIQUE (statusgrund_kurzbz);
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_status_grund '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neue Spalte statusgrund_kurzbz zu Tabelle public.tbl_status_grund hinzugefügt';
}
// Add column homeoffice to bis.tbl_bisverwendung
if (!$result = @$db->db_query("SELECT homeoffice FROM bis.tbl_bisverwendung LIMIT 1"))
{
$qry = "ALTER TABLE bis.tbl_bisverwendung ADD COLUMN homeoffice boolean NOT NULL DEFAULT FALSE";
if(!$db->db_query($qry))
echo '<strong>bis.tbl_bisverwendung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>bis.tbl_bisverwendung: Spalte homeoffice hinzugefuegt';
}
// ADD COLUMN homeoffice to campus.tbl_zeitaufzeichnung
if(!$result = @$db->db_query("SELECT homeoffice FROM campus.tbl_zeitaufzeichnung LIMIT 1"))
{
$qry = "
ALTER TABLE campus.tbl_zeitaufzeichnung ADD COLUMN homeoffice boolean NOT NULL DEFAULT false ;
";
if(!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>campus.tbl_zeitaufzeichnung Spalte homeoffice hinzugefügt.';
}
// INDEX idx_anrechnung_anrechnung_status_anrechnung_id
if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'idx_anrechnung_anrechnung_status_anrechnung_id'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = 'CREATE INDEX idx_anrechnung_anrechnung_status_anrechnung_id ON lehre.tbl_anrechnung_anrechnungstatus USING btree (anrechnung_id)';
if (!$db->db_query($qry))
echo '<strong>idx_anrechnung_anrechnung_status_anrechnung_id '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created Index idx_anrechnung_anrechnung_status_anrechnung_id';
}
}
// Add Table lehre.tbl_lehrmodus
if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrmodus LIMIT 1;"))
{
$qry = "
CREATE TABLE lehre.tbl_lehrmodus
(
lehrmodus_kurzbz varchar(32) NOT NULL,
bezeichnung_mehrsprachig varchar(255)[],
aktiv boolean DEFAULT true
);
ALTER TABLE lehre.tbl_lehrmodus ADD CONSTRAINT pk_lehrmodus PRIMARY KEY (lehrmodus_kurzbz);
INSERT INTO lehre.tbl_lehrmodus(lehrmodus_kurzbz, bezeichnung_mehrsprachig) VALUES('regulaer', '{\"regulaer\",\"regular\"}');
INSERT INTO lehre.tbl_lehrmodus(lehrmodus_kurzbz, bezeichnung_mehrsprachig) VALUES('standardisiert', '{\"standardisiert\",\"standardized\"}');
GRANT SELECT ON lehre.tbl_lehrmodus TO web;
GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_lehrmodus TO vilesci;
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_lehrmodus: '.$db->db_last_error().'</strong><br>';
else
echo ' lehre.tbl_lehrmodus: Tabelle hinzugefuegt<br>';
}
//Add Column lehrmodus_kurzbz to lehre.tbl_lehrveranstaltung
if(!@$db->db_query("SELECT lehrmodus_kurzbz FROM lehre.tbl_lehrveranstaltung LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lehrmodus_kurzbz varchar(32);
ALTER TABLE lehre.tbl_lehrveranstaltung ADD CONSTRAINT fk_lehrveranstaltung_lehrmodus FOREIGN KEY (lehrmodus_kurzbz) REFERENCES lehre.tbl_lehrmodus(lehrmodus_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_lehrveranstaltung '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte lehrmodus_kurzbz in lehre.tbl_lehrveranstaltung hinzugefügt';
}
// Spalte matr_aktiv in tbl_person zum Markieren von noch nicht scharfgeschaltenen Matrikelnummern vom Datenverbund
if(!$result = @$db->db_query("SELECT matr_aktiv FROM public.tbl_person LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_person ADD COLUMN matr_aktiv boolean NOT NULL DEFAULT false;
COMMENT ON COLUMN public.tbl_person.matr_aktiv IS 'Zeigt an, ob Matrikelnummer aktiv oder nur vorläufig ist.';";
if(!$db->db_query($qry))
echo '<strong>public.tbl_person: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_person: Spalte matr_aktiv hinzugefuegt';
$qry = "UPDATE public.tbl_person SET matr_aktiv = TRUE WHERE matr_nr IS NOT NULL;";
if(!$db->db_query($qry))
echo '<strong>public.tbl_person: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_person: Spalte matr_aktiv auf true gesetzt';
}
// Creates table bis.tbl_oehbeitrag if it doesn't exist and grants privileges
if (!$result = @$db->db_query('SELECT 1 FROM bis.tbl_oehbeitrag LIMIT 1'))
{
$qry = 'CREATE TABLE bis.tbl_oehbeitrag (
oehbeitrag_id integer NOT NULL,
studierendenbeitrag numeric(5,2) NOT NULL,
versicherung numeric(5,2) NOT NULL,
von_studiensemester_kurzbz varchar(16) NOT NULL,
bis_studiensemester_kurzbz varchar(16),
insertamum timestamp DEFAULT NOW(),
insertvon varchar(32),
updateamum timestamp,
updatevon varchar(32)
);
COMMENT ON TABLE bis.tbl_oehbeitrag IS \'Table to save amount of Oehbeitrag and Versicherung.\';
COMMENT ON COLUMN bis.tbl_oehbeitrag.studierendenbeitrag IS \'Amount of Studierendenbeitrag, Oehbeitrag without Versicherung.\';
COMMENT ON COLUMN bis.tbl_oehbeitrag.versicherung IS \'Amount of Versicherung as part of the Oehbeitrag\';
COMMENT ON COLUMN bis.tbl_oehbeitrag.von_studiensemester_kurzbz IS \'Semester from which amounts are valid\';
COMMENT ON COLUMN bis.tbl_oehbeitrag.bis_studiensemester_kurzbz IS \'Semester until which amounts are valid\';
CREATE SEQUENCE bis.seq_oehbeitrag_oehbeitrag_id
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE bis.tbl_oehbeitrag ALTER COLUMN oehbeitrag_id SET DEFAULT nextval(\'bis.seq_oehbeitrag_oehbeitrag_id\'::regclass);
GRANT SELECT, UPDATE ON SEQUENCE bis.seq_oehbeitrag_oehbeitrag_id TO vilesci;
GRANT SELECT, UPDATE ON SEQUENCE bis.seq_oehbeitrag_oehbeitrag_id TO fhcomplete;
ALTER TABLE bis.tbl_oehbeitrag ADD CONSTRAINT pk_oehbeitrag PRIMARY KEY (oehbeitrag_id);
ALTER TABLE bis.tbl_oehbeitrag ADD CONSTRAINT fk_oehbeitrag_von_studiensemester_kurzbz FOREIGN KEY (von_studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE bis.tbl_oehbeitrag ADD CONSTRAINT fk_oehbeitrag_bis_studiensemester_kurzbz FOREIGN KEY (bis_studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE bis.tbl_oehbeitrag ADD CONSTRAINT uk_oehbeitrag_von_studiensemester_kurzbz UNIQUE (von_studiensemester_kurzbz);';
if (!$db->db_query($qry))
echo '<strong>bis.tbl_oehbeitrag: '.$db->db_last_error().'</strong><br>';
else
echo '<br>bis.tbl_oehbeitrag table created';
$qry = 'GRANT SELECT ON TABLE bis.tbl_oehbeitrag TO web;';
if (!$db->db_query($qry))
echo '<strong>bis.tbl_oehbeitrag: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on bis.tbl_oehbeitrag';
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_oehbeitrag TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>bis.tbl_oehbeitrag: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on bis.tbl_oehbeitrag';
}
// Add column melderelevant to public.tbl_studiengang and prefill values
if (!$result = @$db->db_query("SELECT melderelevant FROM public.tbl_studiengang LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN melderelevant boolean NOT NULL DEFAULT FALSE;
UPDATE public.tbl_studiengang SET melderelevant = TRUE WHERE tbl_studiengang.studiengang_kz < 10000 AND tbl_studiengang.studiengang_kz <> 0;
COMMENT ON COLUMN public.tbl_studiengang.melderelevant IS 'Zeigt an, ob Studierende aus Studiengang an Ministerien gemeldet werden müssen'";
if(!$db->db_query($qry))
echo '<strong>public.tbl_studiengang: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_studiengang: Neue Spalte melderelevant hinzugefuegt.';
}
// TABLE bis.tbl_bisstandort
if (!@$db->db_query("SELECT 1 FROM bis.tbl_bisstandort LIMIT 1"))
{
$qry = "CREATE TABLE bis.tbl_bisstandort (
standort_code integer,
bezeichnung character varying(256),
aktiv boolean NOT NULL DEFAULT TRUE,
insertamum timestamp DEFAULT NOW(),
insertvon varchar(32),
updateamum timestamp,
updatevon varchar(32)
);
ALTER TABLE bis.tbl_bisstandort ADD CONSTRAINT pk_bisstandort PRIMARY KEY (standort_code);
COMMENT ON TABLE bis.tbl_bisstandort IS 'Key-Table of Locations';";
if (!$db->db_query($qry))
echo '<strong>bis.tbl_bisstandort '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created table bis.tbl_bisstandort';
// GRANT SELECT ON TABLE bis.tbl_bisstandort TO web;
$qry = 'GRANT SELECT ON TABLE bis.tbl_bisstandort TO web;';
if (!$db->db_query($qry))
echo '<strong>bis.tbl_bisstandort '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on bis.tbl_bisstandort';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bisstandort TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bisstandort TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>bis.tbl_bisstandort '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on bis.tbl_bisstandort';
}
// Add columns foerderrelevant and standort to public.tbl_studiengang
if (!$result = @$db->db_query("SELECT foerderrelevant, standort_code FROM public.tbl_studiengang LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN foerderrelevant boolean NOT NULL DEFAULT TRUE;
ALTER TABLE public.tbl_studiengang ADD COLUMN standort_code integer;
ALTER TABLE public.tbl_studiengang ADD CONSTRAINT fk_studiengang_standort_code FOREIGN KEY (standort_code) REFERENCES bis.tbl_bisstandort(standort_code) ON DELETE RESTRICT ON UPDATE CASCADE;
COMMENT ON COLUMN public.tbl_studiengang.foerderrelevant IS 'Zeigt an, ob Studierende aus Studiengang bei Meldung für Förderungen relevant sind';
COMMENT ON COLUMN public.tbl_studiengang.standort_code IS 'Zu meldender Standortcode der Studierenden des Studiengangs'";
if(!$db->db_query($qry))
echo '<strong>public.tbl_studiengang: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_studiengang: Neue Spalten foerderrelevant, standort_code hinzugefuegt.';
}
// Add columns foerderrelevant and standort to public.tbl_prestudent
if (!$result = @$db->db_query("SELECT foerderrelevant, standort_code FROM public.tbl_prestudent LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN foerderrelevant boolean;
ALTER TABLE public.tbl_prestudent ADD COLUMN standort_code integer;
ALTER TABLE public.tbl_prestudent ADD CONSTRAINT fk_prestudent_standort_code FOREIGN KEY (standort_code) REFERENCES bis.tbl_bisstandort(standort_code) ON DELETE RESTRICT ON UPDATE CASCADE;
UPDATE public.tbl_prestudent ps -- set foerderrelevant false for incoming, ausserordentlich, gsextern
SET foerderrelevant = FALSE
WHERE EXISTS (SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id = ps.prestudent_id AND status_kurzbz = 'Incoming') -- incoming
OR EXISTS (SELECT 1 FROM public.tbl_prestudent
JOIN public.tbl_person USING (person_id)
LEFT JOIN public.tbl_student USING (prestudent_id)
LEFT JOIN bis.tbl_gsstudientyp USING (gsstudientyp_kurzbz)
WHERE prestudent_id = ps.prestudent_id
AND (SUBSTRING(matrikelnr, 4, 1) = '9' -- ausserordentlich
OR studientyp_code = 'E')); -- extern
COMMENT ON COLUMN public.tbl_prestudent.foerderrelevant IS 'Zeigt an, ob Studierende bei Meldung für Förderungen relevant sind. Überschreibt förderrelevant auf Studienganglevel.';
COMMENT ON COLUMN public.tbl_prestudent.standort_code IS 'Zu meldender Standortcode des Studierenden. Überschreibt standort auf Studienganglevel.';";
if(!$db->db_query($qry))
echo '<strong>public.tbl_prestudent: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_prestudent: Neue Spalten foerderrelevant, standort_code hinzugefuegt.';
}
// App 'dvuh' hinzufügen
if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='dvuh'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO system.tbl_app(app) VALUES('dvuh');";
if(!$db->db_query($qry))
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neue App dvuh in system.tbl_app hinzugefügt';
}
}
// Add table issue_status
if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_issue_status LIMIT 1;"))
{
$qry = "CREATE TABLE system.tbl_issue_status (
status_kurzbz character varying(32),
bezeichnung_mehrsprachig varchar(32)[]
);
COMMENT ON TABLE system.tbl_issue_status IS 'Tabelle zur Pflege von Bearbeitungsstatus von issues.';
ALTER TABLE system.tbl_issue_status ADD CONSTRAINT pk_tbl_issue_status PRIMARY KEY (status_kurzbz);
INSERT INTO system.tbl_issue_status (status_kurzbz, bezeichnung_mehrsprachig) VALUES('new', '{\"neu\",\"new\"}');
INSERT INTO system.tbl_issue_status (status_kurzbz, bezeichnung_mehrsprachig) VALUES('inProgress', '{\"in Bearbeitung\",\"in progress\"}');
INSERT INTO system.tbl_issue_status (status_kurzbz, bezeichnung_mehrsprachig) VALUES('resolved', '{\"behoben\",\"resolved\"}');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_issue_status: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_issue_status: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_bisstandort TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_issue_status TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue_status '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_issue_status';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue_status TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_issue_status TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue_status '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_issue_status';
}
// Add table fehlertyp
if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_fehlertyp LIMIT 1;"))
{
$qry = "CREATE TABLE system.tbl_fehlertyp (
fehlertyp_kurzbz character varying(32),
bezeichnung_mehrsprachig varchar(32)[]
);
COMMENT ON TABLE system.tbl_fehlertyp IS 'Tabelle mit fehlertyp für tbl_fehler';
ALTER TABLE system.tbl_fehlertyp ADD CONSTRAINT pk_tbl_fehlertyp PRIMARY KEY (fehlertyp_kurzbz);
INSERT INTO system.tbl_fehlertyp (fehlertyp_kurzbz, bezeichnung_mehrsprachig) VALUES('warning', '{\"warnung\",\"warning\"}');
INSERT INTO system.tbl_fehlertyp (fehlertyp_kurzbz, bezeichnung_mehrsprachig) VALUES('error', '{\"fehler\",\"error\"}');
INSERT INTO system.tbl_fehlertyp (fehlertyp_kurzbz, bezeichnung_mehrsprachig) VALUES('info', '{\"info\",\"info\"}');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_fehlertyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_fehlertyp: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_bisstandort TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_fehlertyp TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehlertyp '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_fehlertyp';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bisstandort TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehlertyp TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehlertyp '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_fehlertyp';
}
// Add table fehler
if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_fehler LIMIT 1;"))
{
$qry = "CREATE TABLE system.tbl_fehler (
fehlercode character varying(64),
fehler_kurzbz character varying(64) UNIQUE,
fehlercode_extern character varying(64),
fehlertext text,
fehlertyp_kurzbz character varying(32) NOT NULL,
app character varying(32) NOT NULL
);
COMMENT ON TABLE system.tbl_fehler IS 'Tabelle zur Pflege von Fehlerfällen';
COMMENT ON COLUMN system.tbl_fehler.fehlercode IS 'Eindeutiger interner Fehlercode';
COMMENT ON COLUMN system.tbl_fehler.fehler_kurzbz IS 'Eindeutige Kurzbezeichnung für den Fehler';
COMMENT ON COLUMN system.tbl_fehler.fehlercode_extern IS 'Code für von vordefinierte, von externen Systemen produzierte Fehler';
COMMENT ON COLUMN system.tbl_fehler.fehlertext IS 'Interner, eigens definierter Fehlertext mit Platzhaltern für Parameter';
COMMENT ON COLUMN system.tbl_fehler.fehlertyp_kurzbz IS 'Typ bzw Schweregrad (z.B. warnung, fehler)';
COMMENT ON COLUMN system.tbl_fehler.app IS 'Ursprungsapp des Fehlers';
ALTER TABLE system.tbl_fehler ADD CONSTRAINT pk_tbl_fehler PRIMARY KEY (fehlercode);
ALTER TABLE system.tbl_fehler ADD CONSTRAINT fk_tbl_fehler_fehlertyp_kurzbz FOREIGN KEY (fehlertyp_kurzbz) REFERENCES system.tbl_fehlertyp(fehlertyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_fehler ADD CONSTRAINT fk_tbl_fehler_app FOREIGN KEY (app) REFERENCES system.tbl_app(app) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_fehler ADD CONSTRAINT uk_tbl_fehler_fehlercode_fehler_kurzbz UNIQUE (fehlercode, fehler_kurzbz); -- for upsert ON CONFLICT
ALTER TABLE system.tbl_fehler ADD CONSTRAINT uk_tbl_fehler_fehlercode_extern_app UNIQUE (fehlercode_extern, app); -- for recognizing external errors
INSERT INTO system.tbl_fehler (fehlercode, fehlertext, fehlertyp_kurzbz, app) VALUES ('UNKNOWN_ERROR', 'Fehler ist aufgetreten', 'error', 'core');
";
if(!$db->db_query($qry))
echo '<strong>system.tbl_fehler: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_fehler: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_issue TO web;
$qry = 'GRANT SELECT, UPDATE ON TABLE system.tbl_fehler TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_fehler';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehler TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_fehler';
}
// Add table fehler_zustaendigkeiten
if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_fehler_zustaendigkeiten LIMIT 1;"))
{
$qry = "CREATE TABLE system.tbl_fehler_zustaendigkeiten (
fehlerzustaendigkeiten_id character varying(64) NOT NULL,
fehlercode character varying(64) NOT NULL,
person_id integer,
oe_kurzbz character varying(32),
funktion_kurzbz character varying(16)
);
COMMENT ON TABLE system.tbl_fehler_zustaendigkeiten IS 'Tabelle zum Hinzufügen für Zuständigkeiten für einzelne Fehler';
COMMENT ON COLUMN system.tbl_fehler_zustaendigkeiten.fehlercode IS 'Eindeutiger interner Fehlercode';
COMMENT ON COLUMN system.tbl_fehler_zustaendigkeiten.person_id IS 'person_id der zuständigen Person';
COMMENT ON COLUMN system.tbl_fehler_zustaendigkeiten.oe_kurzbz IS 'Zuständigkeit für einen fehlercode für eine ganze OE';
COMMENT ON COLUMN system.tbl_fehler_zustaendigkeiten.funktion_kurzbz IS 'Zusätzliche Einschränkung der OE Zuständigkeit nach funktion';
CREATE SEQUENCE system.seq_fehlerzustaendigkeiten_id
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE ONLY system.tbl_fehler_zustaendigkeiten ALTER COLUMN fehlerzustaendigkeiten_id SET DEFAULT nextval('system.seq_fehlerzustaendigkeiten_id'::regclass);
GRANT SELECT, UPDATE ON SEQUENCE system.seq_fehlerzustaendigkeiten_id TO vilesci;
GRANT SELECT, UPDATE ON SEQUENCE system.seq_fehlerzustaendigkeiten_id TO fhcomplete;
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT pk_tbl_fehler_zustaendigkeiten PRIMARY KEY (fehlerzustaendigkeiten_id);
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT fk_tbl_fehler_zustaendigkeiten_fehlercode FOREIGN KEY (fehlercode) REFERENCES system.tbl_fehler(fehlercode) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT fk_tbl_fehler_zustaendigkeiten_person_id FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT fk_tbl_fehler_zustaendigkeiten_oe_kurzbz FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT fk_tbl_fehler_zustaendigkeiten_funktion_kurzbz FOREIGN KEY (funktion_kurzbz) REFERENCES public.tbl_funktion(funktion_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT uk_tbl_fehler_zustaendigkeiten_fehlercode_person_id UNIQUE (fehlercode, person_id);
ALTER TABLE system.tbl_fehler_zustaendigkeiten ADD CONSTRAINT uk_tbl_fehler_zustaendigkeiten_fehlercode_oe_kurzbz_funktion_kurzbz UNIQUE (fehlercode, oe_kurzbz, funktion_kurzbz);";
if(!$db->db_query($qry))
echo '<strong>system.tbl_fehler_zustaendigkeiten: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_fehler_zustaendigkeiten: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_issue TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_fehler_zustaendigkeiten TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler_zustaendigkeiten '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_fehler_zustaendigkeiten';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehler_zustaendigkeiten TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler_zustaendigkeiten '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_fehler_zustaendigkeiten';
}
// Add table issue
if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_issue LIMIT 1;"))
{
$qry = "CREATE TABLE system.tbl_issue (
issue_id integer,
fehlercode character varying(64) NOT NULL,
inhalt text,
fehlercode_extern character varying(64),
inhalt_extern text,
person_id integer,
oe_kurzbz character varying(32),
datum timestamp without time zone NOT NULL,
verarbeitetvon character varying(32),
verarbeitetamum timestamp without time zone,
status_kurzbz character varying(32) NOT NULL,
insertvon character varying(32),
insertamum timestamp without time zone DEFAULT now(),
updatevon character varying(32),
updateamum timestamp without time zone
);
COMMENT ON TABLE system.tbl_issue IS 'Tabelle zur Verfolgung von Problemen/Fehlern von verschiedenen Systemen';
COMMENT ON COLUMN system.tbl_issue.issue_id IS 'Primärschlüssel';
COMMENT ON COLUMN system.tbl_issue.fehlercode IS 'Identifikationscode des Problems/Fehlers, kann von anderem System kommen oder eigens definiert sein';
COMMENT ON COLUMN system.tbl_issue.inhalt IS 'Fehlertext';
COMMENT ON COLUMN system.tbl_issue.fehlercode_extern IS 'Externer, von App geschriebener Fehlercode. Zum Auseinanderhalten der externen Fehler, die nicht in tbl_fehler definiert sind.';
COMMENT ON COLUMN system.tbl_issue.inhalt_extern IS 'von externem System kommender Fehlermeldungstext';
COMMENT ON COLUMN system.tbl_issue.datum IS 'Tag und Zeit des Auftritts des Problems';
COMMENT ON COLUMN system.tbl_issue.verarbeitetvon IS 'uid des Nutzers, der das Problem verarbeitet hat';
COMMENT ON COLUMN system.tbl_issue.verarbeitetamum IS 'Tag und Zeit der Problemverarbeitung';
COMMENT ON COLUMN system.tbl_issue.person_id IS 'Id der Person, für welche das issue besteht';
COMMENT ON COLUMN system.tbl_issue.oe_kurzbz IS 'Betroffene Organisationseinheit';
COMMENT ON COLUMN system.tbl_issue.status_kurzbz IS 'Verarbeitsungsstatus';
CREATE SEQUENCE system.seq_issue_id
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE ONLY system.tbl_issue ALTER COLUMN issue_id SET DEFAULT nextval('system.seq_issue_id'::regclass);
GRANT SELECT, UPDATE ON SEQUENCE system.seq_issue_id TO vilesci;
GRANT SELECT, UPDATE ON SEQUENCE system.seq_issue_id TO fhcomplete;
ALTER TABLE system.tbl_issue ADD CONSTRAINT pk_tbl_issue PRIMARY KEY (issue_id);
ALTER TABLE system.tbl_issue ADD CONSTRAINT fk_tbl_issue_fehlercode FOREIGN KEY (fehlercode) REFERENCES system.tbl_fehler(fehlercode) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_issue ADD CONSTRAINT fk_tbl_issue_verarbeitetvon FOREIGN KEY (verarbeitetvon) REFERENCES public.tbl_benutzer(uid) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_issue ADD CONSTRAINT fk_tbl_issue_person_id FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_issue ADD CONSTRAINT fk_tbl_issue_oe_kurzbz FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_issue ADD CONSTRAINT chk_tbl_issue_person_id_oe_kurzbz CHECK (person_id IS NOT NULL OR oe_kurzbz IS NOT NULL);
CREATE INDEX idx_tbl_issue_person_id ON system.tbl_issue USING btree (person_id);
CREATE INDEX idx_tbl_issue_oe_kurzbz ON system.tbl_issue USING btree (oe_kurzbz);";
if(!$db->db_query($qry))
echo '<strong>system.tbl_issue: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_issue: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_issue TO web;
$qry = 'GRANT SELECT, UPDATE ON TABLE system.tbl_issue TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_issue';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_issue TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_issue';
}
// Add permission to manage issues
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'system/issues_verwalten';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('system/issues_verwalten', 'Issues verwalten');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_berechtigung: Added permission for system/issues_verwalten';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -4928,7 +5496,8 @@ $tabellen=array(
"bis.tbl_bisfunktion" => array("bisverwendung_id","studiengang_kz","sws","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","student_uid","updateamum","updatevon","insertamum","insertvon","ext_id","ort","universitaet","lehreinheit_id","ects_erworben","ects_angerechnet"),
"bis.tbl_bisio_zweck" => array("bisio_id","zweck_code"),
"bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant"),
"bis.tbl_bisstandort" => array("standort_code","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"),
"bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"),
"bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"),
"bis.tbl_entwicklungsteam" => array("mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_gemeinde" => array("gemeinde_id","plz","name","ortschaftskennziffer","ortschaftsname","bulacode","bulabez","kennziffer"),
@@ -4942,6 +5511,7 @@ $tabellen=array(
"bis.tbl_mobilitaetsprogramm" => array("mobilitaetsprogramm_code","kurzbz","beschreibung","sichtbar","sichtbar_outgoing"),
"bis.tbl_nation" => array("nation_code","entwicklungsstand","eu","ewr","kontinent","kurztext","langtext","engltext","sperre","nationengruppe_kurzbz", "iso3166_1_a2","iso3166_1_a3"),
"bis.tbl_nationengruppe" => array("nationengruppe_kurzbz","nationengruppe_bezeichnung","aktiv"),
"bis.tbl_oehbeitrag" => array("oehbeitrag_id","studierendenbeitrag","versicherung","von_studiensemester_kurzbz","bis_studiensemester_kurzbz","insertamum","insertvon","updateamum","updatevon"),
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz","bezeichnung_mehrsprachig"),
"bis.tbl_verwendung" => array("verwendung_code","verwendungbez"),
"bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung"),
@@ -4997,7 +5567,7 @@ $tabellen=array(
"campus.tbl_uebung" => array("uebung_id","gewicht","punkte","angabedatei","freigabevon","freigabebis","abgabe","beispiele","statistik","bezeichnung","positiv","defaultbemerkung","lehreinheit_id","maxstd","maxbsp","liste_id","prozent","nummer","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltung" => array("veranstaltung_id","titel","beschreibung","veranstaltungskategorie_kurzbz","inhalt","start","ende","freigabevon","freigabeamum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltungskategorie" => array("veranstaltungskategorie_kurzbz","bezeichnung","bild","farbe"),
"campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid","projektphase_id"),
"campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid","projektphase_id","homeoffice"),
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
@@ -5028,8 +5598,9 @@ $tabellen=array(
"lehre.tbl_lehrform" => array("lehrform_kurzbz","bezeichnung","verplanen","bezeichnung_kurz","bezeichnung_lang"),
"lehre.tbl_lehrfunktion" => array("lehrfunktion_kurzbz","beschreibung","standardfaktor","sort"),
"lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"),
"lehre.tbl_lehrmodus" => array("lehrmodus_kurzbz","bezeichnung_mehrsprachig","aktiv"),
"lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"),
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag"),
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz"),
"lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"),
"lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"),
@@ -5110,7 +5681,7 @@ $tabellen=array(
"public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"),
"public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre","standort","warn_semesterstunden_frei","warn_semesterstunden_fix","standort_id"),
"public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"),
"public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr","zugangscode_timestamp","udf_values","bpk"),
"public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr","zugangscode_timestamp","udf_values","bpk","matr_aktiv"),
"public.tbl_person_fotostatus" => array("person_fotostatus_id","person_id","fotostatus_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_personfunktionstandort" => array("personfunktionstandort_id","funktion_kurzbz","person_id","standort_id","position","anrede"),
"public.tbl_preincoming" => array("preincoming_id","person_id","mobilitaetsprogramm_code","zweck_code","firma_id","universitaet","aktiv","bachelorthesis","masterthesis","von","bis","uebernommen","insertamum","insertvon","updateamum","updatevon","anmerkung","zgv","zgv_ort","zgv_datum","zgv_name","zgvmaster","zgvmaster_datum","zgvmaster_ort","zgvmaster_name","program_name","bachelor","master","jahre","person_id_emergency","person_id_coordinator_dep","person_id_coordinator_int","code","deutschkurs1","deutschkurs2","research_area","deutschkurs3","ext_id"),
@@ -5122,7 +5693,7 @@ $tabellen=array(
"public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"),
"public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung","foerderrelevant","standort_code"),
"public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist"),
@@ -5130,7 +5701,7 @@ $tabellen=array(
"public.tbl_rt_person" => array("rt_person_id","person_id","rt_id","studienplan_id","anmeldedatum","teilgenommen","ort_kurzbz","punkte","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_rt_studienplan" => array("reihungstest_id","studienplan_id"),
"public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id","bezeichnung_mehrsprachig"),
"public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung"),
"public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung","statusgrund_kurzbz"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id","design_uid","betrieb_uid","operativ_uid","servicekategorie_kurzbz"),
"public.tbl_servicekategorie" => array("servicekategorie_kurzbz", "bezeichnung","sort"),
@@ -5139,7 +5710,7 @@ $tabellen=array(
"public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","gruppe","sql","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz","publish","preferences"),
"public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code"),
"public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung","bezeichnung_mehrsprachig"),
"public.tbl_studienjahr" => array("studienjahr_kurzbz","bezeichnung"),
"public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"),
@@ -5170,6 +5741,11 @@ $tabellen=array(
"system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"),
"system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"),
"system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"),
"system.tbl_fehler" => array("fehlercode","fehler_kurzbz","fehlercode_extern","fehlertext","fehlertyp_kurzbz","app"),
"system.tbl_fehlertyp" => array("fehlertyp_kurzbz","bezeichnung_mehrsprachig"),
"system.tbl_fehler_zustaendigkeiten" => array("fehlerzustaendigkeiten_id","fehlercode","person_id","oe_kurzbz","funktion_kurzbz"),
"system.tbl_issue" => array("issue_id","fehlercode","fehlercode_extern","inhalt","inhalt_extern","person_id","oe_kurzbz","datum","verarbeitetvon","verarbeitetamum","status_kurzbz","insertvon","insertamum","updatevon","updateamum"),
"system.tbl_issue_status" => array("status_kurzbz","bezeichnung_mehrsprachig"),
"system.tbl_log" => array("log_id","person_id","zeitpunkt","app","oe_kurzbz","logtype_kurzbz","logdata","insertvon","taetigkeit_kurzbz"),
"system.tbl_logtype" => array("logtype_kurzbz", "data_schema"),
"system.tbl_filters" => array("filter_id","app","dataset_name","filter_kurzbz","person_id","description","sort","default_filter","filter","oe_kurzbz","statistik_kurzbz"),

Some files were not shown because too many files have changed in this diff Show More