mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
Compare commits
356 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 759aad047b | |||
| db7f46a874 | |||
| fd0262f708 | |||
| a06d7bbfec | |||
| 16689f4d6e | |||
| d1adc160ca | |||
| 0bd75716f2 | |||
| a70ef78ead | |||
| 9782fe5459 | |||
| 5e509f7f19 | |||
| 3f257af006 | |||
| 7fac6062e5 | |||
| 7ba74143df | |||
| e110e8fa57 | |||
| d018ab18f8 | |||
| 76b9c6781d | |||
| 856706bc1c | |||
| d680c3aa2b | |||
| d98bdb9745 | |||
| 0411befe8d | |||
| 8bf18b0d37 | |||
| d54747c4df | |||
| 7e141f73d3 | |||
| da3b329772 | |||
| 7f9dcc43ad | |||
| 274262262a | |||
| 79c0f31ddc | |||
| 49d61342c2 | |||
| be0943f1ba | |||
| 41d40102f3 | |||
| 95e63f865c | |||
| 1496045c40 | |||
| e2dadcd208 | |||
| 164c11e10a | |||
| c7bac03429 | |||
| 07d3b32279 | |||
| 245d0d3369 | |||
| d3d04c5a77 | |||
| 070ac1e878 | |||
| f45782aeef | |||
| c2faff5a03 | |||
| 1cff18112b | |||
| 195b99e588 | |||
| 63ff8dd4c4 | |||
| 6019489ef1 | |||
| fc79f92796 | |||
| 8e569a9ccd | |||
| d7b2964e4e | |||
| 366edb7e90 | |||
| ac6aa28680 | |||
| f6f58642f5 | |||
| 9430135592 | |||
| 57eec98604 | |||
| 1561aa55b7 | |||
| 35f4d23308 | |||
| 199b62d13f | |||
| bb366e4117 | |||
| b0fc5a3618 | |||
| b0f90cafb6 | |||
| 6e599908cd | |||
| c099eec7a7 | |||
| 0962e62e69 | |||
| dcd6cfd74b | |||
| b1be5a4ba4 | |||
| 5caab182b2 | |||
| baaf941f25 | |||
| 2e5e7afb4d | |||
| 71f68da90b | |||
| 2c4626fd1a | |||
| 178638c006 | |||
| 981c97173e | |||
| c11fd03362 | |||
| 49d5c46133 | |||
| 9fb00f6cbd | |||
| ec1422a136 | |||
| d56d1bc2bd | |||
| 45eca862ac | |||
| 89e98056e6 | |||
| 9f738f4871 | |||
| 3533a3fd4b | |||
| 5cf14aa886 | |||
| 7d3096c2e8 | |||
| ef2f9630a9 | |||
| 4d3c73c78f | |||
| 9ee6a0a01a | |||
| 1e226f4515 | |||
| ca8fe5bd19 | |||
| 6d26ec2ab7 | |||
| 672acfe8fe | |||
| 6a4db90897 | |||
| d4e170037b | |||
| 82587a70be | |||
| 7aba7aefb9 | |||
| 0a18fcf732 | |||
| d0ef9ca96c | |||
| e5ae400686 | |||
| a5d5d42ba3 | |||
| e08b731cb5 | |||
| 15441a46f7 | |||
| a9a56bb1e9 | |||
| e840be84eb | |||
| 0b40455e3c | |||
| 1b822fc8f8 | |||
| 368eded1fd | |||
| d9ea5a95af | |||
| d1a4cfd5df | |||
| 23502d4fab | |||
| dbcacdddd6 | |||
| 8b2ef4e832 | |||
| 6fedb4b108 | |||
| 905c69c384 | |||
| 6fa0a7c102 | |||
| 7320dc448e | |||
| ede9323224 | |||
| 3dcf72d679 | |||
| 37b70861d1 | |||
| 150d54eeda | |||
| 3690babf62 | |||
| 68b26a1091 | |||
| 9ca7ff73f4 | |||
| c56064d189 | |||
| 5c371a20d2 | |||
| 424495c636 | |||
| 9c7e98f1cb | |||
| d42157c5f8 | |||
| 502851856b | |||
| 23edcf3aa7 | |||
| 8ce67a4726 | |||
| bcfdf1e05c | |||
| cb744799bd | |||
| 90ebee25fe | |||
| 3e8ed231a6 | |||
| 4c67b9d267 | |||
| c16cf342cb | |||
| d843f05922 | |||
| 44e9b4dff1 | |||
| bda42ab347 | |||
| b5b69878b8 | |||
| 6f17ddbbdf | |||
| ef1347c7d5 | |||
| ca19306b72 | |||
| 66c0c14748 | |||
| cffa493984 | |||
| 9030cdcc76 | |||
| c3ef487a6f | |||
| ac0eddf4c7 | |||
| e373e797f4 | |||
| 382244035b | |||
| b9c8c71274 | |||
| d1fa5f64c4 | |||
| 21eb95bb23 | |||
| e856c8ad6b | |||
| 2723d6a741 | |||
| e5e22931a9 | |||
| 21ea277aaf | |||
| 2c0badf67c | |||
| 5e72161ab0 | |||
| e86e7f0bd8 | |||
| c36f259571 | |||
| 501bae585a | |||
| 2c72f704d0 | |||
| 194de7b4e7 | |||
| c03609142b | |||
| 5374f71732 | |||
| c53d451000 | |||
| 903f3b99b3 | |||
| f6747713a1 | |||
| 59ddf175ed | |||
| ccd8d5f871 | |||
| bd47ad2b8c | |||
| e90019cdd8 | |||
| df9edc36e0 | |||
| 39f1716ae2 | |||
| c7b25e6632 | |||
| 695f3455e6 | |||
| be508c99ea | |||
| 1339077b57 | |||
| 3aebccbb9d | |||
| ee6f28c06d | |||
| fdb037da96 | |||
| 71a77fc576 | |||
| 49cbbfc50c | |||
| 4f8e98f5d5 | |||
| a028297da6 | |||
| e9e614aa52 | |||
| ac44b36b59 | |||
| 50af6694d0 | |||
| 5dbddb4beb | |||
| b20613f5d7 | |||
| 0621564be7 | |||
| f1714db09e | |||
| 70b025da30 | |||
| 87dd858358 | |||
| 51f3edcd72 | |||
| e7f626bd72 | |||
| 17f94aabdf | |||
| c49e32c4ac | |||
| df124db84a | |||
| 29a4b4aadc | |||
| 2682ea75ab | |||
| b3a63a60e9 | |||
| a54dfaf0c7 | |||
| 595538d6bb | |||
| a5329e5bba | |||
| 37a79c4589 | |||
| dd760f8210 | |||
| dd87e893ba | |||
| 4b767d4a57 | |||
| 127ce312ea | |||
| 5d461a72f6 | |||
| 2237e9f1b7 | |||
| 9b4fa132dc | |||
| daf332a102 | |||
| 5a6d20f817 | |||
| 942b4512fe | |||
| 3778b27574 | |||
| 15b340db56 | |||
| ce5da22180 | |||
| 05b2c3c42b | |||
| 2dd732b924 | |||
| c127c0900e | |||
| fc01fa045e | |||
| 110f73e622 | |||
| bb0d118284 | |||
| 701ccadff3 | |||
| 34555504df | |||
| d1f5220925 | |||
| decd514b22 | |||
| 6cf7093293 | |||
| 17f11fa871 | |||
| 96812868a4 | |||
| 40c79158f7 | |||
| 054663ee00 | |||
| 81eee814e9 | |||
| 390a3c0d5a | |||
| 695dd655c0 | |||
| 05838cc477 | |||
| c34ffedb42 | |||
| 96e02c9911 | |||
| 248fceb4b5 | |||
| b5382b1bdf | |||
| 519cbc7601 | |||
| 92697d9468 | |||
| d1ec9c92eb | |||
| 957da460a6 | |||
| 8f9f447acf | |||
| 2cee36d7b5 | |||
| 454cf5ea64 | |||
| 4563533e67 | |||
| 640e719eda | |||
| aece2b1d90 | |||
| 43925e3088 | |||
| 1c236cce02 | |||
| 4956a517ca | |||
| cb13655ecd | |||
| 9b3b6cec8f | |||
| 3ca1a1f1c7 | |||
| a7210208d6 | |||
| eaad23ff69 | |||
| c7ddf0a2a9 | |||
| b129ef873b | |||
| d927426d70 | |||
| d9c7df736c | |||
| 9ced137ded | |||
| 73244df019 | |||
| 91d24ebae8 | |||
| 6861e26ed6 | |||
| a89da50e0a | |||
| 9256046b6c | |||
| fd95dd8023 | |||
| cda2b84939 | |||
| 34242e12ea | |||
| d893fe63e7 | |||
| 5aedf85982 | |||
| 55ab79c004 | |||
| 7c7a72600d | |||
| bd67e41aa6 | |||
| 01357654c0 | |||
| cd5900481b | |||
| 601c6c53e7 | |||
| b7ba740a3a | |||
| ddef97d49f | |||
| 47b0449f22 | |||
| 0193460678 | |||
| e02b3e78d2 | |||
| a6167583a3 | |||
| c91e0a6b74 | |||
| c6852a9514 | |||
| 04b5240615 | |||
| 483547cd9c | |||
| 345413cd1f | |||
| f57dc6785b | |||
| 046a60b89c | |||
| da725e3ab1 | |||
| edd34941cc | |||
| c65686ef42 | |||
| c7729f85df | |||
| 53b187c9b6 | |||
| 7bc18e41b1 | |||
| 8bc17eded5 | |||
| 9adeb1c63a | |||
| 091ed0dacd | |||
| 1e68eb0b90 | |||
| 332efd4106 | |||
| cf0a47cab7 | |||
| bb7b24346a | |||
| f303191c54 | |||
| a68e2e798b | |||
| bd49f3c420 | |||
| 3c1d67267d | |||
| d6c7f16ceb | |||
| 61e1933a5b | |||
| f1912fe739 | |||
| 25c443098c | |||
| cf59bcff12 | |||
| 2f7fe05d21 | |||
| ee4b61f549 | |||
| 352c6e1d68 | |||
| 0e2444d7ce | |||
| c4390819a2 | |||
| 51104268d8 | |||
| cb5d43ab21 | |||
| 08de5cd377 | |||
| 274fa63658 | |||
| 81b2ed6551 | |||
| d9c6c3947b | |||
| 2d6dbbdb16 | |||
| b60faa1cab | |||
| fd19953864 | |||
| 927bafd93a | |||
| d93b21f0af | |||
| 511a4256bc | |||
| 3c9db86df2 | |||
| 367204a1ee | |||
| 6a8f6fa05a | |||
| 7f997c9411 | |||
| 2e3f98deb0 | |||
| a5feb656e0 | |||
| 9329955328 | |||
| 5b99dd2685 | |||
| 19288fc8f5 | |||
| 9f97de5952 | |||
| c476f7339c | |||
| 3dc1cf520a | |||
| 616c335a3b | |||
| bbe55a75ea | |||
| e58bf3a8cf | |||
| 1f2f866c61 | |||
| 6ccbc95697 | |||
| 52d9e0a195 | |||
| 6a3982347b | |||
| fe7feeb74e | |||
| b2419beca6 | |||
| b752b475d9 | |||
| 658fe79ad7 | |||
| 5bbf05ac8a |
@@ -23,6 +23,15 @@ Events::on('loadRenderers', function ($renderers) {
|
||||
);
|
||||
});
|
||||
|
||||
Events::on('loadRenderers', function ($renderers) {
|
||||
$fhc_core_renderers =& $renderers();
|
||||
$fhc_core_renderers["slot_room"] = array(
|
||||
'modalTitle' => APP_ROOT.'public/js/components/Cis/Renderer/Slot/roomModalTitle.js',
|
||||
'modalContent' => APP_ROOT.'public/js/components/Cis/Renderer/Slot/roomModalContent.js',
|
||||
'calendarEventStyles' => APP_ROOT.'public/css/Cis4/CoreCalendarEvents.css'
|
||||
);
|
||||
});
|
||||
|
||||
Events::on('loadRenderers', function ($renderers) {
|
||||
$fhc_core_renderers =& $renderers();
|
||||
$fhc_core_renderers["ferien"] = array(
|
||||
|
||||
@@ -29,7 +29,7 @@ $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['beurteilung_link_fallback'] = 'addons/fhtw/content/projektbeurteilung/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';
|
||||
@@ -38,19 +38,8 @@ $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;
|
||||
|
||||
|
||||
|
||||
@@ -170,6 +170,13 @@ $config['navigation_header'] = array(
|
||||
'expand' => true,
|
||||
'sort' => 51,
|
||||
'requiredPermissions' => 'vertrag/mitarbeiter:r'
|
||||
),
|
||||
'studierendenverwaltung' => array(
|
||||
'link' => site_url('studentenverwaltung'),
|
||||
'description' => 'Studierendenverwaltung',
|
||||
'expand' => true,
|
||||
'sort' => 52,
|
||||
'requiredPermissions' => ['admin:r', 'assistenz:r']
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -186,7 +193,7 @@ $config['navigation_header'] = array(
|
||||
'description' => 'Extensions Manager',
|
||||
'expand' => true,
|
||||
'sort' => 10,
|
||||
'requiredPermissions' => 'system/extensions:r'
|
||||
'requiredPermissions' => 'admin:r'
|
||||
),
|
||||
'logsviewer' => array(
|
||||
'link' => site_url('system/LogsViewer'),
|
||||
@@ -199,14 +206,7 @@ $config['navigation_header'] = array(
|
||||
'link' => site_url('system/jq/JobsQueueViewer'),
|
||||
'description' => 'Jobs Queue Viewer',
|
||||
'expand' => true,
|
||||
'sort' => 30,
|
||||
'requiredPermissions' => 'system/developer:r'
|
||||
),
|
||||
'phrasesviewer' => array(
|
||||
'link' => site_url('system/phrases/PhrasesViewer'),
|
||||
'description' => 'Phrases viewer',
|
||||
'expand' => true,
|
||||
'sort' => 40,
|
||||
'sort' => 20,
|
||||
'requiredPermissions' => 'system/developer:r'
|
||||
),
|
||||
'anrechnungen' => array(
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
// 'entschuldigt' & 'noch nicht eingetragen' -> wirken sich nicht auf Antritte aus
|
||||
$config['NOTEN_OHNE_ANTRITT'] = [9, 17]; // tbl_note pk
|
||||
|
||||
$config['NOTEN_OCCURANCE_LIMIT_MAP'] = [17 => 1]; // across the 4 fixed antritte only one can be entschuldigt
|
||||
|
||||
// tbl_note pk of the 'entschuldigt' note. An entschuldigt Termin is preserved as its own dated
|
||||
// entry when a new pruefung of the same type is created (instead of being overwritten).
|
||||
$config['NOTE_ENTSCHULDIGT'] = 17;
|
||||
|
||||
// availability of the two Benotungstool import flows. When both are true they are shown as
|
||||
// separate buttons/dialogs.
|
||||
$config['CIS_GESAMTNOTE_PRUEFUNGSIMPORT'] = true; // dated import that creates a pruefung per row
|
||||
$config['CIS_GESAMTNOTE_NOTENIMPORT'] = false; // classic note-only import (uid + note, no date)
|
||||
@@ -67,6 +67,7 @@ $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['Cis/Benotungstool/.*'] = 'Cis/Benotungstool/index/$1';
|
||||
|
||||
$route['Abgabetool/Assistenz'] = 'Cis/Abgabetool/Assistenz';
|
||||
$route['Abgabetool/Assistenz/(:any)'] = 'Cis/Abgabetool/Assistenz/$1';
|
||||
|
||||
@@ -133,13 +133,21 @@ $config['students_tab_order'] = [
|
||||
|
||||
$config['stv_prestudent_tags'] = [
|
||||
'prioone' => ['readonly' => false],
|
||||
'priotwo' => ['readonly' => true],
|
||||
'priotwo' => ['readonly' => false],
|
||||
'hinweis' => ['readonly' => false],
|
||||
'hinweis_assistenz' => ['readonly' => true],
|
||||
'hinweis_kf' => ['readonly' => true],
|
||||
'hinweis_assistenz' => ['readonly' => false],
|
||||
'hinweis_kf' => ['readonly' => false],
|
||||
'hinweis_lehrende' => ['readonly' => false],
|
||||
'hinweis_stg_kf' => ['readonly' => true],
|
||||
'finished_stg' => ['readonly' => true],
|
||||
'finished_kf' => ['readonly' => true],
|
||||
'inwork_kf' => ['readonly' => true],
|
||||
'hinweis_stg_kf' => ['readonly' => false],
|
||||
'finished_stg' => ['readonly' => false],
|
||||
'finished_kf' => ['readonly' => false],
|
||||
'inwork_kf' => ['readonly' => false],
|
||||
'dd_auto' => ['readonly' => true],
|
||||
'wh_auto' => ['readonly' => true],
|
||||
'prewh_auto' => ['readonly' => true],
|
||||
'out_auto' => ['readonly' => true],
|
||||
'zgv_auto' => ['readonly' => true],
|
||||
'unterbrecher_auto' => ['readonly' => true],
|
||||
'stbtr_erh_auto' => ['readonly' => true],
|
||||
'jgv_auto' => ['readonly' => true],
|
||||
];
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Benotungstool extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => self::PERM_LOGGED
|
||||
]);
|
||||
|
||||
$this->_ci =& get_instance();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Benotungstool']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
class Compat extends Auth_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'ci' => ['basis/cis:r'],
|
||||
'legacy' => ['basis/cis:r'],
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
|
||||
/**
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ci()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'Compat']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function legacy()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'Compat']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class ProjektabgabeUebersicht extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => ['basis/cis:r']
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'ProjektabgabeUebersicht']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Zeitsperren extends Auth_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => ['basis/cis:r'],
|
||||
]);
|
||||
|
||||
// Load Libraries
|
||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* index loads the view Zeitsperren
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'zeitsperren']);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,18 +18,9 @@
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
//require_once('../../../include/studiengang.class.php');
|
||||
//require_once('../../../include/student.class.php');
|
||||
//require_once('../../../include/datum.class.php');
|
||||
//require_once('../../../include/mail.class.php');
|
||||
//require_once('../../../include/benutzerberechtigung.class.php');
|
||||
//require_once('../../../include/phrasen.class.php');
|
||||
//require_once('../../../include/projektarbeit.class.php');
|
||||
//require_once('../../../include/projektbetreuer.class.php');
|
||||
|
||||
class Lehre extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
@@ -40,38 +31,56 @@ class Lehre extends FHCAPI_Controller
|
||||
'LV' => self::PERM_LOGGED,
|
||||
'Pruefungen' => self::PERM_LOGGED,
|
||||
'semesterAverageGrade' => self::PERM_LOGGED,
|
||||
'getZugewieseneLv' => self::PERM_LOGGED,
|
||||
'getLeForLv' => self::PERM_LOGGED
|
||||
]);
|
||||
|
||||
|
||||
$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');
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
/**
|
||||
* constructs the emails of the groups from a lehrveranstaltung
|
||||
*/
|
||||
public function lvStudentenMail()
|
||||
public function lvStudentenMail()
|
||||
{
|
||||
$lehreinheit_id = $this->input->get("lehreinheit_id",TRUE);
|
||||
|
||||
// return early if the required parameter is missing
|
||||
if(!isset($lehreinheit_id))
|
||||
{
|
||||
$this->terminateWithError('Missing required parameter', self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$lehreinheit_id = $this->input->get("lehreinheit_id",TRUE);
|
||||
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
|
||||
$studentenMails = $this->LehreinheitModel->getStudentenMail($lehreinheit_id);
|
||||
// return early if the required parameter is missing
|
||||
if(!isset($lehreinheit_id))
|
||||
{
|
||||
$this->terminateWithError('Missing required parameter', self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$studentenMails = $this->getDataOrTerminateWithError($studentenMails);
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
|
||||
$studentenMails = $this->LehreinheitModel->getStudentenMail($lehreinheit_id);
|
||||
|
||||
$studentenMails = $this->getDataOrTerminateWithError($studentenMails);
|
||||
|
||||
//convert array of objects into array of strings
|
||||
$studentenMails = array_map(function($element){
|
||||
return $element->mail;
|
||||
}, $studentenMails);
|
||||
|
||||
$this->terminateWithSuccess($studentenMails);
|
||||
$this->terminateWithSuccess($studentenMails);
|
||||
}
|
||||
|
||||
public function LV($studiensemester_kurzbz, $lehrveranstaltung_id)
|
||||
@@ -81,13 +90,13 @@ class Lehre extends FHCAPI_Controller
|
||||
$result = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage(), $lehrveranstaltung_id);
|
||||
|
||||
$result = current($this->getDataOrTerminateWithError($result));
|
||||
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetches all Pruefungen of a student for a specific lehrveranstaltung
|
||||
* if the student passed the Pruefung on the first attempt, no information about the Pruefungen is stored in the database
|
||||
* if the student passed the Pruefung on the first attempt, no information about the Pruefungen is stored in the database
|
||||
* @param mixed $lehrveranstaltung_id
|
||||
* @return void
|
||||
*/
|
||||
@@ -145,5 +154,46 @@ class Lehre extends FHCAPI_Controller
|
||||
|
||||
$this->terminateWithSuccess(['average_grade' => $averageGrade, 'weighted_average_grade' => $weightedAverageGrade]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* fetches all assigned lehrveranstaltungen of a mitarbeiter for a given semester
|
||||
* @param mixed $uid
|
||||
* @param mixed $sem_kurzbz
|
||||
* @return void
|
||||
*/
|
||||
public function getZugewieseneLv() {
|
||||
$uid = $this->input->get("uid",TRUE);
|
||||
$sem_kurzbz = $this->input->get("sem_kurzbz",TRUE);
|
||||
|
||||
// TODO: error messages
|
||||
|
||||
if(!isset($sem_kurzbz) || isEmptyString($sem_kurzbz))
|
||||
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||
|
||||
if (!isset($uid) || isEmptyString($uid))
|
||||
$uid = getAuthUID();
|
||||
|
||||
// querying other ma_uids data requires admin permission
|
||||
if($uid !== getAuthUID()) {
|
||||
$this->load->library('PermissionLib');
|
||||
$isAdmin = $this->permissionlib->isBerechtigt('admin');
|
||||
if(!$isAdmin) $this->terminateWithError($this->p->t('ui', 'keineBerechtigung'), 'general');
|
||||
}
|
||||
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$result = $this->LehrveranstaltungModel->getLvForLektorInSemester($sem_kurzbz, $uid);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function getLeForLv() {
|
||||
$lv_id = $this->input->get("lv_id",TRUE);
|
||||
$sem_kurzbz = $this->input->get("sem_kurzbz",TRUE);
|
||||
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
|
||||
// $this->terminateWithSuccess($this->LehreinheitModel->getLesForLv($lv_id, $sem_kurzbz));
|
||||
$this->terminateWithSuccess($this->LehreinheitModel->getAllLehreinheitenForLvaAndMaUid($lv_id, getAuthUID(), $sem_kurzbz));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -36,7 +36,8 @@ class LvMenu extends FHCAPI_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'getLvMenu' => self::PERM_LOGGED
|
||||
'getLvMenu' => self::PERM_LOGGED,
|
||||
'getMultipleLvMenu' => self::PERM_LOGGED
|
||||
]);
|
||||
|
||||
$this->load->model("ressource/Mitarbeiter_model");
|
||||
@@ -61,24 +62,23 @@ class LvMenu extends FHCAPI_Controller
|
||||
|
||||
/**
|
||||
* alternative function to get multiple lvMenus with a single http request
|
||||
* not yet working as intended as the menu_lv.inc.php scripts called by the
|
||||
* lvMenuBuild event have logic coupled to require_once import which results in
|
||||
* a wrong logic after the first invocation -> faulty results for lvinfo, moodle
|
||||
* and several others
|
||||
*/
|
||||
public function getMultipleLvMenu($lvMenuOptionList){
|
||||
public function getMultipleLvMenu(){
|
||||
$lvMenuOptionList = $this->input->post('lvMenuOptionList', true);
|
||||
$result =[];
|
||||
foreach($lvMenuOptionList as $lvMenuOptions){
|
||||
$lvMenu = $this->getLvMenu($lvMenuOptions['lvid'],$lvMenuOptions['studiensemester_kurzbz']);
|
||||
if(isError($lvMenu)){
|
||||
// TODO: some lvMenu threw an error, handle error here
|
||||
}
|
||||
$lvMenu = $this->getLvMenuInternal($lvMenuOptions['lvid'],$lvMenuOptions['studiensemester_kurzbz']);
|
||||
|
||||
$result[$lvMenuOptions['lvid']]=$lvMenu;
|
||||
}
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function getLvMenu($lvid, $studiensemester_kurzbz)
|
||||
{
|
||||
|
||||
private function getLvMenuInternal($lvid, $studiensemester_kurzbz) {
|
||||
|
||||
// return early if parameters are missing
|
||||
if(!isset($lvid) || !isset($studiensemester_kurzbz))
|
||||
@@ -89,14 +89,14 @@ class LvMenu extends FHCAPI_Controller
|
||||
|
||||
// get the user
|
||||
if (!$user=getAuthUID())
|
||||
$this->terminateWithError($this->p->t('global', 'nichtAngemeldet'));
|
||||
$this->terminateWithError($this->p->t('global', 'nichtAngemeldet'));
|
||||
|
||||
// check if is_lector
|
||||
$is_lector = false;
|
||||
$mares = $this->Mitarbeiter_model->isMitarbeiter($user);
|
||||
if(hasData($mares))
|
||||
{
|
||||
$is_lector = getData($mares);
|
||||
$is_lector = getData($mares);
|
||||
}
|
||||
|
||||
// definition of user_is_allowed_to_upload
|
||||
@@ -105,7 +105,7 @@ class LvMenu extends FHCAPI_Controller
|
||||
|
||||
// load lehrveranstaltung
|
||||
$lvres = $this->Lehrveranstaltung_model->load($lvid);
|
||||
if(!hasData($lvres))
|
||||
if(!hasData($lvres))
|
||||
{
|
||||
$this->terminateWithError('LV ' . $lvid . ' not found.');
|
||||
}
|
||||
@@ -124,7 +124,7 @@ class LvMenu extends FHCAPI_Controller
|
||||
$stgres = $this->Studiengang_model->load(strval($studiengang_kz));
|
||||
if(!hasData($stgres))
|
||||
{
|
||||
$this->terminateWithError('Stg ' . $lv->studiengang_kz . ' not found.');
|
||||
$this->terminateWithError('Stg ' . $lv->studiengang_kz . ' not found.');
|
||||
}
|
||||
$stg = (getData($stgres))[0];
|
||||
$kurzbz = strtoupper($stg->typ . $stg->kurzbz);
|
||||
@@ -139,7 +139,7 @@ class LvMenu extends FHCAPI_Controller
|
||||
$angemeldet = false;
|
||||
|
||||
$lesres = $this->Lehreinheit_model->getLehreinheitenForStudentAndStudienSemester(
|
||||
$lvid, $user, $angezeigtes_stsem
|
||||
$lvid, $user, $angezeigtes_stsem
|
||||
);
|
||||
|
||||
if(hasData($lesres) && count(getData($lesres)) > 0)
|
||||
@@ -148,7 +148,7 @@ class LvMenu extends FHCAPI_Controller
|
||||
|
||||
// lehrfach
|
||||
$lehrfach_id='';
|
||||
|
||||
|
||||
if(defined('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN)
|
||||
{
|
||||
// Wenn der eingeloggte User zu einer der Lehreinheiten zugeteilt ist
|
||||
@@ -211,8 +211,8 @@ class LvMenu extends FHCAPI_Controller
|
||||
foreach($fbs as $row)
|
||||
{
|
||||
$lehrfach_oe_kurzbz_arr[] = $row->oe_kurzbz;
|
||||
if($this->PermissionLib->isBerechtigt('lehre', null, $row->oe_kurzbz)
|
||||
|| $this->PermissionLib->isBerechtigt('assistenz', null, $stg->oe_kurzbz))
|
||||
if($this->PermissionLib->isBerechtigt('lehre', null, $row->oe_kurzbz)
|
||||
|| $this->PermissionLib->isBerechtigt('assistenz', null, $stg->oe_kurzbz))
|
||||
{
|
||||
$user_is_allowed_to_upload=true;
|
||||
}
|
||||
@@ -224,21 +224,21 @@ class LvMenu extends FHCAPI_Controller
|
||||
$menu = array();
|
||||
|
||||
$this->fhc_menu_lvinfo($menu, $lvid, $studiengang_kz, $lektor_der_lv, $is_lector, $lehrfach_oe_kurzbz_arr);
|
||||
|
||||
|
||||
$this->fhc_menu_feedback($menu, $angemeldet, $lvid);
|
||||
|
||||
|
||||
$this->fhc_menu_gesamtnote($menu, $angemeldet, $lvid, $lv, $is_lector, $angezeigtes_stsem);
|
||||
|
||||
|
||||
$this->fhc_menu_emailStudierende($menu, $user, $angemeldet, $lvid, $angezeigtes_stsem);
|
||||
|
||||
|
||||
$this->fhc_menu_abmeldung($menu, $user, $is_lector, $lvid, $angezeigtes_stsem);
|
||||
|
||||
|
||||
$this->fhc_menu_lehretools($menu, $lvid, $angezeigtes_stsem, $sprache);
|
||||
|
||||
|
||||
$this->fhc_menu_anrechnungStudent($menu, $lvid, $angezeigtes_stsem);
|
||||
|
||||
|
||||
$this->fhc_menu_anrechnungLector($menu, $angezeigtes_stsem);
|
||||
|
||||
|
||||
|
||||
// Addons Menu Logic
|
||||
// ##########################################################################################
|
||||
@@ -272,18 +272,18 @@ class LvMenu extends FHCAPI_Controller
|
||||
'permissionLib' => &$this->PermissionLib,
|
||||
'phrasesLib' => &$this->PhrasesLib
|
||||
];
|
||||
|
||||
Events::trigger('lvMenuBuild',
|
||||
// passing $menu per reference
|
||||
function & () use (&$menu) {
|
||||
return $menu;
|
||||
},
|
||||
$params
|
||||
|
||||
Events::trigger('lvMenuBuild',
|
||||
// passing $menu per reference
|
||||
function & () use (&$menu) {
|
||||
return $menu;
|
||||
},
|
||||
$params
|
||||
);
|
||||
|
||||
// Menu sortieren
|
||||
// ##########################################################################################
|
||||
|
||||
|
||||
foreach ($menu as $key => $row){
|
||||
|
||||
// removes menu points that are not needed in the c4 lvUebersicht
|
||||
@@ -291,7 +291,7 @@ class LvMenu extends FHCAPI_Controller
|
||||
unset($menu[$key]);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// fills pos array to sort the menu
|
||||
$pos[$key] = $row['position'];
|
||||
|
||||
@@ -299,11 +299,18 @@ class LvMenu extends FHCAPI_Controller
|
||||
|
||||
array_multisort($pos, SORT_ASC, SORT_NUMERIC, $menu);
|
||||
|
||||
// HTTP response
|
||||
// ##########################################################################################
|
||||
|
||||
return $menu;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function getLvMenu($lvid, $studiensemester_kurzbz)
|
||||
{
|
||||
$menu = $this->getLvMenuInternal($lvid, $studiensemester_kurzbz);
|
||||
|
||||
$this->terminateWithSuccess($menu);
|
||||
|
||||
}
|
||||
|
||||
private function fhc_menu_lvinfo(&$menu, $lvid, $studiengang_kz, $lektor_der_lv, $is_lector, $lehrfach_oe_kurzbz_arr){
|
||||
@@ -372,7 +379,8 @@ class LvMenu extends FHCAPI_Controller
|
||||
'name'=>$this->p->t('lehre', 'gesamtnote'),
|
||||
'phrase' => 'lehre/gesamtnote',
|
||||
'c4_icon'=> base_url('skin/images/button_endnote.png'),
|
||||
'c4_link'=> base_url('cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php?lvid='.urlencode($lvid).'&stsem='.urlencode($angezeigtes_stsem))
|
||||
'c4_link'=> site_url('Cis/Benotungstool/'.urlencode($lvid).'/'.urlencode($angezeigtes_stsem))
|
||||
//'c4_link'=> base_url('cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php?lvid='.urlencode($lvid).'&stsem='.urlencode($angezeigtes_stsem))
|
||||
//'c4_link'=> base_url('benotungstool/lvgesamtnoteverwalten.php?lvid='.urlencode($lvid).'&stsem='.urlencode($angezeigtes_stsem))
|
||||
);
|
||||
}
|
||||
@@ -541,4 +549,4 @@ class LvMenu extends FHCAPI_Controller
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -418,10 +418,6 @@ class LvPlan extends FHCAPI_Controller
|
||||
*/
|
||||
private function fetchMoodleEvents($start_date, $end_date, $uid = null)
|
||||
{
|
||||
if ($uid && $uid !== getAuthUID()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$this->load->config('calendar');
|
||||
|
||||
$tz = new DateTimeZone($this->config->item('timezone'));
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,8 +32,6 @@ class Phrasen extends FHCAPI_Controller
|
||||
'setLanguage' => self::PERM_ANONYMOUS,
|
||||
'getLanguage' => self::PERM_ANONYMOUS,
|
||||
'getAllLanguages' => self::PERM_ANONYMOUS,
|
||||
'getPhrases' => self::PERM_ANONYMOUS,
|
||||
'getTabulatorPhrases' => self::PERM_ANONYMOUS,
|
||||
]);
|
||||
|
||||
$this->load->helper('hlp_language');
|
||||
@@ -94,59 +92,4 @@ class Phrasen extends FHCAPI_Controller
|
||||
$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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
<?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 Studiensemester extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
private $_ci;
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'getStudiensemester'=> self::PERM_LOGGED,
|
||||
|
||||
]);
|
||||
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
$this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* GET METHOD
|
||||
* returns List of all studiensemester as well as current one
|
||||
*/
|
||||
public function getStudiensemester()
|
||||
{
|
||||
$this->_ci->StudiensemesterModel->addOrder("start", "DESC");
|
||||
$result = $this->_ci->StudiensemesterModel->load();
|
||||
|
||||
$studiensemester = getData($result);
|
||||
$result = $this->_ci->StudiensemesterModel->getAkt();
|
||||
$aktuell = getData($result);
|
||||
|
||||
$this->terminateWithSuccess(array($studiensemester, $aktuell));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,367 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Zeitsperren extends FHCAPI_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'getZeitsperrenUser' => self::PERM_LOGGED,
|
||||
'getTypenZeitsperren' => self::PERM_LOGGED,
|
||||
'getTypenErreichbarkeit' => self::PERM_LOGGED,
|
||||
'getStunden' => self::PERM_LOGGED,
|
||||
'loadZeitsperre' => self::PERM_LOGGED,
|
||||
'add' => self::PERM_LOGGED,
|
||||
'update' => self::PERM_LOGGED,
|
||||
'delete' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
// Load Libraries
|
||||
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
|
||||
$this->load->library('form_validation');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'ui',
|
||||
'person',
|
||||
'zeitsperren'
|
||||
]);
|
||||
|
||||
// Load models
|
||||
$this->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel');
|
||||
$this->load->model('ressource/Zeitsperretyp_model', 'ZeitsperretypModel');
|
||||
$this->load->model('ressource/Erreichbarkeit_model', 'ErreichbarkeitModel');
|
||||
$this->load->model('ressource/Stunde_model', 'StundeModel');
|
||||
$this->load->model('ressource/Zeitaufzeichnung_model', 'ZeitaufzeichnungModel');
|
||||
}
|
||||
|
||||
public function getZeitsperrenUser($uid)
|
||||
{
|
||||
//check if $uid is passedUser
|
||||
$loggedInUser = getAuthUID();
|
||||
if($loggedInUser != $uid) {
|
||||
$this->load->library('PermissionLib');
|
||||
$isAdmin = $this->permissionlib->isBerechtigt('admin');
|
||||
if(!$isAdmin) {
|
||||
$this->terminateWithError($this->p->t('ui', 'noAdmin'), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->ZeitsperreModel->getZeitsperrenUser($uid);
|
||||
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
public function getTypenZeitsperren()
|
||||
{
|
||||
$this->ZeitsperretypModel->addOrder('beschreibung', 'ASC');
|
||||
$result = $this->ZeitsperretypModel->load();
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
public function getTypenErreichbarkeit()
|
||||
{
|
||||
$result = $this->ErreichbarkeitModel->load();
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
public function getStunden()
|
||||
{
|
||||
$this->StundeModel->addOrder('stunde', 'ASC');
|
||||
$result = $this->StundeModel->load();
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
public function loadZeitsperre($zeitsperre_id)
|
||||
{
|
||||
$this->ZeitsperreModel->addSelect(
|
||||
'campus.tbl_zeitsperre.*, typ.*,
|
||||
ma.person_id AS ma_person_id, ma.vorname AS ma_vorname, ma.nachname AS ma_nachname,
|
||||
ma.titelpre AS ma_titelpre, ma.titelpost AS ma_titelpost'
|
||||
);
|
||||
$this->ZeitsperreModel->addJoin('campus.tbl_zeitsperretyp typ', 'ON (typ.zeitsperretyp_kurzbz = campus.tbl_zeitsperre.zeitsperretyp_kurzbz)');
|
||||
$this->ZeitsperreModel->addJoin('public.tbl_benutzer ben', 'ON (ben.uid = campus.tbl_zeitsperre.vertretung_uid)', 'LEFT');
|
||||
$this->ZeitsperreModel->addJoin('public.tbl_person ma', 'ON (ma.person_id = ben.person_id)', 'LEFT');
|
||||
$result = $this->ZeitsperreModel->loadWhere(
|
||||
array('zeitsperre_id' => $zeitsperre_id)
|
||||
);
|
||||
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$this->terminateWithSuccess((current(getData($result)) ?: []));
|
||||
}
|
||||
|
||||
public function add($mitarbeiter_uid)
|
||||
{
|
||||
$loggedInUser = getAuthUID();
|
||||
|
||||
if($mitarbeiter_uid != $loggedInUser)
|
||||
$this->terminateWithError($this->p->t('ui', 'noPermission'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->form_validation->set_rules('zeitsperretyp_kurzbz', 'Grund Zeitsperre', 'required', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Grund Zeitsperre'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('vondatum', 'VonDatum', 'required|is_valid_date', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'VonDatum']),
|
||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'VonDatum'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('bisdatum', 'BisDatum', 'required|is_valid_date|callback_check_von_bis_datum|callback_check_diff_intval', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'BisDatum']),
|
||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'BisDatum']),
|
||||
'check_von_bis_datum' => $this->p->t('zeitsperre', 'error_VonDatumGroesserAlsBisDatum'),
|
||||
'check_diff_intval' => $this->p->t('zeitsperre', 'error_zeitraumAuffallendHoch')
|
||||
]);
|
||||
|
||||
if ($this->form_validation->run() == false)
|
||||
{
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
$bezeichnung = $this->input->post('bezeichnung');
|
||||
$vondatum = $this->input->post('vondatum');
|
||||
$vonstunde = $this->input->post('vonstunde');
|
||||
$bisdatum = $this->input->post('bisdatum');
|
||||
$bisstunde = $this->input->post('bisstunde');
|
||||
//$vonIso = $this->input->post('vonISO'); //Timestamp für Stunde
|
||||
//$bisIso = $this->input->post('bisISO'); //Timestamp für Stunde
|
||||
$erreichbarkeit_kurzbz = $this->input->post('erreichbarkeit_kurzbz');
|
||||
$vertretung_uid = $this->input->post('vertretung_uid');
|
||||
$zeitsperretyp_kurzbz = $this->input->post('zeitsperretyp_kurzbz');
|
||||
|
||||
//check if existing zeitsperre
|
||||
$result = $this->ZeitsperreModel->getSperreByDate($mitarbeiter_uid, $vondatum, $vonstunde, true);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
$this->terminateWithError($this->p->t('zeitsperren', 'error_existingZeitsperre', ['typ'=> current($data)->zeitsperretyp_kurzbz]), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
//check if existing zeitaufzeichnung
|
||||
if(in_array($zeitsperretyp_kurzbz, Zeitsperre_model::BLOCKIERENDE_ZEITSPERREN))
|
||||
{
|
||||
$result = $this->ZeitsperreModel->existsZeitaufzeichnung($mitarbeiter_uid, $vondatum, $bisdatum);
|
||||
|
||||
if(hasData($result))
|
||||
$this->terminateWithError($this->p->t('zeitsperren', 'error_existingZeitaufzeichnung'), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$result = $this->ZeitsperreModel->insert(
|
||||
[
|
||||
'mitarbeiter_uid' => $mitarbeiter_uid,
|
||||
'bezeichnung' => $bezeichnung,
|
||||
'vondatum' => $vondatum,
|
||||
'vonstunde' => $vonstunde,
|
||||
'bisdatum' => $bisdatum,
|
||||
'bisstunde' => $bisstunde,
|
||||
'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz,
|
||||
'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz,
|
||||
'vertretung_uid' => $vertretung_uid,
|
||||
'insertvon' => $loggedInUser,
|
||||
'insertamum' => date('c'),
|
||||
]
|
||||
);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function update($zeitsperre_id)
|
||||
{
|
||||
//check if loggedin User is owner of the zeitsperre
|
||||
$loggedInUser = getAuthUID();
|
||||
$result = $this->ZeitsperreModel->load($zeitsperre_id);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$uid = current($data)->mitarbeiter_uid;
|
||||
|
||||
if($uid != $loggedInUser)
|
||||
$this->terminateWithError($this->p->t('ui', 'noPermission'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
if(!$zeitsperre_id)
|
||||
{
|
||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Zeitsperre_id']), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
//get current params
|
||||
$array_update = [
|
||||
'bezeichnung',
|
||||
'vondatum',
|
||||
'vonstunde',
|
||||
'bisdatum',
|
||||
'bisstunde',
|
||||
// 'vonISO', //Timestamp für Stunde
|
||||
// 'bisISO', //Timestamp für Stunde
|
||||
'erreichbarkeit_kurzbz',
|
||||
'vertretung_uid',
|
||||
'zeitsperretyp_kurzbz',
|
||||
'mitarbeiter_uid',
|
||||
];
|
||||
$post = $this->input->post();
|
||||
$update = [];
|
||||
|
||||
foreach ($array_update as $prop)
|
||||
{
|
||||
if (array_key_exists($prop, $post))
|
||||
{
|
||||
$update[$prop] = $post[$prop];
|
||||
}
|
||||
}
|
||||
|
||||
// Validation
|
||||
$rulesDefined = false; //necessary, otherwise CI validation will always be triggered, even without rules
|
||||
foreach ($update as $key => $val) {
|
||||
switch ($key) {
|
||||
case 'zeitsperretyp_kurzbz':
|
||||
$this->form_validation->set_rules(
|
||||
$key,
|
||||
'Grund Zeitsperre',
|
||||
'required',
|
||||
['required' => $this->p->t('ui', 'error_fieldRequired', ['field'=>'Grund Zeitsperre'])]
|
||||
);
|
||||
$rulesDefined = true;
|
||||
break;
|
||||
case 'vondatum':
|
||||
$this->form_validation->set_rules(
|
||||
$key,
|
||||
'VonDatum',
|
||||
'required|is_valid_date',
|
||||
[
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field'=>'VonDatum']),
|
||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field'=>'VonDatum'])
|
||||
]
|
||||
);
|
||||
$rulesDefined = true;
|
||||
break;
|
||||
case 'bisdatum':
|
||||
$rules = 'required|is_valid_date';
|
||||
if (array_key_exists('vondatum', $update)) {
|
||||
$rules .= '|callback_check_von_bis_datum|callback_check_diff_intval';
|
||||
}
|
||||
$this->form_validation->set_rules(
|
||||
$key,
|
||||
'BisDatum',
|
||||
$rules,
|
||||
[
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field'=>'BisDatum']),
|
||||
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field'=>'BisDatum']),
|
||||
'check_von_bis_datum' => $this->p->t('zeitsperre', 'error_VonDatumGroesserAlsBisDatum'),
|
||||
'check_diff_intval' => $this->p->t('zeitsperre', 'error_zeitraumAuffallendHoch')
|
||||
]
|
||||
);
|
||||
$rulesDefined = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($rulesDefined && $this->form_validation->run() == false) {
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
if(array_key_exists('vondatum', $post) || array_key_exists('bisdatum', $post))
|
||||
{
|
||||
$result = $this->ZeitsperreModel->load($zeitsperre_id);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$data = current($data);
|
||||
|
||||
$mitarbeiter_uid = array_key_exists('mitarbeiter_uid', $post) ? $update['mitarbeiter_uid'] : $data->mitarbeiter_uid;
|
||||
$vondatum = array_key_exists('vondatum', $post) ? $update['vondatum'] : $data->vondatum;
|
||||
$bisdatum = array_key_exists('bisdatum', $post) ? $update['bisdatum'] : $data->bisdatum;
|
||||
$vonstunde = array_key_exists('vonstunde', $post) ? $update['vonstunde'] : $data->vonstunde;
|
||||
$zeitsperretyp_kurzbz = array_key_exists('zeitsperretyp_kurzbz', $post) ? $update['zeitsperretyp_kurzbz'] : $data->zeitsperretyp_kurzbz;
|
||||
|
||||
$result = $this->ZeitsperreModel->getSperreByDate($mitarbeiter_uid, $vondatum, $vonstunde, true);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
$this->terminateWithError($this->p->t('zeitsperren', 'error_existingZeitsperre', ['typ'=> current($data)->zeitsperretyp_kurzbz]), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
//check if existing zeitaufzeichnung
|
||||
if(in_array($zeitsperretyp_kurzbz, Zeitsperre_model::BLOCKIERENDE_ZEITSPERREN))
|
||||
{
|
||||
$result = $this->ZeitsperreModel->existsZeitaufzeichnung($mitarbeiter_uid, $vondatum, $bisdatum);
|
||||
|
||||
if(hasData($result))
|
||||
$this->terminateWithError($this->p->t('zeitsperren', 'error_existingZeitaufzeichnung'), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($update)) {
|
||||
$update['updatevon'] = $loggedInUser;
|
||||
$update['updateamum'] = date('c');
|
||||
$result = $this->ZeitsperreModel->update($zeitsperre_id, $update);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
else
|
||||
$this->terminateWithSuccess("no update");
|
||||
}
|
||||
|
||||
public function delete($zeitsperre_id)
|
||||
{
|
||||
|
||||
if (!is_numeric($zeitsperre_id) || (int)$zeitsperre_id <= 0)
|
||||
{
|
||||
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Zeitsperre_id']), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
//check if loggedin User is owner of the zeitsperre
|
||||
$loggedInUser = getAuthUID();
|
||||
$result = $this->ZeitsperreModel->load($zeitsperre_id);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$uid = current($data)->mitarbeiter_uid;
|
||||
|
||||
if($uid != $loggedInUser)
|
||||
$this->terminateWithError($this->p->t('ui', 'noPermission'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$result = $this->ZeitsperreModel->delete(
|
||||
array('zeitsperre_id' => $zeitsperre_id)
|
||||
);
|
||||
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
public function check_von_bis_datum($bisdatum)
|
||||
{
|
||||
$vondatum = $this->input->post('vondatum');
|
||||
|
||||
return $vondatum <= $bisdatum;
|
||||
}
|
||||
|
||||
public function check_diff_intval($bisdatum)
|
||||
{
|
||||
$vondatum = $this->input->post('vondatum');
|
||||
|
||||
// Intervall in days
|
||||
$vonTs = strtotime($vondatum);
|
||||
$bisTs = strtotime($bisdatum);
|
||||
|
||||
$tage = ($bisTs - $vonTs) / 86400;
|
||||
|
||||
// if intervall > 14
|
||||
return $tage <= 14;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
<?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 RoomPlan extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'addRoomReservation' => self::PERM_LOGGED,
|
||||
'deleteRoomReservation' => self::PERM_LOGGED,
|
||||
'getRoomCreationInfo' => self::PERM_LOGGED,
|
||||
'getGruppen' => self::PERM_LOGGED,
|
||||
'getLektor' => self::PERM_LOGGED,
|
||||
'getReservableMap' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
$this->load->library('LogLib');
|
||||
$this->loglib->setConfigs(array(
|
||||
'classIndex' => 5,
|
||||
'functionIndex' => 5,
|
||||
'lineIndex' => 4,
|
||||
'dbLogType' => 'API',
|
||||
'dbExecuteUser' => 'RESTful API'
|
||||
));
|
||||
|
||||
$this->load->library('form_validation');
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('StundenplanLib');
|
||||
|
||||
$this->loadPhrases(['ui']);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
|
||||
|
||||
public function addRoomReservation()
|
||||
{
|
||||
$this->form_validation->set_rules('selectedStart', "Start", "required");
|
||||
$this->form_validation->set_rules('selectedEnd', "End", "required");
|
||||
$this->form_validation->set_rules('title', "Title", "required|max_length[10]");
|
||||
$this->form_validation->set_rules('beschreibung', "Beschreibung", "required|max_length[32]");
|
||||
$this->form_validation->set_rules('ort_kurzbz', "Ort", "required|max_length[16]");
|
||||
$this->form_validation->set_rules('studiengang', 'Studiengang', 'numeric');
|
||||
$this->form_validation->set_rules('semester', 'Semester', 'integer|greater_than_equal_to[0]');
|
||||
$this->form_validation->set_rules('verband', 'Verband', 'trim');
|
||||
$this->form_validation->set_rules('gruppe', 'Gruppe', 'trim');
|
||||
$this->form_validation->set_rules('spezialgruppe', 'Spezialgruppe', 'max_length[32]');
|
||||
$this->form_validation->set_rules('lektoren', 'Lektoren');
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$start = $this->input->post('selectedStart');
|
||||
$end = $this->input->post('selectedEnd');
|
||||
$title = $this->input->post('title');
|
||||
$beschreibung = $this->input->post('beschreibung');
|
||||
$ort_kurzbz = $this->input->post('ort_kurzbz');
|
||||
|
||||
$studiengang_kz = $this->input->post('studiengang');
|
||||
$semester = $this->input->post('semester');
|
||||
$verband = $this->input->post('verband');
|
||||
$gruppe = $this->input->post('gruppe');
|
||||
$spezialgruppe = $this->input->post('spezialgruppe');
|
||||
$lektoren = $this->input->post('lektoren');
|
||||
|
||||
|
||||
$result = $this->stundenplanlib->addReservation($start, $end, $title, $beschreibung, $ort_kurzbz, $lektoren, $studiengang_kz, $semester, $verband, $gruppe, $spezialgruppe);
|
||||
|
||||
if (isError($result))
|
||||
$this->terminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
public function deleteRoomReservation()
|
||||
{
|
||||
$reservierung_id = $this->input->post('reservierung_id');
|
||||
|
||||
$result = $this->stundenplanlib->deleteReservation($reservierung_id);
|
||||
|
||||
if (isError($result))
|
||||
$this->terminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
public function getRoomCreationInfo()
|
||||
{
|
||||
$return_array = array('berechtigt' => false, 'studiengaenge' => []);
|
||||
if (!$this->permissionlib->isBerechtigt('lehre/reservierung'))
|
||||
$this->terminateWithSuccess($return_array);
|
||||
|
||||
$stg_berechtigungen = $this->permissionlib->getSTG_isEntitledFor('lehre/reservierung');
|
||||
if (isEmptyArray($stg_berechtigungen))
|
||||
$this->terminateWithSuccess($return_array);
|
||||
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$this->StudiengangModel->addSelect('studiengang_kz, UPPER(CONCAT(typ, kurzbz)) as kuerzel, kurzbzlang');
|
||||
$this->StudiengangModel->addOrder('typ, kurzbz');
|
||||
$this->StudiengangModel->db->where_in('studiengang_kz', $stg_berechtigungen);
|
||||
$studiengaenge = $this->StudiengangModel->loadWhere(array('aktiv' => true));
|
||||
|
||||
if (isError($studiengaenge))
|
||||
$this->terminateWithError($studiengaenge);
|
||||
|
||||
$return_array['studiengaenge'] = hasData($studiengaenge) ? getData($studiengaenge) : [];
|
||||
$return_array['berechtigt'] = true;
|
||||
|
||||
$this->terminateWithSuccess($return_array);
|
||||
}
|
||||
|
||||
public function getGruppen()
|
||||
{
|
||||
$query = $this->input->get('query');
|
||||
if (is_null($query))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$stg_berechtigungen = $this->permissionlib->getSTG_isEntitledFor('lehre/reservierung');
|
||||
|
||||
if (isEmptyArray($stg_berechtigungen))
|
||||
$this->terminateWithSuccess([]);
|
||||
|
||||
$this->load->model('organisation/gruppe_model', 'GruppeModel');
|
||||
|
||||
$query_words = explode(' ', urldecode($query));
|
||||
|
||||
$this->GruppeModel->addOrder('gruppe_kurzbz');
|
||||
$this->GruppeModel->db->group_start();
|
||||
foreach ($query_words as $word)
|
||||
{
|
||||
$this->GruppeModel->db->group_start();
|
||||
$this->GruppeModel->db->where('gruppe_kurzbz ILIKE', "%" . $word . "%");
|
||||
$this->GruppeModel->db->or_where('bezeichnung ILIKE', "%" . $word . "%");
|
||||
$this->GruppeModel->db->or_where('beschreibung ILIKE', "%" . $word . "%");
|
||||
$this->GruppeModel->db->or_where('orgform_kurzbz ILIKE', "%" . $word . "%");
|
||||
|
||||
if (is_numeric($word))
|
||||
{
|
||||
$this->GruppeModel->db->or_where('studiengang_kz', $word);
|
||||
}
|
||||
$this->GruppeModel->db->group_end();
|
||||
}
|
||||
$this->GruppeModel->db->group_end();
|
||||
$this->GruppeModel->db->where_in('studiengang_kz', $stg_berechtigungen);
|
||||
$gruppen = $this->GruppeModel->loadWhere(array('sichtbar' => true, 'lehre' => true));
|
||||
if (isError($gruppen))
|
||||
$this->terminateWithError($gruppen);
|
||||
|
||||
$this->terminateWithSuccess(hasData($gruppen) ? getData($gruppen) : []);
|
||||
}
|
||||
|
||||
public function getLektor()
|
||||
{
|
||||
|
||||
$query = $this->input->get('query');
|
||||
if (is_null($query))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$stg_berechtigungen = $this->permissionlib->getSTG_isEntitledFor('lehre/reservierung');
|
||||
|
||||
if (isEmptyArray($stg_berechtigungen))
|
||||
$this->terminateWithSuccess([]);
|
||||
|
||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||
|
||||
$query_words = explode(' ', urldecode($query));
|
||||
|
||||
$this->MitarbeiterModel->addSelect('uid, person_id, vorname, nachname');
|
||||
$this->MitarbeiterModel->addJoin('public.tbl_benutzer', 'uid = mitarbeiter_uid');
|
||||
$this->MitarbeiterModel->addJoin('public.tbl_person', 'person_id');
|
||||
$this->MitarbeiterModel->db->where('public.tbl_benutzer.aktiv', true);
|
||||
$this->MitarbeiterModel->db->group_start();
|
||||
foreach ($query_words as $word)
|
||||
{
|
||||
$this->MitarbeiterModel->db->group_start();
|
||||
$this->MitarbeiterModel->db->where('tbl_person.vorname ILIKE', "%" . $word . "%");
|
||||
$this->MitarbeiterModel->db->or_where('tbl_person.nachname ILIKE', "%" . $word . "%");
|
||||
$this->MitarbeiterModel->db->or_where('uid ILIKE', "%" . $word . "%");
|
||||
$this->MitarbeiterModel->db->group_end();
|
||||
}
|
||||
$this->MitarbeiterModel->db->group_end();
|
||||
|
||||
$this->MitarbeiterModel->addOrder('nachname');
|
||||
$this->MitarbeiterModel->addOrder('vorname');
|
||||
$mitarbeiter = $this->MitarbeiterModel->load();
|
||||
if (isError($mitarbeiter))
|
||||
$this->terminateWithError($mitarbeiter);
|
||||
|
||||
$this->terminateWithSuccess(hasData($mitarbeiter) ? getData($mitarbeiter) : []);
|
||||
}
|
||||
|
||||
public function getReservableMap($ort_kurzbz = null)
|
||||
{
|
||||
$this->form_validation->set_rules('start_date', "StartDate", "required");
|
||||
$this->form_validation->set_rules('end_date', "EndDate", "required");
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
// storing the post parameter in local variables
|
||||
$start_date = $this->input->post('start_date', true);
|
||||
$end_date = $this->input->post('end_date', true);
|
||||
|
||||
$result = $this->stundenplanlib->getReservableMap($ort_kurzbz, $start_date, $end_date);
|
||||
|
||||
$this->terminateWithSuccess(array('reservierbarMap' => hasData($result) ? getData($result) : []));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,9 +9,10 @@ class Detailheader extends FHCAPI_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'getHeader' => ['vertrag/mitarbeiter:r'],
|
||||
'getPersonAbteilung' => ['vertrag/mitarbeiter:r'],
|
||||
'getLeitungOrg' => ['vertrag/mitarbeiter:r'],
|
||||
'getHeader' => self::PERM_LOGGED,
|
||||
'getPersonAbteilung' => self::PERM_LOGGED,
|
||||
'getLeitungOrg' => self::PERM_LOGGED,
|
||||
'getSemesterStati' => self::PERM_LOGGED,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -48,6 +49,17 @@ class Detailheader extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess(current($data));
|
||||
}
|
||||
|
||||
public function getSemesterStati($prestudent_id)
|
||||
{
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
|
||||
$result = $this->PrestudentstatusModel->getAllPrestudentstatiWithStudiensemester($prestudent_id);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
<?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');
|
||||
|
||||
use CI3_Events as Events;
|
||||
|
||||
class PaabgabeUebersicht extends FHCAPI_Controller
|
||||
{
|
||||
const DOWNLOAD_PERMISSION = 'lehre/abgabetool:download';
|
||||
const ABGABE_TYPES = ['Bachelor', 'Diplom'];
|
||||
|
||||
/**
|
||||
* PaabgabeUebersicht API constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'viewData' => self::PERM_LOGGED,
|
||||
'getPaAbgaben' => array('lehre/abgabetool:r'),
|
||||
'getStudiengaenge' => array('lehre/abgabetool:r'),
|
||||
'getTermine' => array('lehre/abgabetool:r'),
|
||||
'getPaAbgabetypen' => array('lehre/abgabetool:r'),
|
||||
'downloadZip' => array('lehre/abgabetool:r'),
|
||||
//'downloadProjektarbeit' => array('lehre/abgabetool:r')
|
||||
]);
|
||||
|
||||
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
|
||||
|
||||
$this->load->library('PermissionLib');
|
||||
|
||||
// Load Phrases
|
||||
$this->loadPhrases([
|
||||
'abgabetool'
|
||||
]);
|
||||
}
|
||||
|
||||
public function viewData()
|
||||
{
|
||||
$viewData = [
|
||||
"uid" => getAuthUID(),
|
||||
// TODO create permission
|
||||
"showEdit" => true,
|
||||
];
|
||||
|
||||
$this->terminateWithSuccess($viewData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Projektabgaben for search criteria.
|
||||
*/
|
||||
public function getPaAbgaben()
|
||||
{
|
||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
||||
$abgabetyp_kurzbz = $this->input->get('abgabetyp_kurzbz');
|
||||
$abgabedatum = $this->input->get('abgabedatum');
|
||||
$personSearchString = $this->input->get('personSearchString');
|
||||
|
||||
$result = $this->PaabgabeModel->getPaAbgaben(self::ABGABE_TYPES, $studiengang_kz, $abgabetyp_kurzbz, $abgabedatum, $personSearchString);
|
||||
|
||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
|
||||
|
||||
// check wether Abgabe is in visual library
|
||||
if (hasData($result))
|
||||
{
|
||||
Events::trigger('in_visual_library', getData($result));
|
||||
}
|
||||
|
||||
$this->terminateWithSuccess(getData($result) ?: []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Studiengänge for which user is entitled for
|
||||
*/
|
||||
public function getStudiengaenge()
|
||||
{
|
||||
$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::DOWNLOAD_PERMISSION);
|
||||
|
||||
if (!$studiengang_kz_arr) $this->terminateWithSuccess([]);
|
||||
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$this->StudiengangModel->addSelect('tbl_studiengang.*, UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) AS kuerzel', $studiengang_kz_arr);
|
||||
$this->StudiengangModel->db->where_in('studiengang_kz', $studiengang_kz_arr);
|
||||
$this->StudiengangModel->addOrder('typ, kurzbz');
|
||||
$result = $this->StudiengangModel->load();
|
||||
|
||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
|
||||
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get projekt work due dates, depending on search criteria.
|
||||
*/
|
||||
public function getTermine()
|
||||
{
|
||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
||||
$abgabetyp_kurzbz = $this->input->get('abgabetyp_kurzbz');
|
||||
|
||||
$result = $this->PaabgabeModel->getTermine(self::ABGABE_TYPES, $studiengang_kz, $abgabetyp_kurzbz);
|
||||
|
||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
|
||||
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all submission types.
|
||||
*/
|
||||
public function getPaAbgabetypen()
|
||||
{
|
||||
// Load model PaabgabetypModel
|
||||
$this->load->model('education/Paabgabetyp_model', 'PaabgabetypModel');
|
||||
|
||||
$this->PaabgabetypModel->addOrder('bezeichnung');
|
||||
$result = $this->PaabgabetypModel->load();
|
||||
|
||||
if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
|
||||
|
||||
$this->terminateWithSuccess((getData($result) ?: []));
|
||||
}
|
||||
|
||||
/**
|
||||
* Download zip files with project works matching submission search criteria.
|
||||
*/
|
||||
public function downloadZip()
|
||||
{
|
||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
||||
$abgabetyp_kurzbz = $this->input->get('abgabetyp_kurzbz');
|
||||
$abgabedatum = $this->input->get('abgabedatum');
|
||||
$personSearchString = $this->input->get('personSearchString');
|
||||
|
||||
if (!isset($studiengang_kz) && !isset($abgabetyp_kurzbz) && !isset($abgabedatum) && !isset($personSearchString))
|
||||
$this->terminateWithFileOutput('text/plain', $this->p->t('abgabetool', 'nichtsAusgewaehlt'));
|
||||
|
||||
$this->load->library('zip');
|
||||
|
||||
$result = $this->PaabgabeModel->getPaAbgaben(self::ABGABE_TYPES, $studiengang_kz, $abgabetyp_kurzbz, $abgabedatum, $personSearchString);
|
||||
|
||||
if (isError($result)) $this->terminateWithFileOutput('text/plain', getError($result));
|
||||
|
||||
$fileExists = false;
|
||||
$studiengang_kuerzel = null;
|
||||
|
||||
if (!hasData($result)) $this->terminateWithFileOutput('text/plain', $this->p->t('abgabetool', 'keineDateienVorhanden'));
|
||||
|
||||
$abgaben = getData($result);
|
||||
|
||||
foreach ($abgaben as $abgabe)
|
||||
{
|
||||
$path = PAABGABE_PATH.$abgabe->paabgabe_id.'_'.$abgabe->uid.'.pdf';
|
||||
if (file_exists($path))
|
||||
{
|
||||
$fileExists = true;
|
||||
$studiengang_kuerzel = $abgabe->studiengang_kuerzel;
|
||||
$this->zip->read_file($path);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$fileExists) $this->terminateWithFileOutput('text/plain', $this->p->t('abgabetool', 'keineDateienVorhanden'));
|
||||
|
||||
$studiengang_kz = $this->input->get('studiengang_kz');
|
||||
$zipFileName = 'Abgabe'.(isset($studiengang_kz) && isset($studiengang_kuerzel) ? '_'.$studiengang_kuerzel : '').'.zip';
|
||||
$this->zip->download($zipFileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Download Projektarbeit document.
|
||||
*/
|
||||
//~ public function downloadProjektarbeit()
|
||||
//~ {
|
||||
//~ $paabgabe_id = $this->input->get('paabgabe_id');
|
||||
|
||||
//~ if (!is_numeric($paabgabe_id))
|
||||
//~ $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Abgabe ID']), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
//~ //$abgabeRes = $this->PaabgabeModel->getEndabgabe($projektarbeit_id);
|
||||
//~ $this->PaabgabeModel->addSelect("paabgabe_id, student_uid, tbl_paabgabe.datum, tbl_paabgabe.abgabedatum, projekttyp_kurzbz, titel, titel_english,
|
||||
//~ paabgabe_id || '_' || student_uid || '.pdf' AS filename");
|
||||
//~ $this->PaabgabeModel->addJoin('lehre.tbl_projektarbeit', 'projektarbeit_id');
|
||||
//~ $abgabeRes = $this->PaabgabeModel->load($paabgabe_id);
|
||||
|
||||
//~ if (isError($abgabeRes))
|
||||
//~ show_error(getError($abgabeRes));
|
||||
|
||||
//~ if (hasData($abgabeRes))
|
||||
//~ {
|
||||
//~ $endabgabe = getData($abgabeRes)[0];
|
||||
//~ $filepath = PAABGABE_PATH.$endabgabe->filename;
|
||||
|
||||
//~ if (file_exists($filepath))
|
||||
//~ {
|
||||
//~ $this->output
|
||||
//~ ->set_status_header(200)
|
||||
//~ ->set_content_type('application/pdf', 'utf-8')
|
||||
//~ ->set_header('Content-Disposition: attachment; filename="'.$endabgabe->filename.'"')
|
||||
//~ ->set_output(file_get_contents($filepath))
|
||||
//~ ->_display();
|
||||
//~ }
|
||||
//~ else
|
||||
//~ {
|
||||
//~ show_error("File does not exist.");
|
||||
//~ }
|
||||
//~ }
|
||||
//~ }
|
||||
}
|
||||
@@ -246,12 +246,12 @@ class Abschlusspruefung extends FHCAPI_Controller
|
||||
{
|
||||
$searchString = $this->input->get('searchString') ?? '';
|
||||
|
||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
|
||||
$result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'ohneMaUid');
|
||||
$result = $this->PersonModel->searchPerson($searchString, 'mitMaUid');
|
||||
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$this->terminateWithSuccess($result ?: []);
|
||||
|
||||
@@ -287,7 +287,10 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
*/
|
||||
public function getNoten()
|
||||
{
|
||||
$result = $this->NoteModel->getAllActive();
|
||||
$this->NoteModel->addOrder('notenwert', 'ASC');
|
||||
$this->NoteModel->addOrder('bezeichnung', 'ASC');
|
||||
|
||||
$result = $this->NoteModel->load();
|
||||
|
||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
|
||||
@@ -144,6 +144,7 @@ class Student extends FHCAPI_Controller
|
||||
. $this->PrestudentModel->escape($studiensemester_kurzbz)
|
||||
. ") AS statusofsemester"
|
||||
);
|
||||
$this->PrestudentModel->addSelect($this->PrestudentModel->escape($studiensemester_kurzbz) . ' as query_studiensemester_kurzbz');
|
||||
|
||||
$this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id', 'LEFT');
|
||||
$this->PrestudentModel->addJoin('public.tbl_benutzer b', 'student_uid = uid', 'LEFT');
|
||||
|
||||
@@ -138,7 +138,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -439,13 +439,15 @@ class Students extends FHCAPI_Controller
|
||||
$this->studentlistlib->addSelect("'' AS verband");
|
||||
$this->studentlistlib->addSelect("'' AS gruppe");
|
||||
|
||||
$query_studiensemester_kurzbz = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : '\'NULL\'';
|
||||
$this->studentlistlib->addSelect($query_studiensemester_kurzbz . ' as query_studiensemester_kurzbz');
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -556,6 +558,7 @@ class Students extends FHCAPI_Controller
|
||||
$this->studentlistlib->addJoin("public.tbl_student s", "prestudent_id");
|
||||
|
||||
$this->studentlistlib->addSelect("'' AS priorisierung_relativ");
|
||||
$this->studentlistlib->addSelect($this->PrestudentModel->escape($studiensemester_kurzbz) . ' as query_studiensemester_kurzbz');
|
||||
|
||||
if ($gruppe_kurzbz !== null) {
|
||||
$this->studentlistlib->addJoin('public.tbl_benutzergruppe g', 'uid', '', 'after_b');
|
||||
@@ -594,10 +597,22 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
protected function decodeTagsJsonInResult(&$data)
|
||||
{
|
||||
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED) {
|
||||
array_walk($data, function($item, $key) {
|
||||
if(isset($item->tags))
|
||||
{
|
||||
$item->tags = json_decode($item->tags);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $prestudent_id
|
||||
*
|
||||
@@ -638,7 +653,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -671,7 +686,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -705,7 +720,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -755,6 +770,7 @@ class Students extends FHCAPI_Controller
|
||||
END
|
||||
) AS semester", false);
|
||||
|
||||
$this->studentlistlib->addSelect($this->PrestudentModel->escape($studiensemester_kurzbz) . ' as query_studiensemester_kurzbz');
|
||||
|
||||
if ($prestudent_ids && $student_uids) {
|
||||
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_ids);
|
||||
@@ -773,7 +789,7 @@ class Students extends FHCAPI_Controller
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->decodeTagsJsonInResult($data);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,9 @@ class Tags extends Tag_Controller
|
||||
'addTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'updateTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'doneTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'deleteTag' => self::BERECHTIGUNG_KURZBZ
|
||||
'deleteTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'getAllTags' => self::BERECHTIGUNG_KURZBZ,
|
||||
'rebuildTagsForTypeId' => self::BERECHTIGUNG_KURZBZ,
|
||||
]);
|
||||
|
||||
$this->config->load('stv');
|
||||
@@ -45,4 +47,5 @@ class Tags extends Tag_Controller
|
||||
{
|
||||
parent::doneTag($this->config->item('stv_prestudent_tags'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,12 +13,13 @@ class Mylv extends Auth_Controller
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
parent::__construct([
|
||||
'Student' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Studiensemester' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Lvs' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Info' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Pruefungen' => ['student/anrechnung_beantragen:r','user:r'] // TODO(chris): permissions?
|
||||
'Student' => ['student/anrechnung_beantragen:r','user:r', 'basis/cis:r'], // TODO(chris): permissions?
|
||||
'Studiensemester' => ['student/anrechnung_beantragen:r','user:r', 'basis/cis:r'], // TODO(chris): permissions?
|
||||
'Lvs' => ['student/anrechnung_beantragen:r','user:r', 'basis/cis:r'], // TODO(chris): permissions?
|
||||
'Info' => ['student/anrechnung_beantragen:r','user:r', 'basis/cis:r'], // TODO(chris): permissions?
|
||||
'Pruefungen' => ['student/anrechnung_beantragen:r','user:r', 'basis/cis:r'] // TODO(chris): permissions?
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -44,13 +45,27 @@ class Mylv extends Auth_Controller
|
||||
public function Studiensemester()
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||
|
||||
$result = $this->StudiensemesterModel->getWhereStudentHasLvs(getAuthUID());
|
||||
$isMitarbeiter = getData($this->MitarbeiterModel->isMitarbeiter(getAuthUID())) ?? false;
|
||||
if($isMitarbeiter) {
|
||||
$result = $this->StudiensemesterModel->getWhereMitarbeiterHasLvs(getAuthUID());
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
} else if(getData($this->StudentModel->isStudent(getAuthUID())) ?? false) { // $isStudent
|
||||
$result = $this->StudiensemesterModel->getWhereStudentHasLvs(getAuthUID());
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
} else {
|
||||
$this->outputJsonError('neither student or mitarbeiter');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -58,13 +73,27 @@ class Mylv extends Auth_Controller
|
||||
public function Lvs($studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||
|
||||
$result = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage());
|
||||
$isMitarbeiter = getData($this->MitarbeiterModel->isMitarbeiter(getAuthUID())) ?? false;
|
||||
if($isMitarbeiter) {
|
||||
$result = $this->LehrveranstaltungModel->getLvsByMitarbeiterInSemester(getAuthUID(), $studiensemester_kurzbz);
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
} else if(getData($this->StudentModel->isStudent(getAuthUID())) ?? false) { // $isStudent
|
||||
$result = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage());
|
||||
|
||||
if (isError($result))
|
||||
return $this->outputJsonError(getError($result));
|
||||
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
} else {
|
||||
$this->outputJsonError('neither student or mitarbeiter');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -358,8 +358,7 @@ class AbgabetoolJob extends JOB_Controller
|
||||
foreach($assistenzMap as $assistenz_person_id => $tupelArr) {
|
||||
|
||||
$abgabenString = '<div style="font-family: Arial, sans-serif; color: #333;">';
|
||||
$hasContent = false;
|
||||
|
||||
|
||||
foreach($tupelArr as $tupel) {
|
||||
$projektarbeit_id = $tupel[0];
|
||||
$assistenzRow = $tupel[1];
|
||||
@@ -378,7 +377,6 @@ class AbgabetoolJob extends JOB_Controller
|
||||
if(count($relevantAbgaben) == 0) {
|
||||
continue;
|
||||
}
|
||||
$hasContent = true;
|
||||
|
||||
// Format the Student Name
|
||||
$s = $relevantAbgaben[0];
|
||||
@@ -449,12 +447,7 @@ class AbgabetoolJob extends JOB_Controller
|
||||
}
|
||||
|
||||
$abgabenString .= '</div>';
|
||||
|
||||
// skip send entirely
|
||||
if (!$hasContent) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// done with building the change list, now send it
|
||||
$assistenzRow = $tupelArr[0][1];
|
||||
$anrede = $assistenzRow->anrede;
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
if (!defined("BASEPATH")) exit("No direct script access allowed");
|
||||
|
||||
use \DateTime as DateTime;
|
||||
|
||||
class TagJob extends JOB_Controller
|
||||
{
|
||||
|
||||
const BATCHUSER = 'sftest';
|
||||
|
||||
/**
|
||||
* API constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Configs
|
||||
$this->load->config('stv');
|
||||
|
||||
// Library
|
||||
$this->load->library('TagLib');
|
||||
|
||||
// Load Models
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('system/Notiztyp_model', 'NotiztypModel');
|
||||
|
||||
$this->loadPhrases([
|
||||
'lehre'
|
||||
]);
|
||||
}
|
||||
|
||||
public function rebuildAutomatedTags()
|
||||
{
|
||||
|
||||
|
||||
$automatedTagsRes = $this->NotiztypModel->loadWhere(array('automatisiert' => true, 'taglib IS NOT NULL' => null));
|
||||
$automatedTags = hasData($automatedTagsRes) ? getData($automatedTagsRes) : [];
|
||||
|
||||
|
||||
$result = $this->StudiensemesterModel->getAktOrNextSemester();
|
||||
if (isError($result))
|
||||
{
|
||||
$this->logInfo('Start Job rebuild Automated Tags');
|
||||
$this->logError('Error occurred during retrieving studiensemester');
|
||||
return $this->logInfo('End Job rebuild Automated Tags');
|
||||
}
|
||||
|
||||
if (empty($result->retval) || !isset($result->retval[0])) {
|
||||
$this->logInfo('Start Job rebuild Automated Tags');
|
||||
$this->logError('No Studiensemester found');
|
||||
return $this->logInfo('End Job rebuild Automated Tags');
|
||||
}
|
||||
$studiensemester_kurzbz = $result->retval[0]->studiensemester_kurzbz ?? null;
|
||||
$params = array(
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
);
|
||||
|
||||
$this->logInfo('Start Job rebuild Automated Tags ' . $studiensemester_kurzbz);
|
||||
foreach($automatedTags as $autoTag)
|
||||
{
|
||||
// getPath: must not be lost
|
||||
$filePath = APPPATH . 'libraries/' . $autoTag->taglib . '.php'; // APPPATH = application/
|
||||
|
||||
if(file_exists($filePath)) {
|
||||
require_once($filePath);
|
||||
} else {
|
||||
$this->logInfo("File not found: " . $filePath);
|
||||
continue;
|
||||
}
|
||||
|
||||
$kurz_bz = $autoTag->typ_kurzbz;
|
||||
// className without PATH (basename)
|
||||
$className = basename($autoTag->taglib);
|
||||
|
||||
$obj = new $className();
|
||||
|
||||
$outputArray = $obj->getZuordnungIds($params);
|
||||
$typeId = $outputArray->typeId;
|
||||
|
||||
$paramsTag = array(
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'kurzbz' => $kurz_bz,
|
||||
'data' => $outputArray->data,
|
||||
'typeId' => $typeId
|
||||
);
|
||||
|
||||
$result = $this->taglib->updateAutomatedTags($paramsTag);
|
||||
|
||||
if (isError($result)) {
|
||||
$this->logError('Error occurred during updateAutomatedTags ' . $kurz_bz);
|
||||
continue;
|
||||
}
|
||||
|
||||
$data = is_array($result) ? $result['retval'] : $result->retval;
|
||||
|
||||
//SUMMARY
|
||||
$this->logInfo("Tag " . $result->retval['input']['tag'] . " | type_id " . $typeId . " --"
|
||||
. " Count Recycled: " . $result->retval['summary']['recycled']
|
||||
. " Count Added: ". $result->retval['summary']['added']
|
||||
. " Count Deleted: ". $result->retval['summary']['deleted']);
|
||||
|
||||
//DETAILS
|
||||
if($result->retval['results']['newTags'])
|
||||
$this->logInfo("Tag " . $result->retval['input']['tag'] . "New tag(s): " . implode(', ', $result->retval['results']['newTags']));
|
||||
if($result->retval['results']['deletedTagsIds'])
|
||||
$this->logInfo("Tag " . $result->retval['input']['tag'] . "Deleted tags(s: " . implode(', ', $result->retval['results']['deletedTagsIds']));
|
||||
if ($result->retval['results']['retaggedIds'])
|
||||
$this->logInfo("Tag " . $result->retval['input']['tag'] . "Recycled tag(s): " . implode(', ', $result->retval['results']['retaggedIds']));
|
||||
|
||||
}
|
||||
$this->logInfo( "End Job rebuild Automated Tags");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -215,8 +215,11 @@ class Pruefungsprotokoll extends Auth_Controller
|
||||
if (hasData($abschlusspruefung))
|
||||
{
|
||||
$abschlusspruefung_data = getData($abschlusspruefung);
|
||||
if ($this->permissionlib->isBerechtigt('admin') ||
|
||||
(isset($abschlusspruefung_data->studiengang_kz) && $this->permissionlib->isBerechtigt('assistenz', 'suid', $abschlusspruefung_data->studiengang_kz))
|
||||
if ($this->permissionlib->isBerechtigt('admin')
|
||||
|| (
|
||||
isset($abschlusspruefung_data->studiengang_kz)
|
||||
&& $this->permissionlib->isBerechtigt('assistenz', 'suid', $abschlusspruefung_data->studiengang_kz)
|
||||
)
|
||||
|| $this->_uid === $abschlusspruefung_data->uid_vorsitz)
|
||||
$result = $abschlusspruefung;
|
||||
else
|
||||
|
||||
@@ -198,7 +198,19 @@ class Gradelist extends Auth_Controller
|
||||
if (!isset($row_noten->found))
|
||||
{
|
||||
$result_lv = $this->LehrveranstaltungModel->load($row_noten->lehrveranstaltung_id);
|
||||
$result_stg = $this->StudiengangModel->load($result_lv->retval[0]->studiengang_kz);
|
||||
|
||||
$studiengang_kz = null;
|
||||
|
||||
if (!empty($result_lv->retval) && isset($result_lv->retval[0]) && isset($result_lv->retval[0]->studiengang_kz))
|
||||
{
|
||||
$result_stg = $this->StudiengangModel->load($result_lv->retval[0]->studiengang_kz);
|
||||
|
||||
if (!empty($result_stg->retval) && isset($result_stg->retval[0]) && is_object($result_stg->retval[0]) && isset($result_stg->retval[0]->kurzbzlang))
|
||||
{
|
||||
$studiengang_kz = $result_stg->retval[0]->kurzbzlang;
|
||||
}
|
||||
}
|
||||
|
||||
$courses['semester'][$row_noten->studiensemester_kurzbz]['lvs_nonstpl'][] = array(
|
||||
'lehrveranstaltung_id' => $row_noten->lehrveranstaltung_id,
|
||||
'lehrtyp_kurzbz' => $result_lv->retval[0]->lehrtyp_kurzbz,
|
||||
@@ -212,8 +224,8 @@ class Gradelist extends Auth_Controller
|
||||
'semester' => $result_lv->retval[0]->semester,
|
||||
'note' => $row_noten->note,
|
||||
'datum' => $row_noten->benotungsdatum,
|
||||
'zugeordnet' => true,
|
||||
'studiengang_kurzbz' => $result_stg->retval[0]->kurzbzlang
|
||||
'studiengang_kurzbz' => $studiengang_kz,
|
||||
'zugeordnet' => true
|
||||
);
|
||||
if(!isset($courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl']))
|
||||
$courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] = 0;
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Phrases extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'system/phrase:r',
|
||||
'table' => 'system/phrase:r',
|
||||
'view' => 'system/phrase:r',
|
||||
'deltext' => 'system/phrase:rw',
|
||||
'edit' => 'system/phrase:rw',
|
||||
'save' => 'system/phrase:rw',
|
||||
'newText' => 'system/phrase:rw',
|
||||
'editText' => 'system/phrase:rw',
|
||||
'saveText' => 'system/phrase:rw'
|
||||
)
|
||||
);
|
||||
|
||||
// Loads the phrases library
|
||||
$this->load->library('PhrasesLib');
|
||||
|
||||
// Loads the widget library
|
||||
$this->load->library('WidgetLib');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('system/phrases/phrases.php');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function table()
|
||||
{
|
||||
$phrases = $this->phraseslib->getPhraseByApp('aufnahme');
|
||||
if ($phrases->error)
|
||||
show_error(getError($phrases));
|
||||
|
||||
$data = array(
|
||||
'app' => 'aufnahme',
|
||||
'phrases' => $phrases->retval
|
||||
);
|
||||
|
||||
$this->load->view('system/phrases/phrasesList.php', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function view($phrase_id)
|
||||
{
|
||||
if (!is_numeric($phrase_id))
|
||||
show_error('Invalid phrase_id parameter');
|
||||
|
||||
$phrase = $this->phraseslib->getPhrase($phrase_id);
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->getPhraseInhalt($phrase_id);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error(getError($phrase_inhalt));
|
||||
|
||||
$data = array(
|
||||
'phrase_id' => $phrase_id,
|
||||
'phrase' => $phrase->retval[0]->phrase,
|
||||
'phrase_inhalt' => $phrase_inhalt->retval
|
||||
);
|
||||
|
||||
$this->load->view('system/phrases/phrasesinhaltList.php', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function deltext($phrasentext_id, $phrase_id)
|
||||
{
|
||||
if (!is_numeric($phrasentext_id) || !is_numeric($phrase_id))
|
||||
show_error('Invalid phrasentext_id or phrase_id parameter');
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->delPhrasentext($phrasentext_id);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error(getError($phrase_inhalt));
|
||||
|
||||
redirect('/system/Phrases/view/'.$phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function edit($phrase_id = null)
|
||||
{
|
||||
if (!is_numeric($phrase_id)) return;
|
||||
|
||||
$phrase = $this->phraseslib->getPhrase($phrase_id);
|
||||
if ($phrase->error)
|
||||
show_error(getError($phrase));
|
||||
|
||||
if (count($phrase->retval) != 1)
|
||||
show_error('Phrase nicht vorhanden! ID: '.$phrase_id);
|
||||
|
||||
$data = array(
|
||||
'phrase' => $phrase->retval[0]
|
||||
);
|
||||
|
||||
$this->load->view('system/phrases/phrasesEdit', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$phrase_id = $this->input->post('phrase_id');
|
||||
$data = array('phrase' => $this->input->post('phrase'));
|
||||
|
||||
$phrase = $this->phraseslib->savePhrase($phrase_id, $data);
|
||||
if ($phrase->error)
|
||||
show_error(getError($phrase));
|
||||
|
||||
$phrase_id = $phrase->retval;
|
||||
|
||||
redirect('/system/Phrases/edit/'.$phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function newText()
|
||||
{
|
||||
$phrase_id = $this->input->post('phrase_id');
|
||||
|
||||
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
|
||||
|
||||
$this->OrganisationseinheitModel->addLimit(1);
|
||||
$this->OrganisationseinheitModel->addOrder('oe_kurzbz');
|
||||
|
||||
$resultOE = $this->OrganisationseinheitModel->loadWhere(array('aktiv' => true, 'oe_parent_kurzbz' => null));
|
||||
if ($resultOE->error)
|
||||
show_error(getError($resultOE));
|
||||
|
||||
if (hasData($resultOE))
|
||||
{
|
||||
$orgeinheit_kurzbz = $resultOE->retval[0]->oe_kurzbz;
|
||||
|
||||
$data = array(
|
||||
'phrase_id' => $phrase_id,
|
||||
'sprache' => 'German',
|
||||
'text' => '',
|
||||
'description' => '',
|
||||
'orgeinheit_kurzbz' => $orgeinheit_kurzbz
|
||||
);
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->insertPhraseinhalt($data);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error(getError($phrase_inhalt));
|
||||
|
||||
$phrase_inhalt_id = $phrase_inhalt->retval;
|
||||
|
||||
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error('No valid organisation unit found');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function editText($phrasentext_id)
|
||||
{
|
||||
$phrase_inhalt = $this->phraseslib->getPhrasentextById($phrasentext_id);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error(getError($phrase_inhalt));
|
||||
|
||||
$data = $phrase_inhalt->retval[0];
|
||||
|
||||
$this->load->view('system/phrases/phraseinhaltEdit', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function saveText()
|
||||
{
|
||||
$phrase_inhalt_id = $this->input->post('phrase_inhalt_id');
|
||||
|
||||
$data = array(
|
||||
'orgeinheit_kurzbz' => $this->input->post('oe_kurzbz'),
|
||||
'orgform_kurzbz' => $this->input->post('orgform_kurzbz'),
|
||||
'text' => $this->input->post('text'),
|
||||
'description' => $this->input->post('description'),
|
||||
'sprache' => $this->input->post('sprache')
|
||||
);
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->updatePhraseInhalt($phrase_inhalt_id, $data);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error(getError($phrase_inhalt));
|
||||
|
||||
|
||||
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
|
||||
}
|
||||
}
|
||||
@@ -1,50 +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 CLI_Manager extends CLI_Controller
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Loads PhrasesLib
|
||||
$this->load->library('PhrasesLib');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function installFrom($phrasesDirectoryPath)
|
||||
{
|
||||
$this->phraseslib->installFrom(urldecode($phrasesDirectoryPath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls the PhrasesLib->syncFiles to create/update the phrases files under the directory application/phrases/
|
||||
*/
|
||||
public function syncFiles()
|
||||
{
|
||||
$this->phraseslib->syncFiles();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (!defined("BASEPATH")) exit("No direct script access allowed");
|
||||
|
||||
class Manager extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'installFromCore' => 'admin:rw'
|
||||
)
|
||||
);
|
||||
|
||||
// Loads PhrasesLib
|
||||
$this->load->library('PhrasesLib');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function installFromCore()
|
||||
{
|
||||
$this->phraseslib->installFromCore();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Overview on cronjob logs
|
||||
*/
|
||||
class PhrasesViewer extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'system/developer:r'
|
||||
)
|
||||
);
|
||||
|
||||
// Loads WidgetLib
|
||||
$this->load->library('WidgetLib');
|
||||
|
||||
// Loads phrases system
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'global',
|
||||
'ui',
|
||||
'filter'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* Everything has a beginning
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('system/phrases/phrasesViewer.php');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,10 +15,11 @@ class Tag_Controller extends FHCAPI_Controller
|
||||
'getTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'getTags' => self::BERECHTIGUNG_KURZBZ,
|
||||
'addTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
|
||||
'updateTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'doneTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'deleteTag' => self::BERECHTIGUNG_KURZBZ,
|
||||
'getAllTags' => self::BERECHTIGUNG_KURZBZ,
|
||||
'rebuildTagsForTypeId' => self::BERECHTIGUNG_KURZBZ,
|
||||
];
|
||||
|
||||
$merged_permissions = array_merge($default_permissions, $permissions);
|
||||
@@ -26,6 +27,10 @@ class Tag_Controller extends FHCAPI_Controller
|
||||
parent::__construct($merged_permissions);
|
||||
|
||||
$this->_setAuthUID();
|
||||
|
||||
// Library
|
||||
$this->load->library('TagLib');
|
||||
|
||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
||||
$this->load->model('system/Notiztyp_model', 'NotiztypModel');
|
||||
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
||||
@@ -37,7 +42,6 @@ class Tag_Controller extends FHCAPI_Controller
|
||||
|
||||
public function getTag($readonly_tags = null)
|
||||
{
|
||||
$language = $this->_getLanguageIndex();
|
||||
$id = $this->input->get('id');
|
||||
|
||||
if (is_array($readonly_tags) && !isEmptyArray($readonly_tags))
|
||||
@@ -62,14 +66,17 @@ class Tag_Controller extends FHCAPI_Controller
|
||||
$this->NotizModel->addSelect(
|
||||
"tbl_notiz.titel,
|
||||
tbl_notiz.text,
|
||||
array_to_json(bezeichnung_mehrsprachig::varchar[])->>". $language. " as bezeichnung,
|
||||
array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung,
|
||||
tbl_notiz.notiz_id,
|
||||
tbl_notiz_typ.style,
|
||||
tbl_notiz_typ.automatisiert,
|
||||
tbl_notiz.erledigt as done,
|
||||
tbl_notiz.insertamum,
|
||||
tbl_notiz.updateamum,
|
||||
(verfasserperson.vorname || ' ' || verfasserperson.nachname || ' ' || '(' || verfasserbenutzer.uid || ')') as verfasser,
|
||||
(bearbeiterperson.vorname || ' ' || bearbeiterperson.nachname || ' ' || '(' || bearbeiterbenutzer.uid || ')') as bearbeiter
|
||||
(bearbeiterperson.vorname || ' ' || bearbeiterperson.nachname || ' ' || '(' || bearbeiterbenutzer.uid || ')') as bearbeiter,
|
||||
tbl_notiz.start,
|
||||
tbl_notiz.ende
|
||||
"
|
||||
);
|
||||
$this->NotizModel->addJoin('public.tbl_notiz_typ', 'public.tbl_notiz.typ = public.tbl_notiz_typ.typ_kurzbz');
|
||||
@@ -82,18 +89,22 @@ class Tag_Controller extends FHCAPI_Controller
|
||||
|
||||
$notiz = $this->NotizModel->loadWhere(array('notiz_id' => $id));
|
||||
|
||||
|
||||
$this->terminateWithSuccess(hasData($notiz) ? getData($notiz)[0] : array());
|
||||
}
|
||||
|
||||
public function getTags($tags = null)
|
||||
{
|
||||
$language = $this->_getLanguageIndex();
|
||||
|
||||
$this->NotiztypModel->addSelect(
|
||||
'typ_kurzbz as tag_typ_kurzbz,
|
||||
"typ_kurzbz as tag_typ_kurzbz,
|
||||
array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung,
|
||||
style,
|
||||
beschreibung,
|
||||
tag
|
||||
'
|
||||
tag,
|
||||
automatisiert
|
||||
"
|
||||
);
|
||||
$this->NotiztypModel->addOrder('prioritaet');
|
||||
|
||||
@@ -271,6 +282,74 @@ class Tag_Controller extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess($deleteNotiz);
|
||||
}
|
||||
|
||||
public function getAllTags($readonly_tags = false){
|
||||
$prestudent_id = $this->input->get('prestudent_id');
|
||||
|
||||
//TODO check for readonly: necessary?
|
||||
if (is_array($readonly_tags) && !isEmptyArray($readonly_tags))
|
||||
{
|
||||
$readonly_tags = $this->_filterTag($readonly_tags, true);
|
||||
|
||||
foreach ($readonly_tags as $key => $tag)
|
||||
{
|
||||
$readonly_tags[$key] = $this->NotizModel->db->escape($tag);
|
||||
}
|
||||
$tags = '(' . implode(',', $readonly_tags) . ')';
|
||||
|
||||
$this->NotizModel->addSelect("
|
||||
CASE
|
||||
WHEN tbl_notiz_typ.typ_kurzbz IN $tags
|
||||
THEN TRUE
|
||||
ELSE FALSE
|
||||
END as readonly
|
||||
");
|
||||
}
|
||||
$this->NotizModel->addSelect(
|
||||
"tbl_notiz.titel,
|
||||
tbl_notiz.text,
|
||||
array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung,
|
||||
tbl_notiz.notiz_id,
|
||||
tbl_notiz_typ.style,
|
||||
tbl_notiz_typ.automatisiert,
|
||||
tbl_notiz.erledigt as done,
|
||||
tbl_notiz.insertamum,
|
||||
tbl_notiz.updateamum,
|
||||
(verfasserperson.vorname || ' ' || verfasserperson.nachname || ' ' || '(' || verfasserbenutzer.uid || ')') as verfasser,
|
||||
(bearbeiterperson.vorname || ' ' || bearbeiterperson.nachname || ' ' || '(' || bearbeiterbenutzer.uid || ')') as bearbeiter,
|
||||
tbl_notiz.start,
|
||||
tbl_notiz.ende
|
||||
"
|
||||
);
|
||||
$this->NotizModel->addJoin('public.tbl_notiz_typ', 'public.tbl_notiz.typ = public.tbl_notiz_typ.typ_kurzbz');
|
||||
|
||||
$this->NotizModel->addJoin('public.tbl_benutzer verfasserbenutzer', 'tbl_notiz.verfasser_uid = verfasserbenutzer.uid', 'LEFT');
|
||||
$this->NotizModel->addJoin('public.tbl_person verfasserperson', 'verfasserbenutzer.person_id = verfasserperson.person_id', 'LEFT');
|
||||
|
||||
$this->NotizModel->addJoin('public.tbl_benutzer bearbeiterbenutzer', 'tbl_notiz.bearbeiter_uid = bearbeiterbenutzer.uid', 'LEFT');
|
||||
$this->NotizModel->addJoin('public.tbl_person bearbeiterperson', 'bearbeiterbenutzer.person_id = bearbeiterperson.person_id', 'LEFT');
|
||||
|
||||
$this->NotizModel->addJoin('public.tbl_notizzuordnung notizzuordnung', 'tbl_notiz.notiz_id = notizzuordnung.notiz_id');
|
||||
|
||||
$notiz = $this->NotizModel->loadWhere(array('prestudent_id' => $prestudent_id));
|
||||
|
||||
|
||||
$this->terminateWithSuccess(hasData($notiz) ? getData($notiz) : array());
|
||||
}
|
||||
|
||||
public function rebuildTagsForTypeId()
|
||||
{
|
||||
$id = $this->input->post('id');
|
||||
$typeId = $this->input->post('typeId');
|
||||
$semester = $this->input->post('sem');
|
||||
|
||||
$result = $this->taglib->rebuildTagsForTypeId($typeId, $id, $semester);
|
||||
|
||||
if (isError($result))
|
||||
return error ('Error occurred during updateAutomatedTags');
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
private function _setAuthUID()
|
||||
{
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2025 FH Technikum-Wien
|
||||
* FH-Complete
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
* @package FHC-Helper
|
||||
* @author FHC-Team
|
||||
* @copyright Copyright (c) 2016 fhcomplete.org
|
||||
* @license GPLv3
|
||||
* @since Version 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* FHC Helper
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
* @subpackage Helpers
|
||||
* @category Helpers
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -136,7 +136,7 @@ function generateJSPhrasesStorageObject($phrases)
|
||||
$toPrint = "\n";
|
||||
$toPrint .= '<script type="text/javascript">';
|
||||
$toPrint .= "\n";
|
||||
$toPrint .= ' var FHC_JS_PHRASES_STORAGE_OBJECT = '.$ci->pj->toJSON().';';
|
||||
$toPrint .= ' var FHC_JS_PHRASES_STORAGE_OBJECT = '.$ci->pj->getJSON().';';
|
||||
$toPrint .= "\n";
|
||||
$toPrint .= '</script>';
|
||||
$toPrint .= "\n\n";
|
||||
@@ -255,9 +255,6 @@ function generateSkipLink($skipID)
|
||||
echo $toPrint;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function absoluteJsImportUrl($relurl)
|
||||
{
|
||||
$ci =& get_instance();
|
||||
@@ -273,6 +270,28 @@ function absoluteJsImportUrl($relurl)
|
||||
return $url;
|
||||
}
|
||||
|
||||
/*
|
||||
* Generate Css File Include if Extension contains file
|
||||
*
|
||||
* @param $relativeFilePath path relative to Extension public/css dir
|
||||
*/
|
||||
function generateCSSsIncludeIfExtensionCssExists($relativeFilePath)
|
||||
{
|
||||
$fsiterator = new FilesystemIterator(FHCPATH . 'application/extensions');
|
||||
foreach ($fsiterator as $fsitem)
|
||||
{
|
||||
if(preg_match('/^FHC-Core-/', $fsitem->getBasename()))
|
||||
{
|
||||
$extensionfile = 'public/extensions/' . $fsitem->getBasename()
|
||||
. '/css/' . $relativeFilePath;
|
||||
if(is_readable(FHCPATH . $extensionfile))
|
||||
{
|
||||
generateCSSsInclude($extensionfile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Manipulate CI views includes Array to load
|
||||
* - public/js/FhcApps.js via customJSs and
|
||||
@@ -468,4 +487,3 @@ class ExtendableAppsHelper
|
||||
array_push($this->extCustomJSs, 'public/js/FhcApps.js');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2025 fhcomplete.org
|
||||
* Copyright (C) 2022 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
|
||||
@@ -19,7 +19,6 @@
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \stdClass as stdClass;
|
||||
use \PharData as PharData;
|
||||
|
||||
/**
|
||||
* Library to manage core extensions
|
||||
@@ -34,8 +33,6 @@ class ExtensionsLib
|
||||
const EXTENSION_JSON_NAME = 'extension.json'; // file that contains extension data
|
||||
const EXTENSIONS_DIR_NAME = 'extensions'; // name of the directories where will be created the symlinks
|
||||
|
||||
const PHRASES_DIRECTORY = 'phrases/'; // directory name where phrases files are
|
||||
|
||||
private $_ci;
|
||||
|
||||
private $ARCHIVE_EXTENSIONS = array('.tgz', '.tbz2'); // accepted file extensions for an uploaded extension
|
||||
@@ -58,7 +55,6 @@ class ExtensionsLib
|
||||
{
|
||||
$this->UPLOAD_PATH = APPPATH.'tmp/';
|
||||
$this->EXTENSIONS_PATH = APPPATH.'extensions/';
|
||||
|
||||
// Get code igniter instance
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
@@ -67,8 +63,6 @@ class ExtensionsLib
|
||||
|
||||
// Loads EPrintfLib
|
||||
$this->_ci->load->library('EPrintfLib');
|
||||
// Loads PhrasesLib
|
||||
$this->_ci->load->library('PhrasesLib');
|
||||
|
||||
// Loading models
|
||||
$this->_ci->load->model('system/Extensions_model', 'ExtensionsModel');
|
||||
@@ -140,7 +134,7 @@ class ExtensionsLib
|
||||
|
||||
if (!$this->_errorOccurred) // if no error occurred
|
||||
{
|
||||
// Loads and executes the needed SQL scripts
|
||||
// Loads and executes neede SQL scripts
|
||||
$this->_loadSQLs(
|
||||
$this->UPLOAD_PATH.$extensionJson->name.'/'.ExtensionsLib::SQL_DIRECTORY,
|
||||
$extensionJson
|
||||
@@ -158,12 +152,6 @@ class ExtensionsLib
|
||||
// Create the symlinks to the installed extension
|
||||
$this->_createSymLinks($extensionJson->name);
|
||||
}
|
||||
|
||||
if (!$this->_errorOccurred) // if no error occurred
|
||||
{
|
||||
// Create the symlinks to the installed extension
|
||||
$this->_installPhrases($extensionJson->name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -414,7 +402,6 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _chkExtensionJson($extensionName, $extensionDB)
|
||||
{
|
||||
$fhcomplete_version = 0;
|
||||
$this->_printStart('Parsing and checking extension.json');
|
||||
|
||||
// Decodes extension.json
|
||||
@@ -619,10 +606,7 @@ class ExtensionsLib
|
||||
// Loops through the versions
|
||||
for ($sqlDir = $startVersion; $sqlDir <= $extensionJson->version; $sqlDir++)
|
||||
{
|
||||
// Search for a directory with the same value of the version in the sql scripts directory
|
||||
$files = glob($pkgSQLsPath.'/'.$sqlDir.'/*'.ExtensionsLib::SQL_FILE_EXTENSION);
|
||||
|
||||
// If found
|
||||
// If a directory with the same value of the version is present in the sql scripts directory
|
||||
$files = glob($pkgSQLsPath.'/'.$sqlDir.'/*'.ExtensionsLib::SQL_FILE_EXTENSION);
|
||||
if ($files != false)
|
||||
{
|
||||
@@ -947,13 +931,4 @@ class ExtensionsLib
|
||||
{
|
||||
$this->_printInfo('------------------------------------------------------------------------------------------');
|
||||
}
|
||||
|
||||
/**
|
||||
* Install the phrases from the given extension
|
||||
*/
|
||||
private function _installPhrases($extensionName)
|
||||
{
|
||||
$this->_ci->phraseslib->installFrom($this->EXTENSIONS_PATH.$extensionName.'/'.self::PHRASES_DIRECTORY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,96 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2025 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 \Netcarver\Textile\Parser as NTParser;
|
||||
|
||||
class PhrasesLib
|
||||
{
|
||||
// Directory name where all the category files are
|
||||
const CORE_PHRASES_DIRECTORY = 'phrases/';
|
||||
// Old config file used for the phrases
|
||||
const CORE_PHRASES_LEGACY_CFG_FILE = 'system/phrasesupdate.php';
|
||||
|
||||
// Who adds phrases into the database
|
||||
const INSERT_BY = 'PhrasesManager';
|
||||
|
||||
// Array elements names
|
||||
const APP = 'app';
|
||||
const CATEGORY = 'category';
|
||||
const PHRASE = 'phrase';
|
||||
const SPRACHE = 'sprache';
|
||||
const TEXT = 'text';
|
||||
const DESCRIPTION = 'description';
|
||||
|
||||
private $_ci; // Code igniter instance
|
||||
private $_phrases; // Contains the retrieved phrases
|
||||
|
||||
/**
|
||||
* Loads parser library
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
$this->_phrases = null; // set the property _phrases as null by default
|
||||
|
||||
// CI parser
|
||||
$this->_ci->load->library('parser');
|
||||
// Loads EPrintfLib
|
||||
$this->_ci->load->library('EPrintfLib');
|
||||
|
||||
// Loads the PhraseModel
|
||||
$this->_ci->load->model('system/Phrase_model', 'PhraseModel');
|
||||
// Loads the PhrasentextModel
|
||||
$this->_ci->load->model('system/Phrasentext_model', 'PhrasentextModel');
|
||||
|
||||
// Workaround to use more parameters in the construct since PHP doesn't support many constructors
|
||||
$this->_extendConstruct(func_get_args());
|
||||
}
|
||||
$this->_extend_construct(func_get_args());
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* getPhrase() - loads a specific Phrase
|
||||
*/
|
||||
public function getPhrase($phrase_id)
|
||||
{
|
||||
if (isEmptyString($phrase_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
return $this->_ci->PhraseModel->load($phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* getSubMessages() - will return all Messages subordinated from a specified message.
|
||||
*/
|
||||
public function getPhraseByApp($app = null)
|
||||
{
|
||||
return $this->_ci->PhraseModel->loadWhere(array('app' => $app));
|
||||
}
|
||||
|
||||
/**
|
||||
* getPhraseInhalt
|
||||
*/
|
||||
public function getPhraseInhalt($phrase_id)
|
||||
{
|
||||
if (isEmptyString($phrase_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
return $this->_ci->PhrasentextModel->loadWhere(array('phrase_id' => $phrase_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* delPhrasentext
|
||||
*/
|
||||
public function delPhrasentext($phrasentext_id)
|
||||
{
|
||||
if (isEmptyString($phrasentext_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
return $this->_ci->PhrasentextModel->delete(array('phrasentext_id' => $phrasentext_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the phrases in JSON format
|
||||
*/
|
||||
public function toJSON()
|
||||
* savePhrase() - will save a spezific Phrase.
|
||||
*/
|
||||
public function savePhrase($phrase_id, $data)
|
||||
{
|
||||
if (isEmptyString($data)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
return $this->_ci->PhraseModel->update($phrase_id, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template.
|
||||
*/
|
||||
public function getPhrasentextById($phrasentext_id)
|
||||
{
|
||||
return json_encode($this->_phrases);
|
||||
}
|
||||
if (isEmptyString($phrasentext_id)) return error('Not a valid phrasentext_id');
|
||||
|
||||
return $this->_ci->PhrasentextModel->load($phrasentext_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* getPhrase() - loads a specific Phrase
|
||||
*/
|
||||
public function getPhrase($phrase_id)
|
||||
{
|
||||
if (isEmptyString($phrase_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
return $this->_ci->PhraseModel->load($phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* getPhrases() - Retrieves phrases from the DB
|
||||
* getPhrases() - Retrieves phrases from the DB
|
||||
* The given parameter are the same needed to read from the table system.tb_phrase
|
||||
*/
|
||||
public function getPhrases($app, $sprache, $phrase = null, $orgeinheit_kurzbz = null, $orgform_kurzbz = null, $blockTags = null)
|
||||
{
|
||||
*/
|
||||
public function getPhrases($app, $sprache, $phrase = null, $orgeinheit_kurzbz = null, $orgform_kurzbz = null, $blockTags = null)
|
||||
{
|
||||
if (isset($app) && isset($sprache))
|
||||
{
|
||||
$result = $this->_ci->PhraseModel->getPhrases($app, $sprache, $phrase, $orgeinheit_kurzbz, $orgform_kurzbz);
|
||||
@@ -98,7 +100,7 @@ class PhrasesLib
|
||||
if (hasData($result))
|
||||
{
|
||||
// Textile parser
|
||||
$textileParser = new NTParser();
|
||||
$textileParser = new \Netcarver\Textile\Parser();
|
||||
|
||||
for ($i = 0; $i < count($result->retval); $i++)
|
||||
{
|
||||
@@ -137,7 +139,31 @@ class PhrasesLib
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* insertPhraseinhalt() - will load tbl_vorlagestudiengang for a spezific Template.
|
||||
*/
|
||||
public function insertPhraseinhalt($data)
|
||||
{
|
||||
return $this->_ci->PhrasentextModel->insert($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* getVorlagetextById() - will load tbl_vorlagestudiengang for a spezific Template.
|
||||
*/
|
||||
public function getVorlagetextById($vorlagestudiengang_id)
|
||||
{
|
||||
return $this->_ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* saveVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
|
||||
*/
|
||||
public function updatePhraseInhalt($phrasentext_id, $data)
|
||||
{
|
||||
return $this->_ci->PhrasentextModel->update($phrasentext_id, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a phrases from the the property _phrases with the given parameters
|
||||
@@ -150,7 +176,7 @@ class PhrasesLib
|
||||
public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null)
|
||||
{
|
||||
// If the property _phrases is populated
|
||||
if (!isEmptyArray($this->_phrases))
|
||||
if (is_array($this->_phrases))
|
||||
{
|
||||
// Loops through the _phrases property
|
||||
for ($i = 0; $i < count($this->_phrases); $i++)
|
||||
@@ -176,107 +202,6 @@ class PhrasesLib
|
||||
}
|
||||
|
||||
/**
|
||||
* Install phrases from the core
|
||||
*/
|
||||
public function installFromCore()
|
||||
{
|
||||
$this->_installPhrases(APPPATH.self::CORE_PHRASES_DIRECTORY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install phrases from the given path
|
||||
*/
|
||||
public function installFrom($phrasesDirectory)
|
||||
{
|
||||
$this->_installPhrases($phrasesDirectory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates/updates the phrases files under the directory application/phrases/
|
||||
*/
|
||||
public function syncFiles()
|
||||
{
|
||||
// Legacy phrases file absolute path
|
||||
$legacyPhrasesFile = FHCPATH.self::CORE_PHRASES_LEGACY_CFG_FILE;
|
||||
|
||||
// Try to include the legacy file used to store the phrases
|
||||
// It is using the @ to suppress errors in case the file is not readable or does not exist
|
||||
// In case is not readable or does not exists it stops the execution and prompts a message
|
||||
if ((@include_once $legacyPhrasesFile) === false)
|
||||
{
|
||||
$this->_ci->eprintflib->printError($legacyPhrasesFile.' not found or not readable!'."\n");
|
||||
exit;
|
||||
}
|
||||
|
||||
// If the phrases array exists and it is not empty, otherwise it stops the executions and prompts a message
|
||||
if (!isset($phrases) || isEmptyArray($phrases))
|
||||
{
|
||||
$this->_ci->eprintflib->printError($legacyPhrasesFile.' does not contain a populated array called "$phrases"');
|
||||
exit;
|
||||
}
|
||||
|
||||
// For each phrases contained in the array
|
||||
foreach ($phrases as $phrase)
|
||||
{
|
||||
// If it contains the element category
|
||||
if (isset($phrase[self::CATEGORY]) && isset($phrase[self::PHRASE]))
|
||||
{
|
||||
//
|
||||
$toAppend = false;
|
||||
|
||||
// Path and name of the phrases category file
|
||||
$phrasesCategoryFile = APPPATH.self::CORE_PHRASES_DIRECTORY.$phrase[self::CATEGORY].'.php';
|
||||
|
||||
// Checks if a phrases file already exists for this category
|
||||
if (file_exists($phrasesCategoryFile))
|
||||
{
|
||||
// Get the phrases file category content
|
||||
$phrasesCategoryFileContent = file_get_contents($phrasesCategoryFile);
|
||||
|
||||
// If an error occurred
|
||||
if ($phrasesCategoryFileContent === false)
|
||||
{
|
||||
$this->_ci->eprintflib->printError('Was not possible to get the content of: '.$phrasesCategoryFile);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if the phrase already exists inside this file
|
||||
if (stristr($phrasesCategoryFileContent, $phrase[self::PHRASE]) === false) $toAppend = true;
|
||||
}
|
||||
else // if not then
|
||||
{
|
||||
// Create the new phrases category file
|
||||
if (!$this->_createPhraseToCategoryFile($phrasesCategoryFile))
|
||||
{
|
||||
$this->_ci->eprintflib->printError('Was not possible to create the phrases category file: '.$phrasesCategoryFile);
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->_ci->eprintflib->printMessage('Created new phrases category file: '.$phrasesCategoryFile);
|
||||
$toAppend = true;
|
||||
}
|
||||
|
||||
// If the phrase is to be appended to the phrases category file
|
||||
if ($toAppend)
|
||||
{
|
||||
// And then append the phrase to it
|
||||
if (!$this->_appendPhraseToCategoryFile($phrase, $phrasesCategoryFile))
|
||||
{
|
||||
$this->_ci->eprintflib->printError('Was not possible to append to the phrases category file: '.$phrasesCategoryFile);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
else // otherwise prompt an error message and continue
|
||||
{
|
||||
$this->_ci->eprintflib->printInfo('Missing "'.self::CATEGORY.'" or "'.self::PHRASE.'" for the following element:');
|
||||
var_dump($phrase);
|
||||
$this->_ci->eprintflib->printInfo('-------------------------------------------');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Workaround to reload the phrases array on an already constructed library.
|
||||
* @parameters -> look for _setPhrases docs
|
||||
*/
|
||||
@@ -290,68 +215,6 @@ class PhrasesLib
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Append a new phrases to the related phrases category file
|
||||
*/
|
||||
private function _appendPhraseToCategoryFile($phrase, $phrasesCategoryFile)
|
||||
{
|
||||
// Open the category phrases file and a temporary one
|
||||
$srcFileHandle = @fopen($phrasesCategoryFile, 'r');
|
||||
// In case exists then it is truncated
|
||||
$dstFileHandle = @fopen($phrasesCategoryFile.'.tmp', 'w');
|
||||
|
||||
// If an error occurred then return false
|
||||
if (!$srcFileHandle || !$dstFileHandle) return false;
|
||||
|
||||
$line = '';
|
||||
// Read the file line by line
|
||||
while (!feof($srcFileHandle))
|
||||
{
|
||||
// Read a single line from the source file
|
||||
$line = fgets($srcFileHandle, 4096);
|
||||
// If an error occurred then exit
|
||||
if ($line === false && !feof($srcFileHandle)) return false;
|
||||
|
||||
// If the first phrase or the end of the array
|
||||
if ($line == '$phrases = array();' || stristr($line, ');'))
|
||||
{
|
||||
$first_coma = ',';
|
||||
if ($line == '$phrases = array();') $first_coma = '';
|
||||
|
||||
// If found then append the new phrase to the current line
|
||||
// and replace the end of the array
|
||||
$line = str_replace(');', $first_coma."\n".var_export($phrase, true)."\n".');', $line);
|
||||
}
|
||||
|
||||
// In any case copy the line to the temp file
|
||||
if (@fwrite($dstFileHandle, $line) === false) return false;
|
||||
}
|
||||
|
||||
// Close the file handles
|
||||
fclose($srcFileHandle);
|
||||
fclose($dstFileHandle);
|
||||
|
||||
// Delete the old file
|
||||
if (@unlink($phrasesCategoryFile) === false) return false;
|
||||
|
||||
// Rename the temp file as the old one
|
||||
if (@rename($phrasesCategoryFile.'.tmp', $phrasesCategoryFile) === false) return false;
|
||||
|
||||
return true; // if everything was fine
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new phrases category file with the given name
|
||||
* and having an empy array called $phrases as content
|
||||
*/
|
||||
private function _createPhraseToCategoryFile($phrasesCategoryFile)
|
||||
{
|
||||
return !(file_put_contents(
|
||||
$phrasesCategoryFile,
|
||||
'<?php'."\n\n".'$phrases = array();'
|
||||
) === false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extends the functionalities of the constructor of this class
|
||||
* This is a workaround to use more parameters in the construct since PHP doesn't support many constructors
|
||||
@@ -361,19 +224,22 @@ class PhrasesLib
|
||||
* - could be an array of categories, and for each category there is an array of phrases
|
||||
* language: optional parameter must be a string. It's used to load phrases
|
||||
*/
|
||||
private function _extendConstruct($params)
|
||||
private function _extend_construct($params)
|
||||
{
|
||||
// Checks if the $params is an array with at least one element
|
||||
if (!isEmptyArray($params))
|
||||
if (is_array($params) && count($params) > 0)
|
||||
{
|
||||
$parameters = $params[0]; // temporary variable
|
||||
$isIndexArray = false; //flag for indexed array
|
||||
|
||||
// If there are parameters
|
||||
if (!isEmptyArray($parameters))
|
||||
if (is_array($parameters) && count($parameters) > 0)
|
||||
{
|
||||
$categories = $parameters[0]; // categories is always the first parameter
|
||||
// If it is not an array, then convert into one
|
||||
if (!is_array($categories)) $categories = array($categories);
|
||||
if (!is_array($categories)) // if it is not an array, then convert into one
|
||||
{
|
||||
$categories = array($categories);
|
||||
}
|
||||
|
||||
// Retrieves the language of the logged user
|
||||
$language = getUserLanguage(count($parameters) == 2 ? $parameters[1] : null);
|
||||
@@ -413,7 +279,7 @@ class PhrasesLib
|
||||
// If language is not default language and phrasentext is null -> fallback to default language
|
||||
if ($language != DEFAULT_LANGUAGE)
|
||||
{
|
||||
// Get array with phrasentexte in the default language
|
||||
// get array with phrasentexte in the default language
|
||||
$defaultPhrases = null;
|
||||
if ($isIndexArray)
|
||||
{
|
||||
@@ -424,19 +290,19 @@ class PhrasesLib
|
||||
$defaultPhrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndPhrasesAndLanguage($categories, DEFAULT_LANGUAGE);
|
||||
}
|
||||
|
||||
// Combine array with phrasentexte in users language and in default language
|
||||
// combine array with phrasentexte in users language and in default language
|
||||
// (default used if phrasentext in users language is null or not set)
|
||||
if (hasData($phrases) && hasData($defaultPhrases))
|
||||
{
|
||||
// Loop through phrases in default language
|
||||
// loop through phrases in default language
|
||||
foreach ($defaultPhrases->retval as $defaultPhrase)
|
||||
{
|
||||
$found = false; // flag for found phrase
|
||||
|
||||
// Loop through phrases in users language
|
||||
// loop through phrases in users language
|
||||
foreach ($phrases->retval as $phrase)
|
||||
{
|
||||
// If same phrase and category found and text is not null
|
||||
// if same phrase and category found and text is not null
|
||||
// use phrase in users language
|
||||
if ($phrase->phrase == $defaultPhrase->phrase
|
||||
&& $phrase->category == $defaultPhrase->category
|
||||
@@ -447,11 +313,13 @@ class PhrasesLib
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise use phrase in default language
|
||||
if (!$found) array_push($phrases->retval, $defaultPhrase);
|
||||
// otherwise use phrase in default language
|
||||
if (!$found)
|
||||
{
|
||||
array_push($phrases->retval, $defaultPhrase);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Otherwise if only defaultPhrases have data
|
||||
elseif (hasData($defaultPhrases))
|
||||
{
|
||||
$phrases = $defaultPhrases;
|
||||
@@ -459,227 +327,19 @@ class PhrasesLib
|
||||
}
|
||||
|
||||
// If there are phrases loaded then store them in the property _phrases
|
||||
if (hasData($phrases)) $this->_phrases = $phrases->retval;
|
||||
if (hasData($phrases))
|
||||
{
|
||||
$this->_phrases = $phrases->retval;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Install phrases from the given directory
|
||||
* Returns the property _phrases JSON encoded
|
||||
* @return json encoded property _phrases
|
||||
*/
|
||||
private function _installPhrases($phrasesDirectory)
|
||||
public function getJSON()
|
||||
{
|
||||
$this->_ci->eprintflib->printInfo('------------------------------------------------------------------------------------------');
|
||||
$this->_ci->eprintflib->printInfo('Phrases installation started from: '.$phrasesDirectory);
|
||||
|
||||
// If the given directory name does not exist
|
||||
if (!is_dir($phrasesDirectory))
|
||||
{
|
||||
$this->_ci->eprintflib->printError('The directory '.$phrasesDirectory.' does not exist');
|
||||
}
|
||||
else // otherwise install the phrases from the given directory
|
||||
{
|
||||
// Get the list of category files from the given directory
|
||||
$phrasesCategoryFiles = scandir($phrasesDirectory);
|
||||
|
||||
if ($phrasesCategoryFiles == false)
|
||||
{
|
||||
$this->_ci->eprintflib->printError('An error occurred while trying to access to the given directory: '.$phrasesDirectory);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If no files are inside the given directory
|
||||
if (count($phrasesCategoryFiles) == 2)
|
||||
{
|
||||
$this->_ci->eprintflib->printInfo('No phrases files are inside the given directory: '.$phrasesDirectory);
|
||||
}
|
||||
|
||||
// For each file in this directory that represents a phrases category
|
||||
foreach ($phrasesCategoryFiles as $phrasesCategoryFile)
|
||||
{
|
||||
// Gets the infos about the file
|
||||
$pathInfo = pathinfo($phrasesDirectory.$phrasesCategoryFile);
|
||||
|
||||
// Skip the upper directory, the same directory and files that are not a php file
|
||||
if ($phrasesCategoryFile != '.'
|
||||
&& $phrasesCategoryFile != '..'
|
||||
&& $pathInfo['extension'] == 'php')
|
||||
{
|
||||
$phrases = null; // define the variable
|
||||
|
||||
// Include the php file that contains phrases for that category
|
||||
require_once($phrasesDirectory.$phrasesCategoryFile);
|
||||
|
||||
// If this file contains an array called phrases
|
||||
if (isset($phrases) && is_array($phrases))
|
||||
{
|
||||
$addPhrases = $this->_addPhrases($phrases); // add them to the database
|
||||
|
||||
// If a blocking error occurred then print an error and stop the execution
|
||||
if (isError($addPhrases))
|
||||
{
|
||||
$this->_ci->eprintflib->printError(getError($addPhrases));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else // otherwise print an error and continue with the next file
|
||||
{
|
||||
$this->_ci->eprintflib->printInfo(
|
||||
'The file '.$phrasesDirectory.$phrasesCategoryFile.' does not contain an array called "phrases"'
|
||||
);
|
||||
}
|
||||
|
||||
// Clean for the next file
|
||||
unset($phrases);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->_ci->eprintflib->printInfo('Phrases installation ended');
|
||||
$this->_ci->eprintflib->printInfo('------------------------------------------------------------------------------------------');
|
||||
return json_encode($this->_phrases);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add new phrases to the database
|
||||
*/
|
||||
private function _addPhrases($phrases)
|
||||
{
|
||||
// For eache given phrase
|
||||
foreach ($phrases as $phrase)
|
||||
{
|
||||
$phrase_id = null; // The id of the new/existing phrase
|
||||
|
||||
// Checks the mandatory fields, if one of them is not valid continue with the next phrase
|
||||
if (!$this->_isValidElement($phrase, self::APP)) continue;
|
||||
if (!$this->_isValidElement($phrase, self::CATEGORY)) continue;
|
||||
if (!$this->_isValidElement($phrase, self::PHRASE)) continue;
|
||||
|
||||
// Checks if the phrase already exists in the database
|
||||
$phraseResult = $this->_ci->PhraseModel->loadWhere(
|
||||
array(
|
||||
'app' => $phrase[self::APP],
|
||||
'category' => $phrase[self::CATEGORY],
|
||||
'phrase' => $phrase[self::PHRASE]
|
||||
)
|
||||
);
|
||||
|
||||
// If an error occurred then return the error itself
|
||||
if (isError($phraseResult)) return $phraseResult;
|
||||
|
||||
// If no phrase has been found
|
||||
if (!hasData($phraseResult))
|
||||
{
|
||||
// Then add the phrase to the database
|
||||
$phraseInsertResult = $this->_ci->PhraseModel->insert(
|
||||
array(
|
||||
'app' => $phrase[self::APP],
|
||||
'category' => $phrase[self::CATEGORY],
|
||||
'phrase' => $phrase[self::PHRASE],
|
||||
'insertamum' => 'NOW()',
|
||||
'insertvon' => self::INSERT_BY
|
||||
)
|
||||
);
|
||||
|
||||
// If an error occurred then return the error itself
|
||||
if (isError($phraseInsertResult)) return $phraseInsertResult;
|
||||
|
||||
$phrase_id = getData($phraseInsertResult); // the phrase_id of the new added phrase
|
||||
|
||||
// Prints info about the new added phrase
|
||||
$this->_ci->eprintflib->printMessage(
|
||||
sprintf(
|
||||
'A new phrase has been added into the database: '.
|
||||
'phrase_id => %s | app => %s | category => %s | phrase => %s',
|
||||
$phrase_id,
|
||||
$phrase[self::APP],
|
||||
$phrase[self::CATEGORY],
|
||||
$phrase[self::PHRASE]
|
||||
)
|
||||
);
|
||||
}
|
||||
else // otherwise if the phrase already exists in the database
|
||||
{
|
||||
$phrase_id = getData($phraseResult)[0]->phrase_id; // gets the phrase_id
|
||||
}
|
||||
|
||||
// If not a valid phrase_id
|
||||
if ($phrase_id == null) return error('Not a valid phrase id');
|
||||
|
||||
// For each phrase text, one text for each language
|
||||
foreach ($phrase['phrases'] as $phraseText)
|
||||
{
|
||||
// Checks the mandatory fields, if one of them is not valid continue with the next phrase text
|
||||
if (!$this->_isValidElement($phraseText, self::SPRACHE)) continue;
|
||||
if (!$this->_isValidElement($phraseText, self::TEXT)) continue;
|
||||
|
||||
// Set the not optional fields if they have not been set
|
||||
if (!isset($phraseText[self::DESCRIPTION])) $phraseText[self::DESCRIPTION] = null;
|
||||
|
||||
// Checks if the phrase already exists in the database
|
||||
$phraseTextResult = $this->_ci->PhrasentextModel->loadWhere(
|
||||
array(
|
||||
'phrase_id' => $phrase_id,
|
||||
'sprache' => $phraseText[self::SPRACHE]
|
||||
)
|
||||
);
|
||||
|
||||
// If an error occurred then return the error itself
|
||||
if (isError($phraseTextResult)) return $phraseTextResult;
|
||||
|
||||
// If no text for the phrase was found
|
||||
if (!hasData($phraseTextResult))
|
||||
{
|
||||
// Then add the text phrase to the database
|
||||
$phraseTextInsertResult = $this->_ci->PhrasentextModel->insert(
|
||||
array(
|
||||
'phrase_id' => $phrase_id,
|
||||
'sprache' => $phraseText[self::SPRACHE],
|
||||
'text' => $phraseText[self::TEXT],
|
||||
'description' => $phraseText[self::DESCRIPTION],
|
||||
'insertvon' => self::INSERT_BY,
|
||||
'insertamum' => 'NOW()',
|
||||
'orgeinheit_kurzbz' => null,
|
||||
'orgform_kurzbz' => null
|
||||
)
|
||||
);
|
||||
|
||||
// If an error occurred then return the error itself
|
||||
if (isError($phraseTextInsertResult)) return $phraseTextInsertResult;
|
||||
|
||||
// Prints info about the new added text phrase
|
||||
$this->_ci->eprintflib->printMessage(
|
||||
sprintf(
|
||||
'A new text has been added into the database: '.
|
||||
'phrase_id => %s | sprache => %s | text => %s | description => %s',
|
||||
$phrase_id,
|
||||
$phraseText[self::SPRACHE],
|
||||
substr($phraseText[self::TEXT], 0, 42).'...',
|
||||
substr($phraseText[self::DESCRIPTION], 0, 42).'...'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If here then no blocking errors occurred
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given array element exists in the given array and if it is a valid string and then returns true
|
||||
* Otherwise prints an info and then returns false
|
||||
*/
|
||||
private function _isValidElement($array, $elementName)
|
||||
{
|
||||
// If a not valid text is set
|
||||
if ((isset($array[$elementName]) && isEmptyString($array[$elementName])) || !isset($array[$elementName]))
|
||||
{
|
||||
$this->_ci->eprintflib->printInfo('Not a valid element "'.$elementName.'":');
|
||||
var_dump($array); // KEEP IT!!!
|
||||
$this->_ci->eprintflib->printEOL();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -263,59 +263,6 @@ class ProfilLib{
|
||||
$element->mailto = "mailto:" . $element->gruppe_kurzbz . "@" . DOMAIN;
|
||||
return $element;
|
||||
}, $mailverteiler_res);
|
||||
|
||||
$this->ci->load->model("crm/Student_model", "StudentModel");
|
||||
$this->ci->StudentModel->addJoin("tbl_benutzer", "tbl_benutzer.uid = tbl_student.student_uid");
|
||||
$this->ci->StudentModel->addJoin("tbl_person", "tbl_benutzer.person_id = tbl_person.person_id");
|
||||
$this->ci->StudentModel->addJoin("tbl_studiengang", "tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz");
|
||||
$this->ci->StudentModel->addSelect("matr_nr, semester, verband, gruppe, kurzbzlang");
|
||||
|
||||
$studentResult = $this->ci->StudentModel->loadWhere(["student_uid" => $uid]);
|
||||
if (isError($studentResult)) {
|
||||
return error(getData($studentResult));
|
||||
}
|
||||
|
||||
$studentResultData = getData($studentResult);
|
||||
$studentData = null;
|
||||
if (is_array($studentResultData) && count($studentResultData)) {
|
||||
$studentData = $studentResultData[0];
|
||||
}
|
||||
|
||||
if ($studentData && $studentData->matr_nr) {
|
||||
$this->ci->load->library("phrasesLib", ["profil"], "phrases");
|
||||
$standardCourseVerteiler = trim($studentData->kurzbzlang) . "_STD";
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $standardCourseVerteiler,
|
||||
"gruppe_kurzbz" => $standardCourseVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($standardCourseVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
|
||||
$semesterVerteiler = trim($studentData->kurzbzlang) . trim($studentData->semester);
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $semesterVerteiler,
|
||||
"gruppe_kurzbz" => $semesterVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($semesterVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
|
||||
if ($studentData->verband && strlen(trim($studentData->verband))) {
|
||||
$verbandVerteiler = $semesterVerteiler . trim($studentData->verband);
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $verbandVerteiler,
|
||||
"gruppe_kurzbz" => $verbandVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($verbandVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
|
||||
if ($studentData->gruppe && strlen(trim($studentData->gruppe))) {
|
||||
$gruppeVerteiler = $verbandVerteiler . trim($studentData->gruppe);
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $gruppeVerteiler,
|
||||
"gruppe_kurzbz" => $gruppeVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($gruppeVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $mailverteiler_res;
|
||||
}
|
||||
|
||||
|
||||
@@ -114,6 +114,7 @@ class StundenplanLib
|
||||
return $stundenplan_data;
|
||||
$stundenplan_data = getData($stundenplan_data) ?? [];
|
||||
|
||||
$this->_ci->addMeta("stundenplanData", $stundenplan_data);
|
||||
$function_error = $this->expandObjectInformation($stundenplan_data);
|
||||
if ($function_error)
|
||||
return $function_error;
|
||||
@@ -374,6 +375,39 @@ class StundenplanLib
|
||||
$item->gruppe = $gruppe_obj_array;
|
||||
$item->lektor = $lektor_obj_array;
|
||||
|
||||
$this->_ci->load->library('PermissionLib');
|
||||
$berechtigt_begrenzt = $this->_ci->permissionlib->isBerechtigt('lehre/reservierung:begrenzt', 'sui');
|
||||
|
||||
$now = time();
|
||||
$res_lektor_start = $this->jump_day($now, RES_TAGE_LEKTOR_MIN - 1);
|
||||
$res_lektor_ende = mktime(0, 0, 0, date('m', $now), date('d', $now) + RES_TAGE_LEKTOR_BIS, date('Y', $now));
|
||||
|
||||
$start_date = is_numeric($item->beginn) ? $item->beginn : strtotime($item->beginn);
|
||||
if (!date('w', $start_date)) {
|
||||
$start_date = $this->jump_day($start_date, 1);
|
||||
}
|
||||
|
||||
$start_date_str = date('Y-m-d', $start_date);
|
||||
$res_lektor_start_str = date('Y-m-d', $res_lektor_start);
|
||||
$res_lektor_ende_str = date('Y-m-d', $res_lektor_ende);
|
||||
|
||||
$show_delete = (
|
||||
(
|
||||
$berechtigt_begrenzt &&
|
||||
(
|
||||
(isset($item->insertvon) && $item->insertvon == getAuthUID()) ||
|
||||
(isset($item->uids) && in_array(getAuthUID(), $item->uids))
|
||||
)
|
||||
) &&
|
||||
$start_date_str >= $res_lektor_start_str &&
|
||||
$start_date_str <= $res_lektor_ende_str
|
||||
);
|
||||
|
||||
if ($show_delete)
|
||||
$item->deletable = true;
|
||||
else
|
||||
$item->deletable = false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -469,6 +503,212 @@ class StundenplanLib
|
||||
return success($stundenplan_data);
|
||||
}
|
||||
|
||||
public function addReservation($start, $end, $title, $beschreibung, $ort_kurzbz, $lektoren = null, $studiengang = null, $semester = null, $verband = null, $gruppe = null, $spezialgruppe = null)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
$this->_ci->load->model('ressource/Stunde_model', 'StundeModel');
|
||||
$this->_ci->load->model('ressource/Reservierung_model', 'ReservierungModel');
|
||||
$this->_ci->load->model('ressource/stundenplandev_model', 'StundenplandevModel');
|
||||
$this->_ci->load->model('ressource/stundenplan_model', 'StundenplanModel');
|
||||
$this->_ci->load->library('PermissionLib');
|
||||
|
||||
$startTime = new DateTime($start);
|
||||
$endTime = new DateTime($end);
|
||||
|
||||
$stunden = $this->_ci->StundeModel->loadWhere(array(
|
||||
'beginn <' => $endTime->format('H:i:s'),
|
||||
'ende >' => $startTime->format('H:i:s')
|
||||
));
|
||||
|
||||
if (!hasData($stunden))
|
||||
{
|
||||
return error("Keine Stunden vorhanden");
|
||||
}
|
||||
|
||||
$stunden = array_column(getData($stunden), 'stunde');
|
||||
|
||||
$this->_ci->StundenplandevModel->db->select('1');
|
||||
$this->_ci->StundenplandevModel->db->where('datum', $startTime->format('Y-m-d'));
|
||||
$this->_ci->StundenplandevModel->db->where('ort_kurzbz', $ort_kurzbz);
|
||||
$this->_ci->StundenplandevModel->db->where_in('stunde', $stunden);
|
||||
$stundenplandev_belegung = $this->_ci->StundenplandevModel->load();
|
||||
|
||||
$this->_ci->StundenplanModel->db->select('1');
|
||||
$this->_ci->StundenplanModel->db->where('ort_kurzbz', $ort_kurzbz);
|
||||
$this->_ci->StundenplanModel->db->where('datum', $startTime->format('Y-m-d'));
|
||||
$this->_ci->StundenplanModel->db->where_in('stunde', $stunden);
|
||||
$stundenplan_belegung = $this->_ci->StundenplanModel->load();
|
||||
|
||||
if ((hasData($stundenplandev_belegung) || hasData($stundenplan_belegung))
|
||||
&& !$this->_ci->permissionlib->isBerechtigt('lehre/reservierungAdvanced'))
|
||||
return error ('lvplan/bereitsReserviert');
|
||||
|
||||
$this->_ci->ReservierungModel->addSelect('stunde');
|
||||
$reservation_hours = $this->_ci->ReservierungModel->loadWhere(array('datum' => $startTime->format('Y-m-d'), 'ort_kurzbz' => $ort_kurzbz));
|
||||
|
||||
|
||||
if (isError($reservation_hours))
|
||||
return $reservation_hours;
|
||||
|
||||
$reservation_hours = hasData($reservation_hours) ? array_column(getData($reservation_hours), 'stunde') : array();
|
||||
|
||||
if (!empty(array_intersect($stunden, $reservation_hours))
|
||||
&& !$this->_ci->permissionlib->isBerechtigt('lehre/reservierungAdvanced'))
|
||||
return error("lvplan/bereitsReserviert");
|
||||
|
||||
|
||||
if (!empty($lektoren))
|
||||
{
|
||||
foreach ($lektoren as $lektor)
|
||||
{
|
||||
$insert = array('ort_kurzbz' => $ort_kurzbz,
|
||||
'datum' => $startTime->format('Y-m-d'),
|
||||
'titel' => $title,
|
||||
'studiengang_kz' => is_null($studiengang) ? 0 : $studiengang,
|
||||
'beschreibung' => $beschreibung,
|
||||
'insertvon' => getAuthUID(),
|
||||
'uid' => $lektor,
|
||||
'semester' => is_null($semester) ? null : $semester,
|
||||
'verband' => is_null($verband) ? null : $verband,
|
||||
'gruppe' => is_null($gruppe) ? null : $gruppe,
|
||||
'gruppe_kurzbz' => is_null($spezialgruppe) ? null : $spezialgruppe,
|
||||
);
|
||||
|
||||
foreach ($stunden as $stunde)
|
||||
{
|
||||
$insert['stunde'] = $stunde;
|
||||
$check_insert = $this->_ci->ReservierungModel->insert($insert);
|
||||
if (isError($check_insert))
|
||||
return $check_insert;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($stunden as $stunde)
|
||||
{
|
||||
$check_insert = $this->_ci->ReservierungModel->insert(array(
|
||||
'ort_kurzbz' => $ort_kurzbz,
|
||||
'uid' => getAuthUID(),
|
||||
'stunde' => $stunde,
|
||||
'datum' => $startTime->format('Y-m-d'),
|
||||
'titel' => $title,
|
||||
'studiengang_kz' => is_null($studiengang) ? 0 : $studiengang,
|
||||
'beschreibung' => $beschreibung,
|
||||
'insertvon' => getAuthUID()
|
||||
));
|
||||
if (isError($check_insert))
|
||||
return $check_insert;
|
||||
}
|
||||
}
|
||||
|
||||
return success("Erfolgreich");
|
||||
}
|
||||
|
||||
public function deleteReservation($reservierung_id)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
$this->_ci->load->model('ressource/Reservierung_model', 'ReservierungModel');
|
||||
$this->_ci->load->model('ressource/Stunde_model', 'StundeModel');
|
||||
$this->_ci->load->library('PermissionLib');
|
||||
|
||||
|
||||
$this->_ci->ReservierungModel->db->where_in('reservierung_id', $reservierung_id);
|
||||
$reservation = $this->_ci->ReservierungModel->load();
|
||||
if (isError($reservation))
|
||||
return $reservation;
|
||||
|
||||
if (!hasData($reservation))
|
||||
return error("Reservierungen nicht gefunden");
|
||||
|
||||
$reservations = getData($reservation);
|
||||
|
||||
$today = new DateTime();
|
||||
foreach ($reservations as $reservierung)
|
||||
{
|
||||
if ($today->format('Y-m-d') > $reservierung->datum)
|
||||
return error("Vergangene Reservierungen können nicht gelöscht werden");
|
||||
|
||||
if (($this->_ci->permissionlib->isBerechtigt('lehre/reservierung:begrenzt')) && ($reservierung->insertvon == getAuthUID() || $reservierung->uid === getAuthUID()))
|
||||
{
|
||||
$delete_result = $this->_ci->ReservierungModel->delete($reservierung->reservierung_id);
|
||||
|
||||
if (isError($delete_result))
|
||||
return $delete_result;
|
||||
}
|
||||
}
|
||||
return success("Erfolgreich");
|
||||
}
|
||||
|
||||
|
||||
public function getReservableMap($ort_kurzbz, $start_date, $end_date)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
$this->_ci->load->model('ressource/Ort_model', 'OrtModel');
|
||||
$this->_ci->load->library('PermissionLib');
|
||||
|
||||
$berechtigt_begrenzt = $this->_ci->permissionlib->isBerechtigt('lehre/reservierung:begrenzt', 'suid');
|
||||
$berechtigt_erweitert = $this->_ci->permissionlib->isBerechtigt('lehre/reservierung', 'suid');
|
||||
|
||||
$ort_data = $this->_ci->OrtModel->load($ort_kurzbz);
|
||||
if (isError($ort_data) || !hasData($ort_data))
|
||||
return [];
|
||||
|
||||
$ort_data = getData($ort_data)[0];
|
||||
|
||||
if (!$ort_data->reservieren)
|
||||
return [];
|
||||
|
||||
if (!$berechtigt_begrenzt && !$berechtigt_erweitert)
|
||||
return [];
|
||||
|
||||
$start_ts = is_numeric($start_date) ? (int)$start_date : strtotime($start_date);
|
||||
$end_ts = is_numeric($end_date) ? (int)$end_date : strtotime($end_date);
|
||||
|
||||
if (!$start_ts || !$end_ts)
|
||||
return [];
|
||||
|
||||
if ($end_ts < $start_ts)
|
||||
{
|
||||
$tmp = $start_ts;
|
||||
$start_ts = $end_ts;
|
||||
$end_ts = $tmp;
|
||||
}
|
||||
|
||||
$now = time();
|
||||
$tage_min = defined('RES_TAGE_LEKTOR_MIN') ? (int)RES_TAGE_LEKTOR_MIN : 0;
|
||||
$tage_bis = defined('RES_TAGE_LEKTOR_BIS') ? (int)RES_TAGE_LEKTOR_BIS : 0;
|
||||
|
||||
$datum_res_lektor_start = $this->jump_day($now, $tage_min - 1);
|
||||
$datum_res_lektor_ende = $this->jump_day($now, $tage_bis);
|
||||
|
||||
$start_ymd_allowed = date('Y-m-d', $datum_res_lektor_start);
|
||||
$end_ymd_allowed = date('Y-m-d', $datum_res_lektor_ende);
|
||||
|
||||
$result = [];
|
||||
|
||||
$current = strtotime(date('Y-m-d', $start_ts) . ' 00:00:00');
|
||||
$end_day = strtotime(date('Y-m-d', $end_ts) . ' 00:00:00');
|
||||
|
||||
while ($current <= $end_day)
|
||||
{
|
||||
$ymd = date('Y-m-d', $current);
|
||||
|
||||
$result[$ymd] = ($ymd >= $start_ymd_allowed && $ymd <= $end_ymd_allowed) ? true : false;
|
||||
|
||||
$current = $this->jump_day($current, 1);
|
||||
}
|
||||
|
||||
return success($result);
|
||||
}
|
||||
|
||||
private function jump_day($timestamp, $days)
|
||||
{
|
||||
$days = (int)$days;
|
||||
$prefix = ($days >= 0 ? '+' : '');
|
||||
return strtotime($prefix . $days . ' days', $timestamp);
|
||||
}
|
||||
|
||||
// start of the private functions ########################################################################################################
|
||||
|
||||
// function used to sort an array of studiensemester strings
|
||||
|
||||
@@ -0,0 +1,392 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* FH-Complete
|
||||
*
|
||||
* @package FHC-Helper
|
||||
* @author FHC-Team
|
||||
* @copyright Copyright (c) 2026 fhcomplete.net
|
||||
* @license GPLv3
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \DateTime as DateTime;
|
||||
use \stdClass as stdClass;
|
||||
|
||||
class TagLib
|
||||
{
|
||||
const BATCHUSER = 'sftest';
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
// Configs
|
||||
$this->_ci->load->config('stv');
|
||||
|
||||
// Models
|
||||
$this->_ci->load->model('person/Notiz_model', 'NotizModel');
|
||||
$this->_ci->load->model('system/Notiztyp_model', 'NotiztypModel');
|
||||
$this->_ci->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
|
||||
$this->_ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
// Libraries
|
||||
$this->_ci->load->library('PermissionLib');
|
||||
$this->_ci->load->library('PrestudentLib');
|
||||
}
|
||||
|
||||
public function updateAutomatedTags($paramsTag)
|
||||
{
|
||||
// ---------------------------------
|
||||
// check params
|
||||
// ---------------------------------
|
||||
$required = ['kurzbz', 'data', 'typeId'];
|
||||
|
||||
foreach ($required as $key) {
|
||||
if (!isset($paramsTag[$key])) {
|
||||
return error('Missing Parameter: ' . $key);
|
||||
}
|
||||
}
|
||||
|
||||
$studiensemester_kurzbz = (isset ($paramsTag['studiensemester_kurzbz']) ? $paramsTag['studiensemester_kurzbz'] : null);
|
||||
$tag = $paramsTag['kurzbz'];
|
||||
$inputData = $paramsTag['data'];
|
||||
$typeId = $paramsTag['typeId'];
|
||||
|
||||
// ---------------------------------
|
||||
// prepare input
|
||||
// ---------------------------------
|
||||
$zeitraum = [];
|
||||
$arrayIds = [];
|
||||
|
||||
foreach ($inputData as $item) {
|
||||
$id = $item['id'];
|
||||
$arrayIds[] = $id;
|
||||
|
||||
$zeitraum[$id] = [
|
||||
'von' => $item['von'] ?? null,
|
||||
'bis' => $item['bis'] ?? null
|
||||
];
|
||||
}
|
||||
$arrayIds = array_unique($arrayIds);
|
||||
|
||||
$result = $this->_ci->StudiensemesterModel->load($studiensemester_kurzbz);
|
||||
if (isError($result)) {
|
||||
return $result;
|
||||
}
|
||||
$data = $result->retval[0] ?? null;
|
||||
|
||||
$von = $data->start ?? null;
|
||||
$bis = $data->ende ?? null;
|
||||
|
||||
// ---------------------------------
|
||||
// load existing tags
|
||||
// ---------------------------------
|
||||
$allTags = [];
|
||||
$resultAllTags = $this->_ci->NotizModel->getAllTags($tag, $von, $bis);
|
||||
if (isError($resultAllTags)) {
|
||||
return $resultAllTags;
|
||||
}
|
||||
$allTagsData = getData($resultAllTags);
|
||||
|
||||
if (!empty($allTagsData)) {
|
||||
foreach ($allTagsData as $item) {
|
||||
$allTags[$item->$typeId] = $item->notiz_id;
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------
|
||||
// map the data
|
||||
// ---------------------------------
|
||||
$toRecycle = [];
|
||||
$toAdd = [];
|
||||
$toDelete = [];
|
||||
|
||||
foreach ($arrayIds as $id) {
|
||||
if (isset($allTags[$id])) {
|
||||
$toRecycle[$id] = $allTags[$id];
|
||||
} else {
|
||||
$toAdd[] = $id;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($allTags as $id => $notizId) {
|
||||
if (!in_array($id, $arrayIds)) {
|
||||
$toDelete[$id] = $notizId;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------
|
||||
// recycle (update existing)
|
||||
// ---------------------------------
|
||||
$countRecycled = 0;
|
||||
$retagged = [];
|
||||
|
||||
foreach ($toRecycle as $id => $notizId)
|
||||
{
|
||||
$this->_updateTag($notizId, $zeitraum[$id]['von'], $zeitraum[$id]['bis']);
|
||||
|
||||
$countRecycled++;
|
||||
$retagged[] = $id;
|
||||
}
|
||||
|
||||
// ---------------------------------
|
||||
// ADD
|
||||
// ---------------------------------
|
||||
$countAdded = 0;
|
||||
$tagged = [];
|
||||
|
||||
foreach ($toAdd as $id)
|
||||
{
|
||||
$this->_insertTag($typeId, $id, $tag, $zeitraum[$id]['von'], $zeitraum[$id]['bis']);
|
||||
$countAdded++;
|
||||
|
||||
$tagged[] = $id;
|
||||
}
|
||||
|
||||
// ---------------------------------
|
||||
// delete
|
||||
// ---------------------------------
|
||||
$countDeleted = 0;
|
||||
$deleted = [];
|
||||
|
||||
foreach ($toDelete as $id => $notizId)
|
||||
{
|
||||
$result = $this->_deleteTag($notizId);
|
||||
|
||||
if (isError($result)) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$countDeleted++;
|
||||
$deleted[] = $id;
|
||||
}
|
||||
|
||||
// ---------------------------------
|
||||
// return
|
||||
// ---------------------------------
|
||||
return success([
|
||||
'input' => [
|
||||
'tag' => $tag,
|
||||
'arrayIds' => $arrayIds
|
||||
],
|
||||
'summary' => [
|
||||
'recycled' => $countRecycled,
|
||||
'added' => $countAdded,
|
||||
'deleted' => $countDeleted
|
||||
],
|
||||
'details' => [
|
||||
'existingTags' => $allTags,
|
||||
'toAdd' => $toAdd,
|
||||
'toRecycle' => $toRecycle,
|
||||
'toDelete' => $toDelete
|
||||
],
|
||||
'results' => [
|
||||
'retaggedIds' => $retagged,
|
||||
'newTags' => $tagged,
|
||||
'deletedTagsIds' => $deleted
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function updateAutomatedTagsForTypeId(array $params)
|
||||
{
|
||||
$return = null;
|
||||
$notiz_id = null;
|
||||
|
||||
$von = $params['von'];
|
||||
$bis = $params['bis'];
|
||||
$tag = $params['kurzbz'];
|
||||
$id = $params['id'];
|
||||
$typeId = $params['typeId'];
|
||||
|
||||
$this->_ci->NotizModel->addSelect('nz.notiz_id');
|
||||
$this->_ci->NotizModel->addSelect($typeId);
|
||||
$this->_ci->NotizModel->addJoin('public.tbl_notizzuordnung nz', 'notiz_id');
|
||||
$resultAllTags = $this->_ci->NotizModel->loadWhere([
|
||||
'typ' => $tag,
|
||||
$typeId => $id
|
||||
]);
|
||||
if(hasData($resultAllTags))
|
||||
{
|
||||
$notiz_id = $resultAllTags->retval[0]->notiz_id;
|
||||
}
|
||||
|
||||
//RECYCLE
|
||||
if ($notiz_id !== null)
|
||||
{
|
||||
$resultUpdateNotiz = $this->_updateTag($notiz_id, $von, $bis);
|
||||
$return = ['recycled' => $resultUpdateNotiz];
|
||||
}
|
||||
else
|
||||
//ADD
|
||||
{
|
||||
$resultInsertNotiz = $this->_insertTag($typeId, $id, $tag, $von, $bis);
|
||||
$return = ['added' => $resultInsertNotiz];
|
||||
}
|
||||
return success($return);
|
||||
}
|
||||
|
||||
/*
|
||||
* main function for rebuild Tags for typeId
|
||||
* */
|
||||
public function rebuildTagsForTypeId($typeId, $id, $studiensemester_kurzbz)
|
||||
{
|
||||
$automatedTagsRes = $this->_ci->NotiztypModel->loadWhere(array('automatisiert' => true, 'taglib IS NOT NULL' => null));
|
||||
$automatedTags = hasData($automatedTagsRes) ? getData($automatedTagsRes) : [];
|
||||
|
||||
$result = $this->_ci->StudiensemesterModel->load($studiensemester_kurzbz);
|
||||
if (isError($result))
|
||||
return error('Error occurred during retrieving studiensemester');
|
||||
if (empty($result->retval) || !isset($result->retval[0])) {
|
||||
return error('No studiensemester found');
|
||||
}
|
||||
|
||||
$startSem = $result->retval[0]->start ?? null;
|
||||
$endeSem = $result->retval[0]->ende ?? null;
|
||||
$return = [];
|
||||
|
||||
foreach ($automatedTags as $autoTag)
|
||||
{
|
||||
// getPath: must not be lost
|
||||
$filePath = APPPATH . 'libraries/' . $autoTag->taglib . '.php'; // APPPATH = application/
|
||||
|
||||
if (file_exists($filePath)) {
|
||||
require_once($filePath);
|
||||
} else {
|
||||
echo "File not found: " . $filePath;
|
||||
continue;
|
||||
}
|
||||
|
||||
$className = basename($autoTag->taglib);
|
||||
$kurz_bz = $autoTag->typ_kurzbz;
|
||||
|
||||
$obj = new $className();
|
||||
|
||||
$criteriaIsSet = $obj->isCriteriaSetFor([
|
||||
'typeId' => $typeId,
|
||||
'id' => $id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]);
|
||||
|
||||
if (hasData($criteriaIsSet))
|
||||
{
|
||||
$von = isset($criteriaIsSet->retval[0]->von) ? $criteriaIsSet->retval[0]->von : '';
|
||||
$bis = isset($criteriaIsSet->retval[0]->bis) ? $criteriaIsSet->retval[0]->bis : '';
|
||||
|
||||
$params = [
|
||||
'von' => $von,
|
||||
'bis' => $bis,
|
||||
'kurzbz' => $autoTag->typ_kurzbz,
|
||||
'typeId' => $typeId,
|
||||
'id' => $id,
|
||||
];
|
||||
|
||||
$result = $this->updateAutomatedTagsForTypeId($params);
|
||||
if (isError($result))
|
||||
return error('Error occurred during updateAutomatedTags' . $kurz_bz);
|
||||
|
||||
$return[$kurz_bz] = $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
//CHECK FOR DELETE
|
||||
$params = [
|
||||
'von' => $startSem,
|
||||
'bis' => $endeSem,
|
||||
'kurzbz' => $autoTag->typ_kurzbz,
|
||||
'typeId' => $typeId,
|
||||
'id' => $id,
|
||||
];
|
||||
$result = $this->_ci->NotizModel->checkIfExistingTag($kurz_bz, $typeId, $id, $startSem, $endeSem);
|
||||
if (hasData($result))
|
||||
{
|
||||
$notizId = $result->retval[0]->notiz_id;
|
||||
$this->_deleteTag($notizId);
|
||||
$return[$kurz_bz] = ['deleted' => $notizId];
|
||||
}
|
||||
}
|
||||
}
|
||||
return success($return);
|
||||
}
|
||||
|
||||
private function _insertTag($typeId, $id, $tag, $von, $bis)
|
||||
{
|
||||
$resultInsert = $this->_ci->NotizModel->insert([
|
||||
'titel' => 'TAG',
|
||||
'text' => 'AUTOMATED TAG',
|
||||
'verfasser_uid' => self::BATCHUSER,
|
||||
'erledigt' => false,
|
||||
'insertamum' => date('Y-m-d H:i:s'),
|
||||
'insertvon' => 'BatchJobTagAdd',
|
||||
'typ' => $tag,
|
||||
'start' => $von,
|
||||
'ende' => $bis
|
||||
]);
|
||||
|
||||
if (isError($resultInsert)) {
|
||||
return error('Error inserting tag for ' . $typeId . ': ' . $id);
|
||||
}
|
||||
|
||||
$notizId = $resultInsert->retval;
|
||||
|
||||
$resultZuordnung = $this->_ci->NotizzuordnungModel->insert([
|
||||
'notiz_id' => $notizId,
|
||||
$typeId => $id
|
||||
]);
|
||||
|
||||
if (isError($resultZuordnung)) {
|
||||
return error('Error inserting relation for ' . $typeId . ': ' . $id);
|
||||
}
|
||||
|
||||
return $notizId;
|
||||
}
|
||||
|
||||
private function _updateTag($notiz_id, $von, $bis)
|
||||
{
|
||||
$resultUpdateNotiz = $this->_ci->NotizModel->update(
|
||||
[
|
||||
'notiz_id' => $notiz_id
|
||||
],
|
||||
array(
|
||||
'updateamum' => date('Y-m-d H:i:s'),
|
||||
'updatevon' => 'BatchJobTagUpdate',
|
||||
'start' => $von,
|
||||
'ende' => $bis
|
||||
));
|
||||
|
||||
|
||||
if (isError($resultUpdateNotiz))
|
||||
return error ('Error occurred during Update ' . $notiz_id);
|
||||
|
||||
return $notiz_id;
|
||||
}
|
||||
|
||||
private function _deleteTag($notiz_id)
|
||||
{
|
||||
$result = $this->_ci->NotizzuordnungModel->delete([
|
||||
'notiz_id' => $notiz_id
|
||||
]);
|
||||
if (isError($result)) {
|
||||
return error('Error occurred during delete Notizzuordnung ' . $notiz_id);
|
||||
}
|
||||
|
||||
$result = $this->_ci->NotizModel->delete([
|
||||
'notiz_id' => $notiz_id
|
||||
]);
|
||||
if (isError($result)) {
|
||||
return error('Error occurred during delete Notiz ' . $notiz_id);
|
||||
}
|
||||
|
||||
return success([
|
||||
'deleted' => $notiz_id
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -47,8 +47,6 @@ class StudentListLib
|
||||
|
||||
// Add default SELECTs
|
||||
$this->addSelect("b.uid");
|
||||
if (defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
|
||||
$this->addSelect('tag_data_agg.tags');
|
||||
$this->addSelect('titelpre');
|
||||
$this->addSelect('nachname');
|
||||
$this->addSelect('vorname');
|
||||
@@ -72,6 +70,13 @@ class StudentListLib
|
||||
$this->addSelect('pls.status_kurzbz AS status');
|
||||
$this->addSelect('pls.datum AS status_datum');
|
||||
$this->addSelect('pls.bestaetigtam AS status_bestaetigung');
|
||||
$this->addSelect("
|
||||
CASE
|
||||
WHEN pls.status_kurzbz = 'Interessent'
|
||||
THEN pls.ausbildungssemester
|
||||
ELSE s.semester
|
||||
END AS semester_berechnet
|
||||
");
|
||||
$this->addSelect(
|
||||
"(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS mail_privat",
|
||||
false
|
||||
@@ -129,41 +134,6 @@ class StudentListLib
|
||||
$this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid', 'LEFT');
|
||||
$this->addJoin("v", "", ""); // Will be replaced later
|
||||
$this->addJoin("ps", "", ""); // Will be replaced later
|
||||
if (defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED) {
|
||||
$this->_ci->load->config('stv');
|
||||
$tags = $this->_ci->config->item('stv_prestudent_tags');
|
||||
|
||||
$whereTags = '';
|
||||
if (is_array($tags) && !isEmptyArray($tags)) {
|
||||
$tags = array_keys($tags);
|
||||
|
||||
foreach ($tags as $key => $tag) {
|
||||
$tags[$key] = $this->_ci->PrestudentModel->escape($tag);
|
||||
}
|
||||
$whereTags = " AND nt.typ_kurzbz IN (" . implode(",", $tags) . ")";
|
||||
}
|
||||
$subQueryTag = "(
|
||||
SELECT
|
||||
tag.prestudent_id,
|
||||
COALESCE(json_agg(tag ORDER BY tag.done), '[]'::json) AS tags
|
||||
FROM (
|
||||
SELECT DISTINCT ON (n.notiz_id)
|
||||
n.notiz_id AS id,
|
||||
nt.typ_kurzbz,
|
||||
array_to_json(nt.bezeichnung_mehrsprachig)->>0 AS beschreibung,
|
||||
n.text AS notiz,
|
||||
nt.style,
|
||||
n.erledigt AS done,
|
||||
nz.prestudent_id
|
||||
FROM public.tbl_notizzuordnung AS nz
|
||||
JOIN public.tbl_notiz AS n ON nz.notiz_id = n.notiz_id
|
||||
JOIN public.tbl_notiz_typ AS nt ON n.typ = nt.typ_kurzbz " . $whereTags . "
|
||||
) AS tag
|
||||
GROUP BY tag.prestudent_id
|
||||
) AS tag_data_agg";
|
||||
|
||||
$this->addJoin($subQueryTag, 'tag_data_agg.prestudent_id = tbl_prestudent.prestudent_id', 'LEFT');
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
@@ -283,8 +253,9 @@ class StudentListLib
|
||||
*/
|
||||
public function execute($studiensemester_kurzbz)
|
||||
{
|
||||
$stdsemEsc = $studiensemester_kurzbz ? $this->_ci->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
|
||||
$this->addSelectAndJoinForTagsIfConfigured($studiensemester_kurzbz);
|
||||
|
||||
$stdsemEsc = $studiensemester_kurzbz ? $this->_ci->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
|
||||
|
||||
$this->addSelect(
|
||||
"public.get_rolle_prestudent(
|
||||
@@ -325,6 +296,72 @@ class StudentListLib
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Protected methods
|
||||
|
||||
/**
|
||||
* Add Select and Join for Tags if configured
|
||||
*
|
||||
* @param string studiensemester_kurzbz
|
||||
*
|
||||
*/
|
||||
protected function addSelectAndJoinForTagsIfConfigured($studiensemester_kurzbz)
|
||||
{
|
||||
if (defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED) {
|
||||
$this->_ci->load->config('stv');
|
||||
$tags = $this->_ci->config->item('stv_prestudent_tags');
|
||||
|
||||
$whereTags = '';
|
||||
if (is_array($tags) && !isEmptyArray($tags)) {
|
||||
$tags = array_keys($tags);
|
||||
|
||||
foreach ($tags as $key => $tag) {
|
||||
$tags[$key] = $this->_ci->PrestudentModel->escape($tag);
|
||||
}
|
||||
$whereTags = " AND nt.typ_kurzbz IN (" . implode(",", $tags) . ")";
|
||||
}
|
||||
$studiensemester_kurzbz_escaped = $this->_ci->PrestudentModel->escape($studiensemester_kurzbz);
|
||||
$subQueryTag = "(
|
||||
SELECT
|
||||
tag.prestudent_id,
|
||||
COALESCE(json_agg(tag ORDER BY tag.done), '[]'::json) AS tags
|
||||
FROM (
|
||||
SELECT DISTINCT ON (n.notiz_id)
|
||||
n.notiz_id AS id,
|
||||
nt.typ_kurzbz,
|
||||
array_to_json(nt.bezeichnung_mehrsprachig)->>0 AS beschreibung,
|
||||
n.text AS notiz,
|
||||
nt.style,
|
||||
n.erledigt AS done,
|
||||
nz.prestudent_id,
|
||||
n.start,
|
||||
n.ende
|
||||
FROM public.tbl_notizzuordnung AS nz
|
||||
JOIN public.tbl_notiz AS n ON nz.notiz_id = n.notiz_id AND nz.prestudent_id IS NOT NULL
|
||||
JOIN public.tbl_notiz_typ AS nt ON n.typ = nt.typ_kurzbz " . $whereTags . "
|
||||
WHERE
|
||||
COALESCE(n.start, '1970-01-01') <= (
|
||||
SELECT
|
||||
ende
|
||||
FROM
|
||||
public.tbl_studiensemester
|
||||
WHERE
|
||||
studiensemester_kurzbz = " . $studiensemester_kurzbz_escaped . "
|
||||
)
|
||||
AND COALESCE(n.ende, '2170-12-31') >= (
|
||||
SELECT
|
||||
start
|
||||
FROM
|
||||
public.tbl_studiensemester
|
||||
WHERE
|
||||
studiensemester_kurzbz = " . $studiensemester_kurzbz_escaped . "
|
||||
)
|
||||
) AS tag
|
||||
GROUP BY tag.prestudent_id
|
||||
) AS tag_data_agg";
|
||||
|
||||
$this->addSelect('tag_data_agg.tags');
|
||||
$this->addJoin($subQueryTag, 'tag_data_agg.prestudent_id = tbl_prestudent.prestudent_id', 'LEFT');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get alias of a table or select statement
|
||||
*
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of dd_auto
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreDoubleDegreeTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('codex/Mobilitaet_model', 'MobilitaetModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$this->ci->MobilitaetModel->addJoin('bis.tbl_gsprogramm', 'gsprogramm_id');
|
||||
$this->ci->MobilitaetModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->MobilitaetModel-> loadWhere(array(
|
||||
'gsprogrammtyp_kurzbz' => 'Double',
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval;
|
||||
|
||||
$doubledegree_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->start,
|
||||
'bis' => $item->ende
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $doubledegree_data,
|
||||
'typeId' => 'prestudent_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$this->ci->MobilitaetModel->addSelect('prestudent_id');
|
||||
$this->ci->MobilitaetModel->addSelect('start as von');
|
||||
$this->ci->MobilitaetModel->addSelect('ende as bis');
|
||||
|
||||
$this->ci->MobilitaetModel->addJoin('bis.tbl_gsprogramm', 'gsprogramm_id');
|
||||
$this->ci->MobilitaetModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->MobilitaetModel->loadWhere(array(
|
||||
'gsprogrammtyp_kurzbz' => 'Double',
|
||||
'studiensemester_kurzbz' => $semester,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
//array mit prestudent_id, von und bis
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* Description unruly
|
||||
* Test for different typeId
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreFiftyFiveTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('person/Person_model', 'PersonModel');
|
||||
$this->ci-> load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'person_id' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$result = $this->ci->StudiensemesterModel->loadWhere(array(
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval[0];
|
||||
|
||||
$semVon = $data->start;
|
||||
$semBis = $data->ende;
|
||||
$result = $this->ci->PersonModel->getFiftyFivers($semVon, $semBis);
|
||||
|
||||
$data = $result->retval;
|
||||
$fiftyFiveData = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->person_id
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $fiftyFiveData,
|
||||
'typeId' => 'person_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'person_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$person_id = $params['id'];
|
||||
$typeId = $params['typeId'];
|
||||
|
||||
|
||||
$result = $this->ci->StudiensemesterModel->loadWhere(array(
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval[0];
|
||||
|
||||
$semVon = $data->start;
|
||||
$semBis = $data->ende;
|
||||
$result = $this->ci->PersonModel->isFiftyFive($semVon, $semBis, $person_id);
|
||||
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of jgv_auto (Jahrgangsvertretung)
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreJgvTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$result = $this->ci->BenutzerfunktionModel->getPrestudentsOfJgv($semester);
|
||||
|
||||
$data = $result->retval;
|
||||
|
||||
$jgv_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->datum_von,
|
||||
'bis' => $item->datum_bis
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $jgv_data,
|
||||
'typeId' => 'prestudent_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$result = $this->ci->BenutzerfunktionModel->isJgv($semester, $prestudent_id);
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of zgv_auto
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreMissingZgvTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_prestudentstatus', 'prestudent_id');
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_benutzer bn', 'person_id');
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
|
||||
$result = $this->ci->PrestudentModel-> loadWhere(array(
|
||||
'bn.aktiv' => true, //check if necessary
|
||||
'zgvdatum' => null,
|
||||
'typ' => 'b',
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
|
||||
$data = $result->retval;
|
||||
|
||||
$zgvmissing_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => null,
|
||||
'bis' => null
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'typeId' => 'prestudent_id',
|
||||
'data' => $zgvmissing_data
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_prestudentstatus', 'prestudent_id');
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_benutzer bn', 'person_id');
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
|
||||
$result = $this->ci->PrestudentModel->loadWhere(array(
|
||||
'bn.aktiv' => true, //check if necessary
|
||||
'zgvdatum' => null,
|
||||
'typ' => 'b',
|
||||
'studiensemester_kurzbz' => $semester,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of out_auto
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreOutgoingTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('codex/Bisio_model', 'BisioModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$result = $this->ci->BisioModel->getOutgoingsOfSemester($semester);
|
||||
|
||||
$data = $result->retval;
|
||||
|
||||
$outgoing_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->von,
|
||||
'bis' => $item->bis
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $outgoing_data,
|
||||
'typeId' => 'prestudent_id',
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$result = $this->ci->BisioModel->isPrestudentOutgoing($semester, $prestudent_id);
|
||||
|
||||
if (hasData($result)) {
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of prewh_auto
|
||||
*
|
||||
* @author bambi
|
||||
*/
|
||||
class CorePrewiederholerTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
$result = $this->ci->PrestudentstatusModel-> loadWhere(array(
|
||||
'statusgrund_id' => 15,
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval;
|
||||
|
||||
$prewiederholer_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->start,
|
||||
'bis' => $item->ende
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $prewiederholer_data,
|
||||
'typeId' => 'prestudent_id',
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$this->ci->PrestudentstatusModel->addSelect('prestudent_id');
|
||||
$this->ci->PrestudentstatusModel->addSelect('start as von');
|
||||
$this->ci->PrestudentstatusModel->addSelect('ende as bis');
|
||||
|
||||
$this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->PrestudentstatusModel->loadWhere(array(
|
||||
'statusgrund_id' => 15,
|
||||
'studiensemester_kurzbz' => $semester,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of dd_auto
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreStbErhoehtTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('crm/Konto_model', 'KontoModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$this->ci->KontoModel->addJoin('public.tbl_prestudent', 'person_id');
|
||||
$this->ci->KontoModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->KontoModel-> loadWhere(array(
|
||||
'buchungstyp_kurzbz' => 'StudiengebuehrErhoeht',
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval;
|
||||
|
||||
$konto_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->start,
|
||||
'bis' => $item->ende
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $konto_data,
|
||||
'typeId' => 'prestudent_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$this->ci->KontoModel->addSelect('prestudent_id');
|
||||
$this->ci->KontoModel->addSelect('start as von');
|
||||
$this->ci->KontoModel->addSelect('ende as bis');
|
||||
$this->ci->KontoModel->addJoin('public.tbl_prestudent', 'person_id');
|
||||
$this->ci->KontoModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->KontoModel-> loadWhere(array(
|
||||
'buchungstyp_kurzbz' => 'StudiengebuehrErhoeht',
|
||||
'studiensemester_kurzbz' => $semester,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of wiedereinstieg_auto
|
||||
*
|
||||
* @author ma0068
|
||||
*/
|
||||
class CoreUnterbrecherTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->PrestudentstatusModel-> loadWhere(array(
|
||||
'status_kurzbz' => 'Unterbrecher',
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval;
|
||||
|
||||
$unterbrecher_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->start,
|
||||
'bis' => $item->ende
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'data' => $unterbrecher_data,
|
||||
'typeId' => 'prestudent_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$this->ci->PrestudentstatusModel->addSelect('prestudent_id');
|
||||
$this->ci->PrestudentstatusModel->addSelect('start as von');
|
||||
$this->ci->PrestudentstatusModel->addSelect('ende as bis');
|
||||
|
||||
$this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
$result = $this->ci->PrestudentstatusModel-> loadWhere(array(
|
||||
'status_kurzbz' => 'Unterbrecher',
|
||||
'studiensemester_kurzbz' => $semester,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/**
|
||||
* Description of wh_auto
|
||||
*
|
||||
* @author bambi
|
||||
*/
|
||||
class CoreWiederholerTagLib
|
||||
{
|
||||
protected $ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->ci = get_instance();
|
||||
$this->ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
}
|
||||
|
||||
public function getZuordnungIds(array $params)
|
||||
{
|
||||
if(!isset($params['studiensemester_kurzbz']))
|
||||
{
|
||||
return (object) array(
|
||||
'idArray' => []
|
||||
);
|
||||
}
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
|
||||
$this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
$result = $this->ci->PrestudentstatusModel-> loadWhere(array(
|
||||
'statusgrund_id' => 16,
|
||||
'studiensemester_kurzbz' => $semester
|
||||
));
|
||||
$data = $result->retval;
|
||||
|
||||
$wiederholer_data = array_map(function($item) {
|
||||
return [
|
||||
'id' => $item->prestudent_id,
|
||||
'von' => $item->start,
|
||||
'bis' => $item->ende
|
||||
];
|
||||
}, $data);
|
||||
|
||||
return (object) array(
|
||||
'typeId' => 'prestudent_id',
|
||||
'data' => $wiederholer_data
|
||||
);
|
||||
}
|
||||
|
||||
public function isCriteriaSetFor(array $params)
|
||||
{
|
||||
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'prestudent_id')
|
||||
return false;
|
||||
|
||||
$semester = $params['studiensemester_kurzbz'];
|
||||
$prestudent_id = $params['id'];
|
||||
|
||||
$this->ci->PrestudentstatusModel->addSelect('prestudent_id');
|
||||
$this->ci->PrestudentstatusModel->addSelect('start as von');
|
||||
$this->ci->PrestudentstatusModel->addSelect('ende as bis');
|
||||
|
||||
$this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
|
||||
$result = $this->ci->PrestudentstatusModel->loadWhere(array(
|
||||
'statusgrund_id' => 16,
|
||||
'studiensemester_kurzbz' => $semester,
|
||||
'prestudent_id' => $prestudent_id,
|
||||
));
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -44,4 +44,56 @@ class Bisio_model extends DB_Model
|
||||
else
|
||||
return success("Bisio not found");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets outgoing students of certain Semester
|
||||
* @param String studiensemester_kurzbz
|
||||
* @return array of prestudent_ids
|
||||
*/
|
||||
public function getOutgoingsOfSemester($studiensemester_kurzbz)
|
||||
{
|
||||
$query = "
|
||||
SELECT DISTINCT ps.prestudent_id, tbl_bisio.von, tbl_bisio.bis
|
||||
FROM bis.tbl_bisio
|
||||
JOIN public.tbl_student USING (student_uid)
|
||||
JOIN public.tbl_prestudent ps USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||
WHERE ss.studiensemester_kurzbz = ?
|
||||
AND (
|
||||
tbl_bisio.von <= ss.ende
|
||||
AND (
|
||||
tbl_bisio.bis >= ss.start
|
||||
OR tbl_bisio.bis IS NULL
|
||||
)
|
||||
)
|
||||
";
|
||||
|
||||
return $this->execQuery($query, array($studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
public function isPrestudentOutgoing($studiensemester_kurzbz, $prestudent_id)
|
||||
{
|
||||
$query = "
|
||||
SELECT
|
||||
ps.prestudent_id, tbl_bisio.von, tbl_bisio.bis
|
||||
FROM bis.tbl_bisio
|
||||
JOIN public.tbl_student USING (student_uid)
|
||||
JOIN public.tbl_prestudent ps USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||
WHERE ss.studiensemester_kurzbz = ?
|
||||
--AND pss.status_kurzbz = 'Student'
|
||||
AND (
|
||||
tbl_bisio.von <= ss.ende
|
||||
AND (
|
||||
tbl_bisio.bis >= ss.start
|
||||
OR tbl_bisio.bis IS NULL
|
||||
)
|
||||
)
|
||||
AND ps.prestudent_id = ?
|
||||
";
|
||||
|
||||
return $this->execQuery($query, array($studiensemester_kurzbz, $prestudent_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,73 @@ class Mobilitaet_model extends DB_Model
|
||||
$this->dbTable = 'bis.tbl_mobilitaet';
|
||||
$this->pk = 'mobilitaet_id';
|
||||
}
|
||||
|
||||
public function getMobilityZusatzForUids($uids) {
|
||||
$qry = "SELECT distinct on(nachname, vorname, public.tbl_benutzer.person_id) uid,
|
||||
tbl_mitarbeiter.mitarbeiter_uid,
|
||||
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung,
|
||||
tbl_mobilitaet.mobilitaetstyp_kurzbz,
|
||||
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree,
|
||||
public.tbl_prestudent.gsstudientyp_kurzbz as ddtype,
|
||||
(SELECT status_kurzbz FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id=tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as studienstatus
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id)
|
||||
LEFT JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
|
||||
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
|
||||
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_note USING (note)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
|
||||
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
|
||||
LEFT JOIN public.tbl_prestudent USING(prestudent_id)
|
||||
WHERE uid IN ?";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, [$uids]);
|
||||
}
|
||||
|
||||
public function formatZusatz($entry, $erhalter_kz) {
|
||||
$zusatz = '';
|
||||
|
||||
if (isset($entry->studienstatus) && $entry->studienstatus === 'Incoming') {
|
||||
$zusatz = '(i)';
|
||||
}
|
||||
|
||||
if (isset($entry->lkt_ueberschreibbar) && $entry->lkt_ueberschreibbar === false) {
|
||||
$zusatz .= ' (' . ($entry->anmerkung ?? '') . ')';
|
||||
}
|
||||
|
||||
if (isset($entry->mitarbeiter_uid) && $entry->mitarbeiter_uid !== null) {
|
||||
$zusatz .= ' (ma)';
|
||||
}
|
||||
|
||||
if (isset($entry->stg_kz_student) && $entry->stg_kz_student == $erhalter_kz) {
|
||||
$zusatz .= ' (a.o.)';
|
||||
}
|
||||
|
||||
if (
|
||||
isset($entry->mobilitaetstyp_kurzbz) && $entry->mobilitaetstyp_kurzbz &&
|
||||
isset($entry->doubledegree) && $entry->doubledegree === 1
|
||||
) {
|
||||
$zusatz .= ' (d.d.';
|
||||
|
||||
$ddtype = $entry->ddtype ?? null;
|
||||
|
||||
if ($ddtype == 'Intern') {
|
||||
$zusatz .= 'i.)';
|
||||
} elseif ($ddtype == 'Extern') {
|
||||
$zusatz .= 'o.)';
|
||||
} else {
|
||||
$zusatz .= ')';
|
||||
}
|
||||
}
|
||||
|
||||
return $zusatz;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,12 +100,14 @@ class Abschlusspruefung_model extends DB_Model
|
||||
|
||||
if (isError($abschlussarbeit))
|
||||
return $abschlussarbeit;
|
||||
|
||||
if (hasData($abschlussarbeit))
|
||||
{
|
||||
$abschlussarbeit = getData($abschlussarbeit)[0];
|
||||
$abschlusspruefungdata->projektarbeit_studiengangstyp_name = $abschlussarbeit->projekttyp_kurzbz;
|
||||
$abschlusspruefungdata->abschlussarbeit_titel = $abschlussarbeit->titel;
|
||||
$abschlusspruefungdata->abschlussarbeit_note = $abschlussarbeit->note;
|
||||
$abschlusspruefungdata->abschlussarbeit_sprache = $abschlussarbeit->sprache_bezeichnung;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,4 +52,53 @@ class LePruefung_model extends DB_Model
|
||||
'student_uid' => $student_uid
|
||||
]);
|
||||
}
|
||||
|
||||
public function getPruefungenByLvStudiensemester($lv_id, $sem_kurzbz) {
|
||||
$qry = "SELECT lehre.tbl_pruefung.*, tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_note.bezeichnung as note_bezeichnung, tbl_pruefungstyp.beschreibung as typ_beschreibung, tbl_lehreinheit.studiensemester_kurzbz as studiensemester_kurzbz
|
||||
FROM lehre.tbl_pruefung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_note, lehre.tbl_pruefungstyp
|
||||
WHERE lehre.tbl_pruefung.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
|
||||
AND tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
AND lehre.tbl_pruefung.note = tbl_note.note
|
||||
AND lehre.tbl_pruefung.pruefungstyp_kurzbz=tbl_pruefungstyp.pruefungstyp_kurzbz
|
||||
AND tbl_lehrveranstaltung.lehrveranstaltung_id = ?
|
||||
AND tbl_lehreinheit.studiensemester_kurzbz = ?
|
||||
ORDER BY datum DESC;";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, array($lv_id, $sem_kurzbz));
|
||||
}
|
||||
|
||||
public function getPruefungenByUidTypLvStudiensemester($uid, $typ = null, $lv_id = null, $sem_kurzbz = null) {
|
||||
$params = [$uid];
|
||||
$qry = "SELECT tbl_pruefung.*, tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_note.bezeichnung as note_bezeichnung, tbl_pruefungstyp.beschreibung as typ_beschreibung, tbl_lehreinheit.studiensemester_kurzbz as studiensemester_kurzbz
|
||||
FROM lehre.tbl_pruefung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_note, lehre.tbl_pruefungstyp
|
||||
WHERE student_uid= ?
|
||||
AND tbl_pruefung.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
|
||||
AND tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
AND tbl_pruefung.note = tbl_note.note
|
||||
AND tbl_pruefung.pruefungstyp_kurzbz=tbl_pruefungstyp.pruefungstyp_kurzbz";
|
||||
if ($typ != null)
|
||||
{
|
||||
$qry .= " AND tbl_pruefungstyp.pruefungstyp_kurzbz = ?";
|
||||
$params[] = $typ;
|
||||
}
|
||||
|
||||
if ($lv_id != null)
|
||||
{
|
||||
$qry .= " AND tbl_lehrveranstaltung.lehrveranstaltung_id = ?";
|
||||
$params[] = $lv_id;
|
||||
}
|
||||
|
||||
if ($sem_kurzbz != null)
|
||||
{
|
||||
$qry .= " AND tbl_lehreinheit.studiensemester_kurzbz = ?";
|
||||
$params[] = $sem_kurzbz;
|
||||
}
|
||||
|
||||
|
||||
$qry .= " ORDER BY datum DESC";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -739,4 +739,26 @@ EOSQL;
|
||||
)";
|
||||
}
|
||||
|
||||
|
||||
public function getAllLehreinheitenForLvaAndMaUid($lva_id, $ma_uid, $sem_kurzbz)
|
||||
{
|
||||
$query = "SELECT DISTINCT tbl_lehreinheitmitarbeiter.lehreinheit_id, tbl_lehreinheit.lehrveranstaltung_id, tbl_lehreinheit.lehrform_kurzbz,
|
||||
tbl_lehreinheitmitarbeiter.mitarbeiter_uid,
|
||||
tbl_lehreinheitgruppe.semester,
|
||||
tbl_lehreinheitgruppe.verband,
|
||||
tbl_lehreinheitgruppe.gruppe,
|
||||
tbl_lehreinheitgruppe.gruppe_kurzbz,
|
||||
tbl_lehrveranstaltung.kurzbz,
|
||||
tbl_studiengang.kurzbzlang,
|
||||
(SELECT COUNT(DISTINCT datum) FROM campus.vw_stundenplan WHERE lehreinheit_id = lehre.tbl_lehreinheit.lehreinheit_id) as termincount,
|
||||
(SELECT COUNT(*) FROM campus.vw_student_lehrveranstaltung WHERE lehreinheit_id = lehre.tbl_lehreinheit.lehreinheit_id) as studentcount
|
||||
FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang ON (tbl_lehreinheitgruppe.studiengang_kz = tbl_studiengang.studiengang_kz)
|
||||
WHERE lehrveranstaltung_id = ? AND studiensemester_kurzbz = ? AND mitarbeiter_uid = ?
|
||||
ORDER BY tbl_lehreinheitgruppe.gruppe_kurzbz";
|
||||
|
||||
return $this->execQuery($query, [$lva_id, $sem_kurzbz, $ma_uid]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -317,7 +317,7 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
|
||||
tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_benutzer.uid,
|
||||
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung,
|
||||
tbl_student.prestudent_id
|
||||
tbl_student.prestudent_id, campus.vw_student_lehrveranstaltung.lehreinheit_id
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
JOIN public.tbl_benutzer USING(uid)
|
||||
@@ -1346,4 +1346,68 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
public function getLvForLektorInSemester($sem_kurzbz, $uid) {
|
||||
$qry = "SELECT DISTINCT (tbl_lehrveranstaltung.lehrveranstaltung_id),
|
||||
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg_kurzbz,
|
||||
tbl_studiengang.studiengang_kz,
|
||||
tbl_lehrveranstaltung.semester as lv_semester,
|
||||
tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung,
|
||||
(SELECT kurzbz FROM public.tbl_mitarbeiter
|
||||
WHERE mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid) as lektor,
|
||||
lehre.tbl_lehrveranstaltung.orgform_kurzbz as orgform
|
||||
|
||||
FROM
|
||||
lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
WHERE
|
||||
tbl_lehreinheit.studiensemester_kurzbz = ?
|
||||
AND mitarbeiter_uid = ?
|
||||
ORDER BY stg_kurzbz,lv_semester,lv_bezeichnung";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, array($sem_kurzbz, $uid));
|
||||
}
|
||||
|
||||
// used for cis4 mylv mitarbeiter
|
||||
public function getLvsByMitarbeiterInSemester($mitarbeiter_uid, $sem_kurzbz) {
|
||||
$qry = "SELECT * FROM (
|
||||
SELECT DISTINCT ON (lehre.tbl_lehrveranstaltung.lehrveranstaltung_id)
|
||||
public.tbl_studiengang.studiengang_kz,
|
||||
lehre.tbl_lehrveranstaltung.semester,
|
||||
public.tbl_studiengang.bezeichnung as sg_bezeichnung,
|
||||
public.tbl_studiengang.english as sg_bezeichnung_eng,
|
||||
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as studiengang_kuerzel,
|
||||
lehre.tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
lehre.tbl_lehrveranstaltung.bezeichnung,
|
||||
lehre.tbl_lehrveranstaltung.bezeichnung_english as bezeichnung_eng,
|
||||
lehre.tbl_lehrveranstaltung.farbe,
|
||||
lehre.tbl_lehrveranstaltung.lvinfo,
|
||||
lehre.tbl_lehrveranstaltung.benotung,
|
||||
lehre.tbl_lehrveranstaltung.orgform_kurzbz,
|
||||
lehre.tbl_lehrveranstaltung.sprache,
|
||||
lehre.tbl_lehrveranstaltung.ects,
|
||||
lehre.tbl_lehrveranstaltung.incoming
|
||||
FROM
|
||||
lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
WHERE
|
||||
tbl_lehreinheit.studiensemester_kurzbz = ?
|
||||
AND mitarbeiter_uid = ?) as distincted_by_lva_id
|
||||
JOIN (
|
||||
SELECT lehrveranstaltung_id, TRUNC(SUM(lehre.tbl_lehreinheitmitarbeiter.semesterstunden)) as semesterstunden
|
||||
FROM lehre.tbl_lehreinheit
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
WHERE tbl_lehreinheit.studiensemester_kurzbz = ?
|
||||
AND mitarbeiter_uid = ?
|
||||
GROUP BY lehrveranstaltung_id
|
||||
) semesterstundenAggregatedSubquery USING(lehrveranstaltung_id)
|
||||
ORDER BY studiengang_kuerzel, semester, bezeichnung";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, [$sem_kurzbz, $mitarbeiter_uid, $sem_kurzbz, $mitarbeiter_uid]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class Lvgesamtnote_model extends DB_Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Noten
|
||||
* Laedt die Noten - lvgesamtnote (Vorschlag) JOIN tbl.note (zeugnisnote)
|
||||
*
|
||||
* @param integer $lehrveranstaltung_id
|
||||
* @param string $student_uid
|
||||
@@ -46,4 +46,19 @@ class Lvgesamtnote_model extends DB_Model
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
public function getLvGesamtNoteVorschlag($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$qry = "SELECT * FROM campus.tbl_lvgesamtnote
|
||||
WHERE campus.tbl_lvgesamtnote.student_uid = ?
|
||||
AND campus.tbl_lvgesamtnote.studiensemester_kurzbz = ?";
|
||||
$params = [$student_uid, $studiensemester_kurzbz];
|
||||
|
||||
if ($lehrveranstaltung_id) {
|
||||
$qry .= "AND campus.tbl_lvgesamtnote.lehrveranstaltung_id = ?";
|
||||
$params[] = $lehrveranstaltung_id;
|
||||
}
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,12 +11,33 @@ class Note_model extends DB_Model
|
||||
$this->dbTable = 'lehre.tbl_note';
|
||||
$this->pk = 'note';
|
||||
}
|
||||
|
||||
|
||||
public function getAllActive() {
|
||||
$qry ="SELECT *
|
||||
FROM lehre.tbl_note
|
||||
WHERE aktiv = true";
|
||||
|
||||
return $this->execReadOnlyQuery($qry);
|
||||
}
|
||||
|
||||
// used to determine the primary key of note "entschuldigt" to avoid hardcoded magic numbers
|
||||
// that might differ in a different installation of fhcomplete
|
||||
public function getEntschuldigtNote() {
|
||||
$qry ="SELECT *
|
||||
FROM lehre.tbl_note
|
||||
WHERE bezeichnung = 'entschuldigt'";
|
||||
|
||||
return $this->execReadOnlyQuery($qry);
|
||||
}
|
||||
|
||||
// used to determine the primary key of note "noch nicht eingetragen" to avoid hardcoded magic numbers
|
||||
// that might differ in a different installation of fhcomplete
|
||||
public function getNochNichtEingetragenNote() {
|
||||
$qry ="SELECT *
|
||||
FROM lehre.tbl_note
|
||||
WHERE bezeichnung = 'Noch nicht eingetragen'";
|
||||
|
||||
return $this->execReadOnlyQuery($qry);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,6 +26,9 @@ class Notenschluesselaufteilung_model extends DB_Model
|
||||
$this->load->model('education/Notenschluesselzuordnung_model', 'NotenschluesselzuordnungModel');
|
||||
$notenschluessel_kurzbz = $this->NotenschluesselzuordnungModel->getKurzbzForLv($lehrveranstaltung_id, $studiensemester_kurzbz);
|
||||
|
||||
if($notenschluessel_kurzbz == null)
|
||||
return success(null);
|
||||
|
||||
$this->addSelect("note");
|
||||
$this->addOrder("punkte", "DESC");
|
||||
$this->addLimit(1);
|
||||
|
||||
@@ -61,6 +61,174 @@ class Paabgabe_model extends DB_Model
|
||||
return $this->execReadOnlyQuery($qry, array($person_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets project submissions for search criteria.
|
||||
* @param array $projekttyp_kurzbz_arr contains all relevant project types (e.g. Bachelor)
|
||||
* @param int $studiengang_kz study program
|
||||
* @param string $abgabetyp_kurzbz project submission type (e.g. end upload, intermediate submission)
|
||||
* @param string $abgabedatum due date for hand-in
|
||||
* @param string $personSearchString for searching by person, i.e. name, uid, person/prestudent id
|
||||
* @param int $limit limiting max number of results if search criteria is not precise enough
|
||||
* @return object
|
||||
*/
|
||||
public function getPaAbgaben(
|
||||
$projekttyp_kurzbz_arr,
|
||||
$studiengang_kz = null,
|
||||
$abgabetyp_kurzbz = null,
|
||||
$abgabedatum = null,
|
||||
$personSearchString = null,
|
||||
$limit = 1000
|
||||
) {
|
||||
$params = [];
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
stg.bezeichnung AS stgbez, paabg.datum AS termin,
|
||||
paabg.paabgabe_id, paabg.projektarbeit_id, paabg.paabgabetyp_kurzbz, paabg.abgabedatum,
|
||||
abgabetyp.bezeichnung AS paabgabetyp_bezeichnung, ben.uid, pers.vorname, pers.nachname, pa.projekttyp_kurzbz, pa.titel,
|
||||
UPPER(stg.typ || stg.kurzbz) AS studiengang_kuerzel,
|
||||
(
|
||||
/* show all relevant Studiengänge of person and wether it is an employee*/
|
||||
SELECT
|
||||
STRING_AGG(studiengang || ' ' || last_status, ' | ')
|
||||
|| (CASE WHEN EXISTS (
|
||||
SELECT 1 FROM public.tbl_mitarbeiter ma
|
||||
JOIN public.tbl_benutzer ben ON ma.mitarbeiter_uid = ben.uid
|
||||
WHERE person_id = prestudents.person_id
|
||||
AND ben.aktiv
|
||||
) THEN ' | Mitarbeiter' ELSE '' END)
|
||||
FROM (
|
||||
SELECT
|
||||
DISTINCT person_id, prestudent_id, UPPER(stg.typ || stg.kurzbz) AS studiengang,
|
||||
get_rolle_prestudent(ps.prestudent_id, null) AS last_status
|
||||
FROM
|
||||
public.tbl_prestudent ps
|
||||
JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
WHERE
|
||||
person_id = pers.person_id
|
||||
ORDER BY
|
||||
prestudent_id DESC
|
||||
) prestudents
|
||||
WHERE
|
||||
last_status IN ('Abgewiesener','Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')
|
||||
GROUP BY
|
||||
person_id
|
||||
LIMIT 1;
|
||||
) AS status
|
||||
FROM
|
||||
lehre.tbl_projektarbeit pa
|
||||
JOIN campus.tbl_paabgabe paabg USING(projektarbeit_id)
|
||||
JOIN campus.tbl_paabgabetyp abgabetyp USING(paabgabetyp_kurzbz)
|
||||
LEFT JOIN public.tbl_benutzer ben ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person pers ON(ben.person_id=pers.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang stg USING(studiengang_kz)
|
||||
WHERE
|
||||
TRUE";
|
||||
|
||||
if (isset($projekttyp_kurzbz_arr) && !isEmptyArray($projekttyp_kurzbz_arr))
|
||||
{
|
||||
$qry .= " AND projekttyp_kurzbz IN ?";
|
||||
$params[] = $projekttyp_kurzbz_arr;
|
||||
}
|
||||
|
||||
if (isset($studiengang_kz) && is_numeric($studiengang_kz))
|
||||
{
|
||||
$qry .= " AND stg.studiengang_kz=?";
|
||||
$params[] = $studiengang_kz;
|
||||
}
|
||||
|
||||
if (isset($abgabetyp_kurzbz))
|
||||
{
|
||||
$qry .= " AND paabg.paabgabetyp_kurzbz=?";
|
||||
$params[] = $abgabetyp_kurzbz;
|
||||
}
|
||||
|
||||
if (isset($abgabedatum))
|
||||
{
|
||||
$qry .= " AND paabg.datum=?";
|
||||
$params[] = $abgabedatum;
|
||||
}
|
||||
|
||||
if (is_numeric($personSearchString))
|
||||
{
|
||||
$personSearchString = (int) $personSearchString;
|
||||
$params = array_merge($params, [$personSearchString, $personSearchString]);
|
||||
$qry .= " AND (
|
||||
pers.person_id = ?
|
||||
OR EXISTS (SELECT 1 FROM public.tbl_prestudent WHERE person_id = pers.person_id AND prestudent_id = ?)
|
||||
)";
|
||||
}
|
||||
elseif (is_string($personSearchString))
|
||||
{
|
||||
// remove empty spaces and lowercase
|
||||
$personSearchString = strtolower(str_replace(' ', '', $personSearchString));
|
||||
$qry .= " AND (
|
||||
LOWER(REPLACE(pers.nachname || pers.vorname || pers.nachname, ' ', '')) LIKE ".$this->db->escape('%'.$personSearchString.'%')."
|
||||
OR ben.uid LIKE ".$this->db->escape('%'.$personSearchString.'%')."
|
||||
)";
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY nachname";
|
||||
|
||||
if (isset($limit) && is_numeric($limit) && (!isset($studiengang_kz) || !is_numeric($studiengang_kz)) && !isset($abgabedatum))
|
||||
{
|
||||
$qry .= " LIMIT ?";
|
||||
$params[] = $limit;
|
||||
}
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets due dates for projekt submission search criteria.
|
||||
* @param array $projekttyp_kurzbz_arr contains all relevant project types (e.g. Bachelor)
|
||||
* @param int $studiengang_kz study program
|
||||
* @param string $abgabetyp_kurzbz project submission type (e.g. end upload, intermediate submission)
|
||||
* @return object
|
||||
*/
|
||||
public function getTermine($projekttyp_kurzbz_arr, $studiengang_kz, $abgabetyp_kurzbz)
|
||||
{
|
||||
$params = [];
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
DISTINCT tbl_paabgabe.datum as termin, to_char(tbl_paabgabe.datum, 'DD.MM.YYYY') as termin_anzeige
|
||||
FROM
|
||||
lehre.tbl_projektarbeit
|
||||
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE
|
||||
TRUE";
|
||||
|
||||
if (isset($projekttyp_kurzbz_arr) && !isEmptyArray($projekttyp_kurzbz_arr))
|
||||
{
|
||||
$qry .= " AND projekttyp_kurzbz IN ?";
|
||||
$params[] = $projekttyp_kurzbz_arr;
|
||||
}
|
||||
|
||||
if (isset($studiengang_kz) && is_numeric($studiengang_kz))
|
||||
{
|
||||
$qry .= " AND public.tbl_studiengang.studiengang_kz=?";
|
||||
$params[] = $studiengang_kz;
|
||||
}
|
||||
|
||||
if (isset($abgabetyp_kurzbz))
|
||||
{
|
||||
$qry .= " AND campus.tbl_paabgabe.paabgabetyp_kurzbz=?";
|
||||
$params[] = $abgabetyp_kurzbz;
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY termin DESC";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
|
||||
public function findAbgabenNewOrUpdatedSince($interval, $relevantTypes)
|
||||
{
|
||||
|
||||
|
||||
@@ -23,9 +23,11 @@ class Projektarbeit_model extends DB_Model
|
||||
*/
|
||||
public function getProjektarbeit($student_uid, $studiengang_kz = null, $studiensemester_kurzbz = null, $projekttyp = null, $final = null)
|
||||
{
|
||||
$sprache_index = "COALESCE((SELECT index FROM public.tbl_sprache WHERE sprache=" . $this->escape(getUserLanguage()) . " LIMIT 1), 1)";
|
||||
$qry = "SELECT
|
||||
pa.*, tbl_projekttyp.bezeichnung,
|
||||
tbl_lehreinheit.studiensemester_kurzbz, tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_sprache.bezeichnung[".$sprache_index."] AS sprache_bezeichnung,
|
||||
tbl_firma.name AS firma_name,
|
||||
(
|
||||
SELECT
|
||||
@@ -44,6 +46,7 @@ class Projektarbeit_model extends DB_Model
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_firma USING (firma_id)
|
||||
LEFT JOIN public.tbl_sprache ON pa.sprache = tbl_sprache.sprache
|
||||
WHERE
|
||||
pa.student_uid = ?";
|
||||
|
||||
@@ -187,10 +190,7 @@ class Projektarbeit_model extends DB_Model
|
||||
campus.tbl_paabgabetyp.bezeichnung,
|
||||
campus.tbl_paabgabetyp.benotbar,
|
||||
campus.tbl_paabgabe.abgabedatum,
|
||||
campus.tbl_paabgabe.insertvon,
|
||||
campus.tbl_paabgabe.insertamum,
|
||||
campus.tbl_paabgabe.updatevon,
|
||||
campus.tbl_paabgabe.updateamum
|
||||
campus.tbl_paabgabe.insertvon
|
||||
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
|
||||
WHERE campus.tbl_paabgabe.projektarbeit_id = ?
|
||||
ORDER BY campus.tbl_paabgabe.datum";
|
||||
@@ -210,18 +210,7 @@ class Projektarbeit_model extends DB_Model
|
||||
campus.tbl_paabgabetyp.paabgabetyp_kurzbz,
|
||||
campus.tbl_paabgabetyp.bezeichnung,
|
||||
campus.tbl_paabgabe.abgabedatum,
|
||||
campus.tbl_paabgabe.insertvon,
|
||||
campus.tbl_paabgabe.updatevon,
|
||||
campus.tbl_paabgabe.insertamum,
|
||||
campus.tbl_paabgabe.updateamum,
|
||||
(SELECT p.vorname || ' ' || p.nachname
|
||||
FROM public.tbl_benutzer b
|
||||
JOIN public.tbl_person p USING(person_id)
|
||||
WHERE b.uid = campus.tbl_paabgabe.insertvon) AS insertvon_fullname,
|
||||
(SELECT p.vorname || ' ' || p.nachname
|
||||
FROM public.tbl_benutzer b
|
||||
JOIN public.tbl_person p USING(person_id)
|
||||
WHERE b.uid = campus.tbl_paabgabe.updatevon) AS updatevon_fullname
|
||||
campus.tbl_paabgabe.insertvon
|
||||
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
|
||||
WHERE campus.tbl_paabgabe.projektarbeit_id IN ?
|
||||
ORDER BY campus.tbl_paabgabe.datum";
|
||||
@@ -254,8 +243,7 @@ class Projektarbeit_model extends DB_Model
|
||||
LEFT JOIN public.tbl_benutzer ben USING (person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid
|
||||
WHERE (ben.aktiv OR ben.aktiv IS NULL)
|
||||
AND projektarbeit_id = ?
|
||||
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz = ANY('{Begutachter, Betreuer, Erstbetreuer,Erstbegutachter,Senatsvorsitz}')";
|
||||
AND projektarbeit_id = ?";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, [$projektarbeit_id]);
|
||||
}
|
||||
@@ -309,142 +297,34 @@ class Projektarbeit_model extends DB_Model
|
||||
* Get a List of Projektarbeiten of a mitarbeiter with zuordnung
|
||||
* used by the mitarbeiter cis4 abgabetool.
|
||||
*/
|
||||
public function getMitarbeiterProjektarbeiten($person_id, $showAll){
|
||||
$qry = "WITH secondary_betreuer AS (
|
||||
SELECT DISTINCT ON (pb.projektarbeit_id)
|
||||
pb.projektarbeit_id,
|
||||
pb.person_id AS zweitbetreuer_person_id,
|
||||
b.uid AS zweitbetreuer_benutzer_uid,
|
||||
pb.betreuerart_kurzbz AS zweitbetreuer_betreuerart_kurzbz,
|
||||
ba.beschreibung AS zweitbetreuer_betreuerart_beschreibung,
|
||||
p.titelpre AS zweitbetreuer_titelpre,
|
||||
p.vorname AS zweitbetreuer_vorname,
|
||||
p.nachname AS zweitbetreuer_nachname,
|
||||
p.titelpost AS zweitbetreuer_titelpost,
|
||||
trim(
|
||||
COALESCE(p.titelpre, '') || ' ' ||
|
||||
COALESCE(p.vorname, '') || ' ' ||
|
||||
COALESCE(p.nachname, '') || ' ' ||
|
||||
COALESCE(p.titelpost, '')
|
||||
) AS zweitbetreuer_full_name
|
||||
FROM lehre.tbl_projektbetreuer pb
|
||||
JOIN public.tbl_person p ON p.person_id = pb.person_id
|
||||
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id
|
||||
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz
|
||||
WHERE pb.betreuerart_kurzbz = ANY('{Zweitbetreuer,Zweitbegutachter,Senatsmitglied}')
|
||||
ORDER BY pb.projektarbeit_id
|
||||
),
|
||||
primary_betreuer AS (
|
||||
SELECT DISTINCT ON (pb.projektarbeit_id)
|
||||
pb.projektarbeit_id,
|
||||
pb.person_id AS betreuer_person_id,
|
||||
pb.betreuerart_kurzbz AS betreuer_betreuerart_kurzbz,
|
||||
ba.beschreibung AS betreuer_betreuerart_beschreibung,
|
||||
p.titelpre AS betreuer_titelpre,
|
||||
p.vorname AS betreuer_vorname,
|
||||
p.nachname AS betreuer_nachname,
|
||||
p.titelpost AS betreuer_titelpost,
|
||||
trim(
|
||||
COALESCE(p.titelpre, '') || ' ' ||
|
||||
COALESCE(p.vorname, '') || ' ' ||
|
||||
COALESCE(p.nachname, '') || ' ' ||
|
||||
COALESCE(p.titelpost, '')
|
||||
) AS betreuer_full_name
|
||||
FROM lehre.tbl_projektbetreuer pb
|
||||
JOIN public.tbl_person p ON p.person_id = pb.person_id
|
||||
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id
|
||||
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz
|
||||
WHERE pb.betreuerart_kurzbz = ANY('{Begutachter, Betreuer, Erstbetreuer,Erstbegutachter,Senatsvorsitz}')
|
||||
ORDER BY pb.projektarbeit_id
|
||||
)
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
(SELECT DISTINCT ON (tbl_projektarbeit.projektarbeit_id)
|
||||
student_person.vorname, student_person.nachname,
|
||||
tbl_studiengang.typ, tbl_studiengang.kurzbz,
|
||||
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung,
|
||||
tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, tbl_projektarbeit.note,
|
||||
student_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz, public.tbl_student.student_uid,
|
||||
|
||||
lehre.tbl_projektarbeit.sprache,
|
||||
lehre.tbl_projektarbeit.seitenanzahl,
|
||||
lehre.tbl_projektarbeit.kontrollschlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter_en,
|
||||
lehre.tbl_projektarbeit.abstract,
|
||||
lehre.tbl_projektarbeit.abstract_en,
|
||||
lehre.tbl_projektarbeit.insertamum,
|
||||
|
||||
(
|
||||
SELECT orgform_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = (
|
||||
SELECT prestudent_id FROM public.tbl_student
|
||||
WHERE student_uid = student_benutzer.uid LIMIT 1
|
||||
)
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
) AS organisationsform,
|
||||
(
|
||||
SELECT COALESCE(tbl_studienplan.orgform_kurzbz,
|
||||
tbl_prestudentstatus.orgform_kurzbz,
|
||||
tbl_studiengang.orgform_kurzbz)
|
||||
FROM public.tbl_prestudent
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
|
||||
JOIN public.tbl_studiengang USING (studiengang_kz)
|
||||
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
|
||||
WHERE prestudent_id = public.tbl_student.prestudent_id
|
||||
ORDER BY tbl_prestudentstatus.datum DESC
|
||||
LIMIT 1
|
||||
) AS orgform,
|
||||
(
|
||||
SELECT status_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = public.tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
) AS studienstatus,
|
||||
|
||||
pb.betreuer_person_id,
|
||||
pb.betreuer_betreuerart_kurzbz,
|
||||
pb.betreuer_betreuerart_beschreibung,
|
||||
pb.betreuer_titelpre,
|
||||
pb.betreuer_vorname,
|
||||
pb.betreuer_nachname,
|
||||
pb.betreuer_titelpost,
|
||||
pb.betreuer_full_name,
|
||||
|
||||
sb.zweitbetreuer_person_id,
|
||||
sb.zweitbetreuer_benutzer_uid,
|
||||
sb.zweitbetreuer_betreuerart_kurzbz,
|
||||
sb.zweitbetreuer_betreuerart_beschreibung,
|
||||
sb.zweitbetreuer_titelpre,
|
||||
sb.zweitbetreuer_vorname,
|
||||
sb.zweitbetreuer_nachname,
|
||||
sb.zweitbetreuer_titelpost,
|
||||
sb.zweitbetreuer_full_name
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
|
||||
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
|
||||
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
|
||||
LEFT JOIN primary_betreuer pb ON pb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
LEFT JOIN secondary_betreuer sb ON sb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
|
||||
AND (pb.betreuer_person_id = ? OR sb.zweitbetreuer_person_id = ?)
|
||||
".($showAll?'':' AND student_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
|
||||
public function getMitarbeiterProjektarbeiten($uid, $showAll){
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
(SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz,
|
||||
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, tbl_projektarbeit.note,
|
||||
tbl_projektbetreuer.person_id as betreuer_person_id, tbl_projektbetreuer.betreuerart_kurzbz, tbl_betreuerart.beschreibung AS betreuerart_beschreibung,
|
||||
tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz, public.tbl_student.student_uid
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id)
|
||||
LEFT JOIN lehre.tbl_betreuerart using(betreuerart_kurzbz)
|
||||
LEFT JOIN public.tbl_benutzer on(uid=student_uid)
|
||||
LEFT JOIN public.tbl_student on(public.tbl_benutzer.uid=public.tbl_student.student_uid)
|
||||
LEFT JOIN public.tbl_person on(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz=public.tbl_studiengang.studiengang_kz)
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
|
||||
AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer
|
||||
WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id
|
||||
AND public.tbl_benutzer.uid= ? )
|
||||
".($showAll?'':' AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
|
||||
AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Zweitbegutachter', 'Erstbetreuer', 'Senatsvorsitz', 'Senatsmitglied')
|
||||
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
|
||||
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
|
||||
ORDER BY nachname;";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, array($person_id, $person_id));
|
||||
return $this->execReadOnlyQuery($qry, array($uid));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -464,257 +344,176 @@ class Projektarbeit_model extends DB_Model
|
||||
|
||||
|
||||
public function getProjektarbeitenForStudiengang($studiengang_kz, $benotet) {
|
||||
$new_qry = "WITH secondary_betreuer AS (
|
||||
SELECT DISTINCT ON (pb.projektarbeit_id)
|
||||
pb.projektarbeit_id,
|
||||
pb.person_id AS zweitbetreuer_person_id,
|
||||
pb.betreuerart_kurzbz AS zweitbetreuer_betreuerart_kurzbz,
|
||||
ba.beschreibung AS zweitbetreuer_betreuerart_beschreibung,
|
||||
p.titelpre AS zweitbetreuer_titelpre,
|
||||
p.vorname AS zweitbetreuer_vorname,
|
||||
p.nachname AS zweitbetreuer_nachname,
|
||||
p.titelpost AS zweitbetreuer_titelpost,
|
||||
trim(
|
||||
COALESCE(p.titelpre, '') || ' ' ||
|
||||
COALESCE(p.vorname, '') || ' ' ||
|
||||
COALESCE(p.nachname, '') || ' ' ||
|
||||
COALESCE(p.titelpost, '')
|
||||
) AS zweitbetreuer_full_name
|
||||
FROM lehre.tbl_projektbetreuer pb
|
||||
JOIN public.tbl_person p ON p.person_id = pb.person_id
|
||||
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id
|
||||
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz
|
||||
WHERE pb.betreuerart_kurzbz = ANY('{Zweitbetreuer,Zweitbegutachter,Senatsmitglied}')
|
||||
ORDER BY pb.projektarbeit_id -- DISTINCT ON needs this to be deterministic
|
||||
)
|
||||
$new_qry = "SELECT DISTINCT ON(tmp.projektarbeit_id) *, campus.get_betreuer_details(tmp.zweitbetreuer_person_id) as zweitbetreuer_full_name, campus.get_betreuer_details(tmp.betreuer_person_id) as erstbetreuer_full_name
|
||||
FROM(
|
||||
SELECT
|
||||
DISTINCT ON(tbl_projektarbeit.projektarbeit_id)
|
||||
tbl_projektarbeit.projekttyp_kurzbz,
|
||||
tbl_projektarbeit.titel,
|
||||
tbl_projektarbeit.projektarbeit_id,
|
||||
tbl_studiengang.typ, tbl_studiengang.kurzbz,
|
||||
student_benutzer.uid as student_uid,
|
||||
student_person.vorname as student_vorname,
|
||||
student_person.nachname as student_nachname,
|
||||
tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz,
|
||||
betreuer_benutzer.uid as betreuer_benutzer_uid,
|
||||
betreuer_person.titelpre as betreuer_titelpre,
|
||||
betreuer_person.vorname as betreuer_vorname,
|
||||
betreuer_person.nachname as betreuer_nachname,
|
||||
betreuer_person.titelpost as betreuer_titelpost,
|
||||
lehre.tbl_projektbetreuer.betreuerart_kurzbz as betreuerart,
|
||||
lehre.tbl_projektbetreuer.person_id as betreuer_person_id,
|
||||
lehre.tbl_projektarbeit.sprache as sprache,
|
||||
lehre.tbl_projektarbeit.seitenanzahl as seitenanzahl,
|
||||
lehre.tbl_projektarbeit.kontrollschlagwoerter as kontrollschlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter as schlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter_en as schlagwoerter_en,
|
||||
lehre.tbl_projektarbeit.abstract as abstract,
|
||||
lehre.tbl_projektarbeit.abstract_en as abstract_en,
|
||||
lehre.tbl_projektarbeit.insertamum as insertamum,
|
||||
lehre.tbl_projektarbeit.note as note,
|
||||
(
|
||||
SELECT orgform_kurzbz
|
||||
FROM tbl_prestudentstatus
|
||||
WHERE prestudent_id = (SELECT prestudent_id
|
||||
FROM tbl_student
|
||||
WHERE student_uid = student_benutzer.uid
|
||||
LIMIT 1)
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
as organisationsform,
|
||||
(
|
||||
SELECT person_id
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
AS zweitbetreuer_person_id,
|
||||
(
|
||||
SELECT betreuerart_kurzbz
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
AS zweitbetreuer_betreuerart_kurzbz,
|
||||
(
|
||||
SELECT tbl_betreuerart.beschreibung
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_betreuerart USING (betreuerart_kurzbz)
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
AS zweitbetreuer_betreuerart_beschreibung,
|
||||
(
|
||||
SELECT trim(COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(nachname, '') || ' ' ||
|
||||
COALESCE(titelpost, ''))
|
||||
FROM public.tbl_person
|
||||
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
as zweitbetreuer_full_name,
|
||||
(
|
||||
SELECT titelpre
|
||||
FROM public.tbl_person
|
||||
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
as zweitbetreuer_titelpre,
|
||||
(
|
||||
SELECT vorname
|
||||
FROM public.tbl_person
|
||||
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
as zweitbetreuer_vorname,
|
||||
(
|
||||
SELECT nachname
|
||||
FROM public.tbl_person
|
||||
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
as zweitbetreuer_nachname,
|
||||
(
|
||||
SELECT titelpost
|
||||
FROM public.tbl_person
|
||||
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied')
|
||||
LIMIT 1
|
||||
)
|
||||
as zweitbetreuer_titelpost,
|
||||
(
|
||||
SELECT
|
||||
COALESCE(tbl_studienplan.orgform_kurzbz,
|
||||
tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as
|
||||
orgform
|
||||
FROM
|
||||
public.tbl_prestudent
|
||||
JOIN public.tbl_prestudentstatus USING(prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
LEFT JOIN lehre.tbl_studienplan USING(studienplan_id)
|
||||
WHERE
|
||||
prestudent_id=tbl_student.prestudent_id
|
||||
ORDER BY tbl_prestudentstatus.datum DESC LIMIT 1
|
||||
) as orgform,
|
||||
(SELECT status_kurzbz FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id=tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as studienstatus
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON (student_benutzer.uid = lehre.tbl_projektarbeit.student_uid)
|
||||
LEFT JOIN public.tbl_person student_person ON (student_benutzer.person_id = student_person.person_id)
|
||||
LEFT JOIN public.tbl_student on(student_benutzer.uid = public.tbl_student.student_uid)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON (public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz)
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
|
||||
LEFT JOIN public.tbl_person betreuer_person ON (betreuer_person.person_id = lehre.tbl_projektbetreuer.person_id)
|
||||
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON (betreuer_person.person_id = betreuer_benutzer.person_id)
|
||||
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
|
||||
AND student_benutzer.aktiv AND (
|
||||
lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbegutachter'
|
||||
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter'
|
||||
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Betreuer'
|
||||
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbetreuer'
|
||||
OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Senatsvorsitz'
|
||||
)
|
||||
AND public.tbl_studiengang.studiengang_kz = ?";
|
||||
|
||||
SELECT DISTINCT ON (tmp.projektarbeit_id)
|
||||
*,
|
||||
campus.get_betreuer_details(tmp.zweitbetreuer_person_id) AS zweitbetreuer_full_name,
|
||||
campus.get_betreuer_details(tmp.betreuer_person_id) AS erstbetreuer_full_name
|
||||
FROM (
|
||||
SELECT DISTINCT ON (tbl_projektarbeit.projektarbeit_id)
|
||||
tbl_projektarbeit.projekttyp_kurzbz,
|
||||
tbl_projektarbeit.titel,
|
||||
tbl_projektarbeit.projektarbeit_id,
|
||||
tbl_studiengang.typ,
|
||||
tbl_studiengang.kurzbz,
|
||||
student_benutzer.uid AS student_uid,
|
||||
student_person.vorname AS student_vorname,
|
||||
student_person.nachname AS student_nachname,
|
||||
public.tbl_student.matrikelnr,
|
||||
tbl_lehreinheit.studiensemester_kurzbz,
|
||||
betreuer_benutzer.uid AS betreuer_benutzer_uid,
|
||||
betreuer_person.titelpre AS betreuer_titelpre,
|
||||
betreuer_person.vorname AS betreuer_vorname,
|
||||
betreuer_person.nachname AS betreuer_nachname,
|
||||
betreuer_person.titelpost AS betreuer_titelpost,
|
||||
lehre.tbl_projektbetreuer.betreuerart_kurzbz AS betreuerart,
|
||||
lehre.tbl_projektbetreuer.person_id AS betreuer_person_id,
|
||||
lehre.tbl_projektarbeit.sprache,
|
||||
lehre.tbl_projektarbeit.seitenanzahl,
|
||||
lehre.tbl_projektarbeit.kontrollschlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter_en,
|
||||
lehre.tbl_projektarbeit.abstract,
|
||||
lehre.tbl_projektarbeit.abstract_en,
|
||||
lehre.tbl_projektarbeit.insertamum,
|
||||
lehre.tbl_projektarbeit.note,
|
||||
|
||||
sb.zweitbetreuer_person_id,
|
||||
sb.zweitbetreuer_betreuerart_kurzbz,
|
||||
sb.zweitbetreuer_betreuerart_beschreibung,
|
||||
sb.zweitbetreuer_full_name,
|
||||
sb.zweitbetreuer_titelpre,
|
||||
sb.zweitbetreuer_vorname,
|
||||
sb.zweitbetreuer_nachname,
|
||||
sb.zweitbetreuer_titelpost,
|
||||
|
||||
(
|
||||
SELECT orgform_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = (
|
||||
SELECT prestudent_id FROM public.tbl_student
|
||||
WHERE student_uid = student_benutzer.uid LIMIT 1
|
||||
)
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
) AS organisationsform,
|
||||
(
|
||||
SELECT COALESCE(tbl_studienplan.orgform_kurzbz,
|
||||
tbl_prestudentstatus.orgform_kurzbz,
|
||||
tbl_studiengang.orgform_kurzbz)
|
||||
FROM public.tbl_prestudent
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
|
||||
JOIN public.tbl_studiengang USING (studiengang_kz)
|
||||
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
|
||||
WHERE prestudent_id = public.tbl_student.prestudent_id
|
||||
ORDER BY tbl_prestudentstatus.datum DESC
|
||||
LIMIT 1
|
||||
) AS orgform,
|
||||
(
|
||||
SELECT status_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = public.tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
) AS studienstatus
|
||||
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
|
||||
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
|
||||
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
|
||||
LEFT JOIN public.tbl_person betreuer_person ON betreuer_person.person_id = lehre.tbl_projektbetreuer.person_id
|
||||
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON betreuer_person.person_id = betreuer_benutzer.person_id
|
||||
LEFT JOIN secondary_betreuer sb ON sb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
|
||||
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
|
||||
AND student_benutzer.aktiv
|
||||
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz IN (
|
||||
'Erstbegutachter', 'Begutachter', 'Betreuer', 'Erstbetreuer', 'Senatsvorsitz'
|
||||
)
|
||||
AND public.tbl_studiengang.studiengang_kz = ?";
|
||||
|
||||
if($benotet == 0) {
|
||||
$new_qry .= " AND lehre.tbl_projektarbeit.note IS NULL ";
|
||||
} else if ($benotet == 1) {
|
||||
$new_qry .= " AND lehre.tbl_projektarbeit.note IS NOT NULL ";
|
||||
}
|
||||
|
||||
$new_qry .= " ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
|
||||
if($benotet == 0) {
|
||||
$new_qry .= " AND lehre.tbl_projektarbeit.note IS NULL ";
|
||||
} else if ($benotet == 1) {
|
||||
$new_qry .= " AND lehre.tbl_projektarbeit.note IS NOT NULL ";
|
||||
}
|
||||
|
||||
$new_qry .= " ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
|
||||
) as tmp";
|
||||
|
||||
return $this->execReadOnlyQuery($new_qry, array($studiengang_kz));
|
||||
}
|
||||
|
||||
public function getProjektarbeitenForStudent($student_uid) {
|
||||
$new_qry = "WITH secondary_betreuer AS (
|
||||
SELECT DISTINCT ON (pb.projektarbeit_id)
|
||||
pb.projektarbeit_id,
|
||||
pb.person_id AS zweitbetreuer_person_id,
|
||||
pb.betreuerart_kurzbz AS zweitbetreuer_betreuerart_kurzbz,
|
||||
ba.beschreibung AS zweitbetreuer_betreuerart_beschreibung,
|
||||
p.titelpre AS zweitbetreuer_titelpre,
|
||||
p.vorname AS zweitbetreuer_vorname,
|
||||
p.nachname AS zweitbetreuer_nachname,
|
||||
p.titelpost AS zweitbetreuer_titelpost,
|
||||
trim(
|
||||
COALESCE(p.titelpre, '') || ' ' ||
|
||||
COALESCE(p.vorname, '') || ' ' ||
|
||||
COALESCE(p.nachname, '') || ' ' ||
|
||||
COALESCE(p.titelpost, '')
|
||||
) AS zweitbetreuer_full_name
|
||||
FROM lehre.tbl_projektbetreuer pb
|
||||
JOIN public.tbl_person p ON p.person_id = pb.person_id
|
||||
LEFT JOIN public.tbl_benutzer b ON b.person_id = p.person_id
|
||||
LEFT JOIN lehre.tbl_betreuerart ba ON ba.betreuerart_kurzbz = pb.betreuerart_kurzbz
|
||||
WHERE pb.betreuerart_kurzbz = ANY('{Zweitbetreuer,Zweitbegutachter,Senatsmitglied}')
|
||||
ORDER BY pb.projektarbeit_id -- DISTINCT ON needs this to be deterministic
|
||||
)
|
||||
|
||||
SELECT DISTINCT ON (tmp.projektarbeit_id)
|
||||
*,
|
||||
campus.get_betreuer_details(tmp.zweitbetreuer_person_id) AS zweitbetreuer_full_name,
|
||||
campus.get_betreuer_details(tmp.betreuer_person_id) AS erstbetreuer_full_name
|
||||
FROM (
|
||||
SELECT DISTINCT ON (tbl_projektarbeit.projektarbeit_id)
|
||||
tbl_projektarbeit.projekttyp_kurzbz,
|
||||
tbl_projektarbeit.titel,
|
||||
tbl_projektarbeit.projektarbeit_id,
|
||||
tbl_studiengang.typ,
|
||||
tbl_studiengang.kurzbz,
|
||||
student_benutzer.uid AS student_uid,
|
||||
student_person.vorname AS student_vorname,
|
||||
student_person.nachname AS student_nachname,
|
||||
public.tbl_student.matrikelnr,
|
||||
tbl_lehreinheit.studiensemester_kurzbz,
|
||||
betreuer_benutzer.uid AS betreuer_benutzer_uid,
|
||||
betreuer_person.titelpre AS betreuer_titelpre,
|
||||
betreuer_person.vorname AS betreuer_vorname,
|
||||
betreuer_person.nachname AS betreuer_nachname,
|
||||
betreuer_person.titelpost AS betreuer_titelpost,
|
||||
lehre.tbl_projektbetreuer.betreuerart_kurzbz AS betreuerart,
|
||||
lehre.tbl_projektbetreuer.person_id AS betreuer_person_id,
|
||||
lehre.tbl_projektarbeit.sprache,
|
||||
lehre.tbl_projektarbeit.seitenanzahl,
|
||||
lehre.tbl_projektarbeit.kontrollschlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter,
|
||||
lehre.tbl_projektarbeit.schlagwoerter_en,
|
||||
lehre.tbl_projektarbeit.abstract,
|
||||
lehre.tbl_projektarbeit.abstract_en,
|
||||
lehre.tbl_projektarbeit.insertamum,
|
||||
lehre.tbl_projektarbeit.note,
|
||||
|
||||
sb.zweitbetreuer_person_id,
|
||||
sb.zweitbetreuer_betreuerart_kurzbz,
|
||||
sb.zweitbetreuer_betreuerart_beschreibung,
|
||||
sb.zweitbetreuer_full_name,
|
||||
sb.zweitbetreuer_titelpre,
|
||||
sb.zweitbetreuer_vorname,
|
||||
sb.zweitbetreuer_nachname,
|
||||
sb.zweitbetreuer_titelpost,
|
||||
|
||||
(
|
||||
SELECT orgform_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = (
|
||||
SELECT prestudent_id FROM public.tbl_student
|
||||
WHERE student_uid = student_benutzer.uid LIMIT 1
|
||||
)
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
) AS organisationsform,
|
||||
(
|
||||
SELECT COALESCE(tbl_studienplan.orgform_kurzbz,
|
||||
tbl_prestudentstatus.orgform_kurzbz,
|
||||
tbl_studiengang.orgform_kurzbz)
|
||||
FROM public.tbl_prestudent
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
|
||||
JOIN public.tbl_studiengang USING (studiengang_kz)
|
||||
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
|
||||
WHERE prestudent_id = public.tbl_student.prestudent_id
|
||||
ORDER BY tbl_prestudentstatus.datum DESC
|
||||
LIMIT 1
|
||||
) AS orgform,
|
||||
(
|
||||
SELECT status_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = public.tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
) AS studienstatus
|
||||
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN public.tbl_benutzer student_benutzer ON student_benutzer.uid = lehre.tbl_projektarbeit.student_uid
|
||||
LEFT JOIN public.tbl_person student_person ON student_benutzer.person_id = student_person.person_id
|
||||
LEFT JOIN public.tbl_student ON student_benutzer.uid = public.tbl_student.student_uid
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_studiengang ON public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
|
||||
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
|
||||
LEFT JOIN public.tbl_person betreuer_person ON betreuer_person.person_id = lehre.tbl_projektbetreuer.person_id
|
||||
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON betreuer_person.person_id = betreuer_benutzer.person_id
|
||||
LEFT JOIN secondary_betreuer sb ON sb.projektarbeit_id = tbl_projektarbeit.projektarbeit_id
|
||||
|
||||
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
|
||||
AND student_benutzer.aktiv
|
||||
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz IN (
|
||||
'Erstbegutachter', 'Begutachter', 'Betreuer', 'Erstbetreuer', 'Senatsvorsitz'
|
||||
)
|
||||
AND public.tbl_student.student_uid = ?
|
||||
ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
|
||||
) as tmp";
|
||||
|
||||
return $this->execReadOnlyQuery($new_qry, array($student_uid));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -306,4 +306,5 @@ class Pruefung_model extends DB_Model
|
||||
|
||||
return $this->loadWhereCommitteeExamsFailed();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -59,6 +59,37 @@ class Studienplan_model extends DB_Model
|
||||
'tbl_studienplan_lehrveranstaltung.semester' => $semester
|
||||
));
|
||||
}
|
||||
|
||||
public function getStudienplanByLvaSemKurzbz($lehrveranstaltung_id, $studiensemester_kurzbz) {
|
||||
$qry= "
|
||||
SELECT
|
||||
DISTINCT tbl_studienplan.*
|
||||
FROM
|
||||
lehre.tbl_studienplan
|
||||
JOIN lehre.tbl_studienplan_lehrveranstaltung
|
||||
USING(studienplan_id)
|
||||
WHERE
|
||||
tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id IN (
|
||||
SELECT
|
||||
lv.lehrveranstaltung_id
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung AS lv
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung AS t ON t.lehrveranstaltung_id=lv.lehrveranstaltung_template_id
|
||||
WHERE
|
||||
lv.lehrtyp_kurzbz<>'tpl'
|
||||
AND (lv.lehrveranstaltung_id= ? OR (lv.lehrveranstaltung_template_id= ? AND t.lehrtyp_kurzbz='tpl'))
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM
|
||||
lehre.tbl_studienplan_semester
|
||||
WHERE studienplan_id=tbl_studienplan.studienplan_id
|
||||
AND studiensemester_kurzbz= ?
|
||||
AND semester = tbl_studienplan_lehrveranstaltung.semester)
|
||||
ORDER BY bezeichnung";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, array($lehrveranstaltung_id, $lehrveranstaltung_id, $studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
public function getStudienplanLehrveranstaltungForPrestudent($studienplan_id, $semester, $prestudent_id)
|
||||
{
|
||||
|
||||
@@ -242,6 +242,30 @@ class Studiensemester_model extends DB_Model
|
||||
return $this->loadWhere(['uid' => $student_uid, 'v.lehre' => true]);
|
||||
}
|
||||
|
||||
public function getWhereMitarbeiterHasLvs($uid) {
|
||||
// first order by year with last 2 letter from right,
|
||||
// then order by WS/SS inside the years
|
||||
// query it asc so the ordering magic in cis4 turns it around again
|
||||
$qry = "WITH unique_semesters AS (
|
||||
SELECT DISTINCT ON (studiensemester_kurzbz)
|
||||
studiensemester_kurzbz,
|
||||
start,
|
||||
ende,
|
||||
bezeichnung,
|
||||
studienjahr_kurzbz
|
||||
FROM lehre.tbl_lehreinheit
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
|
||||
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
||||
WHERE mitarbeiter_uid = ?
|
||||
)
|
||||
SELECT * FROM unique_semesters
|
||||
ORDER BY
|
||||
RIGHT(studiensemester_kurzbz, 2) ASC,
|
||||
LEFT(studiensemester_kurzbz, 2) ASC;";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, [$uid]);
|
||||
}
|
||||
|
||||
public function getAktAndFutureSemester()
|
||||
{
|
||||
$query = 'SELECT studiensemester_kurzbz
|
||||
|
||||
@@ -350,5 +350,64 @@ class Benutzerfunktion_model extends DB_Model
|
||||
return success($funktionJson);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all Prestudents with details for a given Benutzerfunktion and optionally semester
|
||||
*
|
||||
* @param String $studiensemester_kurzbz
|
||||
* @return object |null
|
||||
*/
|
||||
public function getPrestudentsOfJgv($semester)
|
||||
{
|
||||
$query = "
|
||||
SELECT DISTINCT ps.prestudent_id, bf.datum_von, bf.datum_bis
|
||||
FROM public.tbl_benutzerfunktion bf
|
||||
JOIN public.tbl_benutzer bn USING (uid)
|
||||
JOIN public.tbl_prestudent ps USING (person_id)
|
||||
JOIN public.tbl_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||
WHERE ss.studiensemester_kurzbz = ?
|
||||
AND bf.funktion_kurzbz = 'jgv'
|
||||
AND (
|
||||
bf.datum_von <= ss.ende
|
||||
AND (
|
||||
bf.datum_bis >= ss.start
|
||||
OR bf.datum_bis IS NULL
|
||||
)
|
||||
)
|
||||
";
|
||||
|
||||
return $this->execQuery($query, array($semester));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a certain prestudent has the Benutzerfunktion jgv for a certain semester
|
||||
*
|
||||
* @param String $studiensemester_kurzbz
|
||||
* @param $prestudent_id
|
||||
* @return object |null
|
||||
*/
|
||||
public function isJgv($semester, $prestudent_id)
|
||||
{
|
||||
$query = "
|
||||
SELECT ps.prestudent_id, ss.start as von, ss.ende as bis
|
||||
FROM public.tbl_benutzerfunktion bf
|
||||
JOIN public.tbl_benutzer bn USING (uid)
|
||||
JOIN public.tbl_prestudent ps USING (person_id)
|
||||
JOIN public.tbl_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||
WHERE ss.studiensemester_kurzbz = ?
|
||||
AND bf.funktion_kurzbz = 'jgv'
|
||||
AND (
|
||||
bf.datum_von <= ss.ende
|
||||
AND (
|
||||
bf.datum_bis >= ss.start
|
||||
OR bf.datum_bis IS NULL
|
||||
)
|
||||
)
|
||||
AND ps.prestudent_id = ?
|
||||
";
|
||||
|
||||
return $this->execQuery($query, array($semester, $prestudent_id));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -296,4 +296,59 @@ class Notiz_model extends DB_Model
|
||||
|
||||
return $this->loadWhere(array('anrechnung_id' => $anrechnung_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a given Tag for a certain notizzuordnung id is valid
|
||||
*
|
||||
* @param $tag typ_kurzbz to check
|
||||
* @param $typeId typeId to check
|
||||
* @param $id id to check
|
||||
* @param $von start of time period or NULL
|
||||
* @param $bis end of time period or NULL
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function checkIfExistingTag($tag, $typeId, $id, $von=null, $bis=null)
|
||||
{
|
||||
$query = "
|
||||
SELECT *
|
||||
FROM public.tbl_notiz
|
||||
JOIN public.tbl_notizzuordnung nz USING (notiz_id)
|
||||
WHERE typ = ?
|
||||
AND {$typeId} = ?
|
||||
AND (
|
||||
start IS NULL
|
||||
OR ende IS NULL
|
||||
OR (start <= ? AND ende >= ?)
|
||||
)
|
||||
";
|
||||
|
||||
return $this->execQuery($query, [$tag, $id, $bis, $von]);
|
||||
}
|
||||
|
||||
/**
|
||||
* returns all existing tags of a certain tag within a time period
|
||||
*
|
||||
* @param $tag typ_kurzbz of tag
|
||||
* @param $von start of time period or NULL
|
||||
* @param $bis end of time period or NULL
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAllTags($tag, $von=null, $bis=null)
|
||||
{
|
||||
$query = "
|
||||
SELECT *
|
||||
FROM public.tbl_notiz
|
||||
JOIN public.tbl_notizzuordnung nz USING (notiz_id)
|
||||
WHERE typ = ?
|
||||
AND (
|
||||
start IS NULL
|
||||
OR ende IS NULL
|
||||
OR (start <= ? AND ende >= ?)
|
||||
);
|
||||
";
|
||||
|
||||
return $this->execQuery($query, array($tag, $bis, $von));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ class Person_model extends DB_Model
|
||||
* @param $filter Term to search for.
|
||||
* @return DB-result
|
||||
*/
|
||||
public function searchPerson($filter)
|
||||
public function searchPerson($filter, $mode=null)
|
||||
{
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id, titelpre, titelpost');
|
||||
$this->addSelect("CASE
|
||||
@@ -161,6 +161,26 @@ class Person_model extends DB_Model
|
||||
THEN 'Student'
|
||||
ELSE 'Person'
|
||||
END AS status");
|
||||
|
||||
if($mode == 'mitMaUid')
|
||||
{
|
||||
$this->addSelect("(
|
||||
SELECT m.mitarbeiter_uid
|
||||
FROM public.tbl_benutzer b
|
||||
JOIN public.tbl_mitarbeiter m
|
||||
ON b.uid = m.mitarbeiter_uid
|
||||
WHERE b.person_id = tbl_person.person_id
|
||||
LIMIT 1
|
||||
)
|
||||
AS uid");
|
||||
$this->addOrder('uid, lower(nachname), lower(vorname)');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->addOrder('lower(nachname), lower(vorname)');
|
||||
}
|
||||
|
||||
|
||||
$result = $this->loadWhere(
|
||||
'lower(nachname) like '.$this->db->escape('%'.mb_strtolower($filter).'%')."
|
||||
OR lower(vorname) like ".$this->db->escape('%'.$filter.'%')."
|
||||
@@ -433,4 +453,33 @@ class Person_model extends DB_Model
|
||||
|
||||
return $this->execReadOnlyQuery($qry, [$person_id]);
|
||||
}
|
||||
|
||||
//just a test function for a person_id tag
|
||||
//alle personen die innerhalb dieses Zeitraumens 55 werden
|
||||
public function getFiftyFivers($von, $bis)
|
||||
{
|
||||
$qry = "
|
||||
SELECT
|
||||
p.person_id
|
||||
FROM public.tbl_person p
|
||||
WHERE p.gebdatum >= DATE ? - INTERVAL '55 years'
|
||||
AND p.gebdatum <= DATE ? - INTERVAL '55 years';
|
||||
";
|
||||
return $this->execReadOnlyQuery($qry, [$von, $bis]);
|
||||
}
|
||||
|
||||
//just a test function for a person_id tag
|
||||
//check if Person gets 55 in this time
|
||||
public function isFiftyFive($von, $bis, $person_id)
|
||||
{
|
||||
$qry = "
|
||||
SELECT
|
||||
p.person_id
|
||||
FROM public.tbl_person p
|
||||
WHERE p.gebdatum >= DATE ? - INTERVAL '55 years'
|
||||
AND p.gebdatum <= DATE ? - INTERVAL '55 years'
|
||||
AND p.persond_id = ?;
|
||||
";
|
||||
return $this->execReadOnlyQuery($qry, [$von, $bis, $person_id]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,11 +50,12 @@ class Reservierung_model extends DB_Model
|
||||
|
||||
$query_result = $this->execReadOnlyQuery("
|
||||
SELECT
|
||||
'reservierung' as type, beginn, ende, datum,
|
||||
DISTINCT(insertvon),
|
||||
'reservierung' as type, beginn, ende, datum, array_agg(DISTINCT reservierung_id) AS reservierung_id,
|
||||
COALESCE(titel, beschreibung) as topic,
|
||||
array_agg(DISTINCT mitarbeiter_kurzbz) as lektor,
|
||||
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
|
||||
|
||||
array_agg(DISTINCT(uid)) as uids,
|
||||
ort_kurzbz, 'FFFFFF' as farbe
|
||||
|
||||
FROM
|
||||
@@ -62,7 +63,7 @@ class Reservierung_model extends DB_Model
|
||||
" . $subquery . "
|
||||
) AS subquery
|
||||
|
||||
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
|
||||
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung, insertvon
|
||||
|
||||
ORDER BY datum, beginn
|
||||
", is_null($ort_kurzbz) ? [$uid ?? getAuthUID(), $uid ?? getAuthUID(), $start_date, $end_date] : [$ort_kurzbz, $start_date, $end_date]);
|
||||
@@ -94,11 +95,12 @@ class Reservierung_model extends DB_Model
|
||||
|
||||
$query_result = $this->execReadOnlyQuery("
|
||||
SELECT
|
||||
DISTINCT(insertvon),
|
||||
'reservierung' as type, beginn, ende, datum,
|
||||
COALESCE(titel, beschreibung) as topic,
|
||||
array_agg(DISTINCT mitarbeiter_kurzbz) as lektor,
|
||||
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
|
||||
|
||||
array_agg(DISTINCT(uid)) as uids,
|
||||
ort_kurzbz, 'FFFFFF' as farbe
|
||||
|
||||
FROM
|
||||
@@ -106,7 +108,7 @@ class Reservierung_model extends DB_Model
|
||||
" . $subquery . "
|
||||
) AS subquery
|
||||
|
||||
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
|
||||
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung, insertvon
|
||||
|
||||
ORDER BY datum, beginn
|
||||
", [$uid ?? getAuthUID(), $start_date, $end_date]);
|
||||
|
||||
@@ -12,6 +12,8 @@ class Zeitsperre_model extends DB_Model
|
||||
$this->pk = 'zeitsperre_id';
|
||||
}
|
||||
|
||||
const BLOCKIERENDE_ZEITSPERREN = ['Krank','Urlaub','ZA','DienstV','PflegeU','DienstF','CovidSB','CovidKS'];
|
||||
|
||||
/**
|
||||
* Save or update Zeitsperre.
|
||||
*
|
||||
@@ -61,4 +63,128 @@ class Zeitsperre_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry);
|
||||
}
|
||||
|
||||
/**
|
||||
* get Zeitsperren of a user
|
||||
*
|
||||
* @param $uid mitarbeiteruid
|
||||
* @param $bisgrenze @true show only entries of actual business year (1.9.- 31.8.)
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getZeitsperrenUser($uid, $bisgrenze = true)
|
||||
{
|
||||
$qry = "
|
||||
SELECT
|
||||
tbl_zeitsperre.*, tbl_zeitsperretyp.*, tbl_erreichbarkeit.farbe AS erreichbarkeit_farbe,
|
||||
tbl_erreichbarkeit.beschreibung AS erreichbarkeit_beschreibung,
|
||||
CONCAT (ps.vorname, ' ', ps.nachname) as vertretung
|
||||
FROM (campus.tbl_zeitsperre JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz))
|
||||
LEFT JOIN campus.tbl_erreichbarkeit USING (erreichbarkeit_kurzbz)
|
||||
LEFT JOIN public.tbl_benutzer ON campus.tbl_zeitsperre.vertretung_uid = public.tbl_benutzer.uid
|
||||
LEFT JOIN public.tbl_person ps USING (person_id)
|
||||
WHERE mitarbeiter_uid= ?
|
||||
";
|
||||
|
||||
if($bisgrenze)
|
||||
{
|
||||
$qry.="
|
||||
AND (
|
||||
(date_part('month',vondatum)>=9 AND date_part('year', vondatum)>='".(date('Y')-1)."')
|
||||
OR
|
||||
(date_part('month',vondatum)<9 AND date_part('year', vondatum)>='".(date('Y'))."')
|
||||
)";
|
||||
}
|
||||
|
||||
$qry.= " ORDER BY vondatum DESC";
|
||||
|
||||
return $this->execQuery($qry, array('mitarbeiter_uid' => $uid));
|
||||
}
|
||||
|
||||
/**
|
||||
* check a date for existing zeitsperre
|
||||
*
|
||||
* @param $uid mitarbeiteruid
|
||||
* @param $datum datum to check
|
||||
* @param $stunde stunde (default = null)
|
||||
* @param bool $nurblockierend if only hr relevante zeitsperren have to be checked
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSperreByDate($uid, $datum, $stunde = null, $nurblockierend = false)
|
||||
{
|
||||
$parametersArray = [$datum, $datum];
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
vondatum <= ?
|
||||
AND bisdatum>= ?";
|
||||
|
||||
if($nurblockierend)
|
||||
{
|
||||
$qry .= " AND zeitsperretyp_kurzbz IN ('"
|
||||
. implode("','", self::BLOCKIERENDE_ZEITSPERREN)
|
||||
. "')";
|
||||
}
|
||||
|
||||
if(!is_null($stunde))
|
||||
{
|
||||
$parametersArray = array_merge(
|
||||
$parametersArray,
|
||||
[$datum, $stunde, $datum, $datum, $stunde, $datum]
|
||||
);
|
||||
|
||||
$qry.=" AND
|
||||
((vondatum= ? AND vonstunde<= ? OR vonstunde is null OR vondatum<> ?) AND
|
||||
(bisdatum= ? AND bisstunde>= ? OR bisstunde is null OR bisdatum<> ?))";
|
||||
}
|
||||
|
||||
array_push($parametersArray, $uid);
|
||||
|
||||
$qry .= "AND mitarbeiter_uid= ? ";
|
||||
|
||||
return $this->execQuery($qry, $parametersArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* check a date for existing zeitsperre
|
||||
*
|
||||
* @param $uid mitarbeiteruid
|
||||
* @param $vondatum datum in Format IS0
|
||||
* @param $bisdatum datum in Format ISO
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function existsZeitaufzeichnung($uid, $vonDay, $bisDay)
|
||||
{
|
||||
try {
|
||||
$from = new DateTime($vonDay);
|
||||
$to = new DateTime($bisDay);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Invalid date format");
|
||||
}
|
||||
|
||||
//remove hour stamps
|
||||
$from->setTime(0, 0, 0);
|
||||
$to->setTime(0, 0, 0)->modify('+1 day');
|
||||
|
||||
$fromSql = $from->format('Y-m-d');
|
||||
$toSql = $to->format('Y-m-d');
|
||||
$params = [$uid, $fromSql, $toSql];
|
||||
|
||||
$qry = "
|
||||
SELECT *
|
||||
FROM campus.tbl_zeitaufzeichnung
|
||||
WHERE uid = ?
|
||||
AND start >= ?
|
||||
AND ende < ? ";
|
||||
|
||||
$result = $this->execQuery($qry, $params);
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'DMS-Link',
|
||||
'phrase' => 'lvplanSyncFAQ',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '7188',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '7188',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -1,433 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'previousWeek',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Vorherige Woche',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Previous week',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'previousYear',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Vorheriges Jahr',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Previous year',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'previousMonth',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Vorheriges Monat',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Previous month',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'previousDay',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Vorheriger Tag',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Previous day',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'nextDay',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nächster Tag',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Next day',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'nextWeek',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nächste Woche',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Next week',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'nextMonth',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nächster Monat',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Next month',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'nextYear',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nächstes Jahr',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Next year',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'modeDay',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Tages Ansicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Daily view',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'modeWeek',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Wochen Ansicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Week view',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'modeMonth',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Monats Ansicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Month view',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'noStgProvided',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'kein Studiengang hinterlegt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'no degree-program provided',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'headerLvPlanLvVerband',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lv-Plan Lehrverband',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Course-Plan Teaching Association',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'chooseStg',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studiengang auswählen...',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Select a degree-program...',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'loadLvPlan',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehrverband laden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Load Course-Plan',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'backToDropdown',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zurück zum Auswahl-Dropdown',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Back to Dropdown',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'error_SemMissing',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Semester wählen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Select a semester',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'LvPlan',
|
||||
'phrase' => 'error_VerbandMissing',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Verband wählen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Select a verband',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,141 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
$phrases = array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'title',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Account Aktivierung',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Account Activation',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'usage',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte wählen Sie ein Passwort für Ihren Account.<br>Das Passwort muss zumindest 8 Zeichen enthalten, davon mindestens 1 Großbuchstabe, 1 Kleinbuchstabe und eine Ziffer.<br>Das Passwort darf keine Leerzeichen und Umlaute enthalten.<br>Erlaubte Sonderzeichen sind: -$#[]{}!().,*:;_',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please choose a password for your account<br>The password must contain at least 8 characters, of which 1 must be upper case, 1 lower case and 1 a numeral.<br>The password may not include spaces or umlauts.<br>The following special characters are allowed: -$#[]{}!().,*:;_',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'username',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Username',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Username',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'code',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Code',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Code',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'activate',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Abschicken',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Activate',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'missingParameters',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte geben Sie Benutzername, Code und Passwort ein',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please enter username, code and password',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'account',
|
||||
'phrase' => 'wrongActivationCode',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der angegebene Aktivierungscode ist falsch',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The provided activation code is wrong',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,388 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'admission_edit',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Aufnahmetermin bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit appointment for participation placement test',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'admission_delete',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Aufnahmetermin Löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Delete Admission Date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'admission_new',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Termin für Teilnahme am Reihungstest anlegen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Create appointment for participation placement test',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'anmeldundRtAm',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anmeldung zum Reihungstest am',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Registration for the ranking test on',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'rtAngetreten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zum Reihungstest angetreten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Participated in the ranking test',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'rtAbsolviert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Reihungstestverfahren absolviert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Placement test procedure completed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'gesamtpunkte',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gesamtpunkte',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Total Points',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'gesamtpunkteBerechnen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gesamtpunkte berechnen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Calculate total points',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'allgemein',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Allgemein',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Generally',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'headerRTVerwaltung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zur Reihungstestverwaltung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Administration Placement Test',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'loadZukuenftigeRT',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nur zukünftige Reihungstests laden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Show future placement tests only',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'getRTErgebnis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Reihungstestergebnis holen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Get placement test result',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'stufe',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Stufe',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'level',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'anmeldedatum',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anmeldedatum',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Registration Date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'teilgenommen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'teilgenommen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'participated',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'admission',
|
||||
'phrase' => 'stg_kurz',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kürzel',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'shorthand',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,76 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'alert',
|
||||
'phrase' => 'attention',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Achtung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Attention',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'alert',
|
||||
'phrase' => 'confirm_delete',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Möchten Sie wirklich löschen?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Do you really want to delete?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'alert',
|
||||
'phrase' => 'systemerror',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Systemfehler',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'System Error',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,220 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'newestAmpeln',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Neueste Ampeln',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Newest Ampeln',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'allAmpeln',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Alle Ampeln',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'All Ampeln',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'overdue',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Überfällig: {count}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Overdue: {count}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'ampelnDeadline',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Stichtag: {value}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deadline: {value}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'noOpenAmpeln',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Keine offenen Ampeln.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'No open Ampeln.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'allMyAmpeln',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Alle meine Ampeln',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'All my Ampeln',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'mandatory',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Pflicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Mandatory',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'ampelBestaetigt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ampel bestätigt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Ampel confirmed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'ampeln',
|
||||
'phrase' => 'super',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Super!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Super!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,76 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'betriebsmittel',
|
||||
'phrase' => 'btn_printUebernahmebestaetigung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Übernahmebestätigung drucken',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Print acceptance confirmation',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'betriebsmittel',
|
||||
'phrase' => 'btn_editBetriebsmittel',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betriebsmittel bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit Resource',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'betriebsmittel',
|
||||
'phrase' => 'btn_deleteBetriebsmittel',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betriebsmittel löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Delete Resource',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,28 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'infocenter',
|
||||
'category' => 'bewerbung',
|
||||
'phrase' => 'erklaerungInvoices',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ablauf und Zahlungsbedingungen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Procedure and terms of payment',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,148 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bismeldestichtag',
|
||||
'phrase' => 'stichtagHinzufuegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Meldestichtag hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add report target date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bismeldestichtag',
|
||||
'phrase' => 'stichtageVerwalten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'BIS-Meldestichtage verwalten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Manage report target dates',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bismeldestichtag',
|
||||
'phrase' => 'stichtagLoeschen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Meldestichtag löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Delete report target date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bismeldestichtag',
|
||||
'phrase' => 'meldestichtag_erreicht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Meldestichtag erreicht - Bearbeiten nicht mehr möglich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'report target date reached - editing no longer possible',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bismeldestichtag',
|
||||
'phrase' => 'info_MeldestichtagStatusgrund',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Meldestichtag erreicht - ausschließlich Bearbeiten Statusgrund möglich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Reporting deadline reached - only editing status reason possible',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bismeldestichtag',
|
||||
'phrase' => 'info_MeldestichtagStatusgrundSemester',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Meldestichtag erreicht - Bearbeiten Ausbildungssemester und Statusgrund möglich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit education semester and status reason possible',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,507 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'newLink',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Neuer Link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'New Link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'saveLink',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Link speichern',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Save link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'editLink',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Link bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'bookmarkDeleted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Link gelöscht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Link deleted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'bookmarkAdded',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Link hinzugefügt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Link added',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'bookmarkUpdated',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Link geändert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Link updated',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'myBookmarks',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Meine Urls',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'My Urls',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'emptyBookmarks',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Du hast noch keine Bookmarks gesetzt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'You have not set any bookmarks yet',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'invalidUrl',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ungültiger Link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Invalid link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'invalidTitel',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ungültiger Titel',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Invalid title',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'editFilter',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filter bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'edit Filter',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'filterByTags',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nach Tags Filtern',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'filter by Tags',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'sortDownwards',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nach unten verschieben',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'sort downwards',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'sortToTop',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nach oben verschieben',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'sort to top',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'deleteBookmark',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lesezeichen löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'delete Bookmark',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'editBookmark',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lesezeichen bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'edit Bookmark',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'filterUpdated',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filteraktion erfolgreich durchgeführt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'filter updated successfully',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'errorInputNecessary',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Eingabe eines Zeichens erforderlich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'One character must be entered',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'noFilter',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kein Filter für Lesezeichen ausgewählt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'No bookmark filter entered',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'headerFilterBookmark',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lesezeichen filtern',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Filter Bookmarks',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'bookmark',
|
||||
'phrase' => 'adminMode',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Inhalt kann nicht im Administrator Modus angezeigt werden.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Content can not be displayed in administrator mode.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -1,76 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'calendar',
|
||||
'phrase' => 'kw',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'W',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'W',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'calendar',
|
||||
'phrase' => 'year_kw',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '{year} KW {week}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '{year} W {week}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'calendar',
|
||||
'phrase' => 'today',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Heute',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'today',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
$phrases = array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'captcha',
|
||||
'phrase' => 'label',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Tippen Sie die angezeigten<br>Zeichen in das untere Feld.',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Enter the characters in<br>the field below.',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'captcha',
|
||||
'phrase' => 'reload',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ich kann das Bild nicht lesen - neu laden',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Reload picture',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'core',
|
||||
'phrase' => 'unternehmen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unternehmen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'company',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,579 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'general',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Allgemein',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'General',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'addLine',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Weitere Zeile hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add another line',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'custom',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Benutzerdefiniert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Custom',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'dashboardGeneralSectionDescription',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Hier befinden sich die vordefinierten Widgets',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Here are the predefined widgets',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'dashboardCustomSectionDescription',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Hier befinden sich die Widgets Ihrer persönlichen Anpassungen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Here are the widgets of your personal cutomizations',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'dashboardSectionDescription',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Hier befinden sich die Widgets der {0} Funktion',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Here are the widgets of the {0} function',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'success_savePreset',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Voreinstellung erfolgreich aktualisiert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Preset successfully updated',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'alert_deleteWidget',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Sind Sie sicher, dass Sie dieses Widget löschen möchten?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Are you sure you want to delete this widget?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'edit',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dashboard bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit dashboard',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'createWidget',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Neues Widget hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Create new widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'noWidgetsAvailable',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Keine Widgets verfügbar',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'No Widgets available',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widgetFromGeneralSection',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dieses Widget ist für das Dashboard vordefiniert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This is a predefined widget of this dashboard',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widgetFromCustomSection',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dieses Widget wurde von Ihnen hinzugefügt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This widget has been added by you',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widgetFromFunktionSection',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dieses Widget wurde hinzugefügt weil Sie der "{0}" Funktion zugewiesen wurden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This widget has been added because you have been assigned to the "{0}" function',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_pin',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Pin Widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Pin widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_unpin',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unpin Widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unpin widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_toggle_visiblity',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Sichtbarkeit des Widgets umschalten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Toggle widget visibility',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_move',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Widget verschieben',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Move widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_resize',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Widgetgröße anpassen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Resize widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_delete',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Widget löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Delete widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_configure',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Widget konfigurieren',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Configure widget',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_config_title',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '"{name}" konfigurieren',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Configure "{name}"',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'widget_link',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Widget link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Widget link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dashboard',
|
||||
'phrase' => 'kurzbz',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Name',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Identifier',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
$phrases = array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'dms',
|
||||
'phrase' => 'informationsblattExterneLehrende',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => '<a href="../../../cms/dms.php?id={DMS_ID_INFOBLATT_EXTERNE_LEHRENDE}" target="_blank">Informationsblatt für externe Lehrende</a>',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '<a href="../../../cms/dms.php?id={DMS_ID_INFOBLATT_EXTERNE_LEHRENDE}" target="_blank">Information sheet for external lecturers</a>',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,340 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_unoconv',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unoconv nicht gefunden - Bitte installieren sie Unoconv',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unoconv not found - Please install Unoconv',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_unoconv_version',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unoconv Version konnte nicht ermittelt werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Could not get Unoconv Version',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_conv_timeout',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte versuchen Sie es in einer Minute erneut oder kontaktieren Sie einen Administrator',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Document conversion is currently not possible. Please try again in a minute or contact an administrator',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_sign_timeout',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Signaturserver ist derzeit nicht erreichbar',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Signature server is currently unavailable',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_sign_pdf',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Derzeit können nur PDFs signiert werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Currently only PDFs can be signed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_outputformat_missing',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ausgabeformat fehlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Outputformat is not defined',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_template_missing',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Keine Vorlage gefunden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'No template found',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_headers',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Header wurden bereits gesendet -> Abbruch',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Header already sent -> Abort',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_file_copy',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kopieren fehlgeschlagen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Copy failed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_file_load',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Datei konnte nicht geladen werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unable to load file',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_xml_load',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'XML konnte nicht geladen werden: {url} XML: {xml} PARAMETER: {params}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unable to load xml: {url} XML: {xml} PARAMS: {params}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_xsl_load',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'XSL konnte nicht geladen werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unable to load xsl',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_styles_load',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Styles XSL konnte nicht geladen werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unable to load styles xsl',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'document_export',
|
||||
'phrase' => 'error_manifest',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Manifest ungültig',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Manifest file invalid',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,603 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'title',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Titel',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'title',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'dokTyp',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dokumententyp',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Document type',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'nachreichungAm',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nachreichung am',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Submission on',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'dokDetails',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dokumentendetails',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Document Details',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'anmerkung_person',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anmerkung der Person',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Notes of the Person',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'dokumentAccept',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptieren',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Accept',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'dokumentUnaccept',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Entakzeptieren',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unaccept',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'accepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptiert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Accepted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'unaccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nicht Akzeptiert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Not Accepted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'err_deleteDokHere',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dieses Dokument darf hier nicht gelöscht werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This document may not be deleted here',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'err_updateNotAllowed',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Es können nur Eintraege geändert werden zu denen Dokumente hochgeladen wurden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Only entries to which documents have been uploaded can be changed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'successAccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptieren erfolgreich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Successfully set to accepted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'successUnaccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Entakzeptieren erfolgreich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Successfully set to unaccepted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'successCountUnaccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Entakzeptieren von {count} Dokument(en) erfolgreich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '{count} Document(s) successfully set to unaccepted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'successCountAccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptieren von {count} Dokument(en) erfolgreich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '{count} Document(s) successfully set to accepted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'errorUnaccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehler beim Entakzeptieren von Dokument {dokument_kurzbz}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Error unaccepting document {dokument_kurzbz}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'errorAccepted',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehler beim Akzeptieren von Dokument {dokument_kurzbz}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Error Accepting document {dokument_kurzbz}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'nachgereicht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nachgereicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Submitted later',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'vorhanden',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Vorhanden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Available',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'datumAkzeptiert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptiertdatum',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Accepted on',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'akzeptiertVon',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptiert von',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Accepted by',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'error_fileMissing',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte eine Datei anhängen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please attach a file',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'error_fileType',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nur Dateitypen JPEG, PNG oder PDF sind erlaubt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Only JPEG, PNG, or PDF files are allowed.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'error_duplicateDokument_kurzbz',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Akzeptieren / Entakzeptieren von mehr als einem Dokument pro Dokumenttyp nicht zulässig',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Accepting / unaccepting more than one document per document type is not permitted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'dokumente',
|
||||
'phrase' => 'dokument_erstellen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dokument erstellen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Create Document',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -1,365 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
$phrases = array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => '3gNachweis',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zertifikat hochladen",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "upload certificate",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'QrViaWebcam',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "QR-Code via Webcam scannen",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "scan qr code via webcam",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'oder',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "oder",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "or",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ZertifikatAlsPdfHochladen',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zertifikat als PDF hochladen (nur mit QR-Code, kein gescanntes Zertifikat)",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "upload certificate pdf (only with qrcode, no scanned certificate)",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ValidierungsergebnisAktuellesGueltigkeitsdatum',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Validierungsergebnis / gespeichertes Gültigkeitsdatum",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "validation result / stored valid date",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'DateiZiehenUndAblegen',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Datei hier hinziehen und ablegen",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "drag & drop file here",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'KeinZugriffWebcam',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zugriff auf die Webcam nicht möglich!",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "webcam access denied",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'gueltigBis',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "gültig bis",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "valid to",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ZertifikatUngueltig',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zertifikat ungültig",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "certificate invalid",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'ZertifikatKonnteNichtGeprueftWerden',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Das Zertifikat konnte nicht verifiziert werden. Stellen Sie bitte sicher, dass ein QR-Code enthalten ist.",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "certificate could not be verified. Please make sure it contains a qr-code.",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'Laedt',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Lädt",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "loading",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => '3G',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Covid19 Gültigkeitsdatum",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "covid19 valid date",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'FehlerBeimSpeichernDesGueltigkeitsdatums',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Fehler beim Speichern des Gültigkeitsdatum",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "error saving valid date",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'PersondatenInFH-CompleteStimmenNichtMitDemZertifikatUeberein',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Personendaten aus dem Zertifikat stimmen nicht dem angemeldeten Benutzer überein",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "person data from certificate does not match the logged in user",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'UploadSuccessful',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Das Gültigkeitsdatum wurde erfolgreich gespeichert.",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "validity date has been successfully stored.",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'UploadFailed',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Es wurde kein Gültigkeitsdatum gespeichert.",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "validity date has not been stored.",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'uploadbeschreibung',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Hier kann ein Digitales COVID-Zertifikat der EU mit QR-Code selbst erfasst werden.",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "an EU Digital COVID Certificate with QR code can be self registered here.",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'manualbeschreibung',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Falls das Zertifikat keinen QR-Code enthält oder die Selbst-Erfassung fehlschlägt, kann das Zertifkat beim Empfang manuell erfasst werden.",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "if the certificate does not contain a QR code or self registration fails, the certificate can be manually registered at the front desk.",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'supportbeschreibung',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Bei technischen Problemen kontaktieren Sie bitte: ",
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "in case of technical issues please contact: ",
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'eucovidqr',
|
||||
'phrase' => 'maxtagebeschreibung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "ACHTUNG seit Februar 2022 werden Zutrittskarten für maximal 60 Tage freigeschalten.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "ATTENTION since February 2022 a maximum of 60 days validity is granted for accesscards",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,244 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'add_pruefung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Prüfung hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add exam',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'edit_pruefung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Prüfung bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit exam',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'delete_pruefung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Prüfung löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Delete exam',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'newFromOld_pruefung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Prüfungskopie für neue Prüfung erstellen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Copy exam',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'hinweis_kommPrfg',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte bei Neuanlage einer kommissionellen Prüfung das Datum der Noteneintragung (i. d. R. heute) eintragen, um den korrekten Fristenablauf der Wiederholung zu ermöglichen.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'When creating a new examination before a committee, please enter the date of the grade entry (usually today) to ensure that the deadline for repeating the exam is met correctly.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'keineAuswahl',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'keine Auswahl',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'no selection',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'hinweis_changeAfterExamDate',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'ACHTUNG! Diese Prüfungsnote wurde nicht ins Zeugnis übernommen da die Zeugnisnote nach dem Prüfungsdatum verändert wurde',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'ATTENTION! This exam grade was not included in the certificate because the certificate grade was changed after the exam date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'bitteLvteilWaehlen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte Lv_Teil wählen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please select teaching unit',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'punkte',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Punkte',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Points',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'exam',
|
||||
'phrase' => 'filter_currentSem',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nur aktuelles Studiensemester anzeigen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Display only current Semester',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,155 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
$phrases = array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'filterEinstellungen',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filter Einstellungen',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'filter settings',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'filterApply',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filtern',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Apply',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'filterHinzufuegen',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filter hinzufügen',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'add filter',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'feldHinzufuegen',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Feld hinzufügen',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'add field',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'filterBeschreibung',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filter Beschreibung',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'filter description',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'filterDelete',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filter zurücksetzen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'delete filter',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'filter',
|
||||
'phrase' => 'filterActive',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Filter aktiv',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'filter active',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,531 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'loginTextCodeEingeben',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte geben Sie Ihren Code ein, um die Evaluierung zu starten:',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please enter your code to start the evaluation:',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'loginCodeEingeben',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Evaluierung-Code eingeben',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Enter your Evaluation-Code',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'loginTextLvevaluierung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '
|
||||
<div class="text-start mb-3">
|
||||
<p>Die folgende LV-Evaluierung umfasst</p>
|
||||
</div>
|
||||
<ul class="text-start small">
|
||||
<li>zwei (geschlossene) Pflichtfragen</li>
|
||||
<li>die Möglichkeit, optional zu einzelnen Bereichen konkreteres Feedback zu geben</li>
|
||||
<li>zwei optionale Freitextfragen</li>
|
||||
</ul>
|
||||
',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '
|
||||
<div class="text-start mb-3">
|
||||
<p>The following course evaluation includes</p>
|
||||
</div>
|
||||
<ul class="text-start small">
|
||||
<li>two (closed) mandatory questions</li>
|
||||
<li>the opportunity to optionally provide more specific feedback on individual areas</li>
|
||||
<li>two optional free-text questions</li>
|
||||
</ul>
|
||||
',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'loginTextAntwortoptionen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '
|
||||
<div class="text-start mb-3">
|
||||
<p>Die Antwortoptionen umfassen 5 Stufen:</p>
|
||||
</div>
|
||||
<ul class="text-start small">
|
||||
<li>Sehr gut</li>
|
||||
<li>Gut</li>
|
||||
<li>Mittel</li>
|
||||
<li>Schlecht</li>
|
||||
<li>Sehr schlecht</li>
|
||||
</ul>
|
||||
',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '
|
||||
<div class="text-start mb-3">
|
||||
<p>The answer options comprise 5 levels:</p>
|
||||
</div>
|
||||
<ul class="text-start small">
|
||||
<li>Excellent</li>
|
||||
<li>Good</li>
|
||||
<li>Satisfactory</li>
|
||||
<li>Poor</li>
|
||||
<li>Insufficient</li>
|
||||
</ul>
|
||||
',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungPeriodeBeendet',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Evaluierungszeitraum endete am {date}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Evaluation period was closed on {date}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungPeriodeStartetErst',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Evaluierungszeitraum startet erst am {date}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Evaluation period starts on {date}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungEingereicht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Evaluierung wurde am {date} eingereicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Evaluation was submitted on {date}',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungNichtMehrVerfuegbar',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Diese Evaluierung ist nicht mehr verfügbar.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This evaluation is no longer available.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungNichtVerfuegbar',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Diese Evaluierung ist nicht verfügbar.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This evaluation is not available yet.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'logoutTitle',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Danke!<br>Was passiert nun mit Ihrem Feedback?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Thank you!<br>What happens to your feedback now?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'logoutText',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '
|
||||
<p>Danke, dass Sie sich Zeit für das Feedback genommen haben! Ihre ehrliche und konstruktive Rückmeldung ist essenziell, damit Ihre Lehrenden und Ihre Studiengangsleitung die Lehrveranstaltung immer weiter verbessern und anpassen können!</p>
|
||||
<p>Und was passiert jetzt mit Ihrem Feedback? Die Studiengangsleitung wird die Ergebnisse & Maßnahmen zusammen mit Ihrer Jahrgangsvertretung besprechen. So tragen Sie aktiv dazu bei, die Lehrveranstaltung für zukünftige Semester noch spannender & lehrreicher zu machen!</p>
|
||||
<p>Gemeinsam für mehr Qualität in der Lehre!</p>
|
||||
',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => '
|
||||
<p>Thank you for taking the time to provide feedback! Your honest and constructive input is essential for your lecturers and degree program director to continuously improve and adapt the course.</p>
|
||||
<p>What happens with your feedback? The degree program director will discuss the results and potential measures together with your academic year representatives. You have thus actively contributed to making the course even more engaging and educational for future semesters!</p>
|
||||
<p>Working together for higher quality in teaching!</p>
|
||||
',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungZeitAbgelaufen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Evaluierungszeit ist abgelaufen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'The Evaluation time is over',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungAntwortenNichtUebermittelt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ihre Antworten wurden nicht übermittelt.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Your responses were not submitted.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungCodeExistiertNicht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dieser Evaluierungscode exisitiert nicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'This evaluation code does not exist',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungNichtAktiv',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Evaluierung ist nicht aktiv',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Evaluation is not active',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'zeitLaeuftAb',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zeit läuft bald ab – zum Speichern bitte ‚Abschicken‘ klicken',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Time is running out — please click ‘Submit’ to save your answers',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'spracheAuswaehlen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Sprache auswählen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Select language',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'fhtwLogo',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'FH Technikum Wien Logo',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'UAS Technikum Wien Logo',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'evaluierungscodeEingeben',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Evaluierungscode eingeben',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Enter Evaluation code',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'lvevaluierung',
|
||||
'category' => 'fragebogen',
|
||||
'phrase' => 'pflichtantwortFehlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Pflichtantwort fehlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Mandatory answer missing',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -1,220 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'frist',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Frist',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deadline',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'todo',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'To Do',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'To Do',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'fristStatusGespeichert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Status gespeichert.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Status saved.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'fristGespeichert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Frist gespeichert.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deadline saved.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'fristGeloescht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Frist gelöscht.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deadline deleted.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'fristenAktualisiert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fristen aktualisiert.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deadlines updated.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'termin_frist',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Termin/Frist',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Date/Deadline',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'ereignis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ereignis',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Event',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'fristenmanagement',
|
||||
'phrase' => 'mitarbeiterin',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'MitarbeiterIn',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Employee',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,76 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'funktion',
|
||||
'phrase' => 'filter_active',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nur aktive anzeigen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Display only active',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'funktion',
|
||||
'phrase' => 'addFunktion',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Funktion hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add function',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'funktion',
|
||||
'phrase' => 'editFunktion',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Funktion bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit function',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,196 +0,0 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'gehaltsband',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gehaltsband',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Salary Range',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'gueltig_von',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gültig von',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Valid from',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'gueltig_bis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gültig bis',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Valid to',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'betrag_von',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betrag von',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Amount from',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'betrag_bis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gültig bis',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Valid to',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'gehaltsband_gespeichert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gehaltsband gespeichert.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Salary range saved.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'gehaltsband_erstellt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gehaltsband hinzugefügt.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Salary range created.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'gehaltsband',
|
||||
'phrase' => 'gehaltsband_geloescht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gehaltsband gelöscht.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Salary range deleted.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user