mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Merge branch 'master' of https://github.com/FH-Complete/FHC-Core
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
$config['frist_rueckzahlung_studiengebuer_WS'] = '15.10.';
|
||||
$config['frist_rueckzahlung_studiengebuer_SS'] = '15.03.';
|
||||
|
||||
// TODO(chris): review this!
|
||||
#$config['unterbrechung_dms'] = ['oe_kurzbz' => null, 'dokument_kurzbz' => null, 'kategorie_kurzbz' => null];
|
||||
$config['unterbrechung_dms'] = ['oe_kurzbz' => null, 'dokument_kurzbz' => null, 'kategorie_kurzbz' => 'Akte'];
|
||||
|
||||
/**
|
||||
* UPLOAD
|
||||
*/
|
||||
|
||||
/**
|
||||
* Allowed filetypes for attachment upload in unterbrechung antrag
|
||||
*
|
||||
* @var array An array of fileextensions
|
||||
*/
|
||||
$config['unterbrechung_dms_filetypes'] = ['jpg', 'pdf'];
|
||||
|
||||
|
||||
/**
|
||||
* GRADES
|
||||
*/
|
||||
|
||||
/**
|
||||
* On wiederholung the student must repeat certain lvs.
|
||||
* This lvs will be graded with this id
|
||||
*
|
||||
* @var integer tbl_note.note
|
||||
*/
|
||||
$config['wiederholung_note_angerechnet'] = 19;
|
||||
|
||||
/**
|
||||
* On wiederholung the student can not attend certain lvs.
|
||||
* Those lvs will be graded with this id
|
||||
*
|
||||
* @var integer tbl_note.note
|
||||
*/
|
||||
$config['wiederholung_note_nicht_zugelassen'] = 20;
|
||||
|
||||
|
||||
/**
|
||||
* JOBS
|
||||
*/
|
||||
|
||||
/**
|
||||
* The Job will remind for every Unterbrecher who has a
|
||||
* wiedereinstieg_datum between the date the Job is run
|
||||
* and the modified date
|
||||
* e.g.: If the Job is running on 2023-04-20 and the modifier
|
||||
* is '+3 days' it will remind of everyone that
|
||||
* has a wiedereinstiegs_datum between 2023-04-20 and 2023-04-23
|
||||
*
|
||||
* @var string A string formated as PHP DateTime modifier
|
||||
* @see https://www.php.net/manual/de/datetime.modify.php
|
||||
*/
|
||||
$config['unterbrechung_job_remind_wiedereinstieg_date_modifier'] = '+3 days';
|
||||
|
||||
/**
|
||||
* The Job will sent a request to everyone who faild the 3rd committee exam
|
||||
* and respecting the given conditions (not repeated yet, stg not in blacklist)
|
||||
* to decide if he/she will repeat or not
|
||||
*
|
||||
* First request
|
||||
*
|
||||
* @var string A string formated as PHP DateTime modifier
|
||||
* @see https://www.php.net/manual/de/datetime.modify.php
|
||||
*/
|
||||
$config['wiederholung_job_request_1_date_modifier'] = '+0 days';
|
||||
|
||||
/**
|
||||
* Second request
|
||||
*
|
||||
* @var string A string formated as PHP DateTime modifier
|
||||
* @see https://www.php.net/manual/de/datetime.modify.php
|
||||
*/
|
||||
$config['wiederholung_job_request_2_date_modifier'] = '+3 weeks';
|
||||
|
||||
/**
|
||||
* Final deadline - after this the student will be abgemeldet if he hasn't chosen yet
|
||||
*
|
||||
* @var string A string formated as PHP DateTime modifier
|
||||
* @see https://www.php.net/manual/de/datetime.modify.php
|
||||
*/
|
||||
$config['wiederholung_job_deadline_date_modifier'] = '+1 month';
|
||||
|
||||
/**
|
||||
* before this exam dates for Wiederholer will be ignored
|
||||
*
|
||||
* @var string A string formated as Date
|
||||
*
|
||||
*/
|
||||
$config['digitalization_start'] = '2022-07-01';
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Objection period - the student will be abgemeldet if he hasn't objected in this period
|
||||
*
|
||||
* @var string A string formated as PHP DateTime modifier
|
||||
* @see https://www.php.net/manual/de/datetime.modify.php
|
||||
*/
|
||||
$config['abmeldung_job_deadline_date_modifier'] = '+2 weeks';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* System User - uid of a user that is allowed to set prestudentstatus
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
$config['antrag_job_systemuser'] = '';
|
||||
|
||||
|
||||
/**
|
||||
* WHITELISTS
|
||||
*/
|
||||
|
||||
/**
|
||||
* List of stati who entitle a prestudent to create an Antrag
|
||||
*
|
||||
* @var array Array of tbl_status.status_kurzbz's
|
||||
*/
|
||||
$config['antrag_prestudentstatus_whitelist'] = ['Student', 'Diplomand'];
|
||||
|
||||
|
||||
/**
|
||||
* BLACKLISTS
|
||||
*/
|
||||
|
||||
/**
|
||||
* List of Statusgründe that prevent a prestudent from create an Wiederholungsantrag
|
||||
*
|
||||
* @var array An array of tbl_status_grund.statusgrund_id's
|
||||
*/
|
||||
$config['status_gruende_wiederholer'] = [16, 15];
|
||||
|
||||
/**
|
||||
* Blacklisted for abmeldung anträge
|
||||
*
|
||||
* @var array An array of tbl_studiengang.studiengang_kz's
|
||||
*/
|
||||
$config['stgkz_blacklist_abmeldung'] = [];
|
||||
|
||||
/**
|
||||
* Blacklisted for unterbrechung anträge
|
||||
*
|
||||
* @var array An array of tbl_studiengang.studiengang_kz's
|
||||
*/
|
||||
$config['stgkz_blacklist_unterbrechung'] = [];
|
||||
|
||||
/**
|
||||
* Blacklisted for wiederholung anträge
|
||||
*
|
||||
* @var array An array of tbl_studiengang.studiengang_kz's
|
||||
*/
|
||||
$config['stgkz_blacklist_wiederholung'] = [];
|
||||
@@ -0,0 +1,438 @@
|
||||
<?php
|
||||
|
||||
if (! defined("BASEPATH")) exit("No direct script access allowed");
|
||||
|
||||
class UHSTAT1 extends FHC_Controller
|
||||
{
|
||||
const BERECHTIGUNG_UHSTAT_VERWALTEN = 'student/uhstat1daten_verwalten';
|
||||
const PERSON_ID_SESSION_INDEX = 'bewerbung/personId';
|
||||
const CODEX_OESTERREICH = 'A';
|
||||
const LOWER_BOUNDARY_YEARS = 160;
|
||||
const UPPER_BOUNDARY_YEARS = 20;
|
||||
|
||||
private $_uid;
|
||||
private $_uhstat1Fields = array();
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// load ci libs
|
||||
$this->load->library('form_validation');
|
||||
|
||||
// load ci helpers
|
||||
$this->load->helper(array('form', 'url'));
|
||||
|
||||
// load libraries
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('PermissionLib');
|
||||
|
||||
// load models
|
||||
$this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('system/Sprache_model', 'SpracheModel');
|
||||
$this->load->model('codex/Abschluss_model', 'AbschlussModel');
|
||||
$this->load->model('codex/Uhstat1daten_model', 'Uhstat1datenModel');
|
||||
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'ui',
|
||||
'uhstat'
|
||||
)
|
||||
);
|
||||
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
// set form field information
|
||||
$this->_uhstat1Fields = array(
|
||||
'mutter_geburtsstaat' => array('name' => 'Geburtsstaat Mutter'),
|
||||
'mutter_geburtsjahr' => array('name' => 'Geburtsjahr Mutter'),
|
||||
'mutter_bildungsstaat' => array('name' => 'Bildungsstaat Mutter'),
|
||||
'mutter_bildungmax' => array(
|
||||
'name' => 'Geburtsjahr Mutter',
|
||||
'rules' => array(
|
||||
'callback_bildungsstaat_bildungmax_check[m]' => array(
|
||||
'bildungsstaat_bildungmax_check' => $this->p->t('uhstat', 'ausbildungBildungsstaatUebereinstimmung')
|
||||
)
|
||||
)
|
||||
),
|
||||
'vater_geburtsstaat' => array('name' => 'Geburtsstaat Vater'),
|
||||
'vater_geburtsjahr' => array('name' => 'Geburtsjahr Vater'),
|
||||
'vater_bildungsstaat' => array('name' => 'Bildungsstaat Vater'),
|
||||
'vater_bildungmax' => array('name' => 'Geburtsjahr Vater'),
|
||||
'vater_bildungmax' => array(
|
||||
'name' => 'Geburtsjahr Vater',
|
||||
'rules' => array(
|
||||
'callback_bildungsstaat_bildungmax_check[v]' => array(
|
||||
'bildungsstaat_bildungmax_check' => $this->p->t('uhstat', 'ausbildungBildungsstaatUebereinstimmung')
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
public function index()
|
||||
{
|
||||
$formMetaData = $this->_getFormMetaData();
|
||||
|
||||
if (isError($formMetaData)) show_error(getError($formMetaData));
|
||||
|
||||
if (!hasData($formMetaData)) show_error("No form meta data could be loaded");
|
||||
|
||||
$uhstatData = $this->_getUHSTAT1Data();
|
||||
|
||||
if (isError($uhstatData)) show_error(getError($uhstatData));
|
||||
|
||||
$this->load->view("codex/uhstat1.php", array(
|
||||
'formMetaData' => getData($formMetaData),
|
||||
'uhstatData' => getData($uhstatData)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add or update UHSTAT1 data
|
||||
*/
|
||||
public function saveUHSTAT1Data()
|
||||
{
|
||||
$saved = false;
|
||||
|
||||
$person_id = $this->_getValidPersonId('sui');
|
||||
|
||||
$this->form_validation->set_error_delimiters('<span class="text-danger">', '</span>');
|
||||
|
||||
foreach ($this->_uhstat1Fields as $field => $params)
|
||||
{
|
||||
// all fields are required
|
||||
$ruleNames = 'required';
|
||||
$ruleMessages = array('required' => $this->p->t('uhstat', 'angabeFehlt'));
|
||||
|
||||
// add additional rules
|
||||
if (isset($params['rules']))
|
||||
{
|
||||
foreach ($params['rules'] as $ruleName => $ruleMessage)
|
||||
{
|
||||
$ruleNames .= '|'.$ruleName;
|
||||
$ruleMessages = array_merge($ruleMessages, $ruleMessage);
|
||||
}
|
||||
}
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
$field,
|
||||
$params['name'],
|
||||
$ruleNames,
|
||||
$ruleMessages
|
||||
);
|
||||
}
|
||||
|
||||
$uhstat1datenRes = null;
|
||||
if ($this->form_validation->run()) // if valid
|
||||
{
|
||||
// get post fields
|
||||
$uhstatData = array();
|
||||
foreach ($this->_uhstat1Fields as $field => $params)
|
||||
{
|
||||
$uhstatData[$field] = $this->input->post($field);
|
||||
}
|
||||
|
||||
// check if entry already exists
|
||||
$uhstat1datenloadRes = $this->Uhstat1datenModel->loadWhere(array('person_id' => $person_id));
|
||||
|
||||
// if yes, update
|
||||
if (hasData($uhstat1datenloadRes))
|
||||
{
|
||||
$uhstatData['updateamum'] = 'NOW()';
|
||||
$uhstatData['updatevon'] = $this->_uid;
|
||||
$uhstat1datenRes = $this->Uhstat1datenModel->update(
|
||||
array('person_id' => $person_id),
|
||||
$uhstatData
|
||||
);
|
||||
}
|
||||
else // otherwise insert
|
||||
{
|
||||
$uhstatData['insertamum'] = 'NOW()';
|
||||
$uhstatData['insertvon'] = $this->_uid;
|
||||
$uhstat1datenRes = $this->Uhstat1datenModel->insert(
|
||||
array_merge($uhstatData, array('person_id' => $person_id))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$formMetaData = $this->_getFormMetaData();
|
||||
|
||||
if (isError($formMetaData)) show_error(getError($formMetaData));
|
||||
|
||||
if (!hasData($formMetaData)) show_error("No form meta data could be loaded");
|
||||
|
||||
$successMessage = '';
|
||||
$errorMessage = '';
|
||||
// pass success/error messages to view
|
||||
if (isset($uhstat1datenRes))
|
||||
{
|
||||
if (isSuccess($uhstat1datenRes))
|
||||
{
|
||||
$successMessage = $this->p->t('uhstat', 'erfolgreichGespeichert');
|
||||
$saved = true;
|
||||
}
|
||||
else
|
||||
$errorMessage = $this->p->t('uhstat', 'fehlerBeimSpeichern');
|
||||
}
|
||||
|
||||
// load view with form data
|
||||
$this->load->view("codex/uhstat1.php", array(
|
||||
'formMetaData' => getData($formMetaData),
|
||||
'saved' => $saved,
|
||||
'successMessage' => $successMessage,
|
||||
'errorMessage' => $errorMessage
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check callback for Bildungsstaat - if Bildungsstaat is Austria, a highest education should be in Austria.
|
||||
* @param $bildungmax
|
||||
* @param $bildungsstaat_typ - mother (m) or father (v)
|
||||
* @return bool true if valid, false otherwise
|
||||
*/
|
||||
public function bildungsstaat_bildungmax_check($bildungmax, $bildungsstaat_typ)
|
||||
{
|
||||
// valid if no type passed
|
||||
if (!isset($bildungsstaat_typ) || !isset($bildungmax)) return true;
|
||||
|
||||
// get correct input
|
||||
if ($bildungsstaat_typ == 'm') // mutter
|
||||
$bildungsstaat = $this->input->post('mutter_bildungsstaat');
|
||||
elseif ($bildungsstaat_typ == 'v') // vater
|
||||
$bildungsstaat = $this->input->post('vater_bildungsstaat');
|
||||
else
|
||||
return true;
|
||||
|
||||
if (!isset($bildungsstaat)) return true;
|
||||
|
||||
// find out if abschluss is in Austria
|
||||
$this->AbschlussModel->addSelect("in_oesterreich");
|
||||
$abschlussRes = $this->AbschlussModel->load($bildungmax);
|
||||
|
||||
if (hasData($abschlussRes))
|
||||
{
|
||||
$in_oesterreich = getData($abschlussRes)[0]->in_oesterreich;
|
||||
// invalid if abschluss in Austria, but not Bildungsstaat, or abschluss not in Austria, but Bildungsstaat in Austria
|
||||
return ($in_oesterreich && $bildungsstaat == self::CODEX_OESTERREICH) || (!$in_oesterreich && $bildungsstaat != self::CODEX_OESTERREICH);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes UHSTAT1 entry.
|
||||
*/
|
||||
public function deleteUHSTAT1Data()
|
||||
{
|
||||
$saved = false;
|
||||
|
||||
// uhstat data can only be deleted with permission
|
||||
if (!$this->_checkPermission('suid')) show_error('no permission');
|
||||
|
||||
$person_id = $this->_getValidPersonId('suid');
|
||||
|
||||
$uhstat1datenRes = $this->Uhstat1datenModel->delete(
|
||||
array('person_id' => $person_id)
|
||||
);
|
||||
|
||||
$formMetaData = $this->_getFormMetaData();
|
||||
|
||||
if (isError($formMetaData)) show_error(getError($formMetaData));
|
||||
|
||||
if (!hasData($formMetaData)) show_error("No form meta data could be loaded");
|
||||
|
||||
$successMessage = '';
|
||||
$errorMessage = '';
|
||||
// pass success/error messages to view
|
||||
if (isset($uhstat1datenRes))
|
||||
{
|
||||
if (isSuccess($uhstat1datenRes))
|
||||
{
|
||||
$successMessage = $this->p->t('uhstat', 'erfolgreichGeloescht');
|
||||
}
|
||||
else
|
||||
$errorMessage = $this->p->t('uhstat', 'fehlerBeimLoeschen');
|
||||
}
|
||||
|
||||
// load view with form data
|
||||
$this->load->view("codex/uhstat1.php", array(
|
||||
'formMetaData' => getData($formMetaData),
|
||||
'successMessage' => $successMessage,
|
||||
'errorMessage' => $errorMessage
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Gets initial data needed to display UHSTAT1 form.
|
||||
*/
|
||||
private function _getFormMetaData()
|
||||
{
|
||||
$person_id = $this->_getValidPersonId('s');
|
||||
|
||||
// read only display param
|
||||
$readOnly = $this->input->get('readOnly');
|
||||
|
||||
// depending on permissions, editing or deleting is possible
|
||||
$editPermission = $this->_checkPermission('sui');
|
||||
$deletePermission = $this->_checkPermission('suid');
|
||||
|
||||
$languageIdx = $this->_getLanguageIndex();
|
||||
|
||||
$formMetaData = array(
|
||||
'nation' => array(),
|
||||
'abschluss_oesterreich' => array(),
|
||||
'abschluss_nicht_oesterreich' => array(),
|
||||
'jahre' => array(),
|
||||
'person_id' => $person_id,
|
||||
'editPermission' => $editPermission,
|
||||
'deletePermission' => $deletePermission,
|
||||
'readOnly' => $readOnly
|
||||
);
|
||||
|
||||
// get person data
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
$this->PersonModel->addSelect("vorname, nachname");
|
||||
$personRes = $this->PersonModel->load($person_id);
|
||||
|
||||
if (isError($personRes)) return $personRes;
|
||||
|
||||
if (hasData($personRes))
|
||||
{
|
||||
$person = getData($personRes)[0];
|
||||
$formMetaData['vorname'] = $person->vorname;
|
||||
$formMetaData['nachname'] = $person->nachname;
|
||||
}
|
||||
|
||||
$nationTextFieldName = $languageIdx == 1 ? 'langtext' : 'engltext';
|
||||
|
||||
// get nation list
|
||||
$this->load->model('codex/Nation_model', 'NationModel');
|
||||
|
||||
$this->NationModel->addSelect("nation_code, $nationTextFieldName AS nation_text");
|
||||
$this->NationModel->addOrder("nation_text");
|
||||
$nationRes = $this->NationModel->loadWhere('sperre IS NULL OR sperre = FALSE');
|
||||
|
||||
if (isError($nationRes)) return $nationRes;
|
||||
|
||||
if (hasData($nationRes))
|
||||
{
|
||||
$nations = getData($nationRes);
|
||||
|
||||
// put austria in beginning of selection
|
||||
foreach ($nations as $nation)
|
||||
{
|
||||
if ($nation->nation_code == self::CODEX_OESTERREICH) array_unshift($nations, $nation);
|
||||
}
|
||||
|
||||
$formMetaData['nation'] = $nations;
|
||||
}
|
||||
|
||||
// get abschluss list
|
||||
$abschlussRes = $this->AbschlussModel->getActiveAbschluesse($languageIdx);
|
||||
|
||||
if (isError($abschlussRes)) return $abschlussRes;
|
||||
|
||||
$abschlussData = getData($abschlussRes);
|
||||
|
||||
if (hasData($abschlussRes))
|
||||
{
|
||||
foreach (getData($abschlussRes) as $abschluss)
|
||||
{
|
||||
if ($abschluss->in_oesterreich === true)
|
||||
$formMetaData['abschluss_oesterreich'][] = $abschluss;
|
||||
elseif ($abschluss->in_oesterreich === false)
|
||||
$formMetaData['abschluss_nicht_oesterreich'][] = $abschluss;
|
||||
else
|
||||
{
|
||||
$formMetaData['abschluss_oesterreich'][] = $abschluss;
|
||||
$formMetaData['abschluss_nicht_oesterreich'][] = $abschluss;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// get realistic birth years, dated back from current year
|
||||
$currYear = date("Y");
|
||||
$formMetaData['jahre'] = range($currYear - self::UPPER_BOUNDARY_YEARS, $currYear - self::LOWER_BOUNDARY_YEARS);
|
||||
|
||||
return success($formMetaData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets initial data needed to display UHSTAT1 form.
|
||||
*/
|
||||
private function _getUHSTAT1Data()
|
||||
{
|
||||
$person_id = $this->_getValidPersonId('s');
|
||||
|
||||
$this->Uhstat1datenModel->addSelect(
|
||||
implode(', ', array_keys($this->_uhstat1Fields))
|
||||
);
|
||||
$uhstatRes = $this->Uhstat1datenModel->loadWhere(array('person_id' => $person_id));
|
||||
|
||||
if (isError($uhstatRes)) return $uhstatRes;
|
||||
|
||||
return success(hasData($uhstatRes) ? getData($uhstatRes)[0] : null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets language index of currently logged in user.
|
||||
* @return int (the index, start at 1)
|
||||
*/
|
||||
private function _getLanguageIndex()
|
||||
{
|
||||
$idx = 1;
|
||||
$this->SpracheModel->addSelect('index');
|
||||
$langRes = $this->SpracheModel->loadWhere(array('sprache' => getUserLanguage()));
|
||||
|
||||
if (hasData($langRes))
|
||||
{
|
||||
$idx = getData($langRes)[0]->index;
|
||||
}
|
||||
|
||||
return $idx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Id of person having permissions to manage UHSTAT1 data.
|
||||
* Can be passed as parameter or be in session.
|
||||
* @return int person_id
|
||||
*/
|
||||
private function _getValidPersonId($berechtigungsArt)
|
||||
{
|
||||
// if coming from bewerbungstool - person id is in session (person must be logged in bewerbungstool)
|
||||
if (isset($_SESSION[self::PERSON_ID_SESSION_INDEX]) && is_numeric($_SESSION[self::PERSON_ID_SESSION_INDEX]))
|
||||
return $_SESSION[self::PERSON_ID_SESSION_INDEX];
|
||||
|
||||
// if person id passed directly...
|
||||
$person_id = $this->input->post('person_id');
|
||||
if (!isset($person_id)) $person_id = $this->input->get('person_id');
|
||||
|
||||
if (!isset($person_id) || !is_numeric($person_id)) show_error("invalid person id");
|
||||
|
||||
// ...check if there is a permission for editing UHSTAT1 data
|
||||
if ($this->_checkPermission($berechtigungsArt)) return $person_id;
|
||||
|
||||
show_error("No permission");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if logged user has the UHSTAT management permission.
|
||||
* @param $art - type of permission, e.g. suid for full permissions
|
||||
* @return bool
|
||||
*/
|
||||
private function _checkPermission($art)
|
||||
{
|
||||
return $this->permissionlib->isBerechtigt(self::BERECHTIGUNG_UHSTAT_VERWALTEN, $art);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \Studierendenantrag_model as Studierendenantrag_model;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Abmeldung extends FHC_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Calls the parent's constructor and loads the FilterCmptLib
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Libraries
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'studierendenantrag'
|
||||
]);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* Retrieves data of the current studiengang for the current user
|
||||
*/
|
||||
|
||||
public function getDetailsForNewAntrag($prestudent_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToCreateAntragFor($prestudent_id, true)) {
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJsonError('Forbidden');
|
||||
}
|
||||
$result = $this->antraglib->getPrestudentAbmeldeBerechtigt($prestudent_id);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(500);
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
$result = $result->retval;
|
||||
if (!$result) {
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_no_student'));
|
||||
}
|
||||
elseif ($result == -3)
|
||||
{
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_stg_blacklist'));
|
||||
}
|
||||
elseif ($result == -1)
|
||||
{
|
||||
$result = $this->antraglib->getDetailsForLastAntrag(
|
||||
$prestudent_id,
|
||||
[
|
||||
Studierendenantrag_model::TYP_ABMELDUNG,
|
||||
Studierendenantrag_model::TYP_ABMELDUNG_STGL
|
||||
]
|
||||
);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
$data->canCancel = (
|
||||
$data->status == Studierendenantragstatus_model::STATUS_CREATED &&
|
||||
$this->antraglib->isEntitledToCancelAntrag($data->studierendenantrag_id)
|
||||
);
|
||||
|
||||
return $this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getDetailsForNewAntrag($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
public function getDetailsForAntrag($studierendenantrag_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToShowAntrag($studierendenantrag_id)) return show_404();
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag($studierendenantrag_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
if ($data->typ !== Studierendenantrag_model::TYP_ABMELDUNG_STGL && $data->typ !== Studierendenantrag_model::TYP_ABMELDUNG)
|
||||
return show_404();
|
||||
|
||||
$data->canCancel = (
|
||||
$data->status == Studierendenantragstatus_model::STATUS_CREATED &&
|
||||
$this->antraglib->isEntitledToCancelAntrag($data->studierendenantrag_id)
|
||||
);
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function createAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules('studiensemester', 'Studiensemester', 'required');
|
||||
$this->form_validation->set_rules('prestudent_id', 'Prestudent ID', 'required');
|
||||
$this->form_validation->set_rules('grund', 'Grund', 'required');
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$grund = $this->input->post('grund');
|
||||
$studiensemester = $this->input->post('studiensemester');
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
|
||||
$result = $this->antraglib->getPrestudentAbmeldeBerechtigt($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
$result = $result->retval;
|
||||
if (!$result)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_no_student')]);
|
||||
}
|
||||
elseif ($result == -3)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_stg_blacklist')]);
|
||||
}
|
||||
elseif ($result < 0)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_antrag_exists')]);
|
||||
}
|
||||
|
||||
$result = $this->antraglib->createAbmeldung($prestudent_id, $studiensemester, getAuthUID(), $grund);
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag(getData($result));
|
||||
if (!hasData($result))
|
||||
return $this->outputJsonSuccess(true);
|
||||
|
||||
$data = getData($result);
|
||||
$data->canCancel = (boolean)$this->antraglib->isEntitledToCancelAntrag($data->studierendenantrag_id);
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function cancelAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules('antrag_id', 'Antrag ID', 'required');
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$antrag_id = $this->input->post('antrag_id');
|
||||
if(!$this->antraglib->isEntitledToCancelAntrag($antrag_id))
|
||||
{
|
||||
$this->output->set_status_header(403);
|
||||
|
||||
return $this->outputJsonError('Forbidden');
|
||||
}
|
||||
|
||||
$result = $this->antraglib->cancelAntrag($antrag_id, getAuthUID());
|
||||
if(isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag($antrag_id);
|
||||
|
||||
if (!hasData($result))
|
||||
return $this->outputJsonSuccess($antrag_id);
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
public function getStudiengaengeAssistenz()
|
||||
{
|
||||
$this->load->library('PermissionLib');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
$query = $this->input->post('query');
|
||||
|
||||
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
|
||||
|
||||
$result = $this->antraglib->getAktivePrestudentenInStgs($studiengaenge, $query);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
$result = getData($result);
|
||||
if (!$result) {
|
||||
return $this->outputJsonSuccess([]);
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($result);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,413 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \stdClass as stdClass;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Leitung extends FHC_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Calls the parent's constructor and loads the FilterCmptLib
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Libraries
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'studierendenantrag'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
public function getActiveStgs()
|
||||
{
|
||||
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe');
|
||||
$stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
|
||||
|
||||
$stgs = [];
|
||||
|
||||
if ($studiengaenge) {
|
||||
$result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge);
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJson($result);
|
||||
$antraege = getData($result) ?: [];
|
||||
|
||||
foreach ($antraege as $antrag) {
|
||||
if (!isset($stgs[$antrag->studiengang_kz])) {
|
||||
$stgs[$antrag->studiengang_kz] = new stdClass();
|
||||
$stgs[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
|
||||
$stgs[$antrag->studiengang_kz]->orgform = $antrag->orgform;
|
||||
$stgs[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($stgsNeuanlage) {
|
||||
$result = $this->StudierendenantragModel->loadForStudiengaenge($stgsNeuanlage);
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJson($result);
|
||||
$antraege = getData($result) ?: [];
|
||||
|
||||
foreach ($antraege as $antrag) {
|
||||
if (!isset($stgs[$antrag->studiengang_kz])) {
|
||||
$stgs[$antrag->studiengang_kz] = new stdClass();
|
||||
$stgs[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
|
||||
$stgs[$antrag->studiengang_kz]->orgform = $antrag->orgform;
|
||||
$stgs[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess($stgs);
|
||||
}
|
||||
|
||||
public function getAntraege($studiengang = null)
|
||||
{
|
||||
|
||||
if($studiengang)
|
||||
$studiengaenge = [$studiengang];
|
||||
else {
|
||||
$studiengaenge =$this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe');
|
||||
if(!is_array($studiengaenge))
|
||||
$studiengaenge = [];
|
||||
|
||||
|
||||
$stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
|
||||
if(!is_array($stgsNeuanlage))
|
||||
$stgsNeuanlage = [];
|
||||
|
||||
$studiengaenge = array_unique(array_merge($studiengaenge, $stgsNeuanlage));
|
||||
}
|
||||
|
||||
|
||||
$antraege = [];
|
||||
if ($studiengaenge) {
|
||||
$result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(500);
|
||||
return $this->outputJson('Internal Server Error');
|
||||
}
|
||||
if(hasData($result))
|
||||
{
|
||||
$antraege = getData($result);
|
||||
}
|
||||
}
|
||||
|
||||
$this->outputJson($antraege);
|
||||
}
|
||||
|
||||
public function reopenAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToReopenAntrag',
|
||||
[
|
||||
'isEntitledToReopenAntrag' => $this->p->t('studierendenantrag', 'error_no_right')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->reopenWiederholung($studierendenantrag_id, getAuthUID());
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(['studierendenantrag_id' => getError($result)]);
|
||||
|
||||
$this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function objectAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToObjectAntrag|callback_canBeObjected',
|
||||
[
|
||||
'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag', 'error_no_right'),
|
||||
'canBeObjected' => $this->p->t('studierendenantrag', 'error_no_objection')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->objectAbmeldung($studierendenantrag_id, getAuthUID());
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(['studierendenantrag_id' => getError($result)]);
|
||||
|
||||
$this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function objectionDeny()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToObjectAntrag|callback_isObjected',
|
||||
[
|
||||
'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag', 'error_no_right'),
|
||||
'isObjected' => $this->p->t('studierendenantrag', 'error_not_objected')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
$grund = $this->input->post('grund');
|
||||
|
||||
$result = $this->antraglib->denyObjectionAbmeldung($studierendenantrag_id, getAuthUID(), $grund);
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(['studierendenantrag_id' => getError($result)]);
|
||||
|
||||
$this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function objectionApprove()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToObjectAntrag|callback_isObjected',
|
||||
[
|
||||
'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag', 'error_no_right'),
|
||||
'isObjected' => $this->p->t('studierendenantrag', 'error_not_objected')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->cancelAntrag($studierendenantrag_id, getAuthUID());
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(['studierendenantrag_id' => getError($result)]);
|
||||
|
||||
$this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function isEntitledToReopenAntrag($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->isEntitledToReopenAntrag($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function isEntitledToObjectAntrag($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->isEntitledToObjectAntrag($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function isEntitledToRejectAntrag($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->isEntitledToRejectAntrag($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function canBeObjected($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->hasType($studierendenantrag_id, Studierendenantrag_model::TYP_ABMELDUNG_STGL);
|
||||
}
|
||||
|
||||
public function isObjected($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->hasStatus($studierendenantrag_id, Studierendenantragstatus_model::STATUS_OBJECTED);
|
||||
}
|
||||
|
||||
|
||||
public function approveAbmeldung()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToApproveAntrag',
|
||||
[
|
||||
'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag', 'error_no_right')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->approveAbmeldung([$studierendenantrag_id], getAuthUID());
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function approveAbmeldungStgl()
|
||||
{
|
||||
return $this->approveAbmeldung();
|
||||
}
|
||||
|
||||
public function approveUnterbrechung()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToApproveAntrag',
|
||||
[
|
||||
'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag', 'error_no_right')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->approveUnterbrechung([$studierendenantrag_id], getAuthUID());
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function rejectUnterbrechung()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToRejectAntrag',
|
||||
[
|
||||
'isEntitledToRejectAntrag' => $this->p->t('studierendenantrag', 'error_no_right')
|
||||
]
|
||||
);
|
||||
$this->form_validation->set_rules('grund', 'Grund', 'required');
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
$grund = $this->input->post('grund');
|
||||
|
||||
$result = $this->antraglib->rejectUnterbrechung([$studierendenantrag_id], getAuthUID(), $grund);
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function approveWiederholung()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
'required|callback_isEntitledToApproveAntrag',
|
||||
[
|
||||
'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag', 'error_no_right')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->approveWiederholung($studierendenantrag_id, getAuthUID());
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function isEntitledToApproveAntrag($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->isEntitledToApproveAntrag($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function getHistory($studierendenantrag_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToSeeHistoryForAntrag($studierendenantrag_id)) {
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJson('Forbidden');
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getAntragHistory($studierendenantrag_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess(getData($result) ?: []);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \Studierendenantrag_model as Studierendenantrag_model;
|
||||
use \DateTime as DateTime;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Unterbrechung extends FHC_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Calls the parent's constructor and loads the FilterCmptLib
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Configs
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
// Libraries
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'studierendenantrag',
|
||||
'ui'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
public function getDetailsForNewAntrag($prestudent_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToCreateAntragFor($prestudent_id, false)) {
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJsonError('Forbidden');
|
||||
}
|
||||
$result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($prestudent_id);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(500);
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
$result = $result->retval;
|
||||
if (!$result) {
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_no_student'));
|
||||
}
|
||||
elseif ($result == -1)
|
||||
{
|
||||
$result = $this->antraglib->getDetailsForLastAntrag($prestudent_id, Studierendenantrag_model::TYP_UNTERBRECHUNG);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
elseif ($result == -2)
|
||||
{
|
||||
$result = $this->antraglib->getDetailsForLastAntrag($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$result = getData($result);
|
||||
$this->output->set_status_header(400);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_pending', [
|
||||
'typ' => $this->p->t('studierendenantrag', 'antrag_typ_' . $result->typ)
|
||||
]));
|
||||
}
|
||||
elseif ($result == -3)
|
||||
{
|
||||
$this->output->set_status_header(403);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_stg_blacklist'));
|
||||
}
|
||||
$result = $this->antraglib->getDetailsForNewAntrag($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
$data->studiensemester = $this->antraglib->getSemesterForUnterbrechung($data->studiensemester_kurzbz);
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function getDetailsForAntrag($studierendenantrag_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToShowAntrag($studierendenantrag_id)) return show_404();
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag($studierendenantrag_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
if ($data->typ !== Studierendenantrag_model::TYP_UNTERBRECHUNG)
|
||||
return show_404();
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function createAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('studiensemester', 'Studiensemester', 'required');
|
||||
$this->form_validation->set_rules('prestudent_id', 'Prestudent ID', 'required');
|
||||
$this->form_validation->set_rules('grund', 'Grund', 'required');
|
||||
$this->form_validation->set_rules(
|
||||
'datum_wiedereinstieg',
|
||||
'Datum Wiedereinstieg',
|
||||
'required|callback_isValidDate|callback_isDateInFuture',
|
||||
[
|
||||
'isValidDate' => $this->p->t('ui', 'error_invalid_date'),
|
||||
'isDateInFuture' => $this->p->t('ui', 'error_invalid_date')
|
||||
]
|
||||
);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$grund = $this->input->post('grund');
|
||||
$studiensemester = $this->input->post('studiensemester');
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$datum_wiedereinstieg = $this->input->post('datum_wiedereinstieg');
|
||||
$dms_id = null;
|
||||
|
||||
$result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
$result = $result->retval;
|
||||
if (!$result)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_no_student')]);
|
||||
}
|
||||
elseif ($result == -3)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_stg_blacklist')]);
|
||||
}
|
||||
elseif ($result < 0)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_antrag_exists')]);
|
||||
}
|
||||
|
||||
if(isset($_FILES['attachment']) && (!isset($_FILES['attachment']['error']) || $_FILES['attachment']['error'] != UPLOAD_ERR_NO_FILE))
|
||||
{
|
||||
$this->load->library('DmsLib');
|
||||
|
||||
$dms = $this->config->item('unterbrechung_dms');
|
||||
if (!count(array_filter($dms, function ($v) {
|
||||
return $v !== null;
|
||||
})))
|
||||
$dms = ['kategorie_kurzbz' => 'Akte'];
|
||||
$dms['version'] = 0;
|
||||
|
||||
$allowed_filetypes = $this->config->item('unterbrechung_dms_filetypes') ?: ['*'];
|
||||
$result = $this->dmslib->upload($dms, 'attachment', $allowed_filetypes);
|
||||
if(isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
$dms_id = getData($result)['dms_id'];
|
||||
}
|
||||
|
||||
$result = $this->antraglib->createUnterbrechung($prestudent_id, $studiensemester, getAuthUID(), $grund, $datum_wiedereinstieg, $dms_id);
|
||||
if(isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
$antragId = getData($result);
|
||||
$result = $this->antraglib->getDetailsForAntrag($antragId);
|
||||
|
||||
if(!hasData($result))
|
||||
return $this->outputJsonSuccess($antragId);
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
public function cancelAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules('antrag_id', 'Antrag ID', 'required');
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$antrag_id = $this->input->post('antrag_id');
|
||||
|
||||
$result = $this->antraglib->cancelAntrag($antrag_id, getAuthUID());
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag($antrag_id);
|
||||
|
||||
if (!hasData($result))
|
||||
return $this->outputJsonSuccess($antrag_id);
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
public function isValidDate($date)
|
||||
{
|
||||
try {
|
||||
new DateTime($date);
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isDateInFuture($date)
|
||||
{
|
||||
return new DateTime() < new DateTime($date);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,372 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \REST_Controller as REST_Controller;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Wiederholung extends FHC_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Calls the parent's constructor and loads the FilterCmptLib
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Configs
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
// Libraries
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
$requiredPermissions = [
|
||||
'saveLvs' => ['student/studierendenantrag:w'],
|
||||
'getLvsAsRdf' => ['student/studierendenantrag:r', 'student/noten:r'],
|
||||
'moveLvsToZeugnis' => ['student/studierendenantrag:w', 'student/noten:w']
|
||||
];
|
||||
|
||||
if (isset($requiredPermissions[$this->router->method])) {
|
||||
if (!$this->permissionlib->isEntitled($requiredPermissions, $this->router->method)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_FORBIDDEN);
|
||||
$this->outputJson('Forbidden');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'global',
|
||||
'studierendenantrag'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* Retrieves data of the current studiengang for the current user
|
||||
*/
|
||||
|
||||
public function getDetailsForNewAntrag($prestudent_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToCreateAntragFor($prestudent_id, false)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_FORBIDDEN);
|
||||
return $this->outputJsonError('Forbidden');
|
||||
}
|
||||
$result = $this->antraglib->getPrestudentWiederholungsBerechtigt($prestudent_id);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
$result = $result->retval;
|
||||
if (!$result) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_FORBIDDEN);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_no_student_no_failed_exam'));
|
||||
}
|
||||
elseif ($result == -1)
|
||||
{
|
||||
$result = $this->antraglib->getDetailsForLastAntrag($prestudent_id, Studierendenantrag_model::TYP_WIEDERHOLUNG);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
$result = $this->antraglib->getFailedExamForPrestudent($prestudent_id);
|
||||
// NOTE(chris): error handling for this function should already happenden in antraglib->getPrestudentWiederholungsBerechtigt()
|
||||
$pruefungsdata = current(getData($result));
|
||||
|
||||
$data->studiensemester_kurzbz = $pruefungsdata->studiensemester_kurzbz;
|
||||
$data->lvbezeichnung = $pruefungsdata->lvbezeichnung;
|
||||
$data->pruefungsdatum = $pruefungsdata->datum;
|
||||
|
||||
return $this->outputJsonSuccess($data);
|
||||
}
|
||||
elseif ($result == -2)
|
||||
{
|
||||
$result = $this->antraglib->getDetailsForLastAntrag($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$result = getData($result);
|
||||
$this->output->set_status_header(REST_Controller::HTTP_BAD_REQUEST);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_pending', [
|
||||
'typ' => $this->p->t('studierendenantrag', 'antrag_typ_' . $result->typ)
|
||||
]));
|
||||
}
|
||||
elseif ($result == -3)
|
||||
{
|
||||
$this->output->set_status_header(REST_Controller::HTTP_BAD_REQUEST);
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_stg_blacklist'));
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getDetailsForNewAntrag($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
$result = $this->antraglib->getFailedExamForPrestudent($prestudent_id);
|
||||
// NOTE(chris): error handling for this function should already happenden in antraglib->getPrestudentWiederholungsBerechtigt()
|
||||
$pruefungsdata = current(getData($result));
|
||||
|
||||
$data->studiensemester_kurzbz = $pruefungsdata->studiensemester_kurzbz;
|
||||
$data->lvbezeichnung = $pruefungsdata->lvbezeichnung;
|
||||
$data->pruefungsdatum = $pruefungsdata->datum;
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function createAntrag()
|
||||
{
|
||||
$this->createAntragWithStatus(true);
|
||||
}
|
||||
|
||||
public function cancelAntrag()
|
||||
{
|
||||
$this->createAntragWithStatus(false);
|
||||
}
|
||||
|
||||
protected function createAntragWithStatus($repeat)
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$_POST = json_decode($this->input->raw_input_stream, true);
|
||||
|
||||
$this->form_validation->set_rules('prestudent_id', 'Prestudent ID', 'required');
|
||||
$this->form_validation->set_rules('studiensemester', 'Studiensemester', 'required');
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
return $this->outputJsonError($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$studiensemester = $this->input->post('studiensemester');
|
||||
|
||||
$result = $this->antraglib->getPrestudentWiederholungsBerechtigt($prestudent_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
$result = $result->retval;
|
||||
if (!$result)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_no_student')]);
|
||||
}
|
||||
elseif ($result == -2)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_antrag_exists')]);
|
||||
}
|
||||
elseif ($result == -3)
|
||||
{
|
||||
return $this->outputJsonError(['db' => $this->p->t('studierendenantrag', 'error_stg_blacklist')]);
|
||||
}
|
||||
|
||||
$result = $this->antraglib->createWiederholung($prestudent_id, $studiensemester, getAuthUID(), $repeat);
|
||||
if(isError($result))
|
||||
{
|
||||
return $this->outputJsonError(['db' => getError($result)]);
|
||||
}
|
||||
|
||||
$antragId = getData($result);
|
||||
$result = $this->antraglib->getDetailsForAntrag($antragId);
|
||||
|
||||
if(!hasData($result))
|
||||
return $this->outputJsonSuccess(true);
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
$result = $this->antraglib->getFailedExamForPrestudent($prestudent_id);
|
||||
// NOTE(chris): error handling for this function should already happenden in antraglib->getPrestudentWiederholungsBerechtigt()
|
||||
$pruefungsdata = current(getData($result));
|
||||
|
||||
$data->studiensemester_kurzbz = $pruefungsdata->studiensemester_kurzbz;
|
||||
$data->lvbezeichnung = $pruefungsdata->lvbezeichnung;
|
||||
$data->pruefungsdatum = $pruefungsdata->datum;
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
|
||||
public function getLvs($antrag_id)
|
||||
{
|
||||
$result = $this->antraglib->getLvsForAntrag($antrag_id);
|
||||
if (isError($result)) {
|
||||
$error = getError($result);
|
||||
if ($error == 'Forbidden')
|
||||
$this->output->set_status_header(REST_Controller::HTTP_FORBIDDEN);
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
$lvs = getData($result);
|
||||
|
||||
$this->outputJsonSuccess($lvs);
|
||||
}
|
||||
|
||||
public function saveLvs()
|
||||
{
|
||||
$result = $this->getPostJSON();
|
||||
$antragsLvs = array_merge($result->forbiddenLvs, $result->mandatoryLvs);
|
||||
|
||||
$insert = array_map(function ($lv) {
|
||||
return [
|
||||
'studierendenantrag_id' => $lv->studierendenantrag_id,
|
||||
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id,
|
||||
'note' => $lv->zugelassen
|
||||
? ($lv->zugelassen == 1 ? 0 : $this->config->item('wiederholung_note_angerechnet'))
|
||||
: $this->config->item('wiederholung_note_nicht_zugelassen'),
|
||||
'anmerkung' => $lv->anmerkung,
|
||||
'insertvon' => getAuthUID(),
|
||||
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz
|
||||
];
|
||||
}, $antragsLvs);
|
||||
|
||||
$antrag_ids = array_unique(array_map(function ($lv) {
|
||||
return $lv['studierendenantrag_id'];
|
||||
}, $insert));
|
||||
|
||||
foreach ($antrag_ids as $antrag_id) {
|
||||
$result = $this->StudierendenantragModel->loadIdAndStatusWhere([
|
||||
'studierendenantrag_id' => $antrag_id
|
||||
]);
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
if (!hasData($result))
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_no_antrag_found', ['id' => $antrag_id]));
|
||||
$antrag = current(getData($result));
|
||||
if ($antrag->status != Studierendenantragstatus_model::STATUS_CREATED && $antrag->status != Studierendenantragstatus_model::STATUS_LVSASSIGNED)
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_locked'));
|
||||
}
|
||||
|
||||
if(!$antragsLvs)
|
||||
return $this->outputJsonError($this->p->t('studierendenantrag', 'error_no_lv'));
|
||||
|
||||
$result = $this->antraglib->saveLvs($insert);
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
public function getLvsAsRdf($prestudent_id)
|
||||
{
|
||||
// header für no cache
|
||||
$this->output->set_header("Cache-Control: no-cache");
|
||||
$this->output->set_header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
$this->output->set_header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
$this->output->set_header("Pragma: no-cache");
|
||||
$this->output->set_header("Content-type: application/xhtml+xml");
|
||||
|
||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
||||
$sem_akt = $this->variablelib->getVar('semester_aktuell');
|
||||
|
||||
|
||||
$result = $this->antraglib->getLvsForPrestudent($prestudent_id, $sem_akt);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$lvs = getData($result) ?: [];
|
||||
$rdf_url = 'http://www.technikum-wien.at/antragnote';
|
||||
|
||||
$this->load->view('lehre/Antrag/Wiederholung/getLvs.rdf.php', [
|
||||
'url' => $rdf_url,
|
||||
'lvs' => $lvs
|
||||
]);
|
||||
}
|
||||
|
||||
public function moveLvsToZeugnis()
|
||||
{
|
||||
$anzahl = $this->input->post('anzahl');
|
||||
$student_uid = $this->input->post('student_uid');
|
||||
$this->load->model('education/Studierendenantraglehrveranstaltung_model', 'StudierendenantraglehrveranstaltungModel');
|
||||
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||
|
||||
$errormsg = array();
|
||||
|
||||
for($i=0; $i<$anzahl; $i++)
|
||||
{
|
||||
$id = $this->input->post('studierendenantrag_lehrveranstaltung_id_' . $i);
|
||||
$result =$this->StudierendenantraglehrveranstaltungModel->load($id);
|
||||
if(isError($result))
|
||||
{
|
||||
$errormsg[] = getError($result);
|
||||
}
|
||||
elseif(!hasData($result))
|
||||
{
|
||||
$errormsg[] = $this->p->t('studierendenantrag', 'error_no_lv_in_application');
|
||||
}
|
||||
else
|
||||
{
|
||||
$antragLv = getData($result)[0];
|
||||
$result= $this->ZeugnisnoteModel->load([
|
||||
'lehrveranstaltung_id'=> $antragLv->lehrveranstaltung_id,
|
||||
'student_uid'=> $student_uid,
|
||||
'studiensemester_kurzbz' => $antragLv->studiensemester_kurzbz
|
||||
]);
|
||||
if(isError($result))
|
||||
{
|
||||
$errormsg[] = getError($result);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hasData($result))
|
||||
{
|
||||
$result = $this->ZeugnisnoteModel->update(
|
||||
[
|
||||
'lehrveranstaltung_id'=> $antragLv->lehrveranstaltung_id,
|
||||
'student_uid'=> $student_uid,
|
||||
'studiensemester_kurzbz' => $antragLv->studiensemester_kurzbz
|
||||
],
|
||||
[
|
||||
'note'=> $antragLv->note,
|
||||
'uebernahmedatum' => date('c'),
|
||||
'benotungsdatum' => $antragLv->insertamum,
|
||||
'updateamum' => date('c'),
|
||||
'bemerkung'=>$antragLv->anmerkung,
|
||||
'updatevon'=>getAuthUID()
|
||||
]
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = $this->ZeugnisnoteModel->insert([
|
||||
'lehrveranstaltung_id'=> $antragLv->lehrveranstaltung_id,
|
||||
'student_uid'=> $student_uid,
|
||||
'studiensemester_kurzbz' => $antragLv->studiensemester_kurzbz,
|
||||
'note'=> $antragLv->note,
|
||||
'uebernahmedatum' => date('c'),
|
||||
'benotungsdatum' => $antragLv->insertamum,
|
||||
'insertamum' => date('c'),
|
||||
'bemerkung'=>$antragLv->anmerkung,
|
||||
'insertvon'=>getAuthUID()
|
||||
]);
|
||||
}
|
||||
if(isError($result))
|
||||
{
|
||||
$errormsg[] = getError($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($errormsg)
|
||||
$return = false;
|
||||
else
|
||||
$return = true;
|
||||
|
||||
$this->load->view('lehre/Antrag/Wiederholung/moveLvs.rdf.php', [
|
||||
'return' => $return,
|
||||
'errormsg' => $errormsg
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Phrasen extends FHC_Controller
|
||||
{
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @param string $module
|
||||
*/
|
||||
public function loadModule($module)
|
||||
{
|
||||
$this->load->library('PhrasesLib', [$module], 'pj');
|
||||
$this->outputJsonSuccess(json_decode($this->pj->getJSON()));
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,9 @@ class AnrechnungJob extends JOB_Controller
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
|
||||
$this->load->library('AnrechnungLib');
|
||||
|
||||
// Load configs
|
||||
$this->load->config('anrechnung');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -213,7 +216,7 @@ class AnrechnungJob extends JOB_Controller
|
||||
'datentabelle' => $anrechnungen_table,
|
||||
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
|
||||
);
|
||||
|
||||
|
||||
// Send mail
|
||||
sendSanchoMail(
|
||||
'AnrechnungAntragStellen',
|
||||
@@ -227,6 +230,82 @@ class AnrechnungJob extends JOB_Controller
|
||||
$this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.');
|
||||
}
|
||||
|
||||
// Send Sancho mail to LV-Leitung (fallback Lectors) that were requested for recommendation yesterday.
|
||||
public function sendMailRecommendationRequests(){
|
||||
|
||||
$this->logInfo('Start AnrechnungJob sendMailRecommendationRequests to inform lecturers about yesterdays requests for recommendation.');
|
||||
|
||||
// Get Anrechnungen, für die gestern eine Empfehlung angefragt worden ist
|
||||
$this->AnrechnungModel->addSelect('astat.anrechnung_id, astat.datum, astat.insertamum');
|
||||
$this->AnrechnungModel->addDistinct('astat.anrechnung_id');
|
||||
$this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus astat', 'anrechnung_id');
|
||||
|
||||
$result = $this->AnrechnungModel->loadWhere('
|
||||
studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende)
|
||||
AND genehmigt_von IS NULL
|
||||
AND empfehlung_anrechnung IS NULL
|
||||
AND status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR) .' -- in Bearbeitung durch Lektor
|
||||
AND NOW()::date = (astat.datum + interval \'1 day\') -- nur gestrige Empfehlungsanfrage
|
||||
ORDER BY astat.anrechnung_id, astat.datum DESC, astat.insertamum DESC -- nur letzten status dabei prüfen
|
||||
');
|
||||
|
||||
// Exit, wenn es gestern keine Empfehlungsanfragen gab
|
||||
if (!hasData($result))
|
||||
{
|
||||
$this->logInfo('End AnrechnungJob sendMailRecommendationRequests, because no recommendations were requested yesterday.');
|
||||
exit;
|
||||
}
|
||||
|
||||
$anrechnung_id_arr = array_column(getData($result), 'anrechnung_id');
|
||||
|
||||
$arr_lvLector_arr = array();
|
||||
foreach ($anrechnung_id_arr as $anrechnung_id)
|
||||
{
|
||||
// Get full name of Fachbereichsleitung or LV Leitung.
|
||||
if($this->config->item('fbl') === TRUE)
|
||||
{
|
||||
$arr_lvLector_arr[] = $this->anrechnunglib->getLeitungOfLvOe($anrechnung_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
$arr_lvLector_arr[] = $this->anrechnunglib->getLectors($anrechnung_id); // Returns LV Leitung. If not present, then all lectors of LV.
|
||||
}
|
||||
}
|
||||
|
||||
// Unique lector array to send only one mail per lector
|
||||
$arr_lvLector_arr = array_unique($arr_lvLector_arr, SORT_REGULAR);
|
||||
|
||||
// Link to 'Anrechnungen prüfen' dashboard
|
||||
$url =
|
||||
CIS_ROOT. 'cis/index.php?menu='.
|
||||
CIS_ROOT. 'cis/menu.php?content_id=&content='.
|
||||
CIS_ROOT. index_page(). self::REVIEW_ANRECHNUNG_URI;
|
||||
|
||||
foreach ($arr_lvLector_arr as $lvLector_arr)
|
||||
{
|
||||
foreach ($lvLector_arr as $lector)
|
||||
{
|
||||
// Prepare mail content
|
||||
$fields = array(
|
||||
'vorname' => $lector->vorname,
|
||||
'stgl_name' => 'Die Studiengangsleitung',
|
||||
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
|
||||
);
|
||||
|
||||
// Send mail
|
||||
sendSanchoMail(
|
||||
'AnrechnungEmpfehlungAnfordern',
|
||||
$fields,
|
||||
$lector->uid. '@'. DOMAIN,
|
||||
'Deine Empfehlung wird benötigt zur Anerkennung nachgewiesener Kenntnisse'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$this->logInfo('SUCCEDED AnrechnungJob sendMailRecommendationRequests');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Sancho mail to students, whose Anrechnungen were approved 24 hours ago.
|
||||
*/
|
||||
@@ -308,7 +387,7 @@ class AnrechnungJob extends JOB_Controller
|
||||
|
||||
$db = new DB_Model();
|
||||
$result = $db->execReadOnlyQuery($qry);
|
||||
|
||||
|
||||
// Exit if there are no rejected Anrechnungen
|
||||
if (!hasData($result))
|
||||
{
|
||||
@@ -361,9 +440,9 @@ html;
|
||||
|
||||
$result = $this->AnrechnungModel->loadWhere('
|
||||
studiensemester_kurzbz = (
|
||||
SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende)
|
||||
SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende
|
||||
)
|
||||
AND genehmigt_von IS NULL
|
||||
AND genehmigt_von IS NULL
|
||||
AND empfehlung_anrechnung IS NULL
|
||||
AND status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR) .' -- in Bearbeitung durch Lektor
|
||||
AND NOW()::date = (astat.datum + interval \'1 week\') -- eine Woche nach Empfehlungsanfrage
|
||||
@@ -376,7 +455,7 @@ html;
|
||||
$this->logInfo('End AnrechnungJob sendMailRemindRecommendation, because no recommendations to be done.');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
$anrechnung_id_arr = array_column(getData($result), 'anrechnung_id');
|
||||
|
||||
$arr_lvLector_arr = array();
|
||||
@@ -435,7 +514,7 @@ html;
|
||||
'vorname' => $stgl->vorname
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return $stglMailAdress_arr;
|
||||
}
|
||||
// If not available, get assistance mail address
|
||||
|
||||
@@ -0,0 +1,608 @@
|
||||
<?php
|
||||
|
||||
if (!defined("BASEPATH")) exit("No direct script access allowed");
|
||||
|
||||
use \DateTime as DateTime;
|
||||
|
||||
class AntragJob extends JOB_Controller
|
||||
{
|
||||
/**
|
||||
* API constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Configs
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
// Loads SanchoHelper
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
|
||||
// Load Model
|
||||
$this->load->model('education/Studierendenantrag_model', 'StudierendenantragModel');
|
||||
$this->load->model('education/Studierendenantragstatus_model', 'StudierendenantragstatusModel');
|
||||
$this->load->model('education/Pruefung_model', 'PruefungModel');
|
||||
$this->load->model('person/Kontakt_model', 'KontaktModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send infomail to Stgl
|
||||
*/
|
||||
public function sendStglSammelmail()
|
||||
{
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
|
||||
$this->logInfo('Start Job sendStglSammelmail');
|
||||
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$this->StudierendenantragModel->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
$this->db->group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED);
|
||||
$this->db->group_end();
|
||||
|
||||
$result = $this->StudierendenantragModel->load();
|
||||
if(isError($result))
|
||||
return $this->logError(getError($result));
|
||||
|
||||
if(!hasData($result))
|
||||
return $this->logInfo('End Job sendStglSammelmail: 0 Mails sent');
|
||||
|
||||
$antraege = getData($result);
|
||||
|
||||
$stgs = array();
|
||||
$stgLeitungen = array();
|
||||
|
||||
foreach ($antraege as $antrag)
|
||||
{
|
||||
if (!isset($stgs[$antrag->studiengang_kz]))
|
||||
{
|
||||
$result = $this->StudiengangModel->getLeitung($antrag->studiengang_kz);
|
||||
if (isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
continue;
|
||||
}
|
||||
if (!hasData($result))
|
||||
{
|
||||
$this->logError('Keine Leitung für Studiengang ' . $antrag->studiengang_kz . ' gefunden!');
|
||||
continue;
|
||||
}
|
||||
|
||||
$leitung = current(getData($result));
|
||||
if (!isset($stgLeitungen[$leitung->uid]))
|
||||
{
|
||||
$stgLeitungen[$leitung->uid] = [ 'Details' => $leitung, 'stgs' => [] ];
|
||||
}
|
||||
$stgLeitungen[$leitung->uid]['stgs'][] = $antrag->studiengang_kz;
|
||||
|
||||
$result = $this->StudiengangModel->load($antrag->studiengang_kz);
|
||||
if (isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
continue;
|
||||
}
|
||||
if (!hasData($result))
|
||||
{
|
||||
$this->logError('Keine Details für Studiengang ' . $antrag->studiengang_kz . ' gefunden!');
|
||||
continue;
|
||||
}
|
||||
$details = current(getData($result));
|
||||
|
||||
$stgs[$antrag->studiengang_kz] = [
|
||||
'Abmeldung' => [],
|
||||
'Unterbrechung' => [],
|
||||
'Wiederholung' => [],
|
||||
'Details' => $details
|
||||
];
|
||||
}
|
||||
$stgs[$antrag->studiengang_kz][str_replace('Stgl', '', $antrag->typ)] = $antrag;
|
||||
}
|
||||
|
||||
$this->load->model('system/Sprache_model', 'SpracheModel');
|
||||
$result = $this->SpracheModel->loadWhere(['content' => true]);
|
||||
if (isError($result)) {
|
||||
$this->logError(getError($result));
|
||||
$languages = [DEFAULT_LANGUAGE];
|
||||
} elseif (!hasData($result)) {
|
||||
$languages = [DEFAULT_LANGUAGE];
|
||||
} else {
|
||||
$languages = array_map(function ($row) {
|
||||
return $row->sprache;
|
||||
}, getData($result));
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
foreach ($stgLeitungen as $leitung)
|
||||
{
|
||||
$data = [
|
||||
'name' => trim($leitung['Details']->vorname . ' ' . $leitung['Details']->nachname),
|
||||
'vorname' => $leitung['Details']->vorname,
|
||||
'nachname' => $leitung['Details']->nachname
|
||||
];
|
||||
|
||||
foreach ($languages as $lang) {
|
||||
unset($this->p);
|
||||
$this->loadPhrases(['studierendenantrag'], $lang);
|
||||
|
||||
$table = '';
|
||||
foreach ($leitung['stgs'] as $studiengang_kz) {
|
||||
$rows = '';
|
||||
$stg = $stgs[$studiengang_kz];
|
||||
foreach (['Abmeldung', 'Unterbrechung', 'Wiederholung'] as $typ) {
|
||||
$c = count($stg[$typ]);
|
||||
if ($c) {
|
||||
$rows .= $this->p->t('studierendenantrag', 'mail_part_x_new_' . $typ, ['count' => $c]);
|
||||
}
|
||||
}
|
||||
$table .= $this->p->t('studierendenantrag', 'mail_part_table', [
|
||||
'stg_bezeichnung' => $stg['Details']->bezeichnung,
|
||||
'stg_orgform_kurzbz' => $stg['Details']->orgform_kurzbz,
|
||||
'rows' => $rows
|
||||
]);
|
||||
}
|
||||
$data['table_' . $lang] = $table;
|
||||
}
|
||||
|
||||
$data['table'] = $data['table_' . DEFAULT_LANGUAGE];
|
||||
|
||||
// NOTE(chris): Sancho mail
|
||||
if (sendSanchoMail("Sancho_Mail_Antrag_Stgl", $data, $leitung['Details']->uid . '@' . DOMAIN, 'Anträge - Aktion(en) erforderlich'))
|
||||
$count++;
|
||||
}
|
||||
|
||||
$this->logInfo($count . " Emails erfolgreich versandt");
|
||||
|
||||
$this->logInfo('End Job sendStglSammelmail');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send reminder to Assistant for Wiedereinstieg Unterbrecher
|
||||
*
|
||||
*/
|
||||
public function sendReminderWiedereinstieg()
|
||||
{
|
||||
$now = new DateTime();
|
||||
$modifier = $this->config->item('unterbrechung_job_remind_wiedereinstieg_date_modifier');
|
||||
if (!$modifier)
|
||||
return $this->logError('Konnte Job nicht starten: Config "unterbrechung_job_remind_wiedereinstieg_date_modifiers" nicht gesetzt');
|
||||
|
||||
$end = new DateTime();
|
||||
$end->modify($modifier);
|
||||
|
||||
$this->logInfo(sprintf(
|
||||
'Start Job sendReminderWiedereinstieg (Wiedereinstieg zwischen %s - %s)',
|
||||
$now->format('Y-m-d'),
|
||||
$end->format('Y-m-d')
|
||||
));
|
||||
|
||||
$result = $this->StudierendenantragModel->getAntraegeWhereWiedereinstiegBetween($now, $end);
|
||||
|
||||
if(isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
$this->logInfo('Ende Job sendReminderWiedereinstieg');
|
||||
return;
|
||||
}
|
||||
|
||||
$antraege = getData($result) ?: [];
|
||||
$count = 0;
|
||||
foreach ($antraege as $antrag)
|
||||
{
|
||||
$this->StudiengangModel->addJoin('public.tbl_prestudent ps','studiengang_kz');
|
||||
$res = $this->StudiengangModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]);
|
||||
$stg = '';
|
||||
$orgform = '';
|
||||
if (hasData($res)) {
|
||||
$studiengang = current(getData($res));
|
||||
$stg = $studiengang->bezeichnung;
|
||||
$orgform = $studiengang->orgform_kurzbz;
|
||||
}
|
||||
|
||||
$datum = new DateTime($antrag->datum_wiedereinstieg);
|
||||
$data = array(
|
||||
'prestudent' => $antrag->prestudent_id,
|
||||
'name' => trim($antrag->vorname . ' '. $antrag->nachname),
|
||||
'datum_wiedereinstieg' => $datum->format('d.m.Y'),
|
||||
'vorname' => $antrag->vorname,
|
||||
'nachname' => $antrag->nachname,
|
||||
'Orgform' => $orgform,
|
||||
'stg' => $stg
|
||||
);
|
||||
$result = $this->StudentModel->loadWhere(['prestudent_id'=> $antrag->prestudent_id]);
|
||||
if (hasData($result)) {
|
||||
$student = current(getData($result));
|
||||
$data['UID'] = $student->student_uid;
|
||||
}
|
||||
|
||||
// NOTE(chris): Sancho mail
|
||||
if(sendSanchoMail('Sancho_Mail_Antrag_U_Reminder', $data, $antrag->email, 'Reminder: Unterbrechung Wiedereinstieg'))
|
||||
{
|
||||
$count++;
|
||||
$this->StudierendenantragstatusModel->insert([
|
||||
'studierendenantrag_id' => $antrag->studierendenantrag_id,
|
||||
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_REMINDERSENT,
|
||||
'insertvon' => 'AntragJob'
|
||||
]);
|
||||
}
|
||||
}
|
||||
$this->logInfo($count . ' Reminder gesendet - Ende Job sendReminderWiedereinstieg');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Wiederholer after deadline to Abbrecher
|
||||
*
|
||||
*/
|
||||
public function handleWiederholerDeadline()
|
||||
{
|
||||
$this->logInfo('Start Job handleWiederholerDeadline');
|
||||
|
||||
$this->load->library('PrestudentLib');
|
||||
|
||||
$insertvon = $this->config->item('antrag_job_systemuser');
|
||||
if (!$insertvon) {
|
||||
$this->logError('Config "antrag_job_systemuser" nicht gesetzt');
|
||||
$this->logInfo('Ende Job handleWiederholerDeadline');
|
||||
return;
|
||||
}
|
||||
|
||||
$modifier_deadline = $this->config->item('wiederholung_job_deadline_date_modifier');
|
||||
if (!$modifier_deadline) {
|
||||
$this->logError('Config "wiederholung_job_deadline_date_modifier" nicht gesetzt');
|
||||
$this->logInfo('Ende Job handleWiederholerDeadline');
|
||||
return;
|
||||
}
|
||||
|
||||
$digi_start= $this->config->item('digitalization_start');
|
||||
if($digi_start)
|
||||
$digi_start = new DateTime($digi_start);
|
||||
|
||||
$dateDeadline = new DateTime();
|
||||
$dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline));
|
||||
|
||||
$result = $this->PruefungModel->getAllPrestudentsWhereCommitteeExamFailed(
|
||||
[
|
||||
null,
|
||||
Studierendenantragstatus_model::STATUS_REQUESTSENT_1,
|
||||
Studierendenantragstatus_model::STATUS_REQUESTSENT_2
|
||||
],
|
||||
$dateDeadline,
|
||||
$digi_start
|
||||
);
|
||||
if(isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
else
|
||||
{
|
||||
$prestudents = getData($result) ?: [];
|
||||
$count = 0;
|
||||
|
||||
$prestudents = $this->prestudentsGetUnique($prestudents);
|
||||
|
||||
|
||||
foreach ($prestudents as $prestudent)
|
||||
{
|
||||
$result = $this->prestudentlib->setAbbrecher($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz, $insertvon);
|
||||
if (isError($result))
|
||||
$this->logError(getError($result));
|
||||
else
|
||||
$count++;
|
||||
}
|
||||
$this->logInfo($count . " Students set to Abbrecher");
|
||||
}
|
||||
|
||||
$this->logInfo('Ende Job handleWiederholerDeadline');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Abmeldungen after deadline to Abbrecher
|
||||
*
|
||||
*/
|
||||
public function handleAbmeldungenStglDeadline()
|
||||
{
|
||||
$this->logInfo('Start Job handleAbmeldungenStglDeadline');
|
||||
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
$insertvon = $this->config->item('antrag_job_systemuser');
|
||||
if (!$insertvon) {
|
||||
$this->logError('Config "antrag_job_systemuser" nicht gesetzt');
|
||||
$this->logInfo('Ende Job handleAbmeldungenStglDeadline');
|
||||
return;
|
||||
}
|
||||
|
||||
$modifier_deadline = $this->config->item('abmeldung_job_deadline_date_modifier');
|
||||
if (!$modifier_deadline) {
|
||||
$this->logError('Config "abmeldung_job_deadline_date_modifier" nicht gesetzt');
|
||||
$this->logInfo('Ende Job handleAbmeldungenStglDeadline');
|
||||
return;
|
||||
}
|
||||
|
||||
$dateDeadline = new DateTime();
|
||||
$dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline));
|
||||
|
||||
$this->StudierendenantragModel->addSelect('prestudent_id');
|
||||
$this->StudierendenantragModel->addSelect('studiensemester_kurzbz');
|
||||
$this->StudierendenantragModel->addSelect('s.insertamum');
|
||||
|
||||
$this->StudierendenantragModel->db->where_in('public.get_rolle_prestudent(prestudent_id, studiensemester_kurzbz)', $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
|
||||
$result = $this->StudierendenantragModel->getWithLastStatusWhere([
|
||||
'typ' => Studierendenantrag_model::TYP_ABMELDUNG_STGL,
|
||||
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
's.insertamum <=' => $dateDeadline->format('c')
|
||||
]);
|
||||
|
||||
if(isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
else
|
||||
{
|
||||
$antraege = getData($result) ?: [];
|
||||
$count = 0;
|
||||
|
||||
foreach ($antraege as $antrag)
|
||||
{
|
||||
$result = $this->prestudentlib->setAbbrecher(
|
||||
$antrag->prestudent_id,
|
||||
$antrag->studiensemester_kurzbz,
|
||||
$insertvon,
|
||||
'abbrecherStgl',
|
||||
$antrag->insertamum
|
||||
);
|
||||
if (isError($result))
|
||||
$this->logError(getError($result));
|
||||
else
|
||||
{
|
||||
$count++;
|
||||
$result = $this->PrestudentModel->load($antrag->prestudent_id);
|
||||
if(!hasData($result)) {
|
||||
$this->logWarning('No Prestudent found');
|
||||
continue;
|
||||
}
|
||||
$prestudent = current(getData($result));
|
||||
$result = $this->StudiengangModel->load($prestudent->studiengang_kz);
|
||||
if(!hasData($result)) {
|
||||
$this->logWarning('No Studiengang found');
|
||||
continue;
|
||||
}
|
||||
$studiengang = current(getData($result));
|
||||
$result = $this->PersonModel->loadPrestudent($antrag->prestudent_id);
|
||||
if(!hasData($result))
|
||||
{
|
||||
$this->logWarning('No Person found');
|
||||
continue;
|
||||
}
|
||||
$person = current(getData($result));
|
||||
$email = $studiengang->email;
|
||||
$dataMail = array(
|
||||
'prestudent' => $antrag->prestudent_id,
|
||||
'studiensemester' => $antrag->studiensemester_kurzbz,
|
||||
'name' => trim($person->vorname . ' '. $person->nachname),
|
||||
);
|
||||
|
||||
if(!sendSanchoMail('Sancho_Mail_Antrag_A_Assist', $dataMail, $email, 'Einspruchsfrist abgelaufen'))
|
||||
{
|
||||
$this->logWarning("Failed to send Notification to " . $email);
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->logInfo($count . " Students set to Abbrecher");
|
||||
}
|
||||
$this->logInfo('Ende Job handleAbmeldungenStglDeadline');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Request to Student do Decide between Wiederholung and Verzicht
|
||||
*
|
||||
*/
|
||||
public function sendAufforderungWiederholer()
|
||||
{
|
||||
$this->logInfo('Start Job sendAufforderungWiederholer');
|
||||
|
||||
$modifier_request_1 = $this->config->item('wiederholung_job_request_1_date_modifier');
|
||||
$modifier_request_2 = $this->config->item('wiederholung_job_request_2_date_modifier');
|
||||
$modifier_deadline = $this->config->item('wiederholung_job_deadline_date_modifier');
|
||||
|
||||
$digi_start = $this->config->item('digitalization_start');
|
||||
if ($digi_start) {
|
||||
try {
|
||||
$digi_start = new DateTime($digi_start);
|
||||
} catch(Exception $e) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($modifier_deadline) {
|
||||
$dateDeadline = new DateTime();
|
||||
$dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline));
|
||||
|
||||
if ($digi_start)
|
||||
$dateDeadline = max($digi_start, $dateDeadline);
|
||||
} else {
|
||||
$dateDeadline = $digi_start ?: null;
|
||||
}
|
||||
|
||||
//first request
|
||||
if ($modifier_request_1) {
|
||||
$dateStichtag = new DateTime();
|
||||
$dateStichtag->sub(DateInterval::createFromDateString($modifier_request_1));
|
||||
if (!$dateDeadline || $dateStichtag > $dateDeadline)
|
||||
$this->sendReminder(
|
||||
'Request1',
|
||||
null,
|
||||
Studierendenantragstatus_model::STATUS_REQUESTSENT_1,
|
||||
$dateDeadline,
|
||||
$dateStichtag,
|
||||
$modifier_deadline,
|
||||
'Aufforderung: Bekanntgabe Wiederholung'
|
||||
);
|
||||
} else
|
||||
$this->logError('Config "wiederholung_job_request_1_date_modifier" nicht gesetzt');
|
||||
|
||||
//second request
|
||||
if ($modifier_request_2) {
|
||||
$dateStichtag = new DateTime();
|
||||
$dateStichtag->sub(DateInterval::createFromDateString($modifier_request_2));
|
||||
if (!$dateDeadline || $dateStichtag > $dateDeadline)
|
||||
$this->sendReminder(
|
||||
'Request2',
|
||||
Studierendenantragstatus_model::STATUS_REQUESTSENT_1,
|
||||
Studierendenantragstatus_model::STATUS_REQUESTSENT_2,
|
||||
$dateDeadline,
|
||||
$dateStichtag,
|
||||
$modifier_deadline,
|
||||
'Reminder Aufforderung: Bekanntgabe Wiederholung'
|
||||
);
|
||||
} else
|
||||
$this->logError('Config "wiederholung_job_request_2_date_modifier" nicht gesetzt');
|
||||
|
||||
$this->logInfo('Ende Job sendAufforderungWiederholer');
|
||||
}
|
||||
|
||||
protected function prestudentsGetUnique($prestudents)
|
||||
{
|
||||
$result = [];
|
||||
foreach ($prestudents as $prestudent) {
|
||||
if (!isset($result[$prestudent->prestudent_id]))
|
||||
$result[$prestudent->prestudent_id] = $prestudent;
|
||||
else {
|
||||
if ($result[$prestudent->prestudent_id]->datum > $prestudent->datum)
|
||||
$result[$prestudent->prestudent_id] = $prestudent;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function sendReminder($name, $status_from, $status_to, $deadline, $date_stichtag, $modifier_deadline, $subject)
|
||||
{
|
||||
$this->logInfo('Start Job sendAufforderungWiederholer ' . $name);
|
||||
|
||||
$result = $this->PruefungModel->getAllPrestudentsWhereCommitteeExamFailed($status_from, $date_stichtag, $deadline);
|
||||
|
||||
if(isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
else
|
||||
{
|
||||
$prestudents = getData($result) ?: [];
|
||||
$count = 0;
|
||||
|
||||
$prestudents = $this->prestudentsGetUnique($prestudents);
|
||||
|
||||
foreach ($prestudents as $prestudent)
|
||||
{
|
||||
$stg_kz = $prestudent->studiengang_kz;
|
||||
if (in_array($stg_kz, $this->config->item('stgkz_blacklist_wiederholung')))
|
||||
continue;
|
||||
$url = site_url('lehre/Studierendenantrag/wiederholung/' . $prestudent->prestudent_id);
|
||||
$urlCIS = CIS_ROOT . 'index.ci.php/lehre/Studierendenantrag/wiederholung/' . $prestudent->prestudent_id;
|
||||
$email = $this->StudentModel->getEmailFH($this->StudentModel->getUID($prestudent->prestudent_id));
|
||||
|
||||
$fristende = new DateTime($prestudent->datum);
|
||||
$fristende->add(DateInterval::createFromDateString($modifier_deadline));
|
||||
|
||||
$datum_kp = new DateTime($prestudent->datum);
|
||||
|
||||
$result = $this->StudiensemesterModel->getNextFrom($prestudent->studiensemester_kurzbz);
|
||||
$next_sem = "";
|
||||
$sem_after_next_sem = "";
|
||||
if (hasData($result)) {
|
||||
$next_sem = current(getData($result))->studiensemester_kurzbz;
|
||||
$result = $this->StudiensemesterModel->getNextFrom($next_sem);
|
||||
if (hasData($result)) {
|
||||
$sem_after_next_sem = current(getData($result))->studiensemester_kurzbz;
|
||||
}
|
||||
}
|
||||
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$result = $this->PrestudentstatusModel->loadLastWithStgDetails($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz);
|
||||
if (hasData($result)) {
|
||||
$ausbildungssemester = current(getData($result))->semester;
|
||||
}
|
||||
|
||||
$dataMail = array(
|
||||
'name'=> trim($prestudent->vorname . ' '. $prestudent->nachname),
|
||||
'vorname' => $prestudent->vorname,
|
||||
'nachname' => $prestudent->nachname,
|
||||
'pers_kz'=> $prestudent->matrikelnr,
|
||||
'stg' => $prestudent->bezeichnung,
|
||||
'lvbezeichnung' => $prestudent->lvbezeichnung,
|
||||
'datum_kp' => $datum_kp->format('d.m.Y'),
|
||||
'studiensemester'=> $prestudent->studiensemester_kurzbz,
|
||||
'Orgform'=> $prestudent->orgform,
|
||||
'prestudent_id' => $prestudent->prestudent_id,
|
||||
'url' => $url,
|
||||
'urlCIS' => $urlCIS,
|
||||
'fristablauf' => $fristende->format('d.m.Y'),
|
||||
'pre_wiederholer_sem' => $next_sem,
|
||||
'wiederholer_sem' => $sem_after_next_sem,
|
||||
'sem' => $ausbildungssemester
|
||||
);
|
||||
|
||||
// NOTE(chris): Sancho mail
|
||||
if(sendSanchoMail('Sancho_Mail_Antrag_W_' . $name, $dataMail, $email, $subject))
|
||||
{
|
||||
$antrag_id = null;
|
||||
$result = $this->StudierendenantragModel->loadWhere([
|
||||
'prestudent_id' => $prestudent->prestudent_id,
|
||||
'typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG
|
||||
]);
|
||||
if (isError($result))
|
||||
$this->logError(getError($result));
|
||||
elseif (hasData($result))
|
||||
$antrag_id = current(getData($result) ?: []) -> studierendenantrag_id;
|
||||
if ($antrag_id == null)
|
||||
{
|
||||
$result = $this->StudierendenantragModel->insert([
|
||||
'prestudent_id' => $prestudent->prestudent_id,
|
||||
'studiensemester_kurzbz'=> $prestudent->studiensemester_kurzbz,
|
||||
'datum' => date('c'),
|
||||
'typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG,
|
||||
'insertvon' => 'AntragJob'
|
||||
]);
|
||||
if (isError($result))
|
||||
$this->logError(getError($result));
|
||||
else
|
||||
$antrag_id = getData($result);
|
||||
}
|
||||
if ($antrag_id)
|
||||
{
|
||||
$result = $this->StudierendenantragstatusModel->insert([
|
||||
'studierendenantrag_id' => $antrag_id,
|
||||
'studierendenantrag_statustyp_kurzbz' => $status_to,
|
||||
'insertvon' => 'AntragJob'
|
||||
]);
|
||||
if (isError($result))
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
$this->logInfo($count . " Mails '" . $subject . "' sent");
|
||||
}
|
||||
$this->logInfo('Ende Job sendAufforderungWiederholer ' . $name);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class ReihungstestJob extends JOB_Controller
|
||||
{
|
||||
|
||||
const LAST_DAYS_PRESTUDENTSTATUS = 5;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -826,7 +829,7 @@ class ReihungstestJob extends JOB_Controller
|
||||
AND tbl_studiengang.typ IN ('b', 'm')
|
||||
)
|
||||
SELECT * FROM prst
|
||||
WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - 1)
|
||||
WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - ". self::LAST_DAYS_PRESTUDENTSTATUS .")
|
||||
AND (studiengang_typ = 'b' OR (studiengang_typ = 'm' AND EXISTS (SELECT 1 /* Master Studiengänge berücksichtigen wenn auch Bachelor im gleichen Semester */
|
||||
FROM prst prstb
|
||||
WHERE studiengang_typ = 'b'
|
||||
@@ -868,7 +871,8 @@ class ReihungstestJob extends JOB_Controller
|
||||
tbl_person.nachname,
|
||||
tbl_person.vorname,
|
||||
tbl_prestudent.*,
|
||||
tbl_studiengang.typ AS studiengang_typ
|
||||
tbl_studiengang.typ AS studiengang_typ,
|
||||
tbl_prestudentstatus.datum
|
||||
FROM PUBLIC.tbl_person
|
||||
JOIN PUBLIC.tbl_prestudent USING (person_id)
|
||||
JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id)
|
||||
@@ -901,7 +905,7 @@ class ReihungstestJob extends JOB_Controller
|
||||
$mailArray[$rowNiedrPrios->studiengang_kz][$rowNiedrPrios->orgform_kurzbz]['AufnahmeHoeherePrio'][]
|
||||
= $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
|
||||
}
|
||||
elseif ($rowNiedrPrios->laststatus == 'Bewerber')
|
||||
elseif ($rowNiedrPrios->laststatus == 'Bewerber' && $row_ps->prestudenstatus_datum > $rowNiedrPrios->datum)
|
||||
{
|
||||
// Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
|
||||
$lastStatus = $this->PrestudentstatusModel->getLastStatus($rowNiedrPrios->prestudent_id);
|
||||
@@ -927,7 +931,7 @@ class ReihungstestJob extends JOB_Controller
|
||||
= $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
|
||||
}
|
||||
}
|
||||
elseif ($rowNiedrPrios->laststatus == 'Wartender')
|
||||
elseif ($rowNiedrPrios->laststatus == 'Wartender' && $row_ps->prestudenstatus_datum > $rowNiedrPrios->datum)
|
||||
{
|
||||
// Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
|
||||
// Mail zur Info an Assistenz schicken
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \REST_Controller as REST_Controller;
|
||||
|
||||
/**
|
||||
*/
|
||||
class Attachment extends FHC_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->load->model('education/Studierendenantrag_model', 'StudierendenantragModel');
|
||||
|
||||
$this->load->library('DmsLib');
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('PermissionLib');
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @param integer $dms_id
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function show($dms_id)
|
||||
{
|
||||
$result = $this->StudierendenantragModel->loadWhere(['dms_id' => $dms_id]);
|
||||
if (!getData($result))
|
||||
return show_404();
|
||||
|
||||
if (!$this->permissionlib->isBerechtigt('student/antragfreigabe'))
|
||||
{
|
||||
$isSamePerson = false;
|
||||
$antraege = getData($result);
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
foreach ($antraege as $antrag)
|
||||
{
|
||||
$prestudent = $this->PrestudentModel->load($antrag->prestudent_id);
|
||||
if(hasData($prestudent))
|
||||
{
|
||||
if(current(getData($prestudent))->person_id == getAuthPersonId())
|
||||
{
|
||||
$isSamePerson = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($isSamePerson == false)
|
||||
{
|
||||
$this->output->set_status_header(REST_Controller::HTTP_FORBIDDEN); // set the HTTP header as unauthorized
|
||||
|
||||
$this->load->library('EPrintfLib'); // loads the EPrintfLib to format the output
|
||||
|
||||
// Prints the main error message
|
||||
$this->eprintflib->printError('You are not allowed to access to this content');
|
||||
// Prints the called controller name
|
||||
$this->eprintflib->printInfo('Controller name: '.$this->router->class);
|
||||
// Prints the called controller method name
|
||||
$this->eprintflib->printInfo('Method name: '.$this->router->method);
|
||||
// Prints the required permissions needed to access to this method
|
||||
$this->eprintflib->printInfo('Required permissions: student/antragfreigabe');
|
||||
|
||||
return show_error('You are not entitled to read this document');
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->dmslib->download($dms_id);
|
||||
if (isError($result))
|
||||
return show_error(getError($result));
|
||||
|
||||
$this->outputFile(getData($result));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \DateTime as DateTime;
|
||||
use \Studierendenantrag_model as Studierendenantrag_model;
|
||||
use \REST_Controller as REST_Controller;
|
||||
|
||||
/**
|
||||
*/
|
||||
class Wiederholung extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'assistenz'=> 'student/studierendenantrag:w'
|
||||
]);
|
||||
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'studierendenantrag'
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
public function assistenz($antrag_id)
|
||||
{
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag($antrag_id);
|
||||
|
||||
if (isError($result))
|
||||
return show_error(getError($result));
|
||||
|
||||
if (!hasData($result))
|
||||
return show_404();
|
||||
|
||||
$this->load->view('lehre/Antrag/Wiederholung/Student', [
|
||||
'antrag_id' => $antrag_id,
|
||||
'antrag' => getData($result)
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \stdClass as stdClass;
|
||||
|
||||
/**
|
||||
*/
|
||||
class Studierendenantrag extends FHC_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Load Libraries
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('AntragLib');
|
||||
|
||||
// Load Models
|
||||
$this->load->model('education/Studierendenantrag_model', 'StudierendenantragModel');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'studierendenantrag'
|
||||
]);
|
||||
|
||||
if (strtolower($this->router->method) === 'leitung')
|
||||
$this->_isAllowed([
|
||||
'leitung' => ['student/studierendenantrag:r', 'student/antragfreigabe:r']
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
public function index()
|
||||
{
|
||||
$dataAntrag = $this->StudierendenantragModel->loadForPerson(getAuthPersonId());
|
||||
if (isError($dataAntrag))
|
||||
return show_error(getError($dataAntrag));
|
||||
$dataAntrag = (getData($dataAntrag) ? : []);
|
||||
$prestudentenArr = array();
|
||||
|
||||
foreach ($dataAntrag as $antrag)
|
||||
{
|
||||
if (!isset($prestudentenArr[$antrag->prestudent_id]))
|
||||
{
|
||||
$prestudentenArr[$antrag->prestudent_id] = array(
|
||||
'allowedNewTypes' => array(),
|
||||
'antraege'=> array(),
|
||||
'bezeichnungStg' => $antrag->bezeichnung,
|
||||
'bezeichnungOrgform' => $antrag->orgform
|
||||
);
|
||||
|
||||
$result = $this->antraglib->getPrestudentWiederholungsBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Wiederholung';
|
||||
|
||||
$result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Unterbrechung';
|
||||
|
||||
$result = $this->antraglib->getPrestudentAbmeldeBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Abmeldung';
|
||||
}
|
||||
if ($antrag->studierendenantrag_id == null)
|
||||
continue;
|
||||
if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL && (!$antrag->isapproved))
|
||||
continue;
|
||||
|
||||
$prestudentenArr[$antrag->prestudent_id]['antraege'][] = $antrag;
|
||||
}
|
||||
|
||||
$this->load->view('lehre/Antrag/Student/List', [
|
||||
'antraege' => $prestudentenArr
|
||||
]);
|
||||
}
|
||||
|
||||
public function leitung()
|
||||
{
|
||||
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe');
|
||||
$stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
|
||||
|
||||
$stgL = [];
|
||||
if ($studiengaenge) {
|
||||
$result = $this->StudiengangModel->loadWithOrgform($studiengaenge);
|
||||
if (isError($result))
|
||||
return show_error(getError($result));
|
||||
$antraege = getData($result) ?: [];
|
||||
|
||||
foreach ($antraege as $antrag) {
|
||||
if (!isset($stgL[$antrag->studiengang_kz])) {
|
||||
$stgL[$antrag->studiengang_kz] = new stdClass();
|
||||
$stgL[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
|
||||
$stgL[$antrag->studiengang_kz]->orgform = $antrag->orgform;
|
||||
$stgL[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$stgA = [];
|
||||
if ($stgsNeuanlage) {
|
||||
$result = $this->StudiengangModel->loadWithOrgform($stgsNeuanlage);
|
||||
if (isError($result))
|
||||
return show_error(getError($result));
|
||||
$antraege = getData($result) ?: [];
|
||||
|
||||
foreach ($antraege as $antrag) {
|
||||
if (!isset($stgA[$antrag->studiengang_kz])) {
|
||||
$stgA[$antrag->studiengang_kz] = new stdClass();
|
||||
$stgA[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
|
||||
$stgA[$antrag->studiengang_kz]->orgform = $antrag->orgform;
|
||||
$stgA[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->load->view('lehre/Antrag/Leitung/List', [
|
||||
'stgA' => $stgA,
|
||||
'stgL' => $stgL
|
||||
]);
|
||||
}
|
||||
|
||||
public function abmeldung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Abmeldung'
|
||||
]);
|
||||
}
|
||||
|
||||
public function abmeldungstgl($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'AbmeldungStgl'
|
||||
]);
|
||||
}
|
||||
|
||||
public function unterbrechung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Unterbrechung'
|
||||
]);
|
||||
}
|
||||
|
||||
public function wiederholung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Wiederholung'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the caller is allowed to access to this content with the given permissions
|
||||
* If it is not allowed will set the HTTP header with code 401
|
||||
* Wrapper for permissionlib->isEntitled
|
||||
*/
|
||||
private function _isAllowed($requiredPermissions)
|
||||
{
|
||||
// Loads permission lib
|
||||
$this->load->library('PermissionLib');
|
||||
|
||||
// Checks if this user is entitled to access to this content
|
||||
if (!$this->permissionlib->isEntitled($requiredPermissions, $this->router->method))
|
||||
{
|
||||
$this->output->set_status_header(REST_Controller::HTTP_UNAUTHORIZED); // set the HTTP header as unauthorized
|
||||
|
||||
$this->load->library('EPrintfLib'); // loads the EPrintfLib to format the output
|
||||
|
||||
// Prints the main error message
|
||||
$this->eprintflib->printError('You are not allowed to access to this content');
|
||||
// Prints the called controller name
|
||||
$this->eprintflib->printInfo('Controller name: '.$this->router->class);
|
||||
// Prints the called controller method name
|
||||
$this->eprintflib->printInfo('Method name: '.$this->router->method);
|
||||
// Prints the required permissions needed to access to this method
|
||||
$this->eprintflib->printInfo('Required permissions: '.$this->_rpsToString($requiredPermissions, $this->router->method));
|
||||
|
||||
exit; // immediately terminate the execution
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an array of permissions to a string that contains them as a comma separated list
|
||||
* Ex: "<permission 1>, <permission 2>, <permission 3>"
|
||||
*/
|
||||
private function _rpsToString($requiredPermissions, $method)
|
||||
{
|
||||
$strRequiredPermissions = ''; // string that contains all the required permissions needed to access to this method
|
||||
|
||||
if (isset($requiredPermissions[$method])) // if the called method is present in the permissions array
|
||||
{
|
||||
// If it is NOT then convert it into an array
|
||||
$rpsMethod = $requiredPermissions[$method];
|
||||
if (!is_array($rpsMethod))
|
||||
{
|
||||
$rpsMethod = array($rpsMethod);
|
||||
}
|
||||
|
||||
// Copy all the permissions into $strRequiredPermissions separated by a comma
|
||||
for ($i = 0; $i < count($rpsMethod); $i++)
|
||||
{
|
||||
$strRequiredPermissions .= $rpsMethod[$i].', ';
|
||||
}
|
||||
|
||||
$strRequiredPermissions = rtrim($strRequiredPermissions, ', ');
|
||||
}
|
||||
|
||||
return $strRequiredPermissions;
|
||||
}
|
||||
}
|
||||
@@ -242,7 +242,7 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
$empfehlungsanfrage_an = !isEmptyArray($result) ? implode(', ', array_column($result, 'fullname')) : '';
|
||||
|
||||
// Request Recommendation
|
||||
if($this->anrechnunglib->requestRecommendation($anrechnung_id))
|
||||
if ($this->anrechnunglib->requestRecommendation($anrechnung_id))
|
||||
{
|
||||
$retval[]= array(
|
||||
'anrechnung_id' => $anrechnung_id,
|
||||
@@ -254,31 +254,23 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mails to lectors
|
||||
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
|
||||
* even if they are required for more recommendations
|
||||
* */
|
||||
if (!isEmptyArray($retval))
|
||||
{
|
||||
if ($this->config->item('send_mail') === TRUE)
|
||||
{
|
||||
$this->_sendSanchoMailToLectors($anrechnung_id);
|
||||
}
|
||||
|
||||
// Output json to ajax
|
||||
return $this->outputJsonSuccess($retval);
|
||||
}
|
||||
|
||||
// Output json to ajax
|
||||
if ($empfehlungsanfrage_an == '')
|
||||
{
|
||||
$this->terminateWithJsonError(
|
||||
"Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
|
||||
);
|
||||
}
|
||||
|
||||
if (isEmptyArray($retval))
|
||||
{
|
||||
$this->terminateWithJsonError(
|
||||
"Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
|
||||
);
|
||||
$this->terminateWithJsonError("Empfehlung wurde nicht angefordert");
|
||||
}
|
||||
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
else
|
||||
{
|
||||
// Output json to ajax
|
||||
return $this->outputJsonSuccess($retval);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -249,19 +249,6 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mails
|
||||
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
|
||||
* even if they are required for more recommendations
|
||||
* */
|
||||
if (!isEmptyArray($retval))
|
||||
{
|
||||
if ($this->config->item('send_mail') === TRUE)
|
||||
{
|
||||
$this->_sendSanchoMail($retval);
|
||||
}
|
||||
}
|
||||
|
||||
// Output json to ajax
|
||||
if (isEmptyArray($retval))
|
||||
{
|
||||
@@ -273,7 +260,7 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
$this->terminateWithJsonError('Es wurden keine Empfehlungen angefordert');
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($retval);
|
||||
$this->outputJsonSuccess($retval);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -111,6 +111,8 @@ class requestAnrechnung extends Auth_Controller
|
||||
$lehrveranstaltung_id = $this->input->post('lv_id');
|
||||
$studiensemester_kurzbz = $this->input->post('studiensemester');
|
||||
$bestaetigung = $this->input->post('bestaetigung');
|
||||
$begruendung_ects = $this->input->post('begruendung_ects');
|
||||
$begruendung_lvinhalt = $this->input->post('begruendung_lvinhalt');
|
||||
|
||||
// Validate data
|
||||
if (empty($_FILES['uploadfile']['name']))
|
||||
@@ -121,7 +123,9 @@ class requestAnrechnung extends Auth_Controller
|
||||
if (isEmptyString($begruendung_id) ||
|
||||
isEmptyString($anmerkung) ||
|
||||
isEmptyString($lehrveranstaltung_id) ||
|
||||
isEmptyString($studiensemester_kurzbz))
|
||||
isEmptyString($studiensemester_kurzbz) ||
|
||||
isEmptyString($begruendung_ects) ||
|
||||
isEmptyString($begruendung_lvinhalt))
|
||||
{
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorFelderFehlen'));
|
||||
}
|
||||
@@ -172,7 +176,9 @@ class requestAnrechnung extends Auth_Controller
|
||||
$lehrveranstaltung_id,
|
||||
$begruendung_id,
|
||||
$lastInsert_dms_id,
|
||||
$anmerkung
|
||||
$anmerkung,
|
||||
$begruendung_ects,
|
||||
$begruendung_lvinhalt
|
||||
);
|
||||
|
||||
if (isError($result))
|
||||
|
||||
@@ -21,6 +21,7 @@ class InfoCenter extends Auth_Controller
|
||||
const FREIGEGEBEN_PAGE = 'freigegeben';
|
||||
const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert';
|
||||
const ABGEWIESEN_PAGE = 'abgewiesen';
|
||||
const AUFGENOMMEN_PAGE = 'aufgenommen';
|
||||
const SHOW_DETAILS_PAGE = 'showDetails';
|
||||
const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails';
|
||||
const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung';
|
||||
@@ -115,6 +116,7 @@ class InfoCenter extends Auth_Controller
|
||||
'index' => 'infocenter:r',
|
||||
'freigegeben' => 'infocenter:r',
|
||||
'abgewiesen' => 'infocenter:r',
|
||||
'aufgenommen' => 'infocenter:r',
|
||||
'reihungstestAbsolviert' => 'infocenter:r',
|
||||
'showDetails' => 'infocenter:r',
|
||||
'showZGVDetails' => 'lehre/zgvpruefung:r',
|
||||
@@ -228,6 +230,16 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
$this->load->view('system/infocenter/infocenterAbgewiesen.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* Aufgenommene page of the InfoCenter tool
|
||||
*/
|
||||
public function aufgenommen()
|
||||
{
|
||||
$this->_setNavigationMenu(self::AUFGENOMMEN_PAGE); // define the navigation menu for this page
|
||||
|
||||
$this->load->view('system/infocenter/infocenterAufgenommen.php');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -314,7 +326,7 @@ class InfoCenter extends Auth_Controller
|
||||
show_error('Person does not exist!');
|
||||
|
||||
$origin_page = $this->input->get(self::ORIGIN_PAGE);
|
||||
if ($origin_page == self::INDEX_PAGE)
|
||||
if (in_array($origin_page, array(self::INDEX_PAGE, self::ABGEWIESEN_PAGE)))
|
||||
{
|
||||
// mark person as locked for editing
|
||||
$result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP);
|
||||
@@ -359,7 +371,14 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
if (isError($result)) show_error(getError($result));
|
||||
|
||||
$redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
|
||||
$origin_page = $this->input->get(self::ORIGIN_PAGE);
|
||||
|
||||
if ($origin_page === self::ABGEWIESEN_PAGE)
|
||||
$redirectLink = self::INFOCENTER_URI. '/' .self::ABGEWIESEN_PAGE;
|
||||
else
|
||||
$redirectLink = '/'.self::INFOCENTER_URI;
|
||||
|
||||
$redirectLink .= '?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
|
||||
|
||||
// Force reload of Dataset after Unlock
|
||||
$redirectLink .= '&'.self::KEEP_TABLESORTER_FILTER.'=true';
|
||||
@@ -1526,6 +1545,7 @@ class InfoCenter extends Auth_Controller
|
||||
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
|
||||
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
|
||||
$abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
|
||||
$aufgenommenLink = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE);
|
||||
|
||||
$currentFilterId = $this->input->get(self::FILTER_ID);
|
||||
if (isset($currentFilterId))
|
||||
@@ -1533,6 +1553,7 @@ class InfoCenter extends Auth_Controller
|
||||
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
|
||||
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
|
||||
$abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
|
||||
$aufgenommenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
|
||||
}
|
||||
|
||||
$this->navigationlib->setSessionMenu(
|
||||
@@ -1583,7 +1604,19 @@ class InfoCenter extends Auth_Controller
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
30 // sort
|
||||
)
|
||||
),
|
||||
'aufgenommen' => $this->navigationlib->oneLevel(
|
||||
'Aufgenommene', // description
|
||||
$aufgenommenLink, // link
|
||||
null, // children
|
||||
'check', // icon
|
||||
null, // subscriptDescription
|
||||
false, // expand
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
40 // sort
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -1611,6 +1644,9 @@ class InfoCenter extends Auth_Controller
|
||||
if ($origin_page === self::ABGEWIESEN_PAGE)
|
||||
$link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
|
||||
|
||||
if ($origin_page === self::AUFGENOMMEN_PAGE)
|
||||
$link = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE);
|
||||
|
||||
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
|
||||
if (isset($prevFilterId))
|
||||
{
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \DateTime as DateTime;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Collection of utility functions for general purpose
|
||||
// ------------------------------------------------------------------------
|
||||
@@ -405,3 +407,17 @@ function findResource($path, $resource, $subdir = false, $extraDir = null)
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* check if String can be converted to a date
|
||||
*/
|
||||
function isValidDate($dateString)
|
||||
{
|
||||
try
|
||||
{
|
||||
return (new DateTime($dateString)) !== false;
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,6 +174,8 @@ class AnrechnungLib
|
||||
$anrechnung_data->insertvon = '';
|
||||
$anrechnung_data->studiensemester_kurzbz = '';
|
||||
$anrechnung_data->empfehlung = '';
|
||||
$anrechnung_data->begruendung_ects = '';
|
||||
$anrechnung_data->begruendung_lvinhalt = '';
|
||||
$anrechnung_data->status_kurzbz = '';
|
||||
$anrechnung_data->status = getUserLanguage() == 'German' ? 'neu' : 'new';
|
||||
$anrechnung_data->dokumentname = '';
|
||||
@@ -894,6 +896,8 @@ class AnrechnungLib
|
||||
$anrechnung_data->insertvon= $anrechnung->insertvon;
|
||||
$anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz;
|
||||
$anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung;
|
||||
$anrechnung_data->begruendung_ects = $anrechnung->begruendung_ects;
|
||||
$anrechnung_data->begruendung_lvinhalt = $anrechnung->begruendung_lvinhalt;
|
||||
|
||||
// Get last status_kurzbz
|
||||
$result = $this->ci->AnrechnungModel->getLastAnrechnungstatus($anrechnung->anrechnung_id);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -595,6 +595,8 @@ class DmsLib
|
||||
if (isError($insDmsResult)) return $insDmsResult;
|
||||
|
||||
$upload_data['dms_id'] = getData($insDmsResult);
|
||||
if(isset($upload_data['file_type']) && !isset($dms['mimetype']))
|
||||
$dms['mimetype'] = $upload_data['file_type'];
|
||||
|
||||
// Insert DMS version
|
||||
$insVersionResult = $this->_ci->DmsVersionModel->insert(
|
||||
|
||||
@@ -182,6 +182,7 @@ class MailLib
|
||||
{
|
||||
if ($this->sended == $this->email_number_per_time_range)
|
||||
{
|
||||
$this->sended = 0;
|
||||
sleep($this->email_time_range); // Wait!!!
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,410 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* FH-Complete
|
||||
*
|
||||
* @package FHC-Helper
|
||||
* @author FHC-Team
|
||||
* @copyright Copyright (c) 2023 fhcomplete.net
|
||||
* @license GPLv3
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class PrestudentLib
|
||||
{
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
// // Configs
|
||||
// $this->_ci->load->config('studierendenantrag');
|
||||
|
||||
// // Models
|
||||
$this->_ci->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->_ci->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->_ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->_ci->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||
$this->_ci->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
|
||||
$this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
|
||||
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
$this->_ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
}
|
||||
|
||||
public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null, $statusgrund_kurzbz = null, $datum = null, $bestaetigtam = null)
|
||||
{
|
||||
if (!$insertvon)
|
||||
$insertvon = getAuthUID();
|
||||
|
||||
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
if (!$result)
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]));
|
||||
|
||||
$prestudent_status = current($result);
|
||||
|
||||
$result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
if (!$result)
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
|
||||
|
||||
$student = current($result);
|
||||
|
||||
if(!$datum)
|
||||
$datum = date('c');
|
||||
|
||||
if(!$bestaetigtam)
|
||||
$bestaetigtam = date('c');
|
||||
|
||||
//Status und Statusgrund updaten
|
||||
$result = $this->_ci->PrestudentstatusModel->withGrund($statusgrund_kurzbz)->insert([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_ABBRECHER,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'ausbildungssemester' => $prestudent_status->ausbildungssemester,
|
||||
'datum' => $datum,
|
||||
'insertvon' => $insertvon,
|
||||
'insertamum' => date('c'),
|
||||
'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
|
||||
'studienplan_id'=> $prestudent_status->studienplan_id,
|
||||
'bestaetigtvon' => $insertvon,
|
||||
'bestaetigtam' => $bestaetigtam
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
|
||||
//Verband anlegen
|
||||
$result = $this->_ci->LehrverbandModel->load([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'A',
|
||||
'gruppe' => ''
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
if (!$result)
|
||||
{
|
||||
$result = $this->_ci->LehrverbandModel->load([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => '',
|
||||
'gruppe' => ''
|
||||
]);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
|
||||
if(!$result)
|
||||
{
|
||||
$this->_ci->LehrverbandModel->insert([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => '',
|
||||
'gruppe' => '',
|
||||
'bezeichnung' => 'Ab-Unterbrecher',
|
||||
'aktiv' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
$this->_ci->LehrverbandModel->insert([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'A',
|
||||
'gruppe' => '',
|
||||
'bezeichnung' => 'Abbrecher',
|
||||
'aktiv' => true
|
||||
]);
|
||||
}
|
||||
|
||||
//noch nicht eingetragene Zeugnisnoten auf 9 setzen
|
||||
$result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $studiensemester_kurzbz);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result) ?: [];
|
||||
|
||||
foreach ($result as $lv)
|
||||
{
|
||||
if (!$lv->note)
|
||||
{
|
||||
$result = $this->_ci->ZeugnisnoteModel->insert([
|
||||
'note' => 9,
|
||||
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz,
|
||||
'student_uid' => $lv->uid,
|
||||
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id
|
||||
]);
|
||||
if (isError($result)) {
|
||||
$result = $this->_ci->ZeugnisnoteModel->update([
|
||||
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz,
|
||||
'student_uid' => $lv->uid,
|
||||
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id
|
||||
], [
|
||||
'note' => 9
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Update Aktionen
|
||||
|
||||
//StudentModel updaten
|
||||
$this->_ci->StudentModel->update([
|
||||
'student_uid' => $student->student_uid
|
||||
], [
|
||||
'verband' => 'A',
|
||||
'gruppe' => '',
|
||||
'semester' => 0,
|
||||
'updatevon' => $insertvon,
|
||||
'updateamum' => date('c')
|
||||
]);
|
||||
|
||||
//Studentlehrverband setzen
|
||||
$this->_ci->StudentlehrverbandModel->update([
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'student_uid' => $student->student_uid
|
||||
], [
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'A',
|
||||
'gruppe' => '',
|
||||
'updateamum' => date('c'),
|
||||
'updatevon' => $insertvon
|
||||
]);
|
||||
|
||||
//Benutzer inaktiv setzen
|
||||
$this->_ci->BenutzerModel->update([
|
||||
'uid' => $student->student_uid
|
||||
], [
|
||||
'aktiv' => false,
|
||||
'updateaktivvon' => $insertvon,
|
||||
'updateaktivam' => date('c'),
|
||||
'updatevon' => $insertvon,
|
||||
'updateamum' => date('c')
|
||||
]);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
public function setUnterbrecher($prestudent_id, $studiensemester_kurzbz, $studierendenantrag_id, $insertvon = null)
|
||||
{
|
||||
$ausbildungssemester_plus = 0;
|
||||
if (!$insertvon)
|
||||
$insertvon = getAuthUID();
|
||||
|
||||
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
if (!$result) {
|
||||
//NOTE(manu): only valid if nextSemester focus max
|
||||
|
||||
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
|
||||
//check if ausbildungssemester is last
|
||||
$this->_ci->StudiengangModel->addJoin('public.tbl_prestudent p', 'studiengang_kz');
|
||||
$res = $this->_ci->StudiengangModel->loadWhere(['p.prestudent_id' => $prestudent_id]);
|
||||
if(isError($res))
|
||||
return $res;
|
||||
if(!hasData($res))
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_for_prestudent', [
|
||||
'prestudent_id' => $prestudent_id
|
||||
]));
|
||||
|
||||
$studiengang = current(getData($res));
|
||||
$prestudent_status = current($result);
|
||||
if($prestudent_status->ausbildungssemester + 1 < $studiengang->max_semester)
|
||||
$ausbildungssemester_plus = 1;
|
||||
|
||||
if(!$result)
|
||||
{
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]));
|
||||
}
|
||||
}
|
||||
|
||||
$prestudent_status = current($result);
|
||||
$result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
if (!$result)
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
|
||||
|
||||
$student = current($result);
|
||||
|
||||
$resultAntrag = $this->_ci->StudierendenantragModel->load($studierendenantrag_id);
|
||||
if (isError($resultAntrag))
|
||||
return $resultAntrag;
|
||||
$resultAntrag = getData($resultAntrag);
|
||||
if (!$resultAntrag)
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_antrag_found', ['id' => $studierendenantrag_id]));
|
||||
|
||||
$antrag = current($resultAntrag);
|
||||
|
||||
//Status updaten
|
||||
$result = $this->_ci->PrestudentstatusModel->insert([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_UNTERBRECHER,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'ausbildungssemester' => $prestudent_status->ausbildungssemester + $ausbildungssemester_plus,
|
||||
'datum' => date('c'),
|
||||
'insertvon' => $insertvon,
|
||||
'insertamum' => date('c'),
|
||||
'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
|
||||
'studienplan_id'=> $prestudent_status->studienplan_id,
|
||||
'bestaetigtvon' => $insertvon,
|
||||
'bestaetigtam' => date('c'),
|
||||
'anmerkung'=> 'Wiedereinstieg ' . $antrag->datum_wiedereinstieg
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
//Verband anlegen
|
||||
$result = $this->_ci->LehrverbandModel->load([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'B',
|
||||
'gruppe' => ''
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
if (!$result)
|
||||
{
|
||||
$result = $this->_ci->LehrverbandModel->load([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => '',
|
||||
'gruppe' => ''
|
||||
]);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result);
|
||||
|
||||
if(!$result)
|
||||
{
|
||||
$this->_ci->LehrverbandModel->insert([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => '',
|
||||
'gruppe' => '',
|
||||
'bezeichnung' => 'Ab-Unterbrecher',
|
||||
'aktiv' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
$this->_ci->LehrverbandModel->insert([
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'B',
|
||||
'gruppe' => '',
|
||||
'bezeichnung' => 'Unterbrecher',
|
||||
'aktiv' => true
|
||||
]);
|
||||
}
|
||||
|
||||
//noch nicht eingetragene Zeugnisnoten auf 9 setzen
|
||||
$result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $studiensemester_kurzbz);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$result = getData($result) ?: [];
|
||||
|
||||
foreach ($result as $lv)
|
||||
{
|
||||
if (!$lv->note)
|
||||
{
|
||||
$result = $this->_ci->ZeugnisnoteModel->insert([
|
||||
'note' => 9,
|
||||
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz,
|
||||
'student_uid' => $lv->uid,
|
||||
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id
|
||||
]);
|
||||
if (isError($result)) {
|
||||
$result = $this->_ci->ZeugnisnoteModel->update([
|
||||
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz,
|
||||
'student_uid' => $lv->uid,
|
||||
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id
|
||||
], [
|
||||
'note' => 9
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Update Aktionen
|
||||
|
||||
//StudentModel updaten
|
||||
$this->_ci->StudentModel->update([
|
||||
'student_uid' => $student->student_uid
|
||||
], [
|
||||
'verband' => 'B',
|
||||
'gruppe' => '',
|
||||
'semester' => 0,
|
||||
'updatevon' => $insertvon,
|
||||
'updateamum' => date('c')
|
||||
]);
|
||||
|
||||
//Studentlehrverband setzen
|
||||
$result = $this->_ci->StudentlehrverbandModel->loadWhere([
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'student_uid' => $student->student_uid
|
||||
]);
|
||||
if (hasData($result)) {
|
||||
$this->_ci->StudentlehrverbandModel->update([
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'student_uid' => $student->student_uid
|
||||
], [
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'B',
|
||||
'gruppe' => '',
|
||||
'updateamum' => date('c'),
|
||||
'updatevon' => $insertvon
|
||||
]);
|
||||
} else {
|
||||
$this->_ci->StudentlehrverbandModel->insert([
|
||||
'student_uid' => $student->student_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'studiengang_kz' => $student->studiengang_kz,
|
||||
'semester' => 0,
|
||||
'verband' => 'B',
|
||||
'gruppe' => '',
|
||||
'insertamum' => date('c'),
|
||||
'insertvon' => $insertvon
|
||||
]);
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
}
|
||||
@@ -85,6 +85,12 @@ class GbDatumWeitZurueck extends PlausiChecker
|
||||
$params[] = $studiengang_kz;
|
||||
}
|
||||
|
||||
if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
|
||||
{
|
||||
$qry .= " AND stg.studiengang_kz NOT IN ?";
|
||||
$params[] = $exkludierte_studiengang_kz;
|
||||
}
|
||||
|
||||
$qry .= ")";
|
||||
|
||||
if (isset($person_id))
|
||||
@@ -93,12 +99,6 @@ class GbDatumWeitZurueck extends PlausiChecker
|
||||
$params[] = $person_id;
|
||||
}
|
||||
|
||||
if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
|
||||
{
|
||||
$qry .= " AND stg.studiengang_kz NOT IN ?";
|
||||
$params[] = $exkludierte_studiengang_kz;
|
||||
}
|
||||
|
||||
return $this->_db->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
class Abschluss_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'bis.tbl_abschluss';
|
||||
$this->pk = 'ausbildung_code';
|
||||
}
|
||||
|
||||
public function getActiveAbschluesse($languageIndex)
|
||||
{
|
||||
return $this->execQuery(
|
||||
'
|
||||
SELECT
|
||||
ausbildung_code, bezeichnung[?], in_oesterreich
|
||||
FROM
|
||||
bis.tbl_abschluss
|
||||
WHERE
|
||||
aktiv
|
||||
ORDER BY
|
||||
CASE WHEN in_oesterreich THEN 0 ELSE 1 END, ausbildung_code',
|
||||
array($languageIndex)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class Uhstat1daten_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'bis.tbl_uhstat1daten';
|
||||
$this->pk = 'uhstat1daten_id';
|
||||
}
|
||||
}
|
||||
@@ -100,8 +100,8 @@ class Konto_model extends DB_Model
|
||||
|
||||
public function checkStudienbeitrag($uid, $stsem, $buchungstypen)
|
||||
{
|
||||
$query = 'SELECT tbl_konto.buchungsnr,
|
||||
tbl_konto.buchungsdatum
|
||||
$query = 'SELECT tbl_konto.buchungsnr,
|
||||
tbl_konto.buchungsdatum
|
||||
FROM public.tbl_konto,
|
||||
public.tbl_benutzer,
|
||||
public.tbl_student
|
||||
@@ -117,10 +117,47 @@ class Konto_model extends DB_Model
|
||||
FROM public.tbl_konto skonto
|
||||
WHERE skonto.buchungsnr = tbl_konto.buchungsnr_verweis
|
||||
OR skonto.buchungsnr_verweis = tbl_konto.buchungsnr_verweis
|
||||
)
|
||||
)
|
||||
ORDER BY buchungsnr DESC LIMIT 1
|
||||
';
|
||||
|
||||
return $this->execQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if student has paid studienbeitrag for certain semester
|
||||
*
|
||||
* @param $person_id person_id
|
||||
* @param $stsem stsem
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function checkStudienbeitragFromPerson($person_id, $stsem)
|
||||
{
|
||||
$this->addOrder('buchungsnr');
|
||||
$this->addLimit(1);
|
||||
$result = $this->loadWhere([
|
||||
'person_id'=>$person_id,
|
||||
'studiensemester_kurzbz' => $stsem,
|
||||
'buchungstyp_kurzbz' => 'Studiengebuehr'
|
||||
]);
|
||||
|
||||
if (!getData($result))
|
||||
return false;
|
||||
|
||||
$data = getData($result)[0];
|
||||
|
||||
$this->resetQuery();
|
||||
|
||||
$this->addSelect('sum(betrag) as differenz');
|
||||
$this->db->or_where('buchungsnr', $data->buchungsnr);
|
||||
$this->db->or_where('buchungsnr_verweis', $data->buchungsnr);
|
||||
|
||||
$result = $this->load();
|
||||
if (!getData($result))
|
||||
return false;
|
||||
|
||||
$data = getData($result)[0];
|
||||
return $data->differenz >= 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
class Prestudentstatus_model extends DB_Model
|
||||
{
|
||||
|
||||
const STATUS_ABBRECHER = 'Abbrecher';
|
||||
const STATUS_UNTERBRECHER = 'Unterbrecher';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -226,4 +230,111 @@ class Prestudentstatus_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, $parametersArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* get Email of relevant Studiengang of prestudent
|
||||
*/
|
||||
public function getLastStatusWithStgEmail($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '')
|
||||
{
|
||||
$this->addSelect('tbl_prestudentstatus.*,
|
||||
tbl_studienplan.bezeichnung AS studienplan_bezeichnung,
|
||||
tbl_studienplan.orgform_kurzbz AS orgform,
|
||||
tbl_studienplan.sprache,
|
||||
tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform,
|
||||
tbl_status.bezeichnung_mehrsprachig,
|
||||
tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund,
|
||||
tbl_studiengang.bezeichnung AS stg_bezeichnung,
|
||||
tbl_studiengang.email');
|
||||
$this->addJoin('lehre.tbl_studienplan', 'studienplan_id', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_studienordnung', 'studienordnung_id', 'LEFT');
|
||||
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
||||
$this->addJoin('public.tbl_status', 'tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz');
|
||||
$this->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform', 'tbl_studienplan.orgform_kurzbz = tbl_orgform.orgform_kurzbz', 'LEFT');
|
||||
$this->db->where('tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz');
|
||||
|
||||
$where = array('prestudent_id' => $prestudent_id);
|
||||
if ($studiensemester_kurzbz)
|
||||
$where['studiensemester_kurzbz'] = $studiensemester_kurzbz;
|
||||
if ($status_kurzbz)
|
||||
$where['tbl_prestudentstatus.status_kurzbz'] = $status_kurzbz;
|
||||
|
||||
$this->addOrder('datum', 'DESC');
|
||||
$this->addOrder('insertamum', 'DESC');
|
||||
$this->addOrder('ext_id', 'DESC');
|
||||
$this->addLimit(1);
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
public function loadLastWithStgDetails($prestudent_id, $studiensemester_kurzbz = null)
|
||||
{
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$lang = getUserLanguage();
|
||||
|
||||
$this->addSelect($this->dbTable . '.prestudent_id');
|
||||
$this->addSelect($this->dbTable . '.ausbildungssemester AS semester');
|
||||
$this->addSelect($this->dbTable . '.studiensemester_kurzbz');
|
||||
$this->addSelect('s.matrikelnr');
|
||||
$this->addSelect('ss.studienjahr_kurzbz');
|
||||
$this->addSelect('pers.vorname');
|
||||
$this->addSelect('pers.nachname');
|
||||
$this->addSelect('TRIM(CONCAT(pers.vorname, \' \', pers.nachname)) AS name');
|
||||
$this->addSelect('pers.person_id');
|
||||
$this->addSelect('g.studiengang_kz');
|
||||
$this->addSelect('g.bezeichnung');
|
||||
$this->addSelect('o.orgform_kurzbz');
|
||||
$this->addSelect(
|
||||
'o.bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=\'' . $lang . '\')] AS orgform_bezeichnung',
|
||||
false
|
||||
);
|
||||
|
||||
$this->addJoin('public.tbl_student s', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_studiengang g', 'p.studiengang_kz=g.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz');
|
||||
|
||||
$this->addOrder($this->dbTable . '.datum', 'DESC');
|
||||
$this->addOrder($this->dbTable . '.insertamum', 'DESC');
|
||||
$this->addOrder($this->dbTable . '.ext_id', 'DESC');
|
||||
|
||||
$this->addLimit(1);
|
||||
|
||||
$this->db->where_in($this->dbTable . '.status_kurzbz', $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
|
||||
$whereArr = [
|
||||
$this->dbTable . '.prestudent_id' => $prestudent_id,
|
||||
'g.aktiv' => true
|
||||
];
|
||||
|
||||
if ($studiensemester_kurzbz !== null)
|
||||
{
|
||||
$whereArr[$this->dbTable. '.studiensemester_kurzbz'] = $studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
return $this->loadWhere($whereArr);
|
||||
}
|
||||
|
||||
/**
|
||||
* call like this:
|
||||
* $this->PrestudentstatusModel->withGrund('grund_kurzbz')->update($id, $otherData);
|
||||
* or:
|
||||
* $this->PrestudentstatusModel->withGrund('grund_kurzbz')->insert($otherData);
|
||||
* @param string $statusgrund_kurzbz
|
||||
* @return object $this
|
||||
*/
|
||||
public function withGrund($statusgrund_kurzbz)
|
||||
{
|
||||
if($statusgrund_kurzbz)
|
||||
$this->db->set(
|
||||
'statusgrund_id',
|
||||
'(SELECT statusgrund_id FROM public.tbl_status_grund WHERE statusgrund_kurzbz =' . $this->db->escape($statusgrund_kurzbz) .')',
|
||||
false
|
||||
);
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,4 +82,14 @@ class Student_model extends DB_Model
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the FH-Email for a student (not the private kontakt emailt)
|
||||
* @param $student_uid
|
||||
* @return string
|
||||
*/
|
||||
public function getEmailFH($student_uid)
|
||||
{
|
||||
return $student_uid . '@' . DOMAIN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class Anrechnung_model extends DB_Model
|
||||
*/
|
||||
public function createAnrechnungsantrag(
|
||||
$prestudent_id, $studiensemester_kurzbz, $lehrveranstaltung_id,
|
||||
$begruendung_id, $dms_id, $anmerkung_student = null
|
||||
$begruendung_id, $dms_id, $anmerkung_student = null, $begruendung_ects = null, $begruendung_lvinhalt = null
|
||||
)
|
||||
{
|
||||
// Start DB transaction
|
||||
@@ -44,6 +44,8 @@ class Anrechnung_model extends DB_Model
|
||||
'dms_id' => $dms_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'anmerkung_student' => $anmerkung_student,
|
||||
'begruendung_ects' => $begruendung_ects,
|
||||
'begruendung_lvinhalt' => $begruendung_lvinhalt,
|
||||
'insertvon' => $this->_uid
|
||||
));
|
||||
|
||||
|
||||
@@ -29,11 +29,213 @@ class Pruefung_model extends DB_Model
|
||||
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
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
protected function loadWhereThreeExamsFailed()
|
||||
{
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$this->dbTable = 'lehre.tbl_pruefung p';
|
||||
|
||||
$sprache_index = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect('max(p.datum) as datum');
|
||||
$this->addSelect('pers.vorname');
|
||||
$this->addSelect('pers.nachname');
|
||||
$this->addSelect('pers.person_id');
|
||||
$this->addSelect('s.matrikelnr');
|
||||
$this->addSelect('g.bezeichnung');
|
||||
$this->addSelect('g.studiengang_kz');
|
||||
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sprache_index . ')] AS orgform', false);
|
||||
$this->addSelect('ps.prestudent_id');
|
||||
$this->addSelect('lv.bezeichnung as lvbezeichnung');
|
||||
$this->addSelect('le.studiensemester_kurzbz');
|
||||
$this->addSelect('a.typ');
|
||||
$this->addSelect('campus.get_status_studierendenantrag(a.studierendenantrag_id) status');
|
||||
$this->addSelect('count(1) as count');
|
||||
|
||||
$this->addGroupBy([
|
||||
'pers.vorname',
|
||||
'pers.nachname',
|
||||
'pers.person_id',
|
||||
's.matrikelnr',
|
||||
'g.bezeichnung',
|
||||
'g.studiengang_kz',
|
||||
'o.bezeichnung_mehrsprachig',
|
||||
'ps.prestudent_id',
|
||||
'lv.bezeichnung',
|
||||
'le.studiensemester_kurzbz',
|
||||
'a.typ',
|
||||
'a.studierendenantrag_id'
|
||||
]);
|
||||
$this->addJoin('lehre.tbl_note n', 'note');
|
||||
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin('public.tbl_student s', 'student_uid');
|
||||
$this->addJoin('public.tbl_prestudent ps', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid');
|
||||
$this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz');
|
||||
$this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false);
|
||||
|
||||
$this->db->where("n.positiv", false);
|
||||
/* $this->db->where_in("p.pruefungstyp_kurzbz1", ['kommPruef','zusKommPruef']);*/
|
||||
$this->db->where_in("get_rolle_prestudent(ps.prestudent_id, null)", $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
|
||||
$this->db->where("g.aktiv", true);
|
||||
|
||||
$this->db->where('lv.studiengang_kz not in(
|
||||
SELECT ps.studiengang_kz
|
||||
FROM
|
||||
public.tbl_prestudent ps1
|
||||
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
|
||||
WHERE pss.statusgrund_id in ?
|
||||
AND ps.prestudent_id = ps1.prestudent_id)', null, false);
|
||||
|
||||
// NOTE(chris): is Wiederholer without set statusgrund (legacy?)
|
||||
$this->db->where(
|
||||
'(SELECT COUNT(*)
|
||||
FROM (SELECT DISTINCT studiensemester_kurzbz
|
||||
FROM tbl_prestudentstatus _s
|
||||
WHERE ausbildungssemester=get_absem_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)
|
||||
AND prestudent_id=ps.prestudent_id) a) = 1',
|
||||
null,
|
||||
false
|
||||
);
|
||||
|
||||
return $this->db->get_compiled_select($this->dbTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return stdClass
|
||||
*/
|
||||
public function loadWhereCommitteeExamsFailed()
|
||||
{
|
||||
$this->dbTable = 'lehre.tbl_pruefung p';
|
||||
|
||||
$this->addSelect('p.datum');
|
||||
|
||||
$this->addJoin('lehre.tbl_note n', 'note');
|
||||
|
||||
$this->db->where("n.positiv", false);
|
||||
$this->db->where_in("p.pruefungstyp_kurzbz", ['kommPruef','zusKommPruef']);
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
protected function withDetailsForStudierendenAntrag()
|
||||
{
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$sprache_index = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect('pers.vorname');
|
||||
$this->addSelect('pers.nachname');
|
||||
$this->addSelect('pers.person_id');
|
||||
$this->addSelect('s.matrikelnr');
|
||||
$this->addSelect('g.bezeichnung');
|
||||
$this->addSelect('g.studiengang_kz');
|
||||
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sprache_index . ')] AS orgform', false);
|
||||
$this->addSelect('ps.prestudent_id');
|
||||
$this->addSelect('lv.bezeichnung as lvbezeichnung');
|
||||
$this->addSelect('le.studiensemester_kurzbz');
|
||||
$this->addSelect('a.typ');
|
||||
$this->addSelect('campus.get_status_studierendenantrag(a.studierendenantrag_id) status');
|
||||
|
||||
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin('public.tbl_student s', 'student_uid');
|
||||
$this->addJoin('public.tbl_prestudent ps', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid');
|
||||
$this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz');
|
||||
$this->addJoin('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ=' . $this->escape(Studierendenantrag_model::TYP_WIEDERHOLUNG), 'LEFT');
|
||||
|
||||
$this->db->where_in("get_rolle_prestudent(ps.prestudent_id, null)", $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
|
||||
$this->db->where("g.aktiv", true);
|
||||
|
||||
$statusgruende = $this->config->item('status_gruende_wiederholer');
|
||||
if (is_array($statusgruende) && !isEmptyArray($statusgruende)) {
|
||||
foreach ($statusgruende as $k => $v) {
|
||||
$statusgruende[$k] = $this->db->escape($v);
|
||||
}
|
||||
$this->db->where('lv.studiengang_kz NOT IN(
|
||||
SELECT ps1.studiengang_kz
|
||||
FROM
|
||||
public.tbl_prestudent ps1
|
||||
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
|
||||
WHERE pss.statusgrund_id in (' . implode(',', $statusgruende) . ')
|
||||
AND ps.prestudent_id = ps1.prestudent_id)', null, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $prestudent_id student_uid
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function loadWhereCommitteeExamFailedForPrestudent($prestudent_id)
|
||||
{
|
||||
$this->withDetailsForStudierendenAntrag();
|
||||
|
||||
$this->db->where('ps.prestudent_id', $prestudent_id);
|
||||
|
||||
return $this->loadWhereCommitteeExamsFailed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $status
|
||||
* @param \DateTime $maxDate
|
||||
* @param \DateTime $minDate
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getAllPrestudentsWhereCommitteeExamFailed($status, $maxDate, $minDate)
|
||||
{
|
||||
$this->withDetailsForStudierendenAntrag();
|
||||
|
||||
if ($maxDate)
|
||||
$this->db->where("p.datum < ", $maxDate->format('c'));
|
||||
if ($minDate)
|
||||
$this->db->where("p.datum > ", $minDate->format('c'));
|
||||
|
||||
$this->db->where("b.aktiv", true);
|
||||
|
||||
if (is_array($status)) {
|
||||
if (in_array(null, $status)) {
|
||||
$status = array_filter($status);
|
||||
if (count($status)) {
|
||||
$this->db->group_start();
|
||||
$this->db->where_in('campus.get_status_studierendenantrag(a.studierendenantrag_id)', $status);
|
||||
$this->db->or_where('campus.get_status_studierendenantrag(a.studierendenantrag_id)', null);
|
||||
$this->db->group_end();
|
||||
} else {
|
||||
$this->db->where('campus.get_status_studierendenantrag(a.studierendenantrag_id)', null);
|
||||
}
|
||||
} else {
|
||||
$this->db->where_in('campus.get_status_studierendenantrag(a.studierendenantrag_id)', $status);
|
||||
}
|
||||
} else {
|
||||
$this->db->where('campus.get_status_studierendenantrag(a.studierendenantrag_id)', $status);
|
||||
}
|
||||
|
||||
return $this->loadWhereCommitteeExamsFailed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
<?php
|
||||
class Studierendenantrag_model extends DB_Model
|
||||
{
|
||||
|
||||
const TYP_ABMELDUNG = 'Abmeldung';
|
||||
const TYP_ABMELDUNG_STGL = 'AbmeldungStgl';
|
||||
const TYP_UNTERBRECHUNG = 'Unterbrechung';
|
||||
const TYP_WIEDERHOLUNG = 'Wiederholung';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'campus.tbl_studierendenantrag';
|
||||
$this->pk = 'studierendenantrag_id';
|
||||
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$this->load->model('education/Studierendenantragstatus_model', 'StudierendenantragstatusModel');
|
||||
}
|
||||
|
||||
public function loadCreatedForStudiengaenge($studiengaenge, $typ)
|
||||
{
|
||||
return $this->loadForStudiengaenge($studiengaenge, $typ, $this->StudierendenantragstatusModel::STATUS_CREATED);
|
||||
}
|
||||
|
||||
public function loadForStudiengaenge($studiengaenge, $typ = null, $status = null)
|
||||
{
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect('stg.bezeichnung');
|
||||
$this->addSelect('bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform', false);
|
||||
$this->addSelect('s.studierendenantrag_id');
|
||||
$this->addSelect('matrikelnr');
|
||||
$this->addSelect('studienjahr_kurzbz');
|
||||
$this->addSelect('vorname');
|
||||
$this->addSelect('nachname');
|
||||
$this->addSelect('prestudent_id');
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
$this->addSelect('semester');
|
||||
$this->addSelect($this->dbTable . '.grund');
|
||||
$this->addSelect('datum');
|
||||
$this->addSelect('datum_wiedereinstieg');
|
||||
$this->addSelect($this->dbTable . '.typ');
|
||||
$this->addSelect('st.studierendenantrag_statustyp_kurzbz as status');
|
||||
$this->addSelect('dms_id');
|
||||
$this->addSelect('st.bezeichnung[(' . $sql . ')] as statustyp');
|
||||
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_student', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_person', 'person_id');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz');
|
||||
$this->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
$this->addJoin('bis.tbl_orgform', 'orgform_kurzbz');
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_status as s',
|
||||
'campus.get_status_id_studierendenantrag('. $this->dbTable .'.studierendenantrag_id) = studierendenantrag_status_id'
|
||||
);
|
||||
$this->addJoin('campus.tbl_studierendenantrag_statustyp as st', 'studierendenantrag_statustyp_kurzbz');
|
||||
|
||||
$this->db->where_in('p.studiengang_kz', $studiengaenge);
|
||||
|
||||
$where = [];
|
||||
if ($status !== null)
|
||||
$where['st.studierendenantrag_statustyp_kurzbz'] = $status;
|
||||
if ($typ !== null)
|
||||
$where[$this->dbTable . '.typ'] = $typ;
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
public function isInStudiengang($studierendenantrag_id, $studiengaenge)
|
||||
{
|
||||
$this->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
|
||||
$this->db->where_in('studiengang_kz', $studiengaenge);
|
||||
|
||||
return $this->load($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function loadIdAndStatusWhere($where)
|
||||
{
|
||||
$this->addSelect('studierendenantrag_id');
|
||||
$this->addSelect('campus.get_status_studierendenantrag(studierendenantrag_id) status');
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
public function loadWithStatusWhere($where, $types = null)
|
||||
{
|
||||
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
||||
|
||||
$this->addSelect('*');
|
||||
$this->addSelect('campus.get_status_studierendenantrag(studierendenantrag_id) status');
|
||||
$this->addSelect('t.bezeichnung[(' . $lang . ')] statustyp');
|
||||
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_statustyp t',
|
||||
'campus.get_status_studierendenantrag(studierendenantrag_id)=t.studierendenantrag_statustyp_kurzbz'
|
||||
);
|
||||
|
||||
if ($types && is_array($types)) {
|
||||
$this->db->where_in('typ', $types);
|
||||
}
|
||||
|
||||
$this->addOrder('datum', 'DESC');
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the studiengang and ausbildungssemester the student was in
|
||||
* for the studiensemester the antrag was committed for
|
||||
*
|
||||
* @param integer $antrag_id
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getStgAndSem($antrag_id)
|
||||
{
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
$this->addSelect('s.ausbildungssemester');
|
||||
$this->addSelect('s.orgform_kurzbz');
|
||||
|
||||
$this->addJoin(
|
||||
'public.tbl_prestudentstatus s',
|
||||
$this->dbTable . '.prestudent_id=s.prestudent_id AND ' . $this->dbTable . '.studiensemester_kurzbz=s.studiensemester_kurzbz'
|
||||
);
|
||||
$this->addJoin('public.tbl_prestudent p', $this->dbTable . '.prestudent_id=p.prestudent_id');
|
||||
|
||||
$this->addOrder('s.datum', 'DESC');
|
||||
$this->addOrder('s.insertamum', 'DESC');
|
||||
$this->addOrder('s.ext_id', 'DESC');
|
||||
|
||||
$this->addLimit(1);
|
||||
|
||||
$this->db->where_in('s.status_kurzbz', $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
|
||||
return $this->loadWhere([
|
||||
$this->pk => $antrag_id
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the studiengang the student is in
|
||||
*
|
||||
* @param integer $antrag_id
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getStg($antrag_id)
|
||||
{
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||
|
||||
$this->addLimit(1);
|
||||
|
||||
return $this->load(
|
||||
$antrag_id
|
||||
);
|
||||
}
|
||||
|
||||
public function getStgEmail($antrag_id)
|
||||
{
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_studiengang sg', 'studiengang_kz');
|
||||
$this->addSelect('sg.email');
|
||||
|
||||
return $this->load($antrag_id);
|
||||
}
|
||||
|
||||
public function loadForPerson($person_id)
|
||||
{
|
||||
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
||||
$this->addSelect('stg.bezeichnung');
|
||||
$this->addSelect('bezeichnung_mehrsprachig[(' . $lang . ')] as orgform');
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
$this->addSelect('st.studierendenantrag_statustyp_kurzbz as status');
|
||||
$this->addSelect('st.bezeichnung[(' . $lang . ')] as status_bezeichnung');
|
||||
$this->addSelect('p.prestudent_id');
|
||||
$this->addSelect($this->dbTable . '.studierendenantrag_id');
|
||||
$this->addSelect($this->dbTable . '.studiensemester_kurzbz');
|
||||
$this->addSelect($this->dbTable . '.datum');
|
||||
$this->addSelect($this->dbTable . '.typ');
|
||||
$this->addSelect($this->dbTable . '.insertamum');
|
||||
$this->addSelect($this->dbTable . '.insertvon');
|
||||
$this->addSelect($this->dbTable . '.datum_wiedereinstieg');
|
||||
$this->addSelect($this->dbTable . '.grund');
|
||||
$this->addSelect($this->dbTable . '.dms_id');
|
||||
$this->addSelect("(SELECT count(1) FROM campus.tbl_studierendenantrag_status WHERE studierendenantrag_id = " . $this->dbTable . ".studierendenantrag_id AND studierendenantrag_statustyp_kurzbz = 'Genehmigt') AS isapproved", false);
|
||||
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id', 'RIGHT');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform', 'orgform_kurzbz');
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_statustyp st',
|
||||
'campus.get_status_studierendenantrag(studierendenantrag_id)=st.studierendenantrag_statustyp_kurzbz',
|
||||
'LEFT'
|
||||
);
|
||||
|
||||
$this->db->where("(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=p.prestudent_id AND status_kurzbz='Student' LIMIT 1) IS NOT NULL", null, false);
|
||||
|
||||
|
||||
return $this->loadWhere([
|
||||
'p.person_id' => $person_id
|
||||
]);
|
||||
}
|
||||
|
||||
public function getAntraegeWhereWiedereinstiegBetween($start, $end)
|
||||
{
|
||||
$this->addSelect('sg.email');
|
||||
$this->addSelect('vorname');
|
||||
$this->addSelect('nachname');
|
||||
$this->addSelect($this->dbTable.'.*');
|
||||
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_status s',
|
||||
'campus.get_status_id_studierendenantrag(' . $this->dbTable . '.studierendenantrag_id)=s.studierendenantrag_status_id'
|
||||
);
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_person', 'person_id');
|
||||
$this->addJoin('public.tbl_studiengang sg', 'studiengang_kz');
|
||||
|
||||
$this->db->where('datum_wiedereinstieg >=', $start->format('Y-m-d'));
|
||||
$this->db->where('datum_wiedereinstieg <=', $end->format('Y-m-d'));
|
||||
|
||||
return $this->loadWhere([
|
||||
's.studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
$this->dbTable.'.typ' => self::TYP_UNTERBRECHUNG,
|
||||
]);
|
||||
}
|
||||
|
||||
public function getWithLastStatusWhere($where)
|
||||
{
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_status s',
|
||||
'campus.get_status_id_studierendenantrag(' . $this->dbTable . '.studierendenantrag_id)=s.studierendenantrag_status_id'
|
||||
);
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
class Studierendenantraglehrveranstaltung_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'campus.tbl_studierendenantrag_lehrveranstaltung';
|
||||
$this->pk = 'studierendenantrag_lehrveranstaltung_id';
|
||||
}
|
||||
|
||||
public function insertBatch($data)
|
||||
{
|
||||
// Check class properties
|
||||
if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL);
|
||||
|
||||
// DB-INSERT
|
||||
$insert = $this->db->insert_batch($this->dbTable, $data);
|
||||
|
||||
if ($insert)
|
||||
{
|
||||
return success();
|
||||
}
|
||||
else
|
||||
{
|
||||
return error($this->db->error(), EXIT_DATABASE);
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteWhere($where)
|
||||
{
|
||||
if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL);
|
||||
|
||||
$delete = $this->db->delete($this->dbTable, $where);
|
||||
|
||||
if ($delete)
|
||||
{
|
||||
return success();
|
||||
}
|
||||
else
|
||||
{
|
||||
return error($this->db->error(), EXIT_DATABASE);
|
||||
}
|
||||
}
|
||||
|
||||
public function getLvsForPrestudent($prestudent_id, $studiensemester_kurzbz)
|
||||
{
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('a.prestudent_id');
|
||||
$this->addSelect('lv.bezeichnung as lv_bezeichnung');
|
||||
$this->addSelect('stat.insertamum as freigabedatum');
|
||||
$this->addSelect('n.bezeichnung as note_bezeichnung');
|
||||
$this->addSelect('stg.bezeichnung as stg_bezeichnung');
|
||||
|
||||
$this->addJoin('campus.tbl_studierendenantrag a', 'studierendenantrag_id');
|
||||
$this->addJoin('lehre.tbl_note n', 'note');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin('public.tbl_prestudent ps', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'ps.studiengang_kz = stg.studiengang_kz');
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_status stat',
|
||||
'stat.studierendenantrag_status_id = campus.get_status_id_studierendenantrag(a.studierendenantrag_id)'
|
||||
);
|
||||
$this->addJoin('public.tbl_student s', 'prestudent_id');
|
||||
$this->addJoin(
|
||||
'lehre.tbl_zeugnisnote z',
|
||||
'z.lehrveranstaltung_id=lv.lehrveranstaltung_id AND z.student_uid=s.student_uid AND z.studiensemester_kurzbz=a.studiensemester_kurzbz',
|
||||
'LEFT'
|
||||
);
|
||||
$this->addJoin('lehre.tbl_note zn', 'z.note = zn.note', 'LEFT');
|
||||
|
||||
return $this->loadWhere([
|
||||
'ps.prestudent_id' => $prestudent_id,
|
||||
'a.typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG,
|
||||
'stat.studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
'n.note <> ' => 0,
|
||||
$this->dbTable . '.studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'(n.note<>19 OR (z.note IS NOT NULL AND zn.positiv))' => null
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
class Studierendenantragstatus_model extends DB_Model
|
||||
{
|
||||
|
||||
const STATUS_CREATED = 'Erstellt';
|
||||
const STATUS_APPROVED = 'Genehmigt';
|
||||
const STATUS_REJECTED = 'Abgelehnt';
|
||||
const STATUS_PASS = 'Verzichtet';
|
||||
const STATUS_REOPENED = 'Offen';
|
||||
const STATUS_CANCELLED = 'Zurueckgezogen';
|
||||
const STATUS_LVSASSIGNED = 'Lvszugewiesen';
|
||||
const STATUS_REMINDERSENT = 'EmailVersandt';
|
||||
const STATUS_REQUESTSENT_1 = 'ErsteAufforderungVersandt';
|
||||
const STATUS_REQUESTSENT_2 = 'ZweiteAufforderungVersandt';
|
||||
const STATUS_OBJECTED = 'Beeinsprucht';
|
||||
const STATUS_OBJECTION_DENIED = 'EinspruchAbgelehnt';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'campus.tbl_studierendenantrag_status';
|
||||
$this->pk = 'studierendenantrag_status_id';
|
||||
}
|
||||
|
||||
public function loadWithTyp($studierendenantrag_status_id)
|
||||
{
|
||||
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
||||
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('bezeichnung[(' . $lang . ')] AS typ');
|
||||
|
||||
$this->addJoin('campus.tbl_studierendenantrag_statustyp', 'studierendenantrag_statustyp_kurzbz');
|
||||
|
||||
return $this->load($studierendenantrag_status_id);
|
||||
}
|
||||
|
||||
public function loadWithTypWhere($where)
|
||||
{
|
||||
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
||||
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('bezeichnung[(' . $lang . ')] AS typ');
|
||||
|
||||
$this->addJoin('campus.tbl_studierendenantrag_statustyp', 'studierendenantrag_statustyp_kurzbz');
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,7 @@ class Zeugnisnote_model extends DB_Model
|
||||
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
|
||||
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
|
||||
WHERE pers.person_id = ?
|
||||
AND zgnisnote.studiensemester_kurzbz = ?";
|
||||
|
||||
@@ -140,4 +140,83 @@ class Zeugnisnote_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets courses (Zeugnisnoten) for a student.
|
||||
* @param string $student_uid,
|
||||
* @param string $studiensemester_kurzbz
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function getZeugnisnoten($student_uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$params = array();
|
||||
$where='';
|
||||
|
||||
if ($student_uid != null)
|
||||
{
|
||||
$where .= " AND uid=?";
|
||||
$params[] = $student_uid;
|
||||
}
|
||||
if ($studiensemester_kurzbz !=null)
|
||||
{
|
||||
$where.=" AND vw_student_lehrveranstaltung.studiensemester_kurzbz= ?";
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
$where2='';
|
||||
|
||||
if ($student_uid != null)
|
||||
{
|
||||
$where2 .= " AND student_uid=?";
|
||||
$params[] = $student_uid;
|
||||
}
|
||||
if ($studiensemester_kurzbz !=null)
|
||||
{
|
||||
$where2 .= " AND studiensemester_kurzbz= ?";
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
$qry = "SELECT vw_student_lehrveranstaltung.lehrveranstaltung_id, uid,
|
||||
vw_student_lehrveranstaltung.studiensemester_kurzbz, note, punkte, uebernahmedatum, benotungsdatum,
|
||||
vw_student_lehrveranstaltung.ects, vw_student_lehrveranstaltung.semesterstunden,
|
||||
tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum,
|
||||
tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id,
|
||||
vw_student_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung,
|
||||
vw_student_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english,
|
||||
tbl_note.bezeichnung as note_bezeichnung,
|
||||
tbl_note.positiv as note_positiv,
|
||||
tbl_zeugnisnote.bemerkung as bemerkung,
|
||||
vw_student_lehrveranstaltung.sort,
|
||||
vw_student_lehrveranstaltung.zeugnis,
|
||||
vw_student_lehrveranstaltung.studiengang_kz,
|
||||
vw_student_lehrveranstaltung.lv_lehrform_kurzbz,
|
||||
tbl_lehrveranstaltung.sws
|
||||
FROM
|
||||
(
|
||||
campus.vw_student_lehrveranstaltung LEFT JOIN lehre.tbl_zeugnisnote
|
||||
ON(uid=student_uid
|
||||
AND vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_zeugnisnote.studiensemester_kurzbz
|
||||
AND vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
|
||||
)
|
||||
) LEFT JOIN lehre.tbl_note USING(note)
|
||||
JOIN lehre.tbl_lehrveranstaltung ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
|
||||
WHERE true $where
|
||||
|
||||
UNION
|
||||
SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id,student_uid AS uid,studiensemester_kurzbz, note, punkte,
|
||||
uebernahmedatum, benotungsdatum,lehre.tbl_lehrveranstaltung.ects,lehre.tbl_lehrveranstaltung.semesterstunden, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum,
|
||||
tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, lehre.tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, lehre.tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english,
|
||||
tbl_note.bezeichnung as note_bezeichnung, tbl_note.positiv as note_positiv, tbl_zeugnisnote.bemerkung as bemerkung, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.zeugnis, tbl_lehrveranstaltung.studiengang_kz,
|
||||
tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz, tbl_lehrveranstaltung.sws
|
||||
FROM
|
||||
lehre.tbl_zeugnisnote
|
||||
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_note USING(note)
|
||||
WHERE true $where2
|
||||
|
||||
ORDER BY sort";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -511,10 +511,10 @@ class Studiengang_model extends DB_Model
|
||||
public function getStudiengangTyp($studiengang_kz, $typ = null)
|
||||
{
|
||||
$query = "SELECT DISTINCT(sgt.*)
|
||||
FROM tbl_studiengangstyp sgt JOIN tbl_studiengang sg on sgt.typ = sg.typ
|
||||
FROM tbl_studiengangstyp sgt JOIN tbl_studiengang sg on sgt.typ = sg.typ
|
||||
WHERE studiengang_kz IN ?";
|
||||
|
||||
$params[] = $studiengang_kz;
|
||||
$params = [$studiengang_kz];
|
||||
|
||||
if (!is_null($typ))
|
||||
{
|
||||
@@ -524,4 +524,93 @@ class Studiengang_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, $params);
|
||||
}
|
||||
|
||||
public function loadWithOrgform($studiengang_kzs)
|
||||
{
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform');
|
||||
|
||||
$this->addJoin('bis.tbl_orgform o', 'orgform_kurzbz');
|
||||
|
||||
$this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs);
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $studiengang_kzs
|
||||
* @param array $not_antrag_typ (optional) If the prestudent has an antrag with one of the specified types it will be excluded from the result
|
||||
* @param array $prestudent_stati (optional)
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getAktivePrestudenten($studiengang_kzs, $not_antrag_typ = null, $query = null)
|
||||
{
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect($this->dbTable . '.studiengang_kz');
|
||||
$this->addSelect($this->dbTable . '.bezeichnung');
|
||||
$this->addSelect('o.orgform_kurzbz');
|
||||
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform', false);
|
||||
$this->addSelect('ps.ausbildungssemester AS semester');
|
||||
$this->addSelect('ps.studiensemester_kurzbz');
|
||||
$this->addSelect('p.prestudent_id');
|
||||
$this->addSelect('pers.vorname');
|
||||
$this->addSelect('pers.nachname');
|
||||
$this->addSelect("CONCAT(UPPER(pers.nachname), ' ', pers.vorname, ' (', " . $this->dbTable . ".bezeichnung, ')') AS name");
|
||||
|
||||
$this->addJoin('public.tbl_prestudent p', 'studiengang_kz');
|
||||
$this->addJoin(
|
||||
'public.tbl_prestudentstatus ps',
|
||||
'ps.prestudent_id=p.prestudent_id
|
||||
AND ps.studiensemester_kurzbz=get_stdsem_prestudent(p.prestudent_id, NULL)
|
||||
AND ps.ausbildungssemester=get_absem_prestudent(p.prestudent_id, NULL)
|
||||
AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, NULL)'
|
||||
);
|
||||
$this->addJoin('bis.tbl_orgform o', $this->dbTable . '.orgform_kurzbz=o.orgform_kurzbz');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_student stud', 'p.prestudent_id=stud.prestudent_id', 'LEFT');
|
||||
|
||||
$this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs);
|
||||
$this->db->where_in('ps.status_kurzbz', $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
$this->db->where($this->dbTable . ".aktiv", true);
|
||||
|
||||
if ($not_antrag_typ !== null && is_array($not_antrag_typ)) {
|
||||
foreach($not_antrag_typ as $k => $v)
|
||||
$not_antrag_typ[$k] = $this->db->escape($v);
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag a',
|
||||
'a.prestudent_id=p.prestudent_id and a.typ in ('.
|
||||
implode(',', $not_antrag_typ).
|
||||
") AND campus.get_status_studierendenantrag (a.studierendenantrag_id)<>'" .
|
||||
Studierendenantragstatus_model::STATUS_CANCELLED . "'",
|
||||
'LEFT'
|
||||
);
|
||||
$this->db->where('a.typ IS NULL');
|
||||
}
|
||||
|
||||
if ($query) {
|
||||
$query = explode(' ', $query);
|
||||
$this->db->group_start();
|
||||
foreach ($query as $q) {
|
||||
$this->db->group_start();
|
||||
$this->db->where('pers.vorname ILIKE', "%" . $q . "%");
|
||||
$this->db->or_where('pers.nachname ILIKE', "%" . $q . "%");
|
||||
$this->db->or_where('stud.student_uid ILIKE', "%" . $q . "%");
|
||||
$this->db->or_where($this->dbTable . '.bezeichnung ILIKE', "%" . $q . "%");
|
||||
if (is_numeric($q))
|
||||
$this->db->or_where('p.prestudent_id', $q);
|
||||
$this->db->group_end();
|
||||
}
|
||||
$this->db->group_end();
|
||||
}
|
||||
|
||||
$this->addOrder('name');
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class Studienplan_model extends DB_Model
|
||||
$whereArray["tbl_studienplan.sprache"] = $sprache;
|
||||
}
|
||||
|
||||
return $this->StudienplanModel->loadWhere($whereArray);
|
||||
return $this->loadWhere($whereArray);
|
||||
}
|
||||
|
||||
public function getStudienplanLehrveranstaltung($studienplan_id, $semester)
|
||||
@@ -53,6 +53,38 @@ class Studienplan_model extends DB_Model
|
||||
$this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id');
|
||||
$this->addOrder('tbl_lehrveranstaltung.sort');
|
||||
|
||||
return $this->loadWhere(array(
|
||||
'studienplan_id' => $studienplan_id,
|
||||
'tbl_studienplan_lehrveranstaltung.semester' => $semester
|
||||
));
|
||||
}
|
||||
|
||||
public function getStudienplanLehrveranstaltungForPrestudent($studienplan_id, $semester, $prestudent_id, $note_stsem)
|
||||
{
|
||||
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
||||
$sql = 'SELECT student_uid FROM public.tbl_student WHERE prestudent_id=' . $this->escape($prestudent_id);
|
||||
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('lv.*');
|
||||
$this->addSelect('COALESCE(n.bezeichnung_mehrsprachig[(' . $lang . ')], NULL) AS note');
|
||||
$this->addSelect('n.positiv');
|
||||
$this->addSelect('lehre.tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id');
|
||||
$this->addSelect('lehre.tbl_studienplan_lehrveranstaltung.sort plan_sort');
|
||||
$this->addSelect('lehre.tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent');
|
||||
|
||||
$this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin(
|
||||
'lehre.tbl_zeugnisnote zn',
|
||||
'zn.lehrveranstaltung_id=lv.lehrveranstaltung_id AND zn.student_uid=(' . $sql . ') AND zn.studiensemester_kurzbz=' . $this->escape($note_stsem),
|
||||
'LEFT'
|
||||
);
|
||||
$this->addJoin('lehre.tbl_note n', 'n.note=zn.note', 'LEFT');
|
||||
|
||||
$this->addOrder('lehre.tbl_studienplan_lehrveranstaltung.sort');
|
||||
$this->addOrder('lv.sort');
|
||||
|
||||
return $this->loadWhere(array(
|
||||
'studienplan_id' => $studienplan_id,
|
||||
'tbl_studienplan_lehrveranstaltung.semester' => $semester
|
||||
|
||||
@@ -204,4 +204,14 @@ class Studiensemester_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
public function getAktAndFutureSemester()
|
||||
{
|
||||
$query = 'SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE start >= NOW() OR (start <= NOW() AND ende >= NOW())
|
||||
ORDER BY start';
|
||||
|
||||
return $this->execQuery($query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,13 +326,28 @@ class Person_model extends DB_Model
|
||||
|
||||
SELECT p2.person_id
|
||||
FROM tbl_person p1
|
||||
JOIN tbl_prestudent ps ON p1.person_id = ps.person_id
|
||||
INNER JOIN (
|
||||
SELECT vorname, nachname, gebdatum, person_id
|
||||
FROM tbl_person
|
||||
) p2
|
||||
SELECT vorname, nachname, gebdatum, person.person_id
|
||||
FROM tbl_person person
|
||||
JOIN tbl_prestudent sps ON person.person_id = sps.person_id
|
||||
) p2
|
||||
ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum)
|
||||
WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)";
|
||||
|
||||
return $this->execQuery($qry, array($person_id, $person_id, $person_id));
|
||||
}
|
||||
|
||||
public function loadPrestudent($prestudent_id)
|
||||
{
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
|
||||
$this->addJoin('public.tbl_prestudent p', 'person_id');
|
||||
|
||||
$this->addLimit(1);
|
||||
|
||||
return $this->loadWhere([
|
||||
'prestudent_id' => $prestudent_id
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,274 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'UHSTAT1Formular',
|
||||
'jquery3' => true,
|
||||
'bootstrap3' => true,
|
||||
'fontawesome4' => true,
|
||||
'phrases' => array(
|
||||
'ui' => array('speichern')
|
||||
),
|
||||
'customCSSs' => array('public/css/codex/uhstat1.css'),
|
||||
'customJSs' => array('public/js/codex/uhstat1.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
<?php
|
||||
// initialise form fields
|
||||
$mutter_geburtsjahr = isset($uhstatData->mutter_geburtsjahr) ? $uhstatData->mutter_geburtsjahr : set_value('mutter_geburtsjahr');
|
||||
$mutter_geburtsstaat = isset($uhstatData->mutter_geburtsstaat) ? $uhstatData->mutter_geburtsstaat : set_value('mutter_geburtsstaat');
|
||||
$mutter_bildungsstaat = isset($uhstatData->mutter_bildungsstaat) ? $uhstatData->mutter_bildungsstaat : set_value('mutter_bildungsstaat');
|
||||
$mutter_bildungmax = isset($uhstatData->mutter_bildungmax) ? $uhstatData->mutter_bildungmax : set_value('mutter_bildungmax');
|
||||
$vater_geburtsjahr = isset($uhstatData->vater_geburtsjahr) ? $uhstatData->vater_geburtsjahr : set_value('vater_geburtsjahr');
|
||||
$vater_geburtsstaat = isset($uhstatData->vater_geburtsstaat) ? $uhstatData->vater_geburtsstaat : set_value('vater_geburtsstaat');
|
||||
$vater_bildungsstaat = isset($uhstatData->vater_bildungsstaat) ? $uhstatData->vater_bildungsstaat : set_value('vater_bildungsstaat');
|
||||
$vater_bildungmax = isset($uhstatData->vater_bildungmax) ? $uhstatData->vater_bildungmax : set_value('vater_bildungmax');
|
||||
$readOnly = isset($formMetaData['readOnly']);
|
||||
$disabled = $readOnly ? ' disabled' : '';
|
||||
$editPermission = isset($formMetaData['editPermission']) && $formMetaData['editPermission'] === true;
|
||||
$deletePermission = isset($formMetaData['deletePermission']) && $formMetaData['deletePermission'] === true;
|
||||
$saved = isset($saved) && $saved === true;
|
||||
?>
|
||||
|
||||
<div class='container' id='uhstat1Container'>
|
||||
<h1 class="text-center">
|
||||
<?php echo isset($formMetaData['nachname'])
|
||||
? 'UHSTAT1 Daten für '.(isset($formMetaData['vorname']) ? $formMetaData['vorname'].' ' : '').$formMetaData['nachname']
|
||||
: ''
|
||||
?>
|
||||
</h1>
|
||||
<div id="uhstat1Subcontainer">
|
||||
<input type='hidden' id='uhstat1Saved' value='<?php echo $saved ? 1 : 0 ?>' />
|
||||
<h2><?php echo $this->p->t('uhstat', 'uhstat1AnmeldungUeberschrift') ?></h2>
|
||||
<p>
|
||||
<?php echo $this->p->t('uhstat', 'rechtsbelehrung') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php echo $this->p->t('uhstat', 'uhstat1AnmeldungEinleitungstext') ?>
|
||||
</p>
|
||||
<br>
|
||||
<?php if ($editPermission): ?>
|
||||
<?php if (isset($successMessage) && !isEmptyString($successMessage)): ?>
|
||||
<div class="alert alert-success" id="uhstat_success_alert">
|
||||
<button type="button" class="close" data-dismiss="alert">x</button>
|
||||
<strong><?php echo $successMessage ?></strong>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if (isset($errorMessage) && !isEmptyString($errorMessage)): ?>
|
||||
<div class='alert alert-danger text-center'><?php echo $errorMessage ?></div>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
<form class="form-horizontal" method="POST" action="<?php echo site_url('codex/UHSTAT1/saveUHSTAT1Data') ?>" id="uhstat1Form">
|
||||
<input type='hidden' id='person_id' name='person_id' value='<?php echo $formMetaData['person_id'] ?>' />
|
||||
<fieldset>
|
||||
<legend><?php echo $this->p->t('uhstat', 'angabenErziehungsberechtigte') ?></legend>
|
||||
<p>
|
||||
<?php echo $this->p->t('uhstat', 'angabenErziehungsberechtigteEinleitungstext') ?>
|
||||
</p>
|
||||
<br>
|
||||
<h4><?php echo $this->p->t('uhstat', 'erziehungsberechtigtePersonEins') ?></h4>
|
||||
<div class="form-group">
|
||||
<label for="mutter_geburtsjahr" class="col-sm-3 control-label"><?php echo ucfirst($this->p->t('uhstat', 'geburtsjahr')) ?></label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="mutter_geburtsjahr" id="mutter_geburtsjahr" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<?php foreach ($formMetaData['jahre'] as $jahr): ?>
|
||||
<option
|
||||
value="<?php echo $jahr ?>"
|
||||
<?php echo $jahr == $mutter_geburtsjahr ? " selected" : "" ?>>
|
||||
<?php echo $jahr ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php echo form_error('mutter_geburtsjahr'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="mutter_geburtsstaat" class="col-sm-3 control-label">
|
||||
<?php echo ucfirst($this->p->t('uhstat', 'geburtsstaat')) ?>
|
||||
<br>
|
||||
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="mutter_geburtsstaat" id="mutter_geburtsstaat" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<?php foreach ($formMetaData['nation'] as $nation): ?>
|
||||
<option
|
||||
value="<?php echo $nation->nation_code ?>"
|
||||
<?php echo $mutter_geburtsstaat == $nation->nation_code ? " selected" : "" ?>>
|
||||
<?php echo $nation->nation_text ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php echo form_error('mutter_geburtsstaat'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="mutter_bildungsstaat" class="col-sm-3 control-label">
|
||||
<?php echo ucfirst($this->p->t('uhstat', 'hoechsterAbschlussStaat')) ?>
|
||||
<br>
|
||||
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="mutter_bildungsstaat" id="mutter_bildungsstaat" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<?php foreach ($formMetaData['nation'] as $nation): ?>
|
||||
<option
|
||||
value="<?php echo $nation->nation_code ?>"
|
||||
<?php echo $mutter_bildungsstaat == $nation->nation_code ? " selected" : "" ?>>
|
||||
<?php echo $nation->nation_text ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php echo form_error('mutter_bildungsstaat'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="mutter_bildungmax" class="col-sm-3 control-label"><?php echo ucfirst($this->p->t('uhstat', 'hoechsterAbschluss')) ?></label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="mutter_bildungmax" id="mutter_bildungmax" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<optgroup label="<?php echo $this->p->t('uhstat', 'wennAbschlussInOesterreich') ?>">
|
||||
<?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?>
|
||||
<?php foreach ($formMetaData['abschluss_oesterreich'] as $abschluss): ?>
|
||||
<option
|
||||
value="<?php echo $abschluss->ausbildung_code ?>"
|
||||
<?php echo $mutter_bildungmax == $abschluss->ausbildung_code ? " selected" : "" ?>>
|
||||
<?php echo $abschluss->bezeichnung ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
<optgroup label="<?php echo $this->p->t('uhstat', 'wennAbschlussNichtInOesterreich') ?>">
|
||||
<?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?>
|
||||
<?php foreach ($formMetaData['abschluss_nicht_oesterreich'] as $abschluss): ?>
|
||||
<option
|
||||
value="<?php echo $abschluss->ausbildung_code ?>"
|
||||
<?php echo $mutter_bildungmax == $abschluss->ausbildung_code ? " selected" : "" ?>>
|
||||
<?php echo $abschluss->bezeichnung ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
</select>
|
||||
<?php echo form_error('mutter_bildungmax'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<h4><?php echo $this->p->t('uhstat', 'erziehungsberechtigtePersonZwei') ?></h4>
|
||||
<div class="form-group">
|
||||
<label for="vater_geburtsjahr" class="col-sm-3 control-label"><?php echo ucfirst($this->p->t('uhstat', 'geburtsjahr')) ?></label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="vater_geburtsjahr" id="vater_geburtsjahr" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<?php foreach ($formMetaData['jahre'] as $jahr): ?>
|
||||
<option
|
||||
value="<?php echo $jahr ?>"
|
||||
<?php echo $vater_geburtsjahr == $jahr ? " selected" : "" ?>>
|
||||
<?php echo $jahr ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php echo form_error('vater_geburtsjahr'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="vater_geburtsstaat" class="col-sm-3 control-label">
|
||||
<?php echo ucfirst($this->p->t('uhstat', 'geburtsstaat')) ?>
|
||||
<br>
|
||||
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="vater_geburtsstaat" id="vater_geburtsstaat" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<?php foreach ($formMetaData['nation'] as $nation): ?>
|
||||
<option
|
||||
value="<?php echo $nation->nation_code ?>"
|
||||
<?php echo $vater_geburtsstaat == $nation->nation_code ? " selected" : "" ?>>
|
||||
<?php echo $nation->nation_text ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php echo form_error('vater_geburtsstaat'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="vater_bildungsstaat" class="col-sm-3 control-label">
|
||||
<?php echo $this->p->t('uhstat', 'hoechsterAbschlussStaat') ?>
|
||||
<br>
|
||||
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="vater_bildungsstaat" id="vater_bildungsstaat" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<?php foreach ($formMetaData['nation'] as $nation): ?>
|
||||
<option
|
||||
value="<?php echo $nation->nation_code ?>"
|
||||
<?php echo $vater_bildungsstaat == $nation->nation_code ? " selected" : "" ?>>
|
||||
<?php echo $nation->nation_text ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php echo form_error('vater_bildungsstaat'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="vater_bildungmax" class="col-sm-3 control-label">
|
||||
<?php echo ucfirst($this->p->t('uhstat', 'hoechsterAbschluss')) ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<select type="text" name="vater_bildungmax" id="vater_bildungmax" class="form-control" <?php echo $disabled ?>>
|
||||
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
|
||||
<optgroup label="<?php echo $this->p->t('uhstat', 'wennAbschlussInOesterreich') ?>">
|
||||
<?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?>
|
||||
<?php foreach ($formMetaData['abschluss_oesterreich'] as $abschluss): ?>
|
||||
<option
|
||||
value="<?php echo $abschluss->ausbildung_code ?>"
|
||||
<?php echo $vater_bildungmax == $abschluss->ausbildung_code ? " selected" : "" ?>>
|
||||
<?php echo $abschluss->bezeichnung ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
<optgroup label="<?php echo $this->p->t('uhstat', 'wennAbschlussNichtInOesterreich') ?>">
|
||||
<?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?>
|
||||
<?php foreach ($formMetaData['abschluss_nicht_oesterreich'] as $abschluss): ?>
|
||||
<option
|
||||
value="<?php echo $abschluss->ausbildung_code ?>"
|
||||
<?php echo $vater_bildungmax == $abschluss->ausbildung_code ? " selected" : "" ?>>
|
||||
<?php echo $abschluss->bezeichnung ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
</select>
|
||||
<?php echo form_error('vater_bildungmax'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<?php if ($editPermission && !$readOnly): ?>
|
||||
<br>
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12 text-right">
|
||||
<button class="btn btn-success btn-md" type="submit" id="uhstat1Submit">
|
||||
<?php echo $this->p->t('uhstat', 'pruefenUndSpeichern') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
<?php if ($deletePermission && !$readOnly): ?>
|
||||
<form class="form-horizontal" method="POST" action="<?php echo site_url('codex/UHSTAT1/deleteUHSTAT1Data') ?>" id="uhstat1DeleteForm">
|
||||
<input type='hidden' id='person_id' name='person_id' value='<?php echo $formMetaData['person_id'] ?>' />
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<button class="btn btn-danger btn-md" type="submit" id="uhstat1Delete">
|
||||
<?php echo $this->p->t('uhstat', 'datenLoeschen') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
$sitesettings = array(
|
||||
'title' => 'Antrag auf Änderung des Studierendenstatus',
|
||||
'cis' => true,
|
||||
'vue3' => true,
|
||||
'axios027' => true,
|
||||
'bootstrap5' => true,
|
||||
'fontawesome6' => true,
|
||||
'phrases' => array(
|
||||
),
|
||||
'customJSModules' => array('public/js/apps/lehre/Antrag.js'),
|
||||
'customCSSs' => array(
|
||||
'public/css/Fhc.css',
|
||||
'vendor/vuepic/vue-datepicker-css/main.css'
|
||||
),
|
||||
'customJSs' => array(
|
||||
)
|
||||
);
|
||||
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
$sitesettings
|
||||
);
|
||||
?>
|
||||
|
||||
<div id="wrapper">
|
||||
<div class="fhc-header">
|
||||
<h1 class="h2"><?= $this->p->t('studierendenantrag', 'antrag_header'); ?></h1>
|
||||
</div>
|
||||
|
||||
<div class="fhc-container row">
|
||||
<div class="col-sm-8 mb-3">
|
||||
<studierendenantrag-antrag
|
||||
prestudent-id="<?= $prestudent_id; ?>"
|
||||
antrag-type="<?= $antrag_type; ?>"
|
||||
studierendenantrag-id="<?= $studierendenantrag_id; ?>"
|
||||
v-model:info-array="infoArray"
|
||||
v-model:status-msg="statusMsg"
|
||||
v-model:status-severity="statusSeverity"
|
||||
>
|
||||
</studierendenantrag-antrag>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<studierendenantrag-status :msg="statusMsg" :severity="statusSeverity"></studierendenantrag-status>
|
||||
<studierendenantrag-infoblock :infos="infoArray"></studierendenantrag-infoblock>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Footer',
|
||||
$sitesettings
|
||||
);
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
use \DateTime as DateTime;
|
||||
|
||||
$sitesettings = array(
|
||||
'title' => 'Anträge auf Änderung des Studierendenstatus',
|
||||
'cis' => true,
|
||||
'vue3' => true,
|
||||
'axios027' => true,
|
||||
'bootstrap5' => true,
|
||||
'tabulator5' => true,
|
||||
'fontawesome6' => true,
|
||||
'primevue3' => true,
|
||||
'phrases' => array(
|
||||
'global',
|
||||
'ui',
|
||||
'studierendenantrag',
|
||||
'lehre',
|
||||
'person',
|
||||
),
|
||||
'customJSModules' => array('public/js/apps/lehre/Antrag/Leitung.js'),
|
||||
'customCSSs' => array(
|
||||
'public/css/Fhc.css'
|
||||
),
|
||||
'customJSs' => array(
|
||||
)
|
||||
);
|
||||
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
$sitesettings
|
||||
);
|
||||
?>
|
||||
|
||||
<div id="wrapper">
|
||||
<div class="fhc-header">
|
||||
<h1><?= $this->p->t('studierendenantrag', 'antrag_header'); ?></h1>
|
||||
</div>
|
||||
|
||||
<div class="fhc-container row">
|
||||
<div class="col-xs-8">
|
||||
|
||||
<studierendenantrag-leitung
|
||||
:stg-a="<?= htmlspecialchars(json_encode(array_values($stgA))); ?>"
|
||||
:stg-l="<?= htmlspecialchars(json_encode(array_values($stgL))); ?>"
|
||||
>
|
||||
</studierendenantrag-leitung>
|
||||
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Footer',
|
||||
$sitesettings
|
||||
);
|
||||
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
$sitesettings = array(
|
||||
'title' => 'Antrag auf Änderung des Studierendenstatus',
|
||||
'cis' => true,
|
||||
'vue3' => true,
|
||||
'axios027' => true,
|
||||
'bootstrap5' => true,
|
||||
'fontawesome6' => true,
|
||||
'phrases' => array(
|
||||
),
|
||||
'customJSModules' => array('public/js/apps/lehre/Antrag/Student.js'),
|
||||
'customCSSs' => array(
|
||||
'public/css/Fhc.css'
|
||||
),
|
||||
'customJSs' => array(
|
||||
)
|
||||
);
|
||||
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
$sitesettings
|
||||
);
|
||||
?>
|
||||
|
||||
<div id="wrapper">
|
||||
|
||||
<div class="fhc-header">
|
||||
<h1 class="h2"><?= $this->p->t('studierendenantrag', 'antrag_header'); ?></h1>
|
||||
</div>
|
||||
|
||||
<div class="fhc-container row">
|
||||
<div class="col-xs-8">
|
||||
<?php if ($antraege) { ?>
|
||||
<?php foreach($antraege as $prestudent_id => $array){ ?>
|
||||
<h4><?= $array['bezeichnungStg']; ?> (<?= $array['bezeichnungOrgform']; ?>)</h4>
|
||||
|
||||
<?php foreach ($array['allowedNewTypes'] as $type) { ?>
|
||||
<div class="alert alert-secondary">
|
||||
<p><?= $this->p->t('studierendenantrag', 'calltoaction_' . $type); ?></p>
|
||||
<hr>
|
||||
<a href="<?= site_url('lehre/Studierendenantrag/' . strtolower($type) . '/' . $prestudent_id); ?>" class="btn btn-outline-secondary">
|
||||
<i class="fa fa-plus"></i> <?= $this->p->t('studierendenantrag', 'antrag_typ_' . $type); ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_typ'); ?></th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_status'); ?></th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_studiensemester'); ?></th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_erstelldatum'); ?></th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_datum_wiedereinstieg'); ?></th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_grund'); ?></th>
|
||||
<th><?= $this->p->t('studierendenantrag', 'antrag_dateianhaenge'); ?></th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($array['antraege'] as $antrag){ ?>
|
||||
<tr>
|
||||
<td><?= $antrag->studierendenantrag_id; ?></td>
|
||||
<td><?= $this->p->t('studierendenantrag', 'antrag_typ_' . $antrag->typ); ?></td>
|
||||
<td><?= $antrag->status_bezeichnung; ?></td>
|
||||
<td><?= $antrag->studiensemester_kurzbz; ?></td>
|
||||
<td><?= (new DateTime($antrag->datum))->format('d.m.Y'); ?></td>
|
||||
<td><?= $antrag->datum_wiedereinstieg ? (new DateTime($antrag->datum_wiedereinstieg))->format('d.m.Y') : ''; ?></td>
|
||||
<td><!-- Button trigger modal -->
|
||||
<?php if($antrag->grund){ ?>
|
||||
<a href="#modalgrund<?= $antrag->studierendenantrag_id; ?>" data-bs-toggle="modal">
|
||||
<?= $this->p->t('studierendenantrag', 'antrag_grund'); ?>
|
||||
</a>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modalgrund<?= $antrag->studierendenantrag_id; ?>" tabindex="-1" aria-labelledby="modalgrundLabel<?= $antrag->studierendenantrag_id; ?>" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="modalgrundLabel<?= $antrag->studierendenantrag_id; ?>"><?= $this->p->t('studierendenantrag', 'antrag_grund'); ?></h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<pre><?= $antrag->grund; ?></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php if($antrag->dms_id) {?>
|
||||
<a
|
||||
class="text-decoration-none"
|
||||
href="<?= site_url('lehre/Antrag/Attachment/show/' . $antrag->dms_id) ?>"
|
||||
target="_blank">
|
||||
<i class="fa fa-paperclip" aria-hidden="true"></i> <?= $this->p->t('studierendenantrag', 'antrag_anhang'); ?>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</td>
|
||||
<td>
|
||||
<a href="<?= site_url('lehre/Studierendenantrag/' . strtolower($antrag->typ) . '/' . $antrag->prestudent_id . '/' . $antrag->studierendenantrag_id); ?>"><i class="fa-solid fa-pen" title="<?= $this->p->t('studierendenantrag', 'btn_edit'); ?>"></i></a>
|
||||
<?php if ($antrag->typ != Studierendenantrag_model::TYP_WIEDERHOLUNG && in_array($antrag->status, [
|
||||
Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
Studierendenantragstatus_model::STATUS_OBJECTED,
|
||||
Studierendenantragstatus_model::STATUS_OBJECTION_DENIED,
|
||||
Studierendenantragstatus_model::STATUS_REMINDERSENT
|
||||
])) { ?>
|
||||
<a class="ms-2" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xml=Antrag' . $antrag->typ . '.xml.php&xsl=Antrag' . $antrag->typ . '&id=' . $antrag->studierendenantrag_id . '&uid=' . getAuthUID()); ?>"><i class="fa-solid fa-download" title="<?= $this->p->t('studierendenantrag', 'btn_download_antrag'); ?>"></i></a>
|
||||
<?php } ?>
|
||||
<?php if ($antrag->typ == Studierendenantrag_model::TYP_WIEDERHOLUNG && $antrag->status == Studierendenantragstatus_model::STATUS_APPROVED) { ?>
|
||||
<a class="ms-2" href="#modalgrund<?= $antrag->studierendenantrag_id; ?>" data-bs-toggle="modal"><?= $this->p->t('studierendenantrag', 'btn_show_lvs'); ?></a>
|
||||
<lv-popup id="modalgrund<?= $antrag->studierendenantrag_id; ?>" antrag-id = "<?= $antrag->studierendenantrag_id; ?>">
|
||||
<?= $this->p->t('studierendenantrag', 'my_lvs'); ?>
|
||||
</lv-popup>
|
||||
<?php } ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<p class="alert alert-danger" role="alert">
|
||||
<?= $this->p->t('studierendenantrag', 'error_no_student'); ?>
|
||||
</p>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Footer',
|
||||
$sitesettings
|
||||
);
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
$sitesettings = array(
|
||||
'title' => 'Antrag Wiederholung vom Studium',
|
||||
'cis' => true,
|
||||
'vue3' => true,
|
||||
'axios027' => true,
|
||||
'bootstrap5' => true,
|
||||
'fontawesome6' => true,
|
||||
'tabulator5' => true,
|
||||
'phrases' => array(
|
||||
'ui',
|
||||
'lehre',
|
||||
'global'
|
||||
),
|
||||
'customJSModules' => array('public/js/apps/lehre/Antrag/Lvzuweisung.js'),
|
||||
'customCSSs' => array(
|
||||
),
|
||||
'customJSs' => array(
|
||||
)
|
||||
);
|
||||
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
$sitesettings
|
||||
);
|
||||
?>
|
||||
|
||||
<div id="wrapper" class="overflow-hidden">
|
||||
<div class="fhc-header" v-if="notinframe">
|
||||
<h1 class="h2"><?= $this->p->t('studierendenantrag', 'title_lvzuweisen', ['name' => $antrag->name]);?></h1>
|
||||
</div>
|
||||
<div class="fhc-container row mt-3">
|
||||
<lv-zuweisung antrag-id="<?= $antrag_id; ?>" initial-status-code="<?= $antrag->status; ?>" initial-status-msg="<?= $antrag->statustyp; ?>"<?= ($antrag->status != Studierendenantragstatus_model::STATUS_CREATED && $antrag->status != Studierendenantragstatus_model::STATUS_LVSASSIGNED) ? ' disabled' : ''; ?>></lv-zuweisung>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Footer',
|
||||
$sitesettings
|
||||
);
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<RDF:RDF
|
||||
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:NOTE="<?= $url; ?>/rdf#"
|
||||
>
|
||||
<?php if($lvs) { ?>
|
||||
<RDF:Seq about="<?= $url; ?>/liste">
|
||||
<?php foreach($lvs as $row) { ?>
|
||||
<?php $freigabedatum = new DateTime($row->freigabedatum); ?>
|
||||
<?php $benotungsdatum = new DateTime($row->insertamum); ?>
|
||||
<RDF:li>
|
||||
<RDF:Description id="<?= $row->studierendenantrag_lehrveranstaltung_id; ?>/<?= $row->prestudent_id; ?>/<?= $row->studiensemester_kurzbz; ?>" about="<?= $url; ?>/<?= $row->studierendenantrag_lehrveranstaltung_id; ?>/<?= $row->prestudent_id; ?>/<?= $row->studiensemester_kurzbz; ?>" >
|
||||
<NOTE:studierendenantrag_lehrveranstaltung_id><![CDATA[<?= $row->studierendenantrag_lehrveranstaltung_id; ?>]]></NOTE:studierendenantrag_lehrveranstaltung_id>
|
||||
<NOTE:lehrveranstaltung_id><![CDATA[<?= $row->lehrveranstaltung_id; ?>]]></NOTE:lehrveranstaltung_id>
|
||||
<NOTE:prestudent_id><![CDATA[<?= $row->prestudent_id; ?>]]></NOTE:prestudent_id>
|
||||
<NOTE:mitarbeiter_uid><![CDATA[<?= $row->insertvon; ?>]]></NOTE:mitarbeiter_uid>
|
||||
<NOTE:studiensemester_kurzbz><![CDATA[<?= $row->studiensemester_kurzbz; ?>]]></NOTE:studiensemester_kurzbz>
|
||||
<NOTE:note><![CDATA[<?= $row->note; ?>]]></NOTE:note>
|
||||
<NOTE:freigabedatum_iso><![CDATA[<?= $freigabedatum->format('c'); ?>]]></NOTE:freigabedatum_iso>
|
||||
<NOTE:freigabedatum><![CDATA[<?= $freigabedatum->format('d.m.Y'); ?>]]></NOTE:freigabedatum>
|
||||
<NOTE:benotungsdatum_iso><![CDATA[<?= $benotungsdatum->format('c'); ?>]]></NOTE:benotungsdatum_iso>
|
||||
<NOTE:benotungsdatum><![CDATA[<?= $benotungsdatum->format('d.m.Y'); ?>]]></NOTE:benotungsdatum>
|
||||
<NOTE:note_bezeichnung><![CDATA[<?= $row->note_bezeichnung; ?>]]></NOTE:note_bezeichnung>
|
||||
<NOTE:lehrveranstaltung_bezeichnung><![CDATA[<?= $row->lv_bezeichnung; ?>]]></NOTE:lehrveranstaltung_bezeichnung>
|
||||
<NOTE:studiengang><![CDATA[<?= $row->stg_bezeichnung; ?>]]></NOTE:studiengang>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
<?php } ?>
|
||||
</RDF:Seq>
|
||||
<?php } ?>
|
||||
</RDF:RDF>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<RDF:RDF
|
||||
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:NC="http://home.netscape.com/NC-rdf#"
|
||||
xmlns:DBDML="http://www.technikum-wien.at/dbdml/rdf#"
|
||||
>
|
||||
<RDF:Seq RDF:about="http://www.technikum-wien.at/dbdml/msg">
|
||||
<RDF:li>
|
||||
<RDF:Description RDF:about="http://www.technikum-wien.at/dbdml/0" >
|
||||
<DBDML:return><?= $return ? 'true' : 'false'; ?></DBDML:return>
|
||||
<DBDML:errormsg><![CDATA[<?= implode("/n", $errormsg);?>]]></DBDML:errormsg>
|
||||
<DBDML:warning><![CDATA[]]></DBDML:warning>
|
||||
<DBDML:data><![CDATA[]]></DBDML:data>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
</RDF:Seq>
|
||||
</RDF:RDF>
|
||||
@@ -92,85 +92,93 @@ $this->load->view(
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-4">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<th class="col-xs-5"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td colspan="3"><span id="ects"><?php echo $antragData->ects ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4">
|
||||
<?php echo $this->p->t('anrechnung', 'bisherAngerechneteEcts'); ?>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td><span id="ects"><?php echo $antragData->ects ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-5">
|
||||
<?php echo $this->p->t('anrechnung', 'bisherAngerechneteEcts'); ?>
|
||||
<span class="approveAnrechnungDetail-anrechnungEctsTooltip"
|
||||
data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungEctsTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<td>
|
||||
Total: <span id="sumEctsTotal"><?php echo number_format($antragData->sumEctsSchulisch + $antragData->sumEctsBeruflich, 1) ?></span>
|
||||
[Schulisch: <span id="sumEctsSchulisch" value="<?php echo $antragData->sumEctsSchulisch ?>"><?php echo $antragData->sumEctsSchulisch ?></span> /
|
||||
Beruflich: <span id="sumEctsBeruflich" value="<?php echo $antragData->sumEctsBeruflich ?>"><?php echo $antragData->sumEctsBeruflich ?></span> ]
|
||||
<span id="sumEctsMsg"></span>
|
||||
<span id="sumEctsMsg"></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
|
||||
<td colspan="3">
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
|
||||
<td colspan="3"><?php echo $antragData->zgv ?></td>
|
||||
<th class="col-xs-3"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
|
||||
<td><?php echo $antragData->zgv ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></th>
|
||||
<td colspan="3"><?php echo $anrechnungData->anmerkung ?></td>
|
||||
<td><?php echo $anrechnungData->anmerkung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></th>
|
||||
<td colspan="3">
|
||||
<td>
|
||||
<a href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('global', 'begruendung'); ?></th>
|
||||
<td colspan="3"><span id="begruendung_id" data-begruendung_id="<?php echo $anrechnungData->begruendung_id ?>" ><?php echo $anrechnungData->begruendung ?></span></td>
|
||||
<td><span id="begruendung_id" data-begruendung_id="<?php echo $anrechnungData->begruendung_id ?>" ><?php echo $anrechnungData->begruendung ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungEctsLabel'); ?></th>
|
||||
<td><span><?php echo $anrechnungData->begruendung_ects ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungLvinhaltLabel'); ?></th>
|
||||
<td><span><?php echo $anrechnungData->begruendung_lvinhalt ?></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
|
||||
const CHAR_LENGTH125 = 125;
|
||||
const CHAR_LENGTH150 = 150;
|
||||
const CHAR_LENGTH500 = 500;
|
||||
const CHAR_LENGTH1000 = 1000;
|
||||
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
@@ -197,6 +200,46 @@ $this->load->view(
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Begruendung ECTS -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b><?php echo $this->p->t('anrechnung', 'begruendungEcts'); ?></b> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungBegruendungEctsTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control" name="begruendung_ects" rows="1" id="requestAnrechnung-begruendungEcts"
|
||||
maxlength="<?php echo CHAR_LENGTH150 ?>" required><?php echo $anrechnungData->begruendung_ects; ?></textarea>
|
||||
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-begruendungEcts-charCounter"><?php echo CHAR_LENGTH150 ?></span></span></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Begruendung LV Inhalt -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b><?php echo $this->p->t('anrechnung', 'begruendungLvinhalt'); ?></b> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungBegruendungLvinhaltTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control" name="begruendung_lvinhalt" rows="7" id="requestAnrechnung-begruendungLvinhalt"
|
||||
minlength="<?php echo CHAR_LENGTH500 ?>"
|
||||
maxlength="<?php echo CHAR_LENGTH1000 ?>" required><?php echo $anrechnungData->begruendung_lvinhalt; ?></textarea>
|
||||
<small><span class="text-muted pull-right"> / <?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-begruendungLvinhalt-charCounterMax"><?php echo CHAR_LENGTH1000 ?></span></span></small>
|
||||
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'fehlendeMinZeichen'); ?> :<span id="requestAnrechnung-begruendungLvinhalt-charCounterMin"><?php echo CHAR_LENGTH500 ?></span></span></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Dokument Upload-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
@@ -242,8 +285,8 @@ $this->load->view(
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control" name="anmerkung" rows="1" id="requestAnrechnung-herkunftDerKenntnisse"
|
||||
maxlength="<?php echo HERKUNFT_DER_KENNTNISSE_MAX_LENGTH ?>" required><?php echo $anrechnungData->anmerkung; ?></textarea>
|
||||
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-herkunftDerKenntnisse-charCounter"><?php echo HERKUNFT_DER_KENNTNISSE_MAX_LENGTH ?></span></span></small>
|
||||
maxlength="<?php echo CHAR_LENGTH125 ?>" required><?php echo $anrechnungData->anmerkung; ?></textarea>
|
||||
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-herkunftDerKenntnisse-charCounter"><?php echo CHAR_LENGTH125 ?></span></span></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,6 +16,23 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Referenzbeispiele ECTS Berechnung panel -->
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading" role="tab" id="headingBegruendung">
|
||||
<h4 class="panel-title">
|
||||
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseBegruendung"
|
||||
aria-expanded="false" aria-controls="collapseBegruendung">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i> 
|
||||
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungTitle'); ?>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseBegruendung" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingBegruendung">
|
||||
<div class="panel-body">
|
||||
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungBody'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Nachweisdokumente: Voraussetzung panel -->
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading" role="tab" id="headingTwo">
|
||||
|
||||
@@ -84,49 +84,50 @@ $this->load->view(
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-4">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<th class="col-xs-5"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
|
||||
<td>
|
||||
<tr>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
|
||||
<td><?php echo $antragData->zgv ?></td>
|
||||
@@ -142,6 +143,14 @@ $this->load->view(
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungEctsLabel'); ?></th>
|
||||
<td><span><?php echo $anrechnungData->begruendung_ects ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungLvinhaltLabel'); ?></th>
|
||||
<td><span><?php echo $anrechnungData->begruendung_lvinhalt ?></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -15,6 +15,22 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading" role="tab" id="headingBegruendung">
|
||||
<h4 class="panel-title">
|
||||
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseBegruendung"
|
||||
aria-expanded="false" aria-controls="collapseBegruendung">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i> 
|
||||
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungTitle'); ?>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseBegruendung" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingBegruendung">
|
||||
<div class="panel-body">
|
||||
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungBody'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading" role="tab" id="headingZero">
|
||||
<h4 class="panel-title">
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
$this->config->load('infocenter');
|
||||
$APP = '\'infocenter\'';
|
||||
$ABGEWIESENEN_STATUS = '\'Abgewiesener\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
@@ -17,6 +18,8 @@ $query = '
|
||||
p.nachname AS "Nachname",
|
||||
so.studiengangkurzbzlang as "Studiengang",
|
||||
pss.insertamum AS "AbgewiesenAm",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser AS "LockUser",
|
||||
(
|
||||
SELECT l.zeitpunkt
|
||||
FROM system.tbl_log l
|
||||
@@ -54,6 +57,15 @@ $query = '
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
tpl.zeitpunkt,
|
||||
sp.nachname AS lockuser
|
||||
FROM system.tbl_person_lock tpl
|
||||
JOIN public.tbl_benutzer sb USING (uid)
|
||||
JOIN public.tbl_person sp ON sb.person_id = sp.person_id
|
||||
WHERE tpl.app = '.$APP.'
|
||||
) pl USING(person_id)
|
||||
WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .'
|
||||
AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
|
||||
AND (sg.typ IN ('. $STUDIENGANG_TYP .')
|
||||
@@ -70,6 +82,7 @@ $query = '
|
||||
'requiredPermissions' => 'infocenter',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array(
|
||||
'PersonId',
|
||||
'PreStudentID',
|
||||
@@ -77,11 +90,23 @@ $query = '
|
||||
ucfirst($this->p->t('person', 'nachname')),
|
||||
ucfirst($this->p->t('lehre', 'studiengang')),
|
||||
ucfirst($this->p->t('infocenter', 'abgewiesenam')),
|
||||
ucfirst($this->p->t('global', 'sperrdatum')),
|
||||
ucfirst($this->p->t('global', 'gesperrtVon')),
|
||||
ucfirst($this->p->t('global', 'nachricht')),
|
||||
ucfirst($this->p->t('infocenter', 'kaution'))
|
||||
),
|
||||
|
||||
'formatRow' => function($datasetRaw) {
|
||||
/* NOTE: Dont use $this here for PHP Version compatibility */
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s?person_id=%s&origin_page=%s&fhc_controller_id=%s&prev_filter_id=%s">Details</a>',
|
||||
site_url('system/infocenter/InfoCenter/showDetails'),
|
||||
$datasetRaw->{'PersonId'},
|
||||
'abgewiesen',
|
||||
(isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
|
||||
(isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
|
||||
);
|
||||
|
||||
if ($datasetRaw->{'Nachricht'} === null)
|
||||
{
|
||||
$datasetRaw->{'Nachricht'} = 'Nein';
|
||||
@@ -103,10 +128,29 @@ $query = '
|
||||
{
|
||||
$datasetRaw->{'Kaution'} = 'Offen';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'LockDate'} == null)
|
||||
{
|
||||
$datasetRaw->{'LockDate'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'LockUser'} == null)
|
||||
{
|
||||
$datasetRaw->{'LockUser'} = '-';
|
||||
}
|
||||
|
||||
$datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i');
|
||||
return $datasetRaw;
|
||||
},
|
||||
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
if ($datasetRaw->LockDate != null)
|
||||
{
|
||||
return FilterWidget::DEFAULT_MARK_ROW_CLASS;
|
||||
}
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Info Center',
|
||||
'jquery3' => true,
|
||||
'jqueryui1' => true,
|
||||
'jquerycheckboxes1' => true,
|
||||
'bootstrap3' => true,
|
||||
'fontawesome4' => true,
|
||||
'sbadmintemplate3' => true,
|
||||
'tablesorter2' => true,
|
||||
'ajaxlib' => true,
|
||||
'filterwidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'person' => array('vorname', 'nachname'),
|
||||
'global' => array('mailAnXversandt'),
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<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">
|
||||
Aufgenommen
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<?php $this->load->view('system/infocenter/infocenterAufgenommenData.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
$this->config->load('infocenter');
|
||||
$AUFGENOMMENER_STATUS = '\'Aufgenommener\'';
|
||||
$REJECTED_STATUS = '\'Abgewiesener\'';
|
||||
$STUDIENGANG_TYP = '\'l\'';
|
||||
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
|
||||
$LOGDATA_NAME = '\'Message sent\'';
|
||||
$LOGDATA_VON = '\'online\'';
|
||||
|
||||
$query = '
|
||||
SELECT
|
||||
p.person_id AS "PersonId",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ) || UPPER(sg.kurzbz)), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE
|
||||
pss.status_kurzbz = '. $AUFGENOMMENER_STATUS .'
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '. $REJECTED_STATUS .'
|
||||
AND spss.studiensemester_kurzbz IN (
|
||||
SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >
|
||||
(SELECT start FROM public.tbl_studiensemester sss WHERE studiensemester_kurzbz = '. $STUDIENSEMESTER .'))
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "Studiengang"
|
||||
FROM
|
||||
public.tbl_person p
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudent sps
|
||||
JOIN public.tbl_studiengang ssg USING(studiengang_kz)
|
||||
WHERE sps.person_id = p.person_id
|
||||
AND ssg.typ IN (' . $STUDIENGANG_TYP . ')
|
||||
AND ' . $AUFGENOMMENER_STATUS . ' = (
|
||||
SELECT spss.status_kurzbz
|
||||
FROM public.tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = sps.prestudent_id
|
||||
ORDER BY spss.datum DESC, spss.insertamum DESC, spss.ext_id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = sps.prestudent_id
|
||||
AND spss.status_kurzbz = ' . $AUFGENOMMENER_STATUS . '
|
||||
AND spss.studiensemester_kurzbz = ' . $STUDIENSEMESTER . '
|
||||
)
|
||||
)
|
||||
|
||||
';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'app' => InfoCenter::APP,
|
||||
'datasetName' => 'aufgenommen',
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'requiredPermissions' => 'infocenter',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array(
|
||||
'PersonId',
|
||||
ucfirst($this->p->t('person', 'vorname')) ,
|
||||
ucfirst($this->p->t('person', 'nachname')),
|
||||
ucfirst($this->p->t('lehre', 'studiengang'))
|
||||
),
|
||||
|
||||
'formatRow' => function($datasetRaw)
|
||||
{
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s?person_id=%s&origin_page=%s&fhc_controller_id=%s&prev_filter_id=%s">Details</a>',
|
||||
site_url('system/infocenter/InfoCenter/showDetails'),
|
||||
$datasetRaw->{'PersonId'},
|
||||
'aufgenommen',
|
||||
(isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
|
||||
(isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
|
||||
);
|
||||
return $datasetRaw;
|
||||
}
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
?>
|
||||
@@ -57,10 +57,11 @@
|
||||
if (isset($lockedby)):
|
||||
echo $this->p->t('global', 'wirdBearbeitetVon').': ';
|
||||
echo $lockedby;
|
||||
if ($origin_page == 'index'):
|
||||
if (in_array($origin_page, array('index', 'abgewiesen'))):
|
||||
$unlockpath = 'unlockPerson/'.$stammdaten->person_id;
|
||||
$unlockpath .= '?fhc_controller_id='.$fhc_controller_id;
|
||||
$unlockpath .= '&filter_id='.$prev_filter_id;
|
||||
$unlockpath .= '&origin_page='.$origin_page;
|
||||
?>
|
||||
|
||||
<a href="<?php echo $unlockpath; ?>">
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
// Internal resources
|
||||
$ajaxlib = isset($ajaxlib) ? $ajaxlib : false;
|
||||
$bootstrapper = isset($bootstrapper) ? $bootstrapper : false;
|
||||
$cis = isset($cis) ? $cis : false;
|
||||
$dialoglib = isset($dialoglib) ? $dialoglib : false;
|
||||
$filtercomponent = isset($filtercomponent) ? $filtercomponent : false;
|
||||
$filterwidget = isset($filterwidget) ? $filterwidget : false;
|
||||
@@ -43,4 +44,3 @@
|
||||
$tablewidget = isset($tablewidget) ? $tablewidget : false;
|
||||
$udfs = isset($udfs) ? $udfs : false;
|
||||
$widgets = isset($widgets) ? $widgets : false;
|
||||
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
generateJSsInclude('vendor/npm-asset/primevue/column/column.min.js');
|
||||
generateJSsInclude('vendor/npm-asset/primevue/calendar/calendar.min.js');
|
||||
generateJSsInclude('vendor/npm-asset/primevue/skeleton/skeleton.min.js');
|
||||
generateJSsInclude('vendor/npm-asset/primevue/autocomplete/autocomplete.min.js');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -118,6 +118,9 @@
|
||||
// HTML Widget CSS
|
||||
if ($widgets === true) generateCSSsInclude('public/css/Widgets.css');
|
||||
|
||||
// CIS
|
||||
if ($cis === true) generateCSSsInclude('public/css/cis_bs5.css');
|
||||
|
||||
// Eventually required CSS
|
||||
generateCSSsInclude($customCSSs); // Eventually required CSS
|
||||
?>
|
||||
|
||||
@@ -98,9 +98,9 @@ if($stsem=='')
|
||||
|
||||
//$note = $_REQUEST["note"];
|
||||
|
||||
if(!$rechte->isBerechtigt('admin',0) &&
|
||||
!$rechte->isBerechtigt('admin',$lv_obj->studiengang_kz) &&
|
||||
!$rechte->isBerechtigt('lehre',$lv_obj->studiengang_kz))
|
||||
if(!$rechte->isBerechtigt('admin', 0) &&
|
||||
!$rechte->isBerechtigt('admin', $lv_obj->studiengang_kz) &&
|
||||
!$rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz))
|
||||
{
|
||||
$qry = "SELECT lehreinheit_id FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
|
||||
@@ -117,11 +117,11 @@ if(!$rechte->isBerechtigt('admin',0) &&
|
||||
}
|
||||
}
|
||||
|
||||
function savenote($db,$lvid, $student_uid, $note, $punkte=null)
|
||||
function savenote($db, $lvid, $student_uid, $note, $punkte = null)
|
||||
{
|
||||
global $stsem, $user, $p, $noten_anmerkung;
|
||||
$jetzt = date("Y-m-d H:i:s");
|
||||
$punkte = str_replace(',','.',$punkte);
|
||||
$punkte = str_replace(',', '.', $punkte);
|
||||
//Ermitteln ob der Student diesem Kurs zugeteilt ist
|
||||
$qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung WHERE uid=".$db->db_add_param($student_uid)." AND lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER);
|
||||
if($result = $db->db_query($qry))
|
||||
@@ -207,13 +207,12 @@ if (isset($_REQUEST["submit"]))
|
||||
$note = $_REQUEST["note"];
|
||||
$punkte = (isset($_REQUEST["punkte"])?$_REQUEST["punkte"]:'');
|
||||
|
||||
$response = savenote($db,$lvid, $student_uid, $note, $punkte);
|
||||
$response = savenote($db, $lvid, $student_uid, $note, $punkte);
|
||||
echo $response;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
foreach ($_POST as $row=>$val)
|
||||
foreach ($_POST as $row => $val)
|
||||
{
|
||||
if(mb_strstr(mb_strtolower($row), 'matrikelnr_'))
|
||||
{
|
||||
@@ -232,7 +231,7 @@ if (isset($_REQUEST["submit"]))
|
||||
$response.="\nNote oder Punkte fehlen";
|
||||
continue;
|
||||
}
|
||||
$punkte=str_replace(',','.', $punkte);
|
||||
$punkte=str_replace(',', '.', $punkte);
|
||||
|
||||
//check ob statt Matrikelnummer nicht bereits student_uid (Moodle Grade Import) vorliegt..
|
||||
$student = new student();
|
||||
@@ -241,7 +240,7 @@ if (isset($_REQUEST["submit"]))
|
||||
//UID ermitteln
|
||||
if(!$student_uid = $student->getUidFromMatrikelnummer($matrikelnummer))
|
||||
{
|
||||
$response.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht',array($matrikelnummer));
|
||||
$response.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht', array($matrikelnummer));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -268,7 +267,7 @@ if (isset($_REQUEST["submit"]))
|
||||
}
|
||||
}
|
||||
|
||||
$val=savenote($db,$lvid, $student_uid, $note, $punkte);
|
||||
$val=savenote($db, $lvid, $student_uid, $note, $punkte);
|
||||
if($val!='neu' && $val!='update' && $val!='update_f')
|
||||
$response.=$val;
|
||||
}
|
||||
|
||||
@@ -20,33 +20,33 @@
|
||||
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
||||
* Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
require_once ('../../../../config/cis.config.inc.php');
|
||||
require_once ('../../../../config/global.config.inc.php');
|
||||
require_once ('../../../../include/functions.inc.php');
|
||||
require_once ('../../../../include/lehrveranstaltung.class.php');
|
||||
require_once ('../../../../include/studiengang.class.php');
|
||||
require_once ('../../../../include/studiensemester.class.php');
|
||||
require_once ('../../../../include/lehreinheit.class.php');
|
||||
require_once ('../../../../include/benutzerberechtigung.class.php');
|
||||
require_once ('../../../../include/uebung.class.php');
|
||||
require_once ('../../../../include/beispiel.class.php');
|
||||
require_once ('../../../../include/studentnote.class.php');
|
||||
require_once ('../../../../include/datum.class.php');
|
||||
require_once ('../../../../include/legesamtnote.class.php');
|
||||
require_once ('../../../../include/lvgesamtnote.class.php');
|
||||
require_once ('../../../../include/zeugnisnote.class.php');
|
||||
require_once ('../../../../include/pruefung.class.php');
|
||||
require_once ('../../../../include/person.class.php');
|
||||
require_once ('../../../../include/benutzer.class.php');
|
||||
require_once ('../../../../include/mitarbeiter.class.php');
|
||||
require_once ('../../../../include/mail.class.php');
|
||||
require_once ('../../../../include/phrasen.class.php');
|
||||
require_once ('../../../../include/note.class.php');
|
||||
require_once ('../../../../include/notenschluessel.class.php');
|
||||
require_once ('../../../../include/studienplan.class.php');
|
||||
require_once ('../../../../include/addon.class.php');
|
||||
require_once ('../../../../include/mobilitaet.class.php');
|
||||
require_once ('../../../../include/student.class.php');
|
||||
require_once('../../../../config/cis.config.inc.php');
|
||||
require_once('../../../../config/global.config.inc.php');
|
||||
require_once('../../../../include/functions.inc.php');
|
||||
require_once('../../../../include/lehrveranstaltung.class.php');
|
||||
require_once('../../../../include/studiengang.class.php');
|
||||
require_once('../../../../include/studiensemester.class.php');
|
||||
require_once('../../../../include/lehreinheit.class.php');
|
||||
require_once('../../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../../include/uebung.class.php');
|
||||
require_once('../../../../include/beispiel.class.php');
|
||||
require_once('../../../../include/studentnote.class.php');
|
||||
require_once('../../../../include/datum.class.php');
|
||||
require_once('../../../../include/legesamtnote.class.php');
|
||||
require_once('../../../../include/lvgesamtnote.class.php');
|
||||
require_once('../../../../include/zeugnisnote.class.php');
|
||||
require_once('../../../../include/pruefung.class.php');
|
||||
require_once('../../../../include/person.class.php');
|
||||
require_once('../../../../include/benutzer.class.php');
|
||||
require_once('../../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../../include/mail.class.php');
|
||||
require_once('../../../../include/phrasen.class.php');
|
||||
require_once('../../../../include/note.class.php');
|
||||
require_once('../../../../include/notenschluessel.class.php');
|
||||
require_once('../../../../include/studienplan.class.php');
|
||||
require_once('../../../../include/addon.class.php');
|
||||
require_once('../../../../include/mobilitaet.class.php');
|
||||
require_once('../../../../include/student.class.php');
|
||||
|
||||
$summe_stud = 0;
|
||||
$summe_t2 = 0;
|
||||
@@ -104,6 +104,152 @@ $sprachen->getAll(true);
|
||||
|
||||
$errormsg = '';
|
||||
|
||||
// eingetragene lv-gesamtnoten freigeben
|
||||
if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
|
||||
{
|
||||
// Passwort pruefen
|
||||
if (checkldapuser($user, $_REQUEST['passwort']))
|
||||
{
|
||||
$jetzt = date("Y-m-d H:i:s");
|
||||
$neuenoten = 0;
|
||||
|
||||
$studlist = "<table border='1'>
|
||||
<tr>";
|
||||
|
||||
// entweder personenbezogene Daten einbinden
|
||||
if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
|
||||
{
|
||||
$studlist .= "
|
||||
<td><b>" . $p->t('global/personenkz') . "</b></td>
|
||||
<td><b>" . $p->t('global/studiengang') . "</b></td>
|
||||
<td><b>" . $p->t('global/nachname') . "</b></td>
|
||||
<td><b>" . $p->t('global/vorname') . "</b></td>
|
||||
";
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
$studlist .= "<td><b>" . $p->t('benotungstool/punkte') . "</b></td>\n";
|
||||
}
|
||||
$studlist .= "<td><b>" . $p->t('benotungstool/note') . "</b></td>\n";
|
||||
|
||||
$studlist .= "<td><b>" . $p->t('benotungstool/bearbeitetvon') . "</b></td></tr>\n";
|
||||
}
|
||||
// oder anonymisiert nur die UIDs einbinden
|
||||
else
|
||||
{
|
||||
$studlist .= "
|
||||
<td><b>" . $p->t('global/uid') . "</b></td></tr>\n
|
||||
";
|
||||
}
|
||||
|
||||
// studentenquery
|
||||
$qry_stud = "SELECT
|
||||
DISTINCT uid, vorname, nachname, matrikelnr, kurzbzlang
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
JOIN campus.vw_student USING(uid)
|
||||
JOIN public.tbl_studiengang ON campus.vw_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
WHERE
|
||||
studiensemester_kurzbz = " . $db->db_add_param($stsem) . "
|
||||
AND lehrveranstaltung_id = " . $db->db_add_param($lvid, FHC_INTEGER) . "
|
||||
ORDER BY nachname, vorname ";
|
||||
if ($result_stud = $db->db_query($qry_stud))
|
||||
{
|
||||
$i = 1;
|
||||
while ($row_stud = $db->db_fetch_object($result_stud))
|
||||
{
|
||||
$lvgesamtnote = new lvgesamtnote();
|
||||
if ($lvgesamtnote->load($lvid, $row_stud->uid, $stsem))
|
||||
{
|
||||
if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum)
|
||||
{
|
||||
$lvgesamtnote->freigabedatum = $jetzt;
|
||||
$lvgesamtnote->freigabevon_uid = $user;
|
||||
$lvgesamtnote->save();
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
|
||||
{
|
||||
$studlist .= "<tr><td>" . trim($row_stud->matrikelnr) . "</td>";
|
||||
$studlist .= "<td>" . trim($row_stud->kurzbzlang) . "</td>";
|
||||
$studlist .= "<td>" . trim($row_stud->nachname) . "</td>";
|
||||
$studlist .= "<td>" . trim($row_stud->vorname) . "</td>";
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
$studlist .= "<td>";
|
||||
if ($lvgesamtnote->punkte != '')
|
||||
$studlist .= trim(number_format($lvgesamtnote->punkte, 2));
|
||||
$studlist .= "</td>\n";
|
||||
}
|
||||
$studlist .= "<td>" . $noten_array[trim($lvgesamtnote->note)]['bezeichnung_mehrsprachig'][$sprache] . "</td>";
|
||||
|
||||
$studlist .= "<td>" . $lvgesamtnote->mitarbeiter_uid;
|
||||
if ($lvgesamtnote->updatevon != '')
|
||||
$studlist .= " (" . $lvgesamtnote->updatevon . ")";
|
||||
$studlist .= "</td></tr>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$studlist .= "<tr><td>" . trim($row_stud->uid) . "</td></tr>\n";
|
||||
}
|
||||
|
||||
$neuenoten ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$studlist .= "</table>";
|
||||
|
||||
// mail an assistentin und den user selber verschicken
|
||||
if ($neuenoten > 0)
|
||||
{
|
||||
$lv = new lehrveranstaltung($lvid);
|
||||
$sg = new studiengang($lv->studiengang_kz);
|
||||
$lektor_adresse = $user . "@" . DOMAIN;
|
||||
$adressen = $sg->email . ", " . $user . "@" . DOMAIN;
|
||||
|
||||
$studienplan = new studienplan();
|
||||
$studienplan->getStudienplanLehrveranstaltung($lvid, $stsem);
|
||||
$studienplan_bezeichnung = '';
|
||||
foreach ($studienplan->result as $row)
|
||||
$studienplan_bezeichnung .= $row->bezeichnung . ' ';
|
||||
|
||||
$mit = new mitarbeiter();
|
||||
$mit->load($user);
|
||||
$name = $mit->anrede.' '.$mit->vorname.' '.$mit->nachname.' ('.$mit->kurzbz.')';
|
||||
|
||||
$betreff = 'Notenfreigabe ' . $lv->bezeichnung . ' ' . $lv->orgform_kurzbz . ' - ' . $studienplan_bezeichnung;
|
||||
$mail = new mail($adressen, 'vilesci@' . DOMAIN, $betreff, '');
|
||||
$htmlcontent = "<html>
|
||||
<body>
|
||||
$name hat neue Noten für die Lehrveranstaltung\n\n<br>
|
||||
<b>" . $sg->kuerzel . ' ' . $lv->semester . '.Semester
|
||||
' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
|
||||
<br>eingetragen.\n<br><br>
|
||||
Die Noten können jetzt ins Zeugnis übernommen werden.\n";
|
||||
|
||||
$htmlcontent .= $studlist;
|
||||
|
||||
$htmlcontent.= "
|
||||
<br>Anzahl der Noten:" . $neuenoten . "
|
||||
<br><br>" . $p->t('abgabetool/mailVerschicktAn') . ": " . $adressen . "
|
||||
</body></html>";
|
||||
$mail->setHTMLContent($htmlcontent);
|
||||
$mail->setReplyTo($lektor_adresse);
|
||||
$mail->send();
|
||||
}
|
||||
|
||||
http_response_code(303);
|
||||
header('Location: ' . $_SERVER['REQUEST_URI']);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = $p->t('gesamtnote/passwortFalsch');
|
||||
}
|
||||
}
|
||||
|
||||
echo '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
@@ -145,8 +291,8 @@ echo '<!DOCTYPE HTML>
|
||||
position:absolute;
|
||||
top:100px;
|
||||
left:300px;
|
||||
width:400px;
|
||||
height:200px;
|
||||
min-width:450px;
|
||||
min-height:200px;
|
||||
background-color:#cccccc;
|
||||
visibility:hidden;
|
||||
border-style:solid;
|
||||
@@ -190,11 +336,14 @@ foreach ($noten_obj->result as $row)
|
||||
$noten_array[$row->note]['lehre'] = $row->lehre;
|
||||
$noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar;
|
||||
$noten_array[$row->note]['anmerkung'] = $row->anmerkung;
|
||||
foreach ($sprachen->result AS $s)
|
||||
foreach ($sprachen->result as $s)
|
||||
$noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache];
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
const CIS_GESAMTNOTE_PUNKTE = <?php echo CIS_GESAMTNOTE_PUNKTE ? 'true' : 'false';?>;
|
||||
|
||||
function getOffset(pos)
|
||||
{
|
||||
var x,y;
|
||||
@@ -376,7 +525,7 @@ foreach ($noten_obj->result as $row)
|
||||
var datum_test = datum.split(".");
|
||||
if (datum_test[0].length != 2 || datum_test[1].length != 2 || datum_test[2].length!=4
|
||||
|| isNaN(datum_test[2]) || datum_test[1]>12 || datum_test[1]<1 || datum_test[0]>31 || datum_test[0]<1)
|
||||
alert("Invalid Date Format: DD.MM.YYYY");
|
||||
alert("Das Datum entspricht nicht dem Format TT.MM.JJJJ!");
|
||||
else
|
||||
{
|
||||
var anlegendiv = document.getElementById("nachpruefung_div");
|
||||
@@ -402,6 +551,7 @@ foreach ($noten_obj->result as $row)
|
||||
url += '&typ='+typ;
|
||||
url += '&'+ts;
|
||||
|
||||
|
||||
$.ajax({
|
||||
type:"GET",
|
||||
url: url,
|
||||
@@ -593,8 +743,8 @@ foreach ($noten_obj->result as $row)
|
||||
str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
|
||||
var anlegendiv = document.getElementById("nachpruefung_div");
|
||||
var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
|
||||
str += '<tr><td><?php echo $p->t('benotungstool/importAnweisung');?>:</td>';
|
||||
str += '<td></td><tr><td><textarea id="noteimporttextarea" name="notenimport"></textarea></td></tr>';
|
||||
str += '<tr><td><div style="width: 400px;"><?php echo $p->t('benotungstool/importAnweisung');?>:</div></td>';
|
||||
str += '<td></td><tr><td><textarea style="width: 400px;" id="noteimporttextarea" name="notenimport"></textarea></td></tr>';
|
||||
str += "<tr><td><input type='button' name='speichern' value='<?php echo $p->t('global/speichern');?>' onclick='saveGradeBulk();'>";
|
||||
str += "</td><td></td></tr></table></center></form>";
|
||||
anlegendiv.innerHTML = str;
|
||||
@@ -602,6 +752,25 @@ foreach ($noten_obj->result as $row)
|
||||
$('#noteimporttextarea').focus();
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Oeffnet ein Fenster fuer den Import von Noten für die Nachprüfung aus dem Excel
|
||||
// ****
|
||||
function GradeImportNachp(termin)
|
||||
{
|
||||
var str = "<form name='gradeimportNachp_form'><center><table style='width: 95%'>";
|
||||
str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
|
||||
var anlegendiv = document.getElementById("nachpruefung_div");
|
||||
var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
|
||||
str += '<tr><td><div style="width: 400px;"><?php echo $p->t('benotungstool/importAnweisungNachp');?>:</div></td>';
|
||||
str += '<td></td><tr><td><textarea style="width: 400px;" id="noteimporttextareaNachp" name="notenimportNachp"></textarea></td></tr>';
|
||||
|
||||
str += "<tr><td><input type='button' name='speichern' value='<?php echo $p->t('global/speichern');?>' onclick='saveGradeBulkNachp(\""+ termin +"\");'>";
|
||||
str += "</td><td></td></tr></table></center></form>";
|
||||
anlegendiv.innerHTML = str;
|
||||
anlegendiv.style.visibility = "visible";
|
||||
$('#noteimporttextareaNachp').focus();
|
||||
}
|
||||
|
||||
// Speichert die Noten ueber den Import
|
||||
function saveGradeBulk()
|
||||
{
|
||||
@@ -633,33 +802,48 @@ foreach ($noten_obj->result as $row)
|
||||
}
|
||||
?>
|
||||
|
||||
var linenumber = 0;
|
||||
for(row in rows)
|
||||
{
|
||||
zeile = rows[row].split(" ");
|
||||
|
||||
<?php
|
||||
// If CIS_GESAMTNOTE_PUNKTE is false, check for valid grades
|
||||
if (CIS_GESAMTNOTE_PUNKTE == false)
|
||||
echo ' // check for valid grades
|
||||
if (validGrades.indexOf(zeile[1]) === -1 && typeof(zeile[1]) != "undefined" && zeile[1] != "")
|
||||
{
|
||||
alertMsg = alertMsg+"Die Note "+zeile[1]+" ist nicht zulaessig. Die Zeile wurde uebersprungen. \n";
|
||||
continue;
|
||||
}';
|
||||
?>
|
||||
|
||||
if (zeile[0]!='' && zeile[1]!='')
|
||||
linenumber++;
|
||||
if( rows[row] == '' )
|
||||
{
|
||||
gradedata['matrikelnr_'+i]=zeile[0];
|
||||
<?php
|
||||
if (CIS_GESAMTNOTE_PUNKTE)
|
||||
echo "gradedata['punkte_'+i]= zeile[1];";
|
||||
else
|
||||
echo "gradedata['note_'+i]= zeile[1];";
|
||||
?>
|
||||
|
||||
i++;
|
||||
//skip empty lines
|
||||
continue;
|
||||
}
|
||||
zeile = rows[row].split(" ");
|
||||
|
||||
if( zeile.length < 2 )
|
||||
{
|
||||
alertMsg = alertMsg + "Zeile " + linenumber + ': '
|
||||
+ 'Zu wenig Paramter - 2 erforderlich. '
|
||||
+ 'Die Zeile wurde uebersprungen.' + "\n\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CIS_GESAMTNOTE_PUNKTE == false)
|
||||
{
|
||||
// check for valid grades
|
||||
if (validGrades.indexOf(zeile[1]) === -1)
|
||||
{
|
||||
alertMsg = alertMsg + "Zeile " + linenumber + ': '
|
||||
+ "Die Note "+zeile[1]+" ist nicht zulaessig. "
|
||||
+ "Die Zeile wurde uebersprungen. \n\n";
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
gradedata['matrikelnr_'+i]=zeile[0];
|
||||
if (CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
gradedata['punkte_'+i]= zeile[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
gradedata['note_'+i]= zeile[1];
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if (alertMsg != "")
|
||||
@@ -698,6 +882,142 @@ foreach ($noten_obj->result as $row)
|
||||
}
|
||||
}
|
||||
|
||||
// Speichert die Noten der Nachprüfung ueber den Import
|
||||
function saveGradeBulkNachp(typ)
|
||||
{
|
||||
data = $('#noteimporttextareaNachp').val();
|
||||
closeDiv();
|
||||
|
||||
//Reihen ermitteln
|
||||
var rows = data.split("\n");
|
||||
var i=0;
|
||||
var params='';
|
||||
alertMsg = '';
|
||||
|
||||
var gradedata = {};
|
||||
var validGrades = '';
|
||||
|
||||
<?php
|
||||
// If CIS_GESAMTNOTE_PUNKTE is false, check for valid grades
|
||||
// Fill Array $gradesArray with valid grades
|
||||
if (CIS_GESAMTNOTE_PUNKTE == false)
|
||||
{
|
||||
$gradesArray = array();
|
||||
foreach ($noten_obj->result as $row_note)
|
||||
{
|
||||
if ($row_note->lehre && $row_note->aktiv)
|
||||
$gradesArray[] = '"' . $row_note->anmerkung . '"';
|
||||
}
|
||||
// Output JS variable with valid grades
|
||||
echo 'var validGrades = [' . implode(',', $gradesArray) . '];';
|
||||
}
|
||||
?>
|
||||
|
||||
var linenumber = 0;
|
||||
for(row in rows)
|
||||
{
|
||||
linenumber++;
|
||||
if( rows[row] == '' )
|
||||
{
|
||||
//skip empty lines
|
||||
continue;
|
||||
}
|
||||
zeile = rows[row].split(" ");
|
||||
|
||||
if( zeile.length < 3 )
|
||||
{
|
||||
alertMsg = alertMsg + "Zeile " + linenumber + ': '
|
||||
+ 'Zu wenig Paramter - 3 erforderlich. '
|
||||
+ 'Die Zeile wurde uebersprungen.' + "\n\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
if( zeile[1] == '' && zeile[2] == '' )
|
||||
{
|
||||
// ignore lines just copied from excel
|
||||
continue;
|
||||
}
|
||||
|
||||
if( zeile[2] == '' )
|
||||
{
|
||||
alertMsg = alertMsg + "Zeile " + linenumber + ': '
|
||||
+ "Die Note oder Punkte fehlen. "
|
||||
+ "Die Zeile wurde uebersprungen. \n\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CIS_GESAMTNOTE_PUNKTE == false)
|
||||
{
|
||||
// check for valid grades
|
||||
if (validGrades.indexOf(zeile[2]) === -1)
|
||||
{
|
||||
alertMsg = alertMsg + "Zeile " + linenumber + ': '
|
||||
+ "Die Note "+zeile[2]+" ist nicht zulaessig. "
|
||||
+ "Die Zeile wurde uebersprungen. \n\n";
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if( !zeile[1].match(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/) )
|
||||
{
|
||||
alertMsg = alertMsg + "Zeile " + linenumber + ': '
|
||||
+ "Das Datum "+zeile[1]+" fehlt oder ist nicht zulaessig. "
|
||||
+ "Die Zeile wurde uebersprungen. \n\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
gradedata['student_uid_'+i]=zeile[0];
|
||||
gradedata['datumNachp_'+i]=zeile[1];
|
||||
if (CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
gradedata['punkte_'+i]= zeile[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
gradedata['note_'+i]= zeile[2];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
|
||||
if (alertMsg != "")
|
||||
alert(alertMsg);
|
||||
|
||||
if (i>0)
|
||||
{
|
||||
|
||||
var jetzt = new Date();
|
||||
var ts = jetzt.getTime();
|
||||
var url= '<?php echo "nachpruefungeintragen.php?lvid=".urlencode($lvid)."&stsem=".urlencode($stsem); ?>';
|
||||
url += '&sammel=1';
|
||||
url += '&typ=' + typ;
|
||||
url += '&submit=1&'+ts;
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url: url,
|
||||
data: gradedata,
|
||||
success:function(result)
|
||||
{
|
||||
var resp = result;
|
||||
if (resp!='')
|
||||
{
|
||||
alert(resp);
|
||||
}
|
||||
window.location.reload();
|
||||
},
|
||||
error:function(result)
|
||||
{
|
||||
alert('Request Nachprüfung fehlgeschlagen');
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('<?php echo $p->t('benotungstool/hilfeImport');?>');
|
||||
}
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
@@ -803,149 +1123,6 @@ if (defined('CIS_ANWESENHEITSLISTE_NOTENLISTE_ANZEIGEN') && CIS_ANWESENHEITSLIST
|
||||
{
|
||||
$hrefpath = "../notenliste.xls.php?stg=$stg_obj->studiengang_kz&lvid=$lvid&stsem=$stsem";
|
||||
echo "<br><a class='Item' href='" . $hrefpath . "'>" . $p->t('benotungstool/notenlisteImport') . "</a>";
|
||||
|
||||
}
|
||||
|
||||
// eingetragene lv-gesamtnoten freigeben
|
||||
if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
|
||||
{
|
||||
// Passwort pruefen
|
||||
if (checkldapuser($user, $_REQUEST['passwort']))
|
||||
{
|
||||
$jetzt = date("Y-m-d H:i:s");
|
||||
$neuenoten = 0;
|
||||
|
||||
$studlist = "<table border='1'>
|
||||
<tr>";
|
||||
|
||||
// entweder personenbezogene Daten einbinden
|
||||
if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
|
||||
{
|
||||
$studlist .= "
|
||||
<td><b>" . $p->t('global/personenkz') . "</b></td>
|
||||
<td><b>" . $p->t('global/studiengang') . "</b></td>
|
||||
<td><b>" . $p->t('global/nachname') . "</b></td>
|
||||
<td><b>" . $p->t('global/vorname') . "</b></td>
|
||||
";
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
$studlist .= "<td><b>" . $p->t('benotungstool/punkte') . "</b></td>\n";
|
||||
}
|
||||
$studlist .= "<td><b>" . $p->t('benotungstool/note') . "</b></td>\n";
|
||||
|
||||
$studlist .= "<td><b>" . $p->t('benotungstool/bearbeitetvon') . "</b></td></tr>\n";
|
||||
}
|
||||
// oder anonymisiert nur die UIDs einbinden
|
||||
else
|
||||
{
|
||||
$studlist .= "
|
||||
<td><b>" . $p->t('global/uid') . "</b></td></tr>\n
|
||||
";
|
||||
}
|
||||
|
||||
// studentenquery
|
||||
$qry_stud = "SELECT
|
||||
DISTINCT uid, vorname, nachname, matrikelnr, kurzbzlang
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
JOIN campus.vw_student USING(uid)
|
||||
JOIN public.tbl_studiengang ON campus.vw_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
WHERE
|
||||
studiensemester_kurzbz = " . $db->db_add_param($stsem) . "
|
||||
AND lehrveranstaltung_id = " . $db->db_add_param($lvid, FHC_INTEGER) . "
|
||||
ORDER BY nachname, vorname ";
|
||||
if ($result_stud = $db->db_query($qry_stud))
|
||||
{
|
||||
$i = 1;
|
||||
while ($row_stud = $db->db_fetch_object($result_stud))
|
||||
{
|
||||
$lvgesamtnote = new lvgesamtnote();
|
||||
if ($lvgesamtnote->load($lvid, $row_stud->uid, $stsem))
|
||||
{
|
||||
if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum)
|
||||
{
|
||||
$lvgesamtnote->freigabedatum = $jetzt;
|
||||
$lvgesamtnote->freigabevon_uid = $user;
|
||||
$lvgesamtnote->save();
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
|
||||
{
|
||||
$studlist .= "<tr><td>" . trim($row_stud->matrikelnr) . "</td>";
|
||||
$studlist .= "<td>" . trim($row_stud->kurzbzlang) . "</td>";
|
||||
$studlist .= "<td>" . trim($row_stud->nachname) . "</td>";
|
||||
$studlist .= "<td>" . trim($row_stud->vorname) . "</td>";
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
$studlist .= "<td>";
|
||||
if ($lvgesamtnote->punkte != '')
|
||||
$studlist .= trim(number_format($lvgesamtnote->punkte, 2));
|
||||
$studlist .= "</td>\n";
|
||||
}
|
||||
$studlist .= "<td>" . $noten_array[trim($lvgesamtnote->note)]['bezeichnung_mehrsprachig'][$sprache] . "</td>";
|
||||
|
||||
$studlist .= "<td>" . $lvgesamtnote->mitarbeiter_uid;
|
||||
if ($lvgesamtnote->updatevon != '')
|
||||
$studlist .= " (" . $lvgesamtnote->updatevon . ")";
|
||||
$studlist .= "</td></tr>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$studlist .= "<tr><td>" . trim($row_stud->uid) . "</td></tr>\n";
|
||||
}
|
||||
|
||||
$neuenoten ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$studlist .= "</table>";
|
||||
|
||||
// mail an assistentin und den user selber verschicken
|
||||
if ($neuenoten > 0)
|
||||
{
|
||||
$lv = new lehrveranstaltung($lvid);
|
||||
$sg = new studiengang($lv->studiengang_kz);
|
||||
$lektor_adresse = $user . "@" . DOMAIN;
|
||||
$adressen = $sg->email . ", " . $user . "@" . DOMAIN;
|
||||
|
||||
$studienplan = new studienplan();
|
||||
$studienplan->getStudienplanLehrveranstaltung($lvid, $stsem);
|
||||
$studienplan_bezeichnung = '';
|
||||
foreach ($studienplan->result as $row)
|
||||
$studienplan_bezeichnung .= $row->bezeichnung . ' ';
|
||||
|
||||
$mit = new mitarbeiter();
|
||||
$mit->load($user);
|
||||
$name = $mit->anrede.' '.$mit->vorname.' '.$mit->nachname.' ('.$mit->kurzbz.')';
|
||||
|
||||
$betreff = 'Notenfreigabe ' . $lv->bezeichnung . ' ' . $lv->orgform_kurzbz . ' - ' . $studienplan_bezeichnung;
|
||||
$mail = new mail($adressen, 'no-reply@' . DOMAIN, $betreff, '');
|
||||
$htmlcontent = "<html>
|
||||
<body>
|
||||
$name hat neue Noten für die Lehrveranstaltung\n\n<br>
|
||||
<b>" . $sg->kuerzel . ' ' . $lv->semester . '.Semester
|
||||
' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
|
||||
<br>eingetragen.\n<br><br>
|
||||
Die Noten können jetzt ins Zeugnis übernommen werden.\n";
|
||||
|
||||
$htmlcontent .= $studlist;
|
||||
|
||||
$htmlcontent.= "
|
||||
<br>Anzahl der Noten: " . $neuenoten . "
|
||||
<br><br>" . $p->t('abgabetool/mailVerschicktAn') . ": " . $adressen . "
|
||||
</body></html>";
|
||||
$mail->setHTMLContent($htmlcontent);
|
||||
$mail->setReplyTo($lektor_adresse);
|
||||
$mail->send();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = $p->t('gesamtnote/passwortFalsch');
|
||||
}
|
||||
}
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
@@ -1052,11 +1229,15 @@ $htmlstring .= "<th>" . $p->t('benotungstool/punkte') . ' / ' . $p->t('benotungs
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
|
||||
{
|
||||
$htmlstring .= "<th colspan='2'>" . $p->t('benotungstool/nachpruefung') . "</th>";
|
||||
$htmlstring .= "<th colspan='2'><br>" . $p->t('benotungstool/nachpruefung') . "<br>
|
||||
<input type='button' onclick='GradeImportNachp(\"Termin2\")' value='" . $p->t('benotungstool/importieren') . "'>
|
||||
</th>";
|
||||
}
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
|
||||
{
|
||||
$htmlstring .= "<th colspan='2' nowrap>" . $p->t('benotungstool/nachpruefung2') . "</th>";
|
||||
$htmlstring .= "<th colspan='2' nowrap><br>" . $p->t('benotungstool/nachpruefung2') . "<br>
|
||||
<input type='button' onclick='GradeImportNachp(\"Termin3\")' value='" . $p->t('benotungstool/importieren') . "'>
|
||||
</th>";
|
||||
}
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
|
||||
{
|
||||
@@ -1184,7 +1365,7 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
|
||||
foreach ($addon_obj->result as $row)
|
||||
{
|
||||
if (file_exists('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php'))
|
||||
include ('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php');
|
||||
include('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1193,7 +1374,6 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
|
||||
foreach ($grades as $uid => $data)
|
||||
//Ausgabe Array
|
||||
{
|
||||
|
||||
$htmlstring .= '<tr class="liste' . ($i % 2) . '">
|
||||
<td><a href="mailto:' . $uid . '@' . DOMAIN . '"><img src="../../../../skin/images/button_mail.gif"></a></td>
|
||||
<td>' . $db->convert_html_chars($uid) . '</td>
|
||||
@@ -1325,7 +1505,6 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
|
||||
// Punkte
|
||||
if (CIS_GESAMTNOTE_PUNKTE)
|
||||
{
|
||||
|
||||
$htmlstring .= '
|
||||
<input type="text"
|
||||
name="punkte"
|
||||
|
||||
@@ -41,10 +41,16 @@ require_once('../../../../include/benutzerfunktion.class.php');
|
||||
require_once('../../../../include/benutzer.class.php');
|
||||
require_once('../../../../include/student.class.php');
|
||||
require_once('../../../../include/notenschluessel.class.php');
|
||||
require_once('../../../../include/phrasen.class.php');
|
||||
require_once('../../../../include/note.class.php');
|
||||
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Herstellen der Datenbankverbindung');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
|
||||
$user = get_uid();
|
||||
|
||||
if(!check_lektor($user))
|
||||
@@ -52,6 +58,7 @@ if(!check_lektor($user))
|
||||
|
||||
|
||||
$lehreinheit_id='';
|
||||
$lehreinheit_id_pr='';
|
||||
|
||||
if(isset($_GET['lvid']) && is_numeric($_GET['lvid'])) //Lehrveranstaltung_id
|
||||
$lvid = $_GET['lvid'];
|
||||
@@ -62,58 +69,26 @@ if(isset($_GET['lehreinheit_id']) && is_numeric($_GET['lehreinheit_id'])) //Lehr
|
||||
$lehreinheit_id = $_GET['lehreinheit_id'];
|
||||
|
||||
if(isset($_GET['lehreinheit_id_pr']) && is_numeric($_GET['lehreinheit_id_pr'])) //Lehreinheit_id der pruefung
|
||||
$lehreinheit_id = $_GET['lehreinheit_id_pr'];
|
||||
|
||||
if(isset($_GET['datum']))
|
||||
{
|
||||
$datum = $_GET['datum'];
|
||||
$datum_obj = new datum();
|
||||
$datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true) OR die('Invalid date format');
|
||||
}
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
|
||||
//Laden der Lehrveranstaltung
|
||||
$lv_obj = new lehrveranstaltung();
|
||||
if(!$lv_obj->load($lvid))
|
||||
die($lv_obj->errormsg);
|
||||
|
||||
//Studiengang laden
|
||||
$stg_obj = new studiengang($lv_obj->studiengang_kz);
|
||||
$lehreinheit_id_pr = $_GET['lehreinheit_id_pr'];
|
||||
|
||||
if(isset($_GET['stsem']))
|
||||
$stsem = $_GET['stsem'];
|
||||
else
|
||||
$stsem = '';
|
||||
|
||||
$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
|
||||
$uid = (isset($_GET['uid'])?$_GET['uid']:'');
|
||||
|
||||
//Studiensemester laden
|
||||
$stsem_obj = new studiensemester();
|
||||
if($stsem=='')
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
|
||||
$student_uid = $_REQUEST["student_uid"];
|
||||
|
||||
$note = $_REQUEST["note"];
|
||||
if(isset($_REQUEST['punkte']))
|
||||
$punkte = $_REQUEST['punkte'];
|
||||
else
|
||||
$punkte = '';
|
||||
|
||||
$punkte = str_replace(',','.',$punkte);
|
||||
|
||||
if($punkte!='')
|
||||
//Notenanmerkung für Eintragung von nichtnumerischen Noten wie en (entschuldigt), ue(unentschuldigt)
|
||||
$noten_anmerkung = array();
|
||||
$noten_arr = array();
|
||||
$note_obj = new note();
|
||||
$note_obj->getAll();
|
||||
foreach($note_obj->result as $row)
|
||||
{
|
||||
// Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
|
||||
$notenschluessel = new notenschluessel();
|
||||
$note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
|
||||
if($note_pruef!=$note)
|
||||
{
|
||||
$note = $note_pruef;
|
||||
$note_dirty=true;
|
||||
}
|
||||
$noten_anmerkung[$row->anmerkung] = $row->note;
|
||||
$noten_arr[$row->note] = $row;
|
||||
}
|
||||
|
||||
if(!isset($_GET['typ']))
|
||||
@@ -122,22 +97,177 @@ if(!isset($_GET['typ']))
|
||||
}
|
||||
else
|
||||
{
|
||||
if(in_array($_GET['typ'],array('Termin2','Termin3')))
|
||||
if(in_array($_GET['typ'], array('Termin2', 'Termin3')))
|
||||
$typ=$_GET['typ'];
|
||||
else
|
||||
die('Typ ist ungueltig');
|
||||
}
|
||||
|
||||
if($note=='')
|
||||
$note = 9;
|
||||
|
||||
$old_note = $note;
|
||||
|
||||
// lvgesamtnote für studenten speichern
|
||||
if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
|
||||
if (isset($_REQUEST['sammel']) && $_REQUEST["sammel"] == 1)
|
||||
{
|
||||
$errorMatrnr = '';
|
||||
$errorDatum = '';
|
||||
$errorNachp = '';
|
||||
|
||||
foreach ($_POST as $row => $val)
|
||||
{
|
||||
if(mb_strstr(mb_strtolower($row), 'student_uid_'))
|
||||
{
|
||||
$id=mb_substr($row, mb_strlen('student_uid_'));
|
||||
|
||||
$student_uid = $_POST['student_uid_'.$id];
|
||||
$note = null;
|
||||
$punkte = null;
|
||||
$datum = null;
|
||||
$response = '';
|
||||
if(isset($_POST['note_'.$id]))
|
||||
$note = $_POST['note_'.$id];
|
||||
elseif(isset($_POST['punkte_'.$id]))
|
||||
$punkte = $_POST['punkte_'.$id];
|
||||
else
|
||||
{
|
||||
$response.="\nNote oder Punkte fehlen";
|
||||
continue;
|
||||
}
|
||||
$punkte=str_replace(',', '.', $punkte);
|
||||
if($punkte!='')
|
||||
{
|
||||
// Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
|
||||
$notenschluessel = new notenschluessel();
|
||||
$note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
|
||||
if($note_pruef!=$note)
|
||||
{
|
||||
$note = $note_pruef;
|
||||
$note_dirty=true;
|
||||
}
|
||||
}
|
||||
|
||||
$datum = $_POST['datumNachp_'.$id];
|
||||
//check Datumsformat
|
||||
$checkedDatum = $datum;
|
||||
$datum_obj = new datum();
|
||||
if(!$datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true))
|
||||
{
|
||||
$errorDatum .="\n".$p->t('benotungstool/datumsformatUnzulaessig', array($checkedDatum));
|
||||
continue;
|
||||
}
|
||||
|
||||
//check ob Matrikelnummer anstelle der student_uid übergeben wurde
|
||||
$student = new student();
|
||||
if (!$student->checkIfValidStudentUID($student_uid))
|
||||
{
|
||||
$checkedMatrnr = $student_uid;
|
||||
//UID ermitteln
|
||||
if(!$student_uid = $student->getUidFromMatrikelnummer($student_uid))
|
||||
{
|
||||
$errorMatrnr.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht', array($checkedMatrnr));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//check ob eine Note vorhanden ist oder (intern) angerechnet wurde
|
||||
$lvnote = new lvgesamtnote();
|
||||
if (!$lvnote->load($lvid, $student_uid, $stsem))
|
||||
{
|
||||
$errorNachp.="\n".$p->t('benotungstool/NachpruefungNichtZulaessig', array($student_uid));
|
||||
continue;
|
||||
}
|
||||
|
||||
$lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem);
|
||||
|
||||
if(isset($_POST['student_uid_'.$id]) && (isset($_POST['note_'.$id]) || isset($_POST['punkte_'.$id])) && isset($_POST['datumNachp_'.$id]))
|
||||
{
|
||||
if(!is_numeric($note))
|
||||
{
|
||||
if(isset($noten_anmerkung[$note]))
|
||||
$note = $noten_anmerkung[$note];
|
||||
}
|
||||
$response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte);
|
||||
if($response!='neu' && $response!='update' && $response!='update_f')
|
||||
{
|
||||
echo $response;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "\n fehlende oder fehlerhafte Inputparameter";
|
||||
}
|
||||
}
|
||||
}
|
||||
echo $errorMatrnr . $errorDatum . $errorNachp;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Einzelupdate
|
||||
|
||||
if(isset($_GET['datum']))
|
||||
{
|
||||
$datum = $_GET['datum'];
|
||||
$datum_obj = new datum();
|
||||
$datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true) or die($p->t('benotungstool/datumsformatUnzulaessig', array($checkedDatum)));
|
||||
}
|
||||
$student_uid = $_REQUEST["student_uid"];
|
||||
|
||||
$note = $_REQUEST["note"];
|
||||
if(isset($_REQUEST['punkte']))
|
||||
$punkte = $_REQUEST['punkte'];
|
||||
else
|
||||
$punkte = '';
|
||||
|
||||
$punkte = str_replace(',', '.', $punkte);
|
||||
|
||||
if($punkte!='')
|
||||
{
|
||||
// Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
|
||||
$notenschluessel = new notenschluessel();
|
||||
$note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
|
||||
if($note_pruef!=$note)
|
||||
{
|
||||
$note = $note_pruef;
|
||||
$note_dirty=true;
|
||||
}
|
||||
}
|
||||
|
||||
if($note=='')
|
||||
$note = 9;
|
||||
|
||||
$old_note = $note;
|
||||
|
||||
//Laden der Lehrveranstaltung
|
||||
$lv_obj = new lehrveranstaltung();
|
||||
if(!$lv_obj->load($lvid))
|
||||
die($lv_obj->errormsg);
|
||||
|
||||
//Studiengang laden
|
||||
$stg_obj = new studiengang($lv_obj->studiengang_kz);
|
||||
|
||||
$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
|
||||
$uid = (isset($_GET['uid'])?$_GET['uid']:'');
|
||||
|
||||
// lvgesamtnote für studenten speichern
|
||||
if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != ''))
|
||||
{
|
||||
// Die Pruefung muss einer Lehreinheit zugeordnet werden
|
||||
// deshalb wird hier versucht eine passende Lehreinheit zu ermitteln.
|
||||
$lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem);
|
||||
|
||||
$response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note);
|
||||
echo $response;
|
||||
}
|
||||
else
|
||||
echo "Fehler beim Eintragen der Prüfungen";
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet Lehreinheit auf Basis LV-Daten
|
||||
* @param string $db Datenbankvariable
|
||||
* @param string $student_uid student_uid
|
||||
* @param int $lvid Lehrveranstaltungsid
|
||||
* @param string $stsem Studiensemester im Format 'WSYYYY'
|
||||
* @return String LehreinheitId
|
||||
*/
|
||||
function getLehreinheit($db, $lvid, $student_uid, $stsem)
|
||||
{
|
||||
// Die Pruefung muss einer Lehreinheit zugeordnet werden
|
||||
// deshalb wird hier versucht eine passende Lehreinheit zu ermitteln.
|
||||
$le_arr = array();
|
||||
$qry_stud = "SELECT lehreinheit_id, lehrform_kurzbz
|
||||
FROM
|
||||
@@ -158,104 +288,159 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
|
||||
}
|
||||
}
|
||||
|
||||
if (!in_array($lehreinheit_id,$le_arr))
|
||||
//if (!in_array($lehreinheit_id,$le_arr))
|
||||
$lehreinheit_id = $le_arr[0];
|
||||
|
||||
return $lehreinheit_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüfung speichern
|
||||
*/
|
||||
function savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte = null)
|
||||
{
|
||||
$jetzt = date("Y-m-d H:i:s");
|
||||
global $user; //, $note, $punkte, $datum;
|
||||
|
||||
$pr = new Pruefung();
|
||||
|
||||
// Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt
|
||||
// und dort die Zeugnisnote gespeichert
|
||||
if($pr->getPruefungen($student_uid, "Termin1", $lvid, $stsem))
|
||||
if ($typ == "Termin2")
|
||||
{
|
||||
if ($pr->result)
|
||||
$pr = new Pruefung();
|
||||
// Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt
|
||||
// und dort die Zeugnisnote gespeichert
|
||||
if($pr->getPruefungen($student_uid, "Termin1", $lvid, $stsem))
|
||||
{
|
||||
$termin1 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$lvnote = new lvgesamtnote();
|
||||
if ($lvnote->load($lvid, $student_uid, $stsem))
|
||||
if ($pr->result)
|
||||
{
|
||||
$pr_note = $lvnote->note;
|
||||
$pr_punkte = $lvnote->punkte;
|
||||
$benotungsdatum = $lvnote->benotungsdatum;
|
||||
$termin1 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$pr_note = 9;
|
||||
$pr_punkte = '';
|
||||
$benotungsdatum = $jetzt;
|
||||
$lvnote = new lvgesamtnote();
|
||||
if ($lvnote->load($lvid, $student_uid, $stsem))
|
||||
{
|
||||
$pr_note = $lvnote->note;
|
||||
$pr_punkte = $lvnote->punkte;
|
||||
$benotungsdatum = $lvnote->benotungsdatum;
|
||||
}
|
||||
else
|
||||
{
|
||||
$pr_note = 9;
|
||||
$pr_punkte = '';
|
||||
$benotungsdatum = $jetzt;
|
||||
}
|
||||
|
||||
$pr_1 = new Pruefung();
|
||||
$pr_1->lehreinheit_id = $lehreinheit_id;
|
||||
$pr_1->student_uid = $student_uid;
|
||||
$pr_1->mitarbeiter_uid = $user;
|
||||
$pr_1->note = $pr_note;
|
||||
$pr_1->punkte = $pr_punkte;
|
||||
$pr_1->pruefungstyp_kurzbz = "Termin1";
|
||||
$pr_1->datum = $benotungsdatum;
|
||||
$pr_1->anmerkung = "";
|
||||
$pr_1->insertamum = $jetzt;
|
||||
$pr_1->insertvon = $user;
|
||||
$pr_1->updateamum = null;
|
||||
$pr_1->updatevon = null;
|
||||
$pr_1->ext_id = null;
|
||||
$pr_1->new = true;
|
||||
$pr_1->save();
|
||||
$response = "neu T1";
|
||||
}
|
||||
|
||||
$pr_1 = new Pruefung();
|
||||
$pr_1->lehreinheit_id = $lehreinheit_id;
|
||||
$pr_1->student_uid = $student_uid;
|
||||
$pr_1->mitarbeiter_uid = $user;
|
||||
$pr_1->note = $pr_note;
|
||||
$pr_1->punkte = $pr_punkte;
|
||||
$pr_1->pruefungstyp_kurzbz = "Termin1";
|
||||
$pr_1->datum = $benotungsdatum;
|
||||
$pr_1->anmerkung = "";
|
||||
$pr_1->insertamum = $jetzt;
|
||||
$pr_1->insertvon = $user;
|
||||
$pr_1->updateamum = null;
|
||||
$pr_1->updatevon = null;
|
||||
$pr_1->ext_id = null;
|
||||
$pr_1->new = true;
|
||||
$pr_1->save();
|
||||
$prTermin2 = new Pruefung();
|
||||
$pr_2 = new Pruefung();
|
||||
|
||||
// Die Pruefung wird als Termin2 eingetragen
|
||||
if ($prTermin2->getPruefungen($student_uid, 'Termin2', $lvid, $stsem))
|
||||
{
|
||||
if ($prTermin2->result)
|
||||
{
|
||||
$pr_2->load($prTermin2->result[0]->pruefung_id);
|
||||
$pr_2->new = null;
|
||||
$pr_2->updateamum = $jetzt;
|
||||
$pr_2->updatevon = $user;
|
||||
$old_note = $pr_2->note;
|
||||
$pr_2->note = $note;
|
||||
$pr_2->punkte = $punkte;
|
||||
$pr_2->datum = $datum;
|
||||
$pr_2->anmerkung = "";
|
||||
$response = "update T2";
|
||||
}
|
||||
else
|
||||
{
|
||||
$pr_2->lehreinheit_id = $lehreinheit_id;
|
||||
$pr_2->student_uid = $student_uid;
|
||||
$pr_2->mitarbeiter_uid = $user;
|
||||
$pr_2->note = $note;
|
||||
$pr_2->punkte = $punkte;
|
||||
$pr_2->pruefungstyp_kurzbz = $typ;
|
||||
$pr_2->datum = $datum;
|
||||
$pr_2->anmerkung = "";
|
||||
$pr_2->insertamum = $jetzt;
|
||||
$pr_2->insertvon = $user;
|
||||
$pr_2->updateamum = null;
|
||||
$pr_2->updatevon = null;
|
||||
$pr_2->ext_id = null;
|
||||
$pr_2->new = true;
|
||||
$old_note = -1;
|
||||
$response = "new T2";
|
||||
}
|
||||
$pr_2->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$prTermin2 = new Pruefung();
|
||||
$pr_2 = new Pruefung();
|
||||
|
||||
// Die Pruefung wird als Termin2 eingetragen
|
||||
if ($prTermin2->getPruefungen($student_uid, $typ, $lvid, $stsem))
|
||||
elseif ($typ == "Termin3")
|
||||
{
|
||||
if ($prTermin2->result)
|
||||
$prTermin3 = new Pruefung();
|
||||
$pr_3 = new Pruefung();
|
||||
|
||||
if ($prTermin3->getPruefungen($student_uid, 'Termin3', $lvid, $stsem))
|
||||
{
|
||||
$pr_2->load($prTermin2->result[0]->pruefung_id);
|
||||
$pr_2->new = null;
|
||||
$pr_2->updateamum = $jetzt;
|
||||
$pr_2->updatevon = $user;
|
||||
$old_note = $pr_2->note;
|
||||
$pr_2->note = $note;
|
||||
$pr_2->punkte = $punkte;
|
||||
$pr_2->datum = $datum;
|
||||
$pr_2->anmerkung = "";
|
||||
if ($prTermin3->result)
|
||||
{
|
||||
$pr_3->load($prTermin3->result[0]->pruefung_id);
|
||||
$pr_3->new = null;
|
||||
$pr_3->updateamum = $jetzt;
|
||||
$pr_3->updatevon = $user;
|
||||
$old_note = $pr_3->note;
|
||||
$pr_3->note = $note;
|
||||
$pr_3->punkte = $punkte;
|
||||
$pr_3->datum = $datum;
|
||||
$pr_3->anmerkung = "";
|
||||
$response = "update T3";
|
||||
}
|
||||
else
|
||||
{
|
||||
$pr_3->lehreinheit_id = $lehreinheit_id;
|
||||
$pr_3->student_uid = $student_uid;
|
||||
$pr_3->mitarbeiter_uid = $user;
|
||||
$pr_3->note = $note;
|
||||
$pr_3->punkte = $punkte;
|
||||
$pr_3->pruefungstyp_kurzbz = $typ;
|
||||
$pr_3->datum = $datum;
|
||||
$pr_3->anmerkung = "";
|
||||
$pr_3->insertamum = $jetzt;
|
||||
$pr_3->insertvon = $user;
|
||||
$pr_3->updateamum = null;
|
||||
$pr_3->updatevon = null;
|
||||
$pr_3->ext_id = null;
|
||||
$pr_3->new = true;
|
||||
$old_note = -1;
|
||||
$response = "new T3";
|
||||
}
|
||||
$pr_3->save();
|
||||
}
|
||||
else
|
||||
{
|
||||
$pr_2->lehreinheit_id = $lehreinheit_id;
|
||||
$pr_2->student_uid = $student_uid;
|
||||
$pr_2->mitarbeiter_uid = $user;
|
||||
$pr_2->note = $note;
|
||||
$pr_2->punkte = $punkte;
|
||||
$pr_2->pruefungstyp_kurzbz = $typ;
|
||||
$pr_2->datum = $datum;
|
||||
$pr_2->anmerkung = "";
|
||||
$pr_2->insertamum = $jetzt;
|
||||
$pr_2->insertvon = $user;
|
||||
$pr_2->updateamum = null;
|
||||
$pr_2->updatevon = null;
|
||||
$pr_2->ext_id = null;
|
||||
$pr_2->new = true;
|
||||
$old_note = -1;
|
||||
}
|
||||
$pr_2->save();
|
||||
}
|
||||
else
|
||||
{
|
||||
$response = "fehlende oder fehlerhafte Inputparameter";
|
||||
}
|
||||
|
||||
|
||||
// Wenn eine Pruefung eingetragen wird, wird danach die LV-Note korrigiert
|
||||
$jetzt = date("Y-m-d H:i:s");
|
||||
|
||||
$lvid = $_REQUEST["lvid"];
|
||||
//Gesamtnote updaten
|
||||
$lvgesamtnote = new lvgesamtnote();
|
||||
if (!$lvgesamtnote->load($lvid, $student_uid, $stsem))
|
||||
{
|
||||
if (!$lvgesamtnote->load($lvid, $student_uid, $stsem))
|
||||
{
|
||||
$lvgesamtnote->student_uid = $student_uid;
|
||||
$lvgesamtnote->lehrveranstaltung_id = $lvid;
|
||||
$lvgesamtnote->studiensemester_kurzbz = $stsem;
|
||||
@@ -272,9 +457,9 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
|
||||
$lvgesamtnote->insertvon = $user;
|
||||
$new = true;
|
||||
$response = "neu";
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
$lvgesamtnote->note = $note;
|
||||
$lvgesamtnote->punkte = $punkte;
|
||||
$lvgesamtnote->benotungsdatum = $jetzt;
|
||||
@@ -286,12 +471,11 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
|
||||
else
|
||||
$response = "update";
|
||||
}
|
||||
|
||||
if (!$lvgesamtnote->save($new))
|
||||
echo "<span class='error'>".$lvgesamtnote->errormsg."</span>";
|
||||
return $lvgesamtnote->errormsg;
|
||||
else
|
||||
echo $response;
|
||||
return $response;
|
||||
}
|
||||
else
|
||||
echo "Fehler beim Eintragen der Prüfungen";
|
||||
|
||||
?>
|
||||
|
||||
@@ -35,6 +35,7 @@ require_once('../../../include/note.class.php');
|
||||
require_once('../../../include/notenschluessel.class.php');
|
||||
require_once('../../../include/Excel/excel.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/pruefung.class.php');
|
||||
|
||||
$uid = get_uid();
|
||||
|
||||
@@ -120,6 +121,13 @@ else
|
||||
$format_highlightright->setBorderColor('white');
|
||||
$format_highlightright->setAlign('right');
|
||||
|
||||
$format_highlightright_date=& $workbook->addFormat();
|
||||
$format_highlightright_date->setFgColor(15);
|
||||
$format_highlightright_date->setBorder(1);
|
||||
$format_highlightright_date->setBorderColor('white');
|
||||
$format_highlightright_date->setAlign('right');
|
||||
$format_highlightright_date->setNumFormat(49);
|
||||
|
||||
$format_border_bottom =& $workbook->addFormat();
|
||||
$format_border_bottom ->setBottom(2);
|
||||
$format_border_bottom->setBold();
|
||||
@@ -191,6 +199,19 @@ else
|
||||
}
|
||||
|
||||
//Studenten holen
|
||||
|
||||
//Spaltengruppe für Nachprüfung
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
|
||||
{
|
||||
$worksheet->write($lines,8,$p->t('benotungstool/nachpruefung'),$format_bold);
|
||||
}
|
||||
|
||||
//Spaltengruppe für 2.Nebensprüfungstermin
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
|
||||
{
|
||||
$worksheet->write($lines,12,$p->t('benotungstool/nachpruefung2'),$format_bold);
|
||||
}
|
||||
|
||||
$lines++;
|
||||
$worksheet->write($lines,1,$p->t('global/uid'),$format_border_bottom);
|
||||
$worksheet->write($lines,2,$p->t('global/nachname'),$format_border_bottom);
|
||||
@@ -203,6 +224,26 @@ else
|
||||
else
|
||||
$worksheet->write($lines,6,$p->t('benotungstool/note'),$format_border_bottom);
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
|
||||
{
|
||||
$worksheet->write($lines,8,$p->t('global/personenkennzeichen'),$format_border_bottom);
|
||||
$worksheet->write($lines,9,$p->t('global/datum'),$format_border_bottom);
|
||||
if(defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
$worksheet->write($lines,10,$p->t('benotungstool/punkte'),$format_border_bottom);
|
||||
else
|
||||
$worksheet->write($lines,10,$p->t('benotungstool/note'),$format_border_bottom);
|
||||
}
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
|
||||
{
|
||||
$worksheet->write($lines,12,$p->t('global/personenkennzeichen'),$format_border_bottom);
|
||||
$worksheet->write($lines,13,$p->t('global/datum'),$format_border_bottom);
|
||||
if(defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
|
||||
$worksheet->write($lines,14,$p->t('benotungstool/punkte'),$format_border_bottom);
|
||||
else
|
||||
$worksheet->write($lines,14,$p->t('benotungstool/note'),$format_border_bottom);
|
||||
}
|
||||
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem_obj->load($stsem);
|
||||
$stsemdatumvon = $stsem_obj->start;
|
||||
@@ -229,17 +270,18 @@ else
|
||||
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
|
||||
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
|
||||
LEFT JOIN bis.tbl_mobilitaet ON (bis.tbl_mobilitaet.prestudent_id = public.tbl_student.prestudent_id)
|
||||
LEFT JOIN lehre.tbl_note USING(note)
|
||||
WHERE
|
||||
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)."
|
||||
AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
|
||||
AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
|
||||
|
||||
if($lehreinheit_id!='')
|
||||
$qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER);
|
||||
|
||||
$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis, doubledegree DESC';
|
||||
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$i=1;
|
||||
@@ -282,6 +324,49 @@ else
|
||||
$worksheet->write($lines,4,'="'.$elem->semester.$elem->verband.$elem->gruppe.'"');
|
||||
$worksheet->write($lines,5,'="'.trim($elem->matrikelnr).'"',$format_highlight);
|
||||
$worksheet->write($lines,6, $note, $format_highlightright);
|
||||
|
||||
// Nachprüfung
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
|
||||
{
|
||||
$worksheet->write($lines,8, '="'.trim($elem->matrikelnr).'"', $format_highlight);
|
||||
$pr = new Pruefung();
|
||||
$pr->getPruefungen($elem->uid, "Termin2", $lvid, $sem);
|
||||
$output2 = $pr->result;
|
||||
|
||||
if ($output2)
|
||||
{
|
||||
$resultPr = $output2[0];
|
||||
$worksheet->write($lines,9, date('d.m.Y', strtotime($resultPr->datum)), $format_highlightright_date);
|
||||
$worksheet->write($lines,10, $resultPr->note, $format_highlightright);
|
||||
}
|
||||
else
|
||||
{
|
||||
$worksheet->write($lines,9, '', $format_highlightright_date);
|
||||
$worksheet->write($lines,10, '', $format_highlightright);
|
||||
}
|
||||
}
|
||||
|
||||
// Nachprüfung
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
|
||||
{
|
||||
$worksheet->write($lines,12, '="'.trim($elem->matrikelnr).'"', $format_highlight);
|
||||
$pr = new Pruefung();
|
||||
$pr->getPruefungen($elem->uid, "Termin3", $lvid, $sem);
|
||||
$output3 = $pr->result;
|
||||
|
||||
if ($output3)
|
||||
{
|
||||
$resultPr = $output3[0];
|
||||
$worksheet->write($lines,13, date('d.m.Y', strtotime($resultPr->datum)), $format_highlightright_date);
|
||||
$worksheet->write($lines,14, $resultPr->note, $format_highlightright);
|
||||
}
|
||||
else
|
||||
{
|
||||
$worksheet->write($lines,13, '', $format_highlightright_date);
|
||||
$worksheet->write($lines,14, '', $format_highlightright);
|
||||
}
|
||||
}
|
||||
|
||||
$i++;
|
||||
$lines++;
|
||||
}
|
||||
@@ -335,5 +420,17 @@ else
|
||||
$worksheet->setColumn(0, 3, 25);
|
||||
$worksheet->setColumn(0, 4, 7);
|
||||
$worksheet->setColumn(0, 5, 21);
|
||||
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
|
||||
{
|
||||
$worksheet->setColumn(8, 8, 15);
|
||||
$worksheet->setColumn(9, 9, 10);
|
||||
}
|
||||
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
|
||||
{
|
||||
$worksheet->setColumn(12, 12, 15);
|
||||
$worksheet->setColumn(13, 13, 10);
|
||||
}
|
||||
|
||||
$workbook->close();
|
||||
?>
|
||||
|
||||
@@ -419,7 +419,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
|
||||
$semCounter = $fakultaeten[1]["sem"];
|
||||
break;
|
||||
default:
|
||||
$semCounter = 2;
|
||||
$semCounter = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,6 +144,8 @@ if (isset($_GET['projektarbeit_id']))
|
||||
$params .= '&projektarbeit_id='. $_GET['projektarbeit_id'];
|
||||
if (isset($_GET['betreuerart_kurzbz']))
|
||||
$params .= '&betreuerart_kurzbz='. $_GET['betreuerart_kurzbz'];
|
||||
if (isset($_GET['id']))
|
||||
$params .= '&id='. $_GET['id'];
|
||||
|
||||
|
||||
// Logeintrag bei Download von Zahlungsbestaetigungen
|
||||
|
||||
@@ -31,6 +31,7 @@ require_once('../../../include/akte.class.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/webservicelog.class.php');
|
||||
require_once('../../../include/studierendenantrag.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
@@ -228,6 +229,28 @@ echo '</SELECT><br /><br />';
|
||||
// Wenn es für das übergebene Studiensemester keinen PreStudentStatus gibt, werden nur Abschlussdokumente angezeigt
|
||||
if (in_array($stsem, $stsem_arr))
|
||||
{
|
||||
$studierendenantrag = new studierendenantrag();
|
||||
if ($studierendenantrag->loadUserAntrag($student_studiengang->prestudent_id, $stsem) && $studierendenantrag->result) {
|
||||
echo '<h2>' . $p->t('studierendenantrag/antraege_header') . '</h2>';
|
||||
echo '<table class="tablesorter" style="width:auto;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>'.$p->t('global/name').'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>';
|
||||
foreach ($studierendenantrag->result as $antrag) {
|
||||
$path = "../pdfExport.php?xsl=Antrag" . $antrag->typ . "&xml=Antrag" . $antrag->typ . ".xml.php&uid=" . $uid . "&id=" . $antrag->studierendenantrag_id;
|
||||
echo '<tr>';
|
||||
echo '<td><img src="../../../skin/images/pdfpic.gif" /></td>';
|
||||
echo '<td><a href="'.$path.'">' . $p->t('studierendenantrag/title_' . $antrag->typ) . '</a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
echo '</tbody></table>';
|
||||
}
|
||||
|
||||
|
||||
$konto = new konto();
|
||||
|
||||
$buchungstypen = array();
|
||||
|
||||
+48
-45
@@ -571,7 +571,7 @@ if (isset($_GET['resend']))
|
||||
|
||||
echo "<div id='coodle_content' >
|
||||
<form action='' method='POST'>
|
||||
|
||||
|
||||
<table class='table-bordered'>
|
||||
<tr><td></td>";
|
||||
// Für Colspan bei Datum
|
||||
@@ -675,7 +675,6 @@ if (isset($_GET['resend']))
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// Ort-Ressourcen ueberspringen
|
||||
if ($ressource->ort_kurzbz != '')
|
||||
{
|
||||
@@ -761,8 +760,8 @@ if (isset($_GET['resend']))
|
||||
echo ' <td class="'.$class.'" align="center" '.$style.'>
|
||||
<div class="checkbox">
|
||||
<label style="font-size: 1.5em; padding-left: 10px">
|
||||
<input type="checkbox"
|
||||
value=""
|
||||
<input type="checkbox"
|
||||
value=""
|
||||
'.($checked ? 'checked="checked"' : '').'
|
||||
'.($termin->datum == '1900-01-01' ? 'id="disableCheckboxes"' : '').'
|
||||
name="check_'.$ressource->coodle_ressource_id.'_'.$termin->coodle_termin_id.'"
|
||||
@@ -867,8 +866,8 @@ if (isset($_GET['resend']))
|
||||
<span class="glyphicon glyphicon-info-sign"></span>
|
||||
Sie können ihre vorläufigen Terminzusagen in ihr Kalendersystem einbinden.<br>
|
||||
Importieren Sie dazu die .ics-Datei des folgenden Links in ihren Kalender:<br>
|
||||
<a href="'.APP_ROOT.'cis/public/ical_coodle.php/cipher_encryption/'.encryptData($uid,LVPLAN_CYPHER_KEY).'" target="_blank">
|
||||
'.APP_ROOT.'cis/public/ical_coodle.php/cipher_encryption/'.encryptData($uid,LVPLAN_CYPHER_KEY).'
|
||||
<a href="'.APP_ROOT.'cis/public/ical_coodle.php/cipher_encryption/'.encryptData($uid, LVPLAN_CYPHER_KEY).'" target="_blank">
|
||||
'.APP_ROOT.'cis/public/ical_coodle.php/cipher_encryption/'.encryptData($uid, LVPLAN_CYPHER_KEY).'
|
||||
</a>
|
||||
<br><br>
|
||||
Die Datei enthält ihre Terminzusagen aus <b>allen laufenden Umfragen</b> .
|
||||
@@ -999,7 +998,7 @@ function sendEmail($coodle_id)
|
||||
else
|
||||
$partstat = 'TENTATIVE';
|
||||
|
||||
$teilnehmer .= 'ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name."\n :MAILTO:".$mail."\n";
|
||||
$teilnehmer .= $coodle->foldContentLine('ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name.":MAILTO:".$mail) . "\r\n";
|
||||
}
|
||||
}
|
||||
$date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit);
|
||||
@@ -1015,44 +1014,48 @@ function sendEmail($coodle_id)
|
||||
$benutzer = new benutzer();
|
||||
$benutzer->load($coodle->ersteller_uid);
|
||||
$erstellername = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost);
|
||||
|
||||
$beschreibung = "DESCRIPTION:" . strip_tags(html_entity_decode($coodle->beschreibung, ENT_QUOTES, 'UTF-8'), '<br>');
|
||||
$terminbeschreibung= $coodle->foldContentLine($beschreibung);
|
||||
|
||||
// Ical File erstellen
|
||||
$ical = "BEGIN:VCALENDAR
|
||||
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Vienna
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
DTSTART:19810329T020000
|
||||
TZNAME:GMT+02:00
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
DTSTART:19961027T030000
|
||||
TZNAME:GMT+01:00
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER:MAILTO:".$erstellername." <".$coodle->ersteller_uid."@".DOMAIN."
|
||||
".$teilnehmer."
|
||||
DTSTART;TZID=Europe/Vienna:".$dtstart."
|
||||
DTEND;TZID=Europe/Vienna:".$dtend."
|
||||
LOCATION:".$ort."
|
||||
TRANSP:OPAQUE
|
||||
SEQUENCE:0
|
||||
UID:FHCompleteCoodle".$coodle_id."
|
||||
DTSTAMP;TZID=Europe/Vienna:".$dtstamp."
|
||||
DESCRIPTION:".strip_tags(html_entity_decode($coodle->beschreibung, ENT_QUOTES, 'UTF-8'))."
|
||||
SUMMARY:".strip_tags($coodle->titel)."
|
||||
PRIORITY:5
|
||||
CLASS:PUBLIC
|
||||
END:VEVENT
|
||||
END:VCALENDAR";
|
||||
$ical = "BEGIN:VCALENDAR\r\n"
|
||||
."PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN\r\n"
|
||||
."VERSION:2.0\r\n"
|
||||
."METHOD:PUBLISH\r\n"
|
||||
."BEGIN:VTIMEZONE\r\n"
|
||||
."TZID:Europe/Vienna\r\n"
|
||||
."BEGIN:DAYLIGHT\r\n"
|
||||
."TZOFFSETFROM:+0100\r\n"
|
||||
."RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\n"
|
||||
."DTSTART:19810329T020000\r\n"
|
||||
."TZNAME:GMT+02:00\r\n"
|
||||
."TZOFFSETTO:+0200\r\n"
|
||||
."END:DAYLIGHT\r\n"
|
||||
."BEGIN:STANDARD\r\n"
|
||||
."TZOFFSETFROM:+0200\r\n"
|
||||
."RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\n"
|
||||
."DTSTART:19961027T030000\r\n"
|
||||
."TZNAME:GMT+01:00\r\n"
|
||||
."TZOFFSETTO:+0100\r\n"
|
||||
."END:STANDARD\r\n"
|
||||
."END:VTIMEZONE\r\n"
|
||||
."BEGIN:VEVENT\r\n"
|
||||
.$coodle->foldContentLine("ORGANIZER:MAILTO:".$erstellername." <".$coodle->ersteller_uid."@".DOMAIN)."\r\n"
|
||||
.rtrim($teilnehmer)."\r\n"
|
||||
."DTSTART;TZID=Europe/Vienna:".$dtstart."\r\n"
|
||||
."DTEND;TZID=Europe/Vienna:".$dtend."\r\n"
|
||||
."LOCATION:".$ort."\r\n"
|
||||
."TRANSP:OPAQUE\r\n"
|
||||
."SEQUENCE:0\r\n"
|
||||
."UID:FHCompleteCoodle".$coodle_id."\r\n"
|
||||
."DTSTAMP;TZID=Europe/Vienna:".$dtstamp."\r\n"
|
||||
.$terminbeschreibung."\r\n"
|
||||
."SUMMARY:".strip_tags($coodle->titel)."\r\n"
|
||||
."PRIORITY:5\r\n"
|
||||
."CLASS:PUBLIC\r\n"
|
||||
."END:VEVENT\r\n"
|
||||
."END:VCALENDAR\r\n";
|
||||
|
||||
if (count($coodle_ressource->result) > 0)
|
||||
{
|
||||
@@ -1173,4 +1176,4 @@ function RaumBelegt($ort_kurzbz, $datum, $stunden)
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -147,7 +147,7 @@ if(isset($_GET['show']))
|
||||
<th>Level</th>
|
||||
<th>Frage</th>
|
||||
<th colspan="3" title="Anzahl der Personen die diese Frage gestellt bekommen haben">Gesamt (m/w)</th>
|
||||
<th colspan="30">Nummer | Punkte | Gesamt | Männlich | Weiblich</th>
|
||||
<th colspan="30">Nummer | Punkte | Gesamt | % | Männlich | Weiblich</th>
|
||||
</tr>';
|
||||
}
|
||||
}
|
||||
@@ -244,12 +244,20 @@ if(isset($_GET['show']))
|
||||
|
||||
$anz_m = $row_geschlecht->anz_m;
|
||||
$anz_w = $row_vorschlag->anzahl_vorschlag-$row_geschlecht->anz_m;
|
||||
if ($row_vorschlag->anzahl_gesamt == 0)
|
||||
$anzahl_gesamt = 1;
|
||||
else
|
||||
$anzahl_gesamt = $row_vorschlag->anzahl_gesamt;
|
||||
|
||||
$vorschlag_prozent = round(100 * $row_vorschlag->anzahl_vorschlag / $anzahl_gesamt, 1);
|
||||
$vorschlag_prozent = number_format($vorschlag_prozent,1,',','');
|
||||
|
||||
$hlp2.= '
|
||||
<td style="border-left: 1px solid black; padding-left:2px;"><b>'.$row_vorschlag->nummer.'</b></td>
|
||||
<!--<td style="padding-left:2px;">'.$row_vorschlag->text.'</td>-->
|
||||
<td>'.number_format($row_vorschlag->punkte,2).'</td>
|
||||
<td><b>'.$row_vorschlag->anzahl_vorschlag.'</b></td>
|
||||
<td><b>'.$vorschlag_prozent.'%</b></td>
|
||||
<td style="color:blue;"><b>'.$anz_m.'</b></td>
|
||||
<td style="color:magenta;"><b>'.$anz_w.'</b></td>';
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ if($frage_id!='' && is_numeric($frage_id))
|
||||
tbl_frage_sprache.text as frage_text,
|
||||
tbl_frage_sprache.audio as frage_audio,
|
||||
tbl_frage_sprache.bild as frage_bild,
|
||||
tbl_vorschlag.nummer as vorschlag_nummer,
|
||||
tbl_vorschlag_sprache.text as vorschlag_text,
|
||||
tbl_vorschlag_sprache.audio as vorschlag_audio,
|
||||
tbl_vorschlag_sprache.bild as vorschlag_bild,
|
||||
@@ -108,9 +109,11 @@ if($frage_id!='' && is_numeric($frage_id))
|
||||
}
|
||||
|
||||
//Vorschlaege
|
||||
echo '<center>Nummer: '.$row->vorschlag_nummer.'</center><br>';
|
||||
echo '<center><div style="width: 90%; padding: 5px; background-color: #eee;border: 1px solid black">';
|
||||
//echo "<b>Vorschlag $i: </b>";
|
||||
$first=false;
|
||||
|
||||
echo $row->vorschlag_text;
|
||||
if($row->vorschlag_audio!='')
|
||||
{
|
||||
|
||||
@@ -161,7 +161,7 @@ if(!isset($_SESSION['pruefling_id']))
|
||||
$pruefling = new pruefling();
|
||||
$pruefling->load($_SESSION['pruefling_id']);
|
||||
|
||||
if ($pruefling->gesperrt === 't')
|
||||
if ($pruefling->isGesperrt($_SESSION['pruefling_id']))
|
||||
die("<script>document.location.href='prueflinggesperrt.php';</script>");
|
||||
|
||||
if (!in_array($gebiet_id, $_SESSION['alleGebiete']))
|
||||
|
||||
@@ -362,6 +362,8 @@ if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
|
||||
$pruefling->idnachweis = '';
|
||||
$pruefling->registriert = date('Y-m-d H:i:s');
|
||||
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
|
||||
$pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
|
||||
|
||||
if ($pruefling->save())
|
||||
{
|
||||
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
|
||||
@@ -385,6 +387,7 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
|
||||
$pruefling->registriert = date('Y-m-d H:i:s');
|
||||
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
|
||||
$pruefling->semester = $_POST['semester'];
|
||||
$pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
|
||||
if ($pruefling->save())
|
||||
{
|
||||
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
|
||||
|
||||
+26
-3
@@ -26,6 +26,28 @@
|
||||
"wiki": "https://wiki.fhcomplete.info/doku.php"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "vuepic/vue-datepicker-js",
|
||||
"version": "4.0.0",
|
||||
"dist": {
|
||||
"url": "https://unpkg.com/@vuepic/vue-datepicker@4.0.0/dist/vue-datepicker.iife.js",
|
||||
"type": "file"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "vuepic/vue-datepicker-css",
|
||||
"version": "4.0.0",
|
||||
"dist": {
|
||||
"url": "https://unpkg.com/@vuepic/vue-datepicker@4.0.0/dist/main.css",
|
||||
"type": "file"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
@@ -400,7 +422,7 @@
|
||||
"nategood/httpful": "0.2.*",
|
||||
"netcarver/textile": "3.7.*",
|
||||
"nicolaskruchten/pivottable": "2.23.0",
|
||||
"npm-asset/primevue": "3.15.*",
|
||||
"npm-asset/primevue": "3.29.*",
|
||||
"npm-asset/primeicons": "5.0.0",
|
||||
|
||||
"olifolkerd/tabulator4": "4.9.*",
|
||||
@@ -420,7 +442,9 @@
|
||||
"twbs/bootstrap5": "5.1.*",
|
||||
|
||||
"vuejs/vuejs3": "3.2.33",
|
||||
"vuejs/vuerouter4": "4.1.3"
|
||||
"vuejs/vuerouter4": "4.1.3",
|
||||
"vuepic/vue-datepicker-js": "4.*",
|
||||
"vuepic/vue-datepicker-css": "4.*"
|
||||
},
|
||||
"config": {
|
||||
"bin-dir": "vendor/bin"
|
||||
@@ -432,4 +456,3 @@
|
||||
"sebastian/phpcpd": "3.*"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
+418
-36
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "d530cc4d7bd81812535eb64e87ba04f4",
|
||||
"content-hash": "1105a07a83f98040eedbe34b23e11ee3",
|
||||
"packages": [
|
||||
{
|
||||
"name": "afarkas/html5shiv",
|
||||
@@ -35,6 +35,10 @@
|
||||
],
|
||||
"description": "Defacto way to enable use of HTML5 sectioning elements in legacy Internet Explorer.",
|
||||
"homepage": "http://paulirish.com/2011/the-history-of-the-html5-shiv/",
|
||||
"support": {
|
||||
"issues": "https://github.com/aFarkas/html5shiv/issues",
|
||||
"source": "https://github.com/aFarkas/html5shiv/tree/3.7.3"
|
||||
},
|
||||
"time": "2015-07-20T20:04:00+00:00"
|
||||
},
|
||||
{
|
||||
@@ -130,6 +134,16 @@
|
||||
"keywords": [
|
||||
"qr code"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/chillerlan/php-qrcode/issues",
|
||||
"source": "https://github.com/chillerlan/php-qrcode/tree/v2.0.x"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://ko-fi.com/codemasher",
|
||||
"type": "ko_fi"
|
||||
}
|
||||
],
|
||||
"time": "2020-04-12T07:38:35+00:00"
|
||||
},
|
||||
{
|
||||
@@ -178,6 +192,10 @@
|
||||
"helper",
|
||||
"trait"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/chillerlan/php-traits/issues",
|
||||
"source": "https://github.com/chillerlan/php-traits"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2018-06-22T00:30:47+00:00"
|
||||
},
|
||||
@@ -218,6 +236,10 @@
|
||||
],
|
||||
"description": "REST Server for the CodeIgniter framework",
|
||||
"homepage": "https://github.com/chriskacerguis/codeigniter-restserver",
|
||||
"support": {
|
||||
"issues": "https://github.com/chriskacerguis/codeigniter-restserver/issues",
|
||||
"source": "https://github.com/chriskacerguis/codeigniter-restserver"
|
||||
},
|
||||
"time": "2017-09-23T16:44:55+00:00"
|
||||
},
|
||||
{
|
||||
@@ -236,6 +258,10 @@
|
||||
},
|
||||
"type": "library",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"support": {
|
||||
"issues": "https://github.com/akiyatkin/tablesorter/issues",
|
||||
"source": "https://github.com/akiyatkin/tablesorter/tree/master"
|
||||
},
|
||||
"time": "2016-09-02T11:31:54+00:00"
|
||||
},
|
||||
{
|
||||
@@ -269,6 +295,13 @@
|
||||
],
|
||||
"description": "The CodeIgniter framework",
|
||||
"homepage": "https://codeigniter.com",
|
||||
"support": {
|
||||
"forum": "http://forum.codeigniter.com/",
|
||||
"issues": "https://github.com/bcit-ci/CodeIgniter/issues",
|
||||
"slack": "https://codeigniterchat.slack.com",
|
||||
"source": "https://github.com/bcit-ci/CodeIgniter",
|
||||
"wiki": "https://github.com/bcit-ci/CodeIgniter/wiki"
|
||||
},
|
||||
"time": "2022-03-03T13:21:49+00:00"
|
||||
},
|
||||
{
|
||||
@@ -573,6 +606,10 @@
|
||||
],
|
||||
"description": "Shim repository for Angular.js",
|
||||
"homepage": "http://angularjs.org",
|
||||
"support": {
|
||||
"issues": "https://github.com/components/angular.js/issues",
|
||||
"source": "https://github.com/components/angular.js/tree/master"
|
||||
},
|
||||
"time": "2015-06-07T20:10:38+00:00"
|
||||
},
|
||||
{
|
||||
@@ -615,6 +652,13 @@
|
||||
],
|
||||
"description": "jQuery JavaScript Library",
|
||||
"homepage": "http://jquery.com",
|
||||
"support": {
|
||||
"forum": "http://forum.jquery.com",
|
||||
"irc": "irc://irc.freenode.org/jquery",
|
||||
"issues": "https://github.com/jquery/jquery/issues",
|
||||
"source": "https://github.com/jquery/jquery",
|
||||
"wiki": "http://docs.jquery.com/"
|
||||
},
|
||||
"time": "2021-03-20T19:13:42+00:00"
|
||||
},
|
||||
{
|
||||
@@ -700,6 +744,10 @@
|
||||
}
|
||||
],
|
||||
"description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.",
|
||||
"support": {
|
||||
"issues": "https://github.com/components/jqueryui/issues",
|
||||
"source": "https://github.com/components/jqueryui/tree/master"
|
||||
},
|
||||
"time": "2016-09-16T05:47:55+00:00"
|
||||
},
|
||||
{
|
||||
@@ -749,6 +797,10 @@
|
||||
"captcha",
|
||||
"security"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/dapphp/securimage/issues",
|
||||
"source": "https://github.com/dapphp/securimage/tree/master"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2018-03-09T06:07:41+00:00"
|
||||
},
|
||||
@@ -812,6 +864,12 @@
|
||||
"rdfa",
|
||||
"sparql"
|
||||
],
|
||||
"support": {
|
||||
"forum": "http://groups.google.com/group/easyrdf/",
|
||||
"irc": "irc://chat.freenode.net/easyrdf",
|
||||
"issues": "http://github.com/njh/easyrdf/issues",
|
||||
"source": "https://github.com/easyrdf/easyrdf/tree/0.9.1"
|
||||
},
|
||||
"time": "2015-02-27T09:45:49+00:00"
|
||||
},
|
||||
{
|
||||
@@ -890,6 +948,10 @@
|
||||
"faker",
|
||||
"fixtures"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fzaninotto/Faker/issues",
|
||||
"source": "https://github.com/fzaninotto/Faker/tree/v1.9.2"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2020-12-11T09:56:16+00:00"
|
||||
},
|
||||
@@ -1012,6 +1074,10 @@
|
||||
"json",
|
||||
"schema"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/justinrainbow/json-schema/issues",
|
||||
"source": "https://github.com/justinrainbow/json-schema/tree/master"
|
||||
},
|
||||
"time": "2014-08-25T02:48:14+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1046,6 +1112,10 @@
|
||||
}
|
||||
],
|
||||
"description": "A framework-agnostic PHP Implementation for generating simple forms based on json-schema",
|
||||
"support": {
|
||||
"issues": "https://github.com/kingsquare/json-schema-form/issues",
|
||||
"source": "https://github.com/kingsquare/json-schema-form/tree/master"
|
||||
},
|
||||
"time": "2014-07-10T12:27:19+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1106,6 +1176,10 @@
|
||||
"keywords": [
|
||||
"markdown"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/michelf/php-markdown/issues",
|
||||
"source": "https://github.com/michelf/php-markdown/tree/lib"
|
||||
},
|
||||
"time": "2015-03-01T12:03:08+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1153,20 +1227,24 @@
|
||||
"uri",
|
||||
"url"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/lanthaler/IRI/issues",
|
||||
"source": "https://github.com/lanthaler/IRI/tree/master"
|
||||
},
|
||||
"time": "2014-01-21T13:43:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ml/json-ld",
|
||||
"version": "1.2.0",
|
||||
"version": "1.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/lanthaler/JsonLD.git",
|
||||
"reference": "c74a1aed5979ed1cfb1be35a55a305fd30e30b93"
|
||||
"reference": "537e68e87a6bce23e57c575cd5dcac1f67ce25d8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/c74a1aed5979ed1cfb1be35a55a305fd30e30b93",
|
||||
"reference": "c74a1aed5979ed1cfb1be35a55a305fd30e30b93",
|
||||
"url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/537e68e87a6bce23e57c575cd5dcac1f67ce25d8",
|
||||
"reference": "537e68e87a6bce23e57c575cd5dcac1f67ce25d8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1202,7 +1280,11 @@
|
||||
"JSON-LD",
|
||||
"jsonld"
|
||||
],
|
||||
"time": "2020-06-16T17:45:06+00:00"
|
||||
"support": {
|
||||
"issues": "https://github.com/lanthaler/JsonLD/issues",
|
||||
"source": "https://github.com/lanthaler/JsonLD/tree/1.2.1"
|
||||
},
|
||||
"time": "2022-09-29T08:45:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "moment/momentjs",
|
||||
@@ -1262,6 +1344,14 @@
|
||||
"sorting",
|
||||
"table"
|
||||
],
|
||||
"support": {
|
||||
"docs": "https://mottie.github.io/tablesorter/docs/index.html",
|
||||
"email": "wowmotty@gmail.com",
|
||||
"irc": "irc://irc.freenode.org/tablesorter",
|
||||
"issues": "https://github.com/Mottie/tablesorter/issues",
|
||||
"source": "https://github.com/Mottie/tablesorter",
|
||||
"wiki": "https://github.com/Mottie/tablesorter/wiki"
|
||||
},
|
||||
"time": "2020-03-03T13:46:03+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1312,6 +1402,10 @@
|
||||
"rest",
|
||||
"restful"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nategood/httpful/issues",
|
||||
"source": "https://github.com/nategood/httpful/tree/v0.2.20"
|
||||
},
|
||||
"time": "2015-10-26T16:11:30+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1365,6 +1459,12 @@
|
||||
"plaintext",
|
||||
"textile"
|
||||
],
|
||||
"support": {
|
||||
"irc": "irc://irc.freenode.net/textile",
|
||||
"issues": "https://github.com/textile/php-textile/issues",
|
||||
"source": "https://github.com/textile/php-textile",
|
||||
"wiki": "https://github.com/textile/php-textile/wiki"
|
||||
},
|
||||
"time": "2022-05-01T17:05:16+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1390,10 +1490,10 @@
|
||||
},
|
||||
{
|
||||
"name": "npm-asset/primevue",
|
||||
"version": "3.15.0",
|
||||
"version": "3.29.2",
|
||||
"dist": {
|
||||
"type": "tar",
|
||||
"url": "https://registry.npmjs.org/primevue/-/primevue-3.15.0.tgz"
|
||||
"url": "https://registry.npmjs.org/primevue/-/primevue-3.29.2.tgz"
|
||||
},
|
||||
"type": "npm-asset",
|
||||
"license": [
|
||||
@@ -1420,16 +1520,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpseclib/phpseclib",
|
||||
"version": "2.0.37",
|
||||
"version": "2.0.44",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpseclib/phpseclib.git",
|
||||
"reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c"
|
||||
"reference": "149f608243f8133c61926aae26ce67d2b22b37e5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
|
||||
"reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
|
||||
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/149f608243f8133c61926aae26ce67d2b22b37e5",
|
||||
"reference": "149f608243f8133c61926aae26ce67d2b22b37e5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1444,7 +1544,8 @@
|
||||
"ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
|
||||
"ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
|
||||
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
|
||||
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
|
||||
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations.",
|
||||
"ext-xml": "Install the XML extension to load XML formatted public keys."
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -1507,7 +1608,25 @@
|
||||
"x.509",
|
||||
"x509"
|
||||
],
|
||||
"time": "2022-04-04T04:57:45+00:00"
|
||||
"support": {
|
||||
"issues": "https://github.com/phpseclib/phpseclib/issues",
|
||||
"source": "https://github.com/phpseclib/phpseclib/tree/2.0.44"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/terrafrost",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/phpseclib",
|
||||
"type": "patreon"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-06-13T08:41:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rmariuzzo/jquery-checkboxes",
|
||||
@@ -1587,6 +1706,23 @@
|
||||
"polyfill",
|
||||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-23T09:01:57+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1706,6 +1842,10 @@
|
||||
"keywords": [
|
||||
"templating"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/1.x"
|
||||
},
|
||||
"time": "2020-02-11T05:59:23+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1725,6 +1865,24 @@
|
||||
"url": "https://unpkg.com/vue-router@4.1.3/dist/vue-router.global.js"
|
||||
},
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "vuepic/vue-datepicker-css",
|
||||
"version": "4.0.0",
|
||||
"dist": {
|
||||
"type": "file",
|
||||
"url": "https://unpkg.com/@vuepic/vue-datepicker@4.0.0/dist/main.css"
|
||||
},
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "vuepic/vue-datepicker-js",
|
||||
"version": "4.0.0",
|
||||
"dist": {
|
||||
"type": "file",
|
||||
"url": "https://unpkg.com/@vuepic/vue-datepicker@4.0.0/dist/vue-datepicker.iife.js"
|
||||
},
|
||||
"type": "library"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@@ -1779,6 +1937,24 @@
|
||||
"regex",
|
||||
"regular expression"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/pcre/issues",
|
||||
"source": "https://github.com/composer/pcre/tree/1.0.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://packagist.com",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/composer",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-01-21T20:24:37+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1826,20 +2002,39 @@
|
||||
"Xdebug",
|
||||
"performance"
|
||||
],
|
||||
"support": {
|
||||
"irc": "irc://irc.freenode.org/composer",
|
||||
"issues": "https://github.com/composer/xdebug-handler/issues",
|
||||
"source": "https://github.com/composer/xdebug-handler/tree/2.0.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://packagist.com",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/composer",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-02-24T20:20:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.14.0",
|
||||
"version": "v4.16.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
|
||||
"reference": "19526a33fb561ef417e822e85f08a00db4059c17"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
||||
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17",
|
||||
"reference": "19526a33fb561ef417e822e85f08a00db4059c17",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1878,20 +2073,24 @@
|
||||
"parser",
|
||||
"php"
|
||||
],
|
||||
"time": "2022-05-31T20:59:12+00:00"
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0"
|
||||
},
|
||||
"time": "2023-06-25T14:52:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pdepend/pdepend",
|
||||
"version": "2.10.3",
|
||||
"version": "2.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pdepend/pdepend.git",
|
||||
"reference": "da3166a06b4a89915920a42444f707122a1584c9"
|
||||
"reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/da3166a06b4a89915920a42444f707122a1584c9",
|
||||
"reference": "da3166a06b4a89915920a42444f707122a1584c9",
|
||||
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/1121d4b04af06e33e9659bac3a6741b91cab1de1",
|
||||
"reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1925,26 +2124,42 @@
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Official version of pdepend to be handled with Composer",
|
||||
"time": "2022-02-23T07:53:09+00:00"
|
||||
"keywords": [
|
||||
"PHP Depend",
|
||||
"PHP_Depend",
|
||||
"dev",
|
||||
"pdepend"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/pdepend/pdepend/issues",
|
||||
"source": "https://github.com/pdepend/pdepend/tree/2.14.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-26T13:15:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpmd/phpmd",
|
||||
"version": "2.12.0",
|
||||
"version": "2.13.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpmd/phpmd.git",
|
||||
"reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec"
|
||||
"reference": "dad0228156856b3ad959992f9748514fa943f3e3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpmd/phpmd/zipball/c0b678ba71902f539c27c14332aa0ddcf14388ec",
|
||||
"reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec",
|
||||
"url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3",
|
||||
"reference": "dad0228156856b3ad959992f9748514fa943f3e3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
|
||||
"ext-xml": "*",
|
||||
"pdepend/pdepend": "^2.10.3",
|
||||
"pdepend/pdepend": "^2.12.1",
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
@@ -1997,20 +2212,31 @@
|
||||
"phpmd",
|
||||
"pmd"
|
||||
],
|
||||
"time": "2022-03-24T13:33:01+00:00"
|
||||
"support": {
|
||||
"irc": "irc://irc.freenode.org/phpmd",
|
||||
"issues": "https://github.com/phpmd/phpmd/issues",
|
||||
"source": "https://github.com/phpmd/phpmd/tree/2.13.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-09-10T08:44:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpmetrics/phpmetrics",
|
||||
"version": "v2.8.1",
|
||||
"version": "v2.8.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpmetrics/PhpMetrics.git",
|
||||
"reference": "e279f7317390f642339941b693359e9a181817a7"
|
||||
"reference": "4b77140a11452e63c7a9b98e0648320bf6710090"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/e279f7317390f642339941b693359e9a181817a7",
|
||||
"reference": "e279f7317390f642339941b693359e9a181817a7",
|
||||
"url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/4b77140a11452e63c7a9b98e0648320bf6710090",
|
||||
"reference": "4b77140a11452e63c7a9b98e0648320bf6710090",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2061,7 +2287,11 @@
|
||||
"quality",
|
||||
"testing"
|
||||
],
|
||||
"time": "2022-03-24T10:19:51+00:00"
|
||||
"support": {
|
||||
"issues": "https://github.com/PhpMetrics/PhpMetrics/issues",
|
||||
"source": "https://github.com/phpmetrics/PhpMetrics/tree/v2.8.2"
|
||||
},
|
||||
"time": "2023-03-08T15:03:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-timer",
|
||||
@@ -2110,6 +2340,10 @@
|
||||
"keywords": [
|
||||
"timer"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
|
||||
"source": "https://github.com/sebastianbergmann/php-timer/tree/master"
|
||||
},
|
||||
"time": "2017-02-26T11:10:40+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2159,6 +2393,10 @@
|
||||
"container-interop",
|
||||
"psr"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-fig/container/issues",
|
||||
"source": "https://github.com/php-fig/container/tree/master"
|
||||
},
|
||||
"time": "2017-02-14T16:28:37+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2206,6 +2444,9 @@
|
||||
"psr",
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/log/tree/1.1.4"
|
||||
},
|
||||
"time": "2021-05-03T11:20:27+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2245,6 +2486,10 @@
|
||||
],
|
||||
"description": "FinderFacade is a convenience wrapper for Symfony's Finder component.",
|
||||
"homepage": "https://github.com/sebastianbergmann/finder-facade",
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/finder-facade/issues",
|
||||
"source": "https://github.com/sebastianbergmann/finder-facade/tree/master"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2017-11-18T17:31:49+00:00"
|
||||
},
|
||||
@@ -2296,6 +2541,11 @@
|
||||
],
|
||||
"description": "Copy/Paste Detector (CPD) for PHP code.",
|
||||
"homepage": "https://github.com/sebastianbergmann/phpcpd",
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/phpcpd/issues",
|
||||
"source": "https://github.com/sebastianbergmann/phpcpd/tree/master"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2017-11-16T08:49:28+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2339,6 +2589,10 @@
|
||||
],
|
||||
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
||||
"homepage": "https://github.com/sebastianbergmann/version",
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/version/issues",
|
||||
"source": "https://github.com/sebastianbergmann/version/tree/master"
|
||||
},
|
||||
"time": "2016-10-03T07:35:21+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2390,6 +2644,11 @@
|
||||
"phpcs",
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
|
||||
"source": "https://github.com/squizlabs/PHP_CodeSniffer",
|
||||
"wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
|
||||
},
|
||||
"time": "2021-12-12T21:44:58+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2449,6 +2708,23 @@
|
||||
],
|
||||
"description": "Symfony Config Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/config/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2516,6 +2792,23 @@
|
||||
],
|
||||
"description": "Symfony Console Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2567,6 +2860,23 @@
|
||||
],
|
||||
"description": "Symfony Debug Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/debug/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"abandoned": "symfony/error-handler",
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
},
|
||||
@@ -2634,6 +2944,23 @@
|
||||
],
|
||||
"description": "Symfony DependencyInjection Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/dependency-injection/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2679,6 +3006,23 @@
|
||||
],
|
||||
"description": "Symfony Filesystem Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2723,6 +3067,23 @@
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/finder/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-11-16T17:02:08+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2786,6 +3147,23 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.19.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-23T09:01:57+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2829,6 +3207,10 @@
|
||||
],
|
||||
"description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.",
|
||||
"homepage": "https://github.com/theseer/fDOMDocument",
|
||||
"support": {
|
||||
"issues": "https://github.com/theseer/fDOMDocument/issues",
|
||||
"source": "https://github.com/theseer/fDOMDocument/tree/1.6.7"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2022-01-25T23:10:35+00:00"
|
||||
}
|
||||
@@ -2842,5 +3224,5 @@
|
||||
"php": ">=5.6.40"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
"plugin-api-version": "2.2.0"
|
||||
}
|
||||
|
||||
+28
-7
@@ -140,6 +140,8 @@ foreach($addon_obj->result as $addon)
|
||||
<command id="menu-dokumente-studienerfolgeng-allesemester-finanzamt:command" oncommand="StudentCreateStudienerfolg(event, 'StudienerfolgEng','finanzamt', '', 'true');"/>
|
||||
<command id="menu-dokumente-accountinfoblatt:command" oncommand="PrintAccountInfoBlatt(event);"/>
|
||||
<command id="menu-dokumente-zutrittskarte:command" oncommand="PrintZutrittskarte();"/>
|
||||
<command id="menu-dokumente-antrag-abmeldung:command" oncommand="StudentPrintAntragAbmeldung(event);"/>
|
||||
<command id="menu-dokumente-antrag-unterbrechung:command" oncommand="StudentPrintAntragUnterbrechung(event);"/>
|
||||
<command id="menu-dokumente-studienblatt:command" oncommand="PrintStudienblatt(event);"/>
|
||||
<command id="menu-dokumente-studienblatt_englisch:command" oncommand="PrintStudienblattEnglisch(event);"/>
|
||||
<command id="menu-dokumente-pruefungsprotokoll:command" oncommand="StudentAbschlusspruefungPrintPruefungsprotokollMultiple(event,'de');"/>
|
||||
@@ -507,19 +509,38 @@ foreach($addon_obj->result as $addon)
|
||||
label = "&menu-dokumente-zutrittskarte.label;"
|
||||
command = "menu-dokumente-zutrittskarte:command"
|
||||
accesskey = "&menu-dokumente-zutrittskarte.accesskey;"/>
|
||||
<menu id="menu-dokumente-antrag" label="&menu-dokumente-antrag.label;" accesskey="&menu-dokumente-antrag.accesskey;">
|
||||
<menupopup id="menu-dokumente-antrag-popup">
|
||||
<menuitem
|
||||
id = "menu-dokumente-antrag-abmeldung"
|
||||
key = "menu-dokumente-antrag-abmeldung:key"
|
||||
label = "&menu-dokumente-antrag-abmeldung.label;"
|
||||
command = "menu-dokumente-antrag-abmeldung:command"
|
||||
accesskey = "&menu-dokumente-antrag-abmeldung.accesskey;"
|
||||
/>
|
||||
<menuitem
|
||||
id = "menu-dokumente-antrag-unterbrechung"
|
||||
key = "menu-dokumente-antrag-unterbrechung:key"
|
||||
label = "&menu-dokumente-antrag-unterbrechung.label;"
|
||||
command = "menu-dokumente-antrag-unterbrechung:command"
|
||||
accesskey = "&menu-dokumente-antrag-unterbrechung.accesskey;"
|
||||
/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
<menuseparator/>
|
||||
<menuitem
|
||||
id = "menu-dokumente-inskriptionsbestaetigung"
|
||||
key = "menu-dokumente-inskriptionsbestaetigung:key"
|
||||
label = "&menu-dokumente-inskriptionsbestaetigung.label;"
|
||||
command = "menu-dokumente-inskriptionsbestaetigung:command"
|
||||
accesskey = "&menu-dokumente-inskriptionsbestaetigung.accesskey;"/>
|
||||
<menuitem
|
||||
id = "menu-dokumente-inskriptionsbestaetigung"
|
||||
key = "menu-dokumente-inskriptionsbestaetigung:key"
|
||||
label = "&menu-dokumente-inskriptionsbestaetigung.label;"
|
||||
command = "menu-dokumente-inskriptionsbestaetigung:command"
|
||||
accesskey = "&menu-dokumente-inskriptionsbestaetigung.accesskey;"/>
|
||||
<menuitem
|
||||
id = "menu-dokumente-inskriptionsbestaetigungeng"
|
||||
key = "menu-dokumente-inskriptionsbestaetigungeng:key"
|
||||
label = "&menu-dokumente-inskriptionsbestaetigungeng.label;"
|
||||
command = "menu-dokumente-inskriptionsbestaetigungeng:command"
|
||||
accesskey = "&menu-dokumente-inskriptionsbestaetigungeng.accesskey;"/>
|
||||
accesskey = "&menu-dokumente-inskriptionsbestaetigungeng.accesskey;"
|
||||
/>
|
||||
<menuitem
|
||||
id = "menu-statistic-lehrauftraege"
|
||||
key = "menu-statistic-lehrauftraege:key"
|
||||
|
||||
@@ -253,7 +253,7 @@ else
|
||||
array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id',
|
||||
'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis',
|
||||
'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort',
|
||||
'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz')
|
||||
'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz', 'studiensemester_kurzbz')
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
@@ -27,8 +27,14 @@ header("Pragma: no-cache");
|
||||
header("Content-type: application/vnd.mozilla.xul+xml");
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
require_once('../../config/global.config.inc.php');
|
||||
require_once('../../include/functions.inc.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
|
||||
$user = get_uid();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
?>
|
||||
|
||||
<overlay id="StudentKonto"
|
||||
@@ -206,10 +212,6 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<spacer flex="1"/>
|
||||
<button id="student-konto-button-zahlungsbestaetigung" label="Zahlungsbestaetigung drucken" oncommand="StudentKontoZahlungsbestaetigung();" disabled="true" hidden="<?php echo $is_hidden?>"/>
|
||||
</hbox>
|
||||
<vbox hidden="true">
|
||||
<label value="Buchungsnr" control="student-konto-textbox-buchungsnr"/>
|
||||
<textbox id="student-konto-textbox-buchungsnr" disabled="true"/>
|
||||
</vbox>
|
||||
<groupbox id="student-konto-groupbox">
|
||||
<caption label="Details"/>
|
||||
<grid id="student-konto-grid-detail" style="overflow:auto;margin:4px;" flex="1">
|
||||
@@ -218,6 +220,20 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<column flex="5"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<?php
|
||||
$hidden = 'hidden="true"';
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if($rechte->isBerechtigt('admin'))
|
||||
$hidden = '';
|
||||
?>
|
||||
<row <?php echo $hidden ?>>
|
||||
<label value="Buchungsnr" control="student-konto-textbox-buchungsnr"/>
|
||||
<hbox>
|
||||
<textbox id="student-konto-textbox-buchungsnr" readonly="true" size="9"/>
|
||||
<spacer flex="1" />
|
||||
</hbox>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Betrag" control="student-konto-textbox-betrag"/>
|
||||
<hbox>
|
||||
|
||||
@@ -181,6 +181,8 @@ echo "<?xml-stylesheet href=\"".APP_ROOT."content/bindings.css\" type=\"text/css
|
||||
<vbox>
|
||||
<spacer flex="1"/>
|
||||
<button id="student-note-copy" label="<=" style="font-weight: bold;" oncommand="StudentNotenMove();"/>
|
||||
<spacer id="student-note-copy-antrag-spacer" flex="2"/>
|
||||
<button id="student-note-copy-antrag" label="<=" style="font-weight: bold;" oncommand="StudentNotenMoveFromAntrag();"/>
|
||||
<spacer flex="1"/>
|
||||
</vbox>
|
||||
|
||||
@@ -262,6 +264,83 @@ echo "<?xml-stylesheet href=\"".APP_ROOT."content/bindings.css\" type=\"text/css
|
||||
</treechildren>
|
||||
</template>
|
||||
</tree>
|
||||
<label id="student-antragnoten-tree-label" value="Wiederholung" hidden="true"/>
|
||||
<tree id="student-antragnoten-tree" seltype="multi" hidecolumnpicker="false" flex="1"
|
||||
datasources="rdf:null" ref="http://www.technikum-wien.at/antragnote/liste"
|
||||
style="margin-bottom:5px;" height="100%" enableColumnDrag="true"
|
||||
flags="dont-build-content"
|
||||
>
|
||||
|
||||
<treecols>
|
||||
<treecol id="student-antragnoten-tree-lehrveranstaltung_bezeichnung" label="Lehrveranstaltung" flex="2" hidden="false" primary="true"
|
||||
class="sortDirectionIndicator"
|
||||
sortActive="true"
|
||||
sortDirection="ascending"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#lehrveranstaltung_bezeichnung"
|
||||
onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-note_bezeichnung" label="Note" flex="5" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#note_bezeichnung" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-mitarbeiter_uid" label="MitarbeiterInUID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#mitarbeiter_uid" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-benotungsdatum" label="Benotungsdatum" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#benotungsdatum_iso" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-benotungsdatum-iso" label="BenotungsdatumISO" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#benotungsdatum_iso" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-freigabedatum" label="Freigabedatum" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#freigabedatum_iso" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-studiensemester_kurzbz" label="Studiensemester" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#studiensemester_kurzbz" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-note" label="NoteID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#note" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-prestudent_id" label="PrestudentInID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#prestudent_id" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-lehrveranstaltung_id" label="LehrveranstaltungID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#lehrveranstaltung_id" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-antragnoten-tree-studierendenantrag_lehrveranstaltung_id" label="StudierendenantragLehrveranstaltungID" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/antragnote/rdf#studierendenantrag_lehrveranstaltung_id" onclick="StudentAntragNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
</treecols>
|
||||
|
||||
<template>
|
||||
<treechildren flex="1" >
|
||||
<treeitem uri="rdf:*">
|
||||
<treerow>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#lehrveranstaltung_bezeichnung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#note_bezeichnung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#mitarbeiter_uid"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#benotungsdatum"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#benotungsdatum_iso"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#freigabedatum"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#studiensemester_kurzbz"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#note"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#prestudent_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#lehrveranstaltung_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/antragnote/rdf#studierendenantrag_lehrveranstaltung_id"/>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</template>
|
||||
</tree>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
|
||||
@@ -47,6 +47,8 @@ var StudentNotenTreeDatasource; //Datasource des Noten Trees
|
||||
var StudentNotenSelectLehrveranstaltungID=null; //LehreinheitID des Noten Eintrages der nach dem Refresh markiert werden soll
|
||||
var StudentLvGesamtNotenTreeDatasource; //Datasource des Noten Trees
|
||||
var StudentLvGesamtNotenSelectLehrveranstaltungID=null; //LehreinheitID des Noten Eintrages der nach dem Refresh markiert werden soll
|
||||
var StudentAntragNotenTreeDatasource; //Datasource des Noten Trees
|
||||
var StudentAntragNotenSelectLehrveranstaltungID=null; //LehreinheitID des Noten Eintrages der nach dem Refresh markiert werden soll
|
||||
var StudentPruefungTreeDatasource; //Datasource des Pruefung Trees
|
||||
var StudentPruefungSelectID=null; //ID der Pruefung die nach dem Refresh markiert werden soll
|
||||
var StudentAnrechnungTreeDatasource; //Datasource des Anrechnung Trees
|
||||
@@ -56,6 +58,7 @@ var StudentAkteTreeDatasource=null;
|
||||
var doublerebuildkonto='false';
|
||||
var StudentNotenTreeloaded=false;
|
||||
var StudentGesamtNotenTreeloaded=false;
|
||||
var StudentAntragNotenTreeloaded=false;
|
||||
// ********** Observer und Listener ************* //
|
||||
|
||||
// ****
|
||||
@@ -342,6 +345,54 @@ var StudentLvGesamtNotenTreeListener =
|
||||
}
|
||||
};
|
||||
|
||||
// ****
|
||||
// * Observer fuer LvGesamtNoten Tree
|
||||
// * startet Rebuild nachdem das Refresh
|
||||
// * der datasource fertig ist
|
||||
// ****
|
||||
var StudentAntragNotenTreeSinkObserver =
|
||||
{
|
||||
onBeginLoad : function(pSink) {},
|
||||
onInterrupt : function(pSink) {},
|
||||
onResume : function(pSink) {},
|
||||
onError : function(pSink, pStatus, pError) {},
|
||||
onEndLoad : function(pSink)
|
||||
{
|
||||
StudentAntragNotenTreeloaded=false;
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var dsResources = StudentAntragNotenTreeDatasource.GetAllResources();
|
||||
if (dsResources.hasMoreElements()) {
|
||||
document.getElementById('student-antragnoten-tree').hidden = false;
|
||||
document.getElementById('student-antragnoten-tree-label').hidden = false;
|
||||
document.getElementById('student-note-copy-antrag').hidden = false;
|
||||
document.getElementById('student-note-copy-antrag-spacer').hidden = false;
|
||||
} else {
|
||||
document.getElementById('student-antragnoten-tree').hidden = true;
|
||||
document.getElementById('student-antragnoten-tree-label').hidden = true;
|
||||
document.getElementById('student-note-copy-antrag').hidden = true;
|
||||
document.getElementById('student-note-copy-antrag-spacer').hidden = true;
|
||||
}
|
||||
document.getElementById('student-antragnoten-tree').builder.rebuild();
|
||||
}
|
||||
};
|
||||
|
||||
// ****
|
||||
// * Nach dem Rebuild wird der Eintrag wieder
|
||||
// * markiert
|
||||
// ****
|
||||
var StudentAntragNotenTreeListener =
|
||||
{
|
||||
willRebuild : function(builder) { },
|
||||
didRebuild : function(builder)
|
||||
{
|
||||
//timeout nur bei Mozilla notwendig da sonst die rows
|
||||
//noch keine values haben. Ab Seamonkey funktionierts auch
|
||||
//ohne dem setTimeout
|
||||
StudentAntragNotenTreeloaded=true;
|
||||
window.setTimeout(StudentAntragNotenTreeSelectID,10);
|
||||
}
|
||||
};
|
||||
|
||||
// ****
|
||||
// * Observer fuer Pruefung Tree
|
||||
// * startet Rebuild nachdem das Refresh
|
||||
@@ -1604,6 +1655,35 @@ function StudentAuswahl()
|
||||
lvgesamtnotentree.database.AddDataSource(StudentLvGesamtNotenTreeDatasource);
|
||||
StudentLvGesamtNotenTreeDatasource.addXMLSinkObserver(StudentLvGesamtNotenTreeSinkObserver);
|
||||
lvgesamtnotentree.builder.addListener(StudentLvGesamtNotenTreeListener);
|
||||
|
||||
var antragnotentree = document.getElementById('student-antragnoten-tree');
|
||||
|
||||
url='<?php echo APP_ROOT;?>index.ci.php/components/Antrag/Wiederholung/getLvsAsRdf/'+prestudent_id+"?"+gettimestamp();
|
||||
|
||||
try
|
||||
{
|
||||
StudentAntragNotenTreeDatasource.removeXMLSinkObserver(StudentAntragNotenTreeSinkObserver);
|
||||
antragnotentree.builder.removeListener(StudentAntragNotenTreeListener);
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
|
||||
//Alte DS entfernen
|
||||
var oldDatasources = antragnotentree.database.GetDataSources();
|
||||
while(oldDatasources.hasMoreElements())
|
||||
{
|
||||
antragnotentree.database.RemoveDataSource(oldDatasources.getNext());
|
||||
}
|
||||
//Refresh damit die entfernten DS auch wirklich entfernt werden
|
||||
antragnotentree.builder.rebuild();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
StudentAntragNotenTreeDatasource = rdfService.GetDataSource(url);
|
||||
StudentAntragNotenTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
StudentAntragNotenTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
|
||||
antragnotentree.database.AddDataSource(StudentAntragNotenTreeDatasource);
|
||||
StudentAntragNotenTreeDatasource.addXMLSinkObserver(StudentAntragNotenTreeSinkObserver);
|
||||
antragnotentree.builder.addListener(StudentAntragNotenTreeListener);
|
||||
}
|
||||
|
||||
// ***** KONTAKTE *****
|
||||
@@ -3452,6 +3532,10 @@ function StudentZeugnisDokumentArchivieren()
|
||||
xml = 'ausbildungsvertrag.xml.php';
|
||||
break;
|
||||
|
||||
case 'AbschlussdokumentLehrgaenge':
|
||||
xml = 'abschlussdokument_lehrgaenge.xml.php';
|
||||
break;
|
||||
|
||||
default:
|
||||
alert('Das Archivieren fuer diesen Dokumenttyp wird derzeit nicht unterstuetzt');
|
||||
return
|
||||
@@ -4379,6 +4463,77 @@ function StudentNotenTreeSelectDifferent()
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Selectiert die Noten im AntragNoteTree welche nicht gleich denen
|
||||
// * im ZeugnisNoteTree sind
|
||||
// ****
|
||||
function StudentAntragNotenTreeSelectDifferent()
|
||||
{
|
||||
var zeugnistree = document.getElementById("student-noten-tree");
|
||||
var antragnotentree = document.getElementById("student-antragnoten-tree");
|
||||
//bestehende markierung entfernen
|
||||
antragnotentree.view.selection.clearSelection();
|
||||
|
||||
if(StudentNotenTreeloaded && StudentAntragNotenTreeloaded)
|
||||
{
|
||||
if(antragnotentree.view)
|
||||
var antragitems = antragnotentree.view.rowCount; //Anzahl der Zeilen ermitteln
|
||||
else
|
||||
return false;
|
||||
|
||||
if(zeugnistree.view)
|
||||
var zeugnisitems = zeugnistree.view.rowCount; //Anzahl der Zeilen ermitteln
|
||||
else
|
||||
return false;
|
||||
|
||||
for(var i=0;i<antragitems;i++)
|
||||
{
|
||||
//Daten aus AntragNotenTree holen
|
||||
col = antragnotentree.columns ? antragnotentree.columns["student-antragnoten-tree-lehrveranstaltung_id"] : "student-antragnoten-tree-lehrveranstaltung_id";
|
||||
var antraglehrveranstaltung_id=antragnotentree.view.getCellText(i,col);
|
||||
col = antragnotentree.columns ? antragnotentree.columns["student-antragnoten-tree-note"] : "student-antragnoten-tree-note";
|
||||
var antragnote=antragnotentree.view.getCellText(i,col);
|
||||
col = antragnotentree.columns ? antragnotentree.columns["student-antragnoten-tree-benotungsdatum-iso"] : "student-antragnoten-tree-benotungsdatum-iso";
|
||||
var antragbenotungsdatum=antragnotentree.view.getCellText(i,col);
|
||||
|
||||
found=false;
|
||||
//Schauen ob die gleiche Zeile im Zeugnisnoten Tree vorkommt
|
||||
for(var j=0;j<zeugnisitems;j++)
|
||||
{
|
||||
col = zeugnistree.columns ? zeugnistree.columns["student-noten-tree-lehrveranstaltung_id"] : "student-noten-tree-lehrveranstaltung_id";
|
||||
var zeugnislehrveranstaltung_id=zeugnistree.view.getCellText(j,col);
|
||||
col = zeugnistree.columns ? zeugnistree.columns["student-noten-tree-note"] : "student-noten-tree-note";
|
||||
var zeugnisnote=zeugnistree.view.getCellText(j,col);
|
||||
col = zeugnistree.columns ? zeugnistree.columns["student-noten-tree-benotungsdatum-iso"] : "student-noten-tree-benotungsdatum-iso";
|
||||
var zeugnisbenotungsdatum=zeugnistree.view.getCellText(j,col);
|
||||
|
||||
if(zeugnislehrveranstaltung_id==antraglehrveranstaltung_id && zeugnisnote==antragnote && zeugnisbenotungsdatum==antragbenotungsdatum)
|
||||
{
|
||||
found=true;
|
||||
break;
|
||||
}
|
||||
|
||||
//Wenn das benotungsdatum im Zeugnis
|
||||
//nach dem benotungsdatum des antrags liegt, dann wird die zeile auch nicht markiert.
|
||||
//damit wird verhindert, dass pruefungsnoten die nur von der assistenz eingetragen wurden,
|
||||
//durch den alten eintrag des antrags wieder ueberschrieben werden
|
||||
if(zeugnislehrveranstaltung_id==antraglehrveranstaltung_id
|
||||
&& zeugnisbenotungsdatum>antragbenotungsdatum)
|
||||
{
|
||||
found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!found)
|
||||
{
|
||||
//Zeile markieren
|
||||
antragnotentree.view.selection.rangedSelect(i,i,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Selectiert den Noten Eintrag nachdem der Tree
|
||||
// * rebuildet wurde.
|
||||
@@ -4389,11 +4544,12 @@ function StudentLvGesamtNotenTreeSelectID()
|
||||
}
|
||||
|
||||
// ***
|
||||
// * Disabled/Enabled die Nodenfelder
|
||||
// * Disabled/Enabled die Notenfelder
|
||||
// ***
|
||||
function StudentNoteDisableFields(val)
|
||||
{
|
||||
document.getElementById('student-note-copy').disabled=val;
|
||||
document.getElementById('student-note-copy-antrag').disabled=val;
|
||||
}
|
||||
|
||||
// ***
|
||||
@@ -4577,6 +4733,68 @@ function StudentNotenMove()
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Uebernimmt die Noten der Antraege fuer die Zeugnisnote
|
||||
// ****
|
||||
function StudentNotenMoveFromAntrag()
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-antragnoten-tree');
|
||||
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var paramList= '';
|
||||
var i = 0;
|
||||
|
||||
var url = '<?php echo APP_ROOT ?>index.ci.php/components/Antrag/Wiederholung/moveLvsToZeugnis';
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
for (var t = 0; t < numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (var v = start.value; v <= end.value; v++)
|
||||
{
|
||||
col = tree.columns ? tree.columns["student-antragnoten-tree-studierendenantrag_lehrveranstaltung_id"] : "student-antragnoten-tree-studierendenantrag_lehrveranstaltung_id";
|
||||
studierendenantrag_lehrveranstaltung_id = tree.view.getCellText(v,col);
|
||||
|
||||
req.add('studierendenantrag_lehrveranstaltung_id_'+i, studierendenantrag_lehrveranstaltung_id);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
req.add('anzahl', i);
|
||||
|
||||
var uid = document.getElementById('student-detail-textbox-uid').value;
|
||||
req.add('student_uid', uid);
|
||||
|
||||
var txt = "?";
|
||||
for(var q in req.parms) {
|
||||
txt = txt+'&'+req.parms[q].name+'='+encodeURIComponent(req.parms[q].value);
|
||||
}
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
var val = new ParseReturnValue(response)
|
||||
|
||||
if (!val.dbdml_return)
|
||||
{
|
||||
if(val.dbdml_errormsg=='')
|
||||
alert(response);
|
||||
else
|
||||
alert(val.dbdml_errormsg);
|
||||
|
||||
StudentNotenTreeDatasource.Refresh(false); //non blocking
|
||||
SetStatusBarText('Daten wurden gespeichert');
|
||||
StudentNoteDetailDisableFields(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
StudentNotenTreeDatasource.Refresh(false); //non blocking
|
||||
SetStatusBarText('Daten wurden gespeichert');
|
||||
StudentNoteDetailDisableFields(true);
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Loescht die markierte Note
|
||||
// ****
|
||||
@@ -5942,6 +6160,102 @@ function StudentCreateDiplSupplement(event)
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=diplomasupplement.xml.php&output='+output+'&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+paramList,'DiplomaSupplement', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
function StudentPrintAntragAbmeldung(event)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-tree');
|
||||
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
return alert('Bitte eine/n Studierende/n auswaehlen');
|
||||
|
||||
//Uids aller markierten Studenten holen
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var prestudent_id= '';
|
||||
var student_uid= '';
|
||||
|
||||
for (var t = 0; t < numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (var v = start.value; v <= end.value; v++)
|
||||
{
|
||||
var col = tree.columns ? tree.columns["student-treecol-prestudent_id"] : "student-treecol-prestudent_id";
|
||||
var prestudentId=tree.view.getCellText(v,col);
|
||||
prestudent_id += ';'+prestudentId;
|
||||
|
||||
col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
|
||||
var uid=tree.view.getCellText(v,col);
|
||||
student_uid += ';'+uid;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (event.shiftKey)
|
||||
{
|
||||
var output='odt';
|
||||
}
|
||||
else if (event.ctrlKey)
|
||||
{
|
||||
var output='doc';
|
||||
}
|
||||
else
|
||||
{
|
||||
var output='pdf';
|
||||
}
|
||||
|
||||
window.open('<?php echo APP_ROOT; ?>/content/pdfExport.php?xml=AntragAbmeldung.xml.php&xsl=AntragAbmeldung&uid='+student_uid+'&prestudent_id='+prestudent_id+'&output='+output,'AntragAbmeldung', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
function StudentPrintAntragUnterbrechung(event)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-tree');
|
||||
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
return alert('Bitte eine/n Studierende/n auswaehlen');
|
||||
|
||||
//Uids aller markierten Studenten holen
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var prestudent_id= '';
|
||||
var student_uid= '';
|
||||
|
||||
for (var t = 0; t < numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (var v = start.value; v <= end.value; v++)
|
||||
{
|
||||
var col = tree.columns ? tree.columns["student-treecol-prestudent_id"] : "student-treecol-prestudent_id";
|
||||
var prestudentId=tree.view.getCellText(v,col);
|
||||
prestudent_id += ';'+prestudentId;
|
||||
|
||||
col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
|
||||
var uid=tree.view.getCellText(v,col);
|
||||
student_uid += ';'+uid;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (event.shiftKey)
|
||||
{
|
||||
var output='odt';
|
||||
}
|
||||
else if (event.ctrlKey)
|
||||
{
|
||||
var output='doc';
|
||||
}
|
||||
else
|
||||
{
|
||||
var output='pdf';
|
||||
}
|
||||
|
||||
window.open('<?php echo APP_ROOT; ?>/content/pdfExport.php?xml=AntragUnterbrechung.xml.php&xsl=AntragUnterbrechung&uid='+student_uid+'&prestudent_id='+prestudent_id+'&output='+output,'AntragUnterbrechung', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Erstellt den Ausbildungsvertrag fuer einen oder mehrere Studenten
|
||||
// ****
|
||||
@@ -6370,6 +6684,13 @@ function StudentLVGesamtNotenTreeSort()
|
||||
window.setTimeout(StudentNotenTreeSelectDifferent,20);
|
||||
}
|
||||
|
||||
function StudentAntragNotenTreeSort()
|
||||
{
|
||||
// Nach dem Sortieren der Noten die Unterschiede erneut markieren
|
||||
// da sonst nach dem sortieren falsche Eintraege markiert sind
|
||||
window.setTimeout(StudentAntragNotenTreeSelectDifferent,20);
|
||||
}
|
||||
|
||||
//****
|
||||
//* Exportiert den Bescheid fuer alle markierten Studierenden
|
||||
//****
|
||||
|
||||
@@ -270,7 +270,8 @@ foreach ($uid_arr as $uid)
|
||||
'matrikelnummer' => rtrim($student->matrikelnr),
|
||||
'matr_nr' => $person->matr_nr,
|
||||
'ausstellungsdatum' => date('M.Y'),
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y')
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y'),
|
||||
'gueltigbis_3jahre' => date('d.m.Y', strtotime('+3 years'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+372
-350
File diff suppressed because it is too large
Load Diff
@@ -200,6 +200,10 @@ class dokument_export
|
||||
chdir($this->temp_folder);
|
||||
file_put_contents($this->temp_folder . '/content.xml', $contentbuffer);
|
||||
|
||||
if ($this->xml_data->firstChild->tagName == 'error') {
|
||||
$this->errormsg = $this->xml_data->firstChild->textContent;
|
||||
return false;
|
||||
}
|
||||
// styles.xml erstellen
|
||||
if(!is_null($this->styles_xsl))
|
||||
{
|
||||
|
||||
@@ -39,9 +39,9 @@ class dvb extends basis_db
|
||||
const DVB_URL_WEBSERVICE_NACHNAME = DVB_PORTAL.'/rws/0.2/simpleStudentByNachname.xml';
|
||||
const DVB_URL_WEBSERVICE_NAME = DVB_PORTAL.'/rws/0.2/simpleStudentByName.xml';
|
||||
const DVB_URL_WEBSERVICE_MATRIKELNUMMER = DVB_PORTAL.'/rws/0.2/simpleStudentByMatrikelnummer.xml';
|
||||
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.5/matrikelreservierung.xml';
|
||||
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.5/matrikelmeldung.xml';
|
||||
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.5/pruefebpk.xml';
|
||||
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.6/matrikelreservierung.xml';
|
||||
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.6/matrikelmeldung.xml';
|
||||
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.6/pruefebpk.xml';
|
||||
|
||||
public $authentication;
|
||||
private $username;
|
||||
@@ -829,7 +829,8 @@ class dvb extends basis_db
|
||||
if (ErrorHandler::isError($result))
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
$gebdat = str_replace("-", "", $person->geburtsdatum);
|
||||
//$gebdat = str_replace("-", "", $person->geburtsdatum);
|
||||
$gebdat = $person->geburtsdatum;
|
||||
|
||||
$data = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<matrikelnummernmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
|
||||
@@ -1038,7 +1039,7 @@ class dvb extends basis_db
|
||||
<ausstellland>'.$reisepass->ausstellland.'</ausstellland>
|
||||
<dokumentnr>'.$reisepass->dokumentnr.'</dokumentnr>
|
||||
<dokumenttyp>'.$reisepass->dokumenttyp.'</dokumenttyp>
|
||||
</ernpmeldung>
|
||||
</ernpmeldung>
|
||||
';
|
||||
$data .= '</matrikelnummernmeldung>';
|
||||
|
||||
|
||||
@@ -870,6 +870,42 @@ class prestudent extends person
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
)";
|
||||
break;
|
||||
case "bewerberrtnichtangemeldet":
|
||||
$qry.=" AND a.rolle='Bewerber'
|
||||
AND NOT EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
public.tbl_rt_person
|
||||
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
|
||||
WHERE
|
||||
person_id=a.person_id
|
||||
AND studienplan_id IN (
|
||||
SELECT studienplan_id FROM lehre.tbl_studienplan
|
||||
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
|
||||
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
|
||||
)
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
)";
|
||||
break;
|
||||
case "bewerberrtangemeldet":
|
||||
$qry.=" AND a.rolle='Bewerber'
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
public.tbl_rt_person
|
||||
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
|
||||
WHERE
|
||||
person_id=a.person_id
|
||||
AND studienplan_id IN (
|
||||
SELECT studienplan_id FROM lehre.tbl_studienplan
|
||||
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
|
||||
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
|
||||
)
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
)";
|
||||
break;
|
||||
case "zgv":
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->load($studiengang_kz);
|
||||
|
||||
@@ -108,12 +108,13 @@ class pruefling extends basis_db
|
||||
|
||||
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
|
||||
{
|
||||
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('.
|
||||
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester, gesperrt) VALUES('.
|
||||
$this->db_add_param($this->studiengang_kz).",".
|
||||
$this->db_add_param($this->idnachweis).",".
|
||||
$this->db_add_param($this->registriert).",".
|
||||
$this->db_add_param($this->prestudent_id).",".
|
||||
$this->db_add_param($this->semester).");";
|
||||
$this->db_add_param($this->semester).",".
|
||||
$this->db_add_param($this->gesperrt, FHC_BOOLEAN).");";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -122,7 +123,8 @@ class pruefling extends basis_db
|
||||
' idnachweis='.$this->db_add_param($this->idnachweis).','.
|
||||
' registriert='.$this->db_add_param($this->registriert).','.
|
||||
' semester='.$this->db_add_param($this->semester).','.
|
||||
' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).
|
||||
' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).','.
|
||||
' gesperrt='.$this->db_add_param($this->gesperrt, FHC_BOOLEAN).
|
||||
" WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";";
|
||||
}
|
||||
|
||||
@@ -557,5 +559,43 @@ class pruefling extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function isGesperrt($pruefling_id = null, $prestudent_id = null)
|
||||
{
|
||||
if (is_null($pruefling_id) && is_null($prestudent_id))
|
||||
{
|
||||
$this->errormsg = 'Falsche Parameterübergabe';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT spruefling.gesperrt
|
||||
FROM testtool.tbl_pruefling
|
||||
RIGHT JOIN public.tbl_prestudent USING(prestudent_id)
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id
|
||||
JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id
|
||||
WHERE spruefling.gesperrt";
|
||||
|
||||
if (!is_null($pruefling_id))
|
||||
$qry .= " AND tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER);
|
||||
|
||||
if (!is_null($prestudent_id))
|
||||
$qry .= " AND tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER);
|
||||
|
||||
$qry .= " LIMIT 1";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) == 0)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Abfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -694,11 +694,17 @@ class reihungstest extends basis_db
|
||||
tbl_reihungstest.studiensemester_kurzbz,
|
||||
tbl_reihungstest.stufe,
|
||||
tbl_reihungstest.anmeldefrist,
|
||||
tbl_reihungstest.aufnahmegruppe_kurzbz
|
||||
tbl_reihungstest.aufnahmegruppe_kurzbz,
|
||||
tbl_studiengang.typ,
|
||||
UPPER(typ::varchar(1) || kurzbz) AS stg_kuerzel,
|
||||
so.studiengangbezeichnung,
|
||||
so.studiengangbezeichnung_englisch
|
||||
FROM
|
||||
public.tbl_rt_person
|
||||
JOIN
|
||||
public.tbl_reihungstest ON (rt_id=reihungstest_id)
|
||||
JOIN public.tbl_reihungstest ON (rt_id=reihungstest_id)
|
||||
JOIN public.tbl_studiengang ON tbl_reihungstest.studiengang_kz = tbl_studiengang.studiengang_kz
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE
|
||||
tbl_rt_person.person_id=".$this->db_add_param($person_id);
|
||||
|
||||
@@ -737,6 +743,10 @@ class reihungstest extends basis_db
|
||||
$obj->stufe = $row->stufe;
|
||||
$obj->anmeldefrist = $row->anmeldefrist;
|
||||
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->stg_kuerzel = $row->stg_kuerzel;
|
||||
$obj->studiengangbezeichnung = $row->studiengangbezeichnung;
|
||||
$obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
/* Copyright (C) 2011 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christopher Gerbrich <christopher.gerbrich@technikum-wien.at> and Manuela Thamer <manuela.thamer@technikum-wien.at
|
||||
*/
|
||||
/**
|
||||
* Klasse Studierendenantrag
|
||||
*
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class studierendenantrag extends basis_db
|
||||
{
|
||||
public $new;
|
||||
public $result = array();
|
||||
|
||||
//Tabellenspalten
|
||||
public $studierendenantrag_id; // bigint
|
||||
public $prestudent_id; // bigint
|
||||
public $studiensemester_kurzbz; // varchar(32)
|
||||
public $datum; // timestamp
|
||||
public $typ; // varchar(32)
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // varchar(32)
|
||||
public $datum_wiedereinstieg; // timestamp
|
||||
public $grund; // text
|
||||
public $dms_id; // bigint
|
||||
|
||||
/**
|
||||
* Konstruktor - Laedt optional eine Ampel
|
||||
* @param $amepl_id
|
||||
*/
|
||||
public function __construct($studierendenantrag_id=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if(!is_null($studierendenantrag_id))
|
||||
$this->load($studierendenantrag_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt einen Antrag mit der uebergebenen ID
|
||||
*
|
||||
* @param $studierendenantrag_id
|
||||
* @return boolean
|
||||
*/
|
||||
public function load($studierendenantrag_id)
|
||||
{
|
||||
if(!is_numeric($studierendenantrag_id))
|
||||
{
|
||||
$this->errormsg = 'Studierendenantrag ID ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT * FROM campus.tbl_studierendenantrag WHERE studierendenantrag_id=" . $this->db_add_param($studierendenantrag_id, FHC_INTEGER);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->studierendenantrag_id = $row->studierendenantrag_id;
|
||||
$this->prestudent_id = $row->prestudent_id;
|
||||
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$this->datum = $row->datum;
|
||||
$this->typ = $row->typ;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->datum_wiedereinstieg = $row->datum_wiedereinstieg;
|
||||
$this->grund = $row->grund;
|
||||
$this->dms_id = $row->dms_id;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Studierendenantrag mit dieser ID exisitert nicht';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Studierendenantrag';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle aktuellen Anträge eines Users
|
||||
*
|
||||
* @param integer $prestudent_id
|
||||
* @param string $stsem
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function loadUserAntrag($prestudent_id, $stsem = null)
|
||||
{
|
||||
$qry = "SELECT * FROM campus.tbl_studierendenantrag WHERE typ IN ('Abmeldung','AbmeldungStgl','Unterbrechung') AND campus.get_status_studierendenantrag(studierendenantrag_id)='Genehmigt' AND prestudent_id=" . $this->db_add_param($prestudent_id, FHC_INTEGER);
|
||||
|
||||
if ($stsem)
|
||||
{
|
||||
$qry .= " AND studiensemester_kurzbz=" . $this->db_add_param($stsem, FHC_STRING);
|
||||
}
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new studierendenantrag();
|
||||
|
||||
$obj->studierendenantrag_id = $row->studierendenantrag_id;
|
||||
$obj->prestudent_id = $row->prestudent_id;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->datum = $row->datum;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->datum_wiedereinstieg = $row->datum_wiedereinstieg;
|
||||
$obj->grund = $row->grund;
|
||||
$obj->dms_id = $row->dms_id;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -148,8 +148,11 @@ $this->phrasen['benotungstool/anzahlKommisionellePruefungen']='Anzahl kommission
|
||||
$this->phrasen['benotungstool/pruefungAnlegenFuer']='Prüfung anlegen für';
|
||||
$this->phrasen['benotungstool/kreuzerltool']='Kreuzerltool';
|
||||
$this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Der Student %s %s (%s) ist dieser Lehrveranstaltung nicht zugeordnet. Die Note wird nicht uebernommen!';
|
||||
$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student mit Matrikelnummer %s existiert nicht.';
|
||||
$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Für Student mit Matrikelnummer %s eingetragene Zeugnisote %s ist nicht überschreibbar';
|
||||
$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student*in mit Matrikelnummer %s existiert nicht.';
|
||||
$this->phrasen['benotungstool/datumsformatUnzulaessig']='Das Datum %s entspricht nicht dem Format TT.MM.JJJJ!';
|
||||
$this->phrasen['benotungstool/NachpruefungNichtZulaessig']='Nachprüfung für Student*in %s nicht zulässig.';
|
||||
$this->phrasen['benotungstool/noteUnzulaessig']='Die Note %s ist nicht zulaessig. Die Zeile wurde uebersprungen.';
|
||||
$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Für Student mit Matrikelnummer %s eingetragene Zeugnisnote %s ist nicht überschreibbar';
|
||||
$this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Fehlerhafte Note bei Student %s %s';
|
||||
$this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='Derzeit gibt es keine Kreuzerllisten für diese Lehrveranstaltung';
|
||||
$this->phrasen['benotungstool/notenuebersichtFuer']='Notenübersicht</a> für';
|
||||
@@ -170,7 +173,8 @@ $this->phrasen['benotungstool/eingetrageneNoten']='Eingetragene Noten';
|
||||
$this->phrasen['benotungstool/zeunis']='Zeugnis';
|
||||
$this->phrasen['benotungstool/handbuch']='Handbuch';
|
||||
$this->phrasen['benotungstool/punkte']='Punkte';
|
||||
$this->phrasen['benotungstool/importAnweisung']='Kopieren Sie die Spalten Personenkennzeichen und Note aus der Notenliste (bzw. StudentenUid und Note aus dem MoodleExport) und fügen Sie diese in folgendes Feld ein';
|
||||
$this->phrasen['benotungstool/importAnweisung']='Kopieren Sie die Spalten StudentenUid und Note aus der Notenliste (bzw. StudentenUid und Note aus dem MoodleExport) und fügen Sie diese in folgendes Feld ein';
|
||||
$this->phrasen['benotungstool/importAnweisungNachp']='Kopieren Sie die Spalten StudentenUid (bzw. Personenkennzeichen), Datum und Note aus der Notenliste bzw. dem Moodle Export File und fügen Sie diese in folgendes Feld ein';
|
||||
$this->phrasen['benotungstool/pruefung']='Prüfung';
|
||||
$this->phrasen['benotungstool/notenlisteImport']='Notenliste für den LV-Noten-Import (Excel)';
|
||||
$this->phrasen['benotungstool/bearbeitetvon']='Bearbeitet von';
|
||||
|
||||
@@ -211,6 +211,18 @@
|
||||
<!ENTITY menu-dokumente-diplsupplement.label "Diploma Supplement">
|
||||
<!ENTITY menu-dokumente-diplsupplement.accesskey "S">
|
||||
|
||||
<!ENTITY menu-dokumente-antrag.key "N">
|
||||
<!ENTITY menu-dokumente-antrag.label "Antrag">
|
||||
<!ENTITY menu-dokumente-antrag.accesskey "N">
|
||||
|
||||
<!ENTITY menu-dokumente-antrag-abmeldung.key "A">
|
||||
<!ENTITY menu-dokumente-antrag-abmeldung.label "Abmeldung">
|
||||
<!ENTITY menu-dokumente-antrag-abmeldung.accesskey "A">
|
||||
|
||||
<!ENTITY menu-dokumente-antrag-unterbrechung.key "U">
|
||||
<!ENTITY menu-dokumente-antrag-unterbrechung.label "Unterbrecher">
|
||||
<!ENTITY menu-dokumente-antrag-unterbrechung.accesskey "U">
|
||||
|
||||
<!ENTITY menu-dokumente-ausbildungsvertrag.key "A">
|
||||
<!ENTITY menu-dokumente-ausbildungsvertrag.label "Ausbildungsvertrag Deutsch">
|
||||
<!ENTITY menu-dokumente-ausbildungsvertrag.accesskey "A">
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$this->phrasen['global/studiengang']='Studiengang';
|
||||
$this->phrasen['studierendenantrag/antraege_header']='Änderungen des Studierendenstatus';
|
||||
$this->phrasen['studierendenantrag/title_Abmeldung']='Abmeldung';
|
||||
$this->phrasen['studierendenantrag/title_AbmeldungStgl']='Abmeldung';
|
||||
$this->phrasen['studierendenantrag/title_Unterbrechung']='Unterbrechung';
|
||||
?>
|
||||
@@ -148,6 +148,8 @@ $this->phrasen['benotungstool/pruefungAnlegenFuer']='Create an examination for '
|
||||
$this->phrasen['benotungstool/kreuzerltool']='"Kreuzerl" tool';
|
||||
$this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Student is not assigned to this course. The grade was not accepted!';
|
||||
$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student with student ID number %s does not exist.';
|
||||
$this->phrasen['benotungstool/NachpruefungNichtZulaessig']='Re-examination for student %s not allowed.';
|
||||
$this->phrasen['benotungstool/datumsformatUnzulaessig']='The date %s is not in valid format TT.MM.JJJJ.';
|
||||
$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Transcript grade %2$s for student with Personal identifier %1$s is not rewritable';
|
||||
$this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Incorrect grade for student %s %s';
|
||||
$this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='There are currently no checklists for this course';
|
||||
@@ -170,6 +172,7 @@ $this->phrasen['benotungstool/zeunis']='Transcript';
|
||||
$this->phrasen['benotungstool/handbuch']='Handbook';
|
||||
$this->phrasen['benotungstool/punkte']='Points';
|
||||
$this->phrasen['benotungstool/importAnweisung']='Copy the columns "personal identifier" and "grade" from the grade list (or "student ID number" and "grade" from the moodle export file) and insert them in the following field';
|
||||
$this->phrasen['benotungstool/importAnweisungNachp']='Copy the columns "student ID number" (or "personal identifier"), "date" and "grade" from the grade list or from the moodle export file and insert them in the following field';
|
||||
$this->phrasen['benotungstool/pruefung']='Examination';
|
||||
$this->phrasen['benotungstool/notenlisteImport']='Grade list for the subject grade import (Excel)';
|
||||
$this->phrasen['benotungstool/geaenderteNotenVorhanden']='There are changed grades. Please send the changes to the assistant by clicking "Approval"';
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$this->phrasen['global/studiengang']='Studiengang';
|
||||
$this->phrasen['studierendenantrag/antraege_header']='Changes of student status';
|
||||
$this->phrasen['studierendenantrag/title_Abmeldung']='De-registration';
|
||||
$this->phrasen['studierendenantrag/title_AbmeldungStgl']='De-registration';
|
||||
$this->phrasen['studierendenantrag/title_Unterbrechung']='Interruption';
|
||||
?>
|
||||
@@ -0,0 +1,83 @@
|
||||
.text-prewrap {
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
||||
.accordion-button-primary {
|
||||
background-color: #e7f1ff;
|
||||
color: #0c63e4;
|
||||
}
|
||||
.accordion-button-primary:not(.collapsed) {
|
||||
background-color: #cfe2ff;
|
||||
color: #0a58ca;
|
||||
}
|
||||
|
||||
.accordion-button-secondary {
|
||||
background-color: #f0f1f2;
|
||||
color: #616971;
|
||||
}
|
||||
.accordion-button-secondary:not(.collapsed) {
|
||||
background-color: #e2e3e5;
|
||||
color: #565e64;
|
||||
}
|
||||
|
||||
.accordion-button-success {
|
||||
background-color: #e8f3ee;
|
||||
color: #177a4c;
|
||||
}
|
||||
.accordion-button-success:not(.collapsed) {
|
||||
background-color: #d1e7dd;
|
||||
color: #146c43;
|
||||
}
|
||||
|
||||
.accordion-button-info {
|
||||
background-color: #e7fafe;
|
||||
color: #0cb6d8;
|
||||
}
|
||||
.accordion-button-info:not(.collapsed) {
|
||||
background-color: #cff4fc;
|
||||
color: #0aa2c0;
|
||||
}
|
||||
|
||||
.accordion-button-warning {
|
||||
background-color: #fff9e6;
|
||||
color: #e6ae06;
|
||||
}
|
||||
.accordion-button-warning:not(.collapsed) {
|
||||
background-color: #fff3cd;
|
||||
color: #cc9a06;
|
||||
}
|
||||
|
||||
.accordion-button-danger {
|
||||
background-color: #fcebec;
|
||||
color: #c6303e;
|
||||
}
|
||||
.accordion-button-danger:not(.collapsed) {
|
||||
background-color: #f8d7da;
|
||||
color: #b02a37;
|
||||
}
|
||||
|
||||
.accordion-button-light {
|
||||
background-color: #fefeff;
|
||||
color: #dfe0e1;
|
||||
}
|
||||
.accordion-button-light:not(.collapsed) {
|
||||
background-color: #fefefe;
|
||||
color: #c6c7c8;
|
||||
}
|
||||
|
||||
.accordion-button-dark {
|
||||
background-color: #e9e9ea;
|
||||
color: #1e2125;
|
||||
}
|
||||
.accordion-button-dark:not(.collapsed) {
|
||||
background-color: #d3d3d4;
|
||||
color: #1a1e21;
|
||||
}
|
||||
|
||||
.tabulator-edit-list .tabulator-edit-list-item {
|
||||
background-color: white;
|
||||
}
|
||||
.tabulator-edit-list .tabulator-edit-list-item:hover,
|
||||
.tabulator-edit-list .tabulator-edit-list-item.active {
|
||||
color: white;
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
:root {
|
||||
--bs-body-font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
--bs-body-font-size: 14px;
|
||||
--bs-body-line-height: 1.42857143;
|
||||
--bs-body-color: #333;
|
||||
}
|
||||
html {
|
||||
font-size: var(--bs-body-font-size);
|
||||
}
|
||||
|
||||
h1, .h1 {
|
||||
margin-top: 0;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
h2, .h2 {
|
||||
margin-top: 0;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
h3, .h3 {
|
||||
margin-top: 0;
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
h4, .h4 {
|
||||
margin-top: 0;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
h5, .h5 {
|
||||
margin-top: 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
h6, .h6 {
|
||||
margin-top: 0;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
.fhc-header {
|
||||
display: flex;
|
||||
justify-content: between;
|
||||
flex: wrap;
|
||||
align-items: center;
|
||||
padding: 20px 15px 19px;
|
||||
margin: 40px 0 20px;
|
||||
border-bottom: solid 1px #eee;
|
||||
}
|
||||
@media (min-width:768px) { /* NOTE(chris): size "md" from bs5 */
|
||||
.fhc-header {
|
||||
flex-wrap: nowrap!important;
|
||||
}
|
||||
}
|
||||
.fhc-header h1,
|
||||
.fhc-header h2 {
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.fhc-container {
|
||||
padding: 0 15px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator {
|
||||
font-size: var(--bs-body-font-size);
|
||||
}
|
||||
|
||||
.fhc-container .tabulator {
|
||||
border-left: 1px solid #dee2e6;
|
||||
}
|
||||
.fhc-container .tabulator .tabulator-row {
|
||||
border-bottom: none;
|
||||
}
|
||||
.fhc-container .tabulator .tabulator-row .tabulator-frozen,
|
||||
.fhc-container .tabulator .tabulator-row .tabulator-cell {
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
}
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-row-even {
|
||||
background-color: transparent;
|
||||
}
|
||||
.fhc-container .tabulator .tabulator-headers .tabulator-frozen,
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-row-odd .tabulator-frozen,
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-row-odd .tabulator-cell {
|
||||
background-color: #fff;
|
||||
}
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-row-even .tabulator-frozen,
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-row-even .tabulator-cell {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-selectable:hover .tabulator-frozen,
|
||||
.fhc-container .tabulator .tabulator-row.tabulator-selectable:hover .tabulator-cell {
|
||||
background-color: #ececec;
|
||||
}
|
||||
|
||||
.fhc-container .tabulator .tabulator-col,
|
||||
.fhc-container .tabulator .tabulator-cell {
|
||||
border-right: 1px solid #dee2e6;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
/* for removing horizontal scrollbar when form is embedded as i frame */
|
||||
#uhstat1Container {
|
||||
overflow-x:hidden;
|
||||
height: 100%;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import StudierendenantragAntrag from "../../components/Studierendenantrag/Antrag.js";
|
||||
import StudierendenantragStatus from "../../components/Studierendenantrag/Status.js";
|
||||
import StudierendenantragInfoblock from "../../components/Studierendenantrag/Infoblock.js";
|
||||
import VueDatePicker from "../../components/vueDatepicker.js.php";
|
||||
|
||||
const app = Vue.createApp({
|
||||
components: {
|
||||
VueDatePicker,
|
||||
StudierendenantragAntrag,
|
||||
StudierendenantragStatus,
|
||||
StudierendenantragInfoblock
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
statusMsg: "",
|
||||
statusSeverity: "",
|
||||
infoArray: []
|
||||
};
|
||||
}
|
||||
});
|
||||
app.mount('#wrapper');
|
||||
@@ -0,0 +1,8 @@
|
||||
import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js';
|
||||
|
||||
const app = Vue.createApp({
|
||||
components: {
|
||||
StudierendenantragLeitung
|
||||
}
|
||||
});
|
||||
app.use(primevue.config.default,{zIndex: {overlay: 9999}}).mount('#wrapper');
|
||||
@@ -0,0 +1,13 @@
|
||||
import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';
|
||||
|
||||
const app = Vue.createApp({
|
||||
components: {
|
||||
LvZuweisung
|
||||
},
|
||||
computed: {
|
||||
notinframe() {
|
||||
return window.self === window.top;
|
||||
}
|
||||
}
|
||||
});
|
||||
app.mount('#wrapper');
|
||||
@@ -0,0 +1,8 @@
|
||||
import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js';
|
||||
|
||||
const app = Vue.createApp({
|
||||
components: {
|
||||
LvPopup
|
||||
}
|
||||
});
|
||||
app.mount('#wrapper');
|
||||
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* javascript file for UHSTAT1 GUI
|
||||
*/
|
||||
$(document).ready(function ()
|
||||
{
|
||||
window.setTimeout(function() {
|
||||
$("#uhstat_success_alert").fadeTo(500, 0).slideUp(500, function(){
|
||||
$(this).remove();
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
@@ -0,0 +1,44 @@
|
||||
import BsModal from './Modal.js';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
BsModal
|
||||
},
|
||||
mixins: [
|
||||
BsModal
|
||||
],
|
||||
props: {
|
||||
dialogClass: {
|
||||
type: [String,Array,Object],
|
||||
default: 'modal-dialog-centered'
|
||||
},
|
||||
/*
|
||||
* NOTE(chris):
|
||||
* Hack to expose in "emits" declared events to $props which we use
|
||||
* in the v-bind directive to forward all events.
|
||||
* @see: https://github.com/vuejs/core/issues/3432
|
||||
*/
|
||||
onHideBsModal: Function,
|
||||
onHiddenBsModal: Function,
|
||||
onHidePreventedBsModal: Function,
|
||||
onShowBsModal: Function,
|
||||
onShownBsModal: Function
|
||||
},
|
||||
data: () => ({
|
||||
result: true
|
||||
}),
|
||||
mounted() {
|
||||
this.modal = this.$refs.modalContainer.modal;
|
||||
},
|
||||
popup(msg, options) {
|
||||
return BsModal.popup.bind(this)(msg, options);
|
||||
},
|
||||
template: `<bs-modal ref="modalContainer" class="bootstrap-alert" v-bind="$props">
|
||||
<template v-slot:default>
|
||||
<slot></slot>
|
||||
</template>
|
||||
<template v-slot:footer>
|
||||
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">OK</button>
|
||||
</template>
|
||||
</bs-modal>`
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import BsAlert from './Alert';
|
||||
|
||||
export default {
|
||||
mixins: [
|
||||
BsAlert
|
||||
],
|
||||
data: () => ({
|
||||
result: false
|
||||
}),
|
||||
popup(msg, options) {
|
||||
return BsAlert.popup.bind(this)(msg, options);
|
||||
},
|
||||
template: `<bs-modal ref="modalContainer" class="bootstrap-confirm" v-bind="$props">
|
||||
<template v-slot:default>
|
||||
<slot></slot>
|
||||
</template>
|
||||
<template v-slot:footer>
|
||||
<button type="button" class="btn btn-primary" @click="result=true;this.hide()">OK</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
|
||||
</template>
|
||||
</bs-modal>`
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user