mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-02 12:49:27 +00:00
Merge remote-tracking branch 'origin/master'
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");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,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);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ class Betriebsmittelperson_model extends DB_Model
|
||||
* @param bool $isRetourniert False to retrieve only active Betriebsmittel.
|
||||
* @return array|bool
|
||||
*/
|
||||
public function getBetriebsmittel($person_id, $betriebsmitteltyp = null, $isRetourniert = null)
|
||||
public function getBetriebsmittel($person_id, $betriebsmitteltyp = null, $isRetourniert = null, $onlyAktiveBenutzer=false)
|
||||
{
|
||||
if (!is_numeric($person_id))
|
||||
{
|
||||
@@ -28,8 +28,12 @@ class Betriebsmittelperson_model extends DB_Model
|
||||
|
||||
$this->addJoin('wawi.tbl_betriebsmittel', 'betriebsmittel_id');
|
||||
|
||||
if( $onlyAktiveBenutzer ) {
|
||||
$this->addJoin('public.tbl_benutzer b', 'b.uid = wawi.tbl_betriebsmittelperson.uid AND b.aktiv = \'t\'');
|
||||
}
|
||||
|
||||
$condition = '
|
||||
person_id = '. $this->escape($person_id). '
|
||||
wawi.tbl_betriebsmittelperson.person_id = '. $this->escape($person_id). '
|
||||
';
|
||||
|
||||
if (is_string($betriebsmitteltyp)) {
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
}
|
||||
@@ -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'); ?>
|
||||
@@ -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"); ?>
|
||||
|
||||
|
||||
@@ -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',
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
+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>
|
||||
|
||||
@@ -365,7 +365,7 @@ if(!$error)
|
||||
{
|
||||
if($row->summe>$max_stunden)
|
||||
{
|
||||
if(!$fixangestellt)
|
||||
if(!$fixangestellt && !$rechte->isBerechtigt('admin'))
|
||||
{
|
||||
if(!LehrauftragAufFirma($lem->mitarbeiter_uid))
|
||||
{
|
||||
@@ -624,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"/>
|
||||
|
||||
@@ -29,6 +29,7 @@ require_once('../../include/benutzer.class.php');
|
||||
require_once('../../include/mitarbeiter.class.php');
|
||||
require_once('../../include/organisationseinheit.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/studiensemester.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
|
||||
@@ -114,6 +115,9 @@ $oe_arr[''] = '';
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->getAll('typ, kurzbz', false);
|
||||
|
||||
$stsem = new studiensemester();
|
||||
|
||||
$previousStsem = $stsem->getPreviousFrom($stsem->getPreviousFrom($studiensemester_kurzbz));
|
||||
$qry = "
|
||||
SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
|
||||
tbl_lehrveranstaltung.studiengang_kz,
|
||||
@@ -124,18 +128,21 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
|
||||
tbl_lehreinheitmitarbeiter.stundensatz,
|
||||
tbl_lehreinheitmitarbeiter.semesterstunden lemss,
|
||||
tbl_lehreinheitmitarbeiter.planstunden,
|
||||
tbl_lehreinheitmitarbeiter.anmerkung as mitarbeiter_anmerkung,
|
||||
tbl_lehreinheit.stundenblockung,
|
||||
tbl_lehreinheit.wochenrythmus,
|
||||
tbl_lehreinheit.raumtyp,
|
||||
tbl_lehreinheit.raumtypalternativ,
|
||||
tbl_lehreinheit.anmerkung,
|
||||
tbl_lehreinheit.anmerkung as lehreinheit_anmerkung,
|
||||
tbl_lehreinheit.studiensemester_kurzbz,
|
||||
tbl_lehreinheit.start_kw,
|
||||
tbl_lehrveranstaltung.ects,
|
||||
tbl_lehrveranstaltung.semesterstunden,
|
||||
tbl_lehrveranstaltung.semesterstunden AS sws,
|
||||
tbl_lehrveranstaltung.lehrform_kurzbz,
|
||||
tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_lehrveranstaltung.orgform_kurzbz,
|
||||
tbl_lehrveranstaltung.sprache,
|
||||
(
|
||||
SELECT nachname
|
||||
FROM PUBLIC.tbl_person
|
||||
@@ -163,6 +170,17 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
|
||||
FROM lehre.tbl_lehrform
|
||||
WHERE lehre.tbl_lehrform.lehrform_kurzbz = tbl_lehrveranstaltung.lehrform_kurzbz LIMIT 1
|
||||
) AS lv_type,
|
||||
(
|
||||
SELECT STRING_AGG(DISTINCT (person.nachname || ' ' || person.vorname), ', ')
|
||||
FROM lehre.tbl_lehrveranstaltung slv
|
||||
JOIN lehre.tbl_lehreinheit sle USING (lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter slema USING (lehreinheit_id)
|
||||
JOIN PUBLIC.tbl_benutzer benutzer ON benutzer.uid = slema.mitarbeiter_uid
|
||||
JOIN PUBLIC.tbl_person person USING (person_id)
|
||||
WHERE lehre.tbl_lehreinheit.lehrveranstaltung_id = sle.lehrveranstaltung_id
|
||||
AND tbl_lehrveranstaltung.lehrform_kurzbz = slv.lehrform_kurzbz
|
||||
AND sle.studiensemester_kurzbz = " . $db->db_add_param($previousStsem) . "
|
||||
) AS vorjahr_lektor,
|
||||
tbl_lehrveranstaltung.lehrform_kurzbz
|
||||
FROM lehre.tbl_lehrveranstaltung
|
||||
JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id)
|
||||
@@ -217,6 +235,10 @@ $worksheet->write($zeile,++$spalte,"LektorIn", $format_bold);
|
||||
$maxlength[$spalte]=6;
|
||||
$worksheet->write($zeile,++$spalte,"Fixangestellt", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
$worksheet->write($zeile,++$spalte,"Vorjahrslektor", $format_bold);
|
||||
$maxlength[$spalte]=12;
|
||||
$worksheet->write($zeile,++$spalte,"Lektor*in bestätigt", $format_bold);
|
||||
$maxlength[$spalte]=12;
|
||||
$worksheet->write($zeile,++$spalte,"Bezeichnung", $format_bold);
|
||||
$maxlength[$spalte]=25;
|
||||
$worksheet->write($zeile,++$spalte,"Semester", $format_bold);
|
||||
@@ -239,8 +261,12 @@ $worksheet->write($zeile,++$spalte,"Raum", $format_bold);
|
||||
$maxlength[$spalte]=4;
|
||||
$worksheet->write($zeile,++$spalte,"Raum alternativ", $format_bold);
|
||||
$maxlength[$spalte]=15;
|
||||
$worksheet->write($zeile,++$spalte,"Anmerkung", $format_bold);
|
||||
$maxlength[$spalte]=9;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Anmerkung für LV Planung", $format_bold);
|
||||
$maxlength[$spalte]=25;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Anmerkung für Dpt/KF", $format_bold);
|
||||
$maxlength[$spalte]=25;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"LV-Leitung", $format_bold);
|
||||
$maxlength[$spalte]=9;
|
||||
@@ -260,6 +286,16 @@ $maxlength[$spalte]=9;
|
||||
$worksheet->write($zeile,++$spalte,"Organisationsform", $format_bold);
|
||||
$maxlength[$spalte]=15;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Sprache (LV)", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Software", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Start in KW", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
@@ -290,6 +326,10 @@ if($result = $db->db_query($qry))
|
||||
if($maxlength[$spalte]<mb_strlen($mitarbeiter->fixangestellt ? 'Ja' : 'Nein'))
|
||||
$maxlength[$spalte]=mb_strlen($mitarbeiter->fixangestellt ? 'Ja' : 'Nein');
|
||||
|
||||
$worksheet->write($zeile,++$spalte, $row->vorjahr_lektor);
|
||||
|
||||
$worksheet->write($zeile,++$spalte, '');
|
||||
|
||||
//Lehrfach
|
||||
$worksheet->write($zeile,++$spalte,$row->lf_bezeichnung);
|
||||
//if($maxlength[$spalte]<mb_strlen($row->lf_bezeichnung))
|
||||
@@ -354,10 +394,12 @@ if($result = $db->db_query($qry))
|
||||
$worksheet->write($zeile,++$spalte,$row->raumtypalternativ);
|
||||
if($maxlength[$spalte]<mb_strlen($row->raumtypalternativ))
|
||||
$maxlength[$spalte]=mb_strlen($row->raumtypalternativ);
|
||||
//Anmerkung
|
||||
$worksheet->write($zeile,++$spalte,$row->anmerkung);
|
||||
//if($maxlength[$spalte]<mb_strlen($row->anmerkung))
|
||||
//$maxlength[$spalte]=mb_strlen($row->anmerkung);
|
||||
|
||||
//Anmerkung für LV Planung
|
||||
$worksheet->write($zeile,++$spalte,$row->lehreinheit_anmerkung);
|
||||
|
||||
//Anmerkung für Dpt/KF
|
||||
$worksheet->write($zeile,++$spalte,$row->mitarbeiter_anmerkung);
|
||||
|
||||
//LV-Leitung
|
||||
$worksheet->write($zeile,++$spalte,$row->lv_leitung.' '.$row->lv_leitung_vorname);
|
||||
@@ -394,6 +436,15 @@ if($result = $db->db_query($qry))
|
||||
$worksheet->write($zeile,++$spalte,$row->orgform_kurzbz);
|
||||
if($maxlength[$spalte]<mb_strlen($row->orgform_kurzbz))
|
||||
$maxlength[$spalte]=mb_strlen($row->orgform_kurzbz);
|
||||
|
||||
//Sprache (LV)
|
||||
$worksheet->write($zeile,++$spalte,$row->sprache);
|
||||
|
||||
//Software
|
||||
$worksheet->write($zeile,++$spalte,'');
|
||||
|
||||
//Start in KW
|
||||
$worksheet->write($zeile,++$spalte,$row->start_kw);
|
||||
}
|
||||
|
||||
//Betreuungen
|
||||
|
||||
@@ -110,10 +110,18 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
|
||||
{
|
||||
$db = new basis_db();
|
||||
|
||||
$studiengang_details = new studiengang();
|
||||
$studiengang_details->load($studiengang_kz);
|
||||
|
||||
if (!isset($studiengang_details->studiengang_kz))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$jahr = substr($studiensemester_kurzbz, 4);
|
||||
$art = substr($studiensemester_kurzbz, 0, 2);
|
||||
|
||||
if($studiengang_kz<0)
|
||||
if (($studiengang_kz < 0) || (isset($studiengang_details->typ) && ($studiengang_details->typ == 'l')))
|
||||
{
|
||||
$studiengang_kz=abs($studiengang_kz);
|
||||
//Lehrgang
|
||||
@@ -136,7 +144,17 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
|
||||
}
|
||||
if($art=='2' || $art=='4')
|
||||
$jahr = $jahr-1;
|
||||
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
|
||||
|
||||
//FH-Burgenland - weil leider die AO Studiengänge aufgeteilt sind
|
||||
//(AO sind normal 9+erhalter Nummer, matrikelnr/personenkz wird auch im DVUH Extension berücksichtigt)
|
||||
if ($studiengang_kz >= 90010 && $studiengang_kz <= 90019)
|
||||
{
|
||||
$matrikelnummer = sprintf("%02d",$jahr).$art.substr($studiengang_kz, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
|
||||
}
|
||||
|
||||
$qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '$matrikelnummer%' ORDER BY matrikelnr DESC LIMIT 1";
|
||||
|
||||
@@ -631,11 +649,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"/>
|
||||
|
||||
@@ -1153,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;
|
||||
@@ -1190,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');
|
||||
@@ -1705,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');
|
||||
@@ -1783,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))
|
||||
{
|
||||
@@ -1828,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();
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -510,6 +510,7 @@ class statistik extends basis_db
|
||||
$this->html='';
|
||||
$this->csv='';
|
||||
$this->json=array();
|
||||
set_time_limit(60);
|
||||
|
||||
if($this->sql!='')
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
@@ -488,7 +500,8 @@ class studiengang extends basis_db
|
||||
$qry = 'INSERT INTO public.tbl_studiengang (studiengang_kz, kurzbz, kurzbzlang, bezeichnung, english,
|
||||
typ, farbe, email, telefon, max_verband, max_semester, max_gruppe, erhalter_kz, bescheid, bescheidbgbl1,
|
||||
bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, aktiv, onlinebewerbung, orgform_kurzbz, zusatzinfo_html,
|
||||
oe_kurzbz, moodle, sprache, testtool_sprachwahl, studienplaetze, lgartcode, mischform,projektarbeit_note_anzeige) VALUES ('.
|
||||
oe_kurzbz, moodle, sprache, testtool_sprachwahl, studienplaetze, lgartcode, mischform,projektarbeit_note_anzeige,
|
||||
melderelevant, foerderrelevant, standort_code) VALUES ('.
|
||||
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->kurzbz).', '.
|
||||
$this->db_add_param($this->kurzbzlang).', '.
|
||||
@@ -519,7 +532,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 +572,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 +698,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 +841,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 +916,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 +1021,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;
|
||||
@@ -1073,7 +1104,7 @@ class studiengang extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laedt die Studiengänge die vom übergeben Typ sind
|
||||
* @param string $typ
|
||||
@@ -1088,13 +1119,13 @@ class studiengang extends basis_db
|
||||
tbl_studiengang.typ=".$this->db_add_param($typ)."
|
||||
ORDER BY
|
||||
kurzbz";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new studiengang();
|
||||
|
||||
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->kurzbz = $row->kurzbz;
|
||||
$obj->kurzbzlang = $row->kurzbzlang;
|
||||
@@ -1127,10 +1158,13 @@ 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;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -190,6 +190,7 @@ $menu=array
|
||||
'StudienplanZuteilung'=>array('name'=>'Studienplan Zuteilung', 'link'=>'lehre/studienplan_zuteilung.php', 'target'=>'main','permissions'=>array('assistenz')),
|
||||
'lv_merge'=>array('name'=>'LVs zusammenlegen', 'link'=>'lehre/lv_merge.php', 'target'=>'main','permissions'=>array('lehre/lehrveranstaltung')),
|
||||
'akteupdate'=>array('name'=>'Akten überschreiben', 'link'=>'personen/akteupdate.php', 'target'=>'main','permissions'=>array('admin')),
|
||||
'gemeindeupdate'=>array('name'=>'Gemeinden aktualisieren', 'link'=>'stammdaten/set_gemeinde.php', 'target'=>'main','permissions'=>array('basis/gemeinde')),
|
||||
),
|
||||
'Auswertung'=> array
|
||||
(
|
||||
|
||||
+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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
@@ -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();
|
||||
|
||||
});
|
||||
@@ -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>
|
||||
@@ -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>";
|
||||
|
||||
+183
-62
@@ -355,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 **************************
|
||||
@@ -766,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);
|
||||
@@ -823,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -917,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))
|
||||
{
|
||||
|
||||
+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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+475
-3
@@ -4955,6 +4955,20 @@ if(!@$db->db_query("SELECT statusgrund_kurzbz FROM public.tbl_status_grund LIMIT
|
||||
echo '<br>Neue Spalte statusgrund_kurzbz zu Tabelle public.tbl_status_grund hinzugefügt';
|
||||
}
|
||||
|
||||
// Add permission to set gemeinde
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'basis/gemeinde';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('basis/gemeinde', 'Gemeindedaten pflegen');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>bis.tbl_bisverwendung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' system.tbl_berechtigung: Added permission for basis/gemeinde<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add column homeoffice to bis.tbl_bisverwendung
|
||||
if (!$result = @$db->db_query("SELECT homeoffice FROM bis.tbl_bisverwendung LIMIT 1"))
|
||||
{
|
||||
@@ -5028,6 +5042,457 @@ if(!@$db->db_query("SELECT lehrmodus_kurzbz FROM lehre.tbl_lehrveranstaltung LIM
|
||||
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>';
|
||||
|
||||
@@ -5045,6 +5510,7 @@ $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_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"),
|
||||
@@ -5059,6 +5525,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"),
|
||||
@@ -5228,7 +5695,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"),
|
||||
@@ -5240,7 +5707,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"),
|
||||
@@ -5257,7 +5724,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"),
|
||||
@@ -5288,6 +5755,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"),
|
||||
|
||||
@@ -856,6 +856,101 @@ $filters = array(
|
||||
}
|
||||
',
|
||||
'oe_kurzbz' => null,
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'dataset_name' => 'issues',
|
||||
'filter_kurzbz' => 'offeneFehler',
|
||||
'description' => '{Alle offenen}',
|
||||
'sort' => 1,
|
||||
'default_filter' => true,
|
||||
'filter' => '
|
||||
{
|
||||
"name": "Alle offenen Fehler",
|
||||
"columns": [
|
||||
{"name": "Datum"},
|
||||
{"name": "Inhalt"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "PersonId"},
|
||||
{"name": "Fehlerstatus"}
|
||||
],
|
||||
"filters": [
|
||||
{
|
||||
"name": "Fehlerstatus",
|
||||
"operation": "ncontains",
|
||||
"condition": "behoben"
|
||||
}
|
||||
]
|
||||
}
|
||||
',
|
||||
'oe_kurzbz' => null,
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'dataset_name' => 'issues',
|
||||
'filter_kurzbz' => 'FehlerLetze7Tage',
|
||||
'description' => '{Letzten 7 Tage}',
|
||||
'sort' => 2,
|
||||
'default_filter' => false,
|
||||
'filter' => '
|
||||
{
|
||||
"name": "Alle in den letzten 7 Tagen aufgetretenen Fehler",
|
||||
"columns": [
|
||||
{"name": "Datum"},
|
||||
{"name": "Inhalt"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "PersonId"},
|
||||
{"name": "Fehlerstatus"}
|
||||
],
|
||||
"filters": [
|
||||
{
|
||||
"name": "Datum",
|
||||
"operation": "lt",
|
||||
"condition": "7",
|
||||
"option": "days"
|
||||
}
|
||||
]
|
||||
}
|
||||
',
|
||||
'oe_kurzbz' => null,
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'dataset_name' => 'issues',
|
||||
'filter_kurzbz' => 'FehlerLetzte7TageBearbeitet',
|
||||
'description' => '{Letzten 7 Tage bearbeitet}',
|
||||
'sort' => 3,
|
||||
'default_filter' => false,
|
||||
'filter' => '
|
||||
{
|
||||
"name": "Alle in den letzten 7 Tagen bearbeiteten Fehler",
|
||||
"columns": [
|
||||
{"name": "Datum"},
|
||||
{"name": "Inhalt"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "PersonId"},
|
||||
{"name": "Fehlerstatus"},
|
||||
{"name": "Verarbeitet von"}
|
||||
],
|
||||
"filters": [
|
||||
{
|
||||
"name": "Verarbeitet am",
|
||||
"operation": "lt",
|
||||
"condition": "7",
|
||||
"option": "days"
|
||||
},
|
||||
{
|
||||
"name": "Fehlerstatus",
|
||||
"operation": "contains",
|
||||
"condition": "behoben"
|
||||
}
|
||||
]
|
||||
}
|
||||
',
|
||||
'oe_kurzbz' => null,
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@@ -12492,6 +12492,326 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => '3gNachweis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zertifikat hochladen",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "upload certificate",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'QrViaWebcam',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "QR-Code via Webcam scannen",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "scan qr code via webcam",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'oder',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "oder",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "or",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ZertifikatAlsPdfHochladen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zertifikat als PDF hochladen (nur mit QR-Code, kein gescanntes Zertifikat)",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "upload certificate pdf (only with qrcode, no scanned certificate)",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ValidierungsergebnisAktuellesGueltigkeitsdatum',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Validierungsergebnis / gespeichertes Gültigkeitsdatum",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "validation result / stored valid date",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'DateiZiehenUndAblegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Datei hier hinziehen und ablegen",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "drag & drop file here",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'KeinZugriffWebcam',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zugriff auf die Webcam nicht möglich!",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "webcam access denied",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'gueltigBis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "gültig bis",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "valid to",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ZertifikatUngueltig',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zertifikat ungültig",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "certificate invalid",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ZertifikatKonnteNichtGeprueftWerden',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Das Zertifikat konnte nicht verifiziert werden.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "certificate could not be verified.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'Laedt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Lädt",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "loading",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => '3G',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Covid19 Gültigkeitsdatum",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "covid19 valid date",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'FehlerBeimSpeichernDesGueltigkeitsdatums',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Fehler beim Speichern des Gültigkeitsdatum",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "error saving valid date",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'PersondatenInFH-CompleteStimmenNichtMitDemZertifikatUeberein',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Personendaten aus dem Zertifikat stimmen nicht dem angemeldeten Benutzer überein",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "person data from certificate does not match the logged in user",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'UploadSuccessful',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Das Gültigkeitsdatum wurde erfolgreich gespeichert.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "validity date has been successfully stored.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'UploadFailed',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Es wurde kein Gültigkeitsdatum gespeichert.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "validity date has not been stored.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
@@ -236,7 +236,9 @@ if (! $funktion->load ( $kurzbz )) {
|
||||
<link rel="stylesheet" href="../../skin/jquery-ui-1.9.2.custom.min.css" type="text/css">
|
||||
|
||||
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<?php
|
||||
include("../../include/meta/jquery-tablesorter.php");
|
||||
?>
|
||||
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
@@ -265,8 +267,8 @@ if (! $funktion->load ( $kurzbz )) {
|
||||
});
|
||||
$("#t1").tablesorter({
|
||||
sortList: [[0,0]],
|
||||
widgets: ["zebra"],
|
||||
headers: {9:{sorter:false},10:{sorter:false}}
|
||||
widgets: ["zebra", "filter", "stickyHeaders"],
|
||||
headers: {9:{sorter:false, filter: false},10:{sorter:false, filter: false}}
|
||||
});
|
||||
$('#t1').checkboxes('range', true);
|
||||
$( ".datepicker_datumvon" ).datepicker({
|
||||
|
||||
@@ -720,6 +720,10 @@ if (isset($_POST['save']))
|
||||
$prestudent->reihungstestangetreten = false;
|
||||
$prestudent->bismelden = true;
|
||||
|
||||
// Incomings und ausserordentliche sind bei Meldung nicht förderrelevant
|
||||
if ($incoming === true || substr($studiengang_kz, 0, 1) == '9')
|
||||
$prestudent->foerderrelevant = false;
|
||||
|
||||
//Wenn die Person schon im System erfasst ist, dann die ZGV des Datensatzes uebernehmen
|
||||
$qry_zgv = "
|
||||
SELECT
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
/* Copyright (C) 2021 FH-Burgenland
|
||||
*
|
||||
* 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: mlehrner
|
||||
*/
|
||||
|
||||
/*
|
||||
Dieses Admin-Skript speichert alle Gemeinden in die DB. (Es gibt derzeit keinen Foreign Key auf diese Tabelle dadurch könnte die Tabelle einfach gelöscht und neu befüllt werden)
|
||||
Zuerst von https://www.bis.ac.at/BISSuite die Excel Datei herunter laden und zu einen csv konvertieren.
|
||||
Die unnötigen Zeilen über der Head Zeile entfernen
|
||||
Die Tabelle bis.tbl_gemeinde löschen. -> delete from bis.tbl_gemeinde;
|
||||
Skript aufrufen, csv auswählen und hochladen.
|
||||
Datei wird eingelesen und in die DB gespeichert.
|
||||
*/
|
||||
require_once('../../config/system.config.inc.php');
|
||||
require_once(dirname(__FILE__).'/../../include/functions.inc.php');
|
||||
require_once(dirname(__FILE__).'/../../include/benutzerberechtigung.class.php');
|
||||
require_once(dirname(__FILE__).'/../../include/gemeinde.class.php');
|
||||
require_once(dirname(__FILE__).'/../../include/benutzerberechtigung.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
if (!$rechte->isBerechtigt('basis/gemeinde'))
|
||||
{
|
||||
die('Sie haben keine Berechtigung fuer diese Seite');
|
||||
}
|
||||
|
||||
$tmp_gemeinde_ar = array();
|
||||
|
||||
if (isset($_FILES['parsefile']) && $_FILES['parsefile']['error'] == 0)
|
||||
{
|
||||
|
||||
$rows = array_map('str_getcsv', file( $_FILES['parsefile']['tmp_name'] ));
|
||||
$header = array_shift($rows);
|
||||
$data = array();
|
||||
foreach ($rows as $row)
|
||||
{
|
||||
$data[] = array_combine($header, $row);
|
||||
}
|
||||
|
||||
foreach ($data as $gemeinde_details)
|
||||
{
|
||||
|
||||
//Wenn nicht gültig dann überspringen
|
||||
if ($gemeinde_details['Gültig'] == 'Nein') continue;
|
||||
|
||||
//es können mehrere plz in einer zeile stehen
|
||||
$plzs = explode(' ', trim($gemeinde_details['PLZ']));
|
||||
|
||||
foreach ($plzs as $plz)
|
||||
{
|
||||
$tmp_obj_gemeinde = null;
|
||||
$tmp_obj_gemeinde = new gemeinde();
|
||||
$tmp_obj_gemeinde->plz = $plz;
|
||||
$tmp_obj_gemeinde->name = $gemeinde_details['Gemeindename'];
|
||||
$tmp_obj_gemeinde->ortschaftskennziffer = $gemeinde_details['Ortschaftskennziffer'];
|
||||
$tmp_obj_gemeinde->ortschaftsname = $gemeinde_details['Ortschaftsname'];
|
||||
$tmp_obj_gemeinde->bulacode = $gemeinde_details['BULA_Code'];
|
||||
$tmp_obj_gemeinde->bulabez = $gemeinde_details['BULA_Bez'];
|
||||
$tmp_obj_gemeinde->kennziffer = $gemeinde_details['Gemeindekennziffer'];
|
||||
|
||||
$tmp_obj_gemeinde->save();
|
||||
$tmp_gemeinde_ar[] = $tmp_obj_gemeinde;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Set Gemeinde</title>
|
||||
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h2>Gemeinden aktualisieren</h2>
|
||||
Diese Seite dient dazu die Gemeinde Kodex Tabelle zu aktualisieren.<br /><br />
|
||||
Die Gemeinde Tabelle muss zuvor manuell geleert werden<br />
|
||||
<b>Filesyntax:</b>(Standard xlsx-File von https://www.bis.ac.at/BISSuite, gespeichert als csv! erste Zeile ist Header (alles was oberhalb ist kann entfernt werden) -> dann Daten)
|
||||
<br/><br/>
|
||||
<table border="1">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Gemeindekennziffer</td>
|
||||
<td>Gemeindename</td>
|
||||
<td>Ortschaftskennziffer</td>
|
||||
<td>Ortschaftsname</td>
|
||||
<td>PLZ</td>
|
||||
<td>BULA_Code</td>
|
||||
<td>BULA_Bez</td>
|
||||
<td>Gültig</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>10101</td>
|
||||
<td>Eisenstadt</td>
|
||||
<td>1</td>
|
||||
<td>Eisenstadt</td>
|
||||
<td>7000</td>
|
||||
<td>1</td>
|
||||
<td>BGLD</td>
|
||||
<td>Ja</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>10101</td>
|
||||
<td>Eisenstadt</td>
|
||||
<td>2</td>
|
||||
<td>Kleinhöflein im Burgenland</td>
|
||||
<td>7000 7001 7002</td>
|
||||
<td>1</td>
|
||||
<td>BGLD</td>
|
||||
<td>Ja</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr>
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
<br>PLZ Kodextabelle <input name="parsefile" type="file" />
|
||||
<input type="submit" value="hochladen" />
|
||||
</form>
|
||||
<hr>
|
||||
<div>
|
||||
<pre>
|
||||
<?php
|
||||
if ($tmp_gemeinde_ar)
|
||||
{
|
||||
print_r($tmp_gemeinde_ar);
|
||||
}
|
||||
?>
|
||||
</pre>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -89,6 +89,9 @@ $testtool_sprachwahl = false;
|
||||
$studienplaetze = '';
|
||||
$orgform_kurzbz = '';
|
||||
$lgartcode='';
|
||||
$melderelevant = false;
|
||||
$foerderrelevant = false;
|
||||
$standort_code='';
|
||||
$schick = filter_input(INPUT_POST, 'schick');
|
||||
$onlinebewerbung = false;
|
||||
|
||||
@@ -149,6 +152,9 @@ if($schick)
|
||||
$aktiv = filter_input(INPUT_POST, 'aktiv', FILTER_VALIDATE_BOOLEAN);
|
||||
$onlinebewerbung = filter_input(INPUT_POST, 'onlinebewerbung', FILTER_VALIDATE_BOOLEAN);
|
||||
$mischform = filter_input(INPUT_POST, 'mischform', FILTER_VALIDATE_BOOLEAN);
|
||||
$melderelevant = filter_input(INPUT_POST, 'melderelevant', FILTER_VALIDATE_BOOLEAN);
|
||||
$foerderrelevant = filter_input(INPUT_POST, 'foerderrelevant', FILTER_VALIDATE_BOOLEAN);
|
||||
$standort_code = filter_input(INPUT_POST, 'standort_code');
|
||||
|
||||
$ext_id = filter_input(INPUT_POST, 'ext_id');
|
||||
|
||||
@@ -214,6 +220,9 @@ if($schick)
|
||||
$sg_update->studienplaetze = $studienplaetze;
|
||||
$sg_update->orgform_kurzbz = $orgform_kurzbz;
|
||||
$sg_update->lgartcode = $lgartcode;
|
||||
$sg_update->melderelevant = $melderelevant;
|
||||
$sg_update->foerderrelevant = $foerderrelevant;
|
||||
$sg_update->standort_code = $standort_code;
|
||||
|
||||
$sg_update->bescheidvom=$date->formatDatum($sg_update->bescheidvom,'Y-m-d');
|
||||
$sg_update->titelbescheidvom=$date->formatDatum($sg_update->titelbescheidvom,'Y-m-d');
|
||||
@@ -280,6 +289,9 @@ if ((isset($_REQUEST['studiengang_kz'])) && ((!isset($_REQUEST['neu'])) || ($_RE
|
||||
$studienplaetze = $sg->studienplaetze;
|
||||
$orgform_kurzbz = $sg->orgform_kurzbz;
|
||||
$lgartcode = $sg->lgartcode;
|
||||
$melderelevant = $sg->melderelevant;
|
||||
$foerderrelevant = $sg->foerderrelevant;
|
||||
$standort_code = $sg->standort_code;
|
||||
}
|
||||
|
||||
$erh = new erhalter();
|
||||
@@ -555,6 +567,46 @@ if (!$erh->getAll('kurzbz'))
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Standort</td>
|
||||
<td>
|
||||
<select name="standort_code" onchange="submitable()">
|
||||
<option value="">-- keine Auswahl --</option>
|
||||
<?php
|
||||
$qry = 'SELECT standort_code, bezeichnung '
|
||||
. 'FROM bis.tbl_bisstandort '
|
||||
. 'WHERE aktiv '
|
||||
. 'ORDER BY bezeichnung';
|
||||
|
||||
if($result = $db->db_query($qry)):
|
||||
while($row = $db->db_fetch_object($result)):
|
||||
if($row->standort_code == $standort_code)
|
||||
$selected = 'selected';
|
||||
else
|
||||
$selected = ''; ?>
|
||||
|
||||
<option value="<?php echo $row->standort_code ?>" <?php echo $selected ?>>
|
||||
<?php echo $row->bezeichnung ?> - <?php echo $row->standort_code ?>
|
||||
</option>
|
||||
<?php endwhile; ?>
|
||||
<?php endif; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">Melderelevant</td>
|
||||
<td>
|
||||
<input type="hidden" name="melderelevant" value="0">
|
||||
<input type="checkbox" name="melderelevant" <?php echo $melderelevant ? 'checked' : '' ?> onchange="submitable()">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">Förderrelevant</td>
|
||||
<td>
|
||||
<input type="hidden" name="foerderrelevant" value="0">
|
||||
<input type="checkbox" name="foerderrelevant" <?php echo $foerderrelevant ? 'checked' : '' ?> onchange="submitable()">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td valign="top">
|
||||
|
||||
@@ -60,7 +60,8 @@ if (!$filter->loadAll())
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[2,0]],
|
||||
widgets: ["zebra"]
|
||||
widgets: ["zebra", "filter", "stickyHeaders"],
|
||||
headers: {8: {sorter: false, filter: false}}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user