mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-24 10:22:18 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f57dc6785b | |||
| cf59bcff12 |
@@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
$filterCmptArray = array(
|
|
||||||
"app" => 'core',
|
|
||||||
'datasetName' => 'vertragsverwaltung',
|
|
||||||
'query' => '
|
|
||||||
SELECT
|
|
||||||
uid,
|
|
||||||
person_id,
|
|
||||||
vorname,
|
|
||||||
nachname,
|
|
||||||
gebdatum,
|
|
||||||
vertragsarten,
|
|
||||||
unternehmen,
|
|
||||||
ids,
|
|
||||||
aktiv
|
|
||||||
FROM
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
b.uid , p.person_id,
|
|
||||||
p.vorname, p.nachname,
|
|
||||||
gebdatum,
|
|
||||||
STRING_AGG(DISTINCT va.bezeichnung, \', \') AS Vertragsarten,
|
|
||||||
STRING_AGG(DISTINCT u.bezeichnung, \', \') AS Unternehmen,
|
|
||||||
STRING_AGG(d.dienstverhaeltnis_id::TEXT, \', \') AS ids,
|
|
||||||
b.aktiv
|
|
||||||
FROM
|
|
||||||
hr.tbl_dienstverhaeltnis d
|
|
||||||
JOIN public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid
|
|
||||||
JOIN public.tbl_person p ON p.person_id = b.person_id
|
|
||||||
JOIN public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz
|
|
||||||
JOIN hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz
|
|
||||||
GROUP BY b.uid, p.person_id, p.vorname, p.nachname, b.aktiv
|
|
||||||
) as vertragsdaten
|
|
||||||
',
|
|
||||||
'requiredPermissions' => 'vertrag/mitarbeiter'
|
|
||||||
);
|
|
||||||
@@ -6,30 +6,30 @@ use CI3_Events as Events;
|
|||||||
Events::on('loadRenderers', function ($renderers) {
|
Events::on('loadRenderers', function ($renderers) {
|
||||||
$fhc_core_renderers =& $renderers();
|
$fhc_core_renderers =& $renderers();
|
||||||
$fhc_core_renderers["lehreinheit"] = array(
|
$fhc_core_renderers["lehreinheit"] = array(
|
||||||
'calendarEvent' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Lehreinheit/calendarEvent.js'),
|
'calendarEvent' => APP_ROOT.'public/js/components/Cis/Renderer/Lehreinheit/calendarEvent.js',
|
||||||
'modalTitle' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Lehreinheit/modalTitle.js'),
|
'modalTitle' => APP_ROOT.'public/js/components/Cis/Renderer/Lehreinheit/modalTitle.js',
|
||||||
'modalContent' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Lehreinheit/modalContent.js'),
|
'modalContent' => APP_ROOT.'public/js/components/Cis/Renderer/Lehreinheit/modalContent.js',
|
||||||
'calendarEventStyles' => APP_ROOT . 'public/css/Cis4/CoreCalendarEvents.css'
|
'calendarEventStyles' => APP_ROOT.'public/css/Cis4/CoreCalendarEvents.css'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
Events::on('loadRenderers', function ($renderers) {
|
Events::on('loadRenderers', function ($renderers) {
|
||||||
$fhc_core_renderers =& $renderers();
|
$fhc_core_renderers =& $renderers();
|
||||||
$fhc_core_renderers["reservierung"] = array(
|
$fhc_core_renderers["reservierung"] = array(
|
||||||
'calendarEvent' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Reservierungen/calendarEvent.js'),
|
'calendarEvent' => APP_ROOT.'public/js/components/Cis/Renderer/Reservierungen/calendarEvent.js',
|
||||||
'modalTitle' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Reservierungen/modalTitle.js'),
|
'modalTitle' => APP_ROOT.'public/js/components/Cis/Renderer/Reservierungen/modalTitle.js',
|
||||||
'modalContent' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Reservierungen/modalContent.js'),
|
'modalContent' => APP_ROOT.'public/js/components/Cis/Renderer/Reservierungen/modalContent.js',
|
||||||
'calendarEventStyles' => APP_ROOT . 'public/css/Cis4/CoreCalendarEvents.css'
|
'calendarEventStyles' => APP_ROOT.'public/css/Cis4/CoreCalendarEvents.css'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
Events::on('loadRenderers', function ($renderers) {
|
Events::on('loadRenderers', function ($renderers) {
|
||||||
$fhc_core_renderers =& $renderers();
|
$fhc_core_renderers =& $renderers();
|
||||||
$fhc_core_renderers["ferien"] = array(
|
$fhc_core_renderers["ferien"] = array(
|
||||||
'calendarEvent' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Feiertage/calendarEvent.js'),
|
'calendarEvent' => APP_ROOT.'public/js/components/Cis/Renderer/Feiertage/calendarEvent.js',
|
||||||
'modalTitle' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Feiertage/modalTitle.js'),
|
'modalTitle' => APP_ROOT.'public/js/components/Cis/Renderer/Feiertage/modalTitle.js',
|
||||||
'modalContent' => absoluteJsImportUrl('public/js/components/Cis/Renderer/Feiertage/modalContent.js'),
|
'modalContent' => APP_ROOT.'public/js/components/Cis/Renderer/Feiertage/modalContent.js',
|
||||||
'calendarEventStyles' => APP_ROOT . 'public/css/Cis4/CoreCalendarEvents.css'
|
'calendarEventStyles' => APP_ROOT.'public/css/Cis4/CoreCalendarEvents.css'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
$config['turnitin_link'] = 'https://technikum-wien.turnitin.com/sso/sp/redwood/saml/5IyfmBr2OcSIaWQTKlFCGj/start';
|
|
||||||
|
|
||||||
$config['old_abgabe_beurteilung_link'] = 'https://moodle.technikum-wien.at/mod/page/view.php?id=1005052';
|
|
||||||
|
|
||||||
$config['PAABGABE_EMAIL_JOB_INTERVAL'] = '1 day';
|
|
||||||
// used as APP_ROOT.URL_STUDENTS -> cis4
|
|
||||||
$config['URL_STUDENTS'] = 'cis.php/Cis/Abgabetool/Student';
|
|
||||||
// used as APP_ROOT.URL_MITARBEITER -> old cis
|
|
||||||
$config['URL_MITARBEITER'] = 'index.ci.php/Cis/Abgabetool/Mitarbeiter';
|
|
||||||
// used as APP_ROOT.URL_MITARBEITER -> old cis
|
|
||||||
$config['URL_ASSISTENZ'] = 'index.ci.php/Cis/Abgabetool/Assistenz';
|
|
||||||
|
|
||||||
// lehre.tbl_paabgabetyp bezeichnung
|
|
||||||
//$config['ALLOWED_ABGABETYPEN_BETREUER'] = ['Zwischenabgabe', 'Quality Gate 1', 'Quality Gate 2'];
|
|
||||||
$config['ALLOWED_ABGABETYPEN_BETREUER'] = ['abstract','zwischen', 'qualgate1', 'qualgate2']; // tbl_paabgabetyp pk
|
|
||||||
// paabgabetypen for which betreuer is benachrichtigt via sammelmail
|
|
||||||
$config['RELEVANT_PAABGABETYPEN_SAMMELMAIL_BETREUER'] = ['qualgate1', 'qualgate2', 'end'];
|
|
||||||
// paabgabetypen for which assistenz is benachrichtigt via sammelmail
|
|
||||||
$config['RELEVANT_PAABGABETYPEN_SAMMELMAIL_ASSISTENZ'] = ['end'];
|
|
||||||
// paabgabetypen for which student is benachrichtigt via sammelmail -> basically all of them but still defined for consistency
|
|
||||||
$config['RELEVANT_PAABGABETYPEN_SAMMELMAIL_STUDENT'] = ['qualgate1', 'qualgate2', 'zwischen', 'note', 'abstract', 'end', 'enda'];
|
|
||||||
//$config['ALLOWED_NOTEN_ABGABETOOL'] = ['Bestanden', 'Nicht bestanden'];
|
|
||||||
$config['ALLOWED_NOTEN_ABGABETOOL'] = [10, 14]; // tbl_note pk
|
|
||||||
// benotete projektarbeiten sperren weitere terminanlage & bearbeitung, diese noten sind ausnahmen dieser Regel
|
|
||||||
// wie zB "Nicht beurteilt" & "Noch nicht eingetragen"
|
|
||||||
$config['NONFINAL_NOTEN_ABGABETOOL'] = [9];
|
|
||||||
$config['beurteilung_link_fallback'] = 'cis/private/lehre/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?';
|
|
||||||
|
|
||||||
$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
|
|
||||||
$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ZWEITBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
|
|
||||||
|
|
||||||
$config['SIGNATUR_CHECK_PAABGABETYPEN'] = ['end'];
|
|
||||||
|
|
||||||
// to be used as "https://moodle.technikum-wien.at/course/view.php?idnumber=dl{$stg_kz}" for stg specific moodle routing
|
|
||||||
$config['STG_MOODLE_LINK'] = 'https://moodle.technikum-wien.at/course/view.php?idnumber=dl';
|
|
||||||
// TODO: check if these links change if the file changes and how to better retrieve the link?
|
|
||||||
$config['SIGNATUR_INFO_LINK_GERMAN'] = 'https://cis.technikum-wien.at/cms/dms.php?id=214779';
|
|
||||||
$config['SIGNATUR_INFO_LINK_ENGLISH'] = 'https://cis.technikum-wien.at/cms/dms.php?id=264256';
|
|
||||||
|
|
||||||
$config['ASSISTENZ_SAMMELMAIL_BUTTON_STUDENT'] = true;
|
|
||||||
$config['ASSISTENZ_SAMMELMAIL_BUTTON_BETREUER'] = true;
|
|
||||||
|
|
||||||
$config['BETREUER_SAMMELMAIL_BUTTON_STUDENT'] = true;
|
|
||||||
|
|
||||||
$config['MULTIEDIT_TABLE'] = true;
|
|
||||||
|
|
||||||
$config['STUDENT_EDIT_PROJEKTARBEIT_TITLE'] = true;
|
|
||||||
|
|
||||||
$config['CONFETTI_ON_ENDUPLOAD'] = true;
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|||||||
|
|
||||||
|
|
||||||
// CMS Content Id for CIS4 Menu Root
|
// CMS Content Id for CIS4 Menu Root
|
||||||
$config['cis_menu_root_content_id'] = 11091;
|
$config['cis_menu_root_content_id'] = 11087;
|
||||||
// send Mails for ProfilUpdate
|
// send Mails for ProfilUpdate
|
||||||
$config['cis_send_profil_update_mails'] = true;
|
$config['cis_send_profil_update_mails'] = true;
|
||||||
// Vilesci CI BaseUrl
|
// Vilesci CI BaseUrl
|
||||||
|
|||||||
@@ -7,6 +7,3 @@ $config['use_vuejs_dev_version'] = false;
|
|||||||
$config['use_bundled_javascript'] = false;
|
$config['use_bundled_javascript'] = false;
|
||||||
// systemerror_mailto use in FHC-Alert Plugin - if empty Link will not be rendered
|
// systemerror_mailto use in FHC-Alert Plugin - if empty Link will not be rendered
|
||||||
$config['systemerror_mailto'] = '';
|
$config['systemerror_mailto'] = '';
|
||||||
// use fhcomplete_build_version as path element after public (requires apache mod_rewrite)
|
|
||||||
// see <fhc_base_dir>/public/.htaccess_sample for details
|
|
||||||
$config['use_fhcomplete_build_version_in_path'] = false;
|
|
||||||
|
|||||||
@@ -163,13 +163,6 @@ $config['navigation_header'] = array(
|
|||||||
'expand' => true,
|
'expand' => true,
|
||||||
'sort' => 50,
|
'sort' => 50,
|
||||||
'requiredPermissions' => 'lehre/gruppenmanager:r'
|
'requiredPermissions' => 'lehre/gruppenmanager:r'
|
||||||
),
|
|
||||||
'vertragsverwaltung' => array(
|
|
||||||
'link' => site_url('vertragsverwaltung'),
|
|
||||||
'description' => 'Vertragsverwaltung',
|
|
||||||
'expand' => true,
|
|
||||||
'sort' => 51,
|
|
||||||
'requiredPermissions' => 'vertrag/mitarbeiter:r'
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@@ -208,14 +201,7 @@ $config['navigation_header'] = array(
|
|||||||
'expand' => true,
|
'expand' => true,
|
||||||
'sort' => 30,
|
'sort' => 30,
|
||||||
'requiredPermissions' => 'lehre/anrechnungszeitfenster:rw'
|
'requiredPermissions' => 'lehre/anrechnungszeitfenster:rw'
|
||||||
),
|
)
|
||||||
'dashboardadmin' => array(
|
|
||||||
'link' => site_url('dashboard/Admin'),
|
|
||||||
'description' => 'Dashboard Admin',
|
|
||||||
'expand' => true,
|
|
||||||
'sort' => 40,
|
|
||||||
'requiredPermissions' => 'dashboard/admin:r'
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -349,37 +335,4 @@ $config['navigation_menu']['system/issues/Issues/*'] = array(
|
|||||||
'target' => '_blank',
|
'target' => '_blank',
|
||||||
'requiredPermissions' => array('admin:rw')
|
'requiredPermissions' => array('admin:rw')
|
||||||
),
|
),
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$config['navigation_menu']['vertragsverwaltung/*'] = array(
|
|
||||||
'vertragsverwaltung' => array(
|
|
||||||
'link' => site_url('vertragsverwaltung'),
|
|
||||||
'description' => 'Vertragsverwaltung',
|
|
||||||
'icon' => 'home',
|
|
||||||
'sort' => 100,
|
|
||||||
'target' => '_blank',
|
|
||||||
'requiredPermissions' => array('vertrag/mitarbeiter:r')
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$config['navigation_menu']['apps'] = [
|
|
||||||
'stv' => [
|
|
||||||
'link' => site_url('studentenverwaltung'),
|
|
||||||
'description' => 'Studierendenverwaltung',
|
|
||||||
#'icon' => 'users',
|
|
||||||
'requiredPermissions' => array('admin:r', 'assistenz:r')
|
|
||||||
],
|
|
||||||
'lvv' => [
|
|
||||||
'link' => site_url('lVVerwaltung'),
|
|
||||||
'description' => 'LV Verwaltung',
|
|
||||||
#'icon' => 'person-chalkboard',
|
|
||||||
'requiredPermissions' => array('admin:r', 'assistenz:r')
|
|
||||||
],
|
|
||||||
'lav' => [
|
|
||||||
'link' => site_url('lehre/lehrauftrag/Lehrauftrag/Dashboard'),
|
|
||||||
'description' => 'Lehraufträge',
|
|
||||||
#'icon' => 'person-chalkboard',
|
|
||||||
'requiredPermissions' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:r')
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
| -------------------------------------------------------------------------
|
| -------------------------------------------------------------------------
|
||||||
@@ -51,7 +51,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|||||||
| my-controller/my-method -> my_controller/my_method
|
| my-controller/my-method -> my_controller/my_method
|
||||||
*/
|
*/
|
||||||
$route['default_controller'] = defined('CIS4') && CIS4 ? 'Cis4' : 'Vilesci';
|
$route['default_controller'] = defined('CIS4') && CIS4 ? 'Cis4' : 'Vilesci';
|
||||||
$route['translate_uri_dashes'] = false;
|
$route['translate_uri_dashes'] = FALSE;
|
||||||
|
|
||||||
// Class name conflicts
|
// Class name conflicts
|
||||||
$route['api/v1/organisation/[S|s]tudiengang/(:any)'] = 'api/v1/organisation/studiengang2/$1';
|
$route['api/v1/organisation/[S|s]tudiengang/(:any)'] = 'api/v1/organisation/studiengang2/$1';
|
||||||
@@ -64,16 +64,6 @@ $route['api/v1/system/[S|s]prache/(:any)'] = 'api/v1/system/sprache2/$1';
|
|||||||
$route['Cis/LvPlan/.*'] = 'Cis/LvPlan/index/$1';
|
$route['Cis/LvPlan/.*'] = 'Cis/LvPlan/index/$1';
|
||||||
$route['Cis/MyLvPlan/.*'] = 'Cis/MyLvPlan/index/$1';
|
$route['Cis/MyLvPlan/.*'] = 'Cis/MyLvPlan/index/$1';
|
||||||
$route['Cis/MyLv/.*'] = 'Cis/MyLv/index/$1';
|
$route['Cis/MyLv/.*'] = 'Cis/MyLv/index/$1';
|
||||||
$route['Cis/OtherLvPlan/.*'] = 'Cis/OtherLvPlan/index/$1';
|
|
||||||
//Route for LV Plan Stg/Semester/Verband/Gruppe
|
|
||||||
$route['Cis/StgOrgLvPlan/.*'] = 'Cis/StgOrgLvPlan/index/$1';
|
|
||||||
|
|
||||||
$route['Abgabetool/Assistenz'] = 'Cis/Abgabetool/Assistenz';
|
|
||||||
$route['Abgabetool/Assistenz/(:any)'] = 'Cis/Abgabetool/Assistenz/$1';
|
|
||||||
$route['Abgabetool/Mitarbeiter'] = 'Cis/Abgabetool/Mitarbeiter';
|
|
||||||
$route['Abgabetool/Student'] = 'Cis/Abgabetool/Student';
|
|
||||||
$route['Abgabetool/Student/(:any)'] = 'Cis/Abgabetool/Student/$1';
|
|
||||||
$route['Abgabetool/Deadlines'] = 'Cis/Abgabetool/Deadlines';
|
|
||||||
|
|
||||||
// Studierendenverwaltung List Routes
|
// Studierendenverwaltung List Routes
|
||||||
$route['api/frontend/v1/stv/[sS]tudents/inout'] = 'api/frontend/v1/stv/Students/index';
|
$route['api/frontend/v1/stv/[sS]tudents/inout'] = 'api/frontend/v1/stv/Students/index';
|
||||||
@@ -81,9 +71,9 @@ $route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})'] = 'api/frontend/v1/stv
|
|||||||
|
|
||||||
// (studiensemester_kurzbz)/inout[/(incoming|outgoing|gemeinsamestudien)]
|
// (studiensemester_kurzbz)/inout[/(incoming|outgoing|gemeinsamestudien)]
|
||||||
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout'] = 'api/frontend/v1/stv/Students/index';
|
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout'] = 'api/frontend/v1/stv/Students/index';
|
||||||
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/incoming'] = 'api/frontend/v1/stv/Students/getIncoming/$1';
|
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/incoming'] = 'api/frontend/v1/stv/Students/getIncoming';
|
||||||
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/outgoing'] = 'api/frontend/v1/stv/Students/getOutgoing/$1';
|
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/outgoing'] = 'api/frontend/v1/stv/Students/getOutgoing';
|
||||||
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/gemeinsamestudien'] = 'api/frontend/v1/stv/Students/getGemeinsamestudien/$1';
|
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/gemeinsamestudien'] = 'api/frontend/v1/stv/Students/getGemeinsamestudien';
|
||||||
|
|
||||||
// (studiengang_kz)/prestudent[/(studiensemester_kurzbz)[/(filter)[/(otherfilter)]]]
|
// (studiengang_kz)/prestudent[/(studiensemester_kurzbz)[/(filter)[/(otherfilter)]]]
|
||||||
$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/prestudent'] = 'api/frontend/v1/stv/Students/getPrestudents/$1';
|
$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/prestudent'] = 'api/frontend/v1/stv/Students/getPrestudents/$1';
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ unset($config['student']['searchfields']['email']);
|
|||||||
unset($config['student']['searchfields']['tel']);
|
unset($config['student']['searchfields']['tel']);
|
||||||
$config['student']['resultfields'] = [
|
$config['student']['resultfields'] = [
|
||||||
"s.student_uid AS uid",
|
"s.student_uid AS uid",
|
||||||
"s.matrikelnr AS personenkennzeichen",
|
"s.matrikelnr",
|
||||||
"p.person_id",
|
"p.person_id",
|
||||||
"p.matr_nr AS matrikelnummer",
|
|
||||||
"(p.vorname || ' ' || p.nachname) AS name",
|
"(p.vorname || ' ' || p.nachname) AS name",
|
||||||
"ARRAY[s.student_uid || '@' || '" . DOMAIN . "'] AS email",
|
"ARRAY[s.student_uid || '@' || '" . DOMAIN . "'] AS email",
|
||||||
"CASE
|
"CASE
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ $config['similar'] = [
|
|||||||
|
|
||||||
$config['vector'] = [
|
$config['vector'] = [
|
||||||
'priority' => 1,
|
'priority' => 1,
|
||||||
'rank' => "ts_rank({field}, plainto_tsquery('simple', {word}))",
|
'rank' => "ts_rank({field}, to_tsquery('simple', {word}))",
|
||||||
'compare' => "plainto_tsquery('simple', {word}) @@ {field}"
|
'compare' => "to_tsquery('simple', {word}) @@ {field}"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -7,43 +7,5 @@ $CI =& get_instance();
|
|||||||
|
|
||||||
|
|
||||||
$config['student'] = $CI->config->item('student', 'search');
|
$config['student'] = $CI->config->item('student', 'search');
|
||||||
$config['student']['searchfields']['pkz'] = [
|
|
||||||
'alias' => ['personenkennzeichen', 'personalid'],
|
|
||||||
'comparison' => 'equals',
|
|
||||||
'field' => 'matrikelnr'
|
|
||||||
];
|
|
||||||
$config['student']['searchfields']['matrnr'] = [
|
|
||||||
'alias' => ['matrikelnr', 'matrikelnummer', 'matrno', 'matriculationno', 'matriculationnumber', 'studno', 'studentno', 'studentnumber'],
|
|
||||||
'comparison' => 'equals',
|
|
||||||
'field' => 'matr_nr',
|
|
||||||
'join' => [
|
|
||||||
[
|
|
||||||
'table' => "public.tbl_prestudent",
|
|
||||||
'using' => "prestudent_id"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'table' => "public.tbl_person",
|
|
||||||
'using' => "person_id"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
$config['prestudent'] = $CI->config->item('prestudent', 'search');
|
$config['prestudent'] = $CI->config->item('prestudent', 'search');
|
||||||
$config['prestudent']['searchfields']['pkz'] = [
|
|
||||||
'alias' => ['personenkennzeichen', 'personalid'],
|
|
||||||
'comparison' => 'equals',
|
|
||||||
'field' => 'matrikelnr',
|
|
||||||
'join' => [
|
|
||||||
'table' => "public.tbl_student",
|
|
||||||
'using' => "prestudent_id"
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$config['prestudent']['searchfields']['matrnr'] = [
|
|
||||||
'alias' => ['matrikelnr', 'matrikelnummer', 'matrno', 'matriculationno', 'matriculationnumber', 'studno', 'studentno', 'studentnumber'],
|
|
||||||
'comparison' => 'equals',
|
|
||||||
'field' => 'matr_nr',
|
|
||||||
'join' => [
|
|
||||||
'table' => "public.tbl_person",
|
|
||||||
'using' => "person_id"
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -168,32 +168,3 @@ $config['stgkz_blacklist_wiederholung'] = [];
|
|||||||
* @var array An array of noten ids
|
* @var array An array of noten ids
|
||||||
*/
|
*/
|
||||||
$config['note_blacklist_wiederholung'] = [];
|
$config['note_blacklist_wiederholung'] = [];
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable/disable the Abmeldung StG process
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
$config['abmeldung_stg_enabled'] = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable/disable the Abmeldung process
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
$config['abmeldung_enabled'] = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable/disable the Unterbrecher process
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
$config['unterbrechung_enabled'] = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable/disable the Wiederholer process
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
$config['wiederholung_enabled'] = true;
|
|
||||||
|
|
||||||
|
|||||||
@@ -61,11 +61,7 @@ $config['tabs'] =
|
|||||||
'notes' => [
|
'notes' => [
|
||||||
//if true, the count of Messages will be shown in the header of the Tab Messages
|
//if true, the count of Messages will be shown in the header of the Tab Messages
|
||||||
'showCountNotes' => true
|
'showCountNotes' => true
|
||||||
],
|
]
|
||||||
'combinePeople' => [
|
|
||||||
//multitab should only be shown with this length of selection
|
|
||||||
'validCountMulti' => 2,
|
|
||||||
],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// List of fields to show when ZGV_DOKTOR_ANZEIGEN is defined
|
// List of fields to show when ZGV_DOKTOR_ANZEIGEN is defined
|
||||||
@@ -88,16 +84,6 @@ if (!defined('ZGV_DOKTOR_ANZEIGEN') || !ZGV_DOKTOR_ANZEIGEN) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$config['tabs']['projektarbeit']['defaultProjektbetreuerStunden'] =
|
|
||||||
defined('FAS_STUDIERENDE_PROJEKTARBEIT_DEFAULT_BETREUER_STUNDEN_BACHELOR')
|
|
||||||
? FAS_STUDIERENDE_PROJEKTARBEIT_DEFAULT_BETREUER_STUNDEN_BACHELOR
|
|
||||||
: '0.0';
|
|
||||||
$config['tabs']['projektarbeit']['defaultProjektbetreuerStundenDiplom'] =
|
|
||||||
defined('FAS_STUDIERENDE_PROJEKTARBEIT_DEFAULT_BETREUER_STUNDEN_MASTER')
|
|
||||||
? FAS_STUDIERENDE_PROJEKTARBEIT_DEFAULT_BETREUER_STUNDEN_MASTER
|
|
||||||
: '0.0';
|
|
||||||
$config['tabs']['projektarbeit']['defaultProjektbetreuerStundensatz'] = '80.0';
|
|
||||||
|
|
||||||
$config['student_tab_order'] = [
|
$config['student_tab_order'] = [
|
||||||
'details',
|
'details',
|
||||||
'notes',
|
'notes',
|
||||||
@@ -111,7 +97,6 @@ $config['student_tab_order'] = [
|
|||||||
'grades',
|
'grades',
|
||||||
'exam',
|
'exam',
|
||||||
'exemptions',
|
'exemptions',
|
||||||
'projektarbeit',
|
|
||||||
'finalexam',
|
'finalexam',
|
||||||
'mobility',
|
'mobility',
|
||||||
'jointstudies',
|
'jointstudies',
|
||||||
@@ -124,22 +109,7 @@ $config['student_tab_order'] = [
|
|||||||
$config['students_tab_order'] = [
|
$config['students_tab_order'] = [
|
||||||
'banking',
|
'banking',
|
||||||
'status',
|
'status',
|
||||||
'messages',
|
|
||||||
'groups',
|
'groups',
|
||||||
'finalexam',
|
'finalexam',
|
||||||
'combinePeople',
|
|
||||||
'archive',
|
'archive',
|
||||||
];
|
];
|
||||||
|
|
||||||
$config['stv_prestudent_tags'] = [
|
|
||||||
'prioone' => ['readonly' => false],
|
|
||||||
'priotwo' => ['readonly' => true],
|
|
||||||
'hinweis' => ['readonly' => false],
|
|
||||||
'hinweis_assistenz' => ['readonly' => true],
|
|
||||||
'hinweis_kf' => ['readonly' => true],
|
|
||||||
'hinweis_lehrende' => ['readonly' => false],
|
|
||||||
'hinweis_stg_kf' => ['readonly' => true],
|
|
||||||
'finished_stg' => ['readonly' => true],
|
|
||||||
'finished_kf' => ['readonly' => true],
|
|
||||||
'inwork_kf' => ['readonly' => true],
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ class Abgabetool extends Auth_Controller
|
|||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'index' => self::PERM_LOGGED,
|
'index' => self::PERM_LOGGED,
|
||||||
'Mitarbeiter' => array('basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'),
|
'getStudentProjektarbeitAbgabeFile' => self::PERM_LOGGED,
|
||||||
'Assistenz' => array('basis/abgabe_assistenz:rw'),
|
'Mitarbeiter' => self::PERM_LOGGED,
|
||||||
'Student' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'),
|
'Student' => self::PERM_LOGGED,
|
||||||
'Deadlines' => array('basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw')
|
'Deadlines' => self::PERM_LOGGED
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,48 +29,80 @@ class Abgabetool extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
// TODO: routing from index based on berechtigung?
|
|
||||||
|
|
||||||
if(defined('CIS4') && CIS4) {
|
$viewData = array(
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'Abgabetool']);
|
'uid'=>getAuthUID(),
|
||||||
} else {
|
);
|
||||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'Abgabetool']);
|
|
||||||
}
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Abgabetool']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Student($student_uid_prop = '')
|
public function Student()
|
||||||
{
|
{
|
||||||
if(defined('CIS4') && CIS4) {
|
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolStudent']);
|
$viewData = array(
|
||||||
} else {
|
'uid'=>getAuthUID(),
|
||||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolStudent', 'student_uid_prop' => $student_uid_prop]);
|
);
|
||||||
}
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolStudent']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Mitarbeiter()
|
public function Mitarbeiter()
|
||||||
{
|
{
|
||||||
if(defined('CIS4') && CIS4) {
|
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolMitarbeiter']);
|
|
||||||
} else {
|
|
||||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolMitarbeiter']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function Assistenz($stg_kz_prop = '')
|
$viewData = array(
|
||||||
{
|
'uid'=>getAuthUID(),
|
||||||
if(defined('CIS4') && CIS4) {
|
);
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolAssistenz']);
|
|
||||||
} else {
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolMitarbeiter']);
|
||||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolAssistenz', 'stg_kz_prop' => $stg_kz_prop]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Deadlines()
|
public function Deadlines()
|
||||||
{
|
{
|
||||||
if(defined('CIS4') && CIS4) {
|
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'DeadlinesOverview']);
|
$viewData = array(
|
||||||
|
'uid'=>getAuthUID(),
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'DeadlinesOverview']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getStudentProjektarbeitAbgabeFile()
|
||||||
|
{
|
||||||
|
$this->_ci =& get_instance();
|
||||||
|
$this->_ci->load->helper('download');
|
||||||
|
|
||||||
|
$paabgabe_id = $this->_ci->input->get('paabgabe_id');
|
||||||
|
$student_uid = $this->_ci->input->get('student_uid');
|
||||||
|
|
||||||
|
if (!isset($paabgabe_id) || isEmptyString($paabgabe_id) || !isset($student_uid) || isEmptyString($student_uid))
|
||||||
|
$this->terminateWithJsonError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
$this->_ci->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
|
||||||
|
$isZugeteilterBetreuer = count($this->_ci->ProjektarbeitModel->checkZuordnung($student_uid, getAuthUID())->retval) > 0;
|
||||||
|
|
||||||
|
if(getAuthUID() == $student_uid || $isZugeteilterBetreuer) {
|
||||||
|
$file_path = PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf';
|
||||||
|
if(file_exists($file_path)) {
|
||||||
|
|
||||||
|
header('Content-Description: File Transfer');
|
||||||
|
header('Content-Type: application/octet-stream');
|
||||||
|
header('Expires: 0');
|
||||||
|
header('Cache-Control: must-revalidate');
|
||||||
|
header('Pragma: public');
|
||||||
|
header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
|
||||||
|
header('Content-Length: ' . filesize($file_path));
|
||||||
|
|
||||||
|
flush(); // send headers first just in case
|
||||||
|
readfile($file_path); // read file content to output buffer
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->terminateWithJsonError('File not found');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'DeadlinesOverview']);
|
$this->terminateWithJsonError('Keine Zuordnung!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class Auth extends FHC_Controller
|
|||||||
|
|
||||||
if ($this->form_validation->run())
|
if ($this->form_validation->run())
|
||||||
{
|
{
|
||||||
redirect($this->authlib->getLandingPage('/Cis4'));
|
redirect($this->authlib->getLandingPage('/CisVue/Dashboard'));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ class Documents extends Auth_Controller
|
|||||||
|
|
||||||
$stgs = [];
|
$stgs = [];
|
||||||
$stsemArray = [];
|
$stsemArray = [];
|
||||||
$buchungstypen = defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN") ? unserialize(CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN) : [];
|
$buchungstypen = implode('\',\'', defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN") ? unserialize(CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN) : []);
|
||||||
$person_ids = [];
|
$person_ids = [];
|
||||||
foreach ($stati as $status) {
|
foreach ($stati as $status) {
|
||||||
$person_ids[] = $status->person_id;
|
$person_ids[] = $status->person_id;
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ class LvPlan extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'LvPlan']);
|
|
||||||
|
$viewData = array(
|
||||||
|
'uid'=>getAuthUID(),
|
||||||
|
'timezone' => $this->config->item('timezone')
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'LvPlan']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,16 @@ class MyLv extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'MyLv']);
|
|
||||||
|
$viewData = array(
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'MyLv']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function Info($studien_semester,$lvid)
|
||||||
|
{
|
||||||
|
$this->load->view('Cis/LvInfo',['lvid'=> $lvid, 'studien_semester' => $studien_semester]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ class MyLvPlan extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'MyLvPlan']);
|
|
||||||
|
$viewData = array(
|
||||||
|
'uid'=>getAuthUID(),
|
||||||
|
'timezone' => $this->config->item('timezone')
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'MyLvPlan']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class OtherLvPlan extends Auth_Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'index' => ['basis/other_lv_plan:r']
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load Config
|
|
||||||
$this->load->config('calendar');
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Public methods
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'OtherLvPlan']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -55,7 +55,15 @@ class Profil extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'profilIndex']);
|
|
||||||
|
$this->load->library('ProfilLib');
|
||||||
|
$profil_data = $this->profillib->getView(getAuthUID());
|
||||||
|
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
|
||||||
|
$viewData = array(
|
||||||
|
'editable'=>true,
|
||||||
|
'profil_data' => $profil_data,
|
||||||
|
);
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'profilIndex']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,13 +73,23 @@ class Profil extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function View($uid)
|
public function View($uid)
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'profilViewUid']);
|
$this->load->library('ProfilLib');
|
||||||
|
$profil_data = $this->profillib->getView($uid);
|
||||||
|
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
|
||||||
|
$viewData = array (
|
||||||
|
'uid' => $uid,
|
||||||
|
'profil_data'=>$profil_data,
|
||||||
|
);
|
||||||
|
if($uid == getAuthUID()){
|
||||||
|
$viewData['editable'] = true;
|
||||||
|
}
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'profilViewUid']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* checks whether a specific userID is a student or not (foreword declaration of the function isStudent in Student_model.php)
|
* checks whether a specific userID is a mitarbeiter or not (foreword declaration of the function isMitarbeiter in Mitarbeiter_model.php)
|
||||||
* @access public
|
* @access public
|
||||||
* @param $uid the userID used to check if it is a student
|
* @param $uid the userID used to check if it is a mitarbeiter
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function isStudent($uid)
|
public function isStudent($uid)
|
||||||
@@ -101,7 +119,7 @@ class Profil extends Auth_Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets the adressen that are marked as zustell from the currently logged in user
|
* gets the adressen that are marked as zustell from the currenlty logged in user
|
||||||
* @access public
|
* @access public
|
||||||
* @return array a list of adresse_id's
|
* @return array a list of adresse_id's
|
||||||
*/
|
*/
|
||||||
@@ -244,23 +262,23 @@ class Profil extends Auth_Controller
|
|||||||
$this->GemeindeModel->addDistinct();
|
$this->GemeindeModel->addDistinct();
|
||||||
$this->GemeindeModel->addSelect(["name"]);
|
$this->GemeindeModel->addSelect(["name"]);
|
||||||
if ($nation == "A") {
|
if ($nation == "A") {
|
||||||
if (isset($zip) && $zip > 999 && $zip < 32000) {
|
if (isset($zip) && $zip > 999 && $zip < 32000) {
|
||||||
|
|
||||||
$gemeinde_res = $this->GemeindeModel->loadWhere(['plz' => $zip]);
|
$gemeinde_res = $this->GemeindeModel->loadWhere(['plz' => $zip]);
|
||||||
if (isError($gemeinde_res)) {
|
if (isError($gemeinde_res)) {
|
||||||
show_error("error while trying to query bis.tbl_gemeinde");
|
show_error("error while trying to query bis.tbl_gemeinde");
|
||||||
|
}
|
||||||
|
$gemeinde_res = hasData($gemeinde_res) ? getData($gemeinde_res) : null;
|
||||||
|
$gemeinde_res = array_map(function ($obj) {
|
||||||
|
return $obj->name;
|
||||||
|
}, $gemeinde_res);
|
||||||
|
echo json_encode($gemeinde_res);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
echo json_encode(error("ortschaftskennziffer code was not valid"));
|
||||||
}
|
}
|
||||||
$gemeinde_res = hasData($gemeinde_res) ? getData($gemeinde_res) : null;
|
|
||||||
$gemeinde_res = array_map(function ($obj) {
|
|
||||||
return $obj->name;
|
|
||||||
}, $gemeinde_res);
|
|
||||||
echo json_encode($gemeinde_res);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
echo json_encode(error("ortschaftskennziffer code was not valid"));
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(error("Nation was not 'A' (Austria)"));
|
echo json_encode(error("Nation was not 'A' (Austria)"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -732,4 +750,6 @@ class Profil extends Auth_Controller
|
|||||||
$zutrittskarte_ausgegebenam = str_replace("-", ".", $zutrittskarte_ausgegebenam);
|
$zutrittskarte_ausgegebenam = str_replace("-", ".", $zutrittskarte_ausgegebenam);
|
||||||
return $zutrittskarte_ausgegebenam;
|
return $zutrittskarte_ausgegebenam;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class ProfilUpdate extends Auth_Controller
|
|||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'index' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r'],
|
'index' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r'],
|
||||||
'show' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r', 'basis/cis:r'],
|
'show' => ['basis/cis:r'],
|
||||||
'id' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r']
|
'id' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class Pub extends Auth_Controller
|
|||||||
{
|
{
|
||||||
parent::__construct(
|
parent::__construct(
|
||||||
array(
|
array(
|
||||||
'bild' => ['basis/cis:r', 'assistenz:r']
|
'bild' => ['basis/cis:r']
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,11 @@ class Raumsuche extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'Raumsuche']);
|
|
||||||
|
$viewData = array(
|
||||||
|
'uid'=>getAuthUID(),
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Raumsuche']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class StgOrgLvPlan extends Auth_Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'index' => ['basis/cis:r']
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load Config
|
|
||||||
$this->load->config('calendar');
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Public methods
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'StgOrgLvPlan']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -29,7 +29,10 @@ class Studium extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'studium']);
|
$viewData = array(
|
||||||
|
|
||||||
|
);
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'studium']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -14,9 +13,9 @@ class Cis4 extends Auth_Controller
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct(
|
parent::__construct(
|
||||||
array(
|
array(
|
||||||
'index' => 'basis/cis:r'
|
'index' => 'basis/cis:r'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Load Config
|
// Load Config
|
||||||
@@ -31,6 +30,16 @@ class Cis4 extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'FhcDashboard']);
|
$this->load->model('person/Person_model', 'PersonModel');
|
||||||
|
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
||||||
|
|
||||||
|
$viewData = array(
|
||||||
|
'uid' => getAuthUID(),
|
||||||
|
'name' => $personData->vorname,
|
||||||
|
'person_id' => $personData->person_id,
|
||||||
|
'timezone' => $this->config->item('timezone')
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'FhcDashboard']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class Dashboard extends Auth_Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct(
|
||||||
|
array(
|
||||||
|
'index' => 'dashboard/benutzer:r'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------------------------------------
|
||||||
|
// Public methods
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->load->model('person/Person_model','PersonModel');
|
||||||
|
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
||||||
|
|
||||||
|
$viewData = array(
|
||||||
|
'uid' => getAuthUID(),
|
||||||
|
'name' => $personData->vorname,
|
||||||
|
'person_id' => $personData->person_id
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,18 +20,11 @@ class NeueNachricht extends Auth_Controller
|
|||||||
*/
|
*/
|
||||||
public function _remap()
|
public function _remap()
|
||||||
{
|
{
|
||||||
$typeid = $this->input->post('typeid');
|
|
||||||
$ids = ($this->input->post('ids') && strpos($this->input->post('ids'), ','))
|
|
||||||
? explode(',', $this->input->post('ids'))
|
|
||||||
: $this->input->post('ids');
|
|
||||||
|
|
||||||
//now working
|
//now working
|
||||||
$this->load->view('Nachrichten', [
|
$this->load->view('Nachrichten', [
|
||||||
'permissions' => [
|
'permissions' => [
|
||||||
'assistenz_schreibrechte' => $this->permissionlib->isBerechtigt('assistenz','suid'),
|
'assistenz_schreibrechte' => $this->permissionlib->isBerechtigt('assistenz','suid'),
|
||||||
],
|
]
|
||||||
'ids' => $ids,
|
|
||||||
'typeid' => $typeid
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,14 +28,10 @@ class Studentenverwaltung extends Auth_Controller
|
|||||||
'basis/prestudentstatus' => $this->permissionlib->isBerechtigt('basis/prestudentstatus'),
|
'basis/prestudentstatus' => $this->permissionlib->isBerechtigt('basis/prestudentstatus'),
|
||||||
'assistenz_stgs' => $this->permissionlib->getSTG_isEntitledFor('assistenz'),
|
'assistenz_stgs' => $this->permissionlib->getSTG_isEntitledFor('assistenz'),
|
||||||
'admin' => $this->permissionlib->isBerechtigt('admin'),
|
'admin' => $this->permissionlib->isBerechtigt('admin'),
|
||||||
'assistenz_schreibrechte' => $this->permissionlib->isBerechtigt('assistenz', 'suid'),
|
'assistenz_schreibrechte' => $this->permissionlib->isBerechtigt('assistenz','suid'),
|
||||||
'student/keine_studstatuspruefung' => $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung'),
|
'student/keine_studstatuspruefung' => $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung'),
|
||||||
'lehre/reihungstestAufsicht' => $this->permissionlib->isBerechtigt('lehre/reihungstestAufsicht'),
|
'lehre/reihungstestAufsicht' => $this->permissionlib->isBerechtigt('lehre/reihungstestAufsicht'),
|
||||||
'system/change_outputformat' => $this->permissionlib->getOE_isEntitledFor('system/change_outputformat'),
|
'system/change_outputformat' => $this->permissionlib->getOE_isEntitledFor('system/change_outputformat'),
|
||||||
'student/editBakkZgv' => $this->permissionlib->getSTG_isEntitledFor('student/editBakkZgv') ?: array(),
|
|
||||||
'student/editMakkZgv' => $this->permissionlib->getSTG_isEntitledFor('student/editMakkZgv') ?: array(),
|
|
||||||
'student/editDokZgv' => $this->permissionlib->getSTG_isEntitledFor('student/editDokZgv') ?: array(),
|
|
||||||
'student/editBismelden' => $this->permissionlib->isBerechtigt('student/editBismelden')
|
|
||||||
],
|
],
|
||||||
'variables' => [
|
'variables' => [
|
||||||
'semester_aktuell' => $this->variablelib->getVar('semester_aktuell')
|
'semester_aktuell' => $this->variablelib->getVar('semester_aktuell')
|
||||||
@@ -43,5 +39,3 @@ class Studentenverwaltung extends Auth_Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class Vertragsverwaltung extends Auth_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$permissions = [];
|
|
||||||
$router = load_class('Router');
|
|
||||||
$permissions[$router->method] = ['vertrag/mitarbeiter:r'];
|
|
||||||
#$permissions[$router->method] = ['admin:rw'];
|
|
||||||
parent::__construct($permissions);
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function _remap()
|
|
||||||
{
|
|
||||||
$this->load->view('Vertragsverwaltung', [
|
|
||||||
'permissions' => [
|
|
||||||
'vertragsverwaltung_schreibrechte' => $this->permissionlib->isBerechtigt('vertrag/mitarbeiter', 'suid')
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -18,8 +18,6 @@
|
|||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class Bookmark extends FHCAPI_Controller
|
class Bookmark extends FHCAPI_Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -30,162 +28,111 @@ class Bookmark extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'getBookmarks' => self::PERM_LOGGED,
|
'getBookmarks' => self::PERM_LOGGED,
|
||||||
'delete' => self::PERM_LOGGED,
|
'delete' => self::PERM_LOGGED,
|
||||||
'insert' => self::PERM_LOGGED,
|
'insert' => self::PERM_LOGGED,
|
||||||
'update' => self::PERM_LOGGED,
|
'update' => self::PERM_LOGGED,
|
||||||
'changeOrder' => self::PERM_LOGGED
|
]);
|
||||||
]);
|
|
||||||
|
|
||||||
$this->load->model('dashboard/Bookmark_model', 'BookmarkModel');
|
$this->load->model('dashboard/Bookmark_model', 'BookmarkModel');
|
||||||
|
|
||||||
$this->uid = getAuthUID();
|
$this->uid = getAuthUID();
|
||||||
$this->pid = getAuthPersonID();
|
$this->pid = getAuthPersonID();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
// Public methods
|
// Public methods
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets the bookmarks associated to a user
|
* gets the bookmarks associated to a user
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function getBookmarks()
|
public function getBookmarks()
|
||||||
{
|
{
|
||||||
$this->BookmarkModel->addOrder("sort");
|
$this->BookmarkModel->addOrder("bookmark_id");
|
||||||
$bookmarks = $this->BookmarkModel->loadWhere(["uid"=>$this->uid]);
|
$bookmarks = $this->BookmarkModel->loadWhere(["uid"=>$this->uid]);
|
||||||
|
|
||||||
$bookmarks = $this->getDataOrTerminateWithError($bookmarks);
|
$bookmarks = $this->getDataOrTerminateWithError($bookmarks);
|
||||||
|
|
||||||
$this->terminateWithSuccess($bookmarks);
|
$this->terminateWithSuccess($bookmarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deletes bookmark from associated user
|
* deletes bookmark from associated user
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function delete($bookmark_id)
|
public function delete($bookmark_id)
|
||||||
{
|
{
|
||||||
$bookmark = $this->BookmarkModel->load($bookmark_id);
|
$bookmark = $this->BookmarkModel->load($bookmark_id);
|
||||||
|
|
||||||
$bookmark = current($this->getDataOrTerminateWithError($bookmark));
|
$bookmark = current($this->getDataOrTerminateWithError($bookmark));
|
||||||
|
|
||||||
// only delete bookmark if the user is the owner of the bookmark
|
// only delete bookmark if the user is the owner of the bookmark
|
||||||
if ($bookmark->uid == $this->uid || $this->permissionlib->isBerechtigt('admin')) {
|
if($bookmark->uid == $this->uid || $this->permissionlib->isBerechtigt('admin')){
|
||||||
$delete_result = $this->BookmarkModel->delete($bookmark_id);
|
|
||||||
|
|
||||||
$delete_result = $this->getDataOrTerminateWithError($delete_result);
|
$delete_result = $this->BookmarkModel->delete($bookmark_id);
|
||||||
|
|
||||||
$this->terminateWithSuccess($delete_result);
|
$delete_result = $this->getDataOrTerminateWithError($delete_result);
|
||||||
} else {
|
|
||||||
$this->_outputAuthError(['delete' => ['admin:rw']]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
$this->terminateWithSuccess($delete_result);
|
||||||
|
}else{
|
||||||
|
$this->_outputAuthError(['delete' => ['admin:rw']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* inserts new bookmark into the bookmark table
|
* inserts new bookmark into the bookmark table
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function insert()
|
public function insert()
|
||||||
{
|
{
|
||||||
// form validation
|
// form validation
|
||||||
$this->load->library('form_validation');
|
$this->load->library('form_validation');
|
||||||
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
||||||
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
||||||
if (!$this->form_validation->run())
|
if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$url = $this->input->post('url', true);
|
$url = $this->input->post('url',true);
|
||||||
$title = $this->input->post('title', true);
|
$title = $this->input->post('title',true);
|
||||||
$tag = $this->input->post('tag', true);
|
$tag = $this->input->post('tag', true);
|
||||||
if (is_array($tag)) {
|
|
||||||
$tag = json_encode($tag); // convert PHP array to JSON string
|
|
||||||
}
|
|
||||||
$sort = $this->input->post('sort', true);
|
|
||||||
|
|
||||||
$insert_into_result = $this->BookmarkModel->insert([
|
$insert_into_result = $this->BookmarkModel->insert(['uid'=>$this->uid, 'url'=>$url, 'title'=>$title,'tag'=>$tag, 'insertvon'=>$this->uid, 'updateamum'=>NULL, 'updatevon'=>NULL]);
|
||||||
'uid' => $this->uid,
|
|
||||||
'url' => $url,
|
|
||||||
'title' => $title,
|
|
||||||
'tag' => $tag,
|
|
||||||
'insertvon' => $this->uid,
|
|
||||||
'updateamum' => null,
|
|
||||||
'updatevon' => null,
|
|
||||||
'sort' => $sort
|
|
||||||
]);
|
|
||||||
|
|
||||||
$insert_into_result = $this->getDataOrTerminateWithError($insert_into_result);
|
$insert_into_result = $this->getDataOrTerminateWithError($insert_into_result);
|
||||||
|
|
||||||
$this->terminateWithSuccess($insert_into_result);
|
$this->terminateWithSuccess($insert_into_result);
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* updates bookmark in the bookmark table
|
* updates bookmark in the bookmark table
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function update($bookmark_id)
|
public function update($bookmark_id)
|
||||||
{
|
{
|
||||||
// form validation
|
// form validation
|
||||||
$this->load->library('form_validation');
|
$this->load->library('form_validation');
|
||||||
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
||||||
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
||||||
if (!$this->form_validation->run())
|
if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$url = $this->input->post('url', true);
|
$url = $this->input->post('url',true);
|
||||||
$title = $this->input->post('title', true);
|
$title = $this->input->post('title',true);
|
||||||
$tag = $this->input->post('tag', true);
|
|
||||||
if (is_array($tag)) {
|
|
||||||
$tag = json_encode($tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
$now = new DateTime();
|
$now = new DateTime();
|
||||||
$now = $now->format('Y-m-d H:i:s');
|
$now = $now->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
$update_result = $this->BookmarkModel->update($bookmark_id, [
|
$update_result = $this->BookmarkModel->update($bookmark_id,['url'=>$url, 'title'=>$title,'updateamum'=>$now]);
|
||||||
'url' => $url,
|
|
||||||
'title' => $title,
|
|
||||||
'tag' => $tag,
|
|
||||||
'updateamum' => $now
|
|
||||||
]);
|
|
||||||
|
|
||||||
$update_result = $this->getDataOrTerminateWithError($update_result);
|
$update_result = $this->getDataOrTerminateWithError($update_result);
|
||||||
|
|
||||||
$this->terminateWithSuccess($update_result);
|
$this->terminateWithSuccess($update_result);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
}
|
||||||
* changes sort of two bookmarks in the bookmark table
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function changeOrder($bookmark_id1, $bookmark_id2)
|
|
||||||
{
|
|
||||||
$update_result = [];
|
|
||||||
|
|
||||||
$result1 = $this->BookmarkModel->load($bookmark_id1);
|
|
||||||
$data1 = $this->getDataOrTerminateWithError($result1);
|
|
||||||
$sort1 = current($data1)->sort;
|
|
||||||
|
|
||||||
$result2 = $this->BookmarkModel->load(["bookmark_id"=>$bookmark_id2]);
|
|
||||||
$data2 = $this->getDataOrTerminateWithError($result2);
|
|
||||||
$sort2 = current($data2)->sort;
|
|
||||||
|
|
||||||
$update_result1 = $this->BookmarkModel->update($bookmark_id1, [
|
|
||||||
'sort' => $sort2
|
|
||||||
]);
|
|
||||||
$update_result[] = $this->getDataOrTerminateWithError($update_result1);
|
|
||||||
|
|
||||||
$update_result2 = $this->BookmarkModel->update($bookmark_id2, [
|
|
||||||
'sort' => $sort1
|
|
||||||
]);
|
|
||||||
$update_result[] = $this->getDataOrTerminateWithError($update_result2);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($update_result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class Cis4FhcApi extends FHCAPI_Controller
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'dashboardViewData' => self::PERM_LOGGED,
|
'getViewData' => self::PERM_LOGGED,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -36,22 +36,17 @@ class Cis4FhcApi extends FHCAPI_Controller
|
|||||||
// Public methods
|
// Public methods
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* retrieves view data for dashboard view
|
* fetches ViewData
|
||||||
* @access public
|
*/
|
||||||
* @param $uid the userID for which profile is being viewed, null or missing value implies one's own profile
|
public function getViewData()
|
||||||
*/
|
|
||||||
public function dashboardViewData()
|
|
||||||
{
|
{
|
||||||
$this->load->model('person/Person_model','PersonModel');
|
$this->load->model('person/Person_model','PersonModel');
|
||||||
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
||||||
|
|
||||||
$this->load->config('calendar');
|
|
||||||
|
|
||||||
$viewData = array(
|
$viewData = array(
|
||||||
'uid' => getAuthUID(),
|
'uid' => getAuthUID(),
|
||||||
'name' => $personData->vorname,
|
'name' => $personData->vorname,
|
||||||
'person_id' => $personData->person_id,
|
'person_id' => $personData->person_id
|
||||||
'timezone' => $this->config->item('timezone'),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->terminateWithSuccess($viewData);
|
$this->terminateWithSuccess($viewData);
|
||||||
|
|||||||
@@ -16,8 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
|
|
||||||
class CisMenu extends FHCAPI_Controller
|
class CisMenu extends FHCAPI_Controller
|
||||||
@@ -39,88 +38,21 @@ class CisMenu extends FHCAPI_Controller
|
|||||||
//------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
// Public methods
|
// Public methods
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetches the menu for CIS from the database based on the userLanguage
|
* fetches the menu for CIS from the database based on the userLanguage
|
||||||
*/
|
*/
|
||||||
public function getMenu()
|
public function getMenu()
|
||||||
{
|
{
|
||||||
$this->load->model('content/Content_model', 'ContentModel');
|
$this->load->model('content/Content_model', 'ContentModel');
|
||||||
$this->load->config('cis');
|
$this->load->config('cis');
|
||||||
$cis4_content_id = $this->config->item('cis_menu_root_content_id');
|
$cis4_content_id =$this->config->item('cis_menu_root_content_id');
|
||||||
$result = $this->ContentModel->getMenu($cis4_content_id, getAuthUID(), getUserLanguage());
|
$result = $this->ContentModel->getMenu($cis4_content_id, getAuthUID(),getUserLanguage());
|
||||||
$result = $this->getDataOrTerminateWithError($result);
|
$result = $this->getDataOrTerminateWithError($result);
|
||||||
$menu = $result->childs ?? [];
|
$menu = $result->childs ?? [];
|
||||||
|
|
||||||
$menu = $this->generateUrlsForMenuItems($menu);
|
|
||||||
$this->terminateWithSuccess($menu);
|
$this->terminateWithSuccess($menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateUrlsForMenuItems($menuItems)
|
|
||||||
{
|
|
||||||
return array_map(
|
|
||||||
function ($menuItem) {
|
|
||||||
return $this->generateUrlForMenuItem($menuItem);
|
|
||||||
},
|
|
||||||
$menuItems
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function generateUrlForMenuItem($menuItem)
|
|
||||||
{
|
|
||||||
$menuItem->url = $this->menuItemUrlHelper($menuItem);
|
|
||||||
unset($menuItem->content);
|
|
||||||
|
|
||||||
if ($menuItem->childs && count($menuItem->childs)) {
|
|
||||||
$menuItem->childs = $this->generateUrlsForMenuItems($menuItem->childs);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $menuItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function menuItemUrlHelper($menuItem)
|
|
||||||
{
|
|
||||||
if ($menuItem->template_kurzbz !== 'redirect') {
|
|
||||||
return site_url("/CisVue/Cms/content/" . $menuItem->content_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$menuItem->content || !mb_strlen($menuItem->content)) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$doc = new DOMDocument();
|
|
||||||
$doc->loadXML($menuItem->content);
|
|
||||||
$urlElem = $doc->getElementsByTagName('url')->item(0);
|
|
||||||
|
|
||||||
if (!$urlElem) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$url = $urlElem->textContent;
|
|
||||||
|
|
||||||
if (strpos($url, '../cms/news.php') !== false) {
|
|
||||||
$newsRegex = '/^\.\.\/cms\/news\.php/';
|
|
||||||
$url = preg_replace($newsRegex, site_url("/CisVue/Cms/news"), $url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strpos($url, '../cms/content.php?') !== false) {
|
|
||||||
$contentRegex = '/^\.\.\/cms\/content\.php\?content_id=([0-9]+)/';
|
|
||||||
$matches = [];
|
|
||||||
preg_match($contentRegex, $url, $matches);
|
|
||||||
$url = site_url('/CisVue/Cms/content/' . $matches[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strpos($url, '../index.ci.php') !== false) {
|
|
||||||
$indexRegex = '/^\.\.\/index\.ci\.php/';
|
|
||||||
$url = preg_replace($indexRegex, site_url(), $url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strpos($url, '../') !== false) {
|
|
||||||
$relativeRegex = '/^\.\.\//';
|
|
||||||
$url = preg_replace($relativeRegex, base_url(), $url);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $url;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ class Documents extends FHCAPI_Controller
|
|||||||
$this->load->model('system/Vorlage_model', 'VorlageModel');
|
$this->load->model('system/Vorlage_model', 'VorlageModel');
|
||||||
|
|
||||||
$result = $this->VorlageModel->load($xsl);
|
$result = $this->VorlageModel->load($xsl);
|
||||||
|
$this->addMeta("ress", $result);
|
||||||
$vorlage = current($this->getDataOrTerminateWithError($result));
|
$vorlage = current($this->getDataOrTerminateWithError($result));
|
||||||
if (!$vorlage)
|
if (!$vorlage)
|
||||||
show_404();
|
show_404();
|
||||||
@@ -220,7 +221,7 @@ class Documents extends FHCAPI_Controller
|
|||||||
'gedruckt' => true,
|
'gedruckt' => true,
|
||||||
'insertamum' => date('c'),
|
'insertamum' => date('c'),
|
||||||
'insertvon' => getAuthUID(),
|
'insertvon' => getAuthUID(),
|
||||||
'uid' => $this->input->post_get('uid') ?: null,
|
'uid' => $this->input->post_get('uid') ?: '',
|
||||||
'archiv' => true,
|
'archiv' => true,
|
||||||
'signiert' => !!$sign_user,
|
'signiert' => !!$sign_user,
|
||||||
'stud_selfservice' => $vorlage->stud_selfservice
|
'stud_selfservice' => $vorlage->stud_selfservice
|
||||||
@@ -250,9 +251,6 @@ class Documents extends FHCAPI_Controller
|
|||||||
'studiensemester_kurzbz' => $ss,
|
'studiensemester_kurzbz' => $ss,
|
||||||
'student_uid' => $akteData['uid']
|
'student_uid' => $akteData['uid']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithError($this->p->t("stv", "error_noLehrverbandAssigned"));
|
|
||||||
|
|
||||||
$res = current($this->getDataOrTerminateWithError($result));
|
$res = current($this->getDataOrTerminateWithError($result));
|
||||||
|
|
||||||
$studiengang_kz = $res->studiengang_kz;
|
$studiengang_kz = $res->studiengang_kz;
|
||||||
@@ -334,7 +332,6 @@ class Documents extends FHCAPI_Controller
|
|||||||
if ($prestudent_id) {
|
if ($prestudent_id) {
|
||||||
$this->load->model('crm/prestudent_model', 'PrestudentModel');
|
$this->load->model('crm/prestudent_model', 'PrestudentModel');
|
||||||
$this->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
$this->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
||||||
$this->PrestudentModel->addSelect('tbl_prestudent.*, UPPER(typ || kurzbz) AS kuerzel');
|
|
||||||
$result = $this->PrestudentModel->load($prestudent_id);
|
$result = $this->PrestudentModel->load($prestudent_id);
|
||||||
$prestudent = current($this->getDataOrTerminateWithError($result));
|
$prestudent = current($this->getDataOrTerminateWithError($result));
|
||||||
|
|
||||||
@@ -445,10 +442,6 @@ class Documents extends FHCAPI_Controller
|
|||||||
'betreuerart_kurzbz',
|
'betreuerart_kurzbz',
|
||||||
'studiensemester_kurzbz'
|
'studiensemester_kurzbz'
|
||||||
] as $key) {
|
] as $key) {
|
||||||
if (in_array($xsl, array('Ausbildungsver', 'AusbVerEng')) && $key === 'uid')
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$value = $this->input->post_get($key);
|
$value = $this->input->post_get($key);
|
||||||
if ($value !== null)
|
if ($value !== null)
|
||||||
$params .= '&' . $key . '=' . urlencode($value);
|
$params .= '&' . $key . '=' . urlencode($value);
|
||||||
|
|||||||
@@ -39,9 +39,33 @@ class Lehre extends FHCAPI_Controller
|
|||||||
'lvStudentenMail' => self::PERM_LOGGED,
|
'lvStudentenMail' => self::PERM_LOGGED,
|
||||||
'LV' => self::PERM_LOGGED,
|
'LV' => self::PERM_LOGGED,
|
||||||
'Pruefungen' => self::PERM_LOGGED,
|
'Pruefungen' => self::PERM_LOGGED,
|
||||||
'semesterAverageGrade' => self::PERM_LOGGED,
|
'getStudentProjektarbeiten' => self::PERM_LOGGED, // TODO: abgabetool berechtigung?
|
||||||
|
'getStudentProjektabgaben' => self::PERM_LOGGED,
|
||||||
|
'postStudentProjektarbeitZwischenabgabe' => self::PERM_LOGGED,
|
||||||
|
'postStudentProjektarbeitEndupload' => self::PERM_LOGGED,
|
||||||
|
'getMitarbeiterProjektarbeiten' => self::PERM_LOGGED,
|
||||||
|
'postProjektarbeitAbgabe' => self::PERM_LOGGED,
|
||||||
|
'deleteProjektarbeitAbgabe' => self::PERM_LOGGED,
|
||||||
|
'postSerientermin' => self::PERM_LOGGED,
|
||||||
|
'fetchDeadlines' => self::PERM_LOGGED // TODO: mitarbeiter recht prüfen
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$this->load->library('PhrasesLib');
|
||||||
|
|
||||||
|
$this->loadPhrases(
|
||||||
|
array(
|
||||||
|
'global',
|
||||||
|
'ui',
|
||||||
|
'abgabetool'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->helper('hlp_sancho_helper');
|
||||||
|
|
||||||
|
require_once(FHCPATH . 'include/studiengang.class.php');
|
||||||
|
require_once(FHCPATH . 'include/student.class.php');
|
||||||
|
require_once(FHCPATH . 'include/projektarbeit.class.php');
|
||||||
|
require_once(FHCPATH . 'include/projektbetreuer.class.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
@@ -103,47 +127,555 @@ class Lehre extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* calculates and returns the grade average and weighted average for a specific semester
|
* fetches all projektabgabetermine for a given projektarbeit_id used in cis4 student abgabetool
|
||||||
* @param string $studiensemester_kurzbz
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
|
public function getStudentProjektabgaben() {
|
||||||
|
$projektarbeit_id = $this->input->get("projektarbeit_id",TRUE);
|
||||||
|
|
||||||
public function semesterAverageGrade($studiensemester_kurzbz)
|
// TODO: error messages
|
||||||
|
|
||||||
|
if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
$projektarbeit_obj = new projektarbeit();
|
||||||
|
if($projektarbeit_id==-1)
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
if(!$projektarbeit_obj->load($projektarbeit_id))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
$paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
|
||||||
|
|
||||||
|
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
$ret = $this->ProjektarbeitModel->getProjektarbeitAbgabetermine($projektarbeit_id);
|
||||||
|
|
||||||
|
// TODO: fetch zweitbetreuer
|
||||||
|
|
||||||
|
$this->terminateWithSuccess(array($ret, $paIsCurrent));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fetches all projektarbeiten and betreuer for a given student_uid used in cis4 student abgabetool
|
||||||
|
*/
|
||||||
|
public function getStudentProjektarbeiten($uid)
|
||||||
{
|
{
|
||||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||||
$semesterLvs = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage());
|
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
|
||||||
if (isError($semesterLvs))
|
if (!isset($uid) || isEmptyString($uid))
|
||||||
return $this->outputJsonError(getError($semesterLvs));
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
$semesterLvsData = getData($semesterLvs);
|
$isZugeteilterBetreuer = count($this->ProjektarbeitModel->checkZuordnung($uid, getAuthUID())->retval) > 0;
|
||||||
|
$this->addMeta('isZugeteilterBetreuer', $isZugeteilterBetreuer);
|
||||||
|
$isMitarbeiter = $this->MitarbeiterModel->isMitarbeiter(getAuthUID());
|
||||||
|
|
||||||
$doGradesExist = false;
|
if ($isMitarbeiter && $isZugeteilterBetreuer){
|
||||||
$sum = 0;
|
$projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer($uid);
|
||||||
$count = 0;
|
} else {
|
||||||
$sumWeighted = 0;
|
$projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer(getAuthUID());
|
||||||
$sumEcts = 0;
|
|
||||||
|
|
||||||
foreach ($semesterLvsData as $lv) {
|
|
||||||
if (!$lv->znote || $lv->znote < 1 || $lv->znote > 5)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
$doGradesExist = true;
|
|
||||||
|
|
||||||
$sum += $lv->znote;
|
|
||||||
$count++;
|
|
||||||
$sumWeighted += $lv->znote * floatval($lv->ects);
|
|
||||||
$sumEcts += floatval($lv->ects);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$averageGrade = null;
|
$this->terminateWithSuccess(array($projektarbeiten, DOMAIN, $uid));
|
||||||
$weightedAverageGrade = null;
|
}
|
||||||
if ($doGradesExist) {
|
|
||||||
$averageGrade = $sum/$count;
|
|
||||||
$weightedAverageGrade = $sumWeighted/$sumEcts;
|
|
||||||
|
/**
|
||||||
|
* projektarbeit - upload for zwischenabgaben in cis4 student abgabetool
|
||||||
|
*/
|
||||||
|
public function postStudentProjektarbeitZwischenabgabe()
|
||||||
|
{
|
||||||
|
|
||||||
|
$projektarbeit_id = $_POST['projektarbeit_id'];
|
||||||
|
$paabgabe_id = $_POST['paabgabe_id'];
|
||||||
|
$student_uid = $_POST['student_uid'];
|
||||||
|
$bperson_id = $_POST['bperson_id'];
|
||||||
|
$paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz'];
|
||||||
|
|
||||||
|
if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id)
|
||||||
|
|| !isset($paabgabe_id) || isEmptyString($paabgabe_id)
|
||||||
|
|| !isset($student_uid) || isEmptyString($student_uid)
|
||||||
|
|| !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) {
|
||||||
|
move_uploaded_file($_FILES['file']['tmp_name'], PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf');
|
||||||
|
|
||||||
|
if(file_exists(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf')) {
|
||||||
|
|
||||||
|
exec('chmod 640 "'.PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'.'"');
|
||||||
|
|
||||||
|
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||||
|
$res = $this->PaabgabeModel->update($paabgabe_id, array(
|
||||||
|
'abgabedatum' => date('Y-m-d'),
|
||||||
|
'updatevon' => getAuthUID(),
|
||||||
|
'updateamum' => date('Y-m-d H:i:s')
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid);
|
||||||
|
$this->terminateWithSuccess($res);
|
||||||
|
} else {
|
||||||
|
$this->terminateWithError('Error moving File');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->terminateWithError('File missing');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->terminateWithSuccess(['average_grade' => $averageGrade, 'weighted_average_grade' => $weightedAverageGrade]);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* upload für finale abgaben aka Endupload in cis4 student abgabetool
|
||||||
|
*/
|
||||||
|
public function postStudentProjektarbeitEndupload()
|
||||||
|
{
|
||||||
|
|
||||||
|
$projektarbeit_id = $_POST['projektarbeit_id'];
|
||||||
|
$paabgabe_id = $_POST['paabgabe_id'];
|
||||||
|
$student_uid = $_POST['student_uid'];
|
||||||
|
$sprache = $_POST['sprache'];
|
||||||
|
$abstract = $_POST['abstract'];
|
||||||
|
$abstract_en = $_POST['abstract_en'];
|
||||||
|
$schlagwoerter = $_POST['schlagwoerter'];
|
||||||
|
$schlagwoerter_en = $_POST['schlagwoerter_en'];
|
||||||
|
$seitenanzahl = $_POST['seitenanzahl'];
|
||||||
|
$bperson_id = $_POST['bperson_id'];
|
||||||
|
$paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz'];
|
||||||
|
|
||||||
|
if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id)
|
||||||
|
|| !isset($paabgabe_id) || isEmptyString($paabgabe_id)
|
||||||
|
|| !isset($student_uid) || isEmptyString($student_uid)
|
||||||
|
|| !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
// TODO: maybe check for other params aswell?
|
||||||
|
|
||||||
|
if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) {
|
||||||
|
move_uploaded_file($_FILES['file']['tmp_name'], PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf');
|
||||||
|
|
||||||
|
if(file_exists(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf')) {
|
||||||
|
|
||||||
|
// Loads Libraries
|
||||||
|
$this->load->library('SignatureLib');
|
||||||
|
|
||||||
|
// Check if the document is signed
|
||||||
|
$signaturVorhanden = true;
|
||||||
|
$signList = SignatureLib::list(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf');
|
||||||
|
if (is_array($signList) && count($signList) > 0)
|
||||||
|
{
|
||||||
|
// The document is signed
|
||||||
|
$uploadedDocumentSigned = 'The document is signed';
|
||||||
|
}
|
||||||
|
elseif ($signList === null)
|
||||||
|
{
|
||||||
|
$uploadedDocumentSigned = 'WARNING: signature server error';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$signaturVorhanden = false;
|
||||||
|
$uploadedDocumentSigned = 'No document signature found';
|
||||||
|
}
|
||||||
|
$this->addMeta('signaturInfo', $uploadedDocumentSigned);
|
||||||
|
|
||||||
|
if ($signaturVorhanden === false)
|
||||||
|
{
|
||||||
|
$this->signaturFehltEmail($student_uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO error handle get data has data the updates
|
||||||
|
// update projektarbeit cols
|
||||||
|
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
$this->ProjektarbeitModel->updateProjektarbeit($projektarbeit_id,$sprache,$abstract,$abstract_en
|
||||||
|
,$schlagwoerter, $schlagwoerter_en, $seitenanzahl);
|
||||||
|
|
||||||
|
|
||||||
|
// update paabgabe datum
|
||||||
|
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||||
|
$res = $this->PaabgabeModel->update($paabgabe_id, array(
|
||||||
|
'abgabedatum' => date('Y-m-d'),
|
||||||
|
'updatevon' => getAuthUID(),
|
||||||
|
'updateamum' => date('Y-m-d H:i:s')
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($res);
|
||||||
|
} else {
|
||||||
|
$this->terminateWithError('Error moving File');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->terminateWithError('File missing');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function signaturFehltEmail($student_uid) {
|
||||||
|
|
||||||
|
|
||||||
|
// Mail an Studiengang wenn keine Signatur gefunden wurde
|
||||||
|
$student = new student();
|
||||||
|
if(!$student->load($student_uid))
|
||||||
|
$this->terminateWithError($this->p->t('global','userNichtGefunden'), 'general');
|
||||||
|
|
||||||
|
$stg_obj = new studiengang();
|
||||||
|
if(!$stg_obj->load($student->studiengang_kz))
|
||||||
|
$this->terminateWithError($this->p->t('global','fehlerBeimLesenAusDatenbank'), 'general');
|
||||||
|
|
||||||
|
$subject = 'Abgabe ohne Signatur';
|
||||||
|
$tomail = $stg_obj->email;
|
||||||
|
$data = array(
|
||||||
|
'vorname' => $student->vorname,
|
||||||
|
'nachname' => $student->nachname,
|
||||||
|
'studiengang' => $stg_obj->bezeichnung
|
||||||
|
);
|
||||||
|
|
||||||
|
$mailres = sendSanchoMail(
|
||||||
|
'ParbeitsbeurteilungSiganturFehlt',
|
||||||
|
$data,
|
||||||
|
$tomail,
|
||||||
|
$subject,
|
||||||
|
'sancho_header_min_bw.jpg',
|
||||||
|
'sancho_footer_min_bw.jpg'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid) {
|
||||||
|
|
||||||
|
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
|
||||||
|
$resBetr = $this->ProjektarbeitModel->getProjektbetreuerAnrede($bperson_id);
|
||||||
|
|
||||||
|
$projektarbeit_obj = new projektarbeit();
|
||||||
|
|
||||||
|
if(!$projektarbeit_obj->load($projektarbeit_id))
|
||||||
|
$this->terminateWithError('Ungueltiger Eintrag');
|
||||||
|
|
||||||
|
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
|
||||||
|
|
||||||
|
if( null === $num_rows_sem || false === $num_rows_sem )
|
||||||
|
{
|
||||||
|
$this->terminateWithError($this->p->t('abgabetool','fehlerAktualitaetProjektarbeit'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($resBetr->retval as $betreuerRow) {
|
||||||
|
|
||||||
|
// query student benutzer view for every betreuer row
|
||||||
|
$studentUser = $this->ProjektarbeitModel->getProjektarbeitBenutzer($student_uid)->retval[0];
|
||||||
|
|
||||||
|
// TODO: hasdata, getData etc
|
||||||
|
|
||||||
|
// 1. Begutachter mail ohne Token
|
||||||
|
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter";
|
||||||
|
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid;
|
||||||
|
$projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz;
|
||||||
|
$subject = $projektarbeit_obj->projekttyp_kurzbz == 'Diplom' ? 'Masterarbeitsbetreuung' : 'Bachelorarbeitsbetreuung';
|
||||||
|
$abgabetyp = $paabgabetyp_kurzbz == 'end' ? 'Endabgabe' : 'Zwischenabgabe';
|
||||||
|
|
||||||
|
$maildata = array();
|
||||||
|
$maildata['geehrt'] = "geehrte".($betreuerRow->anrede=="Herr"?"r":"");
|
||||||
|
$maildata['anrede'] = $betreuerRow->anrede;
|
||||||
|
$maildata['betreuer_voller_name'] = $betreuerRow->first;
|
||||||
|
$maildata['student_anrede'] = $studentUser->anrede;
|
||||||
|
$maildata['student_voller_name'] = trim($studentUser->titelpre." ".$studentUser->vorname." ".$studentUser->nachname." ".$studentUser->titelpost);
|
||||||
|
$maildata['abgabetyp'] = $abgabetyp;
|
||||||
|
$maildata['parbeituebersichtlink'] = "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>";
|
||||||
|
$maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
|
||||||
|
$maildata['token'] = "";
|
||||||
|
|
||||||
|
$mailres = sendSanchoMail(
|
||||||
|
'ParbeitsbeurteilungEndupload',
|
||||||
|
$maildata,
|
||||||
|
$betreuerRow->mitarbeiter_uid."@".DOMAIN,
|
||||||
|
$subject,
|
||||||
|
'sancho_header_min_bw.jpg',
|
||||||
|
'sancho_footer_min_bw.jpg',
|
||||||
|
get_uid()."@".DOMAIN);
|
||||||
|
|
||||||
|
if(!$mailres)
|
||||||
|
{
|
||||||
|
$this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern
|
||||||
|
if ($paabgabetyp_kurzbz == 'end')
|
||||||
|
{
|
||||||
|
// Zweitbegutachter holen
|
||||||
|
$zweitbegutachter = new projektbetreuer();
|
||||||
|
$zweitbegutachterRes = $zweitbegutachter->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid);
|
||||||
|
|
||||||
|
if ($zweitbegutachterRes)
|
||||||
|
{
|
||||||
|
$zweitbegutachterResults = $zweitbegutachter->result;
|
||||||
|
|
||||||
|
foreach ($zweitbegutachterResults as $begutachter)
|
||||||
|
{
|
||||||
|
// token generieren, wenn noch nicht vorhanden und notwendig (wird in methode überprüft)
|
||||||
|
$tokenGenRes = $zweitbegutachter->generateZweitbegutachterToken($begutachter->person_id, $projektarbeit_id);
|
||||||
|
|
||||||
|
if (!$tokenGenRes)
|
||||||
|
{
|
||||||
|
$this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zweitbegutachter (evtl. mit Token) holen
|
||||||
|
$zweitbegutachterMitToken = new projektbetreuer();
|
||||||
|
$begutachterMitTokenRes = $zweitbegutachterMitToken->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid, $begutachter->person_id);
|
||||||
|
|
||||||
|
if (!$begutachterMitTokenRes)
|
||||||
|
{
|
||||||
|
$this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Email an Zweitbegutachter senden
|
||||||
|
if (isset($zweitbegutachterMitToken->result[0]))
|
||||||
|
{
|
||||||
|
$begutachterMitToken = $zweitbegutachterMitToken->result[0];
|
||||||
|
|
||||||
|
$path = $begutachterMitToken->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter';
|
||||||
|
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$path";
|
||||||
|
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid;
|
||||||
|
$intern = isset($begutachterMitToken->uid);
|
||||||
|
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
|
||||||
|
|
||||||
|
$zweitbetmaildata = array();
|
||||||
|
$zweitbetmaildata['geehrt'] = "geehrte" . ($begutachterMitToken->anrede == "Herr" ? "r" : "");
|
||||||
|
$zweitbetmaildata['anrede'] = $begutachterMitToken->anrede;
|
||||||
|
$zweitbetmaildata['betreuer_voller_name'] = $begutachterMitToken->voller_name;
|
||||||
|
$zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
|
||||||
|
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
|
||||||
|
$zweitbetmaildata['abgabetyp'] = $abgabetyp;
|
||||||
|
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
|
||||||
|
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
|
||||||
|
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $begutachterMitToken->zugangstoken . "</p>" : "";
|
||||||
|
|
||||||
|
$mailres = sendSanchoMail(
|
||||||
|
'ParbeitsbeurteilungEndupload',
|
||||||
|
$zweitbetmaildata,
|
||||||
|
$begutachterMitToken->email,
|
||||||
|
$subject,
|
||||||
|
'sancho_header_min_bw.jpg',
|
||||||
|
'sancho_footer_min_bw.jpg',
|
||||||
|
get_uid()."@".DOMAIN
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!$mailres)
|
||||||
|
{
|
||||||
|
$this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMitarbeiterProjektarbeiten() {
|
||||||
|
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
|
||||||
|
$boolParamStr = $this->input->get('showall');
|
||||||
|
$trueStrings = ['true', '1'];
|
||||||
|
$falseStrings = ['false', '0'];
|
||||||
|
|
||||||
|
// Handle missing or invalid parameter
|
||||||
|
if ($boolParamStr === null) {
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
}
|
||||||
|
$boolParamStrLower = strtolower($boolParamStr);
|
||||||
|
|
||||||
|
if (in_array($boolParamStrLower, $trueStrings, true)) {
|
||||||
|
$showAllBool = true;
|
||||||
|
} elseif (in_array($boolParamStrLower, $falseStrings, true)) {
|
||||||
|
$showAllBool = false;
|
||||||
|
} else {
|
||||||
|
// $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
$projektarbeiten = $this->ProjektarbeitModel->getMitarbeiterProjektarbeiten(getAuthUID(), $showAllBool);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess(array($projektarbeiten, DOMAIN));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function postProjektarbeitAbgabe() {
|
||||||
|
$projektarbeit_id = $_POST['projektarbeit_id'];
|
||||||
|
$paabgabe_id = $_POST['paabgabe_id'];
|
||||||
|
$paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz'];
|
||||||
|
$datum = $_POST['datum'];
|
||||||
|
$fixtermin = $_POST['fixtermin'];
|
||||||
|
$kurzbz = $_POST['kurzbz'];
|
||||||
|
|
||||||
|
if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id)
|
||||||
|
|| !isset($paabgabe_id) || isEmptyString($paabgabe_id)
|
||||||
|
|| !isset($datum) || isEmptyString($datum)
|
||||||
|
|| !isset($datum) || isEmptyString($datum)
|
||||||
|
|| !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||||
|
|
||||||
|
if($paabgabe_id == -1) {
|
||||||
|
$result = $this->PaabgabeModel->insert(
|
||||||
|
array(
|
||||||
|
'projektarbeit_id' => $projektarbeit_id,
|
||||||
|
'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz,
|
||||||
|
'fixtermin' => $fixtermin,
|
||||||
|
'datum' => $datum,
|
||||||
|
'kurzbz' => $kurzbz,
|
||||||
|
'insertvon' => getAuthUID(),
|
||||||
|
'insertamum' => date('Y-m-d H:i:s')
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($result);
|
||||||
|
} else {
|
||||||
|
$result = $this->PaabgabeModel->update(
|
||||||
|
$paabgabe_id,
|
||||||
|
array(
|
||||||
|
'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz,
|
||||||
|
'datum' => $datum,
|
||||||
|
'kurzbz' => $kurzbz,
|
||||||
|
'updatevon' => getAuthUID(),
|
||||||
|
'updateamum' => date('Y-m-d H:i:s')
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteProjektarbeitAbgabe() {
|
||||||
|
$paabgabe_id = $_POST['paabgabe_id'];
|
||||||
|
|
||||||
|
if (!isset($paabgabe_id) || isEmptyString($paabgabe_id))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||||
|
|
||||||
|
$result = $this->PaabgabeModel->load($paabgabe_id);
|
||||||
|
$result = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
if(count($result) == 0)
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
// TODO: berechtigung?
|
||||||
|
if($result[0]->insertvon === getAuthUID()) {
|
||||||
|
$result = $this->PaabgabeModel->delete($paabgabe_id);
|
||||||
|
$result = $this->getDataOrTerminateWithError($result);
|
||||||
|
$this->terminateWithSuccess($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* endpoint for adding the same paabgabe for multiple projektarbeiten
|
||||||
|
* can be slow for large n since it queries twice per projektarbeit_id
|
||||||
|
*/
|
||||||
|
public function postSerientermin() {
|
||||||
|
$projektarbeit_ids = $_POST['projektarbeit_ids'];
|
||||||
|
$datum = $_POST['datum'];
|
||||||
|
$paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz'];
|
||||||
|
$bezeichnung = $_POST['bezeichnung'];
|
||||||
|
$kurzbz = $_POST['kurzbz'];
|
||||||
|
|
||||||
|
if (!isset($projektarbeit_ids) || !is_array($projektarbeit_ids) || empty($projektarbeit_ids)
|
||||||
|
|| !isset($datum) || isEmptyString($datum)
|
||||||
|
|| !isset($kurzbz) || isEmptyString($kurzbz)
|
||||||
|
|| !isset($bezeichnung) || isEmptyString($bezeichnung)
|
||||||
|
|| !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz))
|
||||||
|
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||||
|
|
||||||
|
// old script checks if there already are tbl_paabgabe entries with exact date, type & kurzbz
|
||||||
|
// for each termin - good to check that in principle but should not matter in this place. if necessary
|
||||||
|
// duplicate abgabetermine can be easily deleted manually, also via cronjob@night.
|
||||||
|
|
||||||
|
// since this entry includes the kurzbz string match, it should have only ever mattered when there were
|
||||||
|
// multiple users entering the exact same set of (date, type, kurzbz) - which is a much more narrow case than the
|
||||||
|
// general "saveMultiple" function should handle
|
||||||
|
|
||||||
|
// old script afterwards again queries if user is not the zweitbetreuer of any id - this is blocked in the ui
|
||||||
|
// and should never unintentionally happen
|
||||||
|
|
||||||
|
// TODO: check berechtigung &/|| zuordnung?
|
||||||
|
|
||||||
|
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||||
|
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||||
|
|
||||||
|
$res = [];
|
||||||
|
foreach ($projektarbeit_ids as $projektarbeit_id) {
|
||||||
|
|
||||||
|
$result = $this->PaabgabeModel->insert(
|
||||||
|
array(
|
||||||
|
'projektarbeit_id' => $projektarbeit_id,
|
||||||
|
'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz,
|
||||||
|
'fixtermin' => false,
|
||||||
|
'datum' => $datum,
|
||||||
|
'kurzbz' => $kurzbz,
|
||||||
|
'insertvon' => getAuthUID(),
|
||||||
|
'insertamum' => date('Y-m-d H:i:s')
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
// $res[] = $data;
|
||||||
|
|
||||||
|
// send mail to student
|
||||||
|
$result = $this->ProjektarbeitModel->getStudentInfoForProjektarbeitId($projektarbeit_id);
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
// $this->addMeta('emaildata'.$projektarbeit_id, $data);
|
||||||
|
|
||||||
|
$datetime = new DateTime($datum);
|
||||||
|
$dateEmailFormatted = $datetime->format('d.m.Y');
|
||||||
|
|
||||||
|
$anredeFillString = $data[0]->anrede=="Herr"?"r":"";
|
||||||
|
|
||||||
|
$fullFormattedNameString = trim($data[0]->titelpre." ".$data[0]->vorname." ".$data[0]->nachname." ".$data[0]->titelpost);
|
||||||
|
$res[] = $fullFormattedNameString;
|
||||||
|
|
||||||
|
// Prepare mail content
|
||||||
|
$body_fields = array(
|
||||||
|
'anrede' => $data[0]->anrede,
|
||||||
|
'anredeFillString' => $anredeFillString,
|
||||||
|
'datum' => $dateEmailFormatted,
|
||||||
|
'bezeichnung' => $bezeichnung,
|
||||||
|
'fullFormattedNameString' => $fullFormattedNameString,
|
||||||
|
'kurzbz' => $kurzbz
|
||||||
|
);
|
||||||
|
|
||||||
|
$email = $data[0]->uid."@".DOMAIN;
|
||||||
|
|
||||||
|
sendSanchoMail(
|
||||||
|
'neuerAbgabetermin',
|
||||||
|
$body_fields,
|
||||||
|
$email,
|
||||||
|
$this->p->t('abgabetool', 'neuerTerminBachelorMasterbetreuung')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($res);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fetchDeadlines() {
|
||||||
|
$person_id = $_POST['person_id'];
|
||||||
|
|
||||||
|
if (!isset($person_id) || isEmptyString($person_id))
|
||||||
|
$person_id = getAuthPersonId();
|
||||||
|
|
||||||
|
|
||||||
|
if($person_id !== getAuthPersonId()) {
|
||||||
|
$this->load->library('PermissionLib');
|
||||||
|
$isAdmin = $this->permissionlib->isBerechtigt('admin');
|
||||||
|
if(!$isAdmin) $this->terminateWithError($this->p->t('ui', 'keineBerechtigung'), 'general');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||||
|
$result = $this->PaabgabeModel->getDeadlines($person_id);
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,19 +119,7 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
|||||||
if (hasData($lehreinheiten_data))
|
if (hasData($lehreinheiten_data))
|
||||||
{
|
{
|
||||||
$lehreinheiten = getData($lehreinheiten_data);
|
$lehreinheiten = getData($lehreinheiten_data);
|
||||||
|
$rowData->_children = $lehreinheiten;
|
||||||
if (!isset($row->_children))
|
|
||||||
{
|
|
||||||
$row->_children = $lehreinheiten;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!is_array($row->_children))
|
|
||||||
{
|
|
||||||
$row->_children = [$row->_children];
|
|
||||||
}
|
|
||||||
$row->_children = array_merge($row->_children, $lehreinheiten);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isEmptyString($row->studienplan_lehrveranstaltung_id_parent))
|
if (!isEmptyString($row->studienplan_lehrveranstaltung_id_parent))
|
||||||
|
|||||||
@@ -16,8 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use CI3_Events as Events;
|
use CI3_Events as Events;
|
||||||
use \DateTime as DateTime;
|
use \DateTime as DateTime;
|
||||||
@@ -34,25 +33,19 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
|
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'getRoomplan' => self::PERM_LOGGED,
|
'getRoomplan' => self::PERM_LOGGED,
|
||||||
'Stunden' => self::PERM_LOGGED,
|
'Stunden' => self::PERM_LOGGED,
|
||||||
'getReservierungen' => self::PERM_LOGGED,
|
'getReservierungen' => self::PERM_LOGGED,
|
||||||
'LvPlanEvents' => self::PERM_LOGGED,
|
'LvPlanEvents' => self::PERM_LOGGED,
|
||||||
'eventsPersonal' => self::PERM_LOGGED,
|
'eventsPersonal' => self::PERM_LOGGED,
|
||||||
'eventsLv' => self::PERM_LOGGED,
|
'eventsLv' => self::PERM_LOGGED,
|
||||||
'getLehreinheitStudiensemester' => self::PERM_LOGGED,
|
'getLehreinheitStudiensemester' => self::PERM_LOGGED,
|
||||||
'studiensemesterDateInterval' => self::PERM_LOGGED,
|
'studiensemesterDateInterval' => self::PERM_LOGGED,
|
||||||
'getLvPlanForStudiensemester' => self::PERM_LOGGED,
|
'getLvPlanForStudiensemester' => self::PERM_LOGGED,
|
||||||
'getLv' => self::PERM_LOGGED,
|
'getLv' => self::PERM_LOGGED
|
||||||
'eventsStgOrg' => self::PERM_LOGGED,
|
|
||||||
'fetchFerienEvents' => self::PERM_LOGGED,
|
|
||||||
'getStudiengaenge' => self::PERM_LOGGED,
|
|
||||||
'getLehrverband' => self::PERM_LOGGED,
|
|
||||||
'permissionOtherLvPlan' => self::PERM_LOGGED,
|
|
||||||
'compactibleEventTypes' => self::PERM_LOGGED,
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->load->library('LogLib');
|
$this->load->library('LogLib');
|
||||||
$this->loglib->setConfigs(array(
|
$this->loglib->setConfigs(array(
|
||||||
'classIndex' => 5,
|
'classIndex' => 5,
|
||||||
'functionIndex' => 5,
|
'functionIndex' => 5,
|
||||||
'lineIndex' => 4,
|
'lineIndex' => 4,
|
||||||
@@ -60,17 +53,17 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
'dbExecuteUser' => 'RESTful API'
|
'dbExecuteUser' => 'RESTful API'
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->load->library('form_validation');
|
$this->load->library('form_validation');
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
// Public methods
|
// Public methods
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetches LvPlan and Moodle events together
|
* fetches LvPlan and Moodle events together
|
||||||
* @access public
|
* @access public
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function LvPlanEvents()
|
public function LvPlanEvents()
|
||||||
{
|
{
|
||||||
$hasLv = $this->input->post('lv_id');
|
$hasLv = $this->input->post('lv_id');
|
||||||
@@ -97,22 +90,16 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
// storing the post parameter in local variables
|
// storing the post parameter in local variables
|
||||||
$start_date = $this->input->post('start_date', true);
|
$start_date = $this->input->post('start_date', true);
|
||||||
$end_date = $this->input->post('end_date', true);
|
$end_date = $this->input->post('end_date', true);
|
||||||
$uid = $this->input->post('uid', true);
|
|
||||||
|
|
||||||
// disallow accessing other user's events if missing permission
|
|
||||||
if ($uid && $uid !== getAuthUID() && !$this->permissionlib->isBerechtigt('basis/other_lv_plan')) {
|
|
||||||
$this->terminateWithError("Missing permission to view other users' timetables!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// fetching lvplan events
|
// fetching lvplan events
|
||||||
$result = $this->stundenplanlib->getEventsUser($start_date, $end_date, $uid);
|
$result = $this->stundenplanlib->getEventsUser($start_date, $end_date);
|
||||||
$lvplanEvents = $this->getDataOrTerminateWithError($result);
|
$lvplanEvents = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
// fetching moodle events
|
// fetching moodle events
|
||||||
$moodleEvents = $this->fetchMoodleEvents($start_date, $end_date, $uid);
|
$moodleEvents = $this->fetchMoodleEvents($start_date, $end_date);
|
||||||
|
|
||||||
// fetching ferien events
|
// fetching ferien events
|
||||||
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date, $uid);
|
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
|
||||||
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array_merge(
|
$this->terminateWithSuccess(array_merge(
|
||||||
@@ -122,45 +109,6 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* fetches LvPlan for studiengang / semester / verband / gruppe
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
public function eventsStgOrg()
|
|
||||||
{
|
|
||||||
$this->load->library('StundenplanLib');
|
|
||||||
|
|
||||||
// form validation
|
|
||||||
$this->form_validation->set_rules('start_date', "start_date", "required");
|
|
||||||
$this->form_validation->set_rules('end_date', "end_date", "required");
|
|
||||||
//$this->form_validation->set_rules('stg_kz', "stg_kz", "required"); //no validation show empty calendar
|
|
||||||
|
|
||||||
if (!$this->form_validation->run()) {
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
$stgOrgEvents = [];
|
|
||||||
$ferienEvents = [];
|
|
||||||
} else {
|
|
||||||
$start_date = $this->input->post('start_date', true);
|
|
||||||
$end_date = $this->input->post('end_date', true);
|
|
||||||
$stg_kz = $this->input->post('stg_kz', true);
|
|
||||||
$sem = $this->input->post('sem', true);
|
|
||||||
$verband = $this->input->post('verband', true);
|
|
||||||
$gruppe = $this->input->post('gruppe', true);
|
|
||||||
|
|
||||||
$result = $this->stundenplanlib->getEventsStgOrg($start_date, $end_date, $stg_kz, $sem, $verband, $gruppe);
|
|
||||||
$stgOrgEvents = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$result = $this->stundenplanlib->fetchFerienTageEvents($start_date, $end_date, $stg_kz);
|
|
||||||
$ferienEvents = $this->getDataOrTerminateWithError($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array_merge(
|
|
||||||
$stgOrgEvents,
|
|
||||||
$ferienEvents
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetches LvPlan and Ferien events together for the lv
|
* fetches LvPlan and Ferien events together for the lv
|
||||||
*
|
*
|
||||||
@@ -190,6 +138,7 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
// fetching ferien events
|
// fetching ferien events
|
||||||
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
|
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
|
||||||
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array_merge(
|
$this->terminateWithSuccess(array_merge(
|
||||||
$lvplanEvents,
|
$lvplanEvents,
|
||||||
$ferienEvents
|
$ferienEvents
|
||||||
@@ -197,42 +146,40 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO: delete this function if we don't use the old calendar export endpoints anymore
|
//TODO: delete this function if we don't use the old calendar export endpoints anymore
|
||||||
public function studiensemesterDateInterval($date)
|
public function studiensemesterDateInterval($date){
|
||||||
{
|
$this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
$studiensemester =$this->StudiensemesterModel->getByDate(date_format(date_create($date),'Y-m-d'));
|
||||||
$studiensemester = $this->StudiensemesterModel->getByDate(date_format(date_create($date), 'Y-m-d'));
|
$studiensemester =current($this->getDataOrTerminateWithError($studiensemester));
|
||||||
$studiensemester = current($this->getDataOrTerminateWithError($studiensemester));
|
|
||||||
$this->terminateWithSuccess($studiensemester);
|
$this->terminateWithSuccess($studiensemester);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLvPlanForStudiensemester($studiensemester, $lvid)
|
public function getLvPlanForStudiensemester($studiensemester,$lvid){
|
||||||
{
|
|
||||||
$this->load->library('StundenplanLib');
|
$this->load->library('StundenplanLib');
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
$this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
|
||||||
|
|
||||||
$studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz" => $studiensemester]);
|
$studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz"=>$studiensemester]);
|
||||||
$studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result));
|
$studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result));
|
||||||
$timespan_start = new DateTime($studiensemester_result->start);
|
$timespan_start = new DateTime($studiensemester_result->start);
|
||||||
$timespan_ende = new DateTime($studiensemester_result->ende);
|
$timespan_ende = new DateTime($studiensemester_result->ende);
|
||||||
$lvplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'), date_format($timespan_ende, 'Y-m-d'), $lvid);
|
$lvplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'),date_format($timespan_ende, 'Y-m-d'), $lvid);
|
||||||
$this->terminateWithSuccess($lvplan);
|
$this->terminateWithSuccess($lvplan);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetches Stunden layout from database
|
* fetches Stunden layout from database
|
||||||
* @access public
|
* @access public
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function Stunden()
|
public function Stunden()
|
||||||
{
|
{
|
||||||
$this->load->model('ressource/Stunde_model', 'StundeModel');
|
$this->load->model('ressource/Stunde_model', 'StundeModel');
|
||||||
|
|
||||||
$this->StundeModel->addOrder('stunde', 'ASC');
|
$this->StundeModel->addOrder('stunde', 'ASC');
|
||||||
$stunden = $this->StundeModel->load();
|
$stunden = $this->StundeModel->load();
|
||||||
|
|
||||||
$stunden = $this->getDataOrTerminateWithError($stunden);
|
$stunden = $this->getDataOrTerminateWithError($stunden);
|
||||||
|
|
||||||
$this->terminateWithSuccess($stunden);
|
$this->terminateWithSuccess($stunden);
|
||||||
}
|
}
|
||||||
@@ -286,25 +233,18 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
// storing the post parameter in local variables
|
// storing the post parameter in local variables
|
||||||
$start_date = $this->input->post('start_date', true);
|
$start_date = $this->input->post('start_date', true);
|
||||||
$end_date = $this->input->post('end_date', true);
|
$end_date = $this->input->post('end_date', true);
|
||||||
$uid = $this->input->post('uid', true);
|
|
||||||
|
|
||||||
// disallow accessing other user's reservierungen if missing permission
|
|
||||||
if ($uid && $uid !== getAuthUID() && !$this->permissionlib->isBerechtigt('basis/other_lv_plan')) {
|
|
||||||
$this->terminateWithError("Missing permission to view other users' timetables!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// get data
|
// get data
|
||||||
$this->load->library('StundenplanLib');
|
$this->load->library('StundenplanLib');
|
||||||
|
|
||||||
$result = $this->stundenplanlib->getReservierungen($start_date, $end_date, $ort_kurzbz, $uid);
|
$result = $this->stundenplanlib->getReservierungen($start_date, $end_date, $ort_kurzbz);
|
||||||
|
|
||||||
$result = $this->getDataOrTerminateWithError($result);
|
$result = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$this->terminateWithSuccess($result);
|
$this->terminateWithSuccess($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLehreinheitStudiensemester($lehreinheit_id)
|
public function getLehreinheitStudiensemester($lehreinheit_id){
|
||||||
{
|
|
||||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||||
$this->LehreinheitModel->addSelect(["studiensemester_kurzbz"]);
|
$this->LehreinheitModel->addSelect(["studiensemester_kurzbz"]);
|
||||||
$result = $this->LehreinheitModel->load($lehreinheit_id);
|
$result = $this->LehreinheitModel->load($lehreinheit_id);
|
||||||
@@ -347,68 +287,6 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
return $this->terminateWithSuccess(current($result));
|
return $this->terminateWithSuccess(current($result));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStudiengaenge()
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
|
||||||
|
|
||||||
$this->StudiengangModel->addOrder('typ');
|
|
||||||
$this->StudiengangModel->addOrder('kurzbz');
|
|
||||||
$result = $this->StudiengangModel->loadWhere([
|
|
||||||
'aktiv' => true
|
|
||||||
]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getLehrverband($studiengang_kz, $semester = null, $verband = null)
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
|
|
||||||
|
|
||||||
$where = [
|
|
||||||
'aktiv' => true,
|
|
||||||
'studiengang_kz' => $studiengang_kz,
|
|
||||||
];
|
|
||||||
|
|
||||||
if ($semester !== null && $semester !== 'null' && $semester !== 'undefined') {
|
|
||||||
$where['semester'] = $semester;
|
|
||||||
}
|
|
||||||
if ($verband !== null && $verband !== 'null' && $verband !== 'undefined') {
|
|
||||||
$where['verband'] = $verband;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->LehrverbandModel->addOrder('studiengang_kz');
|
|
||||||
$this->LehrverbandModel->addOrder('semester');
|
|
||||||
$this->LehrverbandModel->addOrder('verband');
|
|
||||||
$this->LehrverbandModel->addOrder('gruppe');
|
|
||||||
$result = $this->LehrverbandModel->loadWhere($where);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the current user has permission to view other users' timetables
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function permissionOtherLvPlan()
|
|
||||||
{
|
|
||||||
$this->terminateWithSuccess($this->permissionlib->isBerechtigt('basis/other_lv_plan'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get event types which can be compacted in lv plan display
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function compactibleEventTypes()
|
|
||||||
{
|
|
||||||
$this->terminateWithSuccess(["lehreinheit", "reservierung", "ferien", "moodle"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetch moodle events
|
* fetch moodle events
|
||||||
*
|
*
|
||||||
@@ -416,12 +294,8 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
* @param string $end_date
|
* @param string $end_date
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function fetchMoodleEvents($start_date, $end_date, $uid = null)
|
private function fetchMoodleEvents($start_date, $end_date)
|
||||||
{
|
{
|
||||||
if ($uid && $uid !== getAuthUID()) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load->config('calendar');
|
$this->load->config('calendar');
|
||||||
|
|
||||||
$tz = new DateTimeZone($this->config->item('timezone'));
|
$tz = new DateTimeZone($this->config->item('timezone'));
|
||||||
@@ -437,13 +311,13 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
|
|
||||||
Events::trigger(
|
Events::trigger(
|
||||||
'moodleCalendarEvents',
|
'moodleCalendarEvents',
|
||||||
function &() use (&$moodle_events) {
|
function & () use (&$moodle_events) {
|
||||||
return $moodle_events;
|
return $moodle_events;
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
'start_date' => $start->format('c'),
|
'start_date' => $start->format('c'),
|
||||||
'end_date' => $end->format('c'),
|
'end_date' => $end->format('c'),
|
||||||
'username' => $uid ?? getAuthUID()
|
'username' => getAuthUID()
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -457,7 +331,7 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
* @param string $end_date
|
* @param string $end_date
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function fetchFerienEvents($start_date, $end_date, $uid = null)
|
private function fetchFerienEvents($start_date, $end_date)
|
||||||
{
|
{
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||||
$this->load->model('education/Studentlehrverband_model', 'StudentLehrverbandModel');
|
$this->load->model('education/Studentlehrverband_model', 'StudentLehrverbandModel');
|
||||||
@@ -469,7 +343,7 @@ class LvPlan extends FHCAPI_Controller
|
|||||||
$studentsemester_kurzbz = current($currentStudiensemester)->studiensemester_kurzbz;
|
$studentsemester_kurzbz = current($currentStudiensemester)->studiensemester_kurzbz;
|
||||||
|
|
||||||
$studiengang = $this->StudentLehrverbandModel->loadWhere([
|
$studiengang = $this->StudentLehrverbandModel->loadWhere([
|
||||||
"student_uid" => $uid ?? getAuthUID(),
|
"student_uid" => getAuthUID(),
|
||||||
"studiensemester_kurzbz" => $studentsemester_kurzbz
|
"studiensemester_kurzbz" => $studentsemester_kurzbz
|
||||||
]);
|
]);
|
||||||
$studiengang = $this->getDataOrTerminateWithError($studiengang);
|
$studiengang = $this->getDataOrTerminateWithError($studiengang);
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2024 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class OtherLvPlan extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Object initialization
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'otherLvPlanViewData' => ['basis/other_lv_plan:r'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
|
|
||||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
|
||||||
// Public methods
|
|
||||||
|
|
||||||
/**
|
|
||||||
* retrieves viewData for other lv plan view
|
|
||||||
* @access public
|
|
||||||
* @param $uid the userID for which the other lv plan is being viewed
|
|
||||||
*/
|
|
||||||
public function otherLvPlanViewData($uid)
|
|
||||||
{
|
|
||||||
$isMitarbeiterResult = $this->MitarbeiterModel->isMitarbeiter($uid);
|
|
||||||
$isMitarbeiter = getData($isMitarbeiterResult);
|
|
||||||
$isStudent = !$isMitarbeiter;
|
|
||||||
|
|
||||||
$this->BenutzerModel->addSelect(["foto", "vorname", "nachname"]);
|
|
||||||
$this->BenutzerModel->addJoin("tbl_person", "person_id");
|
|
||||||
$personResult = $this->BenutzerModel->load([$uid]);
|
|
||||||
$person = hasData($personResult) ? getData($personResult) : null;
|
|
||||||
|
|
||||||
$viewData = [
|
|
||||||
"user_data" => [
|
|
||||||
"username" => $uid,
|
|
||||||
"is_student" => $isStudent,
|
|
||||||
"is_mitarbeiter" => $isMitarbeiter,
|
|
||||||
"foto" => $person[0]->foto,
|
|
||||||
"vorname" => $person[0]->vorname,
|
|
||||||
"nachname" => $person[0]->nachname,
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($viewData);
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -32,8 +32,6 @@ class Phrasen extends FHCAPI_Controller
|
|||||||
'setLanguage' => self::PERM_ANONYMOUS,
|
'setLanguage' => self::PERM_ANONYMOUS,
|
||||||
'getLanguage' => self::PERM_ANONYMOUS,
|
'getLanguage' => self::PERM_ANONYMOUS,
|
||||||
'getAllLanguages' => self::PERM_ANONYMOUS,
|
'getAllLanguages' => self::PERM_ANONYMOUS,
|
||||||
'getPhrases' => self::PERM_ANONYMOUS,
|
|
||||||
'getTabulatorPhrases' => self::PERM_ANONYMOUS,
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->load->helper('hlp_language');
|
$this->load->helper('hlp_language');
|
||||||
@@ -94,59 +92,4 @@ class Phrasen extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess($langs);
|
$this->terminateWithSuccess($langs);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPhrases()
|
|
||||||
{
|
|
||||||
$postParams = $this->getPostJSON();
|
|
||||||
|
|
||||||
$languages = $postParams->languages;
|
|
||||||
if (!$languages || !count($languages)) {
|
|
||||||
$this->load->model('system/Sprache_model', 'sprachenModel');
|
|
||||||
$activeLanguages = $this->sprachenModel->loadWhere(array('content' => true));
|
|
||||||
$activeLanguagesData = $this->getDataOrTerminateWithError($activeLanguages);
|
|
||||||
$languages = array_map(
|
|
||||||
function ($languageData) {
|
|
||||||
return $languageData->sprache;
|
|
||||||
},
|
|
||||||
$activeLanguagesData
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load->model('system/Phrase_model', 'phraseModel');
|
|
||||||
$phrasesGroupedByCategory = $postParams->phrasesGroupedByCategory;
|
|
||||||
$result = [];
|
|
||||||
foreach ($languages as $language) {
|
|
||||||
$phrases = $this->phraseModel->getPhrasesByCategoryAndPhrasesAndLanguage($phrasesGroupedByCategory, $language);
|
|
||||||
$result[$language] = $this->getDataOrTerminateWithError($phrases);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getTabulatorPhrases()
|
|
||||||
{
|
|
||||||
$languages = json_decode($this->input->get('languages'));
|
|
||||||
if (!$languages || !count($languages)) {
|
|
||||||
$this->load->model('system/Sprache_model', 'sprachenModel');
|
|
||||||
$activeLanguages = $this->sprachenModel->loadWhere(array('content' => true));
|
|
||||||
$activeLanguagesData = $this->getDataOrTerminateWithError($activeLanguages);
|
|
||||||
$languages = array_map(
|
|
||||||
function ($languageData) {
|
|
||||||
return $languageData->sprache;
|
|
||||||
},
|
|
||||||
$activeLanguagesData
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load->model('system/Phrase_model', 'phraseModel');
|
|
||||||
$result = [];
|
|
||||||
foreach ($languages as $language) {
|
|
||||||
$tabulatorPhrases = $this->phraseModel->getPhrasesByCategoryAndLanguage(['tabulator'], $language);
|
|
||||||
$result[$language] = $this->getDataOrTerminateWithError($tabulatorPhrases);
|
|
||||||
}
|
|
||||||
|
|
||||||
header('Pragma: private');
|
|
||||||
header('Cache-Control: private, max-age=' . (60 * 60 * 24 * 30));
|
|
||||||
$this->terminateWithSuccess($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -16,8 +16,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class Profil extends FHCAPI_Controller
|
class Profil extends FHCAPI_Controller
|
||||||
{
|
{
|
||||||
@@ -28,7 +27,7 @@ class Profil extends FHCAPI_Controller
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'fotoSperre' => self::PERM_LOGGED,
|
'fotoSperre' => self::PERM_LOGGED,
|
||||||
'getGemeinden' => self::PERM_LOGGED,
|
'getGemeinden' => self::PERM_LOGGED,
|
||||||
'getAllNationen' => self::PERM_LOGGED,
|
'getAllNationen' => self::PERM_LOGGED,
|
||||||
'isMitarbeiter' => self::PERM_LOGGED,
|
'isMitarbeiter' => self::PERM_LOGGED,
|
||||||
@@ -49,37 +48,28 @@ class Profil extends FHCAPI_Controller
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
// Public methods
|
// Public methods
|
||||||
|
public function profilViewData($uid=null){
|
||||||
/**
|
|
||||||
* retrieves view data for profile view
|
|
||||||
* @access public
|
|
||||||
* @param $uid the userID for which profile is being viewed, null or missing value implies one's own profile
|
|
||||||
*/
|
|
||||||
public function profilViewData($uid = null)
|
|
||||||
{
|
|
||||||
$authUid = getAuthUID();
|
|
||||||
$isProfilOfAuthUser = !$uid || $uid === $authUid;
|
|
||||||
|
|
||||||
$this->load->library('ProfilLib');
|
$this->load->library('ProfilLib');
|
||||||
$profileData = $this->profillib->getView($uid ?? $authUid);
|
$editable = false;
|
||||||
$profileData = hasData($profileData) ? getData($profileData) : null;
|
if(isset($uid) && $uid != null){
|
||||||
|
$profil_data = $this->profillib->getView($uid);
|
||||||
$viewData = [
|
if($uid == getAuthUID()){
|
||||||
'editable' => $isProfilOfAuthUser,
|
$editable = true;
|
||||||
'profil_data' => $profileData,
|
}
|
||||||
'permissions' => [
|
}else{
|
||||||
'basis/other_lv_plan' => $this->permissionlib->isBerechtigt(('basis/other_lv_plan'))
|
$editable = true;
|
||||||
]
|
$profil_data = $this->profillib->getView(getAuthUID());
|
||||||
];
|
|
||||||
|
|
||||||
if ($isProfilOfAuthUser) {
|
|
||||||
$viewData['calendar_sync_urls'] = $this->getCalendarSyncUrlData();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
|
||||||
|
$viewData = array(
|
||||||
|
'editable'=>$editable,
|
||||||
|
'profil_data' => $profil_data,
|
||||||
|
);
|
||||||
$this->terminateWithSuccess($viewData);
|
$this->terminateWithSuccess($viewData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* update column foto_sperre in public.tbl_person
|
* update column foto_sperre in public.tbl_person
|
||||||
* @access public
|
* @access public
|
||||||
* @param boolean $value new value for the column
|
* @param boolean $value new value for the column
|
||||||
@@ -87,9 +77,9 @@ class Profil extends FHCAPI_Controller
|
|||||||
*/
|
*/
|
||||||
public function fotoSperre($value)
|
public function fotoSperre($value)
|
||||||
{
|
{
|
||||||
if (!isset($value)) {
|
if(!isset($value)){
|
||||||
$this->terminateWithError("Missing parameter", self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError("Missing parameter", self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = $this->PersonModel->update($this->pid, ["foto_sperre" => $value]);
|
$res = $this->PersonModel->update($this->pid, ["foto_sperre" => $value]);
|
||||||
if (isError($res)) {
|
if (isError($res)) {
|
||||||
@@ -98,9 +88,9 @@ class Profil extends FHCAPI_Controller
|
|||||||
$this->PersonModel->addSelect("foto_sperre");
|
$this->PersonModel->addSelect("foto_sperre");
|
||||||
$res = $this->PersonModel->load($this->pid);
|
$res = $this->PersonModel->load($this->pid);
|
||||||
|
|
||||||
$res = $this->getDataOrTerminateWithError($res);
|
$res = $this->getDataOrTerminateWithError($res);
|
||||||
|
|
||||||
$this->terminateWithSuccess(current($res));
|
$this->terminateWithSuccess(current($res));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -127,7 +117,7 @@ class Profil extends FHCAPI_Controller
|
|||||||
|
|
||||||
public function getGemeinden($nation, $zip)
|
public function getGemeinden($nation, $zip)
|
||||||
{
|
{
|
||||||
if (!isset($nation) || !isset($zip)) {
|
if(!isset($nation) || !isset($zip)){
|
||||||
echo json_encode(error("Missing parameters"));
|
echo json_encode(error("Missing parameters"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -138,7 +128,7 @@ class Profil extends FHCAPI_Controller
|
|||||||
$gemeinde_res = $this->GemeindeModel->getGemeindeByPlz($zip);
|
$gemeinde_res = $this->GemeindeModel->getGemeindeByPlz($zip);
|
||||||
|
|
||||||
if (isError($gemeinde_res)) {
|
if (isError($gemeinde_res)) {
|
||||||
$this->terminateWithError(getError($gemeinde_res), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError(getError($gemeinde_res),self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
$gemeinde_res = $this->getDataOrTerminateWithError($gemeinde_res);
|
$gemeinde_res = $this->getDataOrTerminateWithError($gemeinde_res);
|
||||||
|
|
||||||
@@ -160,8 +150,7 @@ class Profil extends FHCAPI_Controller
|
|||||||
public function isMitarbeiter($uid)
|
public function isMitarbeiter($uid)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!$uid)
|
if(!$uid) $this->terminateWithError("No uid provided", self::ERROR_TYPE_GENERAL);
|
||||||
$this->terminateWithError("No uid provided", self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
|
|
||||||
$result = $this->MitarbeiterModel->isMitarbeiter($uid);
|
$result = $this->MitarbeiterModel->isMitarbeiter($uid);
|
||||||
@@ -178,30 +167,6 @@ class Profil extends FHCAPI_Controller
|
|||||||
// -----------------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------------
|
||||||
// Private methods
|
// Private methods
|
||||||
|
|
||||||
/**
|
|
||||||
* gets the identifier, phrase, and url for each calendar sync option
|
|
||||||
* @access private
|
|
||||||
* @return array array of arrays, where each child array is a sync option
|
|
||||||
*/
|
|
||||||
private function getCalendarSyncUrlData()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
[
|
|
||||||
"identifier" => "cal_dav",
|
|
||||||
"labelPhrase" => "profil/calendar_sync_cal_dav",
|
|
||||||
"url" => APP_ROOT . "webdav/lvplan.php/calendars/" . $this->uid . "/LVPlan-" . $this->uid,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"identifier" => "cal_dav_principal",
|
|
||||||
"labelPhrase" => "profil/calendar_sync_cal_dav_principal",
|
|
||||||
"url" => APP_ROOT . "webdav/lvplan.php/principals/" . $this->uid,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"identifier" => "i_cal",
|
|
||||||
"labelPhrase" => "profil/calendar_sync_i_cal",
|
|
||||||
"url" => APP_ROOT . "webdav/google.php?cal=" . encryptData($this->uid, LVPLAN_CYPHER_KEY) . "&" . microtime(true),
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -637,7 +637,7 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
//? Send email to the Studiengangsassistentinnen
|
//? Send email to the Studiengangsassistentinnen
|
||||||
$this->StudentModel->addSelect(["public.tbl_studiengang.email"]);
|
$this->StudentModel->addSelect(["public.tbl_studiengang.email"]);
|
||||||
$this->StudentModel->addJoin("public.tbl_benutzer", "public.tbl_benutzer.uid = public.tbl_student.student_uid");
|
$this->StudentModel->addJoin("public.tbl_benutzer", "public.tbl_benutzer.uid = public.tbl_student.student_uid");
|
||||||
$this->StudentModel->addJoin("public.tbl_prestudent", "public.tbl_benutzer.person_id = public.tbl_prestudent.person_id and public.tbl_student.studiengang_kz = public.tbl_prestudent.studiengang_kz");
|
$this->StudentModel->addJoin("public.tbl_prestudent", "public.tbl_benutzer.person_id = public.tbl_prestudent.person_id");
|
||||||
$this->StudentModel->addJoin("public.tbl_prestudentstatus", "public.tbl_prestudentstatus.prestudent_id = public.tbl_prestudent.prestudent_id");
|
$this->StudentModel->addJoin("public.tbl_prestudentstatus", "public.tbl_prestudentstatus.prestudent_id = public.tbl_prestudent.prestudent_id");
|
||||||
$this->StudentModel->addJoin("public.tbl_studiengang", "public.tbl_studiengang.studiengang_kz = public.tbl_prestudent.studiengang_kz");
|
$this->StudentModel->addJoin("public.tbl_studiengang", "public.tbl_studiengang.studiengang_kz = public.tbl_prestudent.studiengang_kz");
|
||||||
$this->StudentModel->addGroupBy(["public.tbl_studiengang.email"]);
|
$this->StudentModel->addGroupBy(["public.tbl_studiengang.email"]);
|
||||||
@@ -706,13 +706,7 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
|
|
||||||
private function setStatusOnUpdateRequest($id, $status, $status_message)
|
private function setStatusOnUpdateRequest($id, $status, $status_message)
|
||||||
{
|
{
|
||||||
return $this->ProfilUpdateModel->update([$id], [
|
return $this->ProfilUpdateModel->update([$id], ["status" => $status, "status_timestamp" => "NOW()", "status_message" => $status_message]);
|
||||||
"status" => $status,
|
|
||||||
"status_timestamp" => "NOW()",
|
|
||||||
"status_message" => $status_message,
|
|
||||||
"updateamum" => "NOW()",
|
|
||||||
"updatevon" => getAuthUID()
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function updateRequestedChange($id, $requested_change)
|
private function updateRequestedChange($id, $requested_change)
|
||||||
@@ -722,13 +716,14 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
|
|
||||||
private function deleteOldVersionFile($dms_id)
|
private function deleteOldVersionFile($dms_id)
|
||||||
{
|
{
|
||||||
if (!isset($dms_id)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// starting the transaction
|
// starting the transaction
|
||||||
$this->db->trans_start();
|
$this->db->trans_start();
|
||||||
|
|
||||||
|
|
||||||
|
if (!isset($dms_id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//? delete the file from the profilUpdate first
|
//? delete the file from the profilUpdate first
|
||||||
$profilUpdateFileDelete = $this->ProfilUpdateModel->removeFileFromProfilUpdate($dms_id);
|
$profilUpdateFileDelete = $this->ProfilUpdateModel->removeFileFromProfilUpdate($dms_id);
|
||||||
if(isError($profilUpdateFileDelete)){
|
if(isError($profilUpdateFileDelete)){
|
||||||
@@ -782,8 +777,13 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
|
|
||||||
$res = $this->StudentModel->execReadOnlyQuery($query, [$student_uid]);
|
$res = $this->StudentModel->execReadOnlyQuery($query, [$student_uid]);
|
||||||
$res = $this->getDataOrTerminateWithError($res, $this->p->t('profilUpdate', 'profilUpdate_loadingOE_error'));
|
$res = $this->getDataOrTerminateWithError($res, $this->p->t('profilUpdate', 'profilUpdate_loadingOE_error'));
|
||||||
$oe = ($res[0])->oe_kurzbz;
|
$res = array_map(
|
||||||
return $oe;
|
function ($item) {
|
||||||
|
return $item->oe_kurzbz;
|
||||||
|
},
|
||||||
|
$res
|
||||||
|
);
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function handleAdresse($requested_change, $personID)
|
private function handleAdresse($requested_change, $personID)
|
||||||
@@ -813,7 +813,7 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
$insert_adresse_id = $insertID;
|
$insert_adresse_id = $insertID;
|
||||||
$insert_adresse_id = $this->getDataOrTerminateWithError($insert_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error'));
|
$insert_adresse_id = $this->getDataOrTerminateWithError($insert_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error'));
|
||||||
if ($insert_adresse_id) {
|
if ($insert_adresse_id) {
|
||||||
$this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $insert_adresse_id, $personID);
|
$this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $insert_adresse_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! DELETE
|
//! DELETE
|
||||||
@@ -825,33 +825,12 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
//! UPDATE
|
//! UPDATE
|
||||||
else {
|
else {
|
||||||
$curadresse_res = $this->AdresseModel->load($adresse_id);
|
$requested_change['updateamum'] = "NOW()";
|
||||||
$curadresse = ($this->getDataOrTerminateWithError($curadresse_res))[0];
|
$requested_change['updatevon'] = getAuthUID();
|
||||||
|
$update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change);
|
||||||
|
$update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error'));
|
||||||
|
$this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id);
|
||||||
|
|
||||||
if($curadresse->heimatadresse)
|
|
||||||
{
|
|
||||||
$tmpadresse = array_merge((array) $curadresse, $requested_change);
|
|
||||||
unset($tmpadresse["adresse_id"]);
|
|
||||||
$tmpadresse['insertamum'] = "NOW()";
|
|
||||||
$tmpadresse['insertvon'] = getAuthUID();
|
|
||||||
$tmpadresse['person_id'] = $personID;
|
|
||||||
unset($tmpadresse["heimatadresse"]);
|
|
||||||
unset($tmpadresse["updateamum"]);
|
|
||||||
unset($tmpadresse["updatevon"]);
|
|
||||||
|
|
||||||
$tmpadresse_res = $this->AdresseModel->insert($tmpadresse);
|
|
||||||
$tmpadresse_id = $this->getDataOrTerminateWithError($tmpadresse_res, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error'));
|
|
||||||
$this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $tmpadresse_id, $personID);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$requested_change['updateamum'] = "NOW()";
|
|
||||||
$requested_change['updatevon'] = getAuthUID();
|
|
||||||
|
|
||||||
$update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change);
|
|
||||||
$update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error'));
|
|
||||||
$this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id, $personID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return $insertID ?? null;
|
return $insertID ?? null;
|
||||||
}
|
}
|
||||||
@@ -873,7 +852,7 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
$insert_kontakt_id = $insertID;
|
$insert_kontakt_id = $insertID;
|
||||||
$insert_kontakt_id = $this->getDataOrTerminateWithError($insert_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_insertKontakt_error'));
|
$insert_kontakt_id = $this->getDataOrTerminateWithError($insert_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_insertKontakt_error'));
|
||||||
if ($insert_kontakt_id) {
|
if ($insert_kontakt_id) {
|
||||||
$this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id, $requested_change['kontakttyp'], $personID);
|
$this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! DELETE
|
//! DELETE
|
||||||
@@ -890,18 +869,18 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
$update_kontakt_id = $this->KontaktModel->update($kontakt_id, $requested_change);
|
$update_kontakt_id = $this->KontaktModel->update($kontakt_id, $requested_change);
|
||||||
$update_kontakt_id = $this->getDataOrTerminateWithError($update_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_updateKontakt_error'));
|
$update_kontakt_id = $this->getDataOrTerminateWithError($update_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_updateKontakt_error'));
|
||||||
if ($update_kontakt_id) {
|
if ($update_kontakt_id) {
|
||||||
$this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id, $requested_change['kontakttyp'], $personID);
|
$this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isset($insertID) ? $insertID : null;
|
return isset($insertID) ? $insertID : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function handleDupplicateZustellAdressen($zustellung, $adresse_id, $person_id)
|
private function handleDupplicateZustellAdressen($zustellung, $adresse_id)
|
||||||
{
|
{
|
||||||
if ($zustellung) {
|
if ($zustellung) {
|
||||||
$this->PersonModel->addSelect("public.tbl_adresse.adresse_id");
|
$this->PersonModel->addSelect("public.tbl_adresse.adresse_id");
|
||||||
$this->PersonModel->addJoin("public.tbl_adresse", "public.tbl_adresse.person_id = public.tbl_person.person_id");
|
$this->PersonModel->addJoin("public.tbl_adresse", "public.tbl_adresse.person_id = public.tbl_person.person_id");
|
||||||
$zustellAdressenArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $person_id, "zustelladresse" => TRUE]);
|
$zustellAdressenArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $this->pid, "zustelladresse" => TRUE]);
|
||||||
if (isError($zustellAdressenArray)) {
|
if (isError($zustellAdressenArray)) {
|
||||||
$this->terminateWithError($this->p->t('profilUpdate', 'profilUpdate_loadingZustellAdressen_error'));
|
$this->terminateWithError($this->p->t('profilUpdate', 'profilUpdate_loadingZustellAdressen_error'));
|
||||||
}
|
}
|
||||||
@@ -914,8 +893,6 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
return $adresse->adresse_id != $adresse_id;
|
return $adresse->adresse_id != $adresse_id;
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->addMeta('bhzustelladressen', $zustellAdressenArray);
|
|
||||||
|
|
||||||
// remove the zustelladresse from all other zustelladressen
|
// remove the zustelladresse from all other zustelladressen
|
||||||
foreach ($zustellAdressenArray as $adresse) {
|
foreach ($zustellAdressenArray as $adresse) {
|
||||||
$this->AdresseModel->update($adresse->adresse_id, ["zustelladresse" => FALSE]);
|
$this->AdresseModel->update($adresse->adresse_id, ["zustelladresse" => FALSE]);
|
||||||
@@ -925,16 +902,12 @@ class ProfilUpdate extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function handleDupplicateZustellKontakte($zustellung, $kontakt_id, $kontakttyp, $person_id)
|
private function handleDupplicateZustellKontakte($zustellung, $kontakt_id)
|
||||||
{
|
{
|
||||||
if ($zustellung) {
|
if ($zustellung) {
|
||||||
$this->PersonModel->addSelect("public.tbl_kontakt.kontakt_id");
|
$this->PersonModel->addSelect("public.tbl_kontakt.kontakt_id");
|
||||||
$this->PersonModel->addJoin("public.tbl_kontakt", "public.tbl_kontakt.person_id = public.tbl_person.person_id");
|
$this->PersonModel->addJoin("public.tbl_kontakt", "public.tbl_kontakt.person_id = public.tbl_person.person_id");
|
||||||
$zustellKontakteArray = $this->PersonModel->loadWhere([
|
$zustellKontakteArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $this->pid, "zustellung" => TRUE]);
|
||||||
"public.tbl_person.person_id" => $person_id,
|
|
||||||
"zustellung" => TRUE,
|
|
||||||
"kontakttyp" => $kontakttyp
|
|
||||||
]);
|
|
||||||
if (!isSuccess($zustellKontakteArray)) {
|
if (!isSuccess($zustellKontakteArray)) {
|
||||||
return error($this->p->t('profilUpdate', 'profilUpdate_loadingZustellkontakte_error'));
|
return error($this->p->t('profilUpdate', 'profilUpdate_loadingZustellkontakte_error'));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2024 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class StgOrgLvPlan extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Object initialization
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'stgOrgLvPlanViewData' => self::PERM_LOGGED,
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
|
||||||
// Public methods
|
|
||||||
|
|
||||||
/**
|
|
||||||
* fetches view data for stg org lv plan
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
public function stgOrgLvPlanViewData()
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
|
||||||
$this->StudiengangModel->addOrder('typ');
|
|
||||||
$this->StudiengangModel->addOrder('kurzbz');
|
|
||||||
$result = $this->StudiengangModel->loadWhere([
|
|
||||||
'aktiv' => true
|
|
||||||
]);
|
|
||||||
$studiengaenge = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$viewData = array(
|
|
||||||
'studiengaenge' => $studiengaenge,
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($viewData);
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -62,36 +62,21 @@ class Studium extends FHCAPI_Controller
|
|||||||
|
|
||||||
if($this->getDataOrTerminateWithError($this->StudentModel->isStudent(getAuthUID()))){
|
if($this->getDataOrTerminateWithError($this->StudentModel->isStudent(getAuthUID()))){
|
||||||
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $aktuelles_studiensemester->studiensemester_kurzbz]);
|
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $aktuelles_studiensemester->studiensemester_kurzbz]);
|
||||||
|
$studentLehrverband = current($this->getDataOrTerminateWithError($studentLehrverband));
|
||||||
|
|
||||||
//TODO(Manu) check if use Fallback or just comment out all paramschecks?
|
$student_studiensemester = $studentLehrverband->studiensemester_kurzbz;
|
||||||
//add Fallback: if no LehrverbandData of actual semester, get Data of previous one
|
$student_studiengang = $studentLehrverband->studiengang_kz;
|
||||||
if(!hasData($studentLehrverband))
|
$student_semester = $studentLehrverband->semester;
|
||||||
{
|
|
||||||
$result= $this->StudiensemesterModel->getPreviousFrom($aktuelles_studiensemester->studiensemester_kurzbz);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$vorheriges_studiensemester = current($data)->studiensemester_kurzbz;
|
|
||||||
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $vorheriges_studiensemester]);
|
|
||||||
}
|
|
||||||
$studentLehrverband = current(getData($studentLehrverband));
|
|
||||||
|
|
||||||
$student_studienplan = $this->getStudienPlanFromPrestudentStatus(getAuthPersonId())->studienplan_id;
|
$student_studienplan = $this->getStudienPlanFromPrestudentStatus(getAuthPersonId())->studienplan_id;
|
||||||
|
|
||||||
if(!isset($parameter_studiensemester)) {
|
if(!isset($parameter_studiensemester))
|
||||||
$student_studiensemester = $studentLehrverband->studiensemester_kurzbz;
|
$parameter_studiensemester = $student_studiensemester;
|
||||||
$parameter_studiensemester = $student_studiensemester;
|
if(!isset($parameter_studiengang))
|
||||||
}
|
$parameter_studiengang = $student_studiengang;
|
||||||
if(!isset($parameter_studiengang)) {
|
if(!isset($parameter_semester))
|
||||||
$student_studiengang = $studentLehrverband->studiengang_kz;
|
$parameter_semester = $student_semester;
|
||||||
$parameter_studiengang = $student_studiengang;
|
|
||||||
}
|
|
||||||
if(!isset($parameter_semester)) {
|
|
||||||
$student_semester = $studentLehrverband->semester;
|
|
||||||
$parameter_semester = $student_semester;
|
|
||||||
}
|
|
||||||
if(!isset($parameter_studienplan))
|
if(!isset($parameter_studienplan))
|
||||||
$parameter_studienplan = $student_studienplan;
|
$parameter_studienplan = $student_studienplan;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isset($parameter_studiensemester)){
|
if(isset($parameter_studiensemester)){
|
||||||
@@ -112,6 +97,7 @@ class Studium extends FHCAPI_Controller
|
|||||||
// fetch studiensemester
|
// fetch studiensemester
|
||||||
$allStudienSemester = $this->getDataOrTerminateWithError($this->StudiensemesterModel->load());
|
$allStudienSemester = $this->getDataOrTerminateWithError($this->StudiensemesterModel->load());
|
||||||
|
|
||||||
|
|
||||||
if(isset($parameter_studiensemester) && !empty(array_filter($allStudienSemester, function($studiensemester) use($parameter_studiensemester){
|
if(isset($parameter_studiensemester) && !empty(array_filter($allStudienSemester, function($studiensemester) use($parameter_studiensemester){
|
||||||
return $studiensemester->studiensemester_kurzbz == $parameter_studiensemester->studiensemester_kurzbz;
|
return $studiensemester->studiensemester_kurzbz == $parameter_studiensemester->studiensemester_kurzbz;
|
||||||
}))){
|
}))){
|
||||||
@@ -230,8 +216,6 @@ class Studium extends FHCAPI_Controller
|
|||||||
$studienplaene = array_map(function($studienplan){
|
$studienplaene = array_map(function($studienplan){
|
||||||
$orgform = current($this->getDataOrTerminateWithError($this->OrgformModel->loadWhere(["orgform_kurzbz" => $studienplan->orgform_kurzbz])));
|
$orgform = current($this->getDataOrTerminateWithError($this->OrgformModel->loadWhere(["orgform_kurzbz" => $studienplan->orgform_kurzbz])));
|
||||||
$studienplan->orgform_bezeichnung = $orgform->bezeichnung;
|
$studienplan->orgform_bezeichnung = $orgform->bezeichnung;
|
||||||
// bezeichnung_mehrsprachig
|
|
||||||
$studienplan->orgform_bezeichnung_english = $orgform->bezeichnung_mehrsprachig[1];
|
|
||||||
return $studienplan;
|
return $studienplan;
|
||||||
},$studienplaene);
|
},$studienplaene);
|
||||||
return $studienplaene;
|
return $studienplaene;
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ class BetriebsmittelP extends FHCAPI_Controller
|
|||||||
$kaution = $this->input->post('kaution');
|
$kaution = $this->input->post('kaution');
|
||||||
if($kaution) $kaution = str_replace(',', '.', $kaution);
|
if($kaution) $kaution = str_replace(',', '.', $kaution);
|
||||||
$ausgegebenam = $this->input->post('ausgegebenam');
|
$ausgegebenam = $this->input->post('ausgegebenam');
|
||||||
$retouram = $this->input->post('retouram') == "" ? null : $this->input->post('retouram');
|
$retouram = $this->input->post('retouram');
|
||||||
|
|
||||||
// NOTE(chris): transform_kartennummer
|
// NOTE(chris): transform_kartennummer
|
||||||
if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer)
|
if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer)
|
||||||
|
|||||||
@@ -1,142 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2026 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
|
||||||
* Provides data to the ajax get calls about addresses
|
|
||||||
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
|
|
||||||
*/
|
|
||||||
class Board extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'list' => 'dashboard/admin:r',
|
|
||||||
'create' => 'dashboard/admin:rw',
|
|
||||||
'update' => 'dashboard/admin:rw',
|
|
||||||
'delete' => 'dashboard/admin:rw'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Models
|
|
||||||
$this->load->model('dashboard/Dashboard_model', 'DashboardModel');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function list()
|
|
||||||
{
|
|
||||||
$this->DashboardModel->addSelect('dashboard_id');
|
|
||||||
$this->DashboardModel->addSelect('dashboard_kurzbz');
|
|
||||||
$this->DashboardModel->addSelect('tbl_dashboard.beschreibung');
|
|
||||||
$this->DashboardModel->addSelect("(
|
|
||||||
SELECT json_agg(w.*)
|
|
||||||
FROM dashboard.tbl_widget w
|
|
||||||
JOIN dashboard.tbl_dashboard_widget dw
|
|
||||||
USING(widget_id)
|
|
||||||
WHERE dw.dashboard_id=tbl_dashboard.dashboard_id
|
|
||||||
) AS \"widgetSetup\"");
|
|
||||||
|
|
||||||
$result = $this->DashboardModel->load();
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$data = array_map(function ($dashboard) {
|
|
||||||
$tmpSetups = json_decode($dashboard->widgetSetup);
|
|
||||||
$tmpSetups = array_map(function ($widget) {
|
|
||||||
$widget->setup->file = absoluteJsImportUrl($widget->setup->file);
|
|
||||||
return $widget;
|
|
||||||
}, $tmpSetups);
|
|
||||||
$dashboard->widgetSetup = $tmpSetups;
|
|
||||||
return $dashboard;
|
|
||||||
}, $data);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
$dashboard_kurzbz = $this->input->post('dashboard_kurzbz');
|
|
||||||
|
|
||||||
$result = $this->DashboardModel->insert([
|
|
||||||
'dashboard_kurzbz' => $dashboard_kurzbz
|
|
||||||
]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function update()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('dashboard_id', 'Dashboard ID', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$dashboard_id = $this->input->post('dashboard_id');
|
|
||||||
$dashboard_kurzbz = $this->input->post('dashboard_kurzbz');
|
|
||||||
$beschreibung = $this->input->post('beschreibung');
|
|
||||||
|
|
||||||
$result = $this->DashboardModel->update([
|
|
||||||
'dashboard_id' => $dashboard_id
|
|
||||||
], [
|
|
||||||
'dashboard_kurzbz' => $dashboard_kurzbz,
|
|
||||||
'beschreibung' => $beschreibung
|
|
||||||
]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function delete()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('dashboard_id', 'Dashboard ID', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$dashboard_id = $this->input->post('dashboard_id');
|
|
||||||
|
|
||||||
//delete all presets
|
|
||||||
$this->load->model('dashboard/Dashboard_Preset_model', 'DashboardPresetModel');
|
|
||||||
|
|
||||||
$result = $this->DashboardPresetModel->delete([
|
|
||||||
'dashboard_id' => $dashboard_id
|
|
||||||
]);
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
//delete all widgets
|
|
||||||
$this->load->model('dashboard/Dashboard_Widget_model', 'DashboardWidgetModel');
|
|
||||||
|
|
||||||
$result = $this->DashboardWidgetModel->delete([
|
|
||||||
'dashboard_id' => $dashboard_id
|
|
||||||
]);
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$result = $this->DashboardModel->delete($dashboard_id);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,199 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2026 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
|
||||||
* Provides data to the ajax get calls about addresses
|
|
||||||
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
|
|
||||||
*/
|
|
||||||
class Preset extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'list' => 'dashboard/admin:r',
|
|
||||||
'getBatch' => 'dashboard/admin:r',
|
|
||||||
'addWidget' => 'dashboard/admin:rw',
|
|
||||||
'removeWidget' => 'dashboard/admin:rw'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Libraries
|
|
||||||
$this->load->library('dashboard/DashboardLib');
|
|
||||||
|
|
||||||
// Models
|
|
||||||
$this->load->model('ressource/Funktion_model', 'FunktionModel');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function list($dashboard_kurzbz)
|
|
||||||
{
|
|
||||||
$sql = "
|
|
||||||
WITH
|
|
||||||
dashboard_presets AS (
|
|
||||||
SELECT
|
|
||||||
*
|
|
||||||
FROM
|
|
||||||
dashboard.tbl_dashboard_preset dp
|
|
||||||
JOIN
|
|
||||||
dashboard.tbl_dashboard d ON d.dashboard_id = dp.dashboard_id
|
|
||||||
WHERE
|
|
||||||
d.dashboard_kurzbz = {$this->db->escape($dashboard_kurzbz)}
|
|
||||||
),
|
|
||||||
general AS (
|
|
||||||
SELECT
|
|
||||||
'general' AS funktion_kurzbz,
|
|
||||||
'Allgemein' AS beschreibung
|
|
||||||
)
|
|
||||||
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
f.funktion_kurzbz,
|
|
||||||
f.beschreibung,
|
|
||||||
COUNT(p.preset_id) AS has_preset
|
|
||||||
FROM
|
|
||||||
general f
|
|
||||||
LEFT JOIN
|
|
||||||
dashboard_presets p ON p.funktion_kurzbz IS NULL
|
|
||||||
GROUP BY
|
|
||||||
f.funktion_kurzbz, f.beschreibung
|
|
||||||
)
|
|
||||||
UNION ALL
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
f.funktion_kurzbz,
|
|
||||||
f.beschreibung,
|
|
||||||
COUNT(p.preset_id) AS has_preset
|
|
||||||
FROM
|
|
||||||
public.tbl_funktion f
|
|
||||||
LEFT JOIN
|
|
||||||
dashboard_presets p ON p.funktion_kurzbz = f.funktion_kurzbz
|
|
||||||
GROUP BY
|
|
||||||
f.funktion_kurzbz, f.beschreibung
|
|
||||||
ORDER BY
|
|
||||||
f.beschreibung ASC
|
|
||||||
)
|
|
||||||
";
|
|
||||||
|
|
||||||
$result = $this->FunktionModel->execReadOnlyQuery($sql);
|
|
||||||
|
|
||||||
$funktionen = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($funktionen);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getBatch()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('db', 'Dashboard', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$db = $this->input->post('db');
|
|
||||||
$funktionen = $this->input->post('funktionen') ?: [];
|
|
||||||
|
|
||||||
$result = [];
|
|
||||||
|
|
||||||
foreach ($funktionen as $funktion) {
|
|
||||||
$conf = $this->dashboardlib->getPreset($db, $funktion);
|
|
||||||
if ($conf) {
|
|
||||||
$preset = json_decode($conf->preset, true);
|
|
||||||
$result[$funktion] = $preset;
|
|
||||||
} else {
|
|
||||||
$result[$funktion] = [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addWidget()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('dashboard', 'Dashboard', 'required');
|
|
||||||
$this->form_validation->set_rules('funktion_kurzbz', 'Funktion', 'required');
|
|
||||||
$this->form_validation->set_rules('widget[widget]', 'Widget', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$dashboard_kurzbz = $this->input->post('dashboard');
|
|
||||||
$funktion_kurzbz = $this->input->post('funktion_kurzbz');
|
|
||||||
$widget = $this->input->post('widget');
|
|
||||||
|
|
||||||
if (!isset($widget['widgetid']))
|
|
||||||
$widget['widgetid'] = $this->dashboardlib->generateWidgetId($dashboard_kurzbz);
|
|
||||||
|
|
||||||
$preset = $this->dashboardlib->getPresetOrCreateEmptyPreset($dashboard_kurzbz, $funktion_kurzbz);
|
|
||||||
|
|
||||||
$preset_decoded = json_decode($preset->preset, true);
|
|
||||||
|
|
||||||
$preset_decoded[$widget['widgetid']] = $widget;
|
|
||||||
|
|
||||||
$preset->preset = json_encode($preset_decoded);
|
|
||||||
|
|
||||||
$result = $this->dashboardlib->insertOrUpdatePreset($preset);
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($widget['widgetid']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function removeWidget()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('db', 'Dashboard', 'required');
|
|
||||||
$this->form_validation->set_rules('funktion_kurzbz', 'Funktion', 'required');
|
|
||||||
$this->form_validation->set_rules('widgetid', 'Widget', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$dashboard_kurzbz = $this->input->post('db');
|
|
||||||
$funktion_kurzbz = $this->input->post('funktion_kurzbz');
|
|
||||||
$widgetid = $this->input->post('widgetid');
|
|
||||||
|
|
||||||
$preset = $this->dashboardlib->getPreset($dashboard_kurzbz, $funktion_kurzbz);
|
|
||||||
if (!$preset)
|
|
||||||
show_404();
|
|
||||||
|
|
||||||
$preset_decoded = json_decode($preset->preset, true);
|
|
||||||
|
|
||||||
if (!isset($preset_decoded[$widgetid]))
|
|
||||||
show_404();
|
|
||||||
|
|
||||||
unset($preset_decoded[$widgetid]);
|
|
||||||
|
|
||||||
$preset->preset = json_encode($preset_decoded);
|
|
||||||
|
|
||||||
$result = $this->dashboardlib->insertOrUpdatePreset($preset);
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array('msg' => $this->p->t('dashboard', 'success_savePreset')));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2026 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
|
||||||
* Provides data to the ajax get calls about the users dashboard
|
|
||||||
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
|
|
||||||
*/
|
|
||||||
class User extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'get' => 'dashboard/benutzer:r',
|
|
||||||
'addWidget' => 'dashboard/benutzer:rw',
|
|
||||||
'removeWidget' => 'dashboard/benutzer:rw'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Libraries
|
|
||||||
$this->load->library('dashboard/DashboardLib');
|
|
||||||
|
|
||||||
// Models
|
|
||||||
$this->load->model('ressource/Funktion_model', 'FunktionModel');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get($dashboard_kurzbz)
|
|
||||||
{
|
|
||||||
$dashboard = $this->dashboardlib->getDashboardByKurzbz($dashboard_kurzbz);
|
|
||||||
if (!$dashboard)
|
|
||||||
show_404();
|
|
||||||
|
|
||||||
$uid = $this->authlib->getAuthObj()->username;
|
|
||||||
|
|
||||||
$mergedconfig = $this->dashboardlib->getMergedUserConfig($dashboard->dashboard_id, $uid);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($mergedconfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addWidget()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('dashboard', 'Dashboard', 'required');
|
|
||||||
$this->form_validation->set_rules('widget[widget]', 'Widget', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$widget = $this->input->post('widget');
|
|
||||||
$dashboard_kurzbz = $this->input->post('dashboard');
|
|
||||||
$uid = $this->authlib->getAuthObj()->username;
|
|
||||||
|
|
||||||
if (!isset($widget['widgetid']))
|
|
||||||
$widget['widgetid'] = $this->dashboardlib->generateWidgetId($dashboard_kurzbz);
|
|
||||||
|
|
||||||
if (isset($widget['source']))
|
|
||||||
unset($widget['source']);
|
|
||||||
|
|
||||||
$override = $this->dashboardlib->getOverrideOrCreateEmptyOverride($dashboard_kurzbz, $uid);
|
|
||||||
|
|
||||||
$override_decoded = json_decode($override->override, true);
|
|
||||||
|
|
||||||
$override_decoded[$widget['widgetid']] = $widget;
|
|
||||||
|
|
||||||
$override->override = json_encode($override_decoded);
|
|
||||||
|
|
||||||
$result = $this->dashboardlib->insertOrUpdateOverride($override);
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($widget['widgetid']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function removeWidget()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('dashboard', 'Dashboard', 'required');
|
|
||||||
$this->form_validation->set_rules('widget', 'Widget', 'required');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$widget_id = $this->input->post('widget');
|
|
||||||
$dashboard_kurzbz = $this->input->post('dashboard');
|
|
||||||
$uid = $this->authlib->getAuthObj()->username;
|
|
||||||
|
|
||||||
$override = $this->dashboardlib->getOverride($dashboard_kurzbz, $uid);
|
|
||||||
if (!$override)
|
|
||||||
show_404();
|
|
||||||
|
|
||||||
$override_decoded = json_decode($override->override, true);
|
|
||||||
|
|
||||||
if (!isset($override_decoded[$widget_id]))
|
|
||||||
show_404();
|
|
||||||
|
|
||||||
unset($override_decoded[$widget_id]);
|
|
||||||
|
|
||||||
$override->override = json_encode($override_decoded);
|
|
||||||
|
|
||||||
$result = $this->dashboardlib->insertOrUpdateOverride($override);
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2026 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
|
||||||
* Provides data to the ajax get calls about the users dashboard
|
|
||||||
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
|
|
||||||
*/
|
|
||||||
class Widget extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'get' => ['dashboard/benutzer:r', 'dashboard/admin:r'],
|
|
||||||
'list' => 'dashboard/admin:r',
|
|
||||||
'listAllowed' => ['dashboard/benutzer:rw', 'dashboard/admin:r'],
|
|
||||||
'setAllowed' => 'dashboard/admin:rw'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Libraries
|
|
||||||
$this->load->library('dashboard/DashboardLib');
|
|
||||||
|
|
||||||
// Models
|
|
||||||
$this->load->model('dashboard/Widget_model', 'WidgetModel');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get($id)
|
|
||||||
{
|
|
||||||
$result = $this->WidgetModel->load($id);
|
|
||||||
|
|
||||||
$widget = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
if (!$widget)
|
|
||||||
return $this->terminateWithSuccess([
|
|
||||||
"widget_id" => 0,
|
|
||||||
"widget_kurzbz" => "notfound",
|
|
||||||
"arguments" => [
|
|
||||||
"className" => 'alert-danger',
|
|
||||||
"title" => 'Widget Not Found',
|
|
||||||
"msg" => 'The widget with the id ' . $id . ' could not be found'
|
|
||||||
],
|
|
||||||
"setup" => [
|
|
||||||
"name" => 'Widget Not Found',
|
|
||||||
"file" => absoluteJsImportUrl('public/js/components/DashboardWidget/Default.js'),
|
|
||||||
"width" => 1,
|
|
||||||
"height" => 1
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
|
|
||||||
$widget = current($widget);
|
|
||||||
$widget->arguments = json_decode($widget->arguments);
|
|
||||||
$tmpsetup = json_decode($widget->setup);
|
|
||||||
$tmpsetup->file = absoluteJsImportUrl($tmpsetup->file);
|
|
||||||
$widget->setup = $tmpsetup;
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function list($dashboard)
|
|
||||||
{
|
|
||||||
$result = $this->WidgetModel->getWithAllowedForDashboard($dashboard);
|
|
||||||
|
|
||||||
$widgets = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$widgets = array_map(function ($widget) {
|
|
||||||
$widget->arguments = json_decode($widget->arguments);
|
|
||||||
$tmpsetup = json_decode($widget->setup);
|
|
||||||
$tmpsetup->file = absoluteJsImportUrl($tmpsetup->file);
|
|
||||||
$widget->setup = $tmpsetup;
|
|
||||||
return $widget;
|
|
||||||
}, $widgets);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($widgets);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function listAllowed($dashboard)
|
|
||||||
{
|
|
||||||
$result = $this->WidgetModel->getForDashboard($dashboard);
|
|
||||||
|
|
||||||
$widgets = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$widgets = array_map(function ($widget) {
|
|
||||||
$widget->arguments = json_decode($widget->arguments);
|
|
||||||
$tmpsetup = json_decode($widget->setup);
|
|
||||||
$tmpsetup->file = absoluteJsImportUrl($tmpsetup->file);
|
|
||||||
$widget->setup = $tmpsetup;
|
|
||||||
return $widget;
|
|
||||||
}, $widgets);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($widgets);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setAllowed()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('dashboard_id', 'Dashboard', 'required');
|
|
||||||
$this->form_validation->set_rules('widget_id', 'Widget', 'required');
|
|
||||||
$this->form_validation->set_rules('allowed', 'Allowed', 'is_bool');
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$data = [
|
|
||||||
'dashboard_id' => $this->input->post('dashboard_id'),
|
|
||||||
'widget_id' => $this->input->post('widget_id')
|
|
||||||
];
|
|
||||||
|
|
||||||
$this->load->model('dashboard/Dashboard_Widget_model', 'DashboardWidgetModel');
|
|
||||||
|
|
||||||
if ($this->input->post('allowed'))
|
|
||||||
$result = $this->DashboardWidgetModel->insert($data);
|
|
||||||
else
|
|
||||||
$result = $this->DashboardWidgetModel->delete($data);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class Detailheader extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'getHeader' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
|
|
||||||
'getPersonAbteilung' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
|
|
||||||
'getLeitungOrg' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getHeader($person_id)
|
|
||||||
{
|
|
||||||
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
|
|
||||||
|
|
||||||
$result = $this->Mitarbeitermodel->getHeader($person_id);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(current($data));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getPersonAbteilung($mitarbeiter_uid)
|
|
||||||
{
|
|
||||||
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
|
|
||||||
|
|
||||||
$result = $this->Mitarbeitermodel->getPersonAbteilung($mitarbeiter_uid);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(current($data));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getLeitungOrg($oekurzbz)
|
|
||||||
{
|
|
||||||
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
|
|
||||||
|
|
||||||
$result = $this->Mitarbeitermodel->getLeitungOrg($oekurzbz);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(current($data));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,237 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class Foto extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'uploadFoto' => ['admin:r', 'assistenz:r'],
|
|
||||||
'deleteFoto' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
//Load Models and Libraries
|
|
||||||
$this->load->model('person/Person_model', 'PersonModel');
|
|
||||||
$this->load->model("crm/Akte_model", "AkteModel");
|
|
||||||
$this->load->model('person/Fotostatusperson_model', 'FotostatusPersonModel');
|
|
||||||
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui',
|
|
||||||
'header'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function uploadFoto($person_id)
|
|
||||||
{
|
|
||||||
if(!$person_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person_id']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = json_decode(file_get_contents("php://input"), true);
|
|
||||||
|
|
||||||
if (!empty($data['image']))
|
|
||||||
{
|
|
||||||
$base64 = $data['image'];
|
|
||||||
$resizedImage1 = $this->_resize($base64, 827, 1063);
|
|
||||||
|
|
||||||
if (is_null($resizedImage1))
|
|
||||||
return $this->terminateWithError($this->p->t('header', 'error_fotoupload'), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$akte = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'dokument_kurzbz' => 'Lichtbil'));
|
|
||||||
|
|
||||||
$akteUpdateData = array(
|
|
||||||
'dokument_kurzbz' => 'Lichtbil',
|
|
||||||
'person_id' => $person_id,
|
|
||||||
'inhalt' => $resizedImage1,
|
|
||||||
'mimetype' => 'image/jpg',
|
|
||||||
'erstelltam' => date('c'),
|
|
||||||
'gedruckt' => false,
|
|
||||||
'titel' => 'Lichtbild_' . $person_id . '.jpg',
|
|
||||||
'bezeichnung' => 'Lichtbild gross',
|
|
||||||
'insertamum' => date('c'),
|
|
||||||
'insertvon' => getAuthUID(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (hasData($akte)) {
|
|
||||||
$akte_id = getData($akte)[0]->akte_id;
|
|
||||||
|
|
||||||
$akteUpdateData['updateamum'] = date('c');
|
|
||||||
$akteUpdateData['updatevon'] = getAuthUID();
|
|
||||||
$akteResult = $this->AkteModel->update(array('akte_id' => $akte_id), $akteUpdateData);
|
|
||||||
} else {
|
|
||||||
$akteResult = $this->AkteModel->insert($akteUpdateData);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isError($akteResult)) {
|
|
||||||
return $this->terminateWithError(getError($akteResult), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$resizedImage2 = $this->_resize($base64, 101, 130);
|
|
||||||
|
|
||||||
if (is_null($resizedImage2))
|
|
||||||
return $this->terminateWithError($this->p->t('header', 'error_fotoupload'), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->_updateFoto($person_id, $resizedImage2);
|
|
||||||
|
|
||||||
if (!isError($result)) {
|
|
||||||
$this->FotostatusPersonModel->insert(array(
|
|
||||||
'person_id' => $person_id,
|
|
||||||
'fotostatus_kurzbz' => 'hochgeladen',
|
|
||||||
'datum' => date('Y-m-d'),
|
|
||||||
'updateamum' => date('c'),
|
|
||||||
'updatevon' => getAuthUID(),
|
|
||||||
'insertamum' => date('c'),
|
|
||||||
'insertvon' => getAuthUID(),
|
|
||||||
));
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($base64);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('header', 'error_noPhoto'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function deleteFoto($person_id)
|
|
||||||
{
|
|
||||||
if(!$person_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person_id']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $this->_deleteFoto($person_id);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
{
|
|
||||||
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
return $this->terminateWithSuccess($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _resize($imageData, $maxwidth, $maxheight, $quality = 90)
|
|
||||||
{
|
|
||||||
$meta = getimagesize($imageData);
|
|
||||||
if (!$meta)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$src_width = $meta[0];
|
|
||||||
$src_height = $meta[1];
|
|
||||||
$mime = $meta['mime'];
|
|
||||||
|
|
||||||
switch ($mime) {
|
|
||||||
case 'image/jpeg':
|
|
||||||
case 'image/jpg':
|
|
||||||
$imagecreated = imagecreatefromjpeg($imageData);
|
|
||||||
break;
|
|
||||||
case 'image/png':
|
|
||||||
$imagecreated = imagecreatefrompng($imageData);
|
|
||||||
break;
|
|
||||||
case 'image/gif':
|
|
||||||
$imagecreated = imagecreatefromgif($imageData);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (!$imagecreated)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$src_aspect_ratio = $src_width / $src_height;
|
|
||||||
$thu_aspect_ratio = $maxwidth / $maxheight;
|
|
||||||
|
|
||||||
if ($src_width <= $maxwidth && $src_height <= $maxheight)
|
|
||||||
{
|
|
||||||
$thu_width = $src_width;
|
|
||||||
$thu_height = $src_height;
|
|
||||||
}
|
|
||||||
elseif ($thu_aspect_ratio > $src_aspect_ratio)
|
|
||||||
{
|
|
||||||
$thu_width = (int) ($maxheight * $src_aspect_ratio);
|
|
||||||
$thu_height = $maxheight;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$thu_width = $maxwidth;
|
|
||||||
$thu_height = (int) ($maxwidth / $src_aspect_ratio);
|
|
||||||
}
|
|
||||||
|
|
||||||
$imageScaled = imagecreatetruecolor($thu_width, $thu_height);
|
|
||||||
|
|
||||||
if ($mime === 'image/png')
|
|
||||||
{
|
|
||||||
$background = imagecolorallocate($imageScaled , 0, 0, 0);
|
|
||||||
imagecolortransparent($imageScaled, $background);
|
|
||||||
imagealphablending($imageScaled, false);
|
|
||||||
imagesavealpha($imageScaled, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
imagecopyresampled($imageScaled, $imagecreated, 0, 0, 0, 0, $thu_width, $thu_height, $src_width, $src_height);
|
|
||||||
|
|
||||||
if ($mime === "image/gif")
|
|
||||||
{
|
|
||||||
$background = imagecolorallocate($imageScaled, 0, 0, 0);
|
|
||||||
imagecolortransparent($imageScaled, $background);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($imageScaled))
|
|
||||||
{
|
|
||||||
ob_start();
|
|
||||||
|
|
||||||
if ($mime == 'image/png')
|
|
||||||
imagepng($imageScaled, NULL);
|
|
||||||
else if ($mime === 'image/gif')
|
|
||||||
imagegif($imageScaled, NULL);
|
|
||||||
else
|
|
||||||
imagejpeg($imageScaled, NULL, $quality);
|
|
||||||
|
|
||||||
$resizedImageData = ob_get_contents();
|
|
||||||
ob_end_clean();
|
|
||||||
@imagedestroy($imagecreated);
|
|
||||||
@imagedestroy($imageScaled);
|
|
||||||
|
|
||||||
|
|
||||||
if (!empty($resizedImageData))
|
|
||||||
{
|
|
||||||
return base64_encode($resizedImageData);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _updateFoto($person_id, $foto)
|
|
||||||
{
|
|
||||||
$personJson['foto'] = $foto;
|
|
||||||
$result = $this->PersonModel->update($person_id, $personJson);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
{
|
|
||||||
return error($result->msg, EXIT_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _deleteFoto($person_id)
|
|
||||||
{
|
|
||||||
$personJson['foto'] = null;
|
|
||||||
$result = $this->PersonModel->update($person_id, $personJson);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
{
|
|
||||||
return error($result->msg, EXIT_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -294,10 +294,6 @@ class Funktionen extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
}
|
}
|
||||||
if($datum_von == '')
|
|
||||||
$datum_von = null;
|
|
||||||
if($datum_bis == '')
|
|
||||||
$datum_bis = null;
|
|
||||||
|
|
||||||
$result = $this->BenutzerfunktionModel->update(
|
$result = $this->BenutzerfunktionModel->update(
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ class Gruppe extends FHCAPI_Controller
|
|||||||
'add' => ['admin:rw', 'assistenz:rw'],
|
'add' => ['admin:rw', 'assistenz:rw'],
|
||||||
'delete' => ['admin:rw', 'assistenz:rw'],
|
'delete' => ['admin:rw', 'assistenz:rw'],
|
||||||
'deleteFromLVPlan' => ['admin:rw', 'assistenz:rw'],
|
'deleteFromLVPlan' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getBenutzerSearch' => ['admin:r', 'assistenz:r'],
|
'getBenutzer' => ['admin:r', 'assistenz:r'],
|
||||||
'getAllSearch' => ['admin:r', 'assistenz:r'],
|
'getAll' => ['admin:r', 'assistenz:r'],
|
||||||
'getByLehreinheit' => ['admin:r', 'assistenz:r'],
|
'getByLehreinheit' => ['admin:r', 'assistenz:r'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -22,8 +22,7 @@ class Gruppe extends FHCAPI_Controller
|
|||||||
$this->_ci->load->library('PhrasesLib');
|
$this->_ci->load->library('PhrasesLib');
|
||||||
$this->loadPhrases(
|
$this->loadPhrases(
|
||||||
array(
|
array(
|
||||||
'ui',
|
'ui'
|
||||||
'lehre'
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -92,11 +91,11 @@ class Gruppe extends FHCAPI_Controller
|
|||||||
$lehreinheitgruppe_id = $this->input->post('lehreinheitgruppe_id');
|
$lehreinheitgruppe_id = $this->input->post('lehreinheitgruppe_id');
|
||||||
|
|
||||||
if (is_null($lehreinheit_id) || !ctype_digit((string)$lehreinheit_id) || is_null($lehreinheitgruppe_id) || !ctype_digit((string)$lehreinheitgruppe_id))
|
if (is_null($lehreinheit_id) || !ctype_digit((string)$lehreinheit_id) || is_null($lehreinheitgruppe_id) || !ctype_digit((string)$lehreinheitgruppe_id))
|
||||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
$lehreinheitgruppe_result = $this->_ci->LehreinheitgruppeModel->loadWhere(array('lehreinheitgruppe_id' => $lehreinheitgruppe_id));
|
$lehreinheitgruppe_result = $this->_ci->LehreinheitgruppeModel->loadWhere(array('lehreinheitgruppe_id' => $lehreinheitgruppe_id));
|
||||||
if (!hasData($lehreinheitgruppe_result) || isError($lehreinheitgruppe_result))
|
if (!hasData($lehreinheitgruppe_result) || isError($lehreinheitgruppe_result))
|
||||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
$this->checkPermission($lehreinheit_id);
|
$this->checkPermission($lehreinheit_id);
|
||||||
|
|
||||||
@@ -109,33 +108,15 @@ class Gruppe extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getAllSearch()
|
public function getAll()
|
||||||
{
|
{
|
||||||
$query = $this->input->get('query');
|
|
||||||
|
|
||||||
if (is_null($query))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$query_words = explode(' ', $query);
|
|
||||||
|
|
||||||
$this->_ci->GruppeModel->addSelect('gruppe_kurzbz,
|
$this->_ci->GruppeModel->addSelect('gruppe_kurzbz,
|
||||||
studiengang_kz,
|
studiengang_kz,
|
||||||
semester,
|
semester,
|
||||||
bezeichnung,
|
bezeichnung,
|
||||||
gid,
|
gid,
|
||||||
\'false\' as lehrverband');
|
\'false\' as lehrverband');
|
||||||
$this->_ci->GruppeModel->db->where(array('sichtbar' => true, 'aktiv' => true, 'lehre' => true, 'direktinskription' => false, 'semester IS NOT NULL' => null));
|
$gruppen_result = $this->_ci->GruppeModel->loadWhere(array('sichtbar' => true, 'aktiv' => true, 'lehre' => true, 'direktinskription' => false, 'semester IS NOT NULL' => null));
|
||||||
$this->_ci->GruppeModel->db->group_start();
|
|
||||||
foreach ($query_words as $word)
|
|
||||||
{
|
|
||||||
$this->_ci->GruppeModel->db->group_start();
|
|
||||||
$this->_ci->GruppeModel->db->where('gruppe_kurzbz ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->GruppeModel->db->or_where('bezeichnung ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->GruppeModel->db->group_end();
|
|
||||||
}
|
|
||||||
$this->_ci->GruppeModel->db->group_end();
|
|
||||||
|
|
||||||
$gruppen_result = $this->_ci->GruppeModel->load();
|
|
||||||
|
|
||||||
$gruppen_array = array();
|
$gruppen_array = array();
|
||||||
|
|
||||||
@@ -154,18 +135,7 @@ class Gruppe extends FHCAPI_Controller
|
|||||||
$this->_ci->LehrverbandModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
|
$this->_ci->LehrverbandModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
|
||||||
$this->_ci->LehrverbandModel->addOrder('verband');
|
$this->_ci->LehrverbandModel->addOrder('verband');
|
||||||
$this->_ci->LehrverbandModel->addOrder('gruppe');
|
$this->_ci->LehrverbandModel->addOrder('gruppe');
|
||||||
$this->_ci->LehrverbandModel->db->where(array('tbl_lehrverband.aktiv' => true));
|
$lehrverband_result = $this->_ci->LehrverbandModel->loadWhere(array('tbl_lehrverband.aktiv' => true));
|
||||||
|
|
||||||
$this->_ci->LehrverbandModel->db->group_start();
|
|
||||||
foreach ($query_words as $word)
|
|
||||||
{
|
|
||||||
$this->_ci->LehrverbandModel->db->group_start();
|
|
||||||
$this->_ci->LehrverbandModel->db->where('CONCAT(CONCAT(typ, kurzbz), \'\', semester, verband, COALESCE(gruppe,\'\')) ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->LehrverbandModel->db->or_where('tbl_lehrverband.bezeichnung ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->LehrverbandModel->db->group_end();
|
|
||||||
}
|
|
||||||
$this->_ci->LehrverbandModel->db->group_end();
|
|
||||||
$lehrverband_result = $this->_ci->LehrverbandModel->load();
|
|
||||||
|
|
||||||
$lehrverband_array = array();
|
$lehrverband_array = array();
|
||||||
|
|
||||||
@@ -180,40 +150,15 @@ class Gruppe extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess($all_gruppen);
|
$this->terminateWithSuccess($all_gruppen);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBenutzerSearch()
|
public function getBenutzer()
|
||||||
{
|
{
|
||||||
$query = $this->input->get('query');
|
|
||||||
|
|
||||||
if (is_null($query))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$query_words = explode(' ', $query);
|
|
||||||
|
|
||||||
$this->_ci->PersonModel->addSelect('vorname, nachname, uid, semester, UPPER(CONCAT(tbl_studiengang.typ, tbl_studiengang.kurzbz)) as studiengang');
|
$this->_ci->PersonModel->addSelect('vorname, nachname, uid, semester, UPPER(CONCAT(tbl_studiengang.typ, tbl_studiengang.kurzbz)) as studiengang');
|
||||||
$this->_ci->PersonModel->addJoin('public.tbl_benutzer', 'person_id');
|
$this->_ci->PersonModel->addJoin('public.tbl_benutzer', 'person_id');
|
||||||
$this->_ci->PersonModel->addJoin('public.tbl_mitarbeiter', 'uid = mitarbeiter_uid', 'LEFT');
|
$this->_ci->PersonModel->addJoin('public.tbl_mitarbeiter', 'uid = mitarbeiter_uid', 'LEFT');
|
||||||
$this->_ci->PersonModel->addJoin('public.tbl_student', 'uid = student_uid', 'LEFT');
|
$this->_ci->PersonModel->addJoin('public.tbl_student', 'uid = student_uid', 'LEFT');
|
||||||
$this->_ci->PersonModel->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
$this->_ci->PersonModel->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
||||||
|
|
||||||
$this->_ci->PersonModel->db->where(array('tbl_benutzer.aktiv' => true));
|
$personen = $this->_ci->PersonModel->loadWhere(array('tbl_benutzer.aktiv' => true));
|
||||||
|
|
||||||
$this->_ci->PersonModel->db->group_start();
|
|
||||||
foreach ($query_words as $word)
|
|
||||||
{
|
|
||||||
$this->_ci->PersonModel->db->group_start();
|
|
||||||
$this->_ci->PersonModel->db->where('tbl_person.vorname ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->PersonModel->db->or_where('tbl_person.nachname ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->PersonModel->db->or_where('uid ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->PersonModel->db->or_where('CONCAT(tbl_studiengang.typ, tbl_studiengang.kurzbz) ILIKE', "%" . $word . "%");
|
|
||||||
|
|
||||||
if (is_numeric($word))
|
|
||||||
{
|
|
||||||
$this->_ci->PersonModel->db->or_where('semester', $word);
|
|
||||||
}
|
|
||||||
$this->_ci->PersonModel->db->group_end();
|
|
||||||
}
|
|
||||||
$this->_ci->PersonModel->db->group_end();
|
|
||||||
$personen = $this->_ci->PersonModel->load();
|
|
||||||
$this->terminateWithSuccess(hasData($personen) ? getData($personen) : array());
|
$this->terminateWithSuccess(hasData($personen) ? getData($personen) : array());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,10 +169,6 @@ class Lehreinheit extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$value = $this->input->post($field);
|
$value = $this->input->post($field);
|
||||||
|
|
||||||
if ($field === 'lehre')
|
|
||||||
{
|
|
||||||
$value = (bool)$value;
|
|
||||||
}
|
|
||||||
if ($value !== null)
|
if ($value !== null)
|
||||||
{
|
{
|
||||||
$updateData[$field] = $value;
|
$updateData[$field] = $value;
|
||||||
@@ -285,43 +281,15 @@ class Lehreinheit extends FHCAPI_Controller
|
|||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
$lehreinheit_id = $this->input->post('lehreinheit_id');
|
$lehreinheit_id = $this->input->post('lehreinheit_id');
|
||||||
|
$lehreinheit = $this->checkLehreinheit($lehreinheit_id);
|
||||||
|
$this->checkPermission($lehreinheit->lehreinheit_id);
|
||||||
|
|
||||||
$errors = array();
|
$result = $this->_ci->LehreinheitModel->deleteLehreinheit($lehreinheit->lehreinheit_id);
|
||||||
if (is_array($lehreinheit_id))
|
|
||||||
{
|
|
||||||
foreach ($lehreinheit_id as $le_id)
|
|
||||||
{
|
|
||||||
$lehreinheit = $this->checkLehreinheit($le_id);
|
|
||||||
$this->checkPermission($lehreinheit->lehreinheit_id);
|
|
||||||
|
|
||||||
$result = $this->_ci->LehreinheitModel->deleteLehreinheit($lehreinheit->lehreinheit_id);
|
if (isError($result))
|
||||||
|
$this->terminateWithValidationErrors(getError($result));
|
||||||
|
|
||||||
if (isError($result))
|
$this->terminateWithSuccess('Erfolgreich geloescht');
|
||||||
{
|
|
||||||
$errors[] = getError($result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$lehreinheit = $this->checkLehreinheit($lehreinheit_id);
|
|
||||||
$this->checkPermission($lehreinheit->lehreinheit_id);
|
|
||||||
|
|
||||||
$result = $this->_ci->LehreinheitModel->deleteLehreinheit($lehreinheit->lehreinheit_id);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
$this->terminateWithError(getError($result));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isEmptyArray($errors))
|
|
||||||
{
|
|
||||||
if (count($errors) !== count($lehreinheit_id))
|
|
||||||
$this->terminateWithSuccess(array('errors' => $errors));
|
|
||||||
else
|
|
||||||
$this->terminateWithError($errors);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$this->terminateWithSuccess('Erfolgreich geloescht');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update()
|
public function update()
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class Lektor extends FHCAPI_Controller
|
|||||||
'deleteLVPlan' => ['admin:rw', 'assistenz:rw'],
|
'deleteLVPlan' => ['admin:rw', 'assistenz:rw'],
|
||||||
'deletePerson' => ['admin:rw', 'assistenz:rw'],
|
'deletePerson' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getLehrfunktionen' => ['admin:r', 'assistenz:r'],
|
'getLehrfunktionen' => ['admin:r', 'assistenz:r'],
|
||||||
'getLektorenSearch' => ['admin:r', 'assistenz:r'],
|
'getLektoren' => ['admin:r', 'assistenz:r'],
|
||||||
'getLektorenByLE' => ['admin:r', 'assistenz:r'],
|
'getLektorenByLE' => ['admin:r', 'assistenz:r'],
|
||||||
'getLektorDaten' => ['admin:r', 'assistenz:r'],
|
'getLektorDaten' => ['admin:r', 'assistenz:r'],
|
||||||
'getLektorVertrag' => ['admin:r', 'assistenz:r'],
|
'getLektorVertrag' => ['admin:r', 'assistenz:r'],
|
||||||
@@ -208,35 +208,12 @@ class Lektor extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess(getData($this->_ci->LehrfunktionModel->load()));
|
$this->terminateWithSuccess(getData($this->_ci->LehrfunktionModel->load()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLektorenSearch()
|
public function getLektoren()
|
||||||
{
|
{
|
||||||
$query = $this->input->get('query');
|
|
||||||
|
|
||||||
if (is_null($query))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$query_words = explode(' ', $query);
|
|
||||||
|
|
||||||
$this->_ci->MitarbeiterModel->addSelect('uid, person_id, vorname, nachname');
|
$this->_ci->MitarbeiterModel->addSelect('uid, person_id, vorname, nachname');
|
||||||
$this->_ci->MitarbeiterModel->addJoin('public.tbl_benutzer', 'uid = mitarbeiter_uid');
|
$this->_ci->MitarbeiterModel->addJoin('public.tbl_benutzer', 'uid = mitarbeiter_uid');
|
||||||
$this->_ci->MitarbeiterModel->addJoin('public.tbl_person', 'person_id');
|
$this->_ci->MitarbeiterModel->addJoin('public.tbl_person', 'person_id');
|
||||||
|
$this->terminateWithSuccess(getData($this->_ci->MitarbeiterModel->loadWhere(array('public.tbl_benutzer.aktiv' => true))));
|
||||||
$this->_ci->MitarbeiterModel->db->where('public.tbl_benutzer.aktiv', true);
|
|
||||||
|
|
||||||
$this->_ci->MitarbeiterModel->db->group_start();
|
|
||||||
foreach ($query_words as $word)
|
|
||||||
{
|
|
||||||
$this->_ci->MitarbeiterModel->db->group_start();
|
|
||||||
$this->_ci->MitarbeiterModel->db->where('tbl_person.vorname ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->MitarbeiterModel->db->or_where('tbl_person.nachname ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->MitarbeiterModel->db->or_where('uid ILIKE', "%" . $word . "%");
|
|
||||||
$this->_ci->MitarbeiterModel->db->group_end();
|
|
||||||
}
|
|
||||||
$this->_ci->MitarbeiterModel->db->group_end();
|
|
||||||
$this->_ci->MitarbeiterModel->addOrder('nachname');
|
|
||||||
$this->_ci->MitarbeiterModel->addOrder('vorname');
|
|
||||||
$result = $this->_ci->MitarbeiterModel->load();
|
|
||||||
$this->terminateWithSuccess(hasData($result) ? getData($result) : array());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkLehreinheit($lehreinheit_id)
|
private function checkLehreinheit($lehreinheit_id)
|
||||||
|
|||||||
@@ -47,22 +47,22 @@ class Setup extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$tabs['details'] = array (
|
$tabs['details'] = array (
|
||||||
'title' => 'Details',
|
'title' => 'Details',
|
||||||
'component' => absoluteJsImportUrl('public/js/components/LVVerwaltung/Tabs/Details.js'),
|
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Details.js',
|
||||||
'config' => []
|
'config' => []
|
||||||
);
|
);
|
||||||
$tabs['gruppen'] = array (
|
$tabs['gruppen'] = array (
|
||||||
'title' => 'Gruppen',
|
'title' => 'Gruppen',
|
||||||
'component' => absoluteJsImportUrl('public/js/components/LVVerwaltung/Tabs/Gruppen.js'),
|
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Gruppen.js',
|
||||||
'config' => []
|
'config' => []
|
||||||
);
|
);
|
||||||
$tabs['lektor'] = array (
|
$tabs['lektor'] = array (
|
||||||
'title' => 'LektorInnenzuteilung',
|
'title' => 'LektorInnenzuteilung',
|
||||||
'component' => absoluteJsImportUrl('public/js/components/LVVerwaltung/Tabs/Lektor.js'),
|
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Lektor.js',
|
||||||
'config' => []
|
'config' => []
|
||||||
);
|
);
|
||||||
$tabs['notiz'] = array (
|
$tabs['notiz'] = array (
|
||||||
'title' => 'Notizen',
|
'title' => 'Notizen',
|
||||||
'component' => absoluteJsImportUrl('public/js/components/LVVerwaltung/Tabs/Notiz.js'),
|
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Notiz.js',
|
||||||
'config' => []
|
'config' => []
|
||||||
);
|
);
|
||||||
$this->terminateWithSuccess($tabs);
|
$this->terminateWithSuccess($tabs);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ if (!defined('BASEPATH'))
|
|||||||
|
|
||||||
class Tags extends Tag_Controller
|
class Tags extends Tag_Controller
|
||||||
{
|
{
|
||||||
const BERECHTIGUNG_KURZBZ = ['admin:rw', 'assistenz:r'];
|
const BERECHTIGUNG_KURZBZ = ['admin:rw', 'assistenz:rw'];
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
class Messages extends FHCAPI_Controller
|
class Messages extends FHCAPI_Controller
|
||||||
@@ -13,15 +14,13 @@ class Messages extends FHCAPI_Controller
|
|||||||
'getMsgVarsPrestudent' => ['admin:r', 'assistenz:r'],
|
'getMsgVarsPrestudent' => ['admin:r', 'assistenz:r'],
|
||||||
'getMsgVarsLoggedInUser' => ['admin:r', 'assistenz:r'],
|
'getMsgVarsLoggedInUser' => ['admin:r', 'assistenz:r'],
|
||||||
'getNameOfDefaultRecipient' => ['admin:r', 'assistenz:r'],
|
'getNameOfDefaultRecipient' => ['admin:r', 'assistenz:r'],
|
||||||
'getNameOfDefaultRecipients' => ['admin:r', 'assistenz:r'],
|
|
||||||
'sendMessage' => ['admin:r', 'assistenz:r'],
|
'sendMessage' => ['admin:r', 'assistenz:r'],
|
||||||
'deleteMessage' => ['admin:r', 'assistenz:r'],
|
'deleteMessage' => ['admin:r', 'assistenz:r'],
|
||||||
'getDataVorlage' => ['admin:r', 'assistenz:r'],
|
'getVorlagentext' => ['admin:r', 'assistenz:r'],
|
||||||
'getPreviewText' => ['admin:r', 'assistenz:r'],
|
'getPreviewText' => ['admin:r', 'assistenz:r'],
|
||||||
'getReplyData' => ['admin:r', 'assistenz:r'],
|
'getReplyData' => ['admin:r', 'assistenz:r'],
|
||||||
'getPersonId' => ['admin:r', 'assistenz:r'],
|
'getPersonId' => ['admin:r', 'assistenz:r'],
|
||||||
'getUid' => ['admin:r', 'assistenz:r'],
|
'getUid' => ['admin:r', 'assistenz:r'],
|
||||||
'getUids' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Load Models
|
//Load Models
|
||||||
@@ -38,37 +37,26 @@ class Messages extends FHCAPI_Controller
|
|||||||
|
|
||||||
// Load language phrases
|
// Load language phrases
|
||||||
$this->loadPhrases([
|
$this->loadPhrases([
|
||||||
'ui', 'messages'
|
'ui'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMessages($id, $type_id, $size=null, $page=null)
|
public function getMessages($id, $type_id, $size, $page)
|
||||||
{
|
{
|
||||||
if($type_id != 'person_id'){
|
if($type_id != 'person_id'){
|
||||||
$id = $this->_getPersonId($id, $type_id);
|
$id = $this->_getPersonId($id, $type_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(is_null($size) && is_null($page)))
|
$offset = $size * ($page - 1);
|
||||||
{
|
$limit = $size;
|
||||||
$offset = $size * ($page - 1);
|
|
||||||
$limit = $size;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$offset = null;
|
|
||||||
$limit = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $this->MessageModel->getMessagesForTable($id, $offset, $limit);
|
$result = $this->MessageModel->getMessagesForTable($id, $offset, $limit);
|
||||||
|
|
||||||
if (hasData($result))
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
{
|
|
||||||
$data = getData($result);
|
|
||||||
$this->addMeta('count', $data['count']);
|
|
||||||
$this->terminateWithSuccess($data['data']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array());
|
$this->addMeta('count', $data['count']);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($data['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getVorlagen()
|
public function getVorlagen()
|
||||||
@@ -78,23 +66,33 @@ class Messages extends FHCAPI_Controller
|
|||||||
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||||
$result = $this->BenutzerfunktionModel->getBenutzerfunktionByUid($uid, 'oezuordnung');
|
$result = $this->BenutzerfunktionModel->getBenutzerfunktionByUid($uid, 'oezuordnung');
|
||||||
|
|
||||||
if (hasData($result))
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
{
|
$oe_kurzbz = current($data);
|
||||||
$this->load->model('system/Vorlage_model', 'VorlageModel');
|
|
||||||
|
|
||||||
$data = getData($result);
|
$this->load->model('system/Vorlage_model', 'VorlageModel');
|
||||||
|
|
||||||
$oe_kurzbz = array_column($data, 'oe_kurzbz');
|
$result = $this->VorlageModel->getAllVorlagenByOe($oe_kurzbz->oe_kurzbz);
|
||||||
$result = $this->VorlageModel->getAllVorlagenByOe($oe_kurzbz);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$this->terminateWithSuccess(hasData($result) ? getData($result) : array());
|
$this->terminateWithSuccess($data);
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array());
|
//If admin
|
||||||
|
$this->VorlageModel->addOrder('vorlage_kurzbz', 'ASC');
|
||||||
|
$result = $this->VorlageModel->loadWhere(
|
||||||
|
array(
|
||||||
|
'mimetype' => 'text/html'
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDataVorlage($vorlage_kurzbz)
|
public function getVorlagentext($vorlage_kurzbz)
|
||||||
{
|
{
|
||||||
|
//$this->terminateWithError("vor " . $vorlage_kurzbz, self::ERROR_TYPE_GENERAL);
|
||||||
|
//$studiengang_kz = 227; //TODO(Manu) dynamisieren NULL
|
||||||
$studiengang_kz = 0;
|
$studiengang_kz = 0;
|
||||||
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
|
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
|
||||||
$this->VorlagestudiengangModel->addOrder('version', 'DESC');
|
$this->VorlagestudiengangModel->addOrder('version', 'DESC');
|
||||||
@@ -106,53 +104,30 @@ class Messages extends FHCAPI_Controller
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
//not correct with Vorlage
|
||||||
$vorlage = current($data);
|
$vorlage = current($data);
|
||||||
$this->terminateWithSuccess($vorlage);
|
|
||||||
|
//$this->terminateWithSuccess($data);
|
||||||
|
$this->terminateWithSuccess($vorlage->text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMessageVarsPerson($typeId)
|
public function getMessageVarsPerson($id, $typeId)
|
||||||
{
|
{
|
||||||
$ids = $this->input->post('ids');
|
$person_id = ($typeId == 'mitarbeiter_uid') ? $this->_getPersonId($id, $typeId) : $id;
|
||||||
$messageVarsPerson = [];
|
$result = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
foreach ($ids as $id)
|
$this->terminateWithSuccess($data);
|
||||||
{
|
|
||||||
$person_id = ($typeId == 'mitarbeiter_uid') ? $this->_getPersonId($id, $typeId) : $id;
|
|
||||||
$result = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$messageVarsPerson[] = current($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($messageVarsPerson);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMsgVarsPrestudent($typeId)
|
public function getMsgVarsPrestudent($id, $typeId)
|
||||||
{
|
{
|
||||||
$ids = $this->input->post('ids');
|
$prestudent_id = ($typeId == 'uid') ? $this->_getPrestudentIdFromUid($id) : $id;
|
||||||
if(!is_array($ids)) {
|
$result = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
|
||||||
$ids = array($ids);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
}
|
|
||||||
$messageVarsPrestudent = [];
|
|
||||||
|
|
||||||
if($typeId == 'uid')
|
$this->terminateWithSuccess($data);
|
||||||
{
|
|
||||||
$prestudent_ids = [];
|
|
||||||
foreach ($ids as $id)
|
|
||||||
{
|
|
||||||
$prestudent_ids[] = $this->_getPrestudentIdFromUid($id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$prestudent_ids = $ids;
|
|
||||||
|
|
||||||
foreach ($prestudent_ids as $prestudent_id)
|
|
||||||
{
|
|
||||||
$result = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$messageVarsPrestudent[] = current($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($messageVarsPrestudent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMsgVarsLoggedInUser()
|
public function getMsgVarsLoggedInUser()
|
||||||
@@ -163,45 +138,27 @@ class Messages extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess($data);
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getNameOfDefaultRecipients($type_id)
|
public function getNameOfDefaultRecipient($id, $type_id)
|
||||||
{
|
{
|
||||||
$ids = $this->input->post('ids');
|
$id = ($type_id != 'person_id') ? $this->_getPersonId($id, $type_id) : $id;
|
||||||
if(!is_array($ids)) {
|
|
||||||
$ids = array($ids);
|
|
||||||
}
|
|
||||||
$recipients = [];
|
|
||||||
|
|
||||||
if (empty($ids)) {
|
|
||||||
|
|
||||||
throw new InvalidArgumentException($this->p->t('ui', 'errorMissingOrInvalidParameters', ['parameter'=> 'Id(s)']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load->model('person/Person_model', 'PersonModel');
|
$this->load->model('person/Person_model', 'PersonModel');
|
||||||
if($type_id != 'person_id'){
|
|
||||||
foreach ($ids as $id)
|
|
||||||
{
|
|
||||||
$person_id = $this->_getPersonId($id, $type_id);
|
|
||||||
$result = $this->PersonModel->load($person_id);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$name = current($data);
|
|
||||||
$recipients[$id] = $name->vorname . " " . $name->nachname;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
foreach ($ids as $id) {
|
|
||||||
$result = $this->PersonModel->load($id);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$name = current($data);
|
|
||||||
$recipients[$id] = $name->vorname . " " . $name->nachname;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($recipients);
|
$result = $this->PersonModel->load($id);
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
$name = current($data);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($name->vorname . " " . $name->nachname );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function sendMessage($typeId)
|
public function sendMessage($recipient_id)
|
||||||
{
|
{
|
||||||
$resultReturn = [];
|
//has to be uid
|
||||||
|
// $this->terminateWithError("uid", $recipient_id, self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
|
//default setting
|
||||||
|
$receiversPersonId = $this->_getPersonId($recipient_id, 'uid');
|
||||||
|
|
||||||
$uid = getAuthUID();
|
$uid = getAuthUID();
|
||||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||||
$result = $this->BenutzerModel->loadWhere(
|
$result = $this->BenutzerModel->loadWhere(
|
||||||
@@ -239,61 +196,49 @@ class Messages extends FHCAPI_Controller
|
|||||||
$body = $this->input->post('body');
|
$body = $this->input->post('body');
|
||||||
$relationmessage_id = $this->input->post('relationmessage_id');
|
$relationmessage_id = $this->input->post('relationmessage_id');
|
||||||
|
|
||||||
if (isset($_POST['ids']))
|
$typeId = $this->input->post('type_id');
|
||||||
|
$id = $this->input->post('id');
|
||||||
|
|
||||||
|
if($typeId == 'uid')
|
||||||
{
|
{
|
||||||
$ids = json_decode($_POST['ids']);
|
$prestudent_id = $this-> _getPrestudentIdFromUid($id);
|
||||||
unset($_POST['ids']);
|
|
||||||
foreach ($data as $k => $v) {
|
|
||||||
$_POST[$k] = $v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_array($ids)) {
|
//parseMessagetext for variables Prestudent
|
||||||
$ids = [$ids];
|
$result = $this->MessagesModel->parseMessageTextPrestudent($prestudent_id, $body);
|
||||||
|
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
||||||
}
|
}
|
||||||
|
if($typeId == 'mitarbeiter_uid')
|
||||||
foreach ($ids as $id)
|
|
||||||
{
|
{
|
||||||
$receiversPersonId = $typeId == "person_id" ? $id : $this->_getPersonId($id, $typeId);
|
$person_id = $this->_getPersonId($id, $typeId);
|
||||||
|
|
||||||
if($typeId == 'uid')
|
$result = $this->MessagesModel->parseMessageTextPerson($person_id, $body);
|
||||||
{
|
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
||||||
$prestudent_id = $this-> _getPrestudentIdFromUid($id);
|
$this->terminateWithError($bodyParsed, self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPrestudent($prestudent_id, $body);
|
|
||||||
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
|
||||||
}
|
|
||||||
if($typeId == 'mitarbeiter_uid')
|
|
||||||
{
|
|
||||||
$person_id = $this->_getPersonId($id, $typeId);
|
|
||||||
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPerson($person_id, $body);
|
|
||||||
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
|
||||||
}
|
|
||||||
elseif($typeId == 'person_id')
|
|
||||||
{
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPerson($id, $body);
|
|
||||||
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
|
||||||
}
|
|
||||||
elseif($typeId == 'prestudent_id')
|
|
||||||
{
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPrestudent($id, $body);
|
|
||||||
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('messages', 'error_missingLogic', ['type'=> $typeId]), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result =$this->messagelib->sendMessageUser($receiversPersonId, $subject, $bodyParsed, $benutzer->person_id, null, $relationmessage_id);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$resultReturn[] = current($data);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
$this->terminateWithSuccess($resultReturn);
|
elseif($typeId == 'person_id')
|
||||||
|
{
|
||||||
|
$result = $this->MessagesModel->parseMessageTextPerson($id, $body);
|
||||||
|
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
||||||
|
}
|
||||||
|
elseif($typeId == 'prestudent_id')
|
||||||
|
{
|
||||||
|
// $this->terminateWithError("prestudent_id ", self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
|
$result = $this->MessagesModel->parseMessageTextPrestudent($id, $body);
|
||||||
|
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->terminateWithError("type_id " . $typeId . " not valid", self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->messagelib->sendMessageUser($receiversPersonId, $subject, $bodyParsed, $benutzer->person_id, null, $relationmessage_id);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPreviewText($type_id)
|
public function getPreviewText($id, $type_id)
|
||||||
{
|
{
|
||||||
if (isset($_POST['data']))
|
if (isset($_POST['data']))
|
||||||
{
|
{
|
||||||
@@ -301,60 +246,39 @@ class Messages extends FHCAPI_Controller
|
|||||||
unset($_POST['data']);
|
unset($_POST['data']);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$this->terminateWithError($this->p->t('messages', 'errorMissingOrInvalidParameters', ['parameter'=> "Textbody"]), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError("Textbody missing ", self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
if (isset($_POST['ids']))
|
switch($type_id)
|
||||||
{
|
{
|
||||||
$ids = json_decode($_POST['ids']);
|
case 'uid':
|
||||||
if(!is_array($ids))
|
$prestudent_id = $this->_getPrestudentIdFromUid($id);
|
||||||
{
|
$result = $this->MessagesModel->parseMessageTextPrestudent($prestudent_id, $data);
|
||||||
$ids = array($ids);
|
break;
|
||||||
}
|
case 'prestudent_id':
|
||||||
unset($_POST['ids']);
|
$result = $this->MessagesModel->parseMessageTextPrestudent($id, $data);
|
||||||
|
break;
|
||||||
|
case 'person_id':
|
||||||
|
$result = $this->MessagesModel->parseMessageTextPerson($id, $data);
|
||||||
|
break;
|
||||||
|
case 'mitarbeiter_uid':
|
||||||
|
{
|
||||||
|
$person_id = $this->_getPersonId($id, $type_id);
|
||||||
|
$result = $this->MessagesModel->parseMessageTextPerson($person_id, $data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$this->terminateWithError("MESSAGES::getPreviewText logic for type_id " . $type_id . " not defined yet", self::ERROR_TYPE_GENERAL);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingOrInvalidParameters', ['parameter'=> 'Id(s)']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$bodyParsed = [];
|
$bodyParsed = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
foreach ($ids as $id)
|
|
||||||
{
|
|
||||||
switch($type_id)
|
|
||||||
{
|
|
||||||
case 'uid':
|
|
||||||
$prestudent_id = $this->_getPrestudentIdFromUid($id);
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPrestudent($prestudent_id, $data);
|
|
||||||
$bodyParsed[$id] = $this->getDataOrTerminateWithError($result);
|
|
||||||
break;
|
|
||||||
case 'prestudent_id':
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPrestudent($id, $data);
|
|
||||||
$bodyParsed[$id] = $this->getDataOrTerminateWithError($result);
|
|
||||||
break;
|
|
||||||
case 'person_id':
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPerson($id, $data);
|
|
||||||
$bodyParsed[$id] = $this->getDataOrTerminateWithError($result);
|
|
||||||
break;
|
|
||||||
case 'mitarbeiter_uid':
|
|
||||||
{
|
|
||||||
$person_id = $this->_getPersonId($id, $type_id);
|
|
||||||
$result = $this->MessagesModel->parseMessageTextPerson($person_id, $data);
|
|
||||||
$bodyParsed[$id] = $this->getDataOrTerminateWithError($result);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$this->terminateWithError($this->p->t('messages', 'error_missingLogic', ['type'=> $type_id]), self::ERROR_TYPE_GENERAL);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($bodyParsed);
|
$this->terminateWithSuccess($bodyParsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getReplyData($messageId)
|
public function getReplyData($messageId)
|
||||||
{
|
{
|
||||||
if (!is_numeric($messageId)) {
|
//TODO(Manu) validation of messageId: if number
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_valueNotNumeric', ['value'=> 'Message ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->MessageModel->addSelect('public.tbl_msg_message.*');
|
$this->MessageModel->addSelect('public.tbl_msg_message.*');
|
||||||
$this->MessageModel->addSelect('r.*');
|
$this->MessageModel->addSelect('r.*');
|
||||||
@@ -377,6 +301,7 @@ class Messages extends FHCAPI_Controller
|
|||||||
$replyBody = $this->_getReplyBody($body, $dataMessage[0]->nachname, $dataMessage[0]->vorname, $dataMessage[0]->insertamum);
|
$replyBody = $this->_getReplyBody($body, $dataMessage[0]->nachname, $dataMessage[0]->vorname, $dataMessage[0]->insertamum);
|
||||||
|
|
||||||
$dataMessage[0]->replyBody = $replyBody;
|
$dataMessage[0]->replyBody = $replyBody;
|
||||||
|
$dataMessage[0]->rest = "Help Manu";
|
||||||
$dataMessage[0]->replySubject = $prefix . $subject;
|
$dataMessage[0]->replySubject = $prefix . $subject;
|
||||||
|
|
||||||
$this->terminateWithSuccess($dataMessage);
|
$this->terminateWithSuccess($dataMessage);
|
||||||
@@ -424,11 +349,6 @@ class Messages extends FHCAPI_Controller
|
|||||||
['prestudent_id' => $id]
|
['prestudent_id' => $id]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('messages', 'error_missingLogic', ['type'=> $typeId]), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
$person = current($data);
|
$person = current($data);
|
||||||
@@ -436,11 +356,8 @@ class Messages extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess($person->person_id);
|
$this->terminateWithSuccess($person->person_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUids($typeId)
|
public function getUid($id, $typeId)
|
||||||
{
|
{
|
||||||
$ids = $this->input->post('ids');
|
|
||||||
$benutzerIds = [];
|
|
||||||
|
|
||||||
if (!$typeId)
|
if (!$typeId)
|
||||||
{
|
{
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Type ID']), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Type ID']), self::ERROR_TYPE_GENERAL);
|
||||||
@@ -448,50 +365,39 @@ class Messages extends FHCAPI_Controller
|
|||||||
elseif ($typeId == 'person_id')
|
elseif ($typeId == 'person_id')
|
||||||
{
|
{
|
||||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||||
foreach ($ids as $id)
|
$result = $this->BenutzerModel->loadWhere(
|
||||||
{
|
['person_id' => $id]
|
||||||
$result = $this->BenutzerModel->loadWhere(
|
);
|
||||||
['person_id' => $id]
|
|
||||||
);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$benutzer = current($data);
|
|
||||||
|
|
||||||
$benutzerIds[$id] = $benutzer->uid;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
elseif($typeId == 'prestudent_id')
|
elseif($typeId == 'prestudent_id')
|
||||||
{
|
{
|
||||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||||
foreach ($ids as $id)
|
$result = $this->PrestudentModel->loadWhere(
|
||||||
{
|
['prestudent_id' => $id]
|
||||||
$result = $this->PrestudentModel->loadWhere(
|
);
|
||||||
['prestudent_id' => $id]
|
|
||||||
);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
$person = current($data);
|
$person = current($data);
|
||||||
$person_id = $person->person_id;
|
$person_id = $person->person_id;
|
||||||
|
|
||||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||||
$result = $this->BenutzerModel->loadWhere(
|
$result = $this->BenutzerModel->loadWhere(
|
||||||
['person_id' => $person_id]
|
['person_id' => $person_id]
|
||||||
);
|
);
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$benutzer = current($data);
|
|
||||||
|
|
||||||
$benutzerIds[$id] = $benutzer->uid;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
elseif($typeId == 'uid' || $typeId == 'mitarbeiter_uid')
|
elseif($typeId == 'uid' || $typeId == 'mitarbeiter_uid')
|
||||||
{
|
{
|
||||||
$this->terminateWithSuccess($ids);
|
$this->terminateWithSuccess($id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->terminateWithError($this->p->t('messages', 'error_missingLogic', ['type'=> $typeId]), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError("MESSAGES::getUID logic for type_id " . $typeId . " not defined yet", self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->terminateWithSuccess($benutzerIds);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
$benutzer = current($data);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($benutzer->uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _getPersonId($id, $typeId)
|
private function _getPersonId($id, $typeId)
|
||||||
@@ -510,16 +416,11 @@ class Messages extends FHCAPI_Controller
|
|||||||
['prestudent_id' => $id]
|
['prestudent_id' => $id]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('messages', 'error_missingLogic', ['type'=> $typeId]), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
if (count($data) < 1)
|
if (count($data) < 1)
|
||||||
{
|
{
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID']), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError('Error: Messages API no person_id found.');
|
||||||
}
|
}
|
||||||
$person = current($data);
|
$person = current($data);
|
||||||
|
|
||||||
@@ -528,6 +429,7 @@ class Messages extends FHCAPI_Controller
|
|||||||
|
|
||||||
private function _getPrestudentIdFromUid($uid)
|
private function _getPrestudentIdFromUid($uid)
|
||||||
{
|
{
|
||||||
|
// $this->terminateWithError($uid, self::ERROR_TYPE_GENERAL);
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
$this->load->model('crm/Student_model', 'StudentModel');
|
||||||
$result = $this->StudentModel->loadWhere(
|
$result = $this->StudentModel->loadWhere(
|
||||||
['student_uid' => $uid]
|
['student_uid' => $uid]
|
||||||
@@ -536,7 +438,7 @@ class Messages extends FHCAPI_Controller
|
|||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
if (count($data) < 1)
|
if (count($data) < 1)
|
||||||
{
|
{
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Prestudent ID']), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError('Error: Messages API no prestudent_id found.');
|
||||||
}
|
}
|
||||||
$student = current($data);
|
$student = current($data);
|
||||||
|
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizAnrechnung extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
//Load Models
|
|
||||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
|
||||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "anrechnung_id")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO define permission
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizBestellung extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
//Load Models
|
|
||||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
|
||||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "bestellung_id")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
//TODO define permission
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,106 +17,5 @@ class NotizLehreinheit extends Notiz_Controller
|
|||||||
'getMitarbeiter' => ['admin:r', 'assistenz:r'],
|
'getMitarbeiter' => ['admin:r', 'assistenz:r'],
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Load Models
|
|
||||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
|
||||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
|
||||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
|
|
||||||
//Permission checks for allowed Oes
|
|
||||||
$allowedOes = $this->permissionlib->getOE_isEntitledFor('assistenz') ?: [];
|
|
||||||
|
|
||||||
if ($this->router->method == 'addNewNotiz')
|
|
||||||
{
|
|
||||||
$json = $this->input->post('data');
|
|
||||||
$post_data = json_decode($json, true);
|
|
||||||
$lehreinheit_id = $post_data['id'];
|
|
||||||
|
|
||||||
if(!$lehreinheit_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Lehreinheit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkAllowedOesFromLehreinheit($lehreinheit_id, $allowedOes);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->router->method == 'updateNotiz')
|
|
||||||
{
|
|
||||||
$json = $this->input->post('data');
|
|
||||||
$post_data = json_decode($json, true);
|
|
||||||
$notiz_id = $post_data['notiz_id'];
|
|
||||||
|
|
||||||
if(!$notiz_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Notiz ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//get lehreinheit_id
|
|
||||||
$result = $this->NotizzuordnungModel->loadWhere(['notiz_id' => $notiz_id]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$lehreinheit_id = current($data)->lehreinheit_id;
|
|
||||||
|
|
||||||
if(!$lehreinheit_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Lehreinheit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkAllowedOesFromLehreinheit($lehreinheit_id, $allowedOes);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->router->method == 'deleteNotiz')
|
|
||||||
{
|
|
||||||
$notiz_id = $this->input->post('notiz_id');
|
|
||||||
$lehreinheit_id = $this->input->post('id');
|
|
||||||
|
|
||||||
if(!$notiz_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Notiz ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$lehreinheit_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Lehreinheit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkAllowedOesFromLehreinheit($lehreinheit_id, $allowedOes);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui'
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _checkAllowedOesFromLehreinheit($lehreinheit_id, $allowedOes)
|
|
||||||
{
|
|
||||||
//get oe from lehreinheit
|
|
||||||
$result = $this->LehreinheitModel->getOes($lehreinheit_id);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$oes = current($data);
|
|
||||||
|
|
||||||
if (!in_array($oes, $allowedOes))
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_keineBerechtigungStg') . " " . $oes, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "lehreinheit_id")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizMitarbeiter extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
//Load Models
|
|
||||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
|
||||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "mitarbeiter_uid")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO define permission
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -20,100 +20,33 @@ class NotizPerson extends Notiz_Controller
|
|||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
||||||
'getCountNotes' => ['admin:r', 'assistenz:r'],
|
'getCountNotes' => ['admin:r', 'assistenz:r'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Load Models
|
|
||||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
|
||||||
|
|
||||||
//Permission checks for allowed Oes
|
|
||||||
if ($this->router->method == 'addNewNotiz')
|
|
||||||
{
|
|
||||||
$json = $this->input->post('data');
|
|
||||||
$post_data = json_decode($json, true);
|
|
||||||
$person_id = $post_data['id'];
|
|
||||||
|
|
||||||
$allowedStgs = $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: [];
|
|
||||||
|
|
||||||
if(!$person_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkIfBerechtigungForOnePrestudentExists($person_id, $allowedStgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $this->router->method == 'updateNotiz')
|
|
||||||
{
|
|
||||||
$json = $this->input->post('data');
|
|
||||||
$post_data = json_decode($json, true);
|
|
||||||
$notiz_id = $post_data['notiz_id'];
|
|
||||||
|
|
||||||
if(!$notiz_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Notiz ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//get person_id
|
|
||||||
$result = $this->NotizzuordnungModel->loadWhere(['notiz_id' => $notiz_id]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$person_id = current($data)->person_id;
|
|
||||||
|
|
||||||
$allowedStgs = $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: [];
|
|
||||||
$this->_checkIfBerechtigungForOnePrestudentExists($person_id, $allowedStgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->router->method == 'deleteNotiz' )
|
|
||||||
{
|
|
||||||
$notiz_id = $this->input->post('notiz_id');
|
|
||||||
$person_id = $this->input->post('id');
|
|
||||||
|
|
||||||
if(!$notiz_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Notiz ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$person_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'person ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$allowedStgs = $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: [];
|
|
||||||
$this->_checkIfBerechtigungForOnePrestudentExists($person_id, $allowedStgs);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
public function isBerechtigt($id, $typeId)
|
||||||
{
|
{
|
||||||
if($typeId != "person_id")
|
if($typeId != "person_id")
|
||||||
{
|
{
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
return $this->terminateWithError($this->p->t('ui', 'error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO define permission
|
||||||
if (!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
if (!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
||||||
{
|
{
|
||||||
$result = $this->p->t('lehre', 'error_keineSchreibrechte');
|
$result = $this->p->t('lehre', 'error_keineSchreibrechte');
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
|
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
return $this->outputJsonSuccess(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//stv: if person has permission of one studiengang of person -> permission to add/update/delete Note
|
public function loadDokumente()
|
||||||
private function _checkIfBerechtigungForOnePrestudentExists($person_id, $allowedStgs)
|
|
||||||
{
|
{
|
||||||
$result = $this->PrestudentModel->loadWhere(['person_id' => $person_id]);
|
$notiz_id = $this->input->post('notiz_id');
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$checkarray = [];
|
// TODO(chris): make CI variant of endpoint
|
||||||
foreach ($data as $item)
|
$this->NotizModel->addSelect($this->NotizModel->escape(base_url('content/notizdokdownload.php?id=')) . ' || campus.tbl_dms_version.dms_id AS preview');
|
||||||
{
|
|
||||||
if(in_array($item->studiengang_kz, $allowedStgs))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_keineBerechtigungStg'), self::ERROR_TYPE_GENERAL);
|
return parent::loadDokumente();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizPrestudent extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
//Load Models
|
|
||||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
|
||||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui'
|
|
||||||
]);
|
|
||||||
|
|
||||||
//Permission checks for Studiengangsarray
|
|
||||||
$allowedStgs = $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: [];
|
|
||||||
|
|
||||||
if ($this->router->method == 'addNewNotiz')
|
|
||||||
{
|
|
||||||
$json = $this->input->post('data');
|
|
||||||
$post_data = json_decode($json, true);
|
|
||||||
$prestudent_id = $post_data['id'];
|
|
||||||
|
|
||||||
if(!$prestudent_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Lehreinheit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkAllowedOesFromPrestudent($prestudent_id, $allowedStgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->router->method == 'updateNotiz')
|
|
||||||
{
|
|
||||||
$json = $this->input->post('data');
|
|
||||||
$post_data = json_decode($json, true);
|
|
||||||
$notiz_id = $post_data['notiz_id'];
|
|
||||||
|
|
||||||
if(!$notiz_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Notiz ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//get prestudent_id
|
|
||||||
$result = $this->NotizzuordnungModel->loadWhere(['notiz_id' => $notiz_id]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$prestudent_id = current($data)->prestudent_id;
|
|
||||||
|
|
||||||
if(!$prestudent_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Prestudent ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkAllowedOesFromPrestudent($prestudent_id, $allowedStgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->router->method == 'deleteNotiz')
|
|
||||||
{
|
|
||||||
$notiz_id = $this->input->post('notiz_id');
|
|
||||||
$prestudent_id = $this->input->post('id');
|
|
||||||
|
|
||||||
if(!$notiz_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Notiz ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$prestudent_id)
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Prestudent ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->_checkAllowedOesFromPrestudent($prestudent_id, $allowedStgs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "prestudent_id")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _checkAllowedOesFromPrestudent($prestudent_id, $allowedStgs)
|
|
||||||
{
|
|
||||||
$student_uid = $this->StudentModel->getUID($prestudent_id);
|
|
||||||
|
|
||||||
$result = $this->StudentModel->loadWhere(['student_uid' => $student_uid]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$studiengang_kz = current($data)->studiengang_kz;
|
|
||||||
|
|
||||||
if (!in_array($studiengang_kz, $allowedStgs))
|
|
||||||
{
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_keineBerechtigungStg'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizProjekt extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "projekt_kurzbz")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO define permission
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizProjektphase extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "projektphase_id")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO define permission
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class NotizProjekttask extends Notiz_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'isBerechtigt' => ['admin:r', 'assistenz:r'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isBerechtigt($id, $typeId)
|
|
||||||
{
|
|
||||||
if($typeId != "projekttask_id")
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui','error_typeNotizIdIncorrect'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO define permission
|
|
||||||
if(!$this->permissionlib->isBerechtigt('admin', 'suid') && !$this->permissionlib->isBerechtigt('assistenz', 'suid'))
|
|
||||||
{
|
|
||||||
$result = $this->p->t('lehre','error_keineSchreibrechte');
|
|
||||||
|
|
||||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess("berechtigt in überschreibender Funktion");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* FH-Complete
|
|
||||||
*
|
|
||||||
* @package FHC-API
|
|
||||||
* @author FHC-Team
|
|
||||||
* @copyright Copyright (c) 2016, fhcomplete.org
|
|
||||||
* @license GPLv3
|
|
||||||
* @link http://fhcomplete.org
|
|
||||||
* @since Version 1.0
|
|
||||||
* @filesource
|
|
||||||
*/
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class Studienplan extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
// TODO(chris): access!
|
|
||||||
parent::__construct([
|
|
||||||
'getBySemester' => self::PERM_LOGGED
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getBySemester()
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
|
||||||
|
|
||||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
|
||||||
$studiensemester_kurzbz = $this->input->get('studiensemester_kurzbz');
|
|
||||||
$ausbildungssemester = $this->input->get('ausbildungssemester') ?: null;
|
|
||||||
$orgform_kurzbz = $this->input->get('orgform_kurzbz') ?: null;
|
|
||||||
|
|
||||||
if (!$studiengang_kz || !is_numeric($studiengang_kz))
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Studiengangskennzahl']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!$studiensemester_kurzbz)
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Studiensemester']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (isset($ausbildungssemester) && !is_numeric($ausbildungssemester))
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Ausbildungssemester']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
|
|
||||||
//~ $this->load->library('form_validation');
|
|
||||||
|
|
||||||
//~ $this->form_validation->set_rules('studiengang_kz', 'StudiengangKz', 'required|numeric');
|
|
||||||
//~ $this->form_validation->set_rules('studiensemester_kurzbz', 'StudiensemesterKurbz', 'required');
|
|
||||||
//~ $this->form_validation->set_rules('ausbildungssemester', 'Ausbildungssemester', 'numeric');
|
|
||||||
|
|
||||||
//~ if (!$this->form_validation->run())
|
|
||||||
//~ {
|
|
||||||
//~ $this->addMeta('fail2', 'fail2');
|
|
||||||
//~ return $this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
|
|
||||||
$this->addMeta('stg_kz', $studiengang_kz);
|
|
||||||
$this->addMeta('sem', $studiensemester_kurzbz);
|
|
||||||
$this->addMeta('sem2', $ausbildungssemester);
|
|
||||||
$this->addMeta('org', $orgform_kurzbz);
|
|
||||||
|
|
||||||
$result = $this->StudienplanModel->getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz);
|
|
||||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -25,8 +25,7 @@ class Studiensemester extends FHCAPI_Controller
|
|||||||
array(
|
array(
|
||||||
'getAll' => self::PERM_LOGGED,
|
'getAll' => self::PERM_LOGGED,
|
||||||
'getAktNext' => self::PERM_LOGGED,
|
'getAktNext' => self::PERM_LOGGED,
|
||||||
'getStudienjahrByStudiensemester' => self::PERM_LOGGED,
|
'getStudienjahrByStudiensemester' => self::PERM_LOGGED
|
||||||
'getAllStudiensemesterAndAktOrNext' => self::PERM_LOGGED
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
// Load model StudiensemesterModel
|
// Load model StudiensemesterModel
|
||||||
@@ -153,17 +152,4 @@ class Studiensemester extends FHCAPI_Controller
|
|||||||
|
|
||||||
$this->terminateWithSuccess((getData(success($studienjahrObj))));
|
$this->terminateWithSuccess((getData(success($studienjahrObj))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAllStudiensemesterAndAktOrNext() {
|
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
|
||||||
|
|
||||||
$this->StudiensemesterModel->addOrder("start", "DESC");
|
|
||||||
$result = $this->StudiensemesterModel->getAktOrNextSemester();
|
|
||||||
$aktuell = getData($result)[0];
|
|
||||||
$this->StudiensemesterModel->addSelect('*');
|
|
||||||
$result = $this->StudiensemesterModel->load();
|
|
||||||
$studiensemester = getData($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(array($studiensemester, $aktuell));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,9 +127,9 @@ class Unterbrechung extends FHCAPI_Controller
|
|||||||
$this->form_validation->set_rules(
|
$this->form_validation->set_rules(
|
||||||
'datum_wiedereinstieg',
|
'datum_wiedereinstieg',
|
||||||
'Datum Wiedereinstieg',
|
'Datum Wiedereinstieg',
|
||||||
'required|is_valid_date|callback_isDateInFuture',
|
'required|callback_isValidDate|callback_isDateInFuture',
|
||||||
[
|
[
|
||||||
'is_valid_date' => $this->p->t('ui', 'error_invalid_date'),
|
'isValidDate' => $this->p->t('ui', 'error_invalid_date'),
|
||||||
'isDateInFuture' => $this->p->t('ui', 'error_invalid_date')
|
'isDateInFuture' => $this->p->t('ui', 'error_invalid_date')
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -209,9 +209,18 @@ class Unterbrechung extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess(getData($result));
|
$this->terminateWithSuccess(getData($result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isValidDate($date)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
new DateTime($date);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public function isDateInFuture($date)
|
public function isDateInFuture($date)
|
||||||
{
|
{
|
||||||
return new DateTime() < new DateTime($date);
|
return new DateTime() < new DateTime($date);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
'getBeurteilungen' => ['admin:rw', 'assistenz:rw'],
|
'getBeurteilungen' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getAkadGrade' => ['admin:rw', 'assistenz:rw'],
|
'getAkadGrade' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getMitarbeiter' => ['admin:rw', 'assistenz:rw'],
|
'getMitarbeiter' => ['admin:rw', 'assistenz:rw'],
|
||||||
|
'getAllMitarbeiter' => ['admin:rw', 'assistenz:rw'],
|
||||||
|
'getAllPersons' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getPruefer' => ['admin:rw', 'assistenz:rw'],
|
'getPruefer' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getTypStudiengang' => ['admin:rw', 'assistenz:rw'],
|
'getTypStudiengang' => ['admin:rw', 'assistenz:rw'],
|
||||||
'checkForExistingExams' => ['admin:rw', 'assistenz:rw'],
|
'checkForExistingExams' => ['admin:rw', 'assistenz:rw'],
|
||||||
@@ -100,45 +102,35 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$abschlusspruefung_id = $this->input->post('id');
|
$abschlusspruefung_id = $this->input->post('id');
|
||||||
|
|
||||||
$this->AbschlusspruefungModel->addSelect(
|
$this->AbschlusspruefungModel->addSelect('lehre.tbl_abschlusspruefung.*');
|
||||||
'lehre.tbl_abschlusspruefung.*,
|
$this->AbschlusspruefungModel->addSelect("
|
||||||
p1.person_id AS p1_person_id, p1.vorname AS p1_vorname, p1.nachname AS p1_nachname,
|
CASE
|
||||||
p1.titelpre AS p1_titelpre, p1.titelpost AS p1_titelpost,
|
WHEN pruefer1 IS NOT NULL
|
||||||
p2.person_id AS p2_person_id, p2.vorname AS p2_vorname, p2.nachname AS p2_nachname,
|
THEN CONCAT(p1.nachname, ' ', p1.vorname, COALESCE(' ' || p1.titelpre, ''))
|
||||||
p2.titelpre AS p2_titelpre, p2.titelpost AS p2_titelpost,
|
ELSE NULL
|
||||||
p3.person_id AS p3_person_id, p3.vorname AS p3_vorname, p3.nachname AS p3_nachname,
|
END AS p1
|
||||||
p3.titelpre AS p3_titelpre, p3.titelpost AS p3_titelpost,
|
");
|
||||||
pv.person_id AS pv_person_id, pv.vorname AS pv_vorname, pv.nachname AS pv_nachname,
|
$this->AbschlusspruefungModel->addSelect("
|
||||||
pv.titelpre AS pv_titelpre, pv.titelpost AS pv_titelpost, ben.uid AS pv_uid'
|
CASE
|
||||||
);
|
WHEN pruefer2 IS NOT NULL
|
||||||
//~ $this->AbschlusspruefungModel->addSelect("
|
THEN CONCAT(p2.nachname, ' ', p2.vorname, COALESCE(' ' || p2.titelpre, ''))
|
||||||
//~ CASE
|
ELSE NULL
|
||||||
//~ WHEN pruefer1 IS NOT NULL
|
END AS p2
|
||||||
//~ THEN CONCAT(p1.nachname, ' ', p1.vorname, COALESCE(' ' || p1.titelpre, ''))
|
");
|
||||||
//~ ELSE NULL
|
$this->AbschlusspruefungModel->addSelect("
|
||||||
//~ END AS p1
|
CASE
|
||||||
//~ ");
|
WHEN pruefer3 IS NOT NULL
|
||||||
//~ $this->AbschlusspruefungModel->addSelect("
|
THEN CONCAT(p3.nachname, ' ', p3.vorname, COALESCE(' ' || p3.titelpre, ''))
|
||||||
//~ CASE
|
ELSE NULL
|
||||||
//~ WHEN pruefer2 IS NOT NULL
|
END AS p3
|
||||||
//~ THEN CONCAT(p2.nachname, ' ', p2.vorname, COALESCE(' ' || p2.titelpre, ''))
|
");
|
||||||
//~ ELSE NULL
|
$this->AbschlusspruefungModel->addSelect("
|
||||||
//~ END AS p2
|
CASE
|
||||||
//~ ");
|
WHEN vorsitz IS NOT NULL
|
||||||
//~ $this->AbschlusspruefungModel->addSelect("
|
THEN CONCAT(pv.nachname, ' ', pv.vorname, COALESCE(' ' || pv.titelpre, ''), ' (', ben.uid , ')' )
|
||||||
//~ CASE
|
ELSE NULL
|
||||||
//~ WHEN pruefer3 IS NOT NULL
|
END AS pv
|
||||||
//~ THEN CONCAT(p3.nachname, ' ', p3.vorname, COALESCE(' ' || p3.titelpre, ''))
|
");
|
||||||
//~ ELSE NULL
|
|
||||||
//~ END AS p3
|
|
||||||
//~ ");
|
|
||||||
//~ $this->AbschlusspruefungModel->addSelect("
|
|
||||||
//~ CASE
|
|
||||||
//~ WHEN vorsitz IS NOT NULL
|
|
||||||
//~ THEN CONCAT(pv.nachname, ' ', pv.vorname, COALESCE(' ' || pv.titelpre, ''), ' (', ben.uid , ')' )
|
|
||||||
//~ ELSE NULL
|
|
||||||
//~ END AS pv
|
|
||||||
//~ ");
|
|
||||||
$this->AbschlusspruefungModel->addJoin('public.tbl_benutzer ben', 'ON (ben.uid = lehre.tbl_abschlusspruefung.vorsitz)', 'LEFT');
|
$this->AbschlusspruefungModel->addJoin('public.tbl_benutzer ben', 'ON (ben.uid = lehre.tbl_abschlusspruefung.vorsitz)', 'LEFT');
|
||||||
$this->AbschlusspruefungModel->addJoin('public.tbl_person pv', 'ON (pv.person_id = ben.person_id)', 'LEFT');
|
$this->AbschlusspruefungModel->addJoin('public.tbl_person pv', 'ON (pv.person_id = ben.person_id)', 'LEFT');
|
||||||
$this->AbschlusspruefungModel->addJoin('public.tbl_person p1', 'ON (p1.person_id = lehre.tbl_abschlusspruefung.pruefer1)', 'LEFT');
|
$this->AbschlusspruefungModel->addJoin('public.tbl_person p1', 'ON (p1.person_id = lehre.tbl_abschlusspruefung.pruefer1)', 'LEFT');
|
||||||
@@ -228,10 +220,8 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess($typStudiengang);
|
$this->terminateWithSuccess($typStudiengang);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMitarbeiter()
|
public function getMitarbeiter($searchString)
|
||||||
{
|
{
|
||||||
$searchString = $this->input->get('searchString') ?? '';
|
|
||||||
|
|
||||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||||
|
|
||||||
$result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'mitAkadGrad');
|
$result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'mitAkadGrad');
|
||||||
@@ -242,10 +232,8 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess($result ?: []);
|
$this->terminateWithSuccess($result ?: []);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPruefer()
|
public function getPruefer($searchString)
|
||||||
{
|
{
|
||||||
$searchString = $this->input->get('searchString') ?? '';
|
|
||||||
|
|
||||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||||
|
|
||||||
$result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'ohneMaUid');
|
$result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'ohneMaUid');
|
||||||
@@ -371,9 +359,6 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
}
|
}
|
||||||
|
|
||||||
$datum = $formData['datum'] == '' ? null : $formData['datum'];
|
|
||||||
$sponsion = $formData['sponsion'] == '' ? null : $formData['sponsion'];
|
|
||||||
|
|
||||||
$result = $this->AbschlusspruefungModel->update(
|
$result = $this->AbschlusspruefungModel->update(
|
||||||
[
|
[
|
||||||
'abschlusspruefung_id' => $abschlusspruefung_id
|
'abschlusspruefung_id' => $abschlusspruefung_id
|
||||||
@@ -385,8 +370,8 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
'vorsitz' => $vorsitz,
|
'vorsitz' => $vorsitz,
|
||||||
'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'],
|
'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'],
|
||||||
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
|
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
|
||||||
'datum' => $datum,
|
'datum' => $formData['datum'],
|
||||||
'sponsion' => $sponsion,
|
'sponsion' => $formData['sponsion'],
|
||||||
'pruefer1' => $pruefer1,
|
'pruefer1' => $pruefer1,
|
||||||
'pruefer2' => $pruefer2,
|
'pruefer2' => $pruefer2,
|
||||||
'pruefer3' => $pruefer3,
|
'pruefer3' => $pruefer3,
|
||||||
@@ -459,4 +444,58 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
$this->terminateWithSuccess('step3');
|
$this->terminateWithSuccess('step3');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns list of all Mitarbeiter
|
||||||
|
* as key value list to be used in select or autocomplete
|
||||||
|
*/
|
||||||
|
public function getAllMitarbeiter()
|
||||||
|
{
|
||||||
|
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||||
|
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
ma.mitarbeiter_uid as mitarbeiter_uid,
|
||||||
|
CONCAT(p.nachname, ' ', p.vorname, ' (', ma.mitarbeiter_uid, ')') as label
|
||||||
|
FROM
|
||||||
|
public.tbl_mitarbeiter ma
|
||||||
|
JOIN public.tbl_benutzer bn ON (bn.uid = ma.mitarbeiter_uid)
|
||||||
|
JOIN public.tbl_person p ON (p.person_id = bn.person_id)
|
||||||
|
ORDER BY
|
||||||
|
p.nachname ASC
|
||||||
|
";
|
||||||
|
|
||||||
|
$result = $this->MitarbeiterModel->execReadOnlyQuery($sql);
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns list of all Persons
|
||||||
|
* as key value list to be used in select or autocomplete
|
||||||
|
*/
|
||||||
|
public function getAllPersons()
|
||||||
|
{
|
||||||
|
$this->load->model('person/Person_model', 'PersonModel');
|
||||||
|
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
p.vorname, p.nachname, p.person_id,
|
||||||
|
CONCAT(p.nachname, ' ', p.vorname) as label
|
||||||
|
FROM
|
||||||
|
public.tbl_person p
|
||||||
|
-- JOIN public.tbl_benutzer bn ON (p.person_id = bn.person_id)
|
||||||
|
-- and bn.aktiv = 'true'
|
||||||
|
ORDER BY
|
||||||
|
p.nachname ASC
|
||||||
|
";
|
||||||
|
|
||||||
|
//TODO(manu) check if filter active benutzer
|
||||||
|
|
||||||
|
$result = $this->PersonModel->execReadOnlyQuery($sql);
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class Archiv extends FHCAPI_Controller
|
|||||||
'archive' => ['admin:w', 'assistenz:w'],
|
'archive' => ['admin:w', 'assistenz:w'],
|
||||||
'download' => ['admin:w', 'assistenz:w'],
|
'download' => ['admin:w', 'assistenz:w'],
|
||||||
'update' => ['admin:w'],
|
'update' => ['admin:w'],
|
||||||
'delete' => ['admin:w', 'assistenz:w'],
|
'delete' => ['admin:w', 'assistenz:w']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Load models
|
// Load models
|
||||||
@@ -107,9 +107,13 @@ class Archiv extends FHCAPI_Controller
|
|||||||
|
|
||||||
$result = $this->AkteModel->load($akte_id);
|
$result = $this->AkteModel->load($akte_id);
|
||||||
|
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithError('Akte not found');
|
if (!hasData($result)) $this->terminateWithError('Akte not found');
|
||||||
|
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$data = getData($result)[0];
|
$data = getData($result)[0];
|
||||||
|
//$this->addMeta("daa", $data->inhalt);
|
||||||
|
|
||||||
$fileObj = new stdClass();
|
$fileObj = new stdClass();
|
||||||
if (isset($data->inhalt) && $data->inhalt != '')
|
if (isset($data->inhalt) && $data->inhalt != '')
|
||||||
@@ -129,7 +133,12 @@ class Archiv extends FHCAPI_Controller
|
|||||||
//header("Content-type: $data->mimetype");
|
//header("Content-type: $data->mimetype");
|
||||||
header('Content-Disposition: attachment; filename="'.$data->titel.'"');
|
header('Content-Disposition: attachment; filename="'.$data->titel.'"');
|
||||||
readfile($filename);
|
readfile($filename);
|
||||||
|
//echo base64_decode($data->inhalt);
|
||||||
die();
|
die();
|
||||||
|
//~ $fileObj->file = $data->inhalt;
|
||||||
|
//~ $fileObj->name = $data->titel;
|
||||||
|
//~ $fileObj->mimetype = $data->mimetype;
|
||||||
|
//~ $fileObj->disposition = 'attachment';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -137,6 +146,12 @@ class Archiv extends FHCAPI_Controller
|
|||||||
|
|
||||||
$result = $this->aktelib->get($akte_id);
|
$result = $this->aktelib->get($akte_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* $fileObj->filename
|
||||||
|
* $fileObj->file
|
||||||
|
* $fileObj->name
|
||||||
|
* $fileObj->mimetype
|
||||||
|
* $fileObj->disposition*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -36,44 +36,15 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
// Load models
|
// Load models
|
||||||
$this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
|
$this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
|
||||||
$this->load->model('crm/RtPerson_model', 'RtPersonModel');
|
$this->load->model('crm/RtPerson_model', 'RtPersonModel');
|
||||||
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
|
||||||
$this->load->model('organisation/Studienordnung_model', 'StudienordnungModel');
|
|
||||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAufnahmetermine($person_id)
|
public function getAufnahmetermine($person_id)
|
||||||
{
|
{
|
||||||
$result = $this->ReihungstestModel->getReihungstestPerson($person_id);
|
$result = $this->ReihungstestModel->getReihungstestPerson($person_id);
|
||||||
$arrayRt = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
foreach ($arrayRt as $item) {
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
//Studienplan
|
|
||||||
$result = $this->StudienplanModel->loadWhere([
|
|
||||||
'studienplan_id' => $item->studienplan_id
|
|
||||||
]);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$studienordnung_id_ber = current($data)->studienordnung_id;
|
|
||||||
|
|
||||||
//Studienordnung
|
$this->terminateWithSuccess($data);
|
||||||
$result = $this->StudienordnungModel->loadWhere([
|
|
||||||
'studienordnung_id' => $studienordnung_id_ber
|
|
||||||
]);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$studiengang_kz_ber = current($data)->studiengang_kz;
|
|
||||||
|
|
||||||
//Studiengang von studiengang_kz_ber
|
|
||||||
$result = $this->StudiengangModel->load($studiengang_kz_ber);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$studiengangkurzbzlang_ber = current($data)->kurzbzlang;
|
|
||||||
$typ_ber = current($data)->typ;
|
|
||||||
|
|
||||||
//add to Array
|
|
||||||
$item->studiengang_kz_ber = $studiengang_kz_ber;
|
|
||||||
$item->studiengangkurzbzlang_ber = $studiengangkurzbzlang_ber;
|
|
||||||
$item->studiengangtyp_ber = $typ_ber;
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess($arrayRt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insertAufnahmetermin()
|
public function insertAufnahmetermin()
|
||||||
@@ -89,6 +60,7 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID']), self::ERROR_TYPE_GENERAL);
|
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID']), self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$rt_id = (isset($formData['rt_id']) && !empty($formData['rt_id'])) ? $formData['rt_id'] : null;
|
$rt_id = (isset($formData['rt_id']) && !empty($formData['rt_id'])) ? $formData['rt_id'] : null;
|
||||||
$anmeldedatum = (isset($formData['anmeldedatum']) && !empty($formData['anmeldedatum'])) ? $formData['anmeldedatum'] : null;
|
$anmeldedatum = (isset($formData['anmeldedatum']) && !empty($formData['anmeldedatum'])) ? $formData['anmeldedatum'] : null;
|
||||||
$teilgenommen = (isset($formData['teilgenommen']) && !empty($formData['teilgenommen'])) ? $formData['teilgenommen'] : false;
|
$teilgenommen = (isset($formData['teilgenommen']) && !empty($formData['teilgenommen'])) ? $formData['teilgenommen'] : false;
|
||||||
@@ -252,11 +224,7 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
//check if existing placementtest
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
if(!hasData($result))
|
|
||||||
$this->terminateWithSuccess([]);
|
|
||||||
else
|
|
||||||
$data = getData($result);
|
|
||||||
|
|
||||||
$studienplan_arr = [];
|
$studienplan_arr = [];
|
||||||
$include_ids = [];
|
$include_ids = [];
|
||||||
@@ -265,18 +233,12 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
if($item->studienplan_id != null)
|
if($item->studienplan_id != null)
|
||||||
$studienplan_arr[] = $item->studienplan_id;
|
$studienplan_arr[] = $item->studienplan_id;
|
||||||
}
|
}
|
||||||
if(!hasData($studienplan_arr))
|
|
||||||
$this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
//get Placementtests Person
|
//get Placementtests Person
|
||||||
$person_id = $this->_getPersonId($prestudent_id);
|
$person_id = $this->_getPersonId($prestudent_id);
|
||||||
$resultRt = $this->ReihungstestModel->getReihungstestPerson($person_id);
|
$resultRt = $this->ReihungstestModel->getReihungstestPerson($person_id);
|
||||||
|
|
||||||
//check if existing placementtest
|
$dataRt = $this->getDataOrTerminateWithError($resultRt);
|
||||||
if(!hasData($result))
|
|
||||||
$this->terminateWithSuccess([]);
|
|
||||||
else
|
|
||||||
$dataRt = getData($resultRt);
|
|
||||||
|
|
||||||
foreach ($dataRt as $item)
|
foreach ($dataRt as $item)
|
||||||
{
|
{
|
||||||
@@ -336,7 +298,7 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
$reihungstestangetreten =
|
$reihungstestangetreten =
|
||||||
(isset($formData['reihungstestangetreten']) && !empty($formData['reihungstestangetreten']))
|
(isset($formData['reihungstestangetreten']) && !empty($formData['reihungstestangetreten']))
|
||||||
? $formData['reihungstestangetreten']
|
? $formData['reihungstestangetreten']
|
||||||
: false;
|
: null;
|
||||||
$aufnahmegruppe_kurzbz =
|
$aufnahmegruppe_kurzbz =
|
||||||
(isset($formData['aufnahmegruppe_kurzbz']) && !empty($formData['aufnahmegruppe_kurzbz']))
|
(isset($formData['aufnahmegruppe_kurzbz']) && !empty($formData['aufnahmegruppe_kurzbz']))
|
||||||
? $formData['aufnahmegruppe_kurzbz']
|
? $formData['aufnahmegruppe_kurzbz']
|
||||||
@@ -392,7 +354,6 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
$person_id = $this->input->get('person_id');
|
$person_id = $this->input->get('person_id');
|
||||||
$punkte = $this->input->get('punkte');
|
$punkte = $this->input->get('punkte');
|
||||||
$reihungstest_id = $this->input->get('reihungstest_id');
|
$reihungstest_id = $this->input->get('reihungstest_id');
|
||||||
$has_excluded_gebiete = $this->input->get('hasExcludedAreas');
|
|
||||||
|
|
||||||
if(!$reihungstest_id)
|
if(!$reihungstest_id)
|
||||||
{
|
{
|
||||||
@@ -403,27 +364,22 @@ class Aufnahmetermine extends FHCAPI_Controller
|
|||||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
$studiengang_kz = $this->input->get('studiengang_kz');
|
||||||
|
|
||||||
$this->load->model('testtool/Ablauf_model', 'AblaufModel');
|
$this->load->model('testtool/Ablauf_model', 'AblaufModel');
|
||||||
$result = $this->AblaufModel->getAblaufGebieteAndGewichte($studiengang_kz, 1);
|
$result = $this->AblaufModel->getAblaufGebieteAndGewichte($studiengang_kz);
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$weightedArray = [];
|
$weightedArray = [];
|
||||||
$basis_gebiet_id_arr = [];
|
|
||||||
$basis_gebiet_id_toString = '';
|
|
||||||
foreach ($data as $abl)
|
foreach ($data as $abl)
|
||||||
{
|
{
|
||||||
$weightedArray[$abl->gebiet_id] = $abl->gewicht;
|
$weightedArray[$abl->gebiet_id] = $abl->gewicht;
|
||||||
$basis_gebiet_id_arr[]= $abl->gebiet_id;
|
|
||||||
}
|
}
|
||||||
$basis_gebiet_id_toString = implode(', ', $basis_gebiet_id_arr);
|
|
||||||
|
|
||||||
$result = $this->ReihungstestModel->getReihungstestErgebnisPerson(
|
$result = $this->ReihungstestModel->getReihungstestErgebnisPerson($person_id, $punkte, $reihungstest_id, $weightedArray);
|
||||||
$person_id,
|
|
||||||
$punkte,
|
/* if (isError($result))
|
||||||
$reihungstest_id,
|
{
|
||||||
$weightedArray,
|
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||||
$has_excluded_gebiete,
|
}*/
|
||||||
$basis_gebiet_id_toString
|
|
||||||
);
|
|
||||||
$this->terminateWithSuccess($result);
|
$this->terminateWithSuccess($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,6 @@ class Config extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
// TODO(chris): permissions
|
// TODO(chris): permissions
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'get' => ['admin:r', 'assistenz:r'],
|
|
||||||
'set' => ['admin:r', 'assistenz:r'],
|
|
||||||
'filter' => ['admin:r', 'assistenz:r'],
|
|
||||||
'student' => ['admin:r', 'assistenz:r'],
|
'student' => ['admin:r', 'assistenz:r'],
|
||||||
'students' => ['admin:r', 'assistenz:r']
|
'students' => ['admin:r', 'assistenz:r']
|
||||||
]);
|
]);
|
||||||
@@ -48,257 +45,13 @@ class Config extends FHCAPI_Controller
|
|||||||
'lehre',
|
'lehre',
|
||||||
'stv',
|
'stv',
|
||||||
'konto',
|
'konto',
|
||||||
'abschlusspruefung',
|
'abschlusspruefung'
|
||||||
'projektarbeit'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Load Config
|
// Load Config
|
||||||
$this->load->config('stv');
|
$this->load->config('stv');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get App config
|
|
||||||
*/
|
|
||||||
public function get()
|
|
||||||
{
|
|
||||||
$this->load->model('system/Variable_model', 'VariableModel');
|
|
||||||
$this->load->config('stv');
|
|
||||||
|
|
||||||
$config = [];
|
|
||||||
|
|
||||||
#number_displayed_past_studiensemester
|
|
||||||
$result = $this->VariableModel->getVariables(getAuthUID(), ['number_displayed_past_studiensemester']);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$number_displayed_past_studiensemester_default = $this->config->item('number_displayed_past_studiensemester_default');
|
|
||||||
|
|
||||||
$config['number_displayed_past_studiensemester'] = [
|
|
||||||
"type" => "number",
|
|
||||||
"label" => $this->p->t('stv', 'settings_no_displayed_past_sem'),
|
|
||||||
"value" => $data['number_displayed_past_studiensemester']
|
|
||||||
?? $number_displayed_past_studiensemester_default
|
|
||||||
];
|
|
||||||
|
|
||||||
#font_size
|
|
||||||
$result = $this->VariableModel->getVariables(getAuthUID(), ['stv_font_size']);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$config['font_size'] = [
|
|
||||||
"type" => "select",
|
|
||||||
"label" => $this->p->t('stv', 'settings_fontsize'),
|
|
||||||
"value" => $data['stv_font_size'] ?? "fs_normal",
|
|
||||||
"options" => [
|
|
||||||
"fs_xx-small" => $this->p->t('stv', 'settings_fontsize_xx-small'),
|
|
||||||
"fs_x-small" => $this->p->t('stv', 'settings_fontsize_x-small'),
|
|
||||||
"fs_small" => $this->p->t('stv', 'settings_fontsize_small'),
|
|
||||||
"fs_normal" => $this->p->t('stv', 'settings_fontsize_normal'),
|
|
||||||
"fs_big" => $this->p->t('stv', 'settings_fontsize_big'),
|
|
||||||
"fs_huge" => $this->p->t('stv', 'settings_fontsize_huge')
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
#others
|
|
||||||
Events::trigger('stv_config_get', function & () use (&$config) {
|
|
||||||
return $config;
|
|
||||||
});
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($config);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set App config
|
|
||||||
*/
|
|
||||||
public function set()
|
|
||||||
{
|
|
||||||
$this->load->model('system/Variable_model', 'VariableModel');
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'number_displayed_past_studiensemester',
|
|
||||||
$this->p->t('stv', 'settings_no_displayed_past_sem'),
|
|
||||||
'required|integer'
|
|
||||||
);
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'font_size',
|
|
||||||
$this->p->t('stv', 'settings_fontsize'),
|
|
||||||
'required|in_list[fs_xx-small,fs_x-small,fs_small,fs_normal,fs_big,fs_huge]'
|
|
||||||
);
|
|
||||||
|
|
||||||
Events::trigger('stv_config_validation', $this->form_validation);
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
|
|
||||||
$this->VariableModel->setVariable(
|
|
||||||
getAuthUID(),
|
|
||||||
'number_displayed_past_studiensemester',
|
|
||||||
$this->input->post('number_displayed_past_studiensemester')
|
|
||||||
);
|
|
||||||
$this->VariableModel->setVariable(
|
|
||||||
getAuthUID(),
|
|
||||||
'stv_font_size',
|
|
||||||
$this->input->post('font_size')
|
|
||||||
);
|
|
||||||
|
|
||||||
Events::trigger('stv_config_set', $this->input);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the config for the student filters
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function filter()
|
|
||||||
{
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
|
|
||||||
$this->load->model('crm/Buchungstyp_model', 'BuchungstypModel');
|
|
||||||
|
|
||||||
$this->BuchungstypModel->addOrder('beschreibung');
|
|
||||||
|
|
||||||
$result = $this->BuchungstypModel->load();
|
|
||||||
|
|
||||||
$buchungstyp_kurzbz = $this->getDataOrTerminateWithError($result);
|
|
||||||
$buchungstyp_kurzbz_plus_all = array_merge([[
|
|
||||||
'buchungstyp_kurzbz' => 'all',
|
|
||||||
'beschreibung' => $this->p->t('stv', 'konto_all_types')
|
|
||||||
]], $buchungstyp_kurzbz);
|
|
||||||
|
|
||||||
$this->load->model('crm/Statusgrund_model', 'StatusgrundModel');
|
|
||||||
|
|
||||||
$result = $this->StatusgrundModel->getAktiveGruende();
|
|
||||||
|
|
||||||
$statusgruende = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$result = [];
|
|
||||||
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_konto_count_0',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_count_0'),
|
|
||||||
'type' => 'konto',
|
|
||||||
'fixed' => [
|
|
||||||
'missing' => true,
|
|
||||||
'usestdsem' => true
|
|
||||||
],
|
|
||||||
'dynamic' => [
|
|
||||||
'buchungstyp_kurzbz' => [
|
|
||||||
'type' => 'select',
|
|
||||||
'values' => $buchungstyp_kurzbz,
|
|
||||||
'value_key' => 'buchungstyp_kurzbz',
|
|
||||||
'label_key' => 'beschreibung'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_konto_missing_counter',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_missing_counter'),
|
|
||||||
'type' => 'konto_counter',
|
|
||||||
'dynamic' => [
|
|
||||||
'buchungstyp_kurzbz' => [
|
|
||||||
'type' => 'select',
|
|
||||||
'values' => $buchungstyp_kurzbz_plus_all,
|
|
||||||
'value_key' => 'buchungstyp_kurzbz',
|
|
||||||
'label_key' => 'beschreibung',
|
|
||||||
'default' => 'all'
|
|
||||||
],
|
|
||||||
'samestg' => [
|
|
||||||
'type' => 'bool',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_samestg'),
|
|
||||||
'default' => $this->variablelib->getVar('kontofilterstg') == 'true'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_documents',
|
|
||||||
'label' => $this->p->t('stv', 'filter_documents'),
|
|
||||||
'type' => 'documents'
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_konto_missing_counter_past',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_missing_counter_past'),
|
|
||||||
'type' => 'konto_counter',
|
|
||||||
'fixed' => [
|
|
||||||
'past' => true
|
|
||||||
],
|
|
||||||
'dynamic' => [
|
|
||||||
'buchungstyp_kurzbz' => [
|
|
||||||
'type' => 'select',
|
|
||||||
'values' => $buchungstyp_kurzbz_plus_all,
|
|
||||||
'value_key' => 'buchungstyp_kurzbz',
|
|
||||||
'label_key' => 'beschreibung',
|
|
||||||
'default' => 'all'
|
|
||||||
],
|
|
||||||
'samestg' => [
|
|
||||||
'type' => 'bool',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_samestg'),
|
|
||||||
'default' => $this->variablelib->getVar('kontofilterstg') == 'true'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_konto_missing_studiengebuehr',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_missing_studiengebuehr'),
|
|
||||||
'type' => 'konto',
|
|
||||||
'fixed' => [
|
|
||||||
'missing' => true,
|
|
||||||
'usestdsem' => true
|
|
||||||
],
|
|
||||||
'dynamic' => [
|
|
||||||
'buchungstyp_kurzbz' => [
|
|
||||||
'type' => 'select',
|
|
||||||
'values' => $buchungstyp_kurzbz,
|
|
||||||
'value_key' => 'buchungstyp_kurzbz',
|
|
||||||
'label_key' => 'beschreibung'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_konto_studiengebuehrerhoeht',
|
|
||||||
'label' => $this->p->t('stv', 'filter_konto_studiengebuehrerhoeht'),
|
|
||||||
'type' => 'konto',
|
|
||||||
'fixed' => [
|
|
||||||
'usestdsem' => true
|
|
||||||
],
|
|
||||||
'dynamic' => [
|
|
||||||
'buchungstyp_kurzbz' => [
|
|
||||||
'type' => 'select',
|
|
||||||
'values' => $buchungstyp_kurzbz,
|
|
||||||
'value_key' => 'buchungstyp_kurzbz',
|
|
||||||
'label_key' => 'beschreibung'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_zgv_without_date',
|
|
||||||
'label' => $this->p->t('stv', 'filter_zgv_without_date'),
|
|
||||||
'type' => 'zgv'
|
|
||||||
];
|
|
||||||
$result[] = [
|
|
||||||
'id' => 'filter_statusgrund',
|
|
||||||
'label' => $this->p->t('stv', 'filter_statusgrund'),
|
|
||||||
'type' => 'statusgrund',
|
|
||||||
'fixed' => [
|
|
||||||
'usestdsem' => true
|
|
||||||
],
|
|
||||||
'dynamic' => [
|
|
||||||
'statusgrund_id' => [
|
|
||||||
'type' => 'select',
|
|
||||||
'values' => $statusgruende,
|
|
||||||
'value_key' => 'statusgrund_id',
|
|
||||||
'label_key' => 'bezeichnung'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
Events::trigger('stv_conf_filter', function & () use (&$result) {
|
|
||||||
return $result;
|
|
||||||
});
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function student()
|
public function student()
|
||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
@@ -306,21 +59,21 @@ class Config extends FHCAPI_Controller
|
|||||||
|
|
||||||
$result['details'] = [
|
$result['details'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_details'),
|
'title' => $this->p->t('stv', 'tab_details'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Details.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Details.js',
|
||||||
'config' => $config['details']
|
'config' => $config['details']
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['notes'] = [
|
$result['notes'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_notes'),
|
'title' => $this->p->t('stv', 'tab_notes'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Notizen.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Notizen.js',
|
||||||
'config' => $config['notes'],
|
'config' => $config['notes'],
|
||||||
'showSuffix' => ($config['notes']['showCountNotes'] ?? false),
|
'showSuffix' => ($config['notes']['showCountNotes'] ?? false),
|
||||||
'suffixhelper' => absoluteJsImportUrl('public/js/helpers/Stv/Studentenverwaltung/Details/Notizen/NotizenSuffixHelper.js')
|
'suffixhelper' => APP_ROOT . 'public/js/helpers/Stv/Studentenverwaltung/Details/Notizen/NotizenSuffixHelper.js'
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['contact'] = [
|
$result['contact'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_contact'),
|
'title' => $this->p->t('stv', 'tab_contact'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Kontakt.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Kontakt.js',
|
||||||
'config' => [
|
'config' => [
|
||||||
'showBankaccount' => $this->permissionlib->isBerechtigt('mitarbeiter/bankdaten')
|
'showBankaccount' => $this->permissionlib->isBerechtigt('mitarbeiter/bankdaten')
|
||||||
|| $this->permissionlib->isBerechtigt('student/bankdaten')
|
|| $this->permissionlib->isBerechtigt('student/bankdaten')
|
||||||
@@ -328,23 +81,20 @@ class Config extends FHCAPI_Controller
|
|||||||
];
|
];
|
||||||
$result['prestudent'] = [
|
$result['prestudent'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_prestudent'),
|
'title' => $this->p->t('stv', 'tab_prestudent'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Prestudent.js',
|
||||||
'config' => $config['prestudent']
|
'config' => $config['prestudent']
|
||||||
];
|
];
|
||||||
$result['status'] = [
|
$result['status'] = [
|
||||||
'title' => 'Status',
|
'title' => 'Status',
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/MultiStatus.js'),
|
'component' => './Stv/Studentenverwaltung/Details/MultiStatus.js'
|
||||||
'config' => [
|
|
||||||
'showStatusVorruecken' => defined('STATUS_VORRUECKEN_ANZEIGEN') ? STATUS_VORRUECKEN_ANZEIGEN : true,
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
$result['documents'] = [
|
$result['documents'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_documents'),
|
'title' => $this->p->t('stv', 'tab_documents'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Dokumente.js')
|
'component' => './Stv/Studentenverwaltung/Details/Dokumente.js'
|
||||||
];
|
];
|
||||||
$result['banking'] = [
|
$result['banking'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_banking'),
|
'title' => $this->p->t('stv', 'tab_banking'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Konto.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Konto.js',
|
||||||
'config' => [
|
'config' => [
|
||||||
'showZahlungsbestaetigung' => (defined('ZAHLUNGSBESTAETIGUNG_ANZEIGEN') && ZAHLUNGSBESTAETIGUNG_ANZEIGEN),
|
'showZahlungsbestaetigung' => (defined('ZAHLUNGSBESTAETIGUNG_ANZEIGEN') && ZAHLUNGSBESTAETIGUNG_ANZEIGEN),
|
||||||
'showBuchungsnr' => $this->permissionlib->isBerechtigt('admin'),
|
'showBuchungsnr' => $this->permissionlib->isBerechtigt('admin'),
|
||||||
@@ -356,22 +106,20 @@ class Config extends FHCAPI_Controller
|
|||||||
];
|
];
|
||||||
$result['resources'] = [
|
$result['resources'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_resources'),
|
'title' => $this->p->t('stv', 'tab_resources'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Betriebsmittel.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Betriebsmittel.js'
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
];
|
||||||
$result['groups'] = [
|
$result['groups'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_groups'),
|
'title' => $this->p->t('stv', 'tab_groups'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Groups.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Gruppen.js'
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
];
|
||||||
$result['messages'] = [
|
$result['messages'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_messages'),
|
'title' => $this->p->t('stv', 'tab_messages'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Messages.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Messages.js'
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['grades'] = [
|
$result['grades'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_grades'),
|
'title' => $this->p->t('stv', 'tab_grades'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Noten.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Noten.js',
|
||||||
'showOnlyWithUid' => true,
|
'showOnlyWithUid' => true,
|
||||||
'config' => [
|
'config' => [
|
||||||
'usePoints' => defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE,
|
'usePoints' => defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE,
|
||||||
@@ -384,42 +132,29 @@ class Config extends FHCAPI_Controller
|
|||||||
|
|
||||||
$result['exam'] = [
|
$result['exam'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_exam'),
|
'title' => $this->p->t('stv', 'tab_exam'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Pruefung.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Pruefung.js'
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['exemptions'] = [
|
$result['exemptions'] = [
|
||||||
'title' => $this->p->t('lehre', 'anrechnungen'),
|
'title' => $this->p->t('lehre', 'anrechnungen'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Anrechnungen.js',
|
||||||
'config' => $config['exemptions']
|
'config' => $config['exemptions']
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['finalexam'] = [
|
$result['finalexam'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_finalexam'),
|
'title' => $this->p->t('stv', 'tab_finalexam'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Abschlusspruefung.js',
|
||||||
'showOnlyWithUid' => true,
|
|
||||||
'config' => $config['finalexam']
|
'config' => $config['finalexam']
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['projektarbeit'] = [
|
|
||||||
'title' => $this->p->t('stv', 'tab_projektarbeit'),
|
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit.js'),
|
|
||||||
'config' => array_merge(
|
|
||||||
$config['projektarbeit'],
|
|
||||||
['showVertragsdetails' =>
|
|
||||||
defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') && FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN]
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
$result['mobility'] = [
|
$result['mobility'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_mobility'),
|
'title' => $this->p->t('stv', 'tab_mobility'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Mobility.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Mobility.js'
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['archive'] = [
|
$result['archive'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_archive'),
|
'title' => $this->p->t('stv', 'tab_archive'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Archiv.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Archiv.js',
|
||||||
'config' => [
|
'config' => [
|
||||||
'showEdit' => $this->permissionlib->isBerechtigt('admin')
|
'showEdit' => $this->permissionlib->isBerechtigt('admin')
|
||||||
]
|
]
|
||||||
@@ -427,24 +162,22 @@ class Config extends FHCAPI_Controller
|
|||||||
|
|
||||||
$result['jointstudies'] = [
|
$result['jointstudies'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_jointstudies'),
|
'title' => $this->p->t('stv', 'tab_jointstudies'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/JointStudies.js'),
|
'component' => './Stv/Studentenverwaltung/Details/JointStudies.js'
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['coursedates'] = [
|
$result['coursedates'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_courseDates'),
|
'title' => $this->p->t('stv', 'tab_courseDates'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine.js')
|
'component' => './Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine.js'
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['admissionDates'] = [
|
$result['admissionDates'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_admissionDates'),
|
'title' => $this->p->t('stv', 'tab_admissionDates'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine.js')
|
'component' => './Stv/Studentenverwaltung/Details/Aufnahmetermine.js'
|
||||||
];
|
];
|
||||||
|
|
||||||
$result['functions'] = [
|
$result['functions'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_functions'),
|
'title' => $this->p->t('stv', 'tab_functions'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Funktionen.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Funktionen.js'
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
];
|
||||||
|
|
||||||
Events::trigger('stv_conf_student', function & () use (&$result) {
|
Events::trigger('stv_conf_student', function & () use (&$result) {
|
||||||
@@ -462,7 +195,7 @@ class Config extends FHCAPI_Controller
|
|||||||
$config = $this->config->item('tabs');
|
$config = $this->config->item('tabs');
|
||||||
$result['banking'] = [
|
$result['banking'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_banking'),
|
'title' => $this->p->t('stv', 'tab_banking'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Konto.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Konto.js',
|
||||||
'config' => [
|
'config' => [
|
||||||
'showZahlungsbestaetigung' => (defined('ZAHLUNGSBESTAETIGUNG_ANZEIGEN') && ZAHLUNGSBESTAETIGUNG_ANZEIGEN),
|
'showZahlungsbestaetigung' => (defined('ZAHLUNGSBESTAETIGUNG_ANZEIGEN') && ZAHLUNGSBESTAETIGUNG_ANZEIGEN),
|
||||||
'showBuchungsnr' => $this->permissionlib->isBerechtigt('admin'),
|
'showBuchungsnr' => $this->permissionlib->isBerechtigt('admin'),
|
||||||
@@ -472,14 +205,9 @@ class Config extends FHCAPI_Controller
|
|||||||
'additionalCols' => []
|
'additionalCols' => []
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
$result['groups'] = [
|
|
||||||
'title' => $this->p->t('stv', 'tab_groups'),
|
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Groups.js'),
|
|
||||||
'showOnlyWithUid' => true
|
|
||||||
];
|
|
||||||
$result['status'] = [
|
$result['status'] = [
|
||||||
'title' => 'Status',
|
'title' => 'Status',
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/MultiStatus.js'),
|
'component' => './Stv/Studentenverwaltung/Details/MultiStatus.js',
|
||||||
'config' => [
|
'config' => [
|
||||||
'changeStatusToAbbrecherStgl' => $this->permissionlib->isBerechtigt('admin'),
|
'changeStatusToAbbrecherStgl' => $this->permissionlib->isBerechtigt('admin'),
|
||||||
'changeStatusToAbbrecherStud' => $this->permissionlib->isBerechtigt('admin'),
|
'changeStatusToAbbrecherStud' => $this->permissionlib->isBerechtigt('admin'),
|
||||||
@@ -490,37 +218,17 @@ class Config extends FHCAPI_Controller
|
|||||||
];
|
];
|
||||||
$result['finalexam'] = [
|
$result['finalexam'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_finalexam'),
|
'title' => $this->p->t('stv', 'tab_finalexam'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Abschlusspruefung.js',
|
||||||
'showOnlyWithUid' => true,
|
|
||||||
'config' => $config['finalexam']
|
'config' => $config['finalexam']
|
||||||
];
|
];
|
||||||
$result['archive'] = [
|
$result['archive'] = [
|
||||||
'title' => $this->p->t('stv', 'tab_archive'),
|
'title' => $this->p->t('stv', 'tab_archive'),
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Archiv.js'),
|
'component' => './Stv/Studentenverwaltung/Details/Archiv.js',
|
||||||
'config' => [
|
'config' => [
|
||||||
'showEdit' => $this->permissionlib->isBerechtigt('admin')
|
'showEdit' => $this->permissionlib->isBerechtigt('admin')
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
if($this->permissionlib->isBerechtigt('basis/person'))
|
|
||||||
{
|
|
||||||
$result['combinePeople'] = [
|
|
||||||
'title' => $this->p->t('stv', 'tab_combine_people'),
|
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/CombinePeople.js'),
|
|
||||||
'config' => $config['combinePeople']
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$result['kontaktieren'] = [
|
|
||||||
'title' => $this->p->t('stv', 'tab_kontaktieren'),
|
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Kontaktieren.js'),
|
|
||||||
];
|
|
||||||
|
|
||||||
$result['messages'] = [
|
|
||||||
'title' => $this->p->t('stv', 'tab_messages'),
|
|
||||||
'component' => absoluteJsImportUrl('public/js/components/Stv/Studentenverwaltung/Details/Messages.js'),
|
|
||||||
];
|
|
||||||
|
|
||||||
Events::trigger('stv_conf_students', function & () use (&$result) {
|
Events::trigger('stv_conf_students', function & () use (&$result) {
|
||||||
return $result;
|
return $result;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
use \CI3_Events as Events;
|
|
||||||
use \DateTime as DateTime;
|
use \DateTime as DateTime;
|
||||||
|
|
||||||
class Dokumente extends FHCAPI_Controller
|
class Dokumente extends FHCAPI_Controller
|
||||||
@@ -20,8 +19,6 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
'getDoktypen' => ['admin:r', 'assistenz:r'],
|
'getDoktypen' => ['admin:r', 'assistenz:r'],
|
||||||
'uploadDokument' => ['admin:rw', 'assistenz:rw'],
|
'uploadDokument' => ['admin:rw', 'assistenz:rw'],
|
||||||
'download' => ['admin:rw', 'assistenz:rw'],
|
'download' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getDocumentDropDown' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'getDocumentDropDownMulti' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Load Libraries
|
// Load Libraries
|
||||||
@@ -78,32 +75,52 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiengang_kz']), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiengang_kz']), self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
$resultPreDoc = $this->_getPrestudentDokumente($prestudent_id);
|
$resultPreDoc = $this->_getPrestudentDokumente($prestudent_id);
|
||||||
|
|
||||||
|
$arrayAccepted = [];
|
||||||
$person_id = $this->_getPersonId($prestudent_id);
|
$person_id = $this->_getPersonId($prestudent_id);
|
||||||
|
|
||||||
$mergedArray = [];
|
$docNames = array_map(function ($item) {
|
||||||
|
return $item->dokument_kurzbz;
|
||||||
|
}, $resultPreDoc);
|
||||||
|
|
||||||
foreach ($resultPreDoc as $pre)
|
foreach($docNames as $doc)
|
||||||
{
|
{
|
||||||
$result = $this->AkteModel->getAktenFAS($person_id, $pre->dokument_kurzbz, $studiengang_kz, $prestudent_id, true);
|
$result = $this->AkteModel->getAktenFAS($person_id, $doc, $studiengang_kz, $prestudent_id, true);
|
||||||
|
|
||||||
if (isError($result))
|
if (isError($result))
|
||||||
|
{
|
||||||
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
if (hasData($result))
|
if (hasData($result))
|
||||||
{
|
{
|
||||||
foreach (getData($result) as $doc)
|
$data = getData($result);
|
||||||
|
foreach ($data as $value)
|
||||||
{
|
{
|
||||||
$merged = clone $doc;
|
array_push($arrayAccepted, $value);
|
||||||
$merged->docdatum = $pre->docdatum;
|
|
||||||
$merged->insertvonma = $pre->insertvonma;
|
|
||||||
$merged->bezeichnung = $pre->bezeichnung;
|
|
||||||
$mergedArray[] = $merged;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
$mergedArray[] = $pre;
|
//Mapping with document_kurzbz
|
||||||
|
$preDocMap = [];
|
||||||
|
foreach ($resultPreDoc as $pre) {
|
||||||
|
$preDocMap[$pre->dokument_kurzbz] = $pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
$mergedArray = [];
|
||||||
|
foreach ($arrayAccepted as $doc) {
|
||||||
|
$merged = clone $doc;
|
||||||
|
|
||||||
|
if (isset($preDocMap[$doc->dokument_kurzbz])) {
|
||||||
|
$merged->docdatum = $preDocMap[$doc->dokument_kurzbz]->docdatum;
|
||||||
|
$merged->insertvonma = $preDocMap[$doc->dokument_kurzbz]->insertvonma;
|
||||||
|
$merged->bezeichnung = $preDocMap[$doc->dokument_kurzbz]->bezeichnung;
|
||||||
|
} else {
|
||||||
|
$merged->akzeptiertdatum = null;
|
||||||
|
$merged->akzeptiertvon = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$mergedArray[] = $merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->terminateWithSuccess($mergedArray);
|
$this->terminateWithSuccess($mergedArray);
|
||||||
@@ -170,8 +187,6 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
}
|
}
|
||||||
|
|
||||||
$nachgereicht_am = $this->input->post('nachgereicht_am') == '' ? null : $this->input->post('nachgereicht_am');
|
|
||||||
|
|
||||||
$uid = getAuthUID();
|
$uid = getAuthUID();
|
||||||
|
|
||||||
$result = $this->AkteModel->update(
|
$result = $this->AkteModel->update(
|
||||||
@@ -182,7 +197,7 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
'dokument_kurzbz' => $this->input->post('dokument_kurzbz'),
|
'dokument_kurzbz' => $this->input->post('dokument_kurzbz'),
|
||||||
'anmerkung_intern' => $this->input->post('anmerkung_intern'),
|
'anmerkung_intern' => $this->input->post('anmerkung_intern'),
|
||||||
'titel_intern' => $this->input->post('titel_intern'),
|
'titel_intern' => $this->input->post('titel_intern'),
|
||||||
'nachgereicht_am' => $nachgereicht_am,
|
'nachgereicht_am' => $this->input->post('nachgereicht_am'),
|
||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
'updatevon' => $uid,
|
'updatevon' => $uid,
|
||||||
]
|
]
|
||||||
@@ -551,426 +566,4 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDocumentDropDown($prestudent_id, $studiensemester_kurzbz, $studiengang_kz)
|
|
||||||
{
|
|
||||||
$this->load->helper('hlp_common');
|
|
||||||
//permission to create also odt, and doc outputs of certain documents(menu abschlusspruefung)
|
|
||||||
$hasPermissionOutputformat = $this->permissionlib->isBerechtigt('system/change_outputformat', 's');
|
|
||||||
|
|
||||||
if (!$prestudent_id)
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Prestudent_id']), self::ERROR_TYPE_GENERAL);
|
|
||||||
if (!$studiensemester_kurzbz)
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiensemester']), self::ERROR_TYPE_GENERAL);
|
|
||||||
if(!$studiengang_kz)
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiengang_kz']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
|
|
||||||
$uid = $this->_loadUIDFromPrestudent($prestudent_id);
|
|
||||||
$semArray = $this->_getEntriesStudiensemester();
|
|
||||||
$stgTyp = $this->_getStudiengangstyp($studiengang_kz);
|
|
||||||
|
|
||||||
$documents = [
|
|
||||||
buildDropdownEntryPrintArray("accountinfo", "Accountinfoblatt", "xml=accountinfoblatt.xml.php&xsl=AccountInfo&output=pdf", $uid, 10, null),
|
|
||||||
buildDropdownEntryPrintArray("ausbildungsvertrag", "Ausbildungsvertrag", "xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&output=pdf&prestudent_id=$prestudent_id", null,20, null),
|
|
||||||
buildDropdownEntryPrintArray("ausbildungsvertrag_en", "Ausbildungsvertrag Zweisprachig", "xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf&prestudent_id=$prestudent_id", null,21, null),
|
|
||||||
|
|
||||||
buildDropdownEntryPrintArray("bescheid", "Bescheid (nur Voransicht)", "xml=abschlusspruefung.rdf.php&xsl_stg_kz=$studiengang_kz&xsl=Bescheid&output=pdf", $uid, 25, null),
|
|
||||||
buildDropdownEntryPrintArray("diplomasupp", "Diploma Supplement (nur Voransicht)", "xml=diplomasupplement.xml.php&xsl_stg_kz=$studiengang_kz&xsl=DiplSupplement&output=pdf", $uid, 26, null),
|
|
||||||
|
|
||||||
buildDropdownEntryPrintArray("studienbestaetigung", "Studienbestätigung", "xml=student.rdf.php&xsl=Inskription&output=pdf&ss=$studiensemester_kurzbz&xsl_stg_kz=$studiengang_kz", $uid, 50, null),
|
|
||||||
buildDropdownEntryPrintArray("studienbestaetigung_en", "Studienbestätigung Englisch", "xml=student.rdf.php&xsl=InskriptionEng&output=pdf&ss=$studiensemester_kurzbz&xsl_stg_kz=$studiengang_kz", $uid, 51, null),
|
|
||||||
buildDropdownEntryPrintArray("zutrittskarte", "Zutrittskarte", "xsl=ZutrittskarteStud&output=pdf&data=$uid", $uid,200, "zutrittskarte.php"),
|
|
||||||
buildDropdownEntryPrintArray("studienblatt", "Studienblatt", "xml=studienblatt.xml.php&xsl=Studienblatt&output=pdf&ss=$studiensemester_kurzbz", $uid, 60, null),
|
|
||||||
buildDropdownEntryPrintArray("studienblatt_eng", "Studienblatt Englisch", "xml=studienblatt.xml.php&xsl=StudienblattEng&output=pdf&ss=$studiensemester_kurzbz", $uid, 61, null),
|
|
||||||
|
|
||||||
$this->buildStudienerfolgSubmenu("de", $uid, $semArray, $studiensemester_kurzbz),
|
|
||||||
$this->buildStudienerfolgSubmenu("en", $uid, $semArray, $studiensemester_kurzbz),
|
|
||||||
$this->buildStudienerfolgSubmenu("de", $uid, $semArray, $studiensemester_kurzbz, true),
|
|
||||||
$this->buildStudienerfolgSubmenu("en", $uid, $semArray, $studiensemester_kurzbz, true),
|
|
||||||
|
|
||||||
[
|
|
||||||
"id" => "submenu_studstatus",
|
|
||||||
"type" => "submenu",
|
|
||||||
"name" => "Verwaltung des StudierendenStatus",
|
|
||||||
"order" => 110,
|
|
||||||
"data" => [
|
|
||||||
buildDropdownEntryPrintArray("Abmeldung", "Abmeldung", "xml=AntragAbmeldung.xml.php&xsl=AntragAbmeldung&prestudent_id=$prestudent_id&output=pdf", $uid, null, null),
|
|
||||||
buildDropdownEntryPrintArray("Abmeldung durch Stgl", "AntragAbmeldungStgl", "xml=AntragAbmeldungStgl.xml.php&xsl=AntragAbmeldungStgl&prestudent_id=$prestudent_id&output=pdf", $uid, null, null),
|
|
||||||
buildDropdownEntryPrintArray("Unterbrechung", "Unterbrechung", "xml=AntragUnterbrechung.xml.php&xsl=AntragUnterbrechung&prestudent_id=$prestudent_id&output=pdf", $uid, null, null),
|
|
||||||
buildDropdownEntryPrintArray("Wiederholung", "Abmeldung durch Ablauf der Wiederholungsfrist", "xml=AntragWiederholung.xml.php&xsl=AntragWiederholung&prestudent_id=$prestudent_id&output=pdf", $uid, null, null),
|
|
||||||
]
|
|
||||||
],
|
|
||||||
|
|
||||||
//Bakkzeugnis bzw. Diplomzeugnis is just shown in tab final_exam
|
|
||||||
buildDropdownEntryPrintArray("zeugnis", "Zeugnis", "xml=zeugnis.rdf.php&xsl=Zeugnis&output=pdf&xsl_stg_kz=$studiengang_kz&ss=$studiensemester_kurzbz", $uid, 121, null),
|
|
||||||
buildDropdownEntryPrintArray("zeugnis_en", "Zeugnis Englisch", "xml=zeugnis.rdf.php&xsl=ZeugnisEng&output=pdf&xsl_stg_kz=$studiengang_kz&ss=$studiensemester_kurzbz", $uid, 122, null),
|
|
||||||
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
Events::trigger('DocumentGenerationDropDown',
|
|
||||||
// passing $menu per reference
|
|
||||||
function & () use (&$documents) {
|
|
||||||
return $documents;
|
|
||||||
},
|
|
||||||
$prestudent_id,
|
|
||||||
$studiensemester_kurzbz,
|
|
||||||
$studiengang_kz
|
|
||||||
);
|
|
||||||
|
|
||||||
$extraEntries = $this->loadDropDownEntriesBakkOrDipl($stgTyp, $uid);
|
|
||||||
|
|
||||||
$documents = array_merge($documents, $extraEntries);
|
|
||||||
|
|
||||||
usort($documents, function ($a, $b) {
|
|
||||||
$orderA = isset($a['order']) ? (int)$a['order'] : PHP_INT_MAX;
|
|
||||||
$orderB = isset($b['order']) ? (int)$b['order'] : PHP_INT_MAX;
|
|
||||||
return $orderA <=> $orderB;
|
|
||||||
});
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($documents);
|
|
||||||
//return $documents || null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDocumentDropDownMulti($studiensemester_kurzbz,$studiengang_kz)
|
|
||||||
{
|
|
||||||
//permission to create also odt, and doc outputs of certain documents (menu abschlusspruefung)
|
|
||||||
$hasPermissionOutputformat = $this->permissionlib->isBerechtigt('system/change_outputformat', 's');
|
|
||||||
|
|
||||||
$studentUids = $this->input->get('studentUids');
|
|
||||||
$prestudentIds = [];
|
|
||||||
|
|
||||||
if (is_array($studentUids) && !empty($studentUids)) {
|
|
||||||
foreach ($studentUids as $uid) {
|
|
||||||
$prestudent_id = $this-> _loadPrestudentFromUid($uid);
|
|
||||||
$prestudentIds[] = $prestudent_id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Array StudentUIDs']), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$studiensemester_kurzbz)
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiensemester']), self::ERROR_TYPE_GENERAL);
|
|
||||||
if(!$studiengang_kz)
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiengang_kz']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
|
|
||||||
$uidString = implode(";", $studentUids);
|
|
||||||
$prestudentIdsString = implode(";", $prestudentIds);
|
|
||||||
|
|
||||||
$semArray = $this->_getEntriesStudiensemester();
|
|
||||||
$stgTyp = $this->_getStudiengangstyp($studiengang_kz);
|
|
||||||
|
|
||||||
$documents = [
|
|
||||||
buildDropdownEntryPrintArray("accountinfo", "Accountinfoblatt", "xml=accountinfoblatt.xml.php&xsl=AccountInfo&output=pdf", $uidString, 10, null),
|
|
||||||
buildDropdownEntryPrintArray("ausbildungsvertrag", "Ausbildungsvertrag", "xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&output=pdf", $uidString, 20, null),
|
|
||||||
buildDropdownEntryPrintArray("ausbildungsvertrag_en", "Ausbildungsvertrag Englisch", "xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf", $uidString, 21, null),
|
|
||||||
buildDropdownEntryPrintArray("studienbestaetigung", "Studienbestätigung", "xml=student.rdf.php&xsl=Inskription&output=pdf&ss=$studiensemester_kurzbz&xsl_stg_kz=$studiengang_kz", $uidString, 50, null),
|
|
||||||
buildDropdownEntryPrintArray("studienbestaetigung_en", "Studienbestätigung Englisch", "xml=student.rdf.php&xsl=InskriptionEng&output=pdf&ss=$studiensemester_kurzbz&xsl_stg_kz=$studiengang_kz", $uidString, 51, null),
|
|
||||||
buildDropdownEntryPrintArray("zutrittskarte", "Zutrittskarte", "xsl=ZutrittskarteStud&output=pdf&data=$uidString", $uidString,200, "zutrittskarte.php"),
|
|
||||||
buildDropdownEntryPrintArray("studienblatt", "Studienblatt", "xml=studienblatt.xml.php&xsl=Studienblatt&output=pdf&ss=$studiensemester_kurzbz", $uidString, 60, null),
|
|
||||||
buildDropdownEntryPrintArray("studienblatt_eng", "Studienblatt Englisch", "xml=studienblatt.xml.php&xsl=StudienblattEng&output=pdf&ss=$studiensemester_kurzbz", $uidString, 61, null),
|
|
||||||
|
|
||||||
// Studienerfolg Menüs automatisch
|
|
||||||
$this->buildStudienerfolgSubmenu("de", $uidString, $semArray, $studiensemester_kurzbz),
|
|
||||||
$this->buildStudienerfolgSubmenu("en", $uidString, $semArray, $studiensemester_kurzbz),
|
|
||||||
$this->buildStudienerfolgSubmenu("de", $uidString, $semArray, $studiensemester_kurzbz, true),
|
|
||||||
$this->buildStudienerfolgSubmenu("en", $uidString, $semArray, $studiensemester_kurzbz, true),
|
|
||||||
|
|
||||||
[
|
|
||||||
"id" => "submenu_studstatus",
|
|
||||||
"type" => "submenu",
|
|
||||||
"name" => "Verwaltung des StudierendenStatus",
|
|
||||||
"order" => 110,
|
|
||||||
"data" => [
|
|
||||||
buildDropdownEntryPrintArray("Abmeldung", "Abmeldung", "xml=AntragAbmeldung.xml.php&xsl=AntragAbmeldung&prestudent_id=$prestudentIdsString&output=pdf", $uidString, null, null),
|
|
||||||
buildDropdownEntryPrintArray("Abmeldung durch Stgl", "AntragAbmeldungStgl", "xml=AntragAbmeldungStgl.xml.php&xsl=AntragAbmeldungStgl&prestudent_id=$prestudentIdsString&output=pdf", $uidString, null, null),
|
|
||||||
buildDropdownEntryPrintArray("Unterbrechung", "Unterbrechung", "xml=AntragUnterbrechung.xml.php&xsl=AntragUnterbrechung&prestudent_id=$prestudentIdsString&output=pdf", $uidString, null, null),
|
|
||||||
buildDropdownEntryPrintArray("Wiederholung", "Abmeldung durch Ablauf der Wiederholungsfrist", "xml=AntragWiederholung.xml.php&xsl=AntragWiederholung&prestudent_id=$prestudentIdsString&output=pdf", $uidString, null, null),
|
|
||||||
]
|
|
||||||
],
|
|
||||||
|
|
||||||
buildDropdownEntryPrintArray("diplomasupp", "Diploma Supplement (nur Voransicht)", "xml=diplomasupplement.xml.php&xsl_stg_kz=$studiengang_kz&xsl=DiplSupplement&output=pdf", $uidString, 35, null),
|
|
||||||
buildDropdownEntryPrintArray("zeugnis", "Zeugnis", "xml=zeugnis.rdf.php&xsl=Zeugnis&output=pdf&xsl_stg_kz=$studiengang_kz&ss=$studiensemester_kurzbz", $uidString, 121, null),
|
|
||||||
buildDropdownEntryPrintArray("zeugnis_en", "Zeugnis Englisch", "xml=zeugnis.rdf.php&xsl=ZeugnisEng&output=pdf&xsl_stg_kz=$studiengang_kz&ss=$studiensemester_kurzbz", $uidString, 122, null),
|
|
||||||
];
|
|
||||||
|
|
||||||
Events::trigger('DocumentGenerationDropDownMulti',
|
|
||||||
// passing $menu per reference
|
|
||||||
function & () use (&$documents) {
|
|
||||||
return $documents;
|
|
||||||
},
|
|
||||||
$studentUids,
|
|
||||||
$studiensemester_kurzbz,
|
|
||||||
$studiengang_kz
|
|
||||||
);
|
|
||||||
|
|
||||||
$extraEntries = $this->loadDropDownEntriesBakkOrDipl($stgTyp, $uidString);
|
|
||||||
|
|
||||||
$documents = array_merge($documents, $extraEntries);
|
|
||||||
|
|
||||||
usort($documents, function ($a, $b) {
|
|
||||||
$orderA = isset($a['order']) ? (int)$a['order'] : PHP_INT_MAX;
|
|
||||||
$orderB = isset($b['order']) ? (int)$b['order'] : PHP_INT_MAX;
|
|
||||||
return $orderA <=> $orderB;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($documents);
|
|
||||||
|
|
||||||
return $documents || null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _loadUIDFromPrestudent($prestudent_id)
|
|
||||||
{
|
|
||||||
if(!$prestudent_id){
|
|
||||||
return $this->terminateWithError("no prestudent ID received.");
|
|
||||||
}
|
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
$result = $this->StudentModel->loadWhere(
|
|
||||||
['prestudent_id' => $prestudent_id]
|
|
||||||
);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
if(!(is_array($data) && count($data) > 0))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
$student = current($data);
|
|
||||||
|
|
||||||
return $student->student_uid;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _loadPrestudentFromUid($studentUid)
|
|
||||||
{
|
|
||||||
|
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
$result = $this->StudentModel->loadWhere(
|
|
||||||
['student_uid' => $studentUid]
|
|
||||||
);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$student = current($data);
|
|
||||||
|
|
||||||
|
|
||||||
return $student->prestudent_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* is building an array with studiensemesterkurzb
|
|
||||||
* actual studiensemester plus the 5 studiensemester in the past
|
|
||||||
|
|
||||||
* @return Array Studiensemester_kurzbz
|
|
||||||
*/
|
|
||||||
private function _getEntriesStudiensemester(){
|
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
|
||||||
|
|
||||||
$this->StudiensemesterModel->addPlusMinus(1, 5);
|
|
||||||
$this->StudiensemesterModel->addOrder('ende', 'DESC');
|
|
||||||
$result = $this->StudiensemesterModel->load();
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
foreach($data as $sem)
|
|
||||||
{
|
|
||||||
$semArray[] = $sem->studiensemester_kurzbz;
|
|
||||||
}
|
|
||||||
|
|
||||||
array_shift($semArray);
|
|
||||||
|
|
||||||
return $semArray;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* is returning the typ of Studiengang (Bakk oder Master)
|
|
||||||
|
|
||||||
* @return character eg. 'b' or 'm'
|
|
||||||
*/
|
|
||||||
private function _getStudiengangstyp($studiengang_kz)
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
|
||||||
|
|
||||||
$result = $this->StudiengangModel->loadWhere(
|
|
||||||
array('studiengang_kz' => $studiengang_kz)
|
|
||||||
);
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$typStudiengang = current($data)->typ;
|
|
||||||
|
|
||||||
return $typStudiengang;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to create ArrayStructure
|
|
||||||
* actual studiensemester plus the 5 studiensemester in the past
|
|
||||||
|
|
||||||
* @return Array Studiensemester_kurzbz
|
|
||||||
*/
|
|
||||||
private function buildStudienerfolgSubmenu($lang, $uid, $semArray, $studiensemester_kurzbz, $fa = false)
|
|
||||||
{
|
|
||||||
$entries = [];
|
|
||||||
|
|
||||||
$xsl = $lang === "de" ? "Studienerfolg" : "StudienerfolgEng";
|
|
||||||
$idPrefix = "submenu_studienerfolg_" . $lang . ($fa ? "_fa" : "");
|
|
||||||
|
|
||||||
$entries[] = buildDropdownEntryPrintArray(
|
|
||||||
$idPrefix . "_aktuell",
|
|
||||||
"ausgewähltes Semester",
|
|
||||||
"xml=studienerfolg.rdf.php&xsl=$xsl&ss=$studiensemester_kurzbz" . ($fa ? "&typ=finanzamt" : ""),
|
|
||||||
$uid
|
|
||||||
);
|
|
||||||
|
|
||||||
//all semester
|
|
||||||
$entries[] = buildDropdownEntryPrintArray(
|
|
||||||
$idPrefix . "_all",
|
|
||||||
"alle Semester",
|
|
||||||
"xml=studienerfolg.rdf.php&xsl=$xsl&ss=$studiensemester_kurzbz&all=true" . ($fa ? "&typ=finanzamt" : ""),
|
|
||||||
$uid
|
|
||||||
);
|
|
||||||
|
|
||||||
//sem from array
|
|
||||||
foreach ($semArray as $i => $sem) {
|
|
||||||
$entries[] = buildDropdownEntryPrintArray(
|
|
||||||
$idPrefix . ($i === 0 ? "_akt" : "_minus" . $i),
|
|
||||||
$sem,
|
|
||||||
"xml=studienerfolg.rdf.php&xsl=$xsl&ss=$sem" . ($fa ? "&typ=finanzamt" : ""),
|
|
||||||
$uid
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
$order = 0;
|
|
||||||
if ($lang === "de" && !$fa) $order = 75; // Studienerfolg
|
|
||||||
if ($lang === "en" && !$fa) $order = 76; // Studienerfolg Englisch
|
|
||||||
if ($lang === "de" && $fa) $order = 77; // Studienerfolg Finanzamt
|
|
||||||
if ($lang === "en" && $fa) $order = 78; // Studienerfolg Finanzamt Englisch
|
|
||||||
|
|
||||||
return [
|
|
||||||
"id" => $idPrefix,
|
|
||||||
"type" => "submenu",
|
|
||||||
"name" => "Studienerfolg " . ($fa ? " Finanzamt" : "") . ($lang === "de" ? "" : "Englisch") ,
|
|
||||||
"order" => $order,
|
|
||||||
"data" => $entries,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
private function loadDropDownEntriesFinalExam($hasPermissionOutputformat, $stgTyp, $uid)
|
|
||||||
{
|
|
||||||
if ($stgTyp == 'b')
|
|
||||||
$postfix = 'Bakk';
|
|
||||||
else if ($stgTyp == 'm' || $stgTyp == 'd')
|
|
||||||
$postfix = 'Master';
|
|
||||||
else
|
|
||||||
return [];
|
|
||||||
|
|
||||||
$arrayFinalExam = [
|
|
||||||
'pruefungsprotokoll' => [
|
|
||||||
'de' => [
|
|
||||||
'Bakk' => 'PrProtBA',
|
|
||||||
'Master' => 'PrProtMA',
|
|
||||||
],
|
|
||||||
'en' => [
|
|
||||||
'Bakk' => 'PrProtBAEng',
|
|
||||||
'Master' => 'PrProtMAEng',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'pruefungszeugnis' => [
|
|
||||||
'de' => [
|
|
||||||
'Bakk' => 'Bakkzeugnis',
|
|
||||||
'Master' => 'Diplomzeugnis',
|
|
||||||
],
|
|
||||||
'en' => [
|
|
||||||
'Bakk' => 'BakkzeugnisEng',
|
|
||||||
'Master' => 'DiplomzeugnisEng',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'urkunde' => [
|
|
||||||
'de' => [
|
|
||||||
'Bakk' => 'Bakkurkunde',
|
|
||||||
'Master' => 'Diplomurkunde',
|
|
||||||
],
|
|
||||||
'en' => [
|
|
||||||
'Bakk' => 'BakkurkundeEng',
|
|
||||||
'Master' => 'DiplomurkundeEng',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
$langLabels = [
|
|
||||||
"de" => "Deutsch",
|
|
||||||
"en" => "Englisch"
|
|
||||||
];
|
|
||||||
|
|
||||||
$docLabels = [
|
|
||||||
"pruefungsprotokoll" => "Prüfungsprotokoll",
|
|
||||||
"pruefungszeugnis" => "Zeugnis",
|
|
||||||
"urkunde" => "Urkunde"
|
|
||||||
];
|
|
||||||
|
|
||||||
$submenuData = [];
|
|
||||||
if ($hasPermissionOutputformat) {
|
|
||||||
foreach ($arrayFinalExam as $docType => $langs) {
|
|
||||||
foreach ($langs as $lang => $types) {
|
|
||||||
$xsl = $types[$postfix];
|
|
||||||
$idPrefix = $docType . "_" . $lang;
|
|
||||||
|
|
||||||
$baseName = $docLabels[$docType] . " " . $langLabels[$lang];
|
|
||||||
$baseUrl = "xml=abschlusspruefung.rdf.php&xsl={$xsl}";
|
|
||||||
|
|
||||||
//3 outputformates
|
|
||||||
foreach (["pdf", "odt", "docx"] as $format) {
|
|
||||||
$submenuData[] = buildDropdownEntryPrintArray(
|
|
||||||
$idPrefix . "_" . $format,
|
|
||||||
$baseName . " (" . strtoupper($format) . ")",
|
|
||||||
$baseUrl . "&output=" . $format,
|
|
||||||
$uid
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
foreach ($arrayFinalExam as $docType => $langs) {
|
|
||||||
foreach ($langs as $lang => $types) {
|
|
||||||
$xsl = $types[$postfix]; // Auswahl Bakk/Master für jeweilige Sprache
|
|
||||||
$id = $docType . "_" . $lang;
|
|
||||||
|
|
||||||
$name = $docLabels[$docType] . " " . $langLabels[$lang];
|
|
||||||
|
|
||||||
$url = "xml=abschlusspruefung.rdf.php&xsl=" . $xsl . "&output=pdf";
|
|
||||||
|
|
||||||
$submenuData[] = buildDropdownEntryPrintArray($id, $name, $url, $uid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [
|
|
||||||
"id" => "submenu_finalexam",
|
|
||||||
"type" => "submenu",
|
|
||||||
"name" => "Abschlussprüfung",
|
|
||||||
"data" => $submenuData,
|
|
||||||
"order" => null,
|
|
||||||
"order" => 80,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
private function loadDropDownEntriesBakkOrDipl($stgTyp, $uid)
|
|
||||||
{
|
|
||||||
$entries = [];
|
|
||||||
|
|
||||||
if ($stgTyp == 'b')
|
|
||||||
{
|
|
||||||
$entries[] = buildDropdownEntryPrintArray("bakkurkunde", "Bakkurkunde", "xml=abschlusspruefung.rdf.php&xsl=Bakkurkunde&output=pdf", $uid, 22, null);
|
|
||||||
$entries[] = buildDropdownEntryPrintArray("bakkurkundeEng", "Bakkurkunde Englisch", "xml=abschlusspruefung.rdf.php&xsl=BakkurkundeEng&output=pdf", $uid, 23, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($stgTyp == 'm' || $stgTyp == 'd')
|
|
||||||
{
|
|
||||||
$entries[] = buildDropdownEntryPrintArray("diplomurkunde", "Diplomurkunde", "xml=abschlusspruefung.rdf.php&xsl=Diplomurkunde&output=pdf", $uid, 27, null);
|
|
||||||
$entries[] = buildDropdownEntryPrintArray("diplomurkundeEng", "Diplomurkunde Englisch", "xml=abschlusspruefung.rdf.php&xsl=DiplomurkundeEng&output=pdf", $uid, 28, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,17 @@ class Favorites extends FHCAPI_Controller
|
|||||||
|
|
||||||
$favorites = $this->input->post('favorites');
|
$favorites = $this->input->post('favorites');
|
||||||
|
|
||||||
|
$removed = [];
|
||||||
|
while (strlen($favorites) > 64) {
|
||||||
|
$favObj = json_decode($favorites);
|
||||||
|
if (!$favObj->list)
|
||||||
|
break;
|
||||||
|
$removed[] = array_shift($favObj->list);
|
||||||
|
$favorites = json_encode($favObj);
|
||||||
|
}
|
||||||
|
if ($removed)
|
||||||
|
$this->addMeta('removed', $removed);
|
||||||
|
|
||||||
$result = $this->VariableModel->setVariable(getAuthUID(), 'stv_favorites', $favorites);
|
$result = $this->VariableModel->setVariable(getAuthUID(), 'stv_favorites', $favorites);
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
$this->getDataOrTerminateWithError($result);
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class GemeinsameStudien extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||||
|
|
||||||
$this->StudiensemesterModel->addOrder('start', 'DESC');
|
$this->StudiensemesterModel->addOrder('studienjahr_kurzbz', 'DESC');
|
||||||
$result = $this->StudiensemesterModel->load();
|
$result = $this->StudiensemesterModel->load();
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
$this->terminateWithSuccess($data);
|
$this->terminateWithSuccess($data);
|
||||||
|
|||||||
@@ -60,8 +60,7 @@ class Grades extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$this->load->model('codex/Note_model', 'NoteModel');
|
$this->load->model('codex/Note_model', 'NoteModel');
|
||||||
|
|
||||||
$this->NoteModel->addOrder('notenwert', 'ASC');
|
$this->NoteModel->addOrder('note');
|
||||||
$this->NoteModel->addOrder('bezeichnung', 'ASC');
|
|
||||||
|
|
||||||
$result = $this->NoteModel->load();
|
$result = $this->NoteModel->load();
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ class Gruppen extends FHCAPI_Controller
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'add' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'search' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getGruppen' => ['admin:r', 'assistenz:r'],
|
'getGruppen' => ['admin:r', 'assistenz:r'],
|
||||||
'deleteGruppe' => ['admin:rw', 'assistenz:rw'],
|
'deleteGruppe' => ['admin:rw', 'assistenz:rw'],
|
||||||
]);
|
]);
|
||||||
@@ -20,9 +18,7 @@ class Gruppen extends FHCAPI_Controller
|
|||||||
|
|
||||||
// Load language phrases
|
// Load language phrases
|
||||||
$this->loadPhrases([
|
$this->loadPhrases([
|
||||||
'ui',
|
'ui', 'gruppenmanagement'
|
||||||
'gruppenmanagement',
|
|
||||||
'lehre'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Load models
|
// Load models
|
||||||
@@ -30,141 +26,15 @@ class Gruppen extends FHCAPI_Controller
|
|||||||
$this->load->model('organisation/Gruppe_model', 'GruppeModel');
|
$this->load->model('organisation/Gruppe_model', 'GruppeModel');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function add()
|
|
||||||
{
|
|
||||||
$this->load->library("form_validation");
|
|
||||||
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'gruppe_kurzbz',
|
|
||||||
$this->p->t('gruppenmanagement', 'gruppe'),
|
|
||||||
'required|is_in_db[organisation/Gruppe_model]',
|
|
||||||
[
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired'),
|
|
||||||
'is_in_db' => $this->p->t('ui', 'error_fieldNotFound')
|
|
||||||
]
|
|
||||||
);
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'uid',
|
|
||||||
$this->p->t('ui', 'student_uid'),
|
|
||||||
'required|is_in_db[crm/Student_model:student_uid]',
|
|
||||||
[
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired'),
|
|
||||||
'is_in_db' => $this->p->t('ui', 'error_fieldNotFound')
|
|
||||||
]
|
|
||||||
);
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'studiensemester_kurzbz',
|
|
||||||
$this->p->t('lehre', 'studiensemester'),
|
|
||||||
'required|is_in_db[organisation/Studiensemester_model]',
|
|
||||||
[
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired'),
|
|
||||||
'is_in_db' => $this->p->t('ui', 'error_fieldNotFound')
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
|
|
||||||
$uid = $this->input->post('uid');
|
|
||||||
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
|
|
||||||
|
|
||||||
$result = $this->BenutzergruppeModel->load([
|
|
||||||
$gruppe_kurzbz,
|
|
||||||
$uid
|
|
||||||
]);
|
|
||||||
$benutzergruppe = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
if ($benutzergruppe) {
|
|
||||||
$this->terminateWithError(
|
|
||||||
$this->p->t('gruppenmanagement', 'error_alreadyInGroup', [
|
|
||||||
'uid' => $uid,
|
|
||||||
'studiensemester_kurzbz' => current($benutzergruppe)->studiensemester_kurzbz
|
|
||||||
]),
|
|
||||||
self::ERROR_TYPE_GENERAL
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $this->BenutzergruppeModel->insert([
|
|
||||||
'uid' => $uid,
|
|
||||||
'gruppe_kurzbz' => $gruppe_kurzbz,
|
|
||||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
|
||||||
'insertamum' => date('c'),
|
|
||||||
'insertvon' => getAuthUID()
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function search()
|
|
||||||
{
|
|
||||||
$query = $this->input->post('query');
|
|
||||||
if (!$query)
|
|
||||||
$this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
// add query to where clause
|
|
||||||
$query = strtoupper($query);
|
|
||||||
$query = $this->GruppeModel->db->escape_like_str($query);
|
|
||||||
$query = '%' . str_replace(' ', '%', $query) . '%';
|
|
||||||
|
|
||||||
$this->GruppeModel->db->group_start();
|
|
||||||
$this->GruppeModel->db->or_like('UPPER(gruppe_kurzbz)', $query, 'none', false);
|
|
||||||
$this->GruppeModel->db->or_like('UPPER(bezeichnung)', $query, 'none', false);
|
|
||||||
$this->GruppeModel->db->or_like('UPPER(beschreibung)', $query, 'none', false);
|
|
||||||
$this->GruppeModel->db->group_end();
|
|
||||||
|
|
||||||
// add stg sorting 1
|
|
||||||
$studiengang_kz = $this->input->post('studiengang_kz');
|
|
||||||
$sort_stg = $studiengang_kz ? "WHEN studiengang_kz = " . $this->GruppeModel->escape($studiengang_kz) . " THEN 0" : "";
|
|
||||||
|
|
||||||
// add stg sorting 2
|
|
||||||
$studiengang_kzs = [];
|
|
||||||
$result = $this->permissionlib->getSTG_isEntitledFor('admin');
|
|
||||||
if ($result)
|
|
||||||
$studiengang_kzs = array_merge($studiengang_kzs, $result);
|
|
||||||
$result = $this->permissionlib->getSTG_isEntitledFor('assistenz');
|
|
||||||
if ($result)
|
|
||||||
$studiengang_kzs = array_merge($studiengang_kzs, $result);
|
|
||||||
|
|
||||||
// selects
|
|
||||||
$this->GruppeModel->addSelect("*");
|
|
||||||
$this->GruppeModel->addSelect("CASE
|
|
||||||
" . $sort_stg . "
|
|
||||||
WHEN studiengang_kz IN (" . implode(",", $this->GruppeModel->db->escape($studiengang_kzs)) . ")
|
|
||||||
THEN 1
|
|
||||||
ELSE 2
|
|
||||||
END AS sort_stg");
|
|
||||||
|
|
||||||
// ordering
|
|
||||||
$this->GruppeModel->addOrder("sort_stg");
|
|
||||||
$this->GruppeModel->addOrder("sort");
|
|
||||||
$this->GruppeModel->addOrder("gruppe_kurzbz");
|
|
||||||
|
|
||||||
// default where clause & execute
|
|
||||||
$result = $this->GruppeModel->loadWhere([
|
|
||||||
'lehre' => true,
|
|
||||||
'sichtbar' => true,
|
|
||||||
'aktiv' => true,
|
|
||||||
'direktinskription' => false,
|
|
||||||
'generiert' => false
|
|
||||||
]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getGruppen($student_uid)
|
public function getGruppen($student_uid)
|
||||||
{
|
{
|
||||||
$this->BenutzergruppeModel->addSelect('gruppe_kurzbz');
|
$this->BenutzergruppeModel ->addSelect('gruppe_kurzbz');
|
||||||
$this->BenutzergruppeModel->addSelect('bezeichnung');
|
$this->BenutzergruppeModel ->addSelect('bezeichnung');
|
||||||
$this->BenutzergruppeModel->addSelect('generiert');
|
$this->BenutzergruppeModel ->addSelect('generiert');
|
||||||
$this->BenutzergruppeModel->addSelect('uid');
|
$this->BenutzergruppeModel ->addSelect('uid');
|
||||||
$this->BenutzergruppeModel->addSelect('studiensemester_kurzbz');
|
$this->BenutzergruppeModel ->addSelect('studiensemester_kurzbz');
|
||||||
$this->BenutzergruppeModel->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
|
$this->BenutzergruppeModel ->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
|
||||||
$this->BenutzergruppeModel->addOrder('bezeichnung', 'ASC');
|
$this->BenutzergruppeModel-> addOrder('bezeichnung', 'ASC');
|
||||||
|
|
||||||
$result = $this->BenutzergruppeModel->loadWhere(
|
$result = $this->BenutzergruppeModel->loadWhere(
|
||||||
array(
|
array(
|
||||||
@@ -179,48 +49,29 @@ class Gruppen extends FHCAPI_Controller
|
|||||||
|
|
||||||
public function deleteGruppe()
|
public function deleteGruppe()
|
||||||
{
|
{
|
||||||
$this->load->library("form_validation");
|
$student_uid = $this->input->post('id');
|
||||||
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'uid',
|
|
||||||
$this->p->t('person', 'UID'),
|
|
||||||
'required',
|
|
||||||
[
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired')
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'gruppe_kurzbz',
|
|
||||||
$this->p->t('gruppenmanagement', 'gruppe'),
|
|
||||||
'required',
|
|
||||||
[
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired')
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
$uid = $this->input->post('uid');
|
|
||||||
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
|
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
|
||||||
|
|
||||||
// Validate if automatic group generation
|
//Validate if automatic group generation
|
||||||
$result = $this->GruppeModel->loadWhere([
|
$result = $this->GruppeModel-> loadWhere(
|
||||||
'gruppe_kurzbz' => $gruppe_kurzbz
|
array(
|
||||||
]);
|
'gruppe_kurzbz' => $gruppe_kurzbz
|
||||||
|
)
|
||||||
|
);
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
$generation = current($data);
|
$generation = current($data);
|
||||||
|
|
||||||
if ($generation->generiert)
|
if($generation->generiert)
|
||||||
{
|
{
|
||||||
$this->terminateWithError($this->p->t('gruppenmanagement', 'error_deleteGeneratedGroups'), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError($this->p->t('gruppenmanagement', 'error_deleteGeneratedGroups'), self::ERROR_TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->BenutzergruppeModel->delete([
|
$result = $this->BenutzergruppeModel->delete(
|
||||||
'gruppe_kurzbz' => $gruppe_kurzbz,
|
array(
|
||||||
'uid' => $uid
|
'gruppe_kurzbz' => $gruppe_kurzbz,
|
||||||
]);
|
'uid' => $student_uid
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ class Kontakt extends FHCAPI_Controller
|
|||||||
// Extra Permissionchecks
|
// Extra Permissionchecks
|
||||||
$permsMa = [];
|
$permsMa = [];
|
||||||
$permsStud = [];
|
$permsStud = [];
|
||||||
$permsDefault = null;
|
|
||||||
switch ($this->router->method) {
|
switch ($this->router->method) {
|
||||||
case 'getBankverbindung':
|
case 'getBankverbindung':
|
||||||
case 'loadBankverbindung':
|
case 'loadBankverbindung':
|
||||||
@@ -69,7 +68,7 @@ class Kontakt extends FHCAPI_Controller
|
|||||||
case 'getKontakte':
|
case 'getKontakte':
|
||||||
case 'loadAddress':
|
case 'loadAddress':
|
||||||
case 'loadContact':
|
case 'loadContact':
|
||||||
$permsMa = $permsStud = $permsDefault = ['admin:r', 'assistenz:r'];
|
$permsMa = $permsStud = ['admin:r', 'assistenz:r'];
|
||||||
break;
|
break;
|
||||||
case 'addNewAddress':
|
case 'addNewAddress':
|
||||||
case 'addNewContact':
|
case 'addNewContact':
|
||||||
@@ -77,7 +76,7 @@ class Kontakt extends FHCAPI_Controller
|
|||||||
case 'updateContact':
|
case 'updateContact':
|
||||||
case 'deleteAddress':
|
case 'deleteAddress':
|
||||||
case 'deleteContact':
|
case 'deleteContact':
|
||||||
$permsMa = $permsStud = $permsDefault = ['admin:rw', 'assistenz:rw'];
|
$permsMa = $permsStud = ['admin:rw', 'assistenz:rw'];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($this->router->method == 'getAdressen'
|
if ($this->router->method == 'getAdressen'
|
||||||
@@ -92,7 +91,7 @@ class Kontakt extends FHCAPI_Controller
|
|||||||
if (is_null($person_id) || !ctype_digit((string)$person_id))
|
if (is_null($person_id) || !ctype_digit((string)$person_id))
|
||||||
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
$this->checkPermissionsForPerson($person_id, $permsMa, $permsStud, $permsDefault);
|
$this->checkPermissionsForPerson($person_id, $permsMa, $permsStud);
|
||||||
} elseif ($this->router->method == 'loadAddress'
|
} elseif ($this->router->method == 'loadAddress'
|
||||||
|| $this->router->method == 'loadContact'
|
|| $this->router->method == 'loadContact'
|
||||||
|| $this->router->method == 'loadBankverbindung'
|
|| $this->router->method == 'loadBankverbindung'
|
||||||
@@ -136,7 +135,7 @@ class Kontakt extends FHCAPI_Controller
|
|||||||
|
|
||||||
$person_id = current($data)->person_id;
|
$person_id = current($data)->person_id;
|
||||||
|
|
||||||
$this->checkPermissionsForPerson($person_id, $permsMa, $permsStud, $permsDefault);
|
$this->checkPermissionsForPerson($person_id, $permsMa, $permsStud);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function getAdressen($person_id)
|
public function getAdressen($person_id)
|
||||||
|
|||||||
@@ -48,8 +48,7 @@ class Konto extends FHCAPI_Controller
|
|||||||
|
|
||||||
// Load language phrases
|
// Load language phrases
|
||||||
$this->loadPhrases([
|
$this->loadPhrases([
|
||||||
'konto',
|
'konto'
|
||||||
'lehre'
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +112,7 @@ class Konto extends FHCAPI_Controller
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function getBuchungstypen($studiensemester_kurzbz = null)
|
public function getBuchungstypen()
|
||||||
{
|
{
|
||||||
$this->load->model('crm/Buchungstyp_model', 'BuchungstypModel');
|
$this->load->model('crm/Buchungstyp_model', 'BuchungstypModel');
|
||||||
|
|
||||||
@@ -123,7 +122,6 @@ class Konto extends FHCAPI_Controller
|
|||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$this->_getOEHBeitrag($data, $studiensemester_kurzbz);
|
|
||||||
$this->terminateWithSuccess($data);
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +239,7 @@ class Konto extends FHCAPI_Controller
|
|||||||
$data[$field] = $this->input->post($field);
|
$data[$field] = $this->input->post($field);
|
||||||
|
|
||||||
if (defined('FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE') && isset(unserialize(FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE)[$data['buchungstyp_kurzbz']])) {
|
if (defined('FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE') && isset(unserialize(FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE)[$data['buchungstyp_kurzbz']])) {
|
||||||
$data['studiengang_kz'] = unserialize(FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE)[$data['buchungstyp_kurzbz']];
|
$data['kostenstelle'] = unserialize(FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE)[$data['buchungstyp_kurzbz']];
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
@@ -363,7 +361,7 @@ class Konto extends FHCAPI_Controller
|
|||||||
'buchungstyp_kurzbz' => $buchung['buchungstyp_kurzbz'],
|
'buchungstyp_kurzbz' => $buchung['buchungstyp_kurzbz'],
|
||||||
'credit_points' => $buchung['credit_points'],
|
'credit_points' => $buchung['credit_points'],
|
||||||
'zahlungsreferenz' => $buchung['zahlungsreferenz'],
|
'zahlungsreferenz' => $buchung['zahlungsreferenz'],
|
||||||
'betrag' => number_format($betrag, 2, '.', ''),
|
'betrag' => $betrag,
|
||||||
'buchungsdatum' => $buchungsdatum,
|
'buchungsdatum' => $buchungsdatum,
|
||||||
'mahnspanne' => '0',
|
'mahnspanne' => '0',
|
||||||
'buchungsnr_verweis' => $buchung['buchungsnr'],
|
'buchungsnr_verweis' => $buchung['buchungsnr'],
|
||||||
@@ -429,12 +427,9 @@ class Konto extends FHCAPI_Controller
|
|||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
'updatevon' => getAuthUID()
|
'updatevon' => getAuthUID()
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($allowed as $field)
|
foreach ($allowed as $field)
|
||||||
if ($this->input->post($field) !== null)
|
if ($this->input->post($field) !== null)
|
||||||
$data[$field] = $this->input->post($field);
|
$data[$field] = $this->input->post($field);
|
||||||
if($data['buchungsdatum'] == '')
|
|
||||||
$data['buchungsdatum'] = null;
|
|
||||||
|
|
||||||
$result = $this->KontoModel->update($id, $data);
|
$result = $this->KontoModel->update($id, $data);
|
||||||
|
|
||||||
@@ -499,43 +494,4 @@ class Konto extends FHCAPI_Controller
|
|||||||
|
|
||||||
$this->terminateWithSuccess();
|
$this->terminateWithSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _getOEHBeitrag(&$data, $studiensemester_kurzbz = null)
|
|
||||||
{
|
|
||||||
if (is_null($studiensemester_kurzbz))
|
|
||||||
{
|
|
||||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
|
||||||
$studiensemester_akt = $this->variablelib->getVar('semester_aktuell');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
|
||||||
if ($this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz))
|
|
||||||
$studiensemester_akt = $studiensemester_kurzbz;
|
|
||||||
else
|
|
||||||
$this->terminateWithError($this->p->t('lehre', 'error_noStudiensemester'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel');
|
|
||||||
$oehBeitrag = $this->OehbeitragModel->getByStudiensemester($studiensemester_akt);
|
|
||||||
|
|
||||||
$oehStandardbetrag = null;
|
|
||||||
if (hasData($oehBeitrag))
|
|
||||||
{
|
|
||||||
$oeh = getData($oehBeitrag)[0];
|
|
||||||
$summe = ($oeh->studierendenbeitrag + $oeh->versicherung) * -1;
|
|
||||||
$oehStandardbetrag = number_format((float)$summe, 2, '.', '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oehStandardbetrag !== null)
|
|
||||||
{
|
|
||||||
$data = array_map(function ($buchungstyp) use ($oehStandardbetrag) {
|
|
||||||
if (isset($buchungstyp->buchungstyp_kurzbz) && (strtolower($buchungstyp->buchungstyp_kurzbz) === 'oeh'))
|
|
||||||
{
|
|
||||||
$buchungstyp->standardbetrag = $oehStandardbetrag;
|
|
||||||
}
|
|
||||||
return $buchungstyp;
|
|
||||||
}, $data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
|
|
||||||
class Lehrverband extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'hasOrgforms' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getTree' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getSpecialgroups' => ['admin:r', 'assistenz:r']
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function hasOrgforms($studiengang_kz)
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
|
||||||
|
|
||||||
$result = $this->StudiengangModel->load($studiengang_kz);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
if ($data) {
|
|
||||||
$data = current($data)->mischform;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getTree($studiengang_kz)
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
|
|
||||||
|
|
||||||
$result = $this->LehrverbandModel->loadWhere([
|
|
||||||
'studiengang_kz' => $studiengang_kz,
|
|
||||||
'aktiv' => true
|
|
||||||
]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getSpecialgroups($studiengang_kz)
|
|
||||||
{
|
|
||||||
$this->load->model('organisation/Gruppe_model', 'GruppeModel');
|
|
||||||
|
|
||||||
$where = [
|
|
||||||
'studiengang_kz' => $studiengang_kz,
|
|
||||||
'lehre' => true,
|
|
||||||
'sichtbar' => true,
|
|
||||||
'aktiv' => true,
|
|
||||||
'direktinskription' => false
|
|
||||||
];
|
|
||||||
|
|
||||||
$result = $this->GruppeModel->loadWhere($where);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -237,8 +237,8 @@ class Mobility extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
$formData = $this->input->post('formData');
|
$formData = $this->input->post('formData');
|
||||||
|
|
||||||
$von = ($formData['von'] ?? '') ?: null;
|
$von = $formData['von'] ?? null;
|
||||||
$bis = ($formData['bis'] ?? '') ?: null;
|
$bis = $formData['bis'] ?? null;
|
||||||
$nation_code = $formData['nation_code'] ?? null;
|
$nation_code = $formData['nation_code'] ?? null;
|
||||||
$mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null;
|
$mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null;
|
||||||
$herkunftsland_code = $formData['herkunftsland_code'] ?? null;
|
$herkunftsland_code = $formData['herkunftsland_code'] ?? null;
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class Prestudent extends FHCAPI_Controller
|
|||||||
|
|
||||||
// Load language phrases
|
// Load language phrases
|
||||||
$this->loadPhrases([
|
$this->loadPhrases([
|
||||||
'ui', 'studierendenantrag', 'lehre', 'global'
|
'ui', 'studierendenantrag', 'lehre'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,9 +98,11 @@ class Prestudent extends FHCAPI_Controller
|
|||||||
'person_id',
|
'person_id',
|
||||||
'berufstaetigkeit_code',
|
'berufstaetigkeit_code',
|
||||||
'ausbildungcode',
|
'ausbildungcode',
|
||||||
|
'zgv_code',
|
||||||
'zgvort',
|
'zgvort',
|
||||||
'zgvdatum',
|
'zgvdatum',
|
||||||
'zgvnation',
|
'zgvnation',
|
||||||
|
'zgvmas_code',
|
||||||
'zgvmaort',
|
'zgvmaort',
|
||||||
'zgvmadatum',
|
'zgvmadatum',
|
||||||
'zgvmanation',
|
'zgvmanation',
|
||||||
@@ -108,6 +110,7 @@ class Prestudent extends FHCAPI_Controller
|
|||||||
'bismelden',
|
'bismelden',
|
||||||
'anmerkung',
|
'anmerkung',
|
||||||
'dual',
|
'dual',
|
||||||
|
'zgvdoktor_code',
|
||||||
'zgvdoktorort',
|
'zgvdoktorort',
|
||||||
'zgvdoktordatum',
|
'zgvdoktordatum',
|
||||||
'zgvdoktornation',
|
'zgvdoktornation',
|
||||||
@@ -122,57 +125,6 @@ class Prestudent extends FHCAPI_Controller
|
|||||||
'standort_code'
|
'standort_code'
|
||||||
];
|
];
|
||||||
|
|
||||||
// add zgv code fields only if user has permission
|
|
||||||
$this->load->library('PermissionLib');
|
|
||||||
$prestudentres = $this->PrestudentModel->load($prestudent_id);
|
|
||||||
if(!hasData($prestudentres))
|
|
||||||
{
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_fieldNotFound', ['field' => 'Prestudent ' . $prestudent_id]));
|
|
||||||
}
|
|
||||||
$prestudent = (getData($prestudentres))[0];
|
|
||||||
$bakkZgvStg = $this->permissionlib->getSTG_isEntitledFor('student/editBakkZgv') ?: array();
|
|
||||||
$makkZgvStg = $this->permissionlib->getSTG_isEntitledFor('student/editMakkZgv') ?: array();
|
|
||||||
$dokZgvStg = $this->permissionlib->getSTG_isEntitledFor('student/editDokZgv') ?: array();
|
|
||||||
|
|
||||||
if(in_array($prestudent->studiengang_kz, $bakkZgvStg))
|
|
||||||
{
|
|
||||||
$array_allowed_props_prestudent[] = 'zgv_code';
|
|
||||||
}
|
|
||||||
else if(!is_null($this->input->post('zgv_code')))
|
|
||||||
{
|
|
||||||
$this->terminateWithError(
|
|
||||||
$this->p->t('global', 'zgv')
|
|
||||||
. ' - ' .
|
|
||||||
$this->p->t('ui', 'error_keineBerechtigungStg')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(in_array($prestudent->studiengang_kz, $makkZgvStg))
|
|
||||||
{
|
|
||||||
$array_allowed_props_prestudent[] = 'zgvmas_code';
|
|
||||||
}
|
|
||||||
else if(!is_null($this->input->post('zgvmas_code')))
|
|
||||||
{
|
|
||||||
$this->terminateWithError(
|
|
||||||
$this->p->t('lehre', 'zgvMaster')
|
|
||||||
. ' - ' .
|
|
||||||
$this->p->t('ui', 'error_keineBerechtigungStg')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(in_array($prestudent->studiengang_kz, $dokZgvStg))
|
|
||||||
{
|
|
||||||
$array_allowed_props_prestudent[] = 'zgvdoktor_code';
|
|
||||||
}
|
|
||||||
else if(!is_null($this->input->post('zgvdoktor_code')))
|
|
||||||
{
|
|
||||||
$this->terminateWithError(
|
|
||||||
$this->p->t('lehre', 'zgvDoktor')
|
|
||||||
. ' - ' .
|
|
||||||
$this->p->t('ui', 'error_keineBerechtigungStg')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// add UDFs
|
// add UDFs
|
||||||
$result = $this->udflib->getDefinitionForModel($this->PrestudentModel);
|
$result = $this->udflib->getDefinitionForModel($this->PrestudentModel);
|
||||||
|
|
||||||
@@ -193,7 +145,7 @@ class Prestudent extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
elseif (
|
elseif (
|
||||||
$val === ''
|
$val === ''
|
||||||
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode', 'zgvdatum', 'zgvmadatum'])
|
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode'])
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$val = null;
|
$val = null;
|
||||||
|
|||||||
@@ -1,417 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
class Projektarbeit extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'getProjektarbeit' => ['admin:r', 'assistenz:r'],
|
|
||||||
'loadProjektarbeit' => ['admin:r', 'assistenz:r'],
|
|
||||||
'insertProjektarbeit' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'updateProjektarbeit' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'deleteProjektarbeit' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'getTypenProjektarbeit' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getFirmen' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getLehrveranstaltungen' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getNoten' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getStudiensemester' => ['admin:r', 'assistenz:r']
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui',
|
|
||||||
'person',
|
|
||||||
'projektarbeit'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load models
|
|
||||||
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
|
||||||
$this->load->model('education/Projekttyp_model', 'ProjekttypModel');
|
|
||||||
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
|
||||||
$this->load->model('ressource/Firma_model', 'FirmaModel');
|
|
||||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
|
||||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
|
||||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
|
||||||
$this->load->model('education/Note_model', 'NoteModel');
|
|
||||||
$this->load->model('education/Projektbetreuer_model', 'BetreuerModel');
|
|
||||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
|
||||||
|
|
||||||
// load libraries
|
|
||||||
$this->load->library('PermissionLib');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get projekt works for a uid.
|
|
||||||
*/
|
|
||||||
public function getProjektarbeit()
|
|
||||||
{
|
|
||||||
$student_uid = $this->input->get('uid');
|
|
||||||
|
|
||||||
if (!isset($student_uid)) $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->ProjektarbeitModel->getProjektarbeit($student_uid);
|
|
||||||
|
|
||||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
$projektarbeiten = getData($result);
|
|
||||||
|
|
||||||
foreach ($projektarbeiten as $projektarbeit)
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $projektarbeit->projektarbeit_id;
|
|
||||||
$abgabeRes = $this->PaabgabeModel->getEndabgabe($projektarbeit_id);
|
|
||||||
|
|
||||||
if (isError($abgabeRes)) $this->terminateWithError(getError($abgabeRes), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (hasData($abgabeRes))
|
|
||||||
{
|
|
||||||
$paabgabe = getData($abgabeRes)[0];
|
|
||||||
$projektarbeit->abgabedatum = $paabgabe->abgabedatum;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($projektarbeiten);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load a single Projektarbeit by id.
|
|
||||||
*/
|
|
||||||
public function loadProjektarbeit()
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $this->input->get('projektarbeit_id');
|
|
||||||
|
|
||||||
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id)) return $this->terminateWithError('Projektarbeit Id missing', self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->fetchProjektarbeitByID($projektarbeit_id);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(current($data));
|
|
||||||
}
|
|
||||||
|
|
||||||
private function fetchProjektarbeitById($projektarbeit_id) {
|
|
||||||
$this->ProjektarbeitModel->resetQuery();
|
|
||||||
$this->ProjektarbeitModel->addSelect(
|
|
||||||
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, lehrveranstaltung_id, lehreinheit_id,
|
|
||||||
firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
|
|
||||||
);
|
|
||||||
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
|
||||||
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
|
||||||
$this->ProjektarbeitModel->addJoin('public.tbl_firma fa', 'firma_id', 'LEFT');
|
|
||||||
return $this->ProjektarbeitModel->loadWhere(
|
|
||||||
array('projektarbeit_id' => $projektarbeit_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Inwert a Projektarbeit.
|
|
||||||
*/
|
|
||||||
public function insertProjektarbeit()
|
|
||||||
{
|
|
||||||
$student_uid = $this->input->post('uid');
|
|
||||||
|
|
||||||
if (!$student_uid) return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!$this->_hasBerechtigungForStudent($student_uid))
|
|
||||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'assistenz:rw']]);
|
|
||||||
|
|
||||||
$formData = $this->input->post('formData');
|
|
||||||
|
|
||||||
if ($this->_validate($formData) == false)
|
|
||||||
{
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
}
|
|
||||||
|
|
||||||
$projektarbeit = $this->_getProjektarbeitArr($formData);
|
|
||||||
|
|
||||||
$result = $this->ProjektarbeitModel->insert(
|
|
||||||
array_merge($projektarbeit, ['insertamum' => date('c'), 'insertvon' => getAuthUID(), 'student_uid' => $student_uid])
|
|
||||||
);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
$data = $this->getDataOrTerminateWithError($this->fetchProjektarbeitById($data));
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update a Projektarbeit by ID.
|
|
||||||
*/
|
|
||||||
public function updateProjektarbeit()
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $this->input->post('projektarbeit_id');
|
|
||||||
|
|
||||||
if (!$projektarbeit_id || !is_numeric($projektarbeit_id))
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Projektarbeit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!$this->ProjektarbeitModel->hasBerechtigungForProjektarbeit($projektarbeit_id))
|
|
||||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'assistenz:rw']]);
|
|
||||||
|
|
||||||
$formData = $this->input->post('formData');
|
|
||||||
|
|
||||||
if ($this->_validate($formData) == false)
|
|
||||||
{
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
}
|
|
||||||
|
|
||||||
$projektarbeit = $this->_getProjektarbeitArr($formData);
|
|
||||||
|
|
||||||
$result = $this->ProjektarbeitModel->update(
|
|
||||||
$projektarbeit_id,
|
|
||||||
array_merge($projektarbeit, ['updateamum' => date('c'), 'updatevon' => getAuthUID()])
|
|
||||||
);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete Projektarbeit by ID after validation.
|
|
||||||
*/
|
|
||||||
public function deleteProjektarbeit()
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $this->input->post('projektarbeit_id');
|
|
||||||
|
|
||||||
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id))
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Projektarbeit ID'], self::ERROR_TYPE_GENERAL));
|
|
||||||
|
|
||||||
if (!$this->ProjektarbeitModel->hasBerechtigungForProjektarbeit($projektarbeit_id))
|
|
||||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'assistenz:rw']]);
|
|
||||||
|
|
||||||
$validate = $this->_validateDelete($projektarbeit_id);
|
|
||||||
|
|
||||||
if (isError($validate)) return $this->terminateWithError(getError($validate), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->ProjektarbeitModel->delete(
|
|
||||||
['projektarbeit_id' => $projektarbeit_id]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($result))
|
|
||||||
{
|
|
||||||
$this->outputJson($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(current(getData($result)) ? : null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all active projekt work types.
|
|
||||||
*/
|
|
||||||
public function getTypenProjektarbeit()
|
|
||||||
{
|
|
||||||
$result = $this->ProjekttypModel->loadWhere(['aktiv' => true]);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets companies by search string.
|
|
||||||
*/
|
|
||||||
public function getFirmen()
|
|
||||||
{
|
|
||||||
$searchString = $this->input->get('searchString');
|
|
||||||
|
|
||||||
if (!isset($searchString))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_fieldRequired', ['field' => 'Search term']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->FirmaModel->searchFirmen($searchString, $aktiv = true);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Lehrveranstaltungen by params, incling lehreinheiten for a specific Studiensemester..
|
|
||||||
*/
|
|
||||||
public function getLehrveranstaltungen()
|
|
||||||
{
|
|
||||||
$student_uid = $this->input->get('student_uid');
|
|
||||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
|
||||||
$studiensemester_kurzbz = $this->input->get('studiensemester_kurzbz');
|
|
||||||
$additional_lehrveranstaltung_id = $this->input->get('additional_lehrveranstaltung_id');
|
|
||||||
|
|
||||||
if (!isset($student_uid)) $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
if (!isset($studiensemester_kurzbz)) $this->terminateWithError('Studiensemster missing', self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
// get Lvs
|
|
||||||
$lvsResult = $this->LehrveranstaltungModel->getLvsForProjektarbeit($student_uid, $studiengang_kz, $additional_lehrveranstaltung_id);
|
|
||||||
|
|
||||||
if (isError($lvsResult)) return $this->terminateWithError($lvsResult, self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$lvs = hasData($lvsResult) ? getData($lvsResult) : [];
|
|
||||||
|
|
||||||
foreach ($lvs as $lv)
|
|
||||||
{
|
|
||||||
// add Lehreinheiten for each Lv for the semester
|
|
||||||
$lehreinheiten = $this->LehreinheitModel->getLesForLv(
|
|
||||||
$lv->lehrveranstaltung_id, $studiensemester_kurzbz
|
|
||||||
);
|
|
||||||
|
|
||||||
foreach ($lehreinheiten as $lehreinheit)
|
|
||||||
{
|
|
||||||
if (!isEmptyArray($lehreinheit->lektoren))
|
|
||||||
{
|
|
||||||
$this->MitarbeiterModel->addSelect('kurzbz');
|
|
||||||
$this->MitarbeiterModel->db->where_in('tbl_mitarbeiter.mitarbeiter_uid', $lehreinheit->lektoren);
|
|
||||||
$maResult = $this->MitarbeiterModel->load();
|
|
||||||
|
|
||||||
if (isError($maResult)) return $this->terminateWithError($lvsResult, self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$lehreinheit->lektoren = array_column(getData($maResult), 'kurzbz');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$lv->lehreinheiten = $lehreinheiten;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($lvs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all noten.
|
|
||||||
*/
|
|
||||||
public function getNoten()
|
|
||||||
{
|
|
||||||
$result = $this->NoteModel->getAllActive();
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all Studiensemester, sorted.
|
|
||||||
*/
|
|
||||||
public function getStudiensemester()
|
|
||||||
{
|
|
||||||
$this->StudiensemesterModel->addOrder('start', 'DESC');
|
|
||||||
$result = $this->StudiensemesterModel->load();
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validate Projektarbeit data.
|
|
||||||
* @param formData
|
|
||||||
* @return bool true if data valid
|
|
||||||
*/
|
|
||||||
private function _validate($formData)
|
|
||||||
{
|
|
||||||
$this->form_validation->set_data($formData);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('projekttyp_kurzbz', 'Projekttyp', 'required', [
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Projekttyp'])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('lehreinheit_id', 'Lehreinheit', 'required|is_natural', [
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Lehreinheit']),
|
|
||||||
'is_natural' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Lehreinheit'])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('beginn', 'Beginn', 'is_valid_date', [
|
|
||||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Beginn'])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('ende', 'Ende', 'is_valid_date', [
|
|
||||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Ende'])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('gesperrtbis', 'Ende', 'is_valid_date', [
|
|
||||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Gesperrt bis'])
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $this->form_validation->run();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extract Projektarbeit data from passed form data.
|
|
||||||
* @param formData
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function _getProjektarbeitArr($formData)
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'titel' => $formData['titel'],
|
|
||||||
'titel_english' => $formData['titel_english'] ?? null,
|
|
||||||
'themenbereich' => $formData['themenbereich'] ?? null,
|
|
||||||
'projekttyp_kurzbz' => $formData['projekttyp_kurzbz'],
|
|
||||||
'firma_id' => $formData['firma_id'] ?? null,
|
|
||||||
'lehreinheit_id' => $formData['lehreinheit_id'],
|
|
||||||
'beginn' => isset($formData['beginn']) && !isEmptyString($formData['beginn']) ? $formData['beginn'] : null,
|
|
||||||
'ende' => isset($formData['ende']) && !isEmptyString($formData['ende']) ? $formData['ende'] : null,
|
|
||||||
'note' => $formData['note'] ?? null,
|
|
||||||
'final' => $formData['final'] ?? null,
|
|
||||||
'freigegeben' => $formData['freigegeben'] ?? null,
|
|
||||||
'anmerkung' => $formData['anmerkung'] ?? null,
|
|
||||||
'gesperrtbis' => isset($formData['gesperrtbis']) && !isEmptyString($formData['gesperrtbis']) ? $formData['gesperrtbis'] : null
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if deletion of a Projektarbeit is possible.
|
|
||||||
* @param $projektarbeit_id
|
|
||||||
* @return object success if deletion possible, error otherwise.
|
|
||||||
*/
|
|
||||||
private function _validateDelete($projektarbeit_id)
|
|
||||||
{
|
|
||||||
$this->BetreuerModel->addSelect('1');
|
|
||||||
$result = $this->BetreuerModel->loadWhere(['projektarbeit_id' => $projektarbeit_id]);
|
|
||||||
|
|
||||||
if (isError($result)) return $result;
|
|
||||||
|
|
||||||
if (hasData($result)) return error($this->p->t('projektarbeit', 'error_betreuerNichtGeloescht'));
|
|
||||||
|
|
||||||
$this->PaabgabeModel->addSelect('1');
|
|
||||||
$result = $this->PaabgabeModel->loadWhere(['projektarbeit_id' => $projektarbeit_id]);
|
|
||||||
|
|
||||||
if (isError($result)) return $result;
|
|
||||||
|
|
||||||
if (hasData($result)) return error($this->p->t('projektarbeit', 'error_paabgabeNichtGeloescht'));
|
|
||||||
|
|
||||||
return success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks permissions for a student.
|
|
||||||
* @param $student_uid
|
|
||||||
* @return bool true if authorized
|
|
||||||
*/
|
|
||||||
private function _hasBerechtigungForStudent($student_uid)
|
|
||||||
{
|
|
||||||
if (!$student_uid)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
|
|
||||||
$this->StudentModel->addSelect('studiengang_kz');
|
|
||||||
$result = $this->StudentModel->load([$student_uid]);
|
|
||||||
if (isError($result) || !hasData($result))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
$studiengang_kz = getData($result)[0]->studiengang_kz;
|
|
||||||
|
|
||||||
if ($this->permissionlib->isBerechtigt('admin', 'suid', $studiengang_kz))
|
|
||||||
return true;
|
|
||||||
if ($this->permissionlib->isBerechtigt('assistenz', 'suid', $studiengang_kz))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,435 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
use \CI3_Events as Events;
|
|
||||||
|
|
||||||
class Projektbetreuer extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'getProjektbetreuer' => ['admin:r', 'assistenz:r'],
|
|
||||||
'saveProjektbetreuer' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'deleteProjektbetreuer' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'getBetreuerarten' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getNoten' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getDefaultStundensaetze' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getProjektbetreuerBySearchQuery' => ['admin:r', 'assistenz:r'],
|
|
||||||
'getPerson' => ['admin:r', 'assistenz:r'],
|
|
||||||
'validateProjektbetreuer' => ['admin:r', 'assistenz:r']
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui',
|
|
||||||
'person',
|
|
||||||
'projektarbeit'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load models
|
|
||||||
$this->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel');
|
|
||||||
$this->load->model('education/Betreuerart_model', 'BetreuerartModel');
|
|
||||||
$this->load->model('ressource/Stundensatz_model', 'StundensatzModel');
|
|
||||||
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
|
||||||
$this->load->model('education/Note_model', 'NoteModel');
|
|
||||||
$this->load->model('person/Person_model', 'PersonModel');
|
|
||||||
|
|
||||||
// load libraries
|
|
||||||
$this->load->library('PermissionLib');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets Projektbetreuer data for a Projektarbeit.
|
|
||||||
*/
|
|
||||||
public function getProjektbetreuer()
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $this->input->get('projektarbeit_id');
|
|
||||||
|
|
||||||
if (!isset($projektarbeit_id))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Projektarbeit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$qry = "
|
|
||||||
SELECT * FROM (
|
|
||||||
SELECT
|
|
||||||
projektarbeit_id, person_id, nachname, vorname, note, punkte, round(stunden, 1) AS stunden,
|
|
||||||
stundensatz, betreuerart_kurzbz, vertrag_id, titelpre, titelpost,
|
|
||||||
CASE
|
|
||||||
WHEN EXISTS
|
|
||||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) WHERE person_id=pers.person_id)
|
|
||||||
THEN 'Mitarbeiter'
|
|
||||||
WHEN EXISTS
|
|
||||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid) WHERE person_id=pers.person_id)
|
|
||||||
THEN 'Student'
|
|
||||||
ELSE 'Person'
|
|
||||||
END AS status
|
|
||||||
FROM
|
|
||||||
lehre.tbl_projektbetreuer
|
|
||||||
JOIN public.tbl_person pers USING (person_id)
|
|
||||||
WHERE
|
|
||||||
projektarbeit_id = ?
|
|
||||||
) betreuer
|
|
||||||
ORDER BY
|
|
||||||
CASE WHEN status = 'Mitarbeiter' THEN 0 WHEN status = 'Person' THEN 1 ELSE 2 END";
|
|
||||||
|
|
||||||
$result = $this->ProjektbetreuerModel->execReadOnlyQuery($qry, [$projektarbeit_id]);
|
|
||||||
|
|
||||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
$projektbetreuer = getData($result);
|
|
||||||
|
|
||||||
//~ foreach ($projektbetreuer as $projektarbeit)
|
|
||||||
//~ {
|
|
||||||
//~ $projektarbeit_id = $projektarbeit->projektarbeit_id;
|
|
||||||
//~ $abgabeRes = $this->PaabgabeModel->getEndabgabe($projektarbeit_id);
|
|
||||||
|
|
||||||
//~ if (isError($abgabeRes)) $this->terminateWithError(getError($abgabeRes), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
//~ if (hasData($abgabeRes))
|
|
||||||
//~ {
|
|
||||||
//~ $paabgabe = getData($abgabeRes)[0];
|
|
||||||
//~ $projektarbeit->abgabedatum = $paabgabe->abgabedatum;
|
|
||||||
//~ }
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
// add thesis download link (from external extension)
|
|
||||||
foreach ($projektbetreuer as $pb)
|
|
||||||
{
|
|
||||||
$downloadLink = null;
|
|
||||||
Events::trigger(
|
|
||||||
'projektbeurteilung_download_link',
|
|
||||||
$pb->projektarbeit_id,
|
|
||||||
$pb->betreuerart_kurzbz,
|
|
||||||
$pb->person_id,
|
|
||||||
function ($value) use (&$downloadLink) {
|
|
||||||
$downloadLink = $value;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
$pb->beurteilungDownloadLink = $downloadLink;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($this->_addFullNameToBetreuer($projektbetreuer));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Saves (adds or updates) a single Projektbetreuer for a Projektarbeit.
|
|
||||||
*/
|
|
||||||
public function saveProjektbetreuer()
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $this->input->post('projektarbeit_id');
|
|
||||||
|
|
||||||
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id))
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Projektarbeit ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!$this->ProjektarbeitModel->hasBerechtigungForProjektarbeit($projektarbeit_id))
|
|
||||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'assistenz:rw']]);
|
|
||||||
|
|
||||||
$projektbetreuer = $this->input->post('projektbetreuer');
|
|
||||||
|
|
||||||
if ($this->_validate($projektbetreuer) == false) $this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
|
|
||||||
// check if assessor has already been assigned
|
|
||||||
if (isset($projektbetreuer['person_id']))
|
|
||||||
{
|
|
||||||
$this->ProjektbetreuerModel->addSelect('1');
|
|
||||||
$betreuerRes = $this->ProjektbetreuerModel->loadWhere(
|
|
||||||
[
|
|
||||||
'person_id' => $projektbetreuer['person_id'],
|
|
||||||
'projektarbeit_id' => $projektbetreuer['projektarbeit_id'],
|
|
||||||
'betreuerart_kurzbz' => $projektbetreuer['betreuerart_kurzbz']
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (hasData($betreuerRes)
|
|
||||||
&& (!isset($projektbetreuer['person_id_old']) || $projektbetreuer['person_id'] != $projektbetreuer['person_id_old'])) {
|
|
||||||
return $this->terminateWithError($this->p->t('projektarbeit', 'betreuerZugewiesen'), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = null;
|
|
||||||
|
|
||||||
$stunden = isset($projektbetreuer['stunden']) && !isEmptyString($projektbetreuer['stunden']) ? $projektbetreuer['stunden'] : null;
|
|
||||||
$stundensatz =
|
|
||||||
isset($projektbetreuer['stundensatz']) && !isEmptyString($projektbetreuer['stundensatz']) ? $projektbetreuer['stundensatz'] : null;
|
|
||||||
|
|
||||||
$betreuer = [
|
|
||||||
'projektarbeit_id' => $projektarbeit_id,
|
|
||||||
'person_id' => $projektbetreuer['person_id'],
|
|
||||||
'note' => $projektbetreuer['note'],
|
|
||||||
'stunden' => $stunden,
|
|
||||||
'stundensatz' => $stundensatz,
|
|
||||||
'betreuerart_kurzbz' => $projektbetreuer['betreuerart_kurzbz']
|
|
||||||
];
|
|
||||||
|
|
||||||
if (isset($projektbetreuer['person_id_old']) && isset($projektbetreuer['betreuerart_kurzbz_old']))
|
|
||||||
{
|
|
||||||
$result = $this->ProjektbetreuerModel->update(
|
|
||||||
[
|
|
||||||
'projektarbeit_id' => $projektarbeit_id,
|
|
||||||
'person_id' => $projektbetreuer['person_id_old'],
|
|
||||||
'betreuerart_kurzbz' => $projektbetreuer['betreuerart_kurzbz_old']
|
|
||||||
],
|
|
||||||
array_merge($betreuer, ['updateamum' => date('c'), 'updatevon' => getAuthUID()])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$result = $this->ProjektbetreuerModel->insert(
|
|
||||||
array_merge($betreuer, ['insertamum' => date('c'), 'insertvon' => getAuthUID()])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete a Projektbetreuer assignment to a Projektarbeit.
|
|
||||||
*/
|
|
||||||
public function deleteProjektbetreuer()
|
|
||||||
{
|
|
||||||
$projektarbeit_id = $this->input->post('projektarbeit_id');
|
|
||||||
$person_id = $this->input->post('person_id');
|
|
||||||
$betreuerart_kurzbz = $this->input->post('betreuerart_kurzbz');
|
|
||||||
|
|
||||||
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id))
|
|
||||||
{
|
|
||||||
return $this->terminateWithError(
|
|
||||||
$this->p->t('ui', 'error_missingId', ['id'=> $this->p->t('projektarbeit', 'projektarbeit').' ID'], self::ERROR_TYPE_GENERAL)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($person_id) || !is_numeric($person_id))
|
|
||||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID'], self::ERROR_TYPE_GENERAL));
|
|
||||||
|
|
||||||
if (!isset($betreuerart_kurzbz))
|
|
||||||
{
|
|
||||||
return $this->terminateWithError(
|
|
||||||
$this->p->t('ui', 'error_missingId', ['id'=> $this->p->t('projektarbeit', 'betreuerart')], self::ERROR_TYPE_GENERAL)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// check permission
|
|
||||||
if (!$this->ProjektarbeitModel->hasBerechtigungForProjektarbeit($projektarbeit_id))
|
|
||||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'assistenz:rw']]);
|
|
||||||
|
|
||||||
$validate = $this->_validateDelete($projektarbeit_id, $person_id, $betreuerart_kurzbz);
|
|
||||||
|
|
||||||
if (isError($validate)) return $this->terminateWithError(getError($validate), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
// check if there is a Projektarbeitsbeurteilung - if yes, it is handled (possibly deleted) by external extension.
|
|
||||||
$beurteilungDeleteSuccess = true;
|
|
||||||
|
|
||||||
Events::trigger(
|
|
||||||
'projektarbeitsbeurteilung_delete',
|
|
||||||
$projektarbeit_id,
|
|
||||||
function ($value) use (&$beurteilungDeleteSuccess) {
|
|
||||||
$beurteilungDeleteSuccess = $value;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// if there is still a Beurteilung, Projektarbeit cannot be deleted - return with error
|
|
||||||
if (!$beurteilungDeleteSuccess) return $this->terminateWithError($this->p->t('projektarbeit', 'error_paarbeitHatBeurteilung'));
|
|
||||||
|
|
||||||
$result = $this->ProjektbetreuerModel->delete(
|
|
||||||
['projektarbeit_id' => $projektarbeit_id, 'person_id' => $person_id, 'betreuerart_kurzbz' => $betreuerart_kurzbz]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($result))
|
|
||||||
{
|
|
||||||
$this->outputJson($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(getData($result));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all active Betreuerarten.
|
|
||||||
*/
|
|
||||||
public function getBetreuerarten()
|
|
||||||
{
|
|
||||||
$result = $this->BetreuerartModel->loadWhere(['aktiv' => true]);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all Noten.
|
|
||||||
*/
|
|
||||||
public function getNoten()
|
|
||||||
{
|
|
||||||
$result = $this->NoteModel->load();
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? getData($result) : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get default Stundensätze for an employee in a semester.
|
|
||||||
*/
|
|
||||||
public function getDefaultStundensaetze()
|
|
||||||
{
|
|
||||||
$person_id = $this->input->get('person_id');
|
|
||||||
$studiensemester_kurzbz = $this->input->get('studiensemester_kurzbz');
|
|
||||||
|
|
||||||
$result = $this->StundensatzModel->getStundensatzForMitarbeiter($person_id, $studiensemester_kurzbz);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all Projektbetreuer by search string.
|
|
||||||
*/
|
|
||||||
public function getProjektbetreuerBySearchQuery()
|
|
||||||
{
|
|
||||||
$searchString = $this->input->get('searchString');
|
|
||||||
|
|
||||||
if (!isset($searchString))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_fieldRequired', ['field' => 'Search term']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->PersonModel->searchPerson($searchString);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
$persons = $this->_addFullNameToBetreuer(getData($result));
|
|
||||||
|
|
||||||
// sort persons by type (employees first)
|
|
||||||
usort($persons, function ($a, $b) {
|
|
||||||
$statusRanks = ['Mitarbeiter' => 0, 'Person' => 1, 'Student' => 2];
|
|
||||||
return (isset($statusRanks[$a->status]) ? $statusRanks[$a->status] : count($statusRanks) + 1)
|
|
||||||
- (isset($statusRanks[$b->status]) ? $statusRanks[$b->status] : count($statusRanks) + 1);
|
|
||||||
});
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess($persons);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get person info by Id.
|
|
||||||
*/
|
|
||||||
public function getPerson()
|
|
||||||
{
|
|
||||||
$person_id = $this->input->get('person_id');
|
|
||||||
|
|
||||||
if (!isset($person_id))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_fieldRequired', ['field' => 'Person']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$this->PersonModel->addSelect("CASE
|
|
||||||
WHEN EXISTS
|
|
||||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) WHERE person_id=tbl_person.person_id)
|
|
||||||
THEN 'Mitarbeiter'
|
|
||||||
WHEN EXISTS
|
|
||||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid) WHERE person_id=tbl_person.person_id)
|
|
||||||
THEN 'Student'
|
|
||||||
ELSE 'Person'
|
|
||||||
END AS status");
|
|
||||||
$result = $this->PersonModel->addSelect('titelpre, titelpost, vorname, nachname, person_id');
|
|
||||||
$result = $this->PersonModel->load($person_id);
|
|
||||||
|
|
||||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
return $this->terminateWithSuccess(hasData($result) ? $this->_addFullNameToBetreuer(getData($result))[0] : []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validate list of Projektbetreuer.
|
|
||||||
*/
|
|
||||||
public function validateProjektbetreuer()
|
|
||||||
{
|
|
||||||
$projektbetreuerArr = $this->input->post('projektbetreuer');
|
|
||||||
|
|
||||||
if (!is_array($projektbetreuerArr)) $projektbetreuerArr = [$projektbetreuerArr];
|
|
||||||
|
|
||||||
foreach ($projektbetreuerArr as $pb)
|
|
||||||
{
|
|
||||||
if ($this->_validate($pb) == false)
|
|
||||||
{
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validation funciton for checking Projektbetreuer input.
|
|
||||||
* @param $formData Betreuer data
|
|
||||||
* @return bool true when data is valid
|
|
||||||
*/
|
|
||||||
private function _validate($formData)
|
|
||||||
{
|
|
||||||
$this->form_validation->set_data($formData);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('betreuerart_kurzbz', 'Betreuerart', 'required', [
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('projektarbeit', 'betreuerart')])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('person_id', 'Person', 'required', [
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('projektarbeit', 'betreuer')])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('stunden', 'Stunden', 'numeric', [
|
|
||||||
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => $this->p->t('projektarbeit', 'stunden')])
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('stundensatz', 'Stundensatz', 'numeric', [
|
|
||||||
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => $this->p->t('projektarbeit', 'stundensatz')])
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
return $this->form_validation->run();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check possibility of deletion of a Projektbetreuer.
|
|
||||||
* @param projektarbeit_id
|
|
||||||
* @param person_id
|
|
||||||
* @param betreuerart_kurzbz
|
|
||||||
* @return object success when delete possible, error otherwise
|
|
||||||
*/
|
|
||||||
private function _validateDelete($projektarbeit_id, $person_id, $betreuerart_kurzbz)
|
|
||||||
{
|
|
||||||
// check if contract exists
|
|
||||||
$this->ProjektbetreuerModel->addSelect('vertrag_id');
|
|
||||||
$result = $this->ProjektbetreuerModel->loadWhere(
|
|
||||||
['projektarbeit_id' => $projektarbeit_id, 'person_id' => $person_id, 'betreuerart_kurzbz' => $betreuerart_kurzbz]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isError($result)) return $result;
|
|
||||||
|
|
||||||
// if contract exists, no deletion is possible
|
|
||||||
if (hasData($result) && getData($result)[0]->vertrag_id != null) return error($this->p->t('projektarbeit', 'error_betreuerHatVertrag'));
|
|
||||||
|
|
||||||
return success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add full name to array with Betreuer.
|
|
||||||
* @param $betreuerArr
|
|
||||||
* @return array including Betreuer with their full names
|
|
||||||
*/
|
|
||||||
private function _addFullNameToBetreuer($betreuerArr)
|
|
||||||
{
|
|
||||||
foreach ($betreuerArr as $betreuer)
|
|
||||||
{
|
|
||||||
$betreuer->name = ($betreuer->titelpre ? $betreuer->titelpre . ' ' : '') .
|
|
||||||
$betreuer->nachname . ' ' . $betreuer->vorname . ($betreuer->titelpost ? ' ' . $betreuer->titelpre : '').
|
|
||||||
' (' . $betreuer->status . ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $betreuerArr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -18,8 +18,6 @@
|
|||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
use \DateTime as DateTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
* This controller operates between (interface) the JS (GUI) and the back-end
|
||||||
* Provides data to the ajax get calls about addresses
|
* Provides data to the ajax get calls about addresses
|
||||||
@@ -113,7 +111,7 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
|
|
||||||
// Load language phrases
|
// Load language phrases
|
||||||
$this->loadPhrases([
|
$this->loadPhrases([
|
||||||
'global', 'ui', 'lehre', 'exam'
|
'global', 'ui','lehre'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,11 +172,174 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
*
|
*
|
||||||
* @param lehrveranstaltung_id, student_uid, lehreinheit_id
|
* @param lehrveranstaltung_id, student_uid, lehreinheit_id
|
||||||
*
|
*
|
||||||
* @return void
|
* @return values on success
|
||||||
|
* retval 0: pruefung inserted
|
||||||
|
* reval 1: pruefung and zeugnisnote inserted
|
||||||
|
* retval 2: pruefung inserted, no insert Zeugnisnote
|
||||||
|
* (change after date of examination)
|
||||||
|
* retval 3: pruefung of type Termin2 inserted
|
||||||
|
* and pruefung of type Termin1 as well
|
||||||
|
* retval 5: prueufungen Termin 2 and 1 inserted
|
||||||
|
* and no insert Zeugnisnote (change after date of examination)
|
||||||
*/
|
*/
|
||||||
public function insertPruefung()
|
public function insertPruefung()
|
||||||
{
|
{
|
||||||
$this->insertOrUpdatePruefung();
|
$authUID = getAuthUID();
|
||||||
|
|
||||||
|
$this->load->library('form_validation');
|
||||||
|
|
||||||
|
$this->form_validation->set_rules('lehrveranstaltung_id', $this->p->t('lehre', 'lehrveranstaltung'), 'required', [
|
||||||
|
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'lehrveranstaltung')]),
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('lehreinheit_id', $this->p->t('lehre', 'lehreinheit'), 'required', [
|
||||||
|
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'lehreinheit')]),
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('pruefungstyp_kurzbz', $this->p->t('lehre', 'pruefung'), 'required', [
|
||||||
|
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('global', 'typ')]),
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules(
|
||||||
|
'datum',
|
||||||
|
$this->p->t('global', 'datum'),
|
||||||
|
['is_valid_date']
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($this->form_validation->run() == false)
|
||||||
|
{
|
||||||
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
|
}
|
||||||
|
|
||||||
|
//calculate studiensemester_kurzbz this from lehreinheit (case newPruefung)
|
||||||
|
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
|
||||||
|
if (!$studiensemester_kurzbz)
|
||||||
|
{
|
||||||
|
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||||
|
|
||||||
|
$result = $this->LehreinheitModel->load($this->input->post('lehreinheit_id'));
|
||||||
|
|
||||||
|
$lehreinheit = $this->getDataOrTerminateWithError($result);
|
||||||
|
$studiensemester_kurzbz = current($lehreinheit)->studiensemester_kurzbz;
|
||||||
|
|
||||||
|
if (isError($result))
|
||||||
|
{
|
||||||
|
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->PruefungModel->insert([
|
||||||
|
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
||||||
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
|
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
||||||
|
'datum' => $this->input->post('datum'),
|
||||||
|
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
||||||
|
'note' => $this->input->post('note'),
|
||||||
|
'anmerkung' => $this->input->post('anmerkung'),
|
||||||
|
'insertamum' => date('c'),
|
||||||
|
'insertvon' => $authUID,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
//check if existing zeugnisnote
|
||||||
|
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||||
|
|
||||||
|
$result = $this->ZeugnisnoteModel->loadWhere(array(
|
||||||
|
'lehrveranstaltung_id' => $this->input->post('lehrveranstaltung_id'),
|
||||||
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
|
'studiensemester_kurzbz' => $studiensemester_kurzbz));
|
||||||
|
|
||||||
|
if (isError($result))
|
||||||
|
{
|
||||||
|
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasData($result))
|
||||||
|
{
|
||||||
|
//insert zeugnisnote, if not existing
|
||||||
|
$result = $this->ZeugnisnoteModel->insert(array(
|
||||||
|
'lehrveranstaltung_id' => $this->input->post('lehrveranstaltung_id'),
|
||||||
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
|
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||||
|
'note' => $this->input->post('note'),
|
||||||
|
'uebernahmedatum' => date('c'),
|
||||||
|
'benotungsdatum' => $this->input->post('datum'),
|
||||||
|
'insertamum' => date('c'),
|
||||||
|
'insertvon' => $authUID
|
||||||
|
));
|
||||||
|
|
||||||
|
if (isError($result))
|
||||||
|
{
|
||||||
|
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
$this->terminateWithSuccess(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$return_code = 0;
|
||||||
|
|
||||||
|
//handling Termin1 if not existing
|
||||||
|
if($this->input->post('pruefungstyp_kurzbz') == "Termin2")
|
||||||
|
{
|
||||||
|
$resultP = $this->PruefungModel->loadWhere(array(
|
||||||
|
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
||||||
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
|
'pruefungstyp_kurzbz' => 'Termin1'));
|
||||||
|
|
||||||
|
if (isError($resultP))
|
||||||
|
{
|
||||||
|
$this->terminateWithError(getError($resultP), self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
if(!hasData($resultP))
|
||||||
|
{
|
||||||
|
//check if existing Zeugnisnote
|
||||||
|
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||||
|
$this->ZeugnisnoteModel->addJoin('lehre.tbl_lehreinheit', 'lehrveranstaltung_id');
|
||||||
|
|
||||||
|
$resultP = $this->ZeugnisnoteModel->loadWhere(array(
|
||||||
|
'lehrveranstaltung_id' => $this->input->post('lehrveranstaltung_id'),
|
||||||
|
'student_uid' => $this->input->input->post('student_uid'),
|
||||||
|
'lehre.tbl_zeugnisnote.studiensemester_kurzbz' => $studiensemester_kurzbz));
|
||||||
|
if (isError($resultP))
|
||||||
|
{
|
||||||
|
$this->terminateWithError(getError($resultP), self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
if (!hasData($resultP))
|
||||||
|
{
|
||||||
|
$this->terminateWithError("Zeugnisnote existiert nicht", self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
$dataNote = current(getData($resultP));
|
||||||
|
|
||||||
|
$resultN = $this->PruefungModel->insert([
|
||||||
|
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
||||||
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
|
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
||||||
|
'datum' => $dataNote->benotungsdatum,
|
||||||
|
'pruefungstyp_kurzbz' => 'Termin1',
|
||||||
|
'note' => $dataNote->note,
|
||||||
|
'punkte' => $dataNote->punkte,
|
||||||
|
'anmerkung' => 'automatisiert aus Zeugnisnote erstellt',
|
||||||
|
'insertamum' => date('c'),
|
||||||
|
'insertvon' => $authUID,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (isError($resultN)) {
|
||||||
|
$this->terminateWithError(getError($resultN), self::ERROR_TYPE_GENERAL);
|
||||||
|
}
|
||||||
|
$return_code = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$note = current(getData($result));
|
||||||
|
$uebernahmedatum = new DateTime($note->uebernahmedatum);
|
||||||
|
$benotungsdatum = new DateTime($note->benotungsdatum);
|
||||||
|
|
||||||
|
$checkDate = $uebernahmedatum === '' || $benotungsdatum > $uebernahmedatum
|
||||||
|
? $benotungsdatum
|
||||||
|
: $uebernahmedatum;
|
||||||
|
|
||||||
|
if ($checkDate >= $this->input->post('datum') && $note !== $note->note)
|
||||||
|
{
|
||||||
|
$this->terminateWithSuccess($return_code + 2);
|
||||||
|
}
|
||||||
|
$this->terminateWithSuccess($return_code + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -187,6 +348,8 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
* @param pruefung_id
|
* @param pruefung_id
|
||||||
*
|
*
|
||||||
* @return success or error
|
* @return success or error
|
||||||
|
*
|
||||||
|
* no impact on lehre.tbl_zeugnisnote
|
||||||
*/
|
*/
|
||||||
public function updatePruefung($pruefung_id)
|
public function updatePruefung($pruefung_id)
|
||||||
{
|
{
|
||||||
@@ -196,7 +359,48 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
if (!$oldpruefung)
|
if (!$oldpruefung)
|
||||||
show_404(); // Pruefung that should be updated does not exist
|
show_404(); // Pruefung that should be updated does not exist
|
||||||
|
|
||||||
$this->insertOrUpdatePruefung($pruefung_id);
|
$authUID = getAuthUID();
|
||||||
|
|
||||||
|
$this->load->library('form_validation');
|
||||||
|
|
||||||
|
$this->form_validation->set_rules('lehrveranstaltung_id', $this->p->t('lehre', 'lehrveranstaltung'), 'required', [
|
||||||
|
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'lehrveranstaltung')]),
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('lehreinheit_id', $this->p->t('lehre', 'lehreinheit'), 'required', [
|
||||||
|
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'lehreinheit')]),
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('pruefungstyp_kurzbz', $this->p->t('lehre', 'pruefung'), 'required', [
|
||||||
|
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('global', 'typ')]),
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules(
|
||||||
|
'datum',
|
||||||
|
$this->p->t('global', 'datum'),
|
||||||
|
['is_valid_date']
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($this->form_validation->run() == false)
|
||||||
|
{
|
||||||
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->PruefungModel->update(
|
||||||
|
[
|
||||||
|
'pruefung_id' => $pruefung_id
|
||||||
|
],
|
||||||
|
[ 'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
||||||
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
|
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
||||||
|
'note' => $this->input->post('note'),
|
||||||
|
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
||||||
|
'datum' => $this->input->post('datum'),
|
||||||
|
'anmerkung' => $this->input->post('anmerkung'),
|
||||||
|
'updatevon' => $authUID,
|
||||||
|
'updateamum' => date('c'),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
return $this->outputJsonSuccess(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -370,200 +574,4 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
|
|
||||||
return $this->terminateWithSuccess($data);
|
return $this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function insertOrUpdatePruefung($pruefung_id=null)
|
|
||||||
{
|
|
||||||
$authUID = getAuthUID();
|
|
||||||
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('lehreinheit_id', $this->p->t('lehre', 'lehreinheit'), 'required', [
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'lehreinheit')]),
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('pruefungstyp_kurzbz', $this->p->t('lehre', 'pruefung'), 'required', [
|
|
||||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('global', 'typ')]),
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'datum',
|
|
||||||
$this->p->t('global', 'datum'),
|
|
||||||
['is_valid_date']
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($this->form_validation->run() == false)
|
|
||||||
{
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
|
||||||
|
|
||||||
$this->PruefungModel->db->trans_start();
|
|
||||||
|
|
||||||
if ($this->input->post('pruefungstyp_kurzbz') == "Termin2")
|
|
||||||
{
|
|
||||||
//Wenn ein 2. Termin angelegt wird, und kein 1. Termin vorhanden ist,
|
|
||||||
//dann wird auch ein 1. Termin angelegt mit der derzeitigen Zeugnisnote
|
|
||||||
$resultP = $this->PruefungModel->loadWhere(array(
|
|
||||||
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'pruefungstyp_kurzbz' => 'Termin1'));
|
|
||||||
|
|
||||||
$termin1 = $this->getDataOrTerminateWithError($resultP);
|
|
||||||
if (!$termin1)
|
|
||||||
{
|
|
||||||
//check if existing Zeugnisnote
|
|
||||||
$this->ZeugnisnoteModel->addJoin('lehre.tbl_lehreinheit', 'lehrveranstaltung_id');
|
|
||||||
|
|
||||||
$this->ZeugnisnoteModel->db->where(
|
|
||||||
'lehre.tbl_zeugnisnote.studiensemester_kurzbz',
|
|
||||||
'lehre.tbl_lehreinheit.studiensemester_kurzbz',
|
|
||||||
false
|
|
||||||
);
|
|
||||||
$resultP = $this->ZeugnisnoteModel->loadWhere(array(
|
|
||||||
'lehrveranstaltung_id' => $this->input->post('lehrveranstaltung_id'),
|
|
||||||
'student_uid' => $this->input->post('student_uid')
|
|
||||||
));
|
|
||||||
|
|
||||||
$zeugnisnoten = $this->getDataOrTerminateWithError($resultP);
|
|
||||||
if ($zeugnisnoten)
|
|
||||||
{
|
|
||||||
$zeugnisnote = current($zeugnisnoten);
|
|
||||||
|
|
||||||
$resultN = $this->PruefungModel->insert([
|
|
||||||
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
|
||||||
'datum' => $zeugnisnote->benotungsdatum,
|
|
||||||
'pruefungstyp_kurzbz' => 'Termin1',
|
|
||||||
'note' => $zeugnisnote->note,
|
|
||||||
'punkte' => $zeugnisnote->punkte,
|
|
||||||
'anmerkung' => 'automatisiert aus Zeugnisnote erstellt',
|
|
||||||
'insertamum' => date('c'),
|
|
||||||
'insertvon' => $authUID,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($resultN);
|
|
||||||
}
|
|
||||||
//Wenn keine Zeugnisnote vorhanden ist, dann wird kein
|
|
||||||
//1.Termin angelegt
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$datum = $this->input->post('datum') == '' ? null : $this->input->post('datum');
|
|
||||||
if(intval($pruefung_id) > 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
$result = $this->PruefungModel->update(
|
|
||||||
[
|
|
||||||
'pruefung_id' => $pruefung_id
|
|
||||||
],
|
|
||||||
[ 'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
|
||||||
'note' => $this->input->post('note'),
|
|
||||||
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
|
||||||
'datum' => $datum,
|
|
||||||
'anmerkung' => $this->input->post('anmerkung'),
|
|
||||||
'updatevon' => $authUID,
|
|
||||||
'updateamum' => date('c'),
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$result = $this->PruefungModel->insert([
|
|
||||||
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
|
||||||
'datum' => $datum,
|
|
||||||
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
|
||||||
'note' => $this->input->post('note'),
|
|
||||||
'anmerkung' => $this->input->post('anmerkung'),
|
|
||||||
'insertamum' => date('c'),
|
|
||||||
'insertvon' => $authUID,
|
|
||||||
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
//get studiensemester_kurzbz and lehreveranstaltung_id from lehreinheit
|
|
||||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
|
||||||
|
|
||||||
$result = $this->LehreinheitModel->load($this->input->post('lehreinheit_id'));
|
|
||||||
|
|
||||||
$lehreinheiten = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
if (!$lehreinheiten) {
|
|
||||||
$this->terminateWithValidationErrors([
|
|
||||||
'lehreinheit_id' => $this->p->t('ui', 'error_fieldNotFound', [
|
|
||||||
'field' => $this->p->t('lehre', 'lehreinheit')
|
|
||||||
])
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$lehreinheit = current($lehreinheiten);
|
|
||||||
$studiensemester_kurzbz = $lehreinheit->studiensemester_kurzbz;
|
|
||||||
$lehrveranstaltung_id = $lehreinheit->lehrveranstaltung_id;
|
|
||||||
|
|
||||||
//check if existing zeugnisnote
|
|
||||||
$result = $this->ZeugnisnoteModel->loadWhere(array(
|
|
||||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
|
||||||
));
|
|
||||||
|
|
||||||
$zeugnisnoten = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
if (!$zeugnisnoten)
|
|
||||||
{
|
|
||||||
//insert zeugnisnote, if not existing
|
|
||||||
$result = $this->ZeugnisnoteModel->insert(array(
|
|
||||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
|
||||||
'note' => $this->input->post('note'),
|
|
||||||
'uebernahmedatum' => date('c'),
|
|
||||||
'benotungsdatum' => $datum,
|
|
||||||
'insertamum' => date('c'),
|
|
||||||
'insertvon' => $authUID,
|
|
||||||
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->PruefungModel->db->trans_complete();
|
|
||||||
$this->terminateWithSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
$note = current($zeugnisnoten);
|
|
||||||
$uebernahmedatum = new DateTime($note->uebernahmedatum);
|
|
||||||
$benotungsdatum = new DateTime($note->benotungsdatum);
|
|
||||||
$pruefungsdatum = new DateTime($this->input->post('datum'));
|
|
||||||
|
|
||||||
$checkDate = $note->uebernahmedatum === '' || $benotungsdatum > $uebernahmedatum
|
|
||||||
? $benotungsdatum
|
|
||||||
: $uebernahmedatum;
|
|
||||||
|
|
||||||
if ($checkDate > $pruefungsdatum && $this->input->post('note') !== $note->note)
|
|
||||||
{
|
|
||||||
$this->PruefungModel->db->trans_complete();
|
|
||||||
$this->terminateWithSuccess($this->p->t('exam', 'hinweis_changeAfterExamDate'));
|
|
||||||
}
|
|
||||||
|
|
||||||
//update zeugnisnote, if existing and valid datum
|
|
||||||
$result = $this->ZeugnisnoteModel->update([
|
|
||||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
|
||||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
|
||||||
], [
|
|
||||||
'note' => $this->input->post('note'),
|
|
||||||
'uebernahmedatum' => date('c'),
|
|
||||||
'benotungsdatum' => $datum,
|
|
||||||
'updateamum' => date('c'),
|
|
||||||
'updatevon' => $authUID,
|
|
||||||
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->PruefungModel->db->trans_complete();
|
|
||||||
$this->terminateWithSuccess();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,8 +114,9 @@ class Status extends FHCAPI_Controller
|
|||||||
$this->load->model('codex/Bismeldestichtag_model', 'BismeldestichtagModel');
|
$this->load->model('codex/Bismeldestichtag_model', 'BismeldestichtagModel');
|
||||||
|
|
||||||
$result = $this->BismeldestichtagModel->getLastReachedMeldestichtag();
|
$result = $this->BismeldestichtagModel->getLastReachedMeldestichtag();
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$this->terminateWithSuccess(hasData($result) ? getData($result) : array());
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isLastStatus($prestudent_id)
|
public function isLastStatus($prestudent_id)
|
||||||
@@ -295,7 +296,7 @@ class Status extends FHCAPI_Controller
|
|||||||
}],
|
}],
|
||||||
//Check if Rolle already exists
|
//Check if Rolle already exists
|
||||||
['rolle_doesnt_exist', function () use ($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) {
|
['rolle_doesnt_exist', function () use ($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) {
|
||||||
if (!$status_kurzbz || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->PrestudentstatusModel->load([$ausbildungssemester, $studiensemester_kurzbz, $status_kurzbz, $prestudent_id]);
|
$result = $this->PrestudentstatusModel->load([$ausbildungssemester, $studiensemester_kurzbz, $status_kurzbz, $prestudent_id]);
|
||||||
@@ -636,7 +637,7 @@ class Status extends FHCAPI_Controller
|
|||||||
|
|
||||||
$this->load->library('PrestudentLib');
|
$this->load->library('PrestudentLib');
|
||||||
|
|
||||||
$resFirstStudent = $this->prestudentlib->setFirstStudent(
|
$this->prestudentlib->setFirstStudent(
|
||||||
$prestudent_id,
|
$prestudent_id,
|
||||||
$lastAufgenommener->studiensemester_kurzbz,
|
$lastAufgenommener->studiensemester_kurzbz,
|
||||||
$lastAufgenommener->ausbildungssemester,
|
$lastAufgenommener->ausbildungssemester,
|
||||||
@@ -645,8 +646,9 @@ class Status extends FHCAPI_Controller
|
|||||||
$this->input->post('statusgrund_id')
|
$this->input->post('statusgrund_id')
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->db->trans_complete();
|
$this->getDataOrTerminateWithError($result);
|
||||||
$this->getDataOrTerminateWithError($resFirstStudent);
|
|
||||||
|
$this->db->trans_commit();
|
||||||
|
|
||||||
return $this->outputJsonSuccess(true);
|
return $this->outputJsonSuccess(true);
|
||||||
}
|
}
|
||||||
@@ -901,7 +903,7 @@ class Status extends FHCAPI_Controller
|
|||||||
|
|
||||||
$this->form_validation->set_rules('_default', '', [
|
$this->form_validation->set_rules('_default', '', [
|
||||||
['rolle_doesnt_exist', function () use ($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) {
|
['rolle_doesnt_exist', function () use ($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) {
|
||||||
if (!$status_kurzbz || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->PrestudentstatusModel->load([$ausbildungssemester, $studiensemester_kurzbz, $status_kurzbz, $prestudent_id]);
|
$result = $this->PrestudentstatusModel->load([$ausbildungssemester, $studiensemester_kurzbz, $status_kurzbz, $prestudent_id]);
|
||||||
@@ -918,7 +920,7 @@ class Status extends FHCAPI_Controller
|
|||||||
) {
|
) {
|
||||||
if ($isBerechtigtNoStudstatusCheck)
|
if ($isBerechtigtNoStudstatusCheck)
|
||||||
return true; // Skip if access right says so
|
return true; // Skip if access right says so
|
||||||
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->prestudentstatuschecklib->checkStatusHistoryTimesequence(
|
$result = $this->prestudentstatuschecklib->checkStatusHistoryTimesequence(
|
||||||
@@ -943,7 +945,7 @@ class Status extends FHCAPI_Controller
|
|||||||
) {
|
) {
|
||||||
if ($isBerechtigtNoStudstatusCheck)
|
if ($isBerechtigtNoStudstatusCheck)
|
||||||
return true; // Skip if access right says so
|
return true; // Skip if access right says so
|
||||||
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->prestudentstatuschecklib->checkStatusHistoryLaststatus(
|
$result = $this->prestudentstatuschecklib->checkStatusHistoryLaststatus(
|
||||||
@@ -968,7 +970,7 @@ class Status extends FHCAPI_Controller
|
|||||||
) {
|
) {
|
||||||
if ($isBerechtigtNoStudstatusCheck)
|
if ($isBerechtigtNoStudstatusCheck)
|
||||||
return true; // Skip if access right says so
|
return true; // Skip if access right says so
|
||||||
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->prestudentstatuschecklib->checkStatusHistoryUnterbrechersemester(
|
$result = $this->prestudentstatuschecklib->checkStatusHistoryUnterbrechersemester(
|
||||||
@@ -993,7 +995,7 @@ class Status extends FHCAPI_Controller
|
|||||||
) {
|
) {
|
||||||
if ($isBerechtigtNoStudstatusCheck)
|
if ($isBerechtigtNoStudstatusCheck)
|
||||||
return true; // Skip if access right says so
|
return true; // Skip if access right says so
|
||||||
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->prestudentstatuschecklib->checkStatusHistoryAbbrechersemester(
|
$result = $this->prestudentstatuschecklib->checkStatusHistoryAbbrechersemester(
|
||||||
@@ -1018,7 +1020,7 @@ class Status extends FHCAPI_Controller
|
|||||||
) {
|
) {
|
||||||
if ($isBerechtigtNoStudstatusCheck)
|
if ($isBerechtigtNoStudstatusCheck)
|
||||||
return true; // Skip if access right says so
|
return true; // Skip if access right says so
|
||||||
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !isset($ausbildungssemester) || $ausbildungssemester === '')
|
if (!$status_kurzbz || !$datum || !$studiensemester_kurzbz || !$ausbildungssemester)
|
||||||
return true; // Error will be handled by the required statements above
|
return true; // Error will be handled by the required statements above
|
||||||
|
|
||||||
$result = $this->prestudentstatuschecklib->checkStatusHistoryDiplomant(
|
$result = $this->prestudentstatuschecklib->checkStatusHistoryDiplomant(
|
||||||
@@ -1077,24 +1079,6 @@ class Status extends FHCAPI_Controller
|
|||||||
$this->terminateWithSuccess(true);
|
$this->terminateWithSuccess(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkForCriticalChangesBis($oldstatus)
|
|
||||||
{
|
|
||||||
$changedFields = array();
|
|
||||||
$allowedFields = array('anmerkung', 'statusgrund_id');
|
|
||||||
$oldstatus_array = get_object_vars($oldstatus);
|
|
||||||
foreach($oldstatus_array as $key => $oldValue)
|
|
||||||
{
|
|
||||||
$newValue = $this->input->post($key);
|
|
||||||
if( $newValue !== $oldValue )
|
|
||||||
{
|
|
||||||
$changedFields[] = $key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$criticalFieldsChanged = array_diff($changedFields, $allowedFields);
|
|
||||||
$hasCriticalChangesBis = count($criticalFieldsChanged) > 0 ? true : false;
|
|
||||||
return $hasCriticalChangesBis;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates a status entry
|
* Updates a status entry
|
||||||
*
|
*
|
||||||
@@ -1119,7 +1103,6 @@ class Status extends FHCAPI_Controller
|
|||||||
|
|
||||||
$oldstatus = current($oldstatus);
|
$oldstatus = current($oldstatus);
|
||||||
|
|
||||||
$hasCriticalChangesBis = $this->checkForCriticalChangesBis($oldstatus);
|
|
||||||
|
|
||||||
$isBerechtigtNoStudstatusCheck = $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung');
|
$isBerechtigtNoStudstatusCheck = $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung');
|
||||||
$isBerechtigtBasisPrestudentstatus = $this->permissionlib->isBerechtigt('basis/prestudentstatus');
|
$isBerechtigtBasisPrestudentstatus = $this->permissionlib->isBerechtigt('basis/prestudentstatus');
|
||||||
@@ -1130,6 +1113,7 @@ class Status extends FHCAPI_Controller
|
|||||||
$ausbildungssemester = $this->input->post('ausbildungssemester') ?: $oldstatus->ausbildungssemester;
|
$ausbildungssemester = $this->input->post('ausbildungssemester') ?: $oldstatus->ausbildungssemester;
|
||||||
$datum = $this->input->post('datum') ?: $oldstatus->datum;
|
$datum = $this->input->post('datum') ?: $oldstatus->datum;
|
||||||
|
|
||||||
|
|
||||||
//Form Validation
|
//Form Validation
|
||||||
$this->load->library('form_validation');
|
$this->load->library('form_validation');
|
||||||
|
|
||||||
@@ -1152,15 +1136,9 @@ class Status extends FHCAPI_Controller
|
|||||||
$this->p->t('global', 'datum'),
|
$this->p->t('global', 'datum'),
|
||||||
[
|
[
|
||||||
'is_valid_date',
|
'is_valid_date',
|
||||||
['meldestichtag_not_exceeded', function ($value) use ($isBerechtigtNoStudstatusCheck, $hasCriticalChangesBis){
|
['meldestichtag_not_exceeded', function ($value) use ($isBerechtigtNoStudstatusCheck) {
|
||||||
if ($isBerechtigtNoStudstatusCheck)
|
if ($isBerechtigtNoStudstatusCheck)
|
||||||
{
|
return true; // Skip if access right says so
|
||||||
return true; // Skip if access right says so*/
|
|
||||||
}
|
|
||||||
if (!$hasCriticalChangesBis) {
|
|
||||||
return true; // Skip if no critical changes were made
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$value)
|
if (!$value)
|
||||||
return true; // Error will be handled by the required statement above
|
return true; // Error will be handled by the required statement above
|
||||||
|
|
||||||
@@ -1364,7 +1342,6 @@ class Status extends FHCAPI_Controller
|
|||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
'updatevon' => $authUID
|
'updatevon' => $authUID
|
||||||
];
|
];
|
||||||
$nullableFields = ['statusgrund_id', 'anmerkung', 'rt_stufe'];
|
|
||||||
foreach ([
|
foreach ([
|
||||||
'orgform_kurzbz',
|
'orgform_kurzbz',
|
||||||
'anmerkung',
|
'anmerkung',
|
||||||
@@ -1373,17 +1350,8 @@ class Status extends FHCAPI_Controller
|
|||||||
'rt_stufe',
|
'rt_stufe',
|
||||||
'statusgrund_id'
|
'statusgrund_id'
|
||||||
] as $key)
|
] as $key)
|
||||||
{
|
if ($this->input->post($key))
|
||||||
if (in_array($key, $nullableFields))
|
|
||||||
{
|
|
||||||
$updateData[$key] = ($this->input->post($key) === '') ? null : $this->input->post($key);
|
|
||||||
}
|
|
||||||
else if ($this->input->post($key))
|
|
||||||
{
|
|
||||||
$updateData[$key] = $this->input->post($key);
|
$updateData[$key] = $this->input->post($key);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($this->input->post('bestaetigtam')) {
|
if ($this->input->post('bestaetigtam')) {
|
||||||
$updateData['bestaetigtam'] = $this->input->post('bestaetigtam');
|
$updateData['bestaetigtam'] = $this->input->post('bestaetigtam');
|
||||||
|
|||||||
@@ -36,8 +36,7 @@ class Student extends FHCAPI_Controller
|
|||||||
parent::__construct([
|
parent::__construct([
|
||||||
'get' => ['admin:r', 'assistenz:r'],
|
'get' => ['admin:r', 'assistenz:r'],
|
||||||
'save' => ['admin:rw', 'assistenz:rw'],
|
'save' => ['admin:rw', 'assistenz:rw'],
|
||||||
'saveStudent' => ['admin:rw', 'assistenz:rw'],
|
'check' => ['admin:rw', 'assistenz:rw'],
|
||||||
'getPerson' => ['admin:rw', 'assistenz:rw'],
|
|
||||||
'add' => ['admin:rw', 'assistenz:rw'] // TODO(chris): extra permissions
|
'add' => ['admin:rw', 'assistenz:rw'] // TODO(chris): extra permissions
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -56,7 +55,7 @@ class Student extends FHCAPI_Controller
|
|||||||
|
|
||||||
// Load language phrases
|
// Load language phrases
|
||||||
$this->loadPhrases([
|
$this->loadPhrases([
|
||||||
'ui', 'lehre', 'person'
|
'ui', 'lehre'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,10 +107,6 @@ class Student extends FHCAPI_Controller
|
|||||||
$this->PrestudentModel->addSelect('p.matr_nr');
|
$this->PrestudentModel->addSelect('p.matr_nr');
|
||||||
$this->PrestudentModel->addSelect('p.anrede');
|
$this->PrestudentModel->addSelect('p.anrede');
|
||||||
$this->PrestudentModel->addSelect('p.zugangscode');
|
$this->PrestudentModel->addSelect('p.zugangscode');
|
||||||
if($this->permissionlib->isBerechtigt('student/bpk'))
|
|
||||||
{
|
|
||||||
$this->PrestudentModel->addSelect('p.bpk');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined('ACTIVE_ADDONS') && strpos(ACTIVE_ADDONS, 'bewerbung') !== false) {
|
if (defined('ACTIVE_ADDONS') && strpos(ACTIVE_ADDONS, 'bewerbung') !== false) {
|
||||||
$this->PrestudentModel->addSelect(
|
$this->PrestudentModel->addSelect(
|
||||||
@@ -121,28 +116,21 @@ class Student extends FHCAPI_Controller
|
|||||||
WHERE kontakttyp='email'
|
WHERE kontakttyp='email'
|
||||||
AND person_id=p.person_id
|
AND person_id=p.person_id
|
||||||
AND zustellung
|
AND zustellung
|
||||||
ORDER BY kontakt_id DESC
|
ORDER BY kontakt_id
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) AS email_privat",
|
) AS email_privat",
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
$this->PrestudentModel->addSelect(
|
|
||||||
"(
|
|
||||||
SELECT kontakt
|
|
||||||
FROM public.tbl_kontakt
|
|
||||||
WHERE kontakttyp='email_unverifiziert'
|
|
||||||
AND person_id=p.person_id
|
|
||||||
AND zustellung
|
|
||||||
ORDER BY kontakt_id DESC
|
|
||||||
LIMIT 1
|
|
||||||
) AS email_privat_unverified",
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
$this->PrestudentModel->addSelect(
|
$this->PrestudentModel->addSelect(
|
||||||
"public.get_rolle_prestudent(public.tbl_prestudent.prestudent_id, "
|
"(
|
||||||
. $this->PrestudentModel->escape($studiensemester_kurzbz)
|
SELECT status_kurzbz
|
||||||
. ") AS statusofsemester"
|
FROM public.tbl_prestudentstatus pss
|
||||||
|
WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id
|
||||||
|
AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
|
||||||
|
ORDER BY GREATEST(pss.datum, '0001-01-01') DESC
|
||||||
|
LIMIT 1
|
||||||
|
) AS statusofsemester"
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id', 'LEFT');
|
$this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id', 'LEFT');
|
||||||
@@ -244,6 +232,7 @@ class Student extends FHCAPI_Controller
|
|||||||
|
|
||||||
$person_id = $person ? current($person)->person_id : null;
|
$person_id = $person ? current($person)->person_id : null;
|
||||||
|
|
||||||
|
|
||||||
$array_allowed_props_lehrverband = ['verband', 'semester', 'gruppe'];
|
$array_allowed_props_lehrverband = ['verband', 'semester', 'gruppe'];
|
||||||
$update_lehrverband = array();
|
$update_lehrverband = array();
|
||||||
foreach ($array_allowed_props_lehrverband as $prop) {
|
foreach ($array_allowed_props_lehrverband as $prop) {
|
||||||
@@ -296,10 +285,6 @@ class Student extends FHCAPI_Controller
|
|||||||
$fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
|
$fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
|
||||||
$update_person[$prop] = $fotoval;
|
$update_person[$prop] = $fotoval;
|
||||||
}
|
}
|
||||||
else if ($prop == 'gebdatum')
|
|
||||||
{
|
|
||||||
$update_person[$prop] = ($val == '') ? null : $val;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$update_person[$prop] = $val;
|
$update_person[$prop] = $val;
|
||||||
@@ -324,10 +309,6 @@ class Student extends FHCAPI_Controller
|
|||||||
foreach ($array_allowed_props_benutzer as $prop) {
|
foreach ($array_allowed_props_benutzer as $prop) {
|
||||||
$val = $this->input->post($prop);
|
$val = $this->input->post($prop);
|
||||||
if ($val !== null) {
|
if ($val !== null) {
|
||||||
if($prop === 'alias' && $val === '')
|
|
||||||
{
|
|
||||||
$val = null;
|
|
||||||
}
|
|
||||||
$update_benutzer[$prop] = $val;
|
$update_benutzer[$prop] = $val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -443,32 +424,7 @@ class Student extends FHCAPI_Controller
|
|||||||
), ''));
|
), ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function check()
|
||||||
* Saves data to a prestudent using their student_uid
|
|
||||||
*
|
|
||||||
* @param string $student_uid
|
|
||||||
* @param string $studiensemester_kurzbz
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function saveStudent($student_uid, $studiensemester_kurzbz)
|
|
||||||
{
|
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
|
|
||||||
$result = $this->StudentModel->load([$student_uid]);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
if (!$data)
|
|
||||||
show_404(); // No Student with that ID
|
|
||||||
|
|
||||||
$student = current($data);
|
|
||||||
|
|
||||||
$this->checkPermissionsForPrestudent($student->prestudent_id, ['admin:rw', 'assistenz:rw']);
|
|
||||||
|
|
||||||
return $this->save($student->prestudent_id, $studiensemester_kurzbz);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getPerson()
|
|
||||||
{
|
{
|
||||||
$this->load->library('form_validation');
|
$this->load->library('form_validation');
|
||||||
|
|
||||||
@@ -486,55 +442,21 @@ class Student extends FHCAPI_Controller
|
|||||||
|
|
||||||
$this->load->model('person/Person_model', 'PersonModel');
|
$this->load->model('person/Person_model', 'PersonModel');
|
||||||
|
|
||||||
$this->PersonModel->addSelect(
|
|
||||||
'person_id, vorname, nachname, vornamen, wahlname, gebdatum, staatsbuergerschaft, geburtsnation, sprache, anrede,
|
|
||||||
titelpost, titelpre, gebort, gebzeit, homepage, geschlecht, matr_nr,
|
|
||||||
aktiv, unruly, tbl_geschlecht.bezeichnung_mehrsprachig AS geschlecht_bezeichnung'
|
|
||||||
);
|
|
||||||
$this->PersonModel->addJoin('public.tbl_geschlecht', 'geschlecht');
|
|
||||||
|
|
||||||
if ($gebdatum)
|
if ($gebdatum)
|
||||||
$this->PersonModel->db->where('gebdatum', (new DateTime($gebdatum))->format('Y-m-d'));
|
$this->PersonModel->db->where('gebdatum', (new DateTime($gebdatum))->format('Y-m-d'));
|
||||||
if ($vorname && $nachname) {
|
if ($vorname && $nachname) {
|
||||||
$this->PersonModel->db->or_group_start();
|
$this->PersonModel->db->or_group_start();
|
||||||
$this->PersonModel->db->where('LOWER(nachname)', 'LOWER(' . $this->PersonModel->db->escape(trim($nachname)) . ')', false);
|
$this->PersonModel->db->where('LOWER(nachname)', 'LOWER(' . $this->PersonModel->db->escape($nachname) . ')', false);
|
||||||
$this->PersonModel->db->where('LOWER(vorname)', 'LOWER(' . $this->PersonModel->db->escape(trim($vorname)) . ')', false);
|
$this->PersonModel->db->where('LOWER(vorname)', 'LOWER(' . $this->PersonModel->db->escape($vorname) . ')', false);
|
||||||
$this->PersonModel->db->group_end();
|
$this->PersonModel->db->group_end();
|
||||||
} elseif ($nachname) {
|
} elseif ($nachname) {
|
||||||
$this->PersonModel->db->or_where('LOWER(nachname)', 'LOWER(' . $this->PersonModel->escape(trim($nachname)) . ')', false);
|
$this->PersonModel->db->or_where('LOWER(nachname)', 'LOWER(' . $this->PersonModel->escape($nachname) . ')', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->PersonModel->load();
|
$result = $this->PersonModel->load();
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$this->load->model('person/Adresse_model', 'AdresseModel');
|
|
||||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
|
||||||
|
|
||||||
foreach ($data as $person)
|
|
||||||
{
|
|
||||||
// get adresses
|
|
||||||
$langIdx = $this->_getLanguageIndex() - 1;
|
|
||||||
$person->geschlecht_bezeichnung = isset($person->geschlecht_bezeichnung[$langIdx]) ? $person->geschlecht_bezeichnung[$langIdx] : '';
|
|
||||||
|
|
||||||
// get Adresse
|
|
||||||
$this->AdresseModel->addOrder('heimatadresse', 'DESC');
|
|
||||||
$this->AdresseModel->addOrder('zustelladresse', 'DESC');
|
|
||||||
$this->AdresseModel->addOrder('adresse_id', 'DESC');
|
|
||||||
$result = $this->AdresseModel->loadWhere(['person_id' => $person->person_id]);
|
|
||||||
|
|
||||||
$adressen = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$person->adressen = $adressen;
|
|
||||||
|
|
||||||
// get status
|
|
||||||
$result = $this->PrestudentstatusModel->getLastStatusPerson($person->person_id);
|
|
||||||
|
|
||||||
$status = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$person->status = $status;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -543,52 +465,63 @@ class Student extends FHCAPI_Controller
|
|||||||
if (!$this->input->post('person_id')) {
|
if (!$this->input->post('person_id')) {
|
||||||
if (!isset($_POST['address']) || !is_array($_POST['address']))
|
if (!isset($_POST['address']) || !is_array($_POST['address']))
|
||||||
$_POST['address'] = [];
|
$_POST['address'] = [];
|
||||||
|
$_POST['address']['func'] = 1;
|
||||||
}
|
}
|
||||||
if ($this->input->post('incoming')) {
|
if ($this->input->post('incoming')) {
|
||||||
$_POST['ausbildungssemester'] = 0;
|
$_POST['ausbildungssemester'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_validate();
|
$this->load->library('form_validation');
|
||||||
|
|
||||||
|
$this->form_validation->set_rules('nachname', 'Nachname', 'callback_requiredIfNotPersonId', [
|
||||||
|
'requiredIfNotPersonId' => $this->p->t('ui', 'error_required')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('geschlecht', 'Geschlecht', 'callback_requiredIfNotPersonId', [
|
||||||
|
'requiredIfNotPersonId' => $this->p->t('ui', 'error_required')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'callback_isValidDate', [
|
||||||
|
'isValidDate' => $this->p->t('ui', 'error_invalid_date')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('address[func]', 'Address', 'required|integer|less_than[2]|greater_than[-2]');
|
||||||
|
$this->form_validation->set_rules('address[plz]', 'PLZ', 'callback_requiredIfAddressFunc', [
|
||||||
|
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('address[gemeinde]', 'Gemeinde', 'callback_requiredIfAddressFunc', [
|
||||||
|
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('address[ort]', 'Ort', 'callback_requiredIfAddressFunc', [
|
||||||
|
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('address[address]', 'Adresse', 'callback_requiredIfAddressFunc', [
|
||||||
|
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||||
|
]);
|
||||||
|
$this->form_validation->set_rules('email', 'E-Mail', 'valid_email');
|
||||||
|
$this->form_validation->set_rules('studiengang_kz', 'Studiengang', 'required');
|
||||||
|
$this->form_validation->set_rules('studiensemester_kurzbz', 'Studiensemester', 'required');
|
||||||
|
$this->form_validation->set_rules('ausbildungssemester', 'Ausbildungssemester', 'required|integer|less_than[9]|greater_than[-1]');
|
||||||
|
// TODO(chris): validate studienplan with studiengang, semester and orgform?
|
||||||
|
// TODO(chris): validate person_id, studiengang_kz, studiensemester_kurzbz, orgform_kurzbz, nation, gemeinde, ort, geschlecht?
|
||||||
|
|
||||||
|
if (!$this->form_validation->run())
|
||||||
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
|
|
||||||
// TODO(chris): This should be in a library
|
// TODO(chris): This should be in a library
|
||||||
$this->load->model('crm/Student_model', 'StudentModel');
|
|
||||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||||
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
|
|
||||||
$this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
|
|
||||||
|
|
||||||
$this->load->library('PrestudentLib');
|
$this->db->trans_start();
|
||||||
|
|
||||||
$errors = [];
|
$result = $this->addInteressent();
|
||||||
$person_id = null;
|
|
||||||
|
|
||||||
$this->db->trans_begin();
|
$this->db->trans_complete();
|
||||||
|
|
||||||
$result = $this->_addPerson();
|
if ($this->db->trans_status() === FALSE)
|
||||||
if (isError($result)) $errors[] = getError($result);
|
$this->terminateWithError('TODO(chris): TEXT', self::ERROR_TYPE_GENERAL);
|
||||||
|
|
||||||
if (hasData($result))
|
$this->terminateWithSuccess($result);
|
||||||
{
|
|
||||||
$person_id = getData($result);
|
|
||||||
$result = $this->_addAdresse($person_id);
|
|
||||||
if (isError($result)) $errors[] = getError($result);
|
|
||||||
$result = $this->_addKontakt($person_id);
|
|
||||||
if (isError($result)) $errors[] = getError($result);
|
|
||||||
if (!$this->input->post('personOnly')) $result = $this->_addFirstPrestudentstatus($person_id);
|
|
||||||
if (isError($result)) $errors[] = getError($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->db->trans_status() === FALSE || !isEmptyArray($errors))
|
|
||||||
{
|
|
||||||
$this->db->trans_rollback();
|
|
||||||
$this->terminateWithError(isEmptyArray($errors) ? $this->p->t('stv', 'error_add_student') : $errors);
|
|
||||||
}
|
|
||||||
$this->db->trans_commit();
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($person_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _addPerson()
|
protected function addInteressent()
|
||||||
{
|
{
|
||||||
// Person anlegen wenn nötig
|
// Person anlegen wenn nötig
|
||||||
$person_id = $this->input->post('person_id');
|
$person_id = $this->input->post('person_id');
|
||||||
@@ -617,25 +550,19 @@ class Student extends FHCAPI_Controller
|
|||||||
if ($this->input->post('geschlecht'))
|
if ($this->input->post('geschlecht'))
|
||||||
$data['geschlecht'] = $this->input->post('geschlecht');
|
$data['geschlecht'] = $this->input->post('geschlecht');
|
||||||
if ($this->input->post('gebdatum'))
|
if ($this->input->post('gebdatum'))
|
||||||
$data['gebdatum'] = (new DateTime($this->input->post('gebdatum')))->format('Y-m-d');
|
$data['gebdatum'] = (new DateTime($this->input->post('datum_obj')))->format('Y-m-d');
|
||||||
if ($this->input->post('geburtsnation'))
|
if ($this->input->post('geburtsnation'))
|
||||||
$data['geburtsnation'] = $this->input->post('geburtsnation');
|
$data['geburtsnation'] = $this->input->post('geburtsnation');
|
||||||
if ($this->input->post('staatsbuergerschaft'))
|
if ($this->input->post('staatsbuergerschaft'))
|
||||||
$data['staatsbuergerschaft'] = $this->input->post('staatsbuergerschaft');
|
$data['staatsbuergerschaft'] = $this->input->post('staatsbuergerschaft');
|
||||||
|
|
||||||
return $this->PersonModel->insert($data);
|
$result = $this->PersonModel->insert($data);
|
||||||
|
$person_id = $this->getDataOrTerminateWithError($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
return success($person_id);
|
// Addresse anlegen
|
||||||
}
|
$anlegen = $this->input->post('address[func]');
|
||||||
|
if ($anlegen) {
|
||||||
private function _addAdresse($person_id)
|
|
||||||
{
|
|
||||||
// Addresse anlegen?
|
|
||||||
$anlegen = $this->input->post('address[checked]');
|
|
||||||
if ($anlegen === true)
|
|
||||||
{
|
|
||||||
// Adresse laden
|
|
||||||
$this->load->model('person/Adresse_model', 'AdresseModel');
|
$this->load->model('person/Adresse_model', 'AdresseModel');
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
@@ -647,45 +574,50 @@ class Student extends FHCAPI_Controller
|
|||||||
'typ' => 'h',
|
'typ' => 'h',
|
||||||
'zustelladresse' => true,
|
'zustelladresse' => true,
|
||||||
];
|
];
|
||||||
|
if ($anlegen < 0) { // Überschreiben
|
||||||
$this->AdresseModel->addSelect('adresse_id');
|
$this->AdresseModel->addOrder('zustelladresse', 'DESC');
|
||||||
|
$this->AdresseModel->addOrder('sort');
|
||||||
$result = $this->AdresseModel->loadWhere([
|
$result = $this->AdresseModel->loadWhere([
|
||||||
'person_id' => $person_id
|
'person_id' => $person_id
|
||||||
]);
|
]);
|
||||||
|
$address = $this->getDataOrTerminateWithError($result);
|
||||||
|
if ($address) {
|
||||||
|
$address = current($address);
|
||||||
|
|
||||||
if (isError($result)) return $result;
|
$data['updateamum'] = date('c');
|
||||||
|
$data['updatevon'] = getAuthUID();
|
||||||
// wenn neue Adresse, heimatadresse setzen
|
|
||||||
if (!hasData($result)) $data['heimatadresse'] = true;
|
|
||||||
|
|
||||||
|
$result = $this->AdresseModel->update($address->adresse_id, $data);
|
||||||
|
$this->getDataOrTerminateWithError($result);
|
||||||
|
} else {
|
||||||
|
//Wenn keine Adrese vorhanden ist dann eine neue Anlegen
|
||||||
|
$anlegen = 1;
|
||||||
|
$data['heimatadresse'] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($anlegen > 0) {
|
||||||
$data['person_id'] = $person_id;
|
$data['person_id'] = $person_id;
|
||||||
$data['insertamum'] = date('c');
|
$data['insertamum'] = date('c');
|
||||||
$data['insertvon'] = getAuthUID();
|
$data['insertvon'] = getAuthUID();
|
||||||
|
if (!isset($data['heimatadresse']))
|
||||||
|
$data['heimatadresse'] = !$this->input->post('person_id');
|
||||||
|
|
||||||
return $this->AdresseModel->insert($data);
|
$result = $this->AdresseModel->insert($data);
|
||||||
|
$this->getDataOrTerminateWithError($result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return success(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _addKontakt($person_id)
|
|
||||||
{
|
|
||||||
// Kontaktdaten
|
// Kontaktdaten
|
||||||
$kontaktdaten = [];
|
$kontaktdaten = [];
|
||||||
|
foreach (['email', 'telefon', 'mobil'] as $k) {
|
||||||
foreach (['email', 'telefon', 'mobil'] as $k)
|
|
||||||
{
|
|
||||||
$v = $this->input->post($k);
|
$v = $this->input->post($k);
|
||||||
if ($v)
|
if ($v)
|
||||||
$kontaktdaten[$k] = $v;
|
$kontaktdaten[$k] = $v;
|
||||||
}
|
}
|
||||||
|
if (count($kontaktdaten)) {
|
||||||
if (count($kontaktdaten))
|
|
||||||
{
|
|
||||||
$this->load->model('person/Kontakt_model', 'KontaktModel');
|
$this->load->model('person/Kontakt_model', 'KontaktModel');
|
||||||
|
|
||||||
foreach ($kontaktdaten as $typ => $kontakt)
|
foreach ($kontaktdaten as $typ => $kontakt) {
|
||||||
{
|
|
||||||
$data = [
|
$data = [
|
||||||
'person_id' => $person_id,
|
'person_id' => $person_id,
|
||||||
'kontakttyp' => $typ,
|
'kontakttyp' => $typ,
|
||||||
@@ -695,70 +627,83 @@ class Student extends FHCAPI_Controller
|
|||||||
'insertvon' => getAuthUID()
|
'insertvon' => getAuthUID()
|
||||||
];
|
];
|
||||||
$result = $this->KontaktModel->insert($data);
|
$result = $this->KontaktModel->insert($data);
|
||||||
if (isError($result)) return $result;
|
$this->getDataOrTerminateWithError($result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return success(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _addFirstPrestudentstatus($person_id)
|
|
||||||
{
|
|
||||||
// Prestudent anlegen
|
// Prestudent anlegen
|
||||||
|
$data = [
|
||||||
// Anmerkung with Ausbildungsart
|
'aufmerksamdurch_kurzbz' => 'k.A.',
|
||||||
$studiengang_kz = $this->input->post('studiengang_kz');
|
'person_id' => $person_id,
|
||||||
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
|
'studiengang_kz' => $this->input->post('studiengang_kz'),
|
||||||
|
'ausbildungcode' => $this->input->post('letzteausbildung'),
|
||||||
|
'anmerkung' => $this->input->post('anmerkungen'),
|
||||||
|
'reihungstestangetreten' => false,
|
||||||
|
'bismelden' => true
|
||||||
|
];
|
||||||
$ausbildungsart = $this->input->post('ausbildungsart');
|
$ausbildungsart = $this->input->post('ausbildungsart');
|
||||||
$anmerkung = $this->input->post('anmerkungen');
|
|
||||||
$foerderrelevant = null;
|
|
||||||
if ($ausbildungsart)
|
if ($ausbildungsart)
|
||||||
$anmerkung .= ' Ausbildungsart:' . $ausbildungsart;
|
$data['anmerkung'] .= ' Ausbildungsart:' . $ausbildungsart;
|
||||||
|
|
||||||
// Incomings und ausserordentliche sind bei Meldung nicht förderrelevant
|
// Incomings und ausserordentliche sind bei Meldung nicht förderrelevant
|
||||||
$incoming = $this->input->post('incoming');
|
$incoming = $this->input->post('incoming');
|
||||||
if ($incoming || substr($studiengang_kz, 0, 1) == '9')
|
if ($incoming || substr($data['studiengang_kz'], 0, 1) == '9')
|
||||||
$foerderrelevant = false;
|
$data['foerderrelevant'] = false;
|
||||||
|
// Wenn die Person schon im System erfasst ist, dann die ZGV des Datensatzes uebernehmen
|
||||||
|
$this->PrestudentModel->addOrder('zgvmas_code');
|
||||||
|
$this->PrestudentModel->addOrder('zgv_code', 'DESC');
|
||||||
|
$this->PrestudentModel->addLimit(1);
|
||||||
|
$result = $this->PrestudentModel->loadWhere([
|
||||||
|
'person_id' => $person_id
|
||||||
|
]);
|
||||||
|
$prestudent = $this->getDataOrTerminateWithError($result);
|
||||||
|
if ($prestudent) {
|
||||||
|
$prestudent = current($prestudent);
|
||||||
|
if ($prestudent->zgv_code) {
|
||||||
|
$data['zgv_code'] = $prestudent->zgv_code;
|
||||||
|
$data['zgvort'] = $prestudent->zgvort;
|
||||||
|
$data['zgvdatum'] = $prestudent->zgvdatum;
|
||||||
|
|
||||||
|
$data['zgvmas_code'] = $prestudent->zgvmas_code;
|
||||||
|
$data['zgvmaort'] = $prestudent->zgvmaort;
|
||||||
|
$data['zgvmadatum'] = $prestudent->zgvmadatum;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Prestudent speichern
|
// Prestudent speichern
|
||||||
$result = $this->prestudentlib->setPrestudent(
|
$result = $this->PrestudentModel->insert($data);
|
||||||
$person_id,
|
$prestudent_id = $this->getDataOrTerminateWithError($result);
|
||||||
$studiengang_kz,
|
|
||||||
$this->input->post('letzteausbildung'),
|
|
||||||
$anmerkung,
|
|
||||||
$foerderrelevant
|
|
||||||
);
|
|
||||||
if (isError($result)) return $result;
|
|
||||||
if (!hasData($result)) return error('Error when adding prestudent');
|
|
||||||
|
|
||||||
$prestudent_id = getData($result);
|
// Prestudent Rolle Anlegen
|
||||||
|
$data = [
|
||||||
|
'prestudent_id' => $prestudent_id,
|
||||||
|
'status_kurzbz' => $incoming ? 'Incoming' : 'Interessent',
|
||||||
|
'studiensemester_kurzbz' => $this->input->post('studiensemester_kurzbz'),
|
||||||
|
'ausbildungssemester' => $this->input->post('ausbildungssemester') ?: 0,
|
||||||
|
'orgform_kurzbz' => $this->input->post('orgform_kurzbz') ?: null,
|
||||||
|
'studienplan_id' => $this->input->post('studienplan_id') ?: null,
|
||||||
|
'datum' => date('Y-m-d'),
|
||||||
|
'insertamum' => date('c'),
|
||||||
|
'insertvon' => getAuthUID()
|
||||||
|
];
|
||||||
|
$result = $this->PrestudentstatusModel->insert($data);
|
||||||
|
$this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
// wenn Incoming, Incoming Daten hinzufügen
|
if ($incoming) {
|
||||||
if ($incoming)
|
// TODO(chris): IMPLEMENT!
|
||||||
{
|
//Matrikelnummer und UID generieren
|
||||||
$statusResult = $this->prestudentlib->setFirstIncoming(
|
//Benutzerdatensatz anlegen
|
||||||
$prestudent_id,
|
//Studentendatensatz anlegen
|
||||||
$studiengang_kz,
|
//StudentLehrverband anlegen
|
||||||
$studiensemester_kurzbz,
|
|
||||||
$this->input->post('orgform_kurzbz'),
|
|
||||||
$this->input->post('studienplan_id')
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// Prestudent Rolle Anlegen
|
|
||||||
$statusResult = $this->prestudentlib->setFirstStatus(
|
|
||||||
$prestudent_id,
|
|
||||||
$this->PrestudentstatusModel::STATUS_INTERESSENT,
|
|
||||||
$studiensemester_kurzbz,
|
|
||||||
$this->input->post('ausbildungssemester'),
|
|
||||||
$this->input->post('orgform_kurzbz'),
|
|
||||||
$this->input->post('studienplan_id')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (!hasData($statusResult)) return error('error when adding status');
|
|
||||||
if (isError($statusResult)) return $statusResult;
|
|
||||||
|
|
||||||
return success($prestudent_id);
|
// TODO(chris): DEBUG
|
||||||
|
/*$result = $this->PrestudentModel->loadWhere([
|
||||||
|
'pestudent_id' => 1
|
||||||
|
]);
|
||||||
|
if (isError($result)) {
|
||||||
|
return $result;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requiredIfNotPersonId($value)
|
public function requiredIfNotPersonId($value)
|
||||||
@@ -770,84 +715,13 @@ class Student extends FHCAPI_Controller
|
|||||||
|
|
||||||
public function requiredIfAddressFunc($value)
|
public function requiredIfAddressFunc($value)
|
||||||
{
|
{
|
||||||
if (!isset($_POST['address']['checked']) || !$_POST['address']['checked'])
|
if (!$_POST['address']['func'])
|
||||||
return true;
|
return true;
|
||||||
return !!$value;
|
return !!$value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requiredIfStudentFunc($value)
|
public function isValidDate($value)
|
||||||
{
|
{
|
||||||
if (isset($_POST['personOnly']) && $_POST['personOnly'])
|
return isValidDate($value);
|
||||||
return true;
|
|
||||||
return !!$value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function requiredIfStudentAndNotIncomingFunc($value)
|
|
||||||
{
|
|
||||||
if ((isset($_POST['incoming']) && $_POST['incoming']) || $this->requiredIfStudentFunc($value))
|
|
||||||
return true;
|
|
||||||
return !!$value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validates input data. Terminates with validation errors, if invalid.
|
|
||||||
*/
|
|
||||||
private function _validate()
|
|
||||||
{
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
$this->form_validation->set_rules('nachname', 'Nachname', 'callback_requiredIfNotPersonId', [
|
|
||||||
'requiredIfNotPersonId' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'nachname')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('geschlecht', 'Geschlecht', 'callback_requiredIfNotPersonId', [
|
|
||||||
'requiredIfNotPersonId' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'geschlecht')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'is_valid_date', [
|
|
||||||
'is_valid_date' => $this->p->t('ui', 'error_invalid_date')
|
|
||||||
]);
|
|
||||||
//$this->form_validation->set_rules('address[checked]', 'Address', 'required');
|
|
||||||
$this->form_validation->set_rules('address[plz]', 'PLZ', 'callback_requiredIfAddressFunc', [
|
|
||||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'plz')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('address[gemeinde]', 'Gemeinde', 'callback_requiredIfAddressFunc', [
|
|
||||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'gemeinde')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('address[ort]', 'Ort', 'callback_requiredIfAddressFunc', [
|
|
||||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'ort')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('address[address]', 'Adresse', 'callback_requiredIfAddressFunc', [
|
|
||||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'adresse')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('email', 'E-Mail', 'valid_email');
|
|
||||||
$this->form_validation->set_rules('studiengang_kz', 'Studiengang', 'callback_requiredIfStudentFunc', [
|
|
||||||
'requiredIfStudentFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'studiengang')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules('studiensemester_kurzbz', 'Studiensemester', 'callback_requiredIfStudentFunc', [
|
|
||||||
'requiredIfStudentFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'studiensemester')])
|
|
||||||
]);
|
|
||||||
$this->form_validation->set_rules(
|
|
||||||
'ausbildungssemester',
|
|
||||||
'Ausbildungssemester',
|
|
||||||
'callback_requiredIfStudentAndNotIncomingFunc|integer|less_than[9]|greater_than[-1]',
|
|
||||||
[
|
|
||||||
'requiredIfStudentAndNotIncomingFunc' =>
|
|
||||||
$this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'ausbildungssemester')]),
|
|
||||||
]
|
|
||||||
);
|
|
||||||
// TODO(chris): validate studienplan with studiengang, semester and orgform?
|
|
||||||
// TODO(chris): validate person_id, studiengang_kz, studiensemester_kurzbz, orgform_kurzbz, nation, gemeinde, ort, geschlecht?
|
|
||||||
|
|
||||||
if (!$this->form_validation->run())
|
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _getLanguageIndex()
|
|
||||||
{
|
|
||||||
$this->load->model('system/Sprache_model', 'SpracheModel');
|
|
||||||
$this->SpracheModel->addSelect('index');
|
|
||||||
$result = $this->SpracheModel->loadWhere(array('sprache' => getUserLanguage()));
|
|
||||||
$this->addMeta('lang', getUserLanguage());
|
|
||||||
|
|
||||||
return hasData($result) ? getData($result)[0]->index : 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (!defined('BASEPATH'))
|
|
||||||
exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class Tags extends Tag_Controller
|
|
||||||
{
|
|
||||||
const BERECHTIGUNG_KURZBZ = ['admin:rw', 'assistenz:rw'];
|
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'getTag' => self::BERECHTIGUNG_KURZBZ,
|
|
||||||
'getTags' => self::BERECHTIGUNG_KURZBZ,
|
|
||||||
'addTag' => self::BERECHTIGUNG_KURZBZ,
|
|
||||||
'updateTag' => self::BERECHTIGUNG_KURZBZ,
|
|
||||||
'doneTag' => self::BERECHTIGUNG_KURZBZ,
|
|
||||||
'deleteTag' => self::BERECHTIGUNG_KURZBZ
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->config->load('stv');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getTag($readonly_tags = null)
|
|
||||||
{
|
|
||||||
parent::getTag($this->config->item('stv_prestudent_tags'));
|
|
||||||
}
|
|
||||||
public function getTags($tags = null)
|
|
||||||
{
|
|
||||||
parent::getTags($this->config->item('stv_prestudent_tags'));
|
|
||||||
}
|
|
||||||
public function addTag($withZuordnung = true, $updatable_tags = null)
|
|
||||||
{
|
|
||||||
parent::addTag(true, $this->config->item('stv_prestudent_tags'));
|
|
||||||
}
|
|
||||||
public function updateTag($updatable_tags = null)
|
|
||||||
{
|
|
||||||
parent::updateTag($this->config->item('stv_prestudent_tags'));
|
|
||||||
}
|
|
||||||
public function deleteTag($withZuordnung = true, $updatable_tags = null)
|
|
||||||
{
|
|
||||||
parent::deleteTag(true, $this->config->item('stv_prestudent_tags'));
|
|
||||||
}
|
|
||||||
public function doneTag($updatable_tags = null)
|
|
||||||
{
|
|
||||||
parent::doneTag($this->config->item('stv_prestudent_tags'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -165,17 +165,7 @@ class Verband extends FHCAPI_Controller
|
|||||||
|
|
||||||
$this->StudiengangModel->addDistinct();
|
$this->StudiengangModel->addDistinct();
|
||||||
$this->StudiengangModel->addSelect("CONCAT(" . $this->StudiengangModel->escape($link) . ", semester) AS link", false);
|
$this->StudiengangModel->addSelect("CONCAT(" . $this->StudiengangModel->escape($link) . ", semester) AS link", false);
|
||||||
$this->StudiengangModel->addSelect("CONCAT(
|
$this->StudiengangModel->addSelect("CONCAT(UPPER(CONCAT(typ, kurzbz)), '-', semester, (SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END FROM public.tbl_lehrverband WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester ORDER BY verband, gruppe LIMIT 1)) AS name", false);
|
||||||
UPPER(CONCAT(typ, kurzbz)),
|
|
||||||
'-',
|
|
||||||
semester,
|
|
||||||
(
|
|
||||||
SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END
|
|
||||||
FROM public.tbl_lehrverband
|
|
||||||
WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester
|
|
||||||
ORDER BY verband, gruppe LIMIT 1
|
|
||||||
)
|
|
||||||
) AS name", false);
|
|
||||||
|
|
||||||
$this->StudiengangModel->addSelect('semester');
|
$this->StudiengangModel->addSelect('semester');
|
||||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
||||||
@@ -183,7 +173,6 @@ class Verband extends FHCAPI_Controller
|
|||||||
$this->StudiengangModel->addOrder('semester');
|
$this->StudiengangModel->addOrder('semester');
|
||||||
|
|
||||||
if ($org_form !== null) {
|
if ($org_form !== null) {
|
||||||
$this->StudiengangModel->addSelect("v.orgform_kurzbz");
|
|
||||||
$this->StudiengangModel->db->group_start();
|
$this->StudiengangModel->db->group_start();
|
||||||
$this->StudiengangModel->db->where('v.semester', 0);
|
$this->StudiengangModel->db->where('v.semester', 0);
|
||||||
$this->StudiengangModel->db->or_where('v.orgform_kurzbz', $org_form);
|
$this->StudiengangModel->db->or_where('v.orgform_kurzbz', $org_form);
|
||||||
@@ -199,7 +188,6 @@ class Verband extends FHCAPI_Controller
|
|||||||
array_unshift($list, [
|
array_unshift($list, [
|
||||||
'name' => 'PreStudent',
|
'name' => 'PreStudent',
|
||||||
'link' => $link . 'prestudent',
|
'link' => $link . 'prestudent',
|
||||||
'no_sem_reload' => true,
|
|
||||||
'stg_kz' => (int)$studiengang_kz,
|
'stg_kz' => (int)$studiengang_kz,
|
||||||
'children' => $this->getStdSem($link . 'prestudent/', $studiengang_kz)
|
'children' => $this->getStdSem($link . 'prestudent/', $studiengang_kz)
|
||||||
]);
|
]);
|
||||||
@@ -215,7 +203,6 @@ class Verband extends FHCAPI_Controller
|
|||||||
$this->StudienordnungModel->addDistinct();
|
$this->StudienordnungModel->addDistinct();
|
||||||
$this->StudienordnungModel->addSelect("CONCAT(studiengang_kz, '/', p.orgform_kurzbz) AS link");
|
$this->StudienordnungModel->addSelect("CONCAT(studiengang_kz, '/', p.orgform_kurzbz) AS link");
|
||||||
$this->StudienordnungModel->addSelect("p.orgform_kurzbz AS name");
|
$this->StudienordnungModel->addSelect("p.orgform_kurzbz AS name");
|
||||||
$this->StudienordnungModel->addSelect("studiengang_kz AS stg_kz");
|
|
||||||
|
|
||||||
$this->StudienordnungModel->addJoin('lehre.tbl_studienplan p', 'studienordnung_id');
|
$this->StudienordnungModel->addJoin('lehre.tbl_studienplan p', 'studienordnung_id');
|
||||||
|
|
||||||
@@ -229,6 +216,7 @@ class Verband extends FHCAPI_Controller
|
|||||||
$list = array_merge($list, $result);
|
$list = array_merge($list, $result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
$this->terminateWithSuccess($list);
|
$this->terminateWithSuccess($list);
|
||||||
}
|
}
|
||||||
@@ -284,7 +272,6 @@ class Verband extends FHCAPI_Controller
|
|||||||
$this->StudiengangModel->addSelect("CONCAT(UPPER(CONCAT(typ, kurzbz)), '-', semester, verband, (SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END FROM public.tbl_lehrverband WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester AND verband=v.verband ORDER BY gruppe LIMIT 1)) AS name", false);
|
$this->StudiengangModel->addSelect("CONCAT(UPPER(CONCAT(typ, kurzbz)), '-', semester, verband, (SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END FROM public.tbl_lehrverband WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester AND verband=v.verband ORDER BY gruppe LIMIT 1)) AS name", false);
|
||||||
$this->StudiengangModel->addSelect("CASE WHEN MAX(gruppe)='' OR MAX(gruppe)=' ' THEN TRUE ELSE FALSE END AS leaf");
|
$this->StudiengangModel->addSelect("CASE WHEN MAX(gruppe)='' OR MAX(gruppe)=' ' THEN TRUE ELSE FALSE END AS leaf");
|
||||||
|
|
||||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($semester) . ' AS semester');
|
|
||||||
$this->StudiengangModel->addSelect('verband');
|
$this->StudiengangModel->addSelect('verband');
|
||||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
||||||
|
|
||||||
@@ -333,8 +320,6 @@ class Verband extends FHCAPI_Controller
|
|||||||
$this->StudiengangModel->addSelect("CONCAT(UPPER(CONCAT(typ, kurzbz)), '-', semester, verband, gruppe, (SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END FROM public.tbl_lehrverband WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester AND verband=v.verband AND gruppe=v.gruppe ORDER BY gruppe LIMIT 1)) AS name", false);
|
$this->StudiengangModel->addSelect("CONCAT(UPPER(CONCAT(typ, kurzbz)), '-', semester, verband, gruppe, (SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END FROM public.tbl_lehrverband WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester AND verband=v.verband AND gruppe=v.gruppe ORDER BY gruppe LIMIT 1)) AS name", false);
|
||||||
$this->StudiengangModel->addSelect("TRUE AS leaf", false);
|
$this->StudiengangModel->addSelect("TRUE AS leaf", false);
|
||||||
|
|
||||||
$this->StudiengangModel->addSelect('v.semester');
|
|
||||||
$this->StudiengangModel->addSelect('v.verband');
|
|
||||||
$this->StudiengangModel->addSelect('gruppe');
|
$this->StudiengangModel->addSelect('gruppe');
|
||||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
||||||
|
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
class Vertrag extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'getVertrag' => ['admin:r', 'assistenz:r'],
|
|
||||||
'cancelVertrag' => ['admin:r', 'assistenz:r']
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load Libraries
|
|
||||||
$this->load->library('form_validation');
|
|
||||||
|
|
||||||
// Load language phrases
|
|
||||||
$this->loadPhrases([
|
|
||||||
'ui',
|
|
||||||
'person',
|
|
||||||
'projektarbeit'
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Load models
|
|
||||||
$this->load->model('accounting/Vertrag_model', 'VertragModel');
|
|
||||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
|
||||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
|
||||||
|
|
||||||
// load libraries
|
|
||||||
$this->load->library('PermissionLib');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getVertrag()
|
|
||||||
{
|
|
||||||
$vertrag_id = $this->input->get('vertrag_id');
|
|
||||||
|
|
||||||
if (!isset($vertrag_id) || !is_numeric($vertrag_id))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Vertrag ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$result = $this->VertragModel->getVertragById($vertrag_id);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
{
|
|
||||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
$vertrag = getData($result)[0];
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($vertrag);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function cancelVertrag()
|
|
||||||
{
|
|
||||||
$vertrag_id = $this->input->post('vertrag_id');
|
|
||||||
$person_id = $this->input->post('person_id');
|
|
||||||
|
|
||||||
if (!isset($vertrag_id) || !is_numeric($vertrag_id))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Vertrag ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
if (!isset($person_id) || !is_numeric($person_id))
|
|
||||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID']), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
// * first find lehrveranstaltung_id of the contracts lehrveranstaltung
|
|
||||||
$this->VertragModel->addSelect('lehrveranstaltung_id');
|
|
||||||
$this->VertragModel->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id', 'LEFT');
|
|
||||||
$result = $this->VertragModel->loadWhere(['vertrag_id' => $vertrag_id]);
|
|
||||||
|
|
||||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($result)) $this->terminateWithSuccess([]);
|
|
||||||
|
|
||||||
$lehrveranstaltung_id = getData($result)[0]->lehrveranstaltung_id;
|
|
||||||
|
|
||||||
$allOe = $this->LehrveranstaltungModel->getAllOe($lehrveranstaltung_id);
|
|
||||||
|
|
||||||
if (isError($allOe)) $this->terminateWithError(getError($allOe), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$allOe = hasData($allOe) ? array_column(getData($allOe), 'oe_kurzbz') : [];
|
|
||||||
|
|
||||||
// * then check if the user has permissions to cancel the corresponding lv-organisational units
|
|
||||||
if (!$this->permissionlib->isBerechtigtMultipleOe('admin', $allOe, 'suid') &&
|
|
||||||
!$this->permissionlib->isBerechtigtMultipleOe('lehre/lehrauftrag_bestellen', $allOe, 'suid'))
|
|
||||||
{
|
|
||||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'lehrauftrag_bestellen:rw']]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$uidResult = $this->BenutzerModel->getFromPersonId($person_id);
|
|
||||||
|
|
||||||
if (isError($uidResult)) $this->terminateWithError(getError($uidResult), self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
if (!hasData($uidResult)) $this->terminateWithError("no user found", self::ERROR_TYPE_GENERAL);
|
|
||||||
|
|
||||||
$mitarbeiter_uid = getData($uidResult)[0]->uid;
|
|
||||||
|
|
||||||
$result = $this->VertragModel->cancelVertrag($vertrag_id, $mitarbeiter_uid);
|
|
||||||
|
|
||||||
$data = $this->getDataOrTerminateWithError($result);
|
|
||||||
|
|
||||||
$this->terminateWithSuccess($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2024 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
use CI3_Events as Events;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This controller operates between (interface) the JS (GUI) and the back-end
|
|
||||||
* Provides data to the ajax get calls about the VV Config
|
|
||||||
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
|
|
||||||
*/
|
|
||||||
class Config extends FHCAPI_Controller
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct([
|
|
||||||
'printDocument' => ['vertrag/mitarbeiter:r'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function printDocument()
|
|
||||||
{
|
|
||||||
$params = [];
|
|
||||||
$menu = [];
|
|
||||||
|
|
||||||
Events::trigger(
|
|
||||||
'multiActionPrintHonorarvertrag',
|
|
||||||
// passing $menu per reference
|
|
||||||
function & () use (&$menu) {
|
|
||||||
return $menu;
|
|
||||||
},
|
|
||||||
$params
|
|
||||||
);
|
|
||||||
|
|
||||||
if (is_array($menu) && isset($menu[0]))
|
|
||||||
{
|
|
||||||
$this->terminateWithSuccess($menu[0]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// $this->terminateWithError('Error with Event 'multiActionPrintHonorarvertrag');
|
|
||||||
$this->terminateWithSuccess();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -26,6 +26,9 @@ class Vertraege extends FHCAPI_Controller
|
|||||||
'deleteLehrauftrag' =>['vertrag/mitarbeiter:w'],
|
'deleteLehrauftrag' =>['vertrag/mitarbeiter:w'],
|
||||||
'deleteBetreuung' =>['vertrag/mitarbeiter:w'],
|
'deleteBetreuung' =>['vertrag/mitarbeiter:w'],
|
||||||
'getMitarbeiter' => ['vertrag/mitarbeiter:r'],
|
'getMitarbeiter' => ['vertrag/mitarbeiter:r'],
|
||||||
|
'getHeader' => ['vertrag/mitarbeiter:r'],
|
||||||
|
'getPersonAbteilung' => ['vertrag/mitarbeiter:r'],
|
||||||
|
'getLeitungOrg' => ['vertrag/mitarbeiter:r'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Load Models and Libraries
|
//Load Models and Libraries
|
||||||
@@ -238,7 +241,7 @@ class Vertraege extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->db->trans_complete();
|
$this->db->trans_complete();
|
||||||
$this->terminateWithSuccess($vertrag_id);
|
$this->terminateWithSuccess(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateContract()
|
public function updateContract()
|
||||||
@@ -355,7 +358,7 @@ class Vertraege extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
$this->db->trans_complete();
|
$this->db->trans_complete();
|
||||||
|
|
||||||
$this->terminateWithSuccess($vertrag_id);
|
$this->terminateWithSuccess(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadContract($vertrag_id)
|
public function loadContract($vertrag_id)
|
||||||
@@ -681,4 +684,37 @@ class Vertraege extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
return $this->terminateWithSuccess(getData($result));
|
return $this->terminateWithSuccess(getData($result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getPersonAbteilung($mitarbeiter_uid)
|
||||||
|
{
|
||||||
|
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
|
||||||
|
|
||||||
|
$result = $this->Mitarbeitermodel->getPersonAbteilung($mitarbeiter_uid);
|
||||||
|
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess(current($data));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLeitungOrg($oekurzbz)
|
||||||
|
{
|
||||||
|
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
|
||||||
|
|
||||||
|
$result = $this->Mitarbeitermodel->getLeitungOrg($oekurzbz);
|
||||||
|
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess(current($data));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getHeader($person_id)
|
||||||
|
{
|
||||||
|
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
|
||||||
|
|
||||||
|
$result = $this->Mitarbeitermodel->getHeader($person_id);
|
||||||
|
|
||||||
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess(current($data));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,17 +51,13 @@ class Vorlagen extends FHCAPI_Controller
|
|||||||
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||||
$result = $this->BenutzerfunktionModel->getBenutzerfunktionByUid($uid, 'oezuordnung');
|
$result = $this->BenutzerfunktionModel->getBenutzerfunktionByUid($uid, 'oezuordnung');
|
||||||
|
|
||||||
if (hasData($result))
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
{
|
$oe_kurzbz = current($data);
|
||||||
$data = getData($result);
|
|
||||||
|
|
||||||
$oe_kurzbz = array_column($data, 'oe_kurzbz');
|
$result = $this->VorlageModel->getAllVorlagenByOe($oe_kurzbz->oe_kurzbz);
|
||||||
$result = $this->VorlageModel->getAllVorlagenByOe($oe_kurzbz);
|
$data = $this->getDataOrTerminateWithError($result);
|
||||||
|
|
||||||
$this->terminateWithSuccess(hasData($result) ? getData($result) : array());
|
|
||||||
}
|
|
||||||
$this->terminateWithSuccess(array());
|
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -233,10 +233,10 @@ class Person extends API_Controller
|
|||||||
//Quersumme bilden
|
//Quersumme bilden
|
||||||
for ($i = 0; $i < 10; $i++)
|
for ($i = 0; $i < 10; $i++)
|
||||||
{
|
{
|
||||||
$erg += $gewichtung[$i] * $tmpSvnr[$i];
|
$erg += $gewichtung[$i] * $tmpSvnr{$i};
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($tmpSvnr[3] != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
|
if ($tmpSvnr{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
|
||||||
{
|
{
|
||||||
return error('SVNR ist ungueltig');
|
return error('SVNR ist ungueltig');
|
||||||
}
|
}
|
||||||
@@ -244,7 +244,7 @@ class Person extends API_Controller
|
|||||||
if (mb_strlen($person['svnr']) == 12)
|
if (mb_strlen($person['svnr']) == 12)
|
||||||
{
|
{
|
||||||
$last = substr($person['svnr'], 10, 12);
|
$last = substr($person['svnr'], 10, 12);
|
||||||
if ($last[0] != 'v' || !is_numeric($last[1]))
|
if ($last{0} != 'v' || !is_numeric($last{1}))
|
||||||
{
|
{
|
||||||
return error('SVNR ist ungueltig');
|
return error('SVNR ist ungueltig');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (C) 2026 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
class Admin extends Auth_Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
// Set required permissions
|
|
||||||
parent::__construct(
|
|
||||||
array(
|
|
||||||
'index' => 'dashboard/admin:rw',
|
|
||||||
'preview' => 'dashboard/admin:r',
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
|
||||||
// Public methods
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
$this->load->view('dashboard/admin.php', []);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function preview($dashboard_kurzbz = 'CIS')
|
|
||||||
{
|
|
||||||
$this->load->view('dashboard/preview.php', [
|
|
||||||
'dashboard_kurzbz' => $dashboard_kurzbz
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
defined('BASEPATH') || exit('No direct script access allowed');
|
||||||
|
|
||||||
|
class Api extends Auth_Controller
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct(
|
||||||
|
array(
|
||||||
|
'index' => 'dashboard/admin:rw',
|
||||||
|
'getNews' => 'dashboard/benutzer:r',
|
||||||
|
'getAmpeln' => 'dashboard/benutzer:r',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->library('AuthLib', null, 'AuthLib');
|
||||||
|
|
||||||
|
$this->_setAuthUID();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
echo 'Dashboard API Controller';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get News.
|
||||||
|
*/
|
||||||
|
public function getNews()
|
||||||
|
{
|
||||||
|
$limit = $this->input->get('limit');
|
||||||
|
|
||||||
|
$this->load->model('content/News_model', 'NewsModel');
|
||||||
|
|
||||||
|
$result = $this->NewsModel->getAll($limit);
|
||||||
|
|
||||||
|
if (hasData($result))
|
||||||
|
{
|
||||||
|
$this->outputJson(getData($result), REST_Controller::HTTP_OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->terminateWithJsonError('fehler entdeckt');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Ampeln.
|
||||||
|
*/
|
||||||
|
public function getAmpeln()
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->load->model('content/Ampel_model', 'AmpelModel');
|
||||||
|
$result = $this->AmpelModel->getByUser($this->_uid);
|
||||||
|
|
||||||
|
if (hasData($result))
|
||||||
|
{
|
||||||
|
$this->outputJson(getData($result), REST_Controller::HTTP_OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->terminateWithJsonError('fehler entdeckt');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
<?php
|
||||||
|
defined('BASEPATH') || exit('No direct script access allowed');
|
||||||
|
/**
|
||||||
|
* Description of Config
|
||||||
|
*
|
||||||
|
* @author bambi
|
||||||
|
*/
|
||||||
|
class Config extends Auth_Controller
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct(
|
||||||
|
array(
|
||||||
|
'index' => 'dashboard/benutzer:r',
|
||||||
|
'dummy' => 'dashboard/benutzer:r',
|
||||||
|
'genWidgetId' => 'dashboard/benutzer:rw',
|
||||||
|
'addWidgetsToPreset' => 'dashboard/admin:rw',
|
||||||
|
'removeWidgetFromPreset' => 'dashboard/admin:rw',
|
||||||
|
'addWidgetsToUserOverride' => 'dashboard/benutzer:rw',
|
||||||
|
'removeWidgetFromUserOverride' => 'dashboard/benutzer:rw',
|
||||||
|
'funktionen' => 'dashboard/admin:r',
|
||||||
|
'preset' => 'dashboard/admin:r',
|
||||||
|
'presetBatch' => 'dashboard/admin:r'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->load->library('dashboard/DashboardLib', null, 'DashboardLib');
|
||||||
|
$this->load->library('AuthLib', null, 'AuthLib');
|
||||||
|
$this->load->model('ressource/Funktion_model', 'FunktionModel');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$dashboard_kurzbz = $this->input->get('db');
|
||||||
|
$uid = $this->AuthLib->getAuthObj()->username;
|
||||||
|
|
||||||
|
$dashboard = $this->DashboardLib->getDashboardByKurzbz($dashboard_kurzbz);
|
||||||
|
if(!$dashboard) {
|
||||||
|
http_response_code(404);
|
||||||
|
$this->terminateWithJsonError(array(
|
||||||
|
'error' => 'Dashboard ' . $dashboard_kurzbz . ' not found.'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
$mergedconfig = $this->DashboardLib->getMergedConfig($dashboard->dashboard_id, $uid);
|
||||||
|
$this->outputJsonSuccess($mergedconfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function genWidgetId()
|
||||||
|
{
|
||||||
|
$dashboard_kurzbz = $this->input->get('db');
|
||||||
|
$widgetid = $this->DashboardLib->generateWidgetId($dashboard_kurzbz);
|
||||||
|
$this->outputJsonSuccess(array(
|
||||||
|
'widgetid' => $widgetid
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addWidgetsToPreset()
|
||||||
|
{
|
||||||
|
$input = json_decode($this->input->raw_input_stream);
|
||||||
|
$dashboard_kurzbz = $input->db;
|
||||||
|
$funktion_kurzbz = $input->funktion_kurzbz;
|
||||||
|
|
||||||
|
$preset = $this->DashboardLib->getPresetOrCreateEmptyPreset($dashboard_kurzbz, $funktion_kurzbz);
|
||||||
|
|
||||||
|
$preset_decoded = json_decode($preset->preset, true);
|
||||||
|
|
||||||
|
$this->DashboardLib->addWidgetsToWidgets($preset_decoded, $dashboard_kurzbz, $funktion_kurzbz, $input->widgets);
|
||||||
|
|
||||||
|
$preset->preset = json_encode($preset_decoded);
|
||||||
|
|
||||||
|
$result = $this->DashboardLib->insertOrUpdatePreset($preset);
|
||||||
|
if (isError($result)) {
|
||||||
|
http_response_code(500);
|
||||||
|
$this->terminateWithJsonError('preset could not be saved');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->outputJsonSuccess(array('msg' => 'preset successfully stored.', 'data' => $preset_decoded));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeWidgetFromPreset()
|
||||||
|
{
|
||||||
|
$input = json_decode($this->input->raw_input_stream);
|
||||||
|
$dashboard_kurzbz = $input->db;
|
||||||
|
$funktion_kurzbz = $input->funktion_kurzbz;
|
||||||
|
$widgetid = $input->widgetid;
|
||||||
|
|
||||||
|
$preset = $this->DashboardLib->getPreset($dashboard_kurzbz, $funktion_kurzbz);
|
||||||
|
if ($preset === null) {
|
||||||
|
http_response_code(404);
|
||||||
|
$this->terminateWithJsonError('preset for dashboard ' . $dashboard_kurzbz . ' and funktion ' . $funktion_kurzbz . ' not found.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$preset_decoded = json_decode($preset->preset, true);
|
||||||
|
if (!$this->DashboardLib->removeWidgetFromWidgets($preset_decoded, $funktion_kurzbz, $widgetid))
|
||||||
|
{
|
||||||
|
http_response_code(404);
|
||||||
|
$this->terminateWithJsonError('widgetid ' . $widgetid . ' not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$preset->preset = json_encode($preset_decoded);
|
||||||
|
$result = $this->DashboardLib->insertOrUpdatePreset($preset);
|
||||||
|
if (isError($result))
|
||||||
|
{
|
||||||
|
http_response_code(500);
|
||||||
|
$this->terminateWithJsonError('failed to remove widget');
|
||||||
|
}
|
||||||
|
$this->outputJsonSuccess(array('msg' => 'preset successfully updated.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addWidgetsToUserOverride()
|
||||||
|
{
|
||||||
|
$input = json_decode($this->input->raw_input_stream);
|
||||||
|
$dashboard_kurzbz = $input->db;
|
||||||
|
$funktion_kurzbz = $input->funktion_kurzbz;
|
||||||
|
$uid = $this->AuthLib->getAuthObj()->username;
|
||||||
|
|
||||||
|
$override = $this->DashboardLib->getOverrideOrCreateEmptyOverride($dashboard_kurzbz, $uid);
|
||||||
|
|
||||||
|
$override_decoded = json_decode($override->override, true);
|
||||||
|
|
||||||
|
$this->DashboardLib->addWidgetsToWidgets($override_decoded, $dashboard_kurzbz, $funktion_kurzbz, $input->widgets);
|
||||||
|
|
||||||
|
$override->override = json_encode($override_decoded);
|
||||||
|
|
||||||
|
$result = $this->DashboardLib->insertOrUpdateOverride($override);
|
||||||
|
if (isError($result)) {
|
||||||
|
http_response_code(500);
|
||||||
|
$this->terminateWithJsonError('override could not be saved');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->outputJsonSuccess(array('msg' => 'override successfully stored.', 'data' => $override_decoded));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeWidgetFromUserOverride()
|
||||||
|
{
|
||||||
|
$input = json_decode($this->input->raw_input_stream);
|
||||||
|
$dashboard_kurzbz = $input->db;
|
||||||
|
$funktion_kurzbz = $input->funktion_kurzbz;
|
||||||
|
$uid = $this->AuthLib->getAuthObj()->username;
|
||||||
|
$widgetid = $input->widgetid;
|
||||||
|
|
||||||
|
$override = $this->DashboardLib->getOverride($dashboard_kurzbz, $uid);
|
||||||
|
if (empty($override)) {
|
||||||
|
http_response_code(404);
|
||||||
|
$this->terminateWithJsonError('userconfig for dashboard ' . $dashboard_kurzbz . ' not found.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$override_decoded = json_decode($override->override, true);
|
||||||
|
|
||||||
|
if (!$this->DashboardLib->removeWidgetFromWidgets($override_decoded, $funktion_kurzbz, $widgetid))
|
||||||
|
{
|
||||||
|
http_response_code(404);
|
||||||
|
$this->terminateWithJsonError('widgetid ' . $widgetid . ' not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$override->override = json_encode($override_decoded);
|
||||||
|
$result = $this->DashboardLib->insertOrUpdateOverride($override, $uid);
|
||||||
|
if (isError($result))
|
||||||
|
{
|
||||||
|
http_response_code(500);
|
||||||
|
$this->terminateWithJsonError('failed to remove widget');
|
||||||
|
}
|
||||||
|
$this->outputJsonSuccess(array('msg' => 'override successfully updated.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function funktionen()
|
||||||
|
{
|
||||||
|
$funktionen = $this->FunktionModel->load();
|
||||||
|
|
||||||
|
if (isError($funktionen)) {
|
||||||
|
http_response_code(404);
|
||||||
|
$this->terminateWithJsonError([
|
||||||
|
'error' => getError($funktionen)
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->outputJsonSuccess(getData($funktionen) ?: []);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function preset()
|
||||||
|
{
|
||||||
|
$db = $this->input->get('db');
|
||||||
|
$funktion = $this->input->get('funktion');
|
||||||
|
|
||||||
|
$conf = $this->DashboardLib->getPreset($db, $funktion);
|
||||||
|
|
||||||
|
if (!$conf)
|
||||||
|
return $this->outputJsonSuccess(['widgets' => [$funktion => []]]);
|
||||||
|
|
||||||
|
return $this->outputJsonSuccess(json_decode($conf->preset, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function presetBatch()
|
||||||
|
{
|
||||||
|
$db = $this->input->get('db');
|
||||||
|
$funktionen = $this->input->get('funktionen');
|
||||||
|
$result = [];
|
||||||
|
|
||||||
|
foreach ($funktionen as $funktion) {
|
||||||
|
$conf = $this->DashboardLib->getPreset($db, $funktion);
|
||||||
|
if ($conf)
|
||||||
|
{
|
||||||
|
$preset = json_decode($conf->preset, true);
|
||||||
|
if (!isset($preset[$funktion]) || !isset($preset[$funktion]['widgets']))
|
||||||
|
$result[$funktion] = [];
|
||||||
|
else
|
||||||
|
$result[$funktion] = $preset[$funktion]['widgets'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$result[$funktion] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->outputJsonSuccess($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user