mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-12 17:49:28 +00:00
merge master into 11952/DetailansichtVorgesetzte
This commit is contained in:
@@ -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'
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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">
|
||||
Öhbeitragsverwaltung
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<button class="btn btn-default" id="addNewOeh">Neuen Öhbeitrag hinzufügen</button>
|
||||
<br />
|
||||
<br />
|
||||
<table class="table table-bordered table-condensed" id="oehbeitraegeTbl">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Gültig von</th>
|
||||
<th>Gü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'); ?>
|
||||
@@ -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>
|
||||
|
||||
@@ -81,6 +81,21 @@
|
||||
|
||||
</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">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" align="center">
|
||||
<button type="submit">Save</button>
|
||||
|
||||
@@ -51,6 +51,16 @@
|
||||
|
||||
</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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}); ?>
|
||||
|
||||
|
||||
@@ -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}); ?>
|
||||
|
||||
|
||||
@@ -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}); ?>
|
||||
|
||||
|
||||
@@ -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}); ?>
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+28
-1
@@ -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>
|
||||
|
||||
@@ -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'))
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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 />
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
// }
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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!='')
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
.datasetActionsTopBottomText {
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
.datasetActionsHorizontalLine {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
+14
-3
@@ -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();
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -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> " +
|
||||
" <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 +
|
||||
' <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änkt' :
|
||||
Oehbeitrag._formatDateToGerman(oehbeitrag.bis_datum) + '/' + oehbeitrag.bis_studiensemester_kurzbz) +
|
||||
' <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) +
|
||||
' <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) +
|
||||
' <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>' +
|
||||
' <button class="btn btn-default deleteBtn" id="delete_'+oehbeitrag.oehbeitrag_id+'">Lö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(" <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);
|
||||
}
|
||||
};
|
||||
@@ -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
|
||||
}
|
||||
);
|
||||
|
||||
@@ -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ählte setzen</button>' +
|
||||
'</span>' +
|
||||
'</div>';
|
||||
|
||||
let selectAllHtml =
|
||||
'<a href="javascript:void(0)" class="selectAll">' +
|
||||
'<i class="fa fa-check"></i> Alle</a> ' +
|
||||
'<a href="javascript:void(0)" class="unselectAll">' +
|
||||
'<i class="fa fa-times"></i> Keinen</a> ';
|
||||
|
||||
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 Ä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 Ändern");
|
||||
},
|
||||
errorCallback: function(jqXHR, textStatus, errorThrown) {
|
||||
FHC_DialogLib.alertError("Fehler beim Status Ä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();
|
||||
|
||||
});
|
||||
@@ -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();
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
';
|
||||
|
||||
@@ -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
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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:'';
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
Reference in New Issue
Block a user