mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Created Anrechnungen Students GUI, Controller, DB-tables, library, phrases
Signed-off-by: cris-technikum <hainberg@technikum-wien.at>
This commit is contained in:
@@ -0,0 +1,302 @@
|
||||
<?php
|
||||
|
||||
//if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class requestAnrechnung extends Auth_Controller
|
||||
{
|
||||
const REQUEST_ANRECHNUNG_URI = '/lehre/anrechnung/RequestAnrechnung';
|
||||
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP';
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_KF = 'inProgressKF';
|
||||
const ANRECHNUNGSTATUS_APPROVED = 'approved';
|
||||
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
|
||||
|
||||
const DEADLINE_INTERVAL_NACH_SEMESTERSTART = 'P1M'; // Deadline for application
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// Set required permissions
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'student/anrechnung_beantragen:rw',
|
||||
'apply' => 'student/anrechnung_beantragen:rw',
|
||||
'download' => 'student/anrechnung_beantragen:rw',
|
||||
)
|
||||
);
|
||||
|
||||
// Load models
|
||||
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
|
||||
$this->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
|
||||
// Load libraries
|
||||
$this->load->library('WidgetLib');
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('AnrechnungLib');
|
||||
$this->load->library('DmsLib');
|
||||
|
||||
// Load helpers
|
||||
$this->load->helper('form');
|
||||
$this->load->helper('url');
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'global',
|
||||
'ui',
|
||||
'anrechnung',
|
||||
'person',
|
||||
'lehre'
|
||||
)
|
||||
);
|
||||
|
||||
$this->_setAuthUID();
|
||||
|
||||
$this->setControllerId();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$studiensemester_kurzbz = $this->input->get('studiensemester');
|
||||
$lehrveranstaltung_id = $this->input->get('lv_id');
|
||||
|
||||
if (!is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz))
|
||||
{
|
||||
show_error('Missing correct parameter');
|
||||
}
|
||||
|
||||
// Check if application deadline is expired
|
||||
// $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz);
|
||||
$is_expired = false; // Set to false until Deadline is defined
|
||||
|
||||
// Get Anrechung data
|
||||
$result = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id);
|
||||
if (!$anrechnungData = getData($result))
|
||||
{
|
||||
show_error(getError($anrechnungData));
|
||||
}
|
||||
|
||||
// Overwrite progress status for student view. If no Anrechnung exists yet, set to new.
|
||||
$anrechnungData->status = empty($anrechnungData->status)
|
||||
? getUserLanguage() == 'German' ? 'neu' : 'new'
|
||||
: $this->_getLastAnrechnungstatus($anrechnungData->anrechnung_id);
|
||||
|
||||
$viewData = array(
|
||||
'antragData' => $this->anrechnunglib->getAntragData($this->_uid, $studiensemester_kurzbz, $lehrveranstaltung_id),
|
||||
'anrechnungData' => $anrechnungData,
|
||||
'is_expired' => $is_expired,
|
||||
'disabled' => $is_expired && empty($anrechnungData->anrechnung_id) || !empty($anrechnungData->anrechnung_id)
|
||||
? 'disabled'
|
||||
: ''
|
||||
);
|
||||
|
||||
$this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData);
|
||||
}
|
||||
|
||||
public function apply()
|
||||
{
|
||||
$anmerkung = $this->input->post('anmerkung');
|
||||
$begruendung_id = $this->input->post('begruendung');
|
||||
$lehrveranstaltung_id = $this->input->post('lv_id');
|
||||
$studiensemester_kurzbz = $this->input->post('studiensemester');
|
||||
|
||||
if (empty($_FILES['uploadfile']['name']))
|
||||
{
|
||||
show_error('Missing upload file');
|
||||
}
|
||||
|
||||
if (!is_numeric($begruendung_id) || !is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz))
|
||||
{
|
||||
show_error('Missing correct parameter');
|
||||
}
|
||||
|
||||
$result = $this->_getAnrechnung($lehrveranstaltung_id);
|
||||
if (hasData($result))
|
||||
{
|
||||
show_error('Der Antrag wurde bereits gestellt');
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
$this->db->trans_start(false);
|
||||
|
||||
// Upload document
|
||||
$dms = array(
|
||||
'kategorie_kurzbz' => 'anrechnung',
|
||||
'version' => 0,
|
||||
'name' => $_FILES['uploadfile']['name'],
|
||||
'mimetype' => $_FILES['uploadfile']['type'],
|
||||
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'insertvon' => $this->_uid
|
||||
);
|
||||
|
||||
if(isError($uploaddata = $this->dmslib->upload($dms, array('jpg', 'pdf'))))
|
||||
{
|
||||
show_error(getError($uploaddata));
|
||||
}
|
||||
|
||||
// Get PrestudentID
|
||||
$result = $this->_loadPrestudent($this->_uid, $studiensemester_kurzbz);
|
||||
|
||||
if (!$prestudent = getData($result)[0])
|
||||
{
|
||||
show_error('Failed retrieving prestudent');
|
||||
}
|
||||
|
||||
// Save Anrechnung with Status 'inProgressSTGL'
|
||||
$result = $this->AnrechnungModel->insert(array(
|
||||
'prestudent_id' => $prestudent->prestudent_id,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'begruendung_id' => $begruendung_id,
|
||||
'dms_id' => $uploaddata->retval['dms_id'],
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'anmerkung_student' => $anmerkung
|
||||
));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error('Failed inserting Anrechnung');
|
||||
}
|
||||
|
||||
$result = $this->AnrechnungModel->saveAnrechnungstatus($result->retval, self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error('Failed saving Anrechnungstatus');
|
||||
}
|
||||
|
||||
// Transaction complete!
|
||||
$this->db->trans_complete();
|
||||
|
||||
if ($this->db->trans_status() === false || isError($result))
|
||||
{
|
||||
$this->db->trans_rollback();
|
||||
show_error($result->msg, EXIT_ERROR);
|
||||
}
|
||||
|
||||
// Send mail to STGL
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$studiengang = $this->StudiengangModel->load($prestudent->studiengang_kz);
|
||||
|
||||
// Send mail
|
||||
$this->load->library('MailLib');
|
||||
if(!$this->maillib->send(
|
||||
"noreply@". DOMAIN,
|
||||
$studiengang->retval[0]->email,
|
||||
'Neuer LV-Anrechnungsantrag',
|
||||
'Eine neuer LV Anrechnungsantrag steht zur Prüfung bereit.'))
|
||||
{
|
||||
show_error('Failed sending email to STGL');
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect(site_url(). self::REQUEST_ANRECHNUNG_URI. '?studiensemester='. $studiensemester_kurzbz. '&lv_id='. $lehrveranstaltung_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Download and open uploaded document (Nachweisdokument).
|
||||
*/
|
||||
public function download()
|
||||
{
|
||||
$dms_id = $this->input->get('dms_id');
|
||||
|
||||
if (!is_numeric($dms_id))
|
||||
{
|
||||
show_error('Wrong parameter');
|
||||
}
|
||||
|
||||
$this->dmslib->download($dms_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the UID of the logged user and checks if it is valid
|
||||
*/
|
||||
private function _setAuthUID()
|
||||
{
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
if (!$this->_uid) show_error('User authentification failed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Load Prestudent by uid and Studiensemester.
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return mixed
|
||||
*/
|
||||
private function _loadPrestudent($uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
|
||||
$this->PrestudentstatusModel->addJoin('public.tbl_student', 'prestudent_id');
|
||||
return $this->PrestudentstatusModel->loadWhere(array(
|
||||
'student_uid' => $uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if application deadline is expired.
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return bool True if semester start is more then 1 week ago
|
||||
* @throws Exception
|
||||
*/
|
||||
private function _checkAntragDeadline($studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->StudiensemesterModel->addSelect('start');
|
||||
if (!$start = getData($this->StudiensemesterModel->load($studiensemester_kurzbz)))
|
||||
{
|
||||
show_error(getError($start));
|
||||
}
|
||||
|
||||
$start = new DateTime($start[0]->start);
|
||||
$today = new DateTime('today midnight');
|
||||
|
||||
// True if today > application deadline
|
||||
return ($today > $start->add((new DateInterval(self::DEADLINE_INTERVAL_NACH_SEMESTERSTART))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Anrechnung by Lehrveranstaltung
|
||||
* @param $lehrveranstaltung_id
|
||||
* @return mixed
|
||||
*/
|
||||
private function _getAnrechnung($lehrveranstaltung_id)
|
||||
{
|
||||
$result = $this->AnrechnungModel->loadWhere(array(
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id
|
||||
));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get last Anrechnungstatus. Modify progress status for student view.
|
||||
* @param $anrechnung_id
|
||||
* @return string
|
||||
*/
|
||||
private function _getLastAnrechnungstatus($anrechnung_id)
|
||||
{
|
||||
$result = $this->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id);
|
||||
$status_kurzbz = getData($result)[0]->status_kurzbz;
|
||||
|
||||
// Dont show who is progressing the application
|
||||
if ($status_kurzbz == 'inProgressDP' || $status_kurzbz == 'inProgressKF')
|
||||
{
|
||||
return getUserLanguage() == 'German' ? 'in Bearbeitung' : 'in process';
|
||||
}
|
||||
else
|
||||
{
|
||||
$status_mehrsprachig = getData($result)[0]->bezeichnung_mehrsprachig;
|
||||
return getUserLanguage() == 'German' ? $status_mehrsprachig[0] : $status_mehrsprachig[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class AnrechnungLib
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci =& get_instance();
|
||||
|
||||
$this->ci->load->model('education/Anrechnung_model', 'AnrechnungModel');
|
||||
$this->ci->load->model('person/Person_model', 'PersonModel');
|
||||
$this->ci->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Antrag data
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $lv_id
|
||||
* @return StdClass
|
||||
*/
|
||||
public function getAntragData($uid, $studiensemester_kurzbz, $lv_id)
|
||||
{
|
||||
$antrag_data = new StdClass();
|
||||
|
||||
// Get lehrveranstaltung data. Break, if course is not assigned to student.
|
||||
if(!$lv = getData($this->ci->LehrveranstaltungModel->getLvByStudent($uid, $studiensemester_kurzbz, $lv_id))[0])
|
||||
{
|
||||
show_error('You are not assigned to this course yet.');
|
||||
}
|
||||
|
||||
// Get the students personal data
|
||||
if (!$person = getData($this->ci->PersonModel->getByUid($uid))[0])
|
||||
{
|
||||
show_error('Failed loading person data.');
|
||||
}
|
||||
|
||||
// Get studiengang bezeichnung
|
||||
if (!$studiengang = getData($this->ci->StudiengangModel->load($lv->studiengang_kz))[0])
|
||||
{
|
||||
show_error('Failed loading studiengang data.');
|
||||
}
|
||||
|
||||
// Get lectors of lehrveranstaltung
|
||||
$antrag_data->lektoren = array();
|
||||
if (!$lv_lektoren = getData($this->ci->LehrveranstaltungModel->getLecturersByLv($studiensemester_kurzbz, $lv_id)))
|
||||
{
|
||||
show_error('Failed loading course lectors.');
|
||||
}
|
||||
|
||||
// Set the given studiensemester
|
||||
$antrag_data->lv_id = $lv_id;
|
||||
$antrag_data->lv_bezeichnung = $lv->bezeichnung;
|
||||
$antrag_data->ects = $lv->ects;
|
||||
$antrag_data->studiensemester_kurzbz = $studiensemester_kurzbz;
|
||||
$antrag_data->vorname = $person->vorname;
|
||||
$antrag_data->nachname = $person->nachname;
|
||||
// $antrag_data->bpk = $person->bpk;
|
||||
$antrag_data->bpk = $person->matr_nr;
|
||||
$antrag_data->stg_bezeichnung = $studiengang->bezeichnung;
|
||||
$antrag_data->lektoren = $lv_lektoren;
|
||||
|
||||
return $antrag_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Anrechnung data, last status and Nachweisdokument dms data.
|
||||
* @param $anrechnung_id
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getAnrechnungData($anrechnung_id)
|
||||
{
|
||||
if (!is_numeric($anrechnung_id))
|
||||
{
|
||||
show_error('Incorrect parameter');
|
||||
}
|
||||
|
||||
$anrechnung_data = new StdClass();
|
||||
|
||||
$result = $this->ci->AnrechnungModel->load($anrechnung_id);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
if ($anrechnung = getData($result)[0])
|
||||
{
|
||||
$anrechnung_data = $this->_setAnrechnungDataObject($anrechnung);
|
||||
}
|
||||
|
||||
return success($anrechnung_data);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Anrechnung data by Lehrveranstaltung. Also retrieves last status and Nachweisdokument dms data.
|
||||
* @param $lehrveranstaltung_id
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getAnrechnungDataByLv($lehrveranstaltung_id)
|
||||
{
|
||||
$anrechnung_data = new StdClass();
|
||||
$anrechnung_data->anrechnung_id = '';
|
||||
$anrechnung_data->begruendung_id = '';
|
||||
$anrechnung_data->anmerkung = '';
|
||||
$anrechnung_data->dms_id = '';
|
||||
$anrechnung_data->insertamum = '';
|
||||
$anrechnung_data->insertvon = '';
|
||||
$anrechnung_data->studiensemester_kurzbz = '';
|
||||
$anrechnung_data->empfehlung = '';
|
||||
$anrechnung_data->status = '';
|
||||
$anrechnung_data->dokumentname = '';
|
||||
|
||||
$result = $this->ci->AnrechnungModel->loadWhere(array('lehrveranstaltung_id' => $lehrveranstaltung_id));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
if ($anrechnung = getData($result)[0])
|
||||
{
|
||||
$anrechnung_data = $this->_setAnrechnungDataObject($anrechnung);
|
||||
}
|
||||
|
||||
return success($anrechnung_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $anrechnung_id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getLastAnrechnungstatus($anrechnung_id)
|
||||
{
|
||||
$result = $this->ci->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id);
|
||||
|
||||
$status_mehrsprachig = getData($result)[0]->bezeichnung_mehrsprachig;
|
||||
$status = getUserLanguage() == 'German' ? $status_mehrsprachig[0] : $status_mehrsprachig[1];
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
private function _setAnrechnungDataObject($anrechnung)
|
||||
{
|
||||
$anrechnung_data = new StdClass();
|
||||
|
||||
// Get Anrechnung data
|
||||
$anrechnung_data->anrechnung_id = $anrechnung->anrechnung_id;
|
||||
$anrechnung_data->begruendung_id = $anrechnung->begruendung_id;
|
||||
$anrechnung_data->anmerkung = $anrechnung->anmerkung_student;
|
||||
$anrechnung_data->dms_id = $anrechnung->dms_id;
|
||||
$anrechnung_data->insertamum = (new DateTime($anrechnung->insertamum))->format('d.m.Y');
|
||||
$anrechnung_data->insertvon= $anrechnung->insertvon;
|
||||
$anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz;
|
||||
$anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung;
|
||||
|
||||
// Get last status bezeichnung in the users language
|
||||
$anrechnung_data->status = $this->getLastAnrechnungstatus($anrechnung->anrechnung_id);
|
||||
|
||||
// Get document name
|
||||
$this->ci->DmsVersionModel->addSelect('name');
|
||||
$result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $anrechnung->dms_id));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
$anrechnung_data->dokumentname = $result->retval[0]->name;
|
||||
|
||||
return $anrechnung_data;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,10 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
class DmsLib
|
||||
{
|
||||
const FILE_CONTENT_PROPERTY = 'file_content';
|
||||
|
||||
|
||||
const FILE_INPUT_NAME = 'uploadfile'; // name of the HTML input tag containing the uploaded file
|
||||
private $UPLOAD_PATH = DMS_PATH; // temporary directory to store the upload file
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
@@ -92,6 +95,84 @@ class DmsLib
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads a document and saves it to DMS
|
||||
* @param $dms DMS assoc array
|
||||
* @param array $allowed_types Default: all. Param example: array(jpg, pdf)
|
||||
* @return array
|
||||
*/
|
||||
public function upload($dms, $allowed_types = array('*'))
|
||||
{
|
||||
// Init upload configs
|
||||
$this->_loadUploadLibrary($allowed_types);
|
||||
|
||||
if (!$this->ci->upload->do_upload(DmsLib::FILE_INPUT_NAME))
|
||||
{
|
||||
return error($this->ci->upload->display_errors());
|
||||
}
|
||||
|
||||
$upload_data = $this->ci->upload->data(); // data about the uploaded file
|
||||
$filename = $upload_data['file_name'];
|
||||
|
||||
// Insert to DMS table
|
||||
if (!$result = $this->ci->DmsModel->insert($this->ci->DmsModel->filterFields($dms)))
|
||||
{
|
||||
return error('Failed inserting to DMS');
|
||||
}
|
||||
$upload_data['dms_id'] = $result->retval;
|
||||
|
||||
// Insert DMS version
|
||||
if (!$result = $this->ci->DmsVersionModel->insert(
|
||||
$this->ci->DmsVersionModel->filterFields($dms, $result->retval, $filename)))
|
||||
{
|
||||
return error('Failed inserting DMS version');
|
||||
}
|
||||
|
||||
// return result of uploaded data
|
||||
return success($upload_data); // data about the uploaded file
|
||||
}
|
||||
|
||||
/**
|
||||
* Download a document
|
||||
* @param $dms_id
|
||||
*/
|
||||
public function download($dms_id)
|
||||
{
|
||||
if (!is_numeric($dms_id))
|
||||
{
|
||||
show_error('Wrong parameter');
|
||||
}
|
||||
|
||||
$this->ci->DmsVersionModel->addSelect('filename');
|
||||
$result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $dms_id));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
$filename = $result->retval[0]->filename;
|
||||
$file = DMS_PATH. $filename;
|
||||
|
||||
if (file_exists($file))
|
||||
{
|
||||
$finfo = new finfo(FILEINFO_MIME);
|
||||
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: '.$finfo->file($file));
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($file));
|
||||
readfile($file);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error('File does not exist');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a Document
|
||||
@@ -302,4 +383,17 @@ class DmsLib
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the upload library of CI
|
||||
*/
|
||||
private function _loadUploadLibrary($allowed_types)
|
||||
{
|
||||
$config['upload_path'] = $this->UPLOAD_PATH;
|
||||
$config['allowed_types'] = implode('|', $allowed_types);
|
||||
$config['overwrite'] = true;
|
||||
|
||||
$this->ci->load->library('upload', $config);
|
||||
$this->ci->upload->initialize($config);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,40 @@ class Anrechnung_model extends DB_Model
|
||||
$this->dbTable = 'lehre.tbl_anrechnung';
|
||||
$this->pk = 'anrechnung_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Save Anrechnungstatus.
|
||||
* @param $anrechnung_id
|
||||
* @param $status_kurzbz
|
||||
* @return array|null
|
||||
*/
|
||||
public function saveAnrechnungstatus($anrechnung_id, $status_kurzbz)
|
||||
{
|
||||
$qry = '
|
||||
INSERT INTO lehre.tbl_anrechnung_anrechnungstatus (
|
||||
anrechnung_id, status_kurzbz, insertvon
|
||||
) VALUES ( ?, ?, ?);
|
||||
';
|
||||
|
||||
return $this->execQuery($qry, array($anrechnung_id, $status_kurzbz, getAuthUID()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the last inserted Anrechnungstatus
|
||||
* @param $anrechnung_id
|
||||
* @return array|null
|
||||
*/
|
||||
public function getLastAnrechnungstatus($anrechnung_id)
|
||||
{
|
||||
$qry = '
|
||||
SELECT status_kurzbz, bezeichnung_mehrsprachig
|
||||
FROM lehre.tbl_anrechnungstatus
|
||||
JOIN lehre.tbl_anrechnung_anrechnungstatus USING (status_kurzbz)
|
||||
WHERE anrechnung_id = ?
|
||||
ORDER BY insertamum DESC
|
||||
LIMIT 1
|
||||
';
|
||||
|
||||
return $this->execQuery($qry, array($anrechnung_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Anrechnungstatus_model extends DB_Model
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'lehre.tbl_anrechnungstatus';
|
||||
$this->pk = 'status_kurzbz';
|
||||
}
|
||||
}
|
||||
@@ -273,4 +273,24 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, $parametersarray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Lehrveranstaltung and its Lehreinheiten (multiple rows possible).
|
||||
* Returns empty array if student has no Lehrveranstaltung.
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $lehrveranstaltung_id
|
||||
* @return array|null
|
||||
*/
|
||||
public function getLvByStudent($uid, $studiensemester_kurzbz, $lehrveranstaltung_id)
|
||||
{
|
||||
$query = '
|
||||
SELECT * FROM campus.vw_student_lehrveranstaltung
|
||||
WHERE uid = ?
|
||||
AND studiensemester_kurzbz = ?
|
||||
AND lehrveranstaltung_id = ?;
|
||||
';
|
||||
|
||||
return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ class Person_model extends DB_Model
|
||||
*/
|
||||
public function getByUid($uid)
|
||||
{
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id');
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id, bpk, matr_nr');
|
||||
$this->addJoin('tbl_benutzer', 'person_id');
|
||||
|
||||
return $this->loadWhere(array('uid' => $uid));
|
||||
|
||||
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => $this->p->t('anrechnung', 'antragStellen'),
|
||||
'jquery' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'ajaxlib' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'anerkennungNachgewiesenerKenntnisse',
|
||||
'antragStellen'
|
||||
),
|
||||
'ui' => array(
|
||||
'hilfeZuDieserSeite',
|
||||
'hochladen'
|
||||
),
|
||||
'person' => array(
|
||||
'student',
|
||||
'personenkennzeichen'
|
||||
),
|
||||
'lehre' => array(
|
||||
'studiensemester',
|
||||
'studiengang',
|
||||
'lehrveranstaltung',
|
||||
'ects',
|
||||
'lektor',
|
||||
)
|
||||
),
|
||||
'customJSs' => array(
|
||||
'public/js/bootstrapper.js'
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- title -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 page-header">
|
||||
<h3>
|
||||
<?php echo $this->p->t('anrechnung', 'anerkennungNachgewiesenerKenntnisse'); ?>
|
||||
<small>| <?php echo $this->p->t('anrechnung', 'antragStellen'); ?></small>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php echo form_open_multipart(current_url(). '/apply',
|
||||
['id' => 'requestAnrechnung-form'],
|
||||
['lv_id' => $antragData->lv_id, 'studiensemester' => $antragData->studiensemester_kurzbz]
|
||||
); ?>
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<!-- Antragsdaten, Dokument Upload, Notiz-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span id="requestAnrechnung-status"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<table class="panel-body table table-bordered table-condensed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('person', 'student'); ?></td>
|
||||
<td><?php echo $antragData->vorname. ' '. $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('person', 'personenkennzeichen'); ?></td>
|
||||
<td><?php echo $antragData->bpk ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'studiensemester'); ?></td>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'studiengang'); ?></td>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></td>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'ects'); ?></td>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lektor'); ?></td>
|
||||
<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>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Antrag mit Checkboxen -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="well" style="border:solid black 2px">
|
||||
<p><?php echo $this->p->t('anrechnung', 'antragStellenText'); ?></p>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="radio" name="begruendung" value="1" required
|
||||
<?php echo $anrechnungData->begruendung_id == '1' ? 'checked' : ''; ?>
|
||||
<?php echo $disabled; ?>>
|
||||
<?php echo $this->p->t('anrechnung', 'antragStellenWegenZeugnis'); ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="radio" name="begruendung" value="4" required
|
||||
<?php echo $anrechnungData->begruendung_id == '4' ? 'checked' : ''; ?>
|
||||
<?php echo $disabled; ?>>
|
||||
<?php echo $this->p->t('anrechnung', 'antragStellenWegenPraxis'); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Dokument Upload-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?>
|
||||
</div>
|
||||
<div class="form-inline panel-body">
|
||||
<div class="form-group">
|
||||
<input type="file" id="requestAnrechnung-uploadfile" name="uploadfile" accept=".pdf,.jpg" size="50" required <?php echo $disabled; ?>>
|
||||
</div>
|
||||
<?php if(!empty($anrechnungData->dms_id)): ?>
|
||||
<a class="pull-right" href="<?php echo current_url(). '/download?dms_id='. $anrechnungData->dms_id; ?>" target="_blank"><?php echo $anrechnungData->dokumentname ?></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Notiz -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<?php echo $this->p->t('anrechnung', 'weitereInformationen'); ?>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control" name="anmerkung" rows="3" <?php echo $disabled; ?>><?php echo $anrechnungData->anmerkung; ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class ="col-xs-4">
|
||||
<div class="panel panel-default panel-heading text-center">
|
||||
Status: <span class="text-uppercase"><small><b><?php echo $anrechnungData->status; ?></b></small></span>
|
||||
</div>
|
||||
<?php if ($is_expired): ?>
|
||||
<div class="alert alert-warning">
|
||||
<?php echo $this->p->t('global', 'bearbeitungGesperrt'); ?>
|
||||
<?php echo $is_expired && empty($antragData->anrechnung_id)? ': '. $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Submit button 'Anrechnung beantragen'-->
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="submit" id="requestAnrechnung-submit" class="btn btn-primary pull-right"
|
||||
value="<?php echo $this->p->t('anrechnung', 'anrechnungBeantragen'); ?>" <?php echo $disabled; ?>>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo form_close();?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -26,6 +26,7 @@ define('CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN',true);
|
||||
define('CIS_LEHRVERANSTALTUNG_SEMESTERINFO_ANZEIGEN',true);
|
||||
define('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN',false);
|
||||
define('CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN', true);
|
||||
define('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN', true);
|
||||
|
||||
// Im CIS Menue Links bei Modulen anzeigen wenn Lehrauftrag
|
||||
define('CIS_LEHRVERANSTALTUNG_MODULE_LINK',true);
|
||||
|
||||
@@ -421,7 +421,6 @@ function checkZeilenUmbruch()
|
||||
'link'=>'../../../cms/news.php?studiengang_kz='.urlencode($studiengang_kz).'&semester='.urlencode($semester),
|
||||
'text'=>$text
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if(!defined('CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN)
|
||||
@@ -466,6 +465,20 @@ function checkZeilenUmbruch()
|
||||
}
|
||||
}
|
||||
|
||||
// Anerkennung nachgewiesener Kenntnisse (Anrechnung)
|
||||
if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN)
|
||||
&& $rechte->isBerechtigt('student/anrechnung_beantragen'))
|
||||
{
|
||||
$menu[]=array
|
||||
(
|
||||
'id'=>'core_menu_anerkennungNachgewiesenerKenntnisse',
|
||||
'position'=>'128',
|
||||
'name'=>$p->t('lehre/anerkennungNachgewiesenerKenntnisse'),
|
||||
'icon'=>'../../../skin/images/button_kreuzerltool.png',
|
||||
'link' => APP_ROOT. 'index.ci.php/lehre/anrechnung/RequestAnrechnung?studiensemester='.urlencode($angezeigtes_stsem).'&lv_id='.urlencode($lvid)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//************* Menuepunkte anzeigen ****************
|
||||
|
||||
|
||||
@@ -40,4 +40,5 @@ $this->phrasen['lehre/nichtzugeteilt']='Sie sind nicht zu dieser Lehrveranstaltu
|
||||
$this->phrasen['lehre/studienordnung']='Studienordnung';
|
||||
$this->phrasen['lehre/studienplan']='Studienplan';
|
||||
$this->phrasen['lehre/noteneingabedeaktiviert']='Noteneingabe deaktiviert';
|
||||
$this->phrasen['lehre/anerkennungNachgewiesenerKenntnisse']='Anerkennung nachgewiesener Kenntnisse';
|
||||
?>
|
||||
|
||||
@@ -40,4 +40,6 @@ $this->phrasen['lehre/nichtzugeteilt']='Sie sind nicht zu dieser Lehrveranstaltu
|
||||
$this->phrasen['lehre/studienordnung']='Studienordnung';
|
||||
$this->phrasen['lehre/studienplan']='Studienplan';
|
||||
$this->phrasen['lehre/noteneingabedeaktiviert']='Grading disabled';
|
||||
$this->phrasen['lehre/anerkennungNachgewiesenerKenntnisse']='Crediting for proven knowledge';
|
||||
|
||||
?>
|
||||
|
||||
+173
-1
@@ -4465,6 +4465,176 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE
|
||||
}
|
||||
}
|
||||
|
||||
// Add column dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung
|
||||
// Change genehmigt_von and begruendung_id to be NULLABLE
|
||||
if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung"))
|
||||
{
|
||||
$qry = "
|
||||
ALTER TABLE lehre.tbl_anrechnung ADD COLUMN dms_id bigint;
|
||||
ALTER TABLE lehre.tbl_anrechnung ADD COLUMN studiensemester_kurzbz varchar(6);
|
||||
ALTER TABLE lehre.tbl_anrechnung ADD COLUMN anmerkung_student text;
|
||||
ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean;
|
||||
|
||||
ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms(dms_id) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN genehmigt_von DROP NOT NULL;
|
||||
ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL;
|
||||
ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN insertamum SET DEFAULT NOW();
|
||||
";
|
||||
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_anrechnung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>lehre.tbl_anrechnung: Neue Spalten dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung hinzugefuegt. Not null constraint entfernt für genehmigt_von und begruendung_id';
|
||||
}
|
||||
|
||||
// Add DMS category "anrechnung"
|
||||
if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz = 'anrechnung';"))
|
||||
{
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO campus.tbl_dms_kategorie (
|
||||
kategorie_kurzbz,
|
||||
bezeichnung,
|
||||
beschreibung,
|
||||
parent_kategorie_kurzbz,
|
||||
oe_kurzbz,
|
||||
berechtigung_kurzbz
|
||||
) VALUES(
|
||||
'anrechnung',
|
||||
'Anrechnung',
|
||||
'Dokumente zur Anrechnung von Lehrveranstaltungen',
|
||||
'studium',
|
||||
'etw',
|
||||
NULL
|
||||
);";
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_dms_kategorie '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' campus.tbl_dms_kategorie: Added category "anrechnung"!<br>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Add DMS category permissiongroup for DMS category "anrechnung"
|
||||
if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie_gruppe WHERE kategorie_kurzbz = 'anrechnung';"))
|
||||
{
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO campus.tbl_dms_kategorie_gruppe (
|
||||
kategorie_kurzbz,
|
||||
gruppe_kurzbz,
|
||||
insertamum,
|
||||
insertvon
|
||||
) VALUES(
|
||||
'anrechnung',
|
||||
'CMS_LOCK',
|
||||
NOW(),
|
||||
'dbcheck'
|
||||
);";
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_dms_kategorie_gruppe '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' campus.tbl_dms_kategorie_gruppe: Added category group "CMS_LOCK" to category "anrechnung"!<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add table anrechnung_status
|
||||
if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;"))
|
||||
{
|
||||
$qry = "
|
||||
CREATE TABLE lehre.tbl_anrechnungstatus
|
||||
(
|
||||
status_kurzbz varchar(32) NOT NULL,
|
||||
bezeichnung_mehrsprachig varchar(64)[]
|
||||
);
|
||||
|
||||
ALTER TABLE lehre.tbl_anrechnungstatus ADD CONSTRAINT pk_anrechnungstatus PRIMARY KEY (status_kurzbz);
|
||||
|
||||
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('inProgressDP', '{\'bearbeitet von STG-Leitung\',\'processed by STG-Director\'}');
|
||||
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('inProgressKF', '{\'bearbeitet von KF-Leitung\',\'processed by KF-Manager\'}');
|
||||
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('approved', '{\'genehmigt\',\'approved\'}');
|
||||
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('rejected', '{\'abgelehnt\',\'rejected\'}');
|
||||
|
||||
GRANT SELECT ON lehre.tbl_anrechnungstatus TO web;
|
||||
GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnungstatus TO vilesci;
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_anrechnungstatus: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' lehre.tbl_anrechnungstatus: Tabelle hinzugefuegt<br>';
|
||||
}
|
||||
|
||||
// Add table anrechnung_anrechnungstatus
|
||||
// Für bestehende genehmigte Anrechnungsanträge wird ein Eintrag mit dem Status 'approved' angelegt
|
||||
if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus LIMIT 1;"))
|
||||
{
|
||||
$qry = "
|
||||
CREATE TABLE lehre.tbl_anrechnung_anrechnungstatus
|
||||
(
|
||||
anrechnungstatus_id integer NOT NULL,
|
||||
anrechnung_id integer,
|
||||
status_kurzbz varchar(32),
|
||||
datum date default now(),
|
||||
insertamum timestamp default now(),
|
||||
insertvon varchar(32)
|
||||
);
|
||||
|
||||
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT pk_anrechnung_anrechnungstatus PRIMARY KEY (anrechnungstatus_id);
|
||||
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT fk_anrechnung_anrechnungstatus_anrechnung FOREIGN KEY (anrechnung_id) REFERENCES lehre.tbl_anrechnung(anrechnung_id) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT fk_anrechnung_anrechnungstatus_anrechnungstatus FOREIGN KEY (status_kurzbz) REFERENCES lehre.tbl_anrechnungstatus (status_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
CREATE SEQUENCE lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ALTER COLUMN anrechnungstatus_id SET DEFAULT nextval('lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id');
|
||||
|
||||
INSERT INTO lehre.tbl_anrechnung_anrechnungstatus(anrechnung_id, status_kurzbz) SELECT anrechnung_id, 'approved' as status_kurzbz FROM lehre.tbl_anrechnung WHERE genehmigt_von is not null;
|
||||
|
||||
GRANT SELECT ON lehre.tbl_anrechnung_anrechnungstatus TO web;
|
||||
GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO vilesci;
|
||||
GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO vilesci;
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_anrechnung_anrechnungstatus: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' lehre.tbl_anrechnung_anrechnungstatus: Tabelle hinzugefuegt<br>';
|
||||
}
|
||||
|
||||
// Added Bezeichnung 'berufliche Praxis' to Anrechnungbegruendung
|
||||
if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHERE bezeichnung = 'berufliche Praxis';"))
|
||||
{
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO lehre.tbl_anrechnung_begruendung (bezeichnung) VALUES('berufliche Praxis');";
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_anrechnung_begruendung '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' lehre.tbl_anrechnung_begruendung: Added bezeichnung "berufliche Praxis" <br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add permission to apply for Anrechnung
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/anrechnung_beantragen';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/anrechnung_beantragen', 'Anrechnung beantragen');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' system.tbl_berechtigung: Added permission for student/anrechnung_beantragen<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -4571,8 +4741,10 @@ $tabellen=array(
|
||||
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"),
|
||||
"lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"),
|
||||
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
|
||||
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"),
|
||||
"lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id","status_kurzbz","datum", "insertamum","insertvon"),
|
||||
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
|
||||
"lehre.tbl_anrechnungstatus" => array("status_kurzbz","bezeichnung_mehrsprachig"),
|
||||
"lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung","aktiv"),
|
||||
"lehre.tbl_ferien" => array("bezeichnung","studiengang_kz","vondatum","bisdatum"),
|
||||
"lehre.tbl_lehreinheit" => array("lehreinheit_id","lehrveranstaltung_id","studiensemester_kurzbz","lehrfach_id","lehrform_kurzbz","stundenblockung","wochenrythmus","start_kw","raumtyp","raumtypalternativ","sprache","lehre","anmerkung","unr","lvnr","updateamum","updatevon","insertamum","insertvon","ext_id","lehrfach_id_old","gewicht"),
|
||||
|
||||
+322
-2
@@ -48,6 +48,26 @@ $phrases = array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'global',
|
||||
'phrase' => 'bearbeitungGesperrt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bearbeitung gesperrt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Locked for editing',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'global',
|
||||
@@ -1549,7 +1569,7 @@ $phrases = array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Student',
|
||||
'text' => 'StudentIn',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
@@ -2471,7 +2491,7 @@ $phrases = array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lektor',
|
||||
'text' => 'LektorIn',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
@@ -7988,6 +8008,306 @@ Any unusual occurrences
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'anerkennungNachgewiesenerKenntnisse',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anerkennung nachgewiesener Kenntnisse',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Crediting for proven knowledge',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'anrechnungBeantragen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anrechnung beantragen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Apply',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antragStellen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Antrag stellen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Submit an application',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antragsdaten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Antragsdaten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Application data',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'nachweisdokumente',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nachweisdokumente',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Verification documents',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'personenkennzeichen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Personenkennzeichen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Personal identity number',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'hochladen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Hochladen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Upload',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antragStellenText',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ich beantrage die Feststellung der Gleichwertigkeit aufgrund',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antragStellenWegenZeugnis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'eines Zeugnisses (vgl. § 4 Abs. 4, Satzungsteil 5 der FHTW)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antragStellenWegenPraxis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'der nachgewiesenen beruflichen Praxis (vgl. § 4 Abs. 5, Satzungsteil 5 der FHTW)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'weitereInformationen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Weitere Informationen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Further information',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antrag',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Antrag',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Application',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'anrechnungIst',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Antrag ist',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Application is',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'deadlineUeberschritten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Deadline ist überschritten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deadline is exceeded',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
'phrase' => 'antragdatum',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Antragsdatum',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Application date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user