mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
Compare commits
520 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| de01de7c14 | |||
| 66d8c303f3 | |||
| 6804800e9c | |||
| cb3dcf3e1d | |||
| 5972764731 | |||
| 2933a525c1 | |||
| 5694ba7325 | |||
| bbec7de8de | |||
| 1d14e58d8f | |||
| db2beeb51f | |||
| e4f43cc820 | |||
| 8adc1c8bcc | |||
| fe195f4080 | |||
| c69bb9ccaa | |||
| 4889299dd9 | |||
| 8f427344d0 | |||
| 0d6867799c | |||
| 5602c7091a | |||
| 6a16fb7515 | |||
| 33b05e9df5 | |||
| ac2a1147cc | |||
| 8d7fdb0254 | |||
| 0fd938e85c | |||
| b57fe4839b | |||
| 044e29f557 | |||
| f5cdb0a2fb | |||
| d405296a14 | |||
| 787e5d0ee4 | |||
| 6264006728 | |||
| 0007460428 | |||
| 8cc0462712 | |||
| 4162305ac6 | |||
| 8abb028f55 | |||
| 48798a9cee | |||
| 6508301526 | |||
| a8f472ca6c | |||
| 138c80c97a | |||
| 97a88d1d0d | |||
| a23d079001 | |||
| f13f6ff0cc | |||
| a595daa9b4 | |||
| 3094772150 | |||
| f0afcdd1c5 | |||
| 70368525e0 | |||
| 715c9f77b8 | |||
| 3401afed94 | |||
| 464cfb9efc | |||
| e3aa36cae0 | |||
| 0a232828c8 | |||
| 90b8788c93 | |||
| c125130dcb | |||
| eb9c882fe9 | |||
| 0687ef72ce | |||
| 2170d3e14a | |||
| 9180b9bd63 | |||
| 2b06de8ecb | |||
| 263b04e67f | |||
| 168fb00023 | |||
| 7c594bc4f9 | |||
| 3f99a2ce81 | |||
| f5d81e4a93 | |||
| b0f3fa0c46 | |||
| 6d89e95afa | |||
| e574998897 | |||
| d0073fdc6c | |||
| 2df19fa16a | |||
| d0922993f0 | |||
| 35f3239fc0 | |||
| 07bb0ddffd | |||
| df8c58f5df | |||
| e088b529f0 | |||
| 61349c7ca3 | |||
| c75e1f9416 | |||
| 66e1e6ad8a | |||
| d0d590ff89 | |||
| 0410c95447 | |||
| 60e36bb4b9 | |||
| 2f90112e4d | |||
| 774eb90bcc | |||
| 1def930147 | |||
| 30b8a406a5 | |||
| 093842274e | |||
| 9ec876fc27 | |||
| cac3df195e | |||
| ae71517ceb | |||
| 9f462fe3d6 | |||
| 004bcc43c3 | |||
| 6d79288f33 | |||
| fd2f4187fa | |||
| 2eb2c36d5b | |||
| 23b1e98a7a | |||
| 1d5b915717 | |||
| eb281f3bc3 | |||
| aeebc2a81a | |||
| b2bebb7fa3 | |||
| e32cce57fe | |||
| 22eed92c86 | |||
| fa91e204f0 | |||
| 23506430b1 | |||
| fa58635a22 | |||
| 97e7e5b641 | |||
| 178c854941 | |||
| 7f630f24d5 | |||
| 3483146c1a | |||
| ca712781dc | |||
| 557e43e19c | |||
| c0c57ba378 | |||
| 790568e1e0 | |||
| a704ce215b | |||
| 0cc628a8e3 | |||
| cf506a7b1e | |||
| b9670f3f09 | |||
| dfc3096587 | |||
| e59bd51333 | |||
| 239eaa90e9 | |||
| 4e5bf94a15 | |||
| ec4a04d63b | |||
| 95f09e9114 | |||
| a3dd5a188b | |||
| c0192e9e00 | |||
| 449537ef77 | |||
| d16120f650 | |||
| 12d8c8447b | |||
| 905cd46942 | |||
| 625ffe12ce | |||
| 0a4906c5ac | |||
| cb7a0f7669 | |||
| 68d97a5e97 | |||
| d27071528f | |||
| 17772c3738 | |||
| 89814d1db2 | |||
| 772f35c6ba | |||
| 4b22f939b5 | |||
| 7b46a15752 | |||
| bf3d6275d4 | |||
| 9b823dbaa1 | |||
| dd2fd6421b | |||
| 3b99a14b47 | |||
| 1d3d067b44 | |||
| 398e3aa139 | |||
| d3ceed32c6 | |||
| 780890fbdd | |||
| 72aed76857 | |||
| 229882e8d8 | |||
| 1e184d36fc | |||
| 553a33aa42 | |||
| 90e933de00 | |||
| 05e9d948ea | |||
| a5d343268f | |||
| 14372a6fce | |||
| bbb4f8a01c | |||
| 80306dadf7 | |||
| 9e061de9bd | |||
| adba14f6e7 | |||
| d0adf2dfc3 | |||
| 57e901be27 | |||
| d38641e312 | |||
| 40a0f6a7e9 | |||
| b6e1bb06f3 | |||
| bf5ab6b7dd | |||
| b7e48633ab | |||
| 86dc002fa6 | |||
| 453fc209b8 | |||
| 7f13c128f1 | |||
| 58a921b500 | |||
| af8814468f | |||
| c8a6e2f7cd | |||
| 2227c3ecf1 | |||
| c7526bd0d9 | |||
| 791f69b509 | |||
| f51d0f72c6 | |||
| 5592b69dc0 | |||
| fc1303affd | |||
| c62c3c23f6 | |||
| 863aaf62ec | |||
| 293352ac3c | |||
| b22375bd21 | |||
| f9550c99bb | |||
| df369c7149 | |||
| b16194701c | |||
| 736e91224e | |||
| 9bc564dbf9 | |||
| 6d0ab0d4aa | |||
| 9d6bcc7779 | |||
| 64f23ea7eb | |||
| 86401dae8b | |||
| 02a8797d4b | |||
| 2655cc0e34 | |||
| 9b60f57d7a | |||
| 1fe742d9c7 | |||
| b18ce08578 | |||
| 7ae34e0640 | |||
| e9b5438a24 | |||
| 51be318edc | |||
| ca79b0c4d8 | |||
| dfe05cbfa8 | |||
| 9109ead81c | |||
| 746f8bc736 | |||
| 9c03b89ab5 | |||
| 5798e960a2 | |||
| 98730ce612 | |||
| 5aded99999 | |||
| f780553773 | |||
| 804716edb2 | |||
| 332a47475e | |||
| 132edce701 | |||
| 6ce0cf6209 | |||
| 868599a7fe | |||
| 53bce69c6f | |||
| 20c68d675c | |||
| dfc8fdf44f | |||
| 4a26d7a89a | |||
| 16f57a1bce | |||
| 1cf3c18841 | |||
| 1dd9ff0daf | |||
| 011e93720e | |||
| 331381c94d | |||
| 478b23825c | |||
| ff876afbb3 | |||
| dd13c73415 | |||
| e89ab9b92f | |||
| 4e59173d6c | |||
| df28d7331b | |||
| 2d0a2f3024 | |||
| 781e145721 | |||
| e984425e36 | |||
| 2eb58e3346 | |||
| ab4039dbbd | |||
| 2c1702a20b | |||
| 72a5f35b0e | |||
| 076ae15abd | |||
| fbc5f95340 | |||
| ff3a25a5ec | |||
| 2dd5a95232 | |||
| 2a21bbf062 | |||
| d9a80e5ef7 | |||
| 2cadee1599 | |||
| 6c26fde210 | |||
| bc908b7fe9 | |||
| 26d468aa6f | |||
| 0f7188a347 | |||
| 3e832f9526 | |||
| 392cfbdc4e | |||
| 0751aa5a0f | |||
| e57846566e | |||
| 6c818e5c30 | |||
| 20f043abc6 | |||
| 416451eb0b | |||
| 3ab7a61a47 | |||
| 5571353464 | |||
| 95d85c7f5b | |||
| d7e509979a | |||
| 91a5b2d4fc | |||
| 5171a7b7b3 | |||
| b41c8acddd | |||
| 06bc1ebcd4 | |||
| 999827b3ec | |||
| 38ea481177 | |||
| dbf945dfe5 | |||
| 21065a3c95 | |||
| 79b5defb63 | |||
| 956b201757 | |||
| b90dabeb2c | |||
| 2f1edfeeab | |||
| fac320bfce | |||
| 6c2820f900 | |||
| 9a113e2993 | |||
| 89e0326435 | |||
| 1a37273a9e | |||
| d14b9e2ab5 | |||
| d926e4165b | |||
| 8c88ae401b | |||
| e5015f348b | |||
| 6792002c19 | |||
| 9890f6aade | |||
| 536e66eed9 | |||
| 6e103480cc | |||
| 6a53c9fae4 | |||
| 28d65ac114 | |||
| 239577e9cf | |||
| a8fb45adc6 | |||
| 9316016d24 | |||
| 8d815d40b6 | |||
| 33b5c370b1 | |||
| cdf63840b0 | |||
| cf14501311 | |||
| 187b4a6e4b | |||
| 4ab9056700 | |||
| 9a281dfa71 | |||
| 0b3f7d1fe3 | |||
| a9d82de25c | |||
| 414d8bd383 | |||
| eb8b4986d7 | |||
| 6cc09969dd | |||
| 1a813e52ce | |||
| afa765c4ba | |||
| 16b238124a | |||
| 4def45907b | |||
| 202e6e88d2 | |||
| 3b2473039f | |||
| 59d1ca3409 | |||
| 1d26303333 | |||
| 8f73489073 | |||
| ff08ca140c | |||
| 61a9feb8fd | |||
| 21fdf31518 | |||
| 3af9397689 | |||
| fef756f508 | |||
| 131edf1293 | |||
| 6787b9b553 | |||
| 1c2491385f | |||
| 97baaf6797 | |||
| 4e88765a83 | |||
| aac26f6720 | |||
| 3b3e75003f | |||
| ab699aafdc | |||
| 98bdb8c526 | |||
| 94f742187e | |||
| 70ebe34f1f | |||
| 992cb6b310 | |||
| 917a9ee707 | |||
| d577ac6d54 | |||
| 5b5f6ac0b9 | |||
| 2aecc6e0f2 | |||
| 13e8a1a9f6 | |||
| 4b064f566a | |||
| 2a86a70386 | |||
| 8ab83eaf41 | |||
| 262b170244 | |||
| e21f35b880 | |||
| 24c8a1c501 | |||
| cfe6e3c805 | |||
| d3b62daea0 | |||
| 35355b28c0 | |||
| 88c82a41ba | |||
| 910e960e4f | |||
| 354e1ccdf4 | |||
| d1911f0f96 | |||
| cdc279b5da | |||
| d003bfa7f1 | |||
| 343a82b89c | |||
| 09a5515121 | |||
| cc23fb0f39 | |||
| 7edddd0566 | |||
| ebafc4576f | |||
| 328fe4256e | |||
| c240eb4a4e | |||
| 38d9d91945 | |||
| 4669598dd9 | |||
| 7daaf79fcc | |||
| d68fa8ce95 | |||
| d61ee51d79 | |||
| a6f81006be | |||
| 5fa374259e | |||
| 9fd033b30e | |||
| 21d80905a2 | |||
| e98ed3c74f | |||
| ebe76821e4 | |||
| 3858e38a02 | |||
| 510c35e077 | |||
| a8f680810f | |||
| f1c3c8296f | |||
| 6c90ccfbaa | |||
| 653a320e6c | |||
| 6868e68145 | |||
| 57e7ad6903 | |||
| 290564fd2f | |||
| b9207b5efb | |||
| c58715d95b | |||
| 5c6a8b9966 | |||
| 44e43d9479 | |||
| dd713a26db | |||
| fad293fbbf | |||
| 5a1b94f45b | |||
| 344c68bf08 | |||
| f06e59b362 | |||
| 8ca5849b14 | |||
| 01e6a1061c | |||
| 7eb888d2e3 | |||
| 26f67b6798 | |||
| e6eed4be4e | |||
| 4d9ff395e9 | |||
| 114a50ad4e | |||
| 218f434e01 | |||
| 8a53c438e3 | |||
| 3fe15a302c | |||
| dec83bbd21 | |||
| 2354746d4f | |||
| d421b1ccb8 | |||
| 00e019d6fe | |||
| 5b0c115b10 | |||
| d37fac0ff7 | |||
| 91d656ff60 | |||
| 079a8e3ec1 | |||
| d0513571f9 | |||
| 458dc1aaec | |||
| 1f1d0a94e6 | |||
| 944bc44a0e | |||
| 8487694b37 | |||
| 6ddb064c9e | |||
| 9b8b1b2532 | |||
| aba4bc2909 | |||
| 9fd73ca34d | |||
| f6d2b55f75 | |||
| 36beb927f1 | |||
| ee41b2b68d | |||
| c0b685c77b | |||
| a4b1104abf | |||
| 05b3040dd7 | |||
| cd2941c904 | |||
| f1a7759a9d | |||
| 9ea694bf9f | |||
| 3578e01838 | |||
| 2681a85fa5 | |||
| 9a0716af44 | |||
| dc642cfbe7 | |||
| b98e831300 | |||
| 0d73824727 | |||
| 1a0a5c652b | |||
| 990b8d281c | |||
| b2358c57d7 | |||
| 6b7e061c87 | |||
| 912896d4da | |||
| f4f645b103 | |||
| 37395b70f6 | |||
| a65cb3b03c | |||
| 779641e8e7 | |||
| a5188ce24a | |||
| d365f15744 | |||
| 36823dac7d | |||
| a1142136b2 | |||
| a0c41c95cd | |||
| c56d323cd3 | |||
| ac4cdb44de | |||
| 39a96885d2 | |||
| 96dbec3218 | |||
| 4b29e7bf8d | |||
| ed69bd74ed | |||
| f0641ddd6d | |||
| 6c2a2e4665 | |||
| 5e929df966 | |||
| 455e0533fe | |||
| a8c4fc7607 | |||
| 7868c33c3d | |||
| 3e303a6617 | |||
| a26bdfe385 | |||
| e774787d67 | |||
| c44bef3b19 | |||
| 4c9476866d | |||
| bd50a9a141 | |||
| 481b221f89 | |||
| df63b8c1b7 | |||
| 4177c83c8e | |||
| bc2fb32e3e | |||
| 16ebbc324e | |||
| abcc31b4e9 | |||
| 50a14ccae8 | |||
| 257b64a9a2 | |||
| 0541596a91 | |||
| b8aec21968 | |||
| c438a2d6d8 | |||
| 707d00b280 | |||
| c2d6d01045 | |||
| 087930416f | |||
| 18d2b72b30 | |||
| 1cbd25b052 | |||
| 48cd737bd9 | |||
| 9c79d728e8 | |||
| 9c8a1f564e | |||
| 819652f70b | |||
| b72d20ff86 | |||
| db09f357d1 | |||
| 63810ccc81 | |||
| 33047797fd | |||
| e32ce9a7ec | |||
| 97126553f0 | |||
| e98e708283 | |||
| 513e9325e1 | |||
| 9c60ab7be2 | |||
| b23eca2a63 | |||
| 0f82e73935 | |||
| 0c83bdfc68 | |||
| 4014083238 | |||
| da03e11071 | |||
| f69016883c | |||
| c10baca137 | |||
| 60e403a28b | |||
| 92a08cebad | |||
| 1dba4be23f | |||
| 738c819272 | |||
| ed39127f31 | |||
| e5f65ff442 | |||
| 4944a13bfc | |||
| 5465f26c80 | |||
| e60335b635 | |||
| 5e799aa6e1 | |||
| c3fcd12bf9 | |||
| 16f6176d08 | |||
| 158bf52f3b | |||
| d75fd99a50 | |||
| 7eceda4b3d | |||
| 16d88d9f63 | |||
| 0ccd4d1b88 | |||
| c2addaf1a6 | |||
| 9af36fc50c | |||
| 4ea2772a8d | |||
| 15f9762d01 | |||
| 07e416c2f4 | |||
| d977cb8019 | |||
| ab943729a6 | |||
| d7b700f781 | |||
| 8bbc68ca75 | |||
| e1c0d046cb | |||
| 023e0fc934 | |||
| 063a3fa524 | |||
| 22eae288cb | |||
| 765edee509 | |||
| 75647a5e24 | |||
| 194979be6d | |||
| 43ff675b5e |
@@ -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'] = 'addons/fhtw/content/projektbeurteilung/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?';
|
||||
$config['beurteilung_link_fallback'] = 'cis/private/lehre/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?';
|
||||
|
||||
$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
|
||||
$config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ZWEITBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter';
|
||||
@@ -38,8 +38,19 @@ $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;
|
||||
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ $config['navigation_header'] = array(
|
||||
'description' => 'Extensions Manager',
|
||||
'expand' => true,
|
||||
'sort' => 10,
|
||||
'requiredPermissions' => 'admin:r'
|
||||
'requiredPermissions' => 'system/extensions:r'
|
||||
),
|
||||
'logsviewer' => array(
|
||||
'link' => site_url('system/LogsViewer'),
|
||||
@@ -199,7 +199,14 @@ $config['navigation_header'] = array(
|
||||
'link' => site_url('system/jq/JobsQueueViewer'),
|
||||
'description' => 'Jobs Queue Viewer',
|
||||
'expand' => true,
|
||||
'sort' => 20,
|
||||
'sort' => 30,
|
||||
'requiredPermissions' => 'system/developer:r'
|
||||
),
|
||||
'phrasesviewer' => array(
|
||||
'link' => site_url('system/phrases/PhrasesViewer'),
|
||||
'description' => 'Phrases viewer',
|
||||
'expand' => true,
|
||||
'sort' => 40,
|
||||
'requiredPermissions' => 'system/developer:r'
|
||||
),
|
||||
'anrechnungen' => array(
|
||||
|
||||
@@ -64,6 +64,9 @@ $route['api/v1/system/[S|s]prache/(:any)'] = 'api/v1/system/sprache2/$1';
|
||||
$route['Cis/LvPlan/.*'] = 'Cis/LvPlan/index/$1';
|
||||
$route['Cis/MyLvPlan/.*'] = 'Cis/MyLvPlan/index/$1';
|
||||
$route['Cis/MyLv/.*'] = 'Cis/MyLv/index/$1';
|
||||
$route['Cis/OtherLvPlan/.*'] = 'Cis/OtherLvPlan/index/$1';
|
||||
//Route for LV Plan Stg/Semester/Verband/Gruppe
|
||||
$route['Cis/StgOrgLvPlan/.*'] = 'Cis/StgOrgLvPlan/index/$1';
|
||||
|
||||
$route['Abgabetool/Assistenz'] = 'Cis/Abgabetool/Assistenz';
|
||||
$route['Abgabetool/Assistenz/(:any)'] = 'Cis/Abgabetool/Assistenz/$1';
|
||||
|
||||
@@ -22,8 +22,9 @@ unset($config['student']['searchfields']['email']);
|
||||
unset($config['student']['searchfields']['tel']);
|
||||
$config['student']['resultfields'] = [
|
||||
"s.student_uid AS uid",
|
||||
"s.matrikelnr",
|
||||
"s.matrikelnr AS personenkennzeichen",
|
||||
"p.person_id",
|
||||
"p.matr_nr AS matrikelnummer",
|
||||
"(p.vorname || ' ' || p.nachname) AS name",
|
||||
"ARRAY[s.student_uid || '@' || '" . DOMAIN . "'] AS email",
|
||||
"CASE
|
||||
|
||||
@@ -168,3 +168,32 @@ $config['stgkz_blacklist_wiederholung'] = [];
|
||||
* @var array An array of noten ids
|
||||
*/
|
||||
$config['note_blacklist_wiederholung'] = [];
|
||||
|
||||
/**
|
||||
* Enable/disable the Abmeldung StG process
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
$config['abmeldung_stg_enabled'] = true;
|
||||
|
||||
/**
|
||||
* Enable/disable the Abmeldung process
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
$config['abmeldung_enabled'] = true;
|
||||
|
||||
/**
|
||||
* Enable/disable the Unterbrecher process
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
$config['unterbrechung_enabled'] = true;
|
||||
|
||||
/**
|
||||
* Enable/disable the Wiederholer process
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
$config['wiederholung_enabled'] = true;
|
||||
|
||||
|
||||
@@ -31,12 +31,8 @@ class Abgabetool extends Auth_Controller
|
||||
{
|
||||
// TODO: routing from index based on berechtigung?
|
||||
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
if(defined('CIS4') && CIS4) {
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Abgabetool']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'Abgabetool']);
|
||||
} else {
|
||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'Abgabetool']);
|
||||
}
|
||||
@@ -44,12 +40,8 @@ class Abgabetool extends Auth_Controller
|
||||
|
||||
public function Student($student_uid_prop = '')
|
||||
{
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
if(defined('CIS4') && CIS4) {
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolStudent']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolStudent']);
|
||||
} else {
|
||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolStudent', 'student_uid_prop' => $student_uid_prop]);
|
||||
}
|
||||
@@ -57,12 +49,8 @@ class Abgabetool extends Auth_Controller
|
||||
|
||||
public function Mitarbeiter()
|
||||
{
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
if(defined('CIS4') && CIS4) {
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolMitarbeiter']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolMitarbeiter']);
|
||||
} else {
|
||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolMitarbeiter']);
|
||||
}
|
||||
@@ -70,13 +58,8 @@ class Abgabetool extends Auth_Controller
|
||||
|
||||
public function Assistenz($stg_kz_prop = '')
|
||||
{
|
||||
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
if(defined('CIS4') && CIS4) {
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolAssistenz']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'AbgabetoolAssistenz']);
|
||||
} else {
|
||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolAssistenz', 'stg_kz_prop' => $stg_kz_prop]);
|
||||
}
|
||||
@@ -84,12 +67,8 @@ class Abgabetool extends Auth_Controller
|
||||
|
||||
public function Deadlines()
|
||||
{
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
if(defined('CIS4') && CIS4) {
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'DeadlinesOverview']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'DeadlinesOverview']);
|
||||
} else {
|
||||
$this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'DeadlinesOverview']);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ class Auth extends FHC_Controller
|
||||
|
||||
if ($this->form_validation->run())
|
||||
{
|
||||
redirect($this->authlib->getLandingPage('/CisVue/Dashboard'));
|
||||
redirect($this->authlib->getLandingPage('/Cis4'));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -28,12 +28,6 @@ class LvPlan extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
'timezone' => $this->config->item('timezone')
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'LvPlan']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'LvPlan']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,11 +26,6 @@ class MyLv extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$viewData = array(
|
||||
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'MyLv']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'MyLv']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,13 +27,7 @@ class MyLvPlan extends Auth_Controller
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
'timezone' => $this->config->item('timezone')
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'MyLvPlan']);
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'MyLvPlan']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class OtherLvPlan extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => ['basis/other_lv_plan:r']
|
||||
]);
|
||||
|
||||
// Load Config
|
||||
$this->load->config('calendar');
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'OtherLvPlan']);
|
||||
}
|
||||
}
|
||||
@@ -55,15 +55,7 @@ class Profil extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$this->load->library('ProfilLib');
|
||||
$profil_data = $this->profillib->getView(getAuthUID());
|
||||
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
|
||||
$viewData = array(
|
||||
'editable'=>true,
|
||||
'profil_data' => $profil_data,
|
||||
);
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'profilIndex']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'profilIndex']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -73,23 +65,13 @@ class Profil extends Auth_Controller
|
||||
*/
|
||||
public function View($uid)
|
||||
{
|
||||
$this->load->library('ProfilLib');
|
||||
$profil_data = $this->profillib->getView($uid);
|
||||
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
|
||||
$viewData = array (
|
||||
'uid' => $uid,
|
||||
'profil_data'=>$profil_data,
|
||||
);
|
||||
if($uid == getAuthUID()){
|
||||
$viewData['editable'] = true;
|
||||
}
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'profilViewUid']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'profilViewUid']);
|
||||
}
|
||||
|
||||
/**
|
||||
* checks whether a specific userID is a mitarbeiter or not (foreword declaration of the function isMitarbeiter in Mitarbeiter_model.php)
|
||||
* checks whether a specific userID is a student or not (foreword declaration of the function isStudent in Student_model.php)
|
||||
* @access public
|
||||
* @param $uid the userID used to check if it is a mitarbeiter
|
||||
* @param $uid the userID used to check if it is a student
|
||||
* @return boolean
|
||||
*/
|
||||
public function isStudent($uid)
|
||||
@@ -119,7 +101,7 @@ class Profil extends Auth_Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the adressen that are marked as zustell from the currenlty logged in user
|
||||
* gets the adressen that are marked as zustell from the currently logged in user
|
||||
* @access public
|
||||
* @return array a list of adresse_id's
|
||||
*/
|
||||
@@ -262,23 +244,23 @@ class Profil extends Auth_Controller
|
||||
$this->GemeindeModel->addDistinct();
|
||||
$this->GemeindeModel->addSelect(["name"]);
|
||||
if ($nation == "A") {
|
||||
if (isset($zip) && $zip > 999 && $zip < 32000) {
|
||||
if (isset($zip) && $zip > 999 && $zip < 32000) {
|
||||
|
||||
$gemeinde_res = $this->GemeindeModel->loadWhere(['plz' => $zip]);
|
||||
if (isError($gemeinde_res)) {
|
||||
show_error("error while trying to query bis.tbl_gemeinde");
|
||||
}
|
||||
$gemeinde_res = hasData($gemeinde_res) ? getData($gemeinde_res) : null;
|
||||
$gemeinde_res = array_map(function ($obj) {
|
||||
return $obj->name;
|
||||
}, $gemeinde_res);
|
||||
echo json_encode($gemeinde_res);
|
||||
|
||||
} else {
|
||||
echo json_encode(error("ortschaftskennziffer code was not valid"));
|
||||
$gemeinde_res = $this->GemeindeModel->loadWhere(['plz' => $zip]);
|
||||
if (isError($gemeinde_res)) {
|
||||
show_error("error while trying to query bis.tbl_gemeinde");
|
||||
}
|
||||
$gemeinde_res = hasData($gemeinde_res) ? getData($gemeinde_res) : null;
|
||||
$gemeinde_res = array_map(function ($obj) {
|
||||
return $obj->name;
|
||||
}, $gemeinde_res);
|
||||
echo json_encode($gemeinde_res);
|
||||
|
||||
} else {
|
||||
echo json_encode(error("ortschaftskennziffer code was not valid"));
|
||||
}
|
||||
} else {
|
||||
echo json_encode(error("Nation was not 'A' (Austria)"));
|
||||
echo json_encode(error("Nation was not 'A' (Austria)"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -750,6 +732,4 @@ class Profil extends Auth_Controller
|
||||
$zutrittskarte_ausgegebenam = str_replace("-", ".", $zutrittskarte_ausgegebenam);
|
||||
return $zutrittskarte_ausgegebenam;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -25,11 +25,6 @@ class Raumsuche extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$viewData = array(
|
||||
'uid'=>getAuthUID(),
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Raumsuche']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'Raumsuche']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class StgOrgLvPlan extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => ['basis/cis:r']
|
||||
]);
|
||||
|
||||
// Load Config
|
||||
$this->load->config('calendar');
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'StgOrgLvPlan']);
|
||||
}
|
||||
}
|
||||
@@ -29,10 +29,7 @@ class Studium extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$viewData = array(
|
||||
|
||||
);
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['viewData' => $viewData, 'route' => 'studium']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php',['route' => 'studium']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -13,9 +14,9 @@ class Cis4 extends Auth_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'basis/cis:r'
|
||||
)
|
||||
array(
|
||||
'index' => 'basis/cis:r'
|
||||
)
|
||||
);
|
||||
|
||||
// Load Config
|
||||
@@ -30,16 +31,6 @@ class Cis4 extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
||||
|
||||
$viewData = array(
|
||||
'uid' => getAuthUID(),
|
||||
'name' => $personData->vorname,
|
||||
'person_id' => $personData->person_id,
|
||||
'timezone' => $this->config->item('timezone')
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'FhcDashboard']);
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'FhcDashboard']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Dashboard extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'dashboard/benutzer:r'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$this->load->model('person/Person_model','PersonModel');
|
||||
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
||||
|
||||
$viewData = array(
|
||||
'uid' => getAuthUID(),
|
||||
'name' => $personData->vorname,
|
||||
'person_id' => $personData->person_id
|
||||
);
|
||||
|
||||
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData]);
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,8 @@
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \DateTime as DateTime;
|
||||
|
||||
class Bookmark extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
@@ -28,111 +30,162 @@ class Bookmark extends FHCAPI_Controller
|
||||
{
|
||||
parent::__construct([
|
||||
'getBookmarks' => self::PERM_LOGGED,
|
||||
'delete' => self::PERM_LOGGED,
|
||||
'insert' => self::PERM_LOGGED,
|
||||
'delete' => self::PERM_LOGGED,
|
||||
'insert' => self::PERM_LOGGED,
|
||||
'update' => self::PERM_LOGGED,
|
||||
]);
|
||||
'changeOrder' => self::PERM_LOGGED
|
||||
]);
|
||||
|
||||
$this->load->model('dashboard/Bookmark_model', 'BookmarkModel');
|
||||
|
||||
$this->uid = getAuthUID();
|
||||
$this->pid = getAuthPersonID();
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
|
||||
/**
|
||||
* gets the bookmarks associated to a user
|
||||
/**
|
||||
* gets the bookmarks associated to a user
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getBookmarks()
|
||||
{
|
||||
$this->BookmarkModel->addOrder("bookmark_id");
|
||||
$this->BookmarkModel->addOrder("sort");
|
||||
$bookmarks = $this->BookmarkModel->loadWhere(["uid"=>$this->uid]);
|
||||
|
||||
$bookmarks = $this->getDataOrTerminateWithError($bookmarks);
|
||||
$bookmarks = $this->getDataOrTerminateWithError($bookmarks);
|
||||
|
||||
$this->terminateWithSuccess($bookmarks);
|
||||
}
|
||||
|
||||
/**
|
||||
* deletes bookmark from associated user
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($bookmark_id)
|
||||
{
|
||||
$bookmark = $this->BookmarkModel->load($bookmark_id);
|
||||
|
||||
$bookmark = current($this->getDataOrTerminateWithError($bookmark));
|
||||
|
||||
// only delete bookmark if the user is the owner of the bookmark
|
||||
if($bookmark->uid == $this->uid || $this->permissionlib->isBerechtigt('admin')){
|
||||
|
||||
$delete_result = $this->BookmarkModel->delete($bookmark_id);
|
||||
|
||||
$delete_result = $this->getDataOrTerminateWithError($delete_result);
|
||||
|
||||
$this->terminateWithSuccess($delete_result);
|
||||
}else{
|
||||
$this->_outputAuthError(['delete' => ['admin:rw']]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* inserts new bookmark into the bookmark table
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function insert()
|
||||
{
|
||||
// form validation
|
||||
$this->load->library('form_validation');
|
||||
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
||||
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
||||
if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$url = $this->input->post('url',true);
|
||||
$title = $this->input->post('title',true);
|
||||
$tag = $this->input->post('tag', true);
|
||||
|
||||
$insert_into_result = $this->BookmarkModel->insert(['uid'=>$this->uid, 'url'=>$url, 'title'=>$title,'tag'=>$tag, 'insertvon'=>$this->uid, 'updateamum'=>NULL, 'updatevon'=>NULL]);
|
||||
|
||||
$insert_into_result = $this->getDataOrTerminateWithError($insert_into_result);
|
||||
|
||||
$this->terminateWithSuccess($insert_into_result);
|
||||
|
||||
}
|
||||
$this->terminateWithSuccess($bookmarks);
|
||||
}
|
||||
|
||||
/**
|
||||
* updates bookmark in the bookmark table
|
||||
* deletes bookmark from associated user
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($bookmark_id)
|
||||
public function delete($bookmark_id)
|
||||
{
|
||||
// form validation
|
||||
$this->load->library('form_validation');
|
||||
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
||||
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
||||
if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
$bookmark = $this->BookmarkModel->load($bookmark_id);
|
||||
|
||||
$url = $this->input->post('url',true);
|
||||
$title = $this->input->post('title',true);
|
||||
$bookmark = current($this->getDataOrTerminateWithError($bookmark));
|
||||
|
||||
// only delete bookmark if the user is the owner of the bookmark
|
||||
if ($bookmark->uid == $this->uid || $this->permissionlib->isBerechtigt('admin')) {
|
||||
$delete_result = $this->BookmarkModel->delete($bookmark_id);
|
||||
|
||||
$delete_result = $this->getDataOrTerminateWithError($delete_result);
|
||||
|
||||
$this->terminateWithSuccess($delete_result);
|
||||
} else {
|
||||
$this->_outputAuthError(['delete' => ['admin:rw']]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* inserts new bookmark into the bookmark table
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function insert()
|
||||
{
|
||||
// form validation
|
||||
$this->load->library('form_validation');
|
||||
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
||||
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$url = $this->input->post('url', true);
|
||||
$title = $this->input->post('title', true);
|
||||
$tag = $this->input->post('tag', true);
|
||||
if (is_array($tag)) {
|
||||
$tag = json_encode($tag); // convert PHP array to JSON string
|
||||
}
|
||||
$sort = $this->input->post('sort', true);
|
||||
|
||||
$insert_into_result = $this->BookmarkModel->insert([
|
||||
'uid' => $this->uid,
|
||||
'url' => $url,
|
||||
'title' => $title,
|
||||
'tag' => $tag,
|
||||
'insertvon' => $this->uid,
|
||||
'updateamum' => null,
|
||||
'updatevon' => null,
|
||||
'sort' => $sort
|
||||
]);
|
||||
|
||||
$insert_into_result = $this->getDataOrTerminateWithError($insert_into_result);
|
||||
|
||||
$this->terminateWithSuccess($insert_into_result);
|
||||
}
|
||||
|
||||
/**
|
||||
* updates bookmark in the bookmark table
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($bookmark_id)
|
||||
{
|
||||
// form validation
|
||||
$this->load->library('form_validation');
|
||||
$this->form_validation->set_rules('url', 'URL', 'required|valid_url|max_length[511]');
|
||||
$this->form_validation->set_rules('title', 'Title', 'required|max_length[255]');
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$url = $this->input->post('url', true);
|
||||
$title = $this->input->post('title', true);
|
||||
$tag = $this->input->post('tag', true);
|
||||
if (is_array($tag)) {
|
||||
$tag = json_encode($tag);
|
||||
}
|
||||
|
||||
$now = new DateTime();
|
||||
$now = $now->format('Y-m-d H:i:s');
|
||||
|
||||
$update_result = $this->BookmarkModel->update($bookmark_id,['url'=>$url, 'title'=>$title,'updateamum'=>$now]);
|
||||
$update_result = $this->BookmarkModel->update($bookmark_id, [
|
||||
'url' => $url,
|
||||
'title' => $title,
|
||||
'tag' => $tag,
|
||||
'updateamum' => $now
|
||||
]);
|
||||
|
||||
$update_result = $this->getDataOrTerminateWithError($update_result);
|
||||
$update_result = $this->getDataOrTerminateWithError($update_result);
|
||||
|
||||
$this->terminateWithSuccess($update_result);
|
||||
$this->terminateWithSuccess($update_result);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* changes sort of two bookmarks in the bookmark table
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function changeOrder($bookmark_id1, $bookmark_id2)
|
||||
{
|
||||
$update_result = [];
|
||||
|
||||
$result1 = $this->BookmarkModel->load($bookmark_id1);
|
||||
$data1 = $this->getDataOrTerminateWithError($result1);
|
||||
$sort1 = current($data1)->sort;
|
||||
|
||||
$result2 = $this->BookmarkModel->load(["bookmark_id"=>$bookmark_id2]);
|
||||
$data2 = $this->getDataOrTerminateWithError($result2);
|
||||
$sort2 = current($data2)->sort;
|
||||
|
||||
$update_result1 = $this->BookmarkModel->update($bookmark_id1, [
|
||||
'sort' => $sort2
|
||||
]);
|
||||
$update_result[] = $this->getDataOrTerminateWithError($update_result1);
|
||||
|
||||
$update_result2 = $this->BookmarkModel->update($bookmark_id2, [
|
||||
'sort' => $sort1
|
||||
]);
|
||||
$update_result[] = $this->getDataOrTerminateWithError($update_result2);
|
||||
|
||||
$this->terminateWithSuccess($update_result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class Cis4FhcApi extends FHCAPI_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'getViewData' => self::PERM_LOGGED,
|
||||
'dashboardViewData' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
}
|
||||
@@ -36,17 +36,22 @@ class Cis4FhcApi extends FHCAPI_Controller
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* fetches ViewData
|
||||
*/
|
||||
public function getViewData()
|
||||
* retrieves view data for dashboard view
|
||||
* @access public
|
||||
* @param $uid the userID for which profile is being viewed, null or missing value implies one's own profile
|
||||
*/
|
||||
public function dashboardViewData()
|
||||
{
|
||||
$this->load->model('person/Person_model','PersonModel');
|
||||
$personData = getData($this->PersonModel->getByUid(getAuthUID()))[0];
|
||||
|
||||
$this->load->config('calendar');
|
||||
|
||||
$viewData = array(
|
||||
'uid' => getAuthUID(),
|
||||
'name' => $personData->vorname,
|
||||
'person_id' => $personData->person_id
|
||||
'person_id' => $personData->person_id,
|
||||
'timezone' => $this->config->item('timezone'),
|
||||
);
|
||||
|
||||
$this->terminateWithSuccess($viewData);
|
||||
|
||||
@@ -16,12 +16,13 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
|
||||
class CisMenu extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
@@ -31,28 +32,95 @@ class CisMenu extends FHCAPI_Controller
|
||||
'getMenu' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
/**
|
||||
* fetches the menu for CIS from the database based on the userLanguage
|
||||
*/
|
||||
public function getMenu()
|
||||
public function getMenu()
|
||||
{
|
||||
$this->load->model('content/Content_model', 'ContentModel');
|
||||
$this->load->config('cis');
|
||||
$cis4_content_id =$this->config->item('cis_menu_root_content_id');
|
||||
$result = $this->ContentModel->getMenu($cis4_content_id, getAuthUID(),getUserLanguage());
|
||||
$cis4_content_id = $this->config->item('cis_menu_root_content_id');
|
||||
$result = $this->ContentModel->getMenu($cis4_content_id, getAuthUID(), getUserLanguage());
|
||||
$result = $this->getDataOrTerminateWithError($result);
|
||||
$menu = $result->childs ?? [];
|
||||
$this->terminateWithSuccess($menu);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$menu = $this->generateUrlsForMenuItems($menu);
|
||||
$this->terminateWithSuccess($menu);
|
||||
}
|
||||
|
||||
private function generateUrlsForMenuItems($menuItems)
|
||||
{
|
||||
return array_map(
|
||||
function ($menuItem) {
|
||||
return $this->generateUrlForMenuItem($menuItem);
|
||||
},
|
||||
$menuItems
|
||||
);
|
||||
}
|
||||
|
||||
private function generateUrlForMenuItem($menuItem)
|
||||
{
|
||||
$menuItem->url = $this->menuItemUrlHelper($menuItem);
|
||||
unset($menuItem->content);
|
||||
|
||||
if ($menuItem->childs && count($menuItem->childs)) {
|
||||
$menuItem->childs = $this->generateUrlsForMenuItems($menuItem->childs);
|
||||
}
|
||||
|
||||
return $menuItem;
|
||||
}
|
||||
|
||||
private function menuItemUrlHelper($menuItem)
|
||||
{
|
||||
if ($menuItem->template_kurzbz !== 'redirect') {
|
||||
return site_url("/CisVue/Cms/content/" . $menuItem->content_id);
|
||||
}
|
||||
|
||||
if (!$menuItem->content || !mb_strlen($menuItem->content)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadXML($menuItem->content);
|
||||
$urlElem = $doc->getElementsByTagName('url')->item(0);
|
||||
|
||||
if (!$urlElem) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$url = $urlElem->textContent;
|
||||
|
||||
if (strpos($url, '../cms/news.php') !== false) {
|
||||
$newsRegex = '/^\.\.\/cms\/news\.php/';
|
||||
$url = preg_replace($newsRegex, site_url("/CisVue/Cms/news"), $url);
|
||||
}
|
||||
|
||||
if (strpos($url, '../cms/content.php?') !== false) {
|
||||
$contentRegex = '/^\.\.\/cms\/content\.php\?content_id=([0-9]+)/';
|
||||
$matches = [];
|
||||
preg_match($contentRegex, $url, $matches);
|
||||
$url = site_url('/CisVue/Cms/content/' . $matches[1]);
|
||||
}
|
||||
|
||||
if (strpos($url, '../index.ci.php') !== false) {
|
||||
$indexRegex = '/^\.\.\/index\.ci\.php/';
|
||||
$url = preg_replace($indexRegex, site_url(), $url);
|
||||
}
|
||||
|
||||
if (strpos($url, '../') !== false) {
|
||||
$relativeRegex = '/^\.\.\//';
|
||||
$url = preg_replace($relativeRegex, base_url(), $url);
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ class Lehre extends FHCAPI_Controller
|
||||
parent::__construct([
|
||||
'lvStudentenMail' => self::PERM_LOGGED,
|
||||
'LV' => self::PERM_LOGGED,
|
||||
'Pruefungen' => self::PERM_LOGGED
|
||||
'Pruefungen' => self::PERM_LOGGED,
|
||||
'semesterAverageGrade' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
}
|
||||
@@ -100,5 +101,49 @@ class Lehre extends FHCAPI_Controller
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* calculates and returns the grade average and weighted average for a specific semester
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public function semesterAverageGrade($studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$semesterLvs = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage());
|
||||
|
||||
if (isError($semesterLvs))
|
||||
return $this->outputJsonError(getError($semesterLvs));
|
||||
|
||||
$semesterLvsData = getData($semesterLvs);
|
||||
|
||||
$doGradesExist = false;
|
||||
$sum = 0;
|
||||
$count = 0;
|
||||
$sumWeighted = 0;
|
||||
$sumEcts = 0;
|
||||
|
||||
foreach ($semesterLvsData as $lv) {
|
||||
if (!$lv->znote || $lv->znote < 1 || $lv->znote > 5)
|
||||
continue;
|
||||
|
||||
$doGradesExist = true;
|
||||
|
||||
$sum += $lv->znote;
|
||||
$count++;
|
||||
$sumWeighted += $lv->znote * floatval($lv->ects);
|
||||
$sumEcts += floatval($lv->ects);
|
||||
}
|
||||
|
||||
$averageGrade = null;
|
||||
$weightedAverageGrade = null;
|
||||
if ($doGradesExist) {
|
||||
$averageGrade = $sum/$count;
|
||||
$weightedAverageGrade = $sumWeighted/$sumEcts;
|
||||
}
|
||||
|
||||
$this->terminateWithSuccess(['average_grade' => $averageGrade, 'weighted_average_grade' => $weightedAverageGrade]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
use CI3_Events as Events;
|
||||
use \DateTime as DateTime;
|
||||
@@ -33,19 +34,25 @@ class LvPlan extends FHCAPI_Controller
|
||||
|
||||
parent::__construct([
|
||||
'getRoomplan' => self::PERM_LOGGED,
|
||||
'Stunden' => self::PERM_LOGGED,
|
||||
'getReservierungen' => self::PERM_LOGGED,
|
||||
'Stunden' => self::PERM_LOGGED,
|
||||
'getReservierungen' => self::PERM_LOGGED,
|
||||
'LvPlanEvents' => self::PERM_LOGGED,
|
||||
'eventsPersonal' => self::PERM_LOGGED,
|
||||
'eventsLv' => self::PERM_LOGGED,
|
||||
'getLehreinheitStudiensemester' => self::PERM_LOGGED,
|
||||
'studiensemesterDateInterval' => self::PERM_LOGGED,
|
||||
'getLvPlanForStudiensemester' => self::PERM_LOGGED,
|
||||
'getLv' => self::PERM_LOGGED
|
||||
'getLv' => self::PERM_LOGGED,
|
||||
'eventsStgOrg' => self::PERM_LOGGED,
|
||||
'fetchFerienEvents' => self::PERM_LOGGED,
|
||||
'getStudiengaenge' => self::PERM_LOGGED,
|
||||
'getLehrverband' => self::PERM_LOGGED,
|
||||
'permissionOtherLvPlan' => self::PERM_LOGGED,
|
||||
'compactibleEventTypes' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
$this->load->library('LogLib');
|
||||
$this->loglib->setConfigs(array(
|
||||
$this->load->library('LogLib');
|
||||
$this->loglib->setConfigs(array(
|
||||
'classIndex' => 5,
|
||||
'functionIndex' => 5,
|
||||
'lineIndex' => 4,
|
||||
@@ -53,17 +60,17 @@ class LvPlan extends FHCAPI_Controller
|
||||
'dbExecuteUser' => 'RESTful API'
|
||||
));
|
||||
|
||||
$this->load->library('form_validation');
|
||||
$this->load->library('form_validation');
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* fetches LvPlan and Moodle events together
|
||||
* @access public
|
||||
*
|
||||
*/
|
||||
* fetches LvPlan and Moodle events together
|
||||
* @access public
|
||||
*
|
||||
*/
|
||||
public function LvPlanEvents()
|
||||
{
|
||||
$hasLv = $this->input->post('lv_id');
|
||||
@@ -83,24 +90,30 @@ class LvPlan extends FHCAPI_Controller
|
||||
// form validation
|
||||
$this->form_validation->set_rules('start_date', "start_date", "required");
|
||||
$this->form_validation->set_rules('end_date', "end_date", "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);
|
||||
$uid = $this->input->post('uid', true);
|
||||
|
||||
// disallow accessing other user's events if missing permission
|
||||
if ($uid && $uid !== getAuthUID() && !$this->permissionlib->isBerechtigt('basis/other_lv_plan')) {
|
||||
$this->terminateWithError("Missing permission to view other users' timetables!");
|
||||
}
|
||||
|
||||
// fetching lvplan events
|
||||
$result = $this->stundenplanlib->getEventsUser($start_date, $end_date);
|
||||
$result = $this->stundenplanlib->getEventsUser($start_date, $end_date, $uid);
|
||||
$lvplanEvents = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
// fetching moodle events
|
||||
$moodleEvents = $this->fetchMoodleEvents($start_date, $end_date);
|
||||
$moodleEvents = $this->fetchMoodleEvents($start_date, $end_date, $uid);
|
||||
|
||||
// fetching ferien events
|
||||
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
|
||||
|
||||
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date, $uid);
|
||||
|
||||
|
||||
$this->terminateWithSuccess(array_merge(
|
||||
$lvplanEvents,
|
||||
@@ -109,6 +122,45 @@ class LvPlan extends FHCAPI_Controller
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* fetches LvPlan for studiengang / semester / verband / gruppe
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function eventsStgOrg()
|
||||
{
|
||||
$this->load->library('StundenplanLib');
|
||||
|
||||
// form validation
|
||||
$this->form_validation->set_rules('start_date', "start_date", "required");
|
||||
$this->form_validation->set_rules('end_date', "end_date", "required");
|
||||
//$this->form_validation->set_rules('stg_kz', "stg_kz", "required"); //no validation show empty calendar
|
||||
|
||||
if (!$this->form_validation->run()) {
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
$stgOrgEvents = [];
|
||||
$ferienEvents = [];
|
||||
} else {
|
||||
$start_date = $this->input->post('start_date', true);
|
||||
$end_date = $this->input->post('end_date', true);
|
||||
$stg_kz = $this->input->post('stg_kz', true);
|
||||
$sem = $this->input->post('sem', true);
|
||||
$verband = $this->input->post('verband', true);
|
||||
$gruppe = $this->input->post('gruppe', true);
|
||||
|
||||
$result = $this->stundenplanlib->getEventsStgOrg($start_date, $end_date, $stg_kz, $sem, $verband, $gruppe);
|
||||
$stgOrgEvents = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$result = $this->stundenplanlib->fetchFerienTageEvents($start_date, $end_date, $stg_kz);
|
||||
$ferienEvents = $this->getDataOrTerminateWithError($result);
|
||||
}
|
||||
|
||||
$this->terminateWithSuccess(array_merge(
|
||||
$stgOrgEvents,
|
||||
$ferienEvents
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* fetches LvPlan and Ferien events together for the lv
|
||||
*
|
||||
@@ -122,7 +174,7 @@ class LvPlan extends FHCAPI_Controller
|
||||
$this->form_validation->set_rules('start_date', "start_date", "required");
|
||||
$this->form_validation->set_rules('end_date', "end_date", "required");
|
||||
$this->form_validation->set_rules('lv_id', "lv_id", "required|integer");
|
||||
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
@@ -137,7 +189,6 @@ class LvPlan extends FHCAPI_Controller
|
||||
|
||||
// fetching ferien events
|
||||
$ferienEvents = $this->fetchFerienEvents($start_date, $end_date);
|
||||
|
||||
|
||||
$this->terminateWithSuccess(array_merge(
|
||||
$lvplanEvents,
|
||||
@@ -146,40 +197,42 @@ class LvPlan extends FHCAPI_Controller
|
||||
}
|
||||
|
||||
//TODO: delete this function if we don't use the old calendar export endpoints anymore
|
||||
public function studiensemesterDateInterval($date){
|
||||
$this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
|
||||
$studiensemester =$this->StudiensemesterModel->getByDate(date_format(date_create($date),'Y-m-d'));
|
||||
$studiensemester =current($this->getDataOrTerminateWithError($studiensemester));
|
||||
public function studiensemesterDateInterval($date)
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$studiensemester = $this->StudiensemesterModel->getByDate(date_format(date_create($date), 'Y-m-d'));
|
||||
$studiensemester = current($this->getDataOrTerminateWithError($studiensemester));
|
||||
$this->terminateWithSuccess($studiensemester);
|
||||
}
|
||||
|
||||
public function getLvPlanForStudiensemester($studiensemester,$lvid){
|
||||
public function getLvPlanForStudiensemester($studiensemester, $lvid)
|
||||
{
|
||||
$this->load->library('StundenplanLib');
|
||||
$this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
|
||||
|
||||
$studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz"=>$studiensemester]);
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
$studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz" => $studiensemester]);
|
||||
$studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result));
|
||||
$timespan_start = new DateTime($studiensemester_result->start);
|
||||
$timespan_ende = new DateTime($studiensemester_result->ende);
|
||||
$lvplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'),date_format($timespan_ende, 'Y-m-d'), $lvid);
|
||||
$lvplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'), date_format($timespan_ende, 'Y-m-d'), $lvid);
|
||||
$this->terminateWithSuccess($lvplan);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* fetches Stunden layout from database
|
||||
* @access public
|
||||
*
|
||||
*/
|
||||
public function Stunden()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* fetches Stunden layout from database
|
||||
* @access public
|
||||
*
|
||||
*/
|
||||
public function Stunden()
|
||||
{
|
||||
$this->load->model('ressource/Stunde_model', 'StundeModel');
|
||||
|
||||
$this->StundeModel->addOrder('stunde', 'ASC');
|
||||
$stunden = $this->StundeModel->load();
|
||||
|
||||
$stunden = $this->getDataOrTerminateWithError($stunden);
|
||||
$stunden = $this->getDataOrTerminateWithError($stunden);
|
||||
|
||||
$this->terminateWithSuccess($stunden);
|
||||
}
|
||||
@@ -210,10 +263,10 @@ class LvPlan extends FHCAPI_Controller
|
||||
$roomplan_data = $this->stundenplanlib->getRoomplan($ort_kurzbz, $start_date, $end_date);
|
||||
|
||||
$roomplan_data = $this->getDataOrTerminateWithError($roomplan_data);
|
||||
|
||||
|
||||
$this->terminateWithSuccess($roomplan_data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gets the reservierungen of a room if the ort_kurzbz parameter is
|
||||
* supplied otherwise gets the reservierungen of the lvplan of a student
|
||||
@@ -226,25 +279,32 @@ class LvPlan extends FHCAPI_Controller
|
||||
{
|
||||
$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);
|
||||
$uid = $this->input->post('uid', true);
|
||||
|
||||
// disallow accessing other user's reservierungen if missing permission
|
||||
if ($uid && $uid !== getAuthUID() && !$this->permissionlib->isBerechtigt('basis/other_lv_plan')) {
|
||||
$this->terminateWithError("Missing permission to view other users' timetables!");
|
||||
}
|
||||
|
||||
// get data
|
||||
$this->load->library('StundenplanLib');
|
||||
|
||||
$result = $this->stundenplanlib->getReservierungen($start_date, $end_date, $ort_kurzbz);
|
||||
$result = $this->stundenplanlib->getReservierungen($start_date, $end_date, $ort_kurzbz, $uid);
|
||||
|
||||
$result = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
public function getLehreinheitStudiensemester($lehreinheit_id){
|
||||
public function getLehreinheitStudiensemester($lehreinheit_id)
|
||||
{
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
$this->LehreinheitModel->addSelect(["studiensemester_kurzbz"]);
|
||||
$result = $this->LehreinheitModel->load($lehreinheit_id);
|
||||
@@ -287,6 +347,68 @@ class LvPlan extends FHCAPI_Controller
|
||||
return $this->terminateWithSuccess(current($result));
|
||||
}
|
||||
|
||||
public function getStudiengaenge()
|
||||
{
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$this->StudiengangModel->addOrder('typ');
|
||||
$this->StudiengangModel->addOrder('kurzbz');
|
||||
$result = $this->StudiengangModel->loadWhere([
|
||||
'aktiv' => true
|
||||
]);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
return $this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function getLehrverband($studiengang_kz, $semester = null, $verband = null)
|
||||
{
|
||||
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
|
||||
|
||||
$where = [
|
||||
'aktiv' => true,
|
||||
'studiengang_kz' => $studiengang_kz,
|
||||
];
|
||||
|
||||
if ($semester !== null && $semester !== 'null' && $semester !== 'undefined') {
|
||||
$where['semester'] = $semester;
|
||||
}
|
||||
if ($verband !== null && $verband !== 'null' && $verband !== 'undefined') {
|
||||
$where['verband'] = $verband;
|
||||
}
|
||||
|
||||
$this->LehrverbandModel->addOrder('studiengang_kz');
|
||||
$this->LehrverbandModel->addOrder('semester');
|
||||
$this->LehrverbandModel->addOrder('verband');
|
||||
$this->LehrverbandModel->addOrder('gruppe');
|
||||
$result = $this->LehrverbandModel->loadWhere($where);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
return $this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current user has permission to view other users' timetables
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function permissionOtherLvPlan()
|
||||
{
|
||||
$this->terminateWithSuccess($this->permissionlib->isBerechtigt('basis/other_lv_plan'));
|
||||
}
|
||||
|
||||
/**
|
||||
* get event types which can be compacted in lv plan display
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function compactibleEventTypes()
|
||||
{
|
||||
$this->terminateWithSuccess(["lehreinheit", "reservierung", "ferien", "moodle"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch moodle events
|
||||
*
|
||||
@@ -294,30 +416,34 @@ class LvPlan extends FHCAPI_Controller
|
||||
* @param string $end_date
|
||||
* @return array
|
||||
*/
|
||||
private function fetchMoodleEvents($start_date, $end_date)
|
||||
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'));
|
||||
|
||||
|
||||
$start = new DateTime($start_date);
|
||||
$start->setTimezone($tz);
|
||||
|
||||
|
||||
$end = new DateTime($end_date);
|
||||
$end->setTimezone($tz);
|
||||
$end->modify('+1 day -1 second');
|
||||
|
||||
|
||||
$moodle_events = [];
|
||||
|
||||
|
||||
Events::trigger(
|
||||
'moodleCalendarEvents',
|
||||
function & () use (&$moodle_events) {
|
||||
function &() use (&$moodle_events) {
|
||||
return $moodle_events;
|
||||
},
|
||||
[
|
||||
'start_date' => $start->format('c'),
|
||||
'end_date' => $end->format('c'),
|
||||
'username' => getAuthUID()
|
||||
'username' => $uid ?? getAuthUID()
|
||||
]
|
||||
);
|
||||
|
||||
@@ -331,23 +457,23 @@ class LvPlan extends FHCAPI_Controller
|
||||
* @param string $end_date
|
||||
* @return array
|
||||
*/
|
||||
private function fetchFerienEvents($start_date, $end_date)
|
||||
private function fetchFerienEvents($start_date, $end_date, $uid = null)
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('education/Studentlehrverband_model', 'StudentLehrverbandModel');
|
||||
|
||||
$currentStudiensemester = $this->StudiensemesterModel->getByDate($start_date);
|
||||
$currentStudiensemester = $this->getDataOrTerminateWithError($currentStudiensemester);
|
||||
|
||||
|
||||
if ($currentStudiensemester) {
|
||||
$studentsemester_kurzbz = current($currentStudiensemester)->studiensemester_kurzbz;
|
||||
|
||||
$studiengang = $this->StudentLehrverbandModel->loadWhere([
|
||||
"student_uid" => getAuthUID(),
|
||||
"student_uid" => $uid ?? getAuthUID(),
|
||||
"studiensemester_kurzbz" => $studentsemester_kurzbz
|
||||
]);
|
||||
$studiengang = $this->getDataOrTerminateWithError($studiengang);
|
||||
|
||||
|
||||
if ($studiengang)
|
||||
$studiengang_kz = current($studiengang)->studiengang_kz;
|
||||
else
|
||||
@@ -357,7 +483,7 @@ class LvPlan extends FHCAPI_Controller
|
||||
}
|
||||
|
||||
$ferienEvents = $this->stundenplanlib->fetchFerienTageEvents($start_date, $end_date, $studiengang_kz);
|
||||
|
||||
|
||||
return $this->getDataOrTerminateWithError($ferienEvents);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2024 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
class OtherLvPlan extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'otherLvPlanViewData' => ['basis/other_lv_plan:r'],
|
||||
]);
|
||||
|
||||
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* retrieves viewData for other lv plan view
|
||||
* @access public
|
||||
* @param $uid the userID for which the other lv plan is being viewed
|
||||
*/
|
||||
public function otherLvPlanViewData($uid)
|
||||
{
|
||||
$isMitarbeiterResult = $this->MitarbeiterModel->isMitarbeiter($uid);
|
||||
$isMitarbeiter = getData($isMitarbeiterResult);
|
||||
$isStudent = !$isMitarbeiter;
|
||||
|
||||
$this->BenutzerModel->addSelect(["foto", "vorname", "nachname"]);
|
||||
$this->BenutzerModel->addJoin("tbl_person", "person_id");
|
||||
$personResult = $this->BenutzerModel->load([$uid]);
|
||||
$person = hasData($personResult) ? getData($personResult) : null;
|
||||
|
||||
$viewData = [
|
||||
"user_data" => [
|
||||
"username" => $uid,
|
||||
"is_student" => $isStudent,
|
||||
"is_mitarbeiter" => $isMitarbeiter,
|
||||
"foto" => $person[0]->foto,
|
||||
"vorname" => $person[0]->vorname,
|
||||
"nachname" => $person[0]->nachname,
|
||||
],
|
||||
];
|
||||
|
||||
$this->terminateWithSuccess($viewData);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ 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');
|
||||
@@ -92,4 +94,59 @@ 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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,7 +16,8 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
class Profil extends FHCAPI_Controller
|
||||
{
|
||||
@@ -27,13 +28,13 @@ class Profil extends FHCAPI_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'fotoSperre' => self::PERM_LOGGED,
|
||||
'fotoSperre' => self::PERM_LOGGED,
|
||||
'getGemeinden' => self::PERM_LOGGED,
|
||||
'getAllNationen' => self::PERM_LOGGED,
|
||||
'isMitarbeiter' => self::PERM_LOGGED,
|
||||
'profilViewData' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
|
||||
$this->load->library('PermissionLib');
|
||||
|
||||
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
|
||||
@@ -48,28 +49,37 @@ class Profil extends FHCAPI_Controller
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
public function profilViewData($uid=null){
|
||||
|
||||
/**
|
||||
* retrieves view data for profile view
|
||||
* @access public
|
||||
* @param $uid the userID for which profile is being viewed, null or missing value implies one's own profile
|
||||
*/
|
||||
public function profilViewData($uid = null)
|
||||
{
|
||||
$authUid = getAuthUID();
|
||||
$isProfilOfAuthUser = !$uid || $uid === $authUid;
|
||||
|
||||
$this->load->library('ProfilLib');
|
||||
$editable = false;
|
||||
if(isset($uid) && $uid != null){
|
||||
$profil_data = $this->profillib->getView($uid);
|
||||
if($uid == getAuthUID()){
|
||||
$editable = true;
|
||||
}
|
||||
}else{
|
||||
$editable = true;
|
||||
$profil_data = $this->profillib->getView(getAuthUID());
|
||||
$profileData = $this->profillib->getView($uid ?? $authUid);
|
||||
$profileData = hasData($profileData) ? getData($profileData) : null;
|
||||
|
||||
$viewData = [
|
||||
'editable' => $isProfilOfAuthUser,
|
||||
'profil_data' => $profileData,
|
||||
'permissions' => [
|
||||
'basis/other_lv_plan' => $this->permissionlib->isBerechtigt(('basis/other_lv_plan'))
|
||||
]
|
||||
];
|
||||
|
||||
if ($isProfilOfAuthUser) {
|
||||
$viewData['calendar_sync_urls'] = $this->getCalendarSyncUrlData();
|
||||
}
|
||||
|
||||
$profil_data = hasData($profil_data) ? getData($profil_data) : null;
|
||||
$viewData = array(
|
||||
'editable'=>$editable,
|
||||
'profil_data' => $profil_data,
|
||||
);
|
||||
|
||||
$this->terminateWithSuccess($viewData);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* update column foto_sperre in public.tbl_person
|
||||
* @access public
|
||||
* @param boolean $value new value for the column
|
||||
@@ -77,9 +87,9 @@ class Profil extends FHCAPI_Controller
|
||||
*/
|
||||
public function fotoSperre($value)
|
||||
{
|
||||
if(!isset($value)){
|
||||
$this->terminateWithError("Missing parameter", self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
if (!isset($value)) {
|
||||
$this->terminateWithError("Missing parameter", self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$res = $this->PersonModel->update($this->pid, ["foto_sperre" => $value]);
|
||||
if (isError($res)) {
|
||||
@@ -87,10 +97,10 @@ class Profil extends FHCAPI_Controller
|
||||
}
|
||||
$this->PersonModel->addSelect("foto_sperre");
|
||||
$res = $this->PersonModel->load($this->pid);
|
||||
|
||||
$res = $this->getDataOrTerminateWithError($res);
|
||||
|
||||
$this->terminateWithSuccess(current($res));
|
||||
|
||||
$res = $this->getDataOrTerminateWithError($res);
|
||||
|
||||
$this->terminateWithSuccess(current($res));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -109,7 +119,7 @@ class Profil extends FHCAPI_Controller
|
||||
if (isError($nation_res)) {
|
||||
$this->terminateWithError("error while trying to query table codex.tbl_nation", self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
|
||||
$nation_res = $this->getDataOrTerminateWithError($nation_res);
|
||||
|
||||
$this->terminateWithSuccess($nation_res);
|
||||
@@ -117,30 +127,30 @@ class Profil extends FHCAPI_Controller
|
||||
|
||||
public function getGemeinden($nation, $zip)
|
||||
{
|
||||
if(!isset($nation) || !isset($zip)){
|
||||
if (!isset($nation) || !isset($zip)) {
|
||||
echo json_encode(error("Missing parameters"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$this->load->model('codex/Gemeinde_model', "GemeindeModel");
|
||||
|
||||
|
||||
|
||||
$gemeinde_res = $this->GemeindeModel->getGemeindeByPlz($zip);
|
||||
|
||||
|
||||
if (isError($gemeinde_res)) {
|
||||
$this->terminateWithError(getError($gemeinde_res),self::ERROR_TYPE_GENERAL);
|
||||
$this->terminateWithError(getError($gemeinde_res), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$gemeinde_res = $this->getDataOrTerminateWithError($gemeinde_res);
|
||||
|
||||
|
||||
/* $gemeinde_res = array_map(function ($obj) {
|
||||
return $obj->ortschaftsname;
|
||||
}, $gemeinde_res); */
|
||||
|
||||
$this->terminateWithSuccess($gemeinde_res);
|
||||
|
||||
$this->terminateWithSuccess($gemeinde_res);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* checks whether a specific userID is a mitarbeiter or not (foreword declaration of the function isMitarbeiter in Mitarbeiter_model.php)
|
||||
* @access public
|
||||
@@ -150,23 +160,48 @@ class Profil extends FHCAPI_Controller
|
||||
public function isMitarbeiter($uid)
|
||||
{
|
||||
|
||||
if(!$uid) $this->terminateWithError("No uid provided", self::ERROR_TYPE_GENERAL);
|
||||
|
||||
|
||||
if (!$uid)
|
||||
$this->terminateWithError("No uid provided", self::ERROR_TYPE_GENERAL);
|
||||
|
||||
|
||||
$result = $this->MitarbeiterModel->isMitarbeiter($uid);
|
||||
|
||||
|
||||
if (isError($result)) {
|
||||
$this->terminateWithError("error when calling Mitarbeiter_model function isMitarbeiter with uid " . $uid, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$result = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
|
||||
/**
|
||||
* gets the identifier, phrase, and url for each calendar sync option
|
||||
* @access private
|
||||
* @return array array of arrays, where each child array is a sync option
|
||||
*/
|
||||
private function getCalendarSyncUrlData()
|
||||
{
|
||||
return [
|
||||
[
|
||||
"identifier" => "cal_dav",
|
||||
"labelPhrase" => "profil/calendar_sync_cal_dav",
|
||||
"url" => APP_ROOT . "webdav/lvplan.php/calendars/" . $this->uid . "/LVPlan-" . $this->uid,
|
||||
],
|
||||
[
|
||||
"identifier" => "cal_dav_principal",
|
||||
"labelPhrase" => "profil/calendar_sync_cal_dav_principal",
|
||||
"url" => APP_ROOT . "webdav/lvplan.php/principals/" . $this->uid,
|
||||
],
|
||||
[
|
||||
"identifier" => "i_cal",
|
||||
"labelPhrase" => "profil/calendar_sync_i_cal",
|
||||
"url" => APP_ROOT . "webdav/google.php?cal=" . encryptData($this->uid, LVPLAN_CYPHER_KEY) . "&" . microtime(true),
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2024 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
class StgOrgLvPlan extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Object initialization
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'stgOrgLvPlanViewData' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* fetches view data for stg org lv plan
|
||||
* @access public
|
||||
*/
|
||||
public function stgOrgLvPlanViewData()
|
||||
{
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$this->StudiengangModel->addOrder('typ');
|
||||
$this->StudiengangModel->addOrder('kurzbz');
|
||||
$result = $this->StudiengangModel->loadWhere([
|
||||
'aktiv' => true
|
||||
]);
|
||||
$studiengaenge = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$viewData = array(
|
||||
'studiengaenge' => $studiengaenge,
|
||||
);
|
||||
|
||||
$this->terminateWithSuccess($viewData);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
}
|
||||
|
||||
@@ -62,21 +62,36 @@ class Studium extends FHCAPI_Controller
|
||||
|
||||
if($this->getDataOrTerminateWithError($this->StudentModel->isStudent(getAuthUID()))){
|
||||
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $aktuelles_studiensemester->studiensemester_kurzbz]);
|
||||
$studentLehrverband = current($this->getDataOrTerminateWithError($studentLehrverband));
|
||||
|
||||
$student_studiensemester = $studentLehrverband->studiensemester_kurzbz;
|
||||
$student_studiengang = $studentLehrverband->studiengang_kz;
|
||||
$student_semester = $studentLehrverband->semester;
|
||||
|
||||
//TODO(Manu) check if use Fallback or just comment out all paramschecks?
|
||||
//add Fallback: if no LehrverbandData of actual semester, get Data of previous one
|
||||
if(!hasData($studentLehrverband))
|
||||
{
|
||||
$result= $this->StudiensemesterModel->getPreviousFrom($aktuelles_studiensemester->studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
$vorheriges_studiensemester = current($data)->studiensemester_kurzbz;
|
||||
$studentLehrverband =$this->StudentlehrverbandModel->loadWhere(["student_uid" => getAuthUID(), "studiensemester_kurzbz" => $vorheriges_studiensemester]);
|
||||
}
|
||||
$studentLehrverband = current(getData($studentLehrverband));
|
||||
|
||||
$student_studienplan = $this->getStudienPlanFromPrestudentStatus(getAuthPersonId())->studienplan_id;
|
||||
|
||||
if(!isset($parameter_studiensemester))
|
||||
$parameter_studiensemester = $student_studiensemester;
|
||||
if(!isset($parameter_studiengang))
|
||||
$parameter_studiengang = $student_studiengang;
|
||||
if(!isset($parameter_semester))
|
||||
$parameter_semester = $student_semester;
|
||||
if(!isset($parameter_studiensemester)) {
|
||||
$student_studiensemester = $studentLehrverband->studiensemester_kurzbz;
|
||||
$parameter_studiensemester = $student_studiensemester;
|
||||
}
|
||||
if(!isset($parameter_studiengang)) {
|
||||
$student_studiengang = $studentLehrverband->studiengang_kz;
|
||||
$parameter_studiengang = $student_studiengang;
|
||||
}
|
||||
if(!isset($parameter_semester)) {
|
||||
$student_semester = $studentLehrverband->semester;
|
||||
$parameter_semester = $student_semester;
|
||||
}
|
||||
if(!isset($parameter_studienplan))
|
||||
$parameter_studienplan = $student_studienplan;
|
||||
$parameter_studienplan = $student_studienplan;
|
||||
|
||||
}
|
||||
|
||||
if(isset($parameter_studiensemester)){
|
||||
@@ -96,8 +111,7 @@ class Studium extends FHCAPI_Controller
|
||||
|
||||
// fetch studiensemester
|
||||
$allStudienSemester = $this->getDataOrTerminateWithError($this->StudiensemesterModel->load());
|
||||
|
||||
|
||||
|
||||
if(isset($parameter_studiensemester) && !empty(array_filter($allStudienSemester, function($studiensemester) use($parameter_studiensemester){
|
||||
return $studiensemester->studiensemester_kurzbz == $parameter_studiensemester->studiensemester_kurzbz;
|
||||
}))){
|
||||
@@ -216,6 +230,8 @@ class Studium extends FHCAPI_Controller
|
||||
$studienplaene = array_map(function($studienplan){
|
||||
$orgform = current($this->getDataOrTerminateWithError($this->OrgformModel->loadWhere(["orgform_kurzbz" => $studienplan->orgform_kurzbz])));
|
||||
$studienplan->orgform_bezeichnung = $orgform->bezeichnung;
|
||||
// bezeichnung_mehrsprachig
|
||||
$studienplan->orgform_bezeichnung_english = $orgform->bezeichnung_mehrsprachig[1];
|
||||
return $studienplan;
|
||||
},$studienplaene);
|
||||
return $studienplaene;
|
||||
|
||||
@@ -40,11 +40,32 @@ class Board extends FHCAPI_Controller
|
||||
|
||||
public function list()
|
||||
{
|
||||
$this->DashboardModel->addSelect('dashboard_id');
|
||||
$this->DashboardModel->addSelect('dashboard_kurzbz');
|
||||
$this->DashboardModel->addSelect('tbl_dashboard.beschreibung');
|
||||
$this->DashboardModel->addSelect("(
|
||||
SELECT json_agg(w.*)
|
||||
FROM dashboard.tbl_widget w
|
||||
JOIN dashboard.tbl_dashboard_widget dw
|
||||
USING(widget_id)
|
||||
WHERE dw.dashboard_id=tbl_dashboard.dashboard_id
|
||||
) AS \"widgetSetup\"");
|
||||
|
||||
$result = $this->DashboardModel->load();
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
$data = array_map(function ($dashboard) {
|
||||
$tmpSetups = json_decode($dashboard->widgetSetup);
|
||||
$tmpSetups = array_map(function ($widget) {
|
||||
$widget->setup->file = absoluteJsImportUrl($widget->setup->file);
|
||||
return $widget;
|
||||
}, $tmpSetups);
|
||||
$dashboard->widgetSetup = $tmpSetups;
|
||||
return $dashboard;
|
||||
}, $data);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function create()
|
||||
@@ -82,7 +103,7 @@ class Board extends FHCAPI_Controller
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function delete()
|
||||
@@ -116,6 +137,6 @@ class Board extends FHCAPI_Controller
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,10 +120,7 @@ class Preset extends FHCAPI_Controller
|
||||
$conf = $this->dashboardlib->getPreset($db, $funktion);
|
||||
if ($conf) {
|
||||
$preset = json_decode($conf->preset, true);
|
||||
if (!isset($preset[$funktion]) || !isset($preset[$funktion]['widgets']))
|
||||
$result[$funktion] = [];
|
||||
else
|
||||
$result[$funktion] = $preset[$funktion]['widgets'];
|
||||
$result[$funktion] = $preset;
|
||||
} else {
|
||||
$result[$funktion] = [];
|
||||
}
|
||||
@@ -154,7 +151,7 @@ class Preset extends FHCAPI_Controller
|
||||
|
||||
$preset_decoded = json_decode($preset->preset, true);
|
||||
|
||||
$this->dashboardlib->addWidgetsToWidgets($preset_decoded, $dashboard_kurzbz, $funktion_kurzbz, [$widget]);
|
||||
$preset_decoded[$widget['widgetid']] = $widget;
|
||||
|
||||
$preset->preset = json_encode($preset_decoded);
|
||||
|
||||
@@ -186,8 +183,10 @@ class Preset extends FHCAPI_Controller
|
||||
|
||||
$preset_decoded = json_decode($preset->preset, true);
|
||||
|
||||
if (!$this->dashboardlib->removeWidgetFromWidgets($preset_decoded, $funktion_kurzbz, $widgetid))
|
||||
if (!isset($preset_decoded[$widgetid]))
|
||||
show_404();
|
||||
|
||||
unset($preset_decoded[$widgetid]);
|
||||
|
||||
$preset->preset = json_encode($preset_decoded);
|
||||
|
||||
|
||||
@@ -48,25 +48,9 @@ class User extends FHCAPI_Controller
|
||||
|
||||
$uid = $this->authlib->getAuthObj()->username;
|
||||
|
||||
/*$mergedconfig = $this->dashboardlib->getMergedConfig($dashboard->dashboard_id, $uid);
|
||||
$mergedconfig = $this->dashboardlib->getMergedUserConfig($dashboard->dashboard_id, $uid);
|
||||
|
||||
$this->terminateWithSuccess([
|
||||
'general' => call_user_func_array(
|
||||
'array_merge_recursive',
|
||||
$mergedconfig
|
||||
)
|
||||
]);*/
|
||||
$defaultconfig = $this->dashboardlib->getDefaultConfig($dashboard->dashboard_id);
|
||||
$userconfig = $this->dashboardlib->getUserConfig($dashboard->dashboard_id, $uid);
|
||||
|
||||
$defaultconfig_squashed = $defaultconfig ? call_user_func_array('array_replace_recursive', $defaultconfig) : [];
|
||||
$userconfig_squashed = $userconfig ? call_user_func_array('array_replace_recursive', $userconfig) : [];
|
||||
|
||||
$mergedconfig = array_replace_recursive($defaultconfig_squashed, $userconfig_squashed);
|
||||
|
||||
$this->terminateWithSuccess([
|
||||
DashboardLib::SECTION_IF_FUNKTION_KURZBZ_IS_NULL => $mergedconfig
|
||||
]);
|
||||
$this->terminateWithSuccess($mergedconfig);
|
||||
}
|
||||
|
||||
public function addWidget()
|
||||
@@ -86,26 +70,15 @@ class User extends FHCAPI_Controller
|
||||
if (!isset($widget['widgetid']))
|
||||
$widget['widgetid'] = $this->dashboardlib->generateWidgetId($dashboard_kurzbz);
|
||||
|
||||
if (isset($widget['source']))
|
||||
unset($widget['source']);
|
||||
|
||||
$override = $this->dashboardlib->getOverrideOrCreateEmptyOverride($dashboard_kurzbz, $uid);
|
||||
|
||||
|
||||
$override_decoded = json_decode($override->override, true);
|
||||
|
||||
if (!isset($override_decoded['general']) || !is_array($override_decoded['general']))
|
||||
$override_decoded['general'] = [];
|
||||
$override_decoded[$widget['widgetid']] = $widget;
|
||||
|
||||
if (!isset($override_decoded['general']['widgets']))
|
||||
$override_decoded['general']['widgets'] = [];
|
||||
|
||||
$override_decoded['general']['widgets'][$widget['widgetid']] = $widget;
|
||||
|
||||
// NOTE(chris): remove doubles in other funktionen
|
||||
foreach ($override_decoded as $funktion => $array) {
|
||||
if ($funktion == 'general')
|
||||
continue;
|
||||
if (isset($array['widgets']) && isset($array['widgets'][$widget['widgetid']]))
|
||||
unset($override_decoded[$funktion]['widgets'][$widget['widgetid']]);
|
||||
}
|
||||
|
||||
$override->override = json_encode($override_decoded);
|
||||
|
||||
$result = $this->dashboardlib->insertOrUpdateOverride($override);
|
||||
@@ -135,18 +108,10 @@ class User extends FHCAPI_Controller
|
||||
|
||||
$override_decoded = json_decode($override->override, true);
|
||||
|
||||
foreach (array_keys($override_decoded) as $k) {
|
||||
if (!isset($override_decoded[$k]["widgets"])) {
|
||||
unset($override_decoded[$k]);
|
||||
continue;
|
||||
}
|
||||
if (isset($override_decoded[$k]["widgets"][$widget_id])) {
|
||||
unset($override_decoded[$k]["widgets"][$widget_id]);
|
||||
}
|
||||
if (!$override_decoded[$k]["widgets"]) {
|
||||
unset($override_decoded[$k]);
|
||||
}
|
||||
}
|
||||
if (!isset($override_decoded[$widget_id]))
|
||||
show_404();
|
||||
|
||||
unset($override_decoded[$widget_id]);
|
||||
|
||||
$override->override = json_encode($override_decoded);
|
||||
|
||||
|
||||
@@ -78,52 +78,32 @@ class Dokumente extends FHCAPI_Controller
|
||||
$this->terminateWithError($this->p->t('ui', 'errorMissingValue', ['value' => 'Studiengang_kz']), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$resultPreDoc = $this->_getPrestudentDokumente($prestudent_id);
|
||||
|
||||
$arrayAccepted = [];
|
||||
$person_id = $this->_getPersonId($prestudent_id);
|
||||
|
||||
$docNames = array_map(function ($item) {
|
||||
return $item->dokument_kurzbz;
|
||||
}, $resultPreDoc);
|
||||
$mergedArray = [];
|
||||
|
||||
foreach($docNames as $doc)
|
||||
foreach ($resultPreDoc as $pre)
|
||||
{
|
||||
$result = $this->AkteModel->getAktenFAS($person_id, $doc, $studiengang_kz, $prestudent_id, true);
|
||||
$result = $this->AkteModel->getAktenFAS($person_id, $pre->dokument_kurzbz, $studiengang_kz, $prestudent_id, true);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$data = getData($result);
|
||||
foreach ($data as $value)
|
||||
foreach (getData($result) as $doc)
|
||||
{
|
||||
array_push($arrayAccepted, $value);
|
||||
$merged = clone $doc;
|
||||
$merged->docdatum = $pre->docdatum;
|
||||
$merged->insertvonma = $pre->insertvonma;
|
||||
$merged->bezeichnung = $pre->bezeichnung;
|
||||
$mergedArray[] = $merged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Mapping with document_kurzbz
|
||||
$preDocMap = [];
|
||||
foreach ($resultPreDoc as $pre) {
|
||||
$preDocMap[$pre->dokument_kurzbz] = $pre;
|
||||
}
|
||||
|
||||
$mergedArray = [];
|
||||
foreach ($arrayAccepted as $doc) {
|
||||
$merged = clone $doc;
|
||||
|
||||
if (isset($preDocMap[$doc->dokument_kurzbz])) {
|
||||
$merged->docdatum = $preDocMap[$doc->dokument_kurzbz]->docdatum;
|
||||
$merged->insertvonma = $preDocMap[$doc->dokument_kurzbz]->insertvonma;
|
||||
$merged->bezeichnung = $preDocMap[$doc->dokument_kurzbz]->bezeichnung;
|
||||
} else {
|
||||
$merged->akzeptiertdatum = null;
|
||||
$merged->akzeptiertvon = null;
|
||||
else
|
||||
{
|
||||
$mergedArray[] = $pre;
|
||||
}
|
||||
|
||||
$mergedArray[] = $merged;
|
||||
}
|
||||
|
||||
$this->terminateWithSuccess($mergedArray);
|
||||
|
||||
@@ -90,6 +90,15 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
|
||||
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id)) return $this->terminateWithError('Projektarbeit Id missing', self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$result = $this->fetchProjektarbeitByID($projektarbeit_id);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess(current($data));
|
||||
}
|
||||
|
||||
private function fetchProjektarbeitById($projektarbeit_id) {
|
||||
$this->ProjektarbeitModel->resetQuery();
|
||||
$this->ProjektarbeitModel->addSelect(
|
||||
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, lehrveranstaltung_id, lehreinheit_id,
|
||||
firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
|
||||
@@ -97,13 +106,10 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->ProjektarbeitModel->addJoin('public.tbl_firma fa', 'firma_id', 'LEFT');
|
||||
$result = $this->ProjektarbeitModel->loadWhere(
|
||||
return $this->ProjektarbeitModel->loadWhere(
|
||||
array('projektarbeit_id' => $projektarbeit_id)
|
||||
);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess(current($data));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,7 +138,8 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($this->fetchProjektarbeitById($data));
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
@@ -280,10 +287,7 @@ class Projektarbeit extends FHCAPI_Controller
|
||||
*/
|
||||
public function getNoten()
|
||||
{
|
||||
$this->NoteModel->addOrder('notenwert', 'ASC');
|
||||
$this->NoteModel->addOrder('bezeichnung', 'ASC');
|
||||
|
||||
$result = $this->NoteModel->load();
|
||||
$result = $this->NoteModel->getAllActive();
|
||||
|
||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
|
||||
@@ -25,9 +25,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
*/
|
||||
class Students extends FHCAPI_Controller
|
||||
{
|
||||
private $allowedStgs = [];
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$permissions = [];
|
||||
@@ -35,16 +32,17 @@ class Students extends FHCAPI_Controller
|
||||
$permissions[$router->method] = ['admin:r', 'assistenz:r'];
|
||||
parent::__construct($permissions);
|
||||
|
||||
$this->allowedStgs = $this->permissionlib->getSTG_isEntitledFor('admin') ?: [];
|
||||
$this->allowedStgs = array_merge($this->allowedStgs, $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: []);
|
||||
$allowedStgs = $this->permissionlib->getSTG_isEntitledFor('admin') ?: [];
|
||||
$allowedStgs = array_merge($allowedStgs, $this->permissionlib->getSTG_isEntitledFor('assistenz') ?: []);
|
||||
|
||||
if (!$this->allowedStgs) {
|
||||
if (!$allowedStgs) {
|
||||
$this->_outputAuthError([$router->method => ['admin:r', 'assistenz:r']]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Load Libraries
|
||||
$this->load->library('PhrasesLib');
|
||||
$this->load->library('stv/StudentListLib', ['allowedStgs' => $allowedStgs]);
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'lehre'
|
||||
@@ -111,23 +109,19 @@ class Students extends FHCAPI_Controller
|
||||
]);
|
||||
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
|
||||
$this->PrestudentModel->addJoin(
|
||||
$this->studentlistlib->addJoin(
|
||||
"(
|
||||
SELECT prestudent_id
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE status_kurzbz = 'Incoming'
|
||||
AND studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
|
||||
) test",
|
||||
"prestudent_id"
|
||||
"prestudent_id",
|
||||
"",
|
||||
"start"
|
||||
);
|
||||
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addSelect("COALESCE(
|
||||
$this->studentlistlib->addSelect("COALESCE(
|
||||
v.semester::text,
|
||||
CASE
|
||||
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
|
||||
@@ -135,16 +129,13 @@ class Students extends FHCAPI_Controller
|
||||
ELSE ''::text
|
||||
END
|
||||
) AS semester", false);
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe");
|
||||
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
|
||||
$result = $this->PrestudentModel->load();
|
||||
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -164,10 +155,7 @@ class Students extends FHCAPI_Controller
|
||||
]);
|
||||
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
|
||||
$this->PrestudentModel->addJoin(
|
||||
$this->studentlistlib->addJoin(
|
||||
"(
|
||||
SELECT prestudent_id
|
||||
FROM bis.tbl_bisio bis
|
||||
@@ -187,14 +175,12 @@ class Students extends FHCAPI_Controller
|
||||
) AND stdsem.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
|
||||
GROUP BY prestudent_id
|
||||
) test",
|
||||
"prestudent_id"
|
||||
"prestudent_id",
|
||||
"",
|
||||
"start"
|
||||
);
|
||||
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
|
||||
$this->PrestudentModel->addSelect("COALESCE(
|
||||
$this->studentlistlib->addSelect("COALESCE(
|
||||
v.semester::text,
|
||||
CASE
|
||||
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
|
||||
@@ -202,16 +188,13 @@ class Students extends FHCAPI_Controller
|
||||
ELSE ''::text
|
||||
END
|
||||
) AS semester", false);
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe");
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
|
||||
$result = $this->PrestudentModel->load();
|
||||
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -231,23 +214,18 @@ class Students extends FHCAPI_Controller
|
||||
]);
|
||||
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
|
||||
$this->PrestudentModel->addJoin(
|
||||
$this->studentlistlib->addJoin(
|
||||
"(
|
||||
SELECT prestudent_id
|
||||
FROM bis.tbl_mobilitaet
|
||||
WHERE studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . "
|
||||
) bis",
|
||||
"prestudent_id"
|
||||
"prestudent_id",
|
||||
"",
|
||||
"start"
|
||||
);
|
||||
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
|
||||
$this->PrestudentModel->addSelect("COALESCE(
|
||||
$this->studentlistlib->addSelect("COALESCE(
|
||||
v.semester::text,
|
||||
CASE
|
||||
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
|
||||
@@ -255,16 +233,13 @@ class Students extends FHCAPI_Controller
|
||||
ELSE ''::text
|
||||
END
|
||||
) AS semester", false);
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe");
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
|
||||
$result = $this->PrestudentModel->load();
|
||||
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -313,8 +288,6 @@ class Students extends FHCAPI_Controller
|
||||
*/
|
||||
protected function fetchPrestudents($studiengang_kz, $studiensemester_kurzbz = null, $filter = null, $orgform_kurzbz = null)
|
||||
{
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
$stdsemEsc = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
|
||||
|
||||
$selectRT = "
|
||||
@@ -331,38 +304,38 @@ class Students extends FHCAPI_Controller
|
||||
AND r.studiensemester_kurzbz=" . $stdsemEsc;
|
||||
|
||||
|
||||
$where = ['tbl_prestudent.studiengang_kz' => $studiengang_kz];
|
||||
$this->studentlistlib->addWhere('tbl_prestudent.studiengang_kz', $studiengang_kz);
|
||||
|
||||
if ($orgform_kurzbz) {
|
||||
$where['ps.orgform_kurzbz'] = $orgform_kurzbz;
|
||||
$this->studentlistlib->addWhere('ps.orgform_kurzbz', $orgform_kurzbz);
|
||||
}
|
||||
|
||||
switch ($filter) {
|
||||
case "interessenten":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
break;
|
||||
case "bewerbungnichtabgeschickt":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$where['ps.bewerbung_abgeschicktamum'] = null;
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('ps.bewerbung_abgeschicktamum IS NULL');
|
||||
break;
|
||||
case "bewerbungabgeschickt":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$where['ps.bewerbung_abgeschicktamum IS NOT NULL'] = null;
|
||||
$where['ps.bestaetigtam'] = null;
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('ps.bewerbung_abgeschicktamum IS NOT NULL');
|
||||
$this->studentlistlib->addWhere('ps.bestaetigtam IS NULL');
|
||||
break;
|
||||
case "statusbestaetigt":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$where['ps.bestaetigtam IS NOT NULL'] = null;
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('ps.bestaetigtam IS NOT NULL');
|
||||
break;
|
||||
case "statusbestaetigtrtnichtangemeldet":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$where['ps.bestaetigtam IS NOT NULL'] = null;
|
||||
$this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('ps.bestaetigtam IS NOT NULL');
|
||||
$this->studentlistlib->addWhere('NOT EXISTS(' . $selectRT . ')', null, false);
|
||||
break;
|
||||
case "statusbestaetigtrtangemeldet":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$where['ps.bestaetigtam IS NOT NULL'] = null;
|
||||
$this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('ps.bestaetigtam IS NOT NULL');
|
||||
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false);
|
||||
break;
|
||||
case "zgv":
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
@@ -374,69 +347,69 @@ class Students extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess([]);
|
||||
$stg = current($stg);
|
||||
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
|
||||
if ($stg->typ == 'm') {
|
||||
$where['zgvmas_code IS NOT NULL'] = null;
|
||||
$this->studentlistlib->addWhere('zgvmas_code IS NOT NULL');
|
||||
if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
|
||||
$where['zgvmas_erfuellt'] = true;
|
||||
$this->studentlistlib->addWhere('zgvmas_erfuellt', true);
|
||||
} elseif ($stg->typ == 'p') {
|
||||
$where['zgvdoktor_code IS NOT NULL'] = null;
|
||||
$this->studentlistlib->addWhere('zgvdoktor_code IS NOT NULL');
|
||||
if (defined('ZGV_DOKTOR_ANZEIGEN') && ZGV_DOKTOR_ANZEIGEN)
|
||||
$where['zgvdoktor_erfuellt'] = true;
|
||||
$this->studentlistlib->addWhere('zgvdoktor_erfuellt', true);
|
||||
} else {
|
||||
$where['zgv_code IS NOT NULL'] = null;
|
||||
$this->studentlistlib->addWhere('zgv_code IS NOT NULL');
|
||||
if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
|
||||
$where['zgv_erfuellt'] = true;
|
||||
$this->studentlistlib->addWhere('zgv_erfuellt', true);
|
||||
}
|
||||
break;
|
||||
case "reihungstestangemeldet":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false);
|
||||
break;
|
||||
case "reihungstestnichtangemeldet":
|
||||
$where['ps.status_kurzbz'] = 'Interessent';
|
||||
$this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Interessent');
|
||||
$this->studentlistlib->addWhere('NOT EXISTS(' . $selectRT . ')', null, false);
|
||||
break;
|
||||
case "bewerber":
|
||||
$where['ps.status_kurzbz'] = 'Bewerber';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber');
|
||||
break;
|
||||
case "bewerberrtnichtangemeldet":
|
||||
$where['ps.status_kurzbz'] = 'Bewerber';
|
||||
$this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber');
|
||||
$this->studentlistlib->addWhere('NOT EXISTS(' . $selectRT . ')', null, false);
|
||||
break;
|
||||
case "bewerberrtangemeldet":
|
||||
$where['ps.status_kurzbz'] = 'Bewerber';
|
||||
$this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber');
|
||||
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false);
|
||||
break;
|
||||
case "bewerberrtangemeldetteilgenommen":
|
||||
$where['ps.status_kurzbz'] = 'Bewerber';
|
||||
$this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
|
||||
$where['reihungstestangetreten'] = true;
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber');
|
||||
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('reihungstestangetreten', true);
|
||||
break;
|
||||
case "bewerberrtangemeldetnichtteilgenommen":
|
||||
$where['ps.status_kurzbz'] = 'Bewerber';
|
||||
$this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false);
|
||||
$where['reihungstestangetreten'] = false;
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Bewerber');
|
||||
$this->studentlistlib->addWhere('EXISTS(' . $selectRT . ')', null, false);
|
||||
$this->studentlistlib->addWhere('reihungstestangetreten', false);
|
||||
break;
|
||||
case "aufgenommen":
|
||||
$where['ps.status_kurzbz'] = 'Aufgenommener';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Aufgenommener');
|
||||
break;
|
||||
case "warteliste":
|
||||
$where['ps.status_kurzbz'] = 'Wartender';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Wartender');
|
||||
break;
|
||||
case "absage":
|
||||
$where['ps.status_kurzbz'] = 'Abgewiesener';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Abgewiesener');
|
||||
break;
|
||||
case "incoming":
|
||||
// NOTE(chris): in FAS it was not filtered for studiengang_kz
|
||||
$where['ps.status_kurzbz'] = 'Incoming';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Incoming');
|
||||
break;
|
||||
case "absolvent":
|
||||
$where['ps.status_kurzbz'] = 'Absolvent';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Absolvent');
|
||||
break;
|
||||
case "diplomand":
|
||||
$where['ps.status_kurzbz'] = 'Diplomand';
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', 'Diplomand');
|
||||
break;
|
||||
default:
|
||||
if (!$studiensemester_kurzbz) {
|
||||
@@ -444,9 +417,9 @@ class Students extends FHCAPI_Controller
|
||||
* show all prestudents in this stg who don't have a status
|
||||
* $orgform_kurzbz does not change the results since orgform is stored in the status table
|
||||
*/
|
||||
$where['ps.status_kurzbz'] = null;
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz IS NULL');
|
||||
} else {
|
||||
$this->PrestudentModel->db->where_in('ps.status_kurzbz', [
|
||||
$this->studentlistlib->addWhere('ps.status_kurzbz', [
|
||||
'Interessent',
|
||||
'Bewerber',
|
||||
'Aufgenommener',
|
||||
@@ -457,21 +430,19 @@ class Students extends FHCAPI_Controller
|
||||
break;
|
||||
}
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addSelect("
|
||||
$this->studentlistlib->addSelect("
|
||||
CASE
|
||||
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
|
||||
THEN ps.ausbildungssemester::text
|
||||
ELSE ''::text
|
||||
END AS semester", false);
|
||||
$this->PrestudentModel->addSelect("'' AS verband");
|
||||
$this->PrestudentModel->addSelect("'' AS gruppe");
|
||||
$this->addSelectPrioRel();
|
||||
$this->studentlistlib->addSelect("'' AS verband");
|
||||
$this->studentlistlib->addSelect("'' AS gruppe");
|
||||
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->PrestudentModel->loadWhere($where);
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -574,7 +545,6 @@ class Students extends FHCAPI_Controller
|
||||
$gruppe_kurzbz = null,
|
||||
$orgform_kurzbz = null
|
||||
) {
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz))
|
||||
@@ -582,34 +552,29 @@ class Students extends FHCAPI_Controller
|
||||
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
|
||||
}
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz, '');
|
||||
// NOTE(chris): overwrite 'LEFT JOIN' with 'JOIN'
|
||||
$this->studentlistlib->addJoin("public.tbl_student s", "prestudent_id");
|
||||
|
||||
$this->PrestudentModel->addSelect('v.semester');
|
||||
$this->PrestudentModel->addSelect('v.verband');
|
||||
$this->PrestudentModel->addSelect('v.gruppe');
|
||||
$this->PrestudentModel->addSelect("'' AS priorisierung_relativ");
|
||||
|
||||
|
||||
$where = [];
|
||||
$this->studentlistlib->addSelect("'' AS priorisierung_relativ");
|
||||
|
||||
if ($gruppe_kurzbz !== null) {
|
||||
$this->PrestudentModel->addJoin('public.tbl_benutzergruppe g', 'uid');
|
||||
$where['g.gruppe_kurzbz'] = $gruppe_kurzbz;
|
||||
$where['g.studiensemester_kurzbz'] = $studiensemester_kurzbz;
|
||||
$this->studentlistlib->addJoin('public.tbl_benutzergruppe g', 'uid', '', 'after_b');
|
||||
$this->studentlistlib->addWhere('g.gruppe_kurzbz', $gruppe_kurzbz);
|
||||
$this->studentlistlib->addWhere('g.studiensemester_kurzbz', $studiensemester_kurzbz);
|
||||
} else {
|
||||
$where['v.studiengang_kz'] = $studiengang_kz;
|
||||
$this->studentlistlib->addWhere('v.studiengang_kz', $studiengang_kz);
|
||||
|
||||
if ($semester !== null)
|
||||
$where['v.semester'] = $semester;
|
||||
$this->studentlistlib->addWhere('v.semester', $semester);
|
||||
|
||||
if ($verband !== null)
|
||||
$where['v.verband'] = $verband;
|
||||
$this->studentlistlib->addWhere('v.verband', $verband);
|
||||
|
||||
if ($gruppe !== null)
|
||||
$where['v.gruppe'] = $gruppe;
|
||||
$this->studentlistlib->addWhere('v.gruppe', $gruppe);
|
||||
|
||||
if (!$verband && !$gruppe && $orgform_kurzbz !== null) {
|
||||
$this->PrestudentModel->db->where(
|
||||
$this->studentlistlib->addWhere(
|
||||
"(
|
||||
SELECT orgform_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
@@ -623,9 +588,10 @@ class Students extends FHCAPI_Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->PrestudentModel->loadWhere($where);
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -652,11 +618,8 @@ class Students extends FHCAPI_Controller
|
||||
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
|
||||
}
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addSelect("COALESCE(
|
||||
|
||||
$this->studentlistlib->addSelect("COALESCE(
|
||||
v.semester::text,
|
||||
CASE
|
||||
WHEN pls.status_kurzbz IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
|
||||
@@ -664,16 +627,15 @@ class Students extends FHCAPI_Controller
|
||||
ELSE ''::text
|
||||
END
|
||||
) AS semester", false);
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.verband::text, ''::text)");
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.gruppe::text, ''::text)");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.verband::text, ''::text) AS verband");
|
||||
$this->studentlistlib->addSelect("COALESCE(v.gruppe::text, ''::text) AS gruppe");
|
||||
|
||||
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_id);
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->PrestudentModel->loadWhere([
|
||||
'tbl_prestudent.prestudent_id' => $prestudent_id
|
||||
]);
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -700,23 +662,13 @@ class Students extends FHCAPI_Controller
|
||||
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
|
||||
}
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addSelect('v.semester');
|
||||
$this->PrestudentModel->addSelect('v.verband');
|
||||
$this->PrestudentModel->addSelect('v.gruppe');
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
|
||||
|
||||
$this->studentlistlib->addWhere('s.student_uid', $student_uid);
|
||||
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->PrestudentModel->loadWhere([
|
||||
's.student_uid' => $student_uid
|
||||
]);
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -744,21 +696,13 @@ class Students extends FHCAPI_Controller
|
||||
$this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester'));
|
||||
}
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addSelect('v.semester');
|
||||
$this->PrestudentModel->addSelect('v.verband');
|
||||
$this->PrestudentModel->addSelect('v.gruppe');
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
$this->studentlistlib->addWhere('p.person_id', $person_id);
|
||||
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->PrestudentModel->loadWhere([
|
||||
'p.person_id' => $person_id
|
||||
]);
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
@@ -790,29 +734,8 @@ class Students extends FHCAPI_Controller
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
$this->prepareQuery($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addSelect("COALESCE(v.semester::text, CASE WHEN public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') THEN public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)::text ELSE ''::text END) AS semester", false);
|
||||
$this->PrestudentModel->addSelect('v.verband');
|
||||
$this->PrestudentModel->addSelect('v.gruppe');
|
||||
|
||||
//add status per semester
|
||||
$this->PrestudentModel->addSelect(
|
||||
"public.get_rolle_prestudent(public.tbl_prestudent.prestudent_id, "
|
||||
. $this->PrestudentModel->escape($studiensemester_kurzbz)
|
||||
. ") AS statusofsemester"
|
||||
);
|
||||
|
||||
$this->addSelectPrioRel();
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$prestudent_ids = [];
|
||||
$student_uids = [];
|
||||
$this->addMeta('data', $data);
|
||||
foreach ($data as $row) {
|
||||
$dataset = json_decode($row->data);
|
||||
if ($row->type == 'prestudent') {
|
||||
@@ -822,197 +745,38 @@ class Students extends FHCAPI_Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->studentlistlib->addSelect("COALESCE(
|
||||
v.semester::text,
|
||||
CASE
|
||||
WHEN public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent')
|
||||
THEN public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)::text
|
||||
ELSE ''::text
|
||||
END
|
||||
) AS semester", false);
|
||||
|
||||
|
||||
if ($prestudent_ids && $student_uids) {
|
||||
$this->PrestudentModel->db->where_in('tbl_prestudent.prestudent_id', $prestudent_ids);
|
||||
$this->PrestudentModel->db->or_where_in('s.student_uid', $student_uids);
|
||||
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_ids);
|
||||
$this->studentlistlib->addOrWhere('s.student_uid', $student_uids);
|
||||
} elseif ($prestudent_ids) {
|
||||
$this->PrestudentModel->db->where_in('tbl_prestudent.prestudent_id', $prestudent_ids);
|
||||
$this->studentlistlib->addWhere('tbl_prestudent.prestudent_id', $prestudent_ids);
|
||||
} elseif ($student_uids) {
|
||||
$this->PrestudentModel->db->where_in('s.student_uid', $student_uids);
|
||||
$this->studentlistlib->addWhere('s.student_uid', $student_uids);
|
||||
} else {
|
||||
$this->terminateWithSuccess([]);
|
||||
}
|
||||
|
||||
$result = $this->PrestudentModel->load();
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$result = $this->studentlistlib->execute($studiensemester_kurzbz);
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $studiensemester_kurzbz
|
||||
* @param string $type
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function prepareQuery($studiensemester_kurzbz, $type = 'LEFT')
|
||||
{
|
||||
$stdsemEsc = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
|
||||
|
||||
$this->load->config('stv');
|
||||
|
||||
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
|
||||
{
|
||||
$tags = $this->config->item('stv_prestudent_tags');
|
||||
|
||||
$whereTags = '';
|
||||
if (is_array($tags) && !isEmptyArray($tags)) {
|
||||
$tags = array_keys($tags);
|
||||
|
||||
foreach ($tags as $key => $tag) {
|
||||
$tags[$key] = $this->db->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->PrestudentModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
|
||||
$this->PrestudentModel->addJoin('public.tbl_person p', 'person_id');
|
||||
$this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id', $type);
|
||||
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus pls', '
|
||||
pls.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL)
|
||||
AND pls.prestudent_id=tbl_prestudent.prestudent_id
|
||||
AND pls.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, NULL)
|
||||
AND pls.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)', 'LEFT');
|
||||
$this->PrestudentModel->addJoin('lehre.tbl_studienplan sp', 'studienplan_id', 'LEFT');
|
||||
$this->PrestudentModel->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid', 'LEFT');
|
||||
$this->PrestudentModel->addJoin(
|
||||
'public.tbl_studentlehrverband v',
|
||||
'v.student_uid=s.student_uid AND v.studiensemester_kurzbz' . ($studiensemester_kurzbz ? '=' . $stdsemEsc : ' IS NULL'),
|
||||
$type
|
||||
);
|
||||
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', '
|
||||
ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
|
||||
AND ps.prestudent_id=tbl_prestudent.prestudent_id
|
||||
AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
|
||||
AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')', 'LEFT');
|
||||
|
||||
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
|
||||
{
|
||||
$this->PrestudentModel->addJoin($subQueryTag, 'tag_data_agg.prestudent_id = tbl_prestudent.prestudent_id', 'LEFT');
|
||||
}
|
||||
|
||||
|
||||
$this->PrestudentModel->addSelect("b.uid");
|
||||
if(defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED)
|
||||
{
|
||||
$this->PrestudentModel->addSelect('tag_data_agg.tags');
|
||||
}
|
||||
$this->PrestudentModel->addSelect('titelpre');
|
||||
$this->PrestudentModel->addSelect('nachname');
|
||||
$this->PrestudentModel->addSelect('vorname');
|
||||
$this->PrestudentModel->addSelect('wahlname');
|
||||
$this->PrestudentModel->addSelect('vornamen');
|
||||
$this->PrestudentModel->addSelect('titelpost');
|
||||
$this->PrestudentModel->addSelect('ersatzkennzeichen');
|
||||
$this->PrestudentModel->addSelect('gebdatum');
|
||||
$this->PrestudentModel->addSelect('geschlecht');
|
||||
$this->PrestudentModel->addSelect('foto');
|
||||
$this->PrestudentModel->addSelect('foto_sperre');
|
||||
|
||||
// semester
|
||||
// verband
|
||||
// gruppe
|
||||
|
||||
//add status per semester
|
||||
$this->PrestudentModel->addSelect(
|
||||
"public.get_rolle_prestudent(public.tbl_prestudent.prestudent_id, "
|
||||
. $this->PrestudentModel->escape($studiensemester_kurzbz)
|
||||
. ") AS statusofsemester"
|
||||
);
|
||||
|
||||
$this->PrestudentModel->addSelect('UPPER(stg.typ || stg.kurzbz) AS studiengang');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz');
|
||||
$this->PrestudentModel->addSelect('stg.bezeichnung AS stg_bezeichnung');
|
||||
$this->PrestudentModel->addSelect("s.matrikelnr");
|
||||
$this->PrestudentModel->addSelect('p.person_id');
|
||||
$this->PrestudentModel->addSelect('pls.status_kurzbz AS status');
|
||||
$this->PrestudentModel->addSelect('pls.datum AS status_datum');
|
||||
$this->PrestudentModel->addSelect('pls.bestaetigtam AS status_bestaetigung');
|
||||
$this->PrestudentModel->addSelect(
|
||||
"(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS mail_privat",
|
||||
false
|
||||
);
|
||||
$this->PrestudentModel->addSelect("
|
||||
CASE WHEN b.uid IS NOT NULL AND b.uid<>''
|
||||
THEN CONCAT(b.uid, '@', " . $this->PrestudentModel->escape(DOMAIN) . ")
|
||||
ELSE '' END AS mail_intern", false);
|
||||
$this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmerkung');
|
||||
$this->PrestudentModel->addSelect('pls.orgform_kurzbz');
|
||||
$this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz');
|
||||
$this->PrestudentModel->addSelect(
|
||||
"(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=ps.prestudent_id) AS punkte",
|
||||
false
|
||||
);
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.dual');
|
||||
$this->PrestudentModel->addSelect('p.matr_nr');
|
||||
$this->PrestudentModel->addSelect('sp.bezeichnung AS studienplan_bezeichnung');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.prestudent_id');
|
||||
|
||||
// priorisierung_relativ
|
||||
|
||||
$this->PrestudentModel->addSelect('mentor');
|
||||
$this->PrestudentModel->addSelect('b.aktiv AS bnaktiv');
|
||||
$this->PrestudentModel->addSelect('unruly');
|
||||
|
||||
$this->PrestudentModel->db->where_in('tbl_prestudent.studiengang_kz', $this->allowedStgs);
|
||||
|
||||
$this->PrestudentModel->addOrder('nachname');
|
||||
$this->PrestudentModel->addOrder('vorname');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
protected function addSelectPrioRel()
|
||||
{
|
||||
$this->PrestudentModel->addSelect("(
|
||||
SELECT count(*)
|
||||
FROM (
|
||||
SELECT *, public.get_rolle_prestudent(pss.prestudent_id, NULL) AS laststatus
|
||||
FROM public.tbl_prestudent pss
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
WHERE person_id = p.person_id
|
||||
AND studiensemester_kurzbz = (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = tbl_prestudent.prestudent_id
|
||||
AND status_kurzbz = 'Interessent'
|
||||
LIMIT 1
|
||||
)
|
||||
AND status_kurzbz = 'Interessent'
|
||||
) prest
|
||||
WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent')
|
||||
AND priorisierung <= tbl_prestudent.priorisierung
|
||||
) || ' (' || COALESCE(tbl_prestudent.priorisierung::text, ' '::text) || ')' AS priorisierung_relativ", false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds additional filters to the query
|
||||
*
|
||||
|
||||
@@ -358,7 +358,8 @@ 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];
|
||||
@@ -377,6 +378,7 @@ class AbgabetoolJob extends JOB_Controller
|
||||
if(count($relevantAbgaben) == 0) {
|
||||
continue;
|
||||
}
|
||||
$hasContent = true;
|
||||
|
||||
// Format the Student Name
|
||||
$s = $relevantAbgaben[0];
|
||||
@@ -447,7 +449,12 @@ 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;
|
||||
|
||||
@@ -40,6 +40,13 @@ class AntragJob extends JOB_Controller
|
||||
*/
|
||||
public function sendStglSammelmail()
|
||||
{
|
||||
|
||||
if ($this->config->item('abmeldung_enabled') !== true &&
|
||||
$this->config->item('abmeldung_stg_enabled') !== true &&
|
||||
$this->config->item('unterbrechung_enabled') !== true &&
|
||||
$this->config->item('wiederholung_enabled') !== true)
|
||||
return $this->logError('Konnte Job nicht starten: Keine der Configs "abmeldung_stg_enabled", "abmeldung_enabled", "unterbrechung_enabled", "wiederholung_enabled" auf true gesetzt');
|
||||
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
|
||||
$this->logInfo('Start Job sendStglSammelmail');
|
||||
@@ -47,25 +54,38 @@ class AntragJob extends JOB_Controller
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$this->StudierendenantragModel->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
$this->db->group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
if ($this->config->item('abmeldung_enabled') === true)
|
||||
{
|
||||
$this->db->group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
}
|
||||
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
if ($this->config->item('abmeldung_stg_enabled') === true)
|
||||
{
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
}
|
||||
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED);
|
||||
$this->db->group_end();
|
||||
if ($this->config->item('unterbrechung_enabled') === true)
|
||||
{
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED);
|
||||
$this->db->group_end();
|
||||
}
|
||||
|
||||
if ($this->config->item('wiederholung_enabled') === true)
|
||||
{
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG);
|
||||
$this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED);
|
||||
$this->db->group_end();
|
||||
}
|
||||
|
||||
$result = $this->StudierendenantragModel->load();
|
||||
if(isError($result))
|
||||
@@ -206,6 +226,10 @@ class AntragJob extends JOB_Controller
|
||||
public function sendReminderWiedereinstieg()
|
||||
{
|
||||
$now = new DateTime();
|
||||
|
||||
if ($this->config->item('unterbrechung_enabled') !== true)
|
||||
return $this->logError('Konnte Job nicht starten: Config "unterbrechung_enabled" nicht auf true gesetzt');
|
||||
|
||||
$modifier = $this->config->item('unterbrechung_job_remind_wiedereinstieg_date_modifier');
|
||||
|
||||
if (!$modifier)
|
||||
@@ -363,6 +387,13 @@ class AntragJob extends JOB_Controller
|
||||
{
|
||||
$this->logInfo('Start Job handleWiederholerDeadline');
|
||||
|
||||
if ($this->config->item('wiederholung_enabled') !== true)
|
||||
{
|
||||
$this->logError('Config "wiederholung_enabled" nicht auf true gesetzt');
|
||||
$this->logInfo('Ende Job handleWiederholerDeadline');
|
||||
return;
|
||||
}
|
||||
|
||||
$this->load->library('PrestudentLib');
|
||||
|
||||
$insertvon = $this->config->item('antrag_job_systemuser');
|
||||
@@ -481,6 +512,13 @@ class AntragJob extends JOB_Controller
|
||||
{
|
||||
$this->logInfo('Start Job handleAbmeldungenStglDeadline');
|
||||
|
||||
if ($this->config->item('abmeldung_stg_enabled') !== true)
|
||||
{
|
||||
$this->logError('Config "abmeldung_stg_enabled" nicht auf true gesetzt');
|
||||
$this->logInfo('Ende Job handleAbmeldungenStglDeadline');
|
||||
return;
|
||||
}
|
||||
|
||||
$insertvon = $this->config->item('antrag_job_systemuser');
|
||||
if (!$insertvon) {
|
||||
$this->logError('Config "antrag_job_systemuser" nicht gesetzt');
|
||||
@@ -614,6 +652,13 @@ class AntragJob extends JOB_Controller
|
||||
{
|
||||
$this->logInfo('Start Job sendAufforderungWiederholer');
|
||||
|
||||
if ($this->config->item('wiederholung_enabled') !== true)
|
||||
{
|
||||
$this->logError('Config "wiederholung_enabled" nicht auf true gesetzt');
|
||||
$this->logInfo('Ende Job sendAufforderungWiederholer');
|
||||
return;
|
||||
}
|
||||
|
||||
$modifier_request_1 = $this->config->item('wiederholung_job_request_1_date_modifier');
|
||||
$modifier_request_2 = $this->config->item('wiederholung_job_request_2_date_modifier');
|
||||
$modifier_deadline = $this->config->item('wiederholung_job_deadline_date_modifier');
|
||||
|
||||
@@ -28,7 +28,9 @@ class Studierendenantrag extends FHC_Controller
|
||||
'studierendenantrag'
|
||||
]);
|
||||
|
||||
if (strtolower($this->router->method) === 'leitung')
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
if (strtolower($this->router->method) === 'leitung')
|
||||
$this->_isAllowed([
|
||||
'leitung' => ['student/studierendenantrag:r', 'student/antragfreigabe:r']
|
||||
]);
|
||||
@@ -54,18 +56,27 @@ class Studierendenantrag extends FHC_Controller
|
||||
'bezeichnungStg' => $antrag->bezeichnung,
|
||||
'bezeichnungOrgform' => $antrag->orgform
|
||||
);
|
||||
|
||||
$result = $this->antraglib->getPrestudentWiederholungsBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Wiederholung';
|
||||
|
||||
$result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Unterbrechung';
|
||||
if ($this->config->item('wiederholung_enabled') === true)
|
||||
{
|
||||
$result = $this->antraglib->getPrestudentWiederholungsBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Wiederholung';
|
||||
}
|
||||
|
||||
$result = $this->antraglib->getPrestudentAbmeldeBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Abmeldung';
|
||||
if ($this->config->item('unterbrechung_enabled') === true)
|
||||
{
|
||||
$result = $this->antraglib->getPrestudentUnterbrechungsBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Unterbrechung';
|
||||
}
|
||||
|
||||
if ($this->config->item('abmeldung_enabled') === true)
|
||||
{
|
||||
$result = $this->antraglib->getPrestudentAbmeldeBerechtigt($antrag->prestudent_id);
|
||||
if (getData($result) == 1)
|
||||
$prestudentenArr[$antrag->prestudent_id]['allowedNewTypes'][] = 'Abmeldung';
|
||||
}
|
||||
}
|
||||
if ($antrag->studierendenantrag_id == null)
|
||||
continue;
|
||||
@@ -88,45 +99,59 @@ class Studierendenantrag extends FHC_Controller
|
||||
|
||||
$this->load->view('lehre/Antrag/Leitung/List', [
|
||||
'stgA' => $stgA,
|
||||
'stgL' => $stgL
|
||||
'stgL' => $stgL,
|
||||
'abmeldung_enabled' => $this->config->item('abmeldung_stg_enabled')
|
||||
]);
|
||||
}
|
||||
|
||||
public function abmeldung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Abmeldung'
|
||||
]);
|
||||
if ($this->config->item('abmeldung_enabled') === true)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Abmeldung'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function abmeldungstgl($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'AbmeldungStgl'
|
||||
]);
|
||||
if ($this->config->item('abmeldung_stg_enabled') === true)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'AbmeldungStgl'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function unterbrechung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Unterbrechung'
|
||||
]);
|
||||
if ($this->config->item('unterbrechung_enabled') === true)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Unterbrechung'
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function wiederholung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Wiederholung'
|
||||
]);
|
||||
if ($this->config->item('wiederholung_enabled') === true)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'Wiederholung'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
@@ -11,8 +11,8 @@ class CLI_Manager extends CLI_Controller
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Load helpers to upload files
|
||||
$this->load->helper('form');
|
||||
@@ -28,9 +28,19 @@ class CLI_Manager extends CLI_Controller
|
||||
* die Commandline ohne Upload durchzufuehren.
|
||||
* @param $extensioName string Name der Extension
|
||||
* @param $filename Url Encoded Pfad zum tgz File der Extension
|
||||
* @param $perform_sql boolean ob die SQL Befehle ausgeführt werden
|
||||
*/
|
||||
public function uploadExtension($extensionName = null, $filename = null)
|
||||
public function installExtension($extensionName, $filename)
|
||||
{
|
||||
$this->extensionslib->installExtension($extensionName, urldecode($filename));
|
||||
$this->extensionslib->installExtension($extensionName, urldecode($filename), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install an extension, same as installExtension but without running the SQL statements
|
||||
*/
|
||||
public function installExtensionNoSQL($extensionName, $filename)
|
||||
{
|
||||
$this->extensionslib->installExtension($extensionName, urldecode($filename), false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ class Manager extends Auth_Controller
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'system/extensions:r',
|
||||
'toggleExtension' => 'system/extensions:rw',
|
||||
@@ -21,11 +21,22 @@ class Manager extends Auth_Controller
|
||||
)
|
||||
);
|
||||
|
||||
// Load helpers to upload files
|
||||
// Loads the form helper
|
||||
$this->load->helper('form');
|
||||
|
||||
// Loads WidgetLib
|
||||
$this->load->library('WidgetLib');
|
||||
|
||||
// Loads the extensions library
|
||||
$this->load->library('ExtensionsLib');
|
||||
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'extensions',
|
||||
'table',
|
||||
'ui'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,11 +44,7 @@ class Manager extends Auth_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$viewData = array(
|
||||
'extensions' => $this->extensionslib->getInstalledExtensions()
|
||||
);
|
||||
|
||||
$this->load->view('system/extensions/manager.php', $viewData);
|
||||
$this->load->view('system/extensions/manager.php');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -45,23 +52,16 @@ class Manager extends Auth_Controller
|
||||
*/
|
||||
public function toggleExtension()
|
||||
{
|
||||
$toggleExtension = false;
|
||||
|
||||
$extension_id = $this->input->post('extension_id');
|
||||
$enabled = $this->input->post('enabled');
|
||||
|
||||
if ($enabled === 'true')
|
||||
{
|
||||
$toggleExtension = $this->extensionslib->enableExtension($extension_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
$toggleExtension = $this->extensionslib->disableExtension($extension_id);
|
||||
}
|
||||
// Clean the parameter
|
||||
$enabled = $enabled == 'true' ? true : false;
|
||||
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($toggleExtension));
|
||||
// Output the enable/disable of the extension
|
||||
$this->outputJsonSuccess(
|
||||
$this->extensionslib->toggleExtension($extension_id, $enabled)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,15 +69,11 @@ class Manager extends Auth_Controller
|
||||
*/
|
||||
public function delExtension()
|
||||
{
|
||||
$delExtension = false;
|
||||
|
||||
$extension_id = $this->input->post('extension_id');
|
||||
|
||||
$delExtension = $this->extensionslib->delExtension($extension_id);
|
||||
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($delExtension));
|
||||
$this->outputJsonSuccess($delExtension);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,9 +83,16 @@ class Manager extends Auth_Controller
|
||||
* die Commandline ohne Upload durchzufuehren.
|
||||
* @param $extensioName string Name der Extension
|
||||
* @param $filename Url Encoded Pfad zum tgz File der Extension
|
||||
* @param $perform_sql boolean ob die SQL Befehle ausgeführt werden
|
||||
*/
|
||||
public function uploadExtension($extensionName = null, $filename = null)
|
||||
public function uploadExtension()
|
||||
{
|
||||
$this->extensionslib->installExtension($extensionName, urldecode($filename));
|
||||
$notPerformSql = $this->input->post('notPerformSql');
|
||||
|
||||
// It converts the notPerformSql parameter from the checkbox value to a boolean one
|
||||
if ($notPerformSql == 'on') $notPerformSql = true;
|
||||
if ($notPerformSql !== true) $notPerformSql = false;
|
||||
|
||||
$this->extensionslib->installExtension(null, null, !$notPerformSql);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<?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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* FH-Complete
|
||||
* Copyright (C) 2025 FH Technikum-Wien
|
||||
*
|
||||
* @package FHC-Helper
|
||||
* @author FHC-Team
|
||||
* @copyright Copyright (c) 2016 fhcomplete.org
|
||||
* @license GPLv3
|
||||
* @since Version 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* FHC Helper
|
||||
* 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.
|
||||
*
|
||||
* @subpackage Helpers
|
||||
* @category Helpers
|
||||
* 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.
|
||||
*/
|
||||
|
||||
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->getJSON().';';
|
||||
$toPrint .= ' var FHC_JS_PHRASES_STORAGE_OBJECT = '.$ci->pj->toJSON().';';
|
||||
$toPrint .= "\n";
|
||||
$toPrint .= '</script>';
|
||||
$toPrint .= "\n\n";
|
||||
@@ -255,6 +255,9 @@ function generateSkipLink($skipID)
|
||||
echo $toPrint;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function absoluteJsImportUrl($relurl)
|
||||
{
|
||||
$ci =& get_instance();
|
||||
@@ -465,3 +468,4 @@ class ExtendableAppsHelper
|
||||
array_push($this->extCustomJSs, 'public/js/FhcApps.js');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1657,7 +1657,7 @@ class AntragLib
|
||||
|
||||
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere($where);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
return $result;
|
||||
|
||||
if (!hasData($result))
|
||||
return error($this->_ci->p->t('studierendenantrag', "error_no_antrag_found", ['id' => $studierendenantrag_id]));
|
||||
@@ -1709,6 +1709,7 @@ class AntragLib
|
||||
$result->statustyp = $antrag->statustyp;
|
||||
$result->status_insertvon = $antrag->status_insertvon;
|
||||
$result->grund = $antrag->grund;
|
||||
$result->status_grund = $antrag->status_grund;
|
||||
$result->studierendenantrag_id = $antrag->studierendenantrag_id;
|
||||
$result->typ = $antrag->typ;
|
||||
$result->datum = $antrag->datum;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2022 fhcomplete.org
|
||||
* 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
|
||||
@@ -19,6 +19,7 @@
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use \stdClass as stdClass;
|
||||
use \PharData as PharData;
|
||||
|
||||
/**
|
||||
* Library to manage core extensions
|
||||
@@ -33,11 +34,20 @@ 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
|
||||
|
||||
private $_ci;
|
||||
const PHRASES_DIRECTORY = 'phrases/'; // directory name where phrases files are
|
||||
|
||||
private $ARCHIVE_EXTENSIONS = array('.tgz', '.tbz2'); // accepted file extensions for an uploaded extension
|
||||
private $UPLOAD_PATH; // temporary directory to store the upload file and checks the archive
|
||||
private $EXTENSIONS_PATH; // directory where all the extensions are
|
||||
const UPLOAD_PATH = 'tmp/';
|
||||
|
||||
private $_ci; // Code igniter instance
|
||||
|
||||
private $_errorOccurred; // boolean, true if an error occurred while installing an extension
|
||||
private $_currentInstalledExtensionVersion; // contains the version of the current installation of an extension
|
||||
|
||||
// NOTE: the following have been declared as properties to maintain compatibility with previous PHP versions
|
||||
// where arrays cannot be declared as constants
|
||||
|
||||
// Accepted file extensions for an uploaded extension
|
||||
private $ARCHIVE_EXTENSIONS = array('.tgz', '.tbz2');
|
||||
|
||||
// Directories that are part of the extension archive
|
||||
private $SOFTLINK_TARGET_DIRECTORIES = array(
|
||||
@@ -45,16 +55,11 @@ class ExtensionsLib
|
||||
DOC_ROOT => array('public')
|
||||
);
|
||||
|
||||
private $_errorOccurred; // boolean, true if an error occurred while installing an extension
|
||||
private $_currentInstalledExtensionVersion; // contains the version of the current installation of an extension
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->UPLOAD_PATH = APPPATH.'tmp/';
|
||||
$this->EXTENSIONS_PATH = APPPATH.'extensions/';
|
||||
// Get code igniter instance
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
@@ -63,6 +68,8 @@ 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');
|
||||
@@ -70,6 +77,13 @@ class ExtensionsLib
|
||||
// Set default values fot class properties
|
||||
$this->_errorOccurred = false;
|
||||
$this->_currentInstalledExtensionVersion = 0;
|
||||
|
||||
// If SERVER_NAME is _not_ declared or it is an empty string
|
||||
if (!defined('SERVER_NAME') || (defined('SERVER_NAME') && isEmptyString(SERVER_NAME)))
|
||||
{
|
||||
$this->_printError('Global constant SERVER_NAME is not declared or it is not valid');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
@@ -82,32 +96,44 @@ class ExtensionsLib
|
||||
* @param $extensionName string Name of Extension (optional)
|
||||
* @param $filename Path to tgz Extension File (optional)
|
||||
*/
|
||||
public function installExtension($extensionName = null, $filename = null)
|
||||
public function installExtension($extensionName, $filename, $perform_sql)
|
||||
{
|
||||
$extensionDB = null; // contains data from DB about an extension
|
||||
$extensionJson = null; // contains the extension.json data
|
||||
|
||||
$this->_printInfo('WARNING!!! Please do not change page or stop this procedure before it is finished');
|
||||
|
||||
if (!is_null($extensionName) && !is_null($filename))
|
||||
{
|
||||
$uploadData = new stdClass();
|
||||
$uploadData->fullPath = $filename;
|
||||
$uploadData->extensionName = $extensionName;
|
||||
}
|
||||
else
|
||||
// Create an object with the given paramenters
|
||||
$uploadData = new stdClass();
|
||||
$uploadData->fullPath = $filename;
|
||||
$uploadData->extensionName = $extensionName;
|
||||
|
||||
// If no extension name or file name are provided
|
||||
if (is_null($extensionName) || is_null($filename))
|
||||
{
|
||||
$this->_loadUploadLibrary(); // loads CI upload library
|
||||
$uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it
|
||||
}
|
||||
|
||||
if ($uploadData != null) // if no error occurred
|
||||
// If a file has been uploaded
|
||||
if (isset($uploadData))
|
||||
{
|
||||
// If the given filename is the upper directory or the current one
|
||||
if (trim($uploadData->fullPath) == '..' || trim($uploadData->fullPath) == '.')
|
||||
{
|
||||
$this->_printFailure('wrong file name: / has to be escaped with %2F');
|
||||
$uploadData = null; // then it is a wrong one!
|
||||
}
|
||||
}
|
||||
|
||||
// If the no error occurred
|
||||
if ($uploadData != null)
|
||||
{
|
||||
$this->_extractExtension($uploadData->fullPath); // extract the archive of the uploaded extension
|
||||
|
||||
if (!$this->_errorOccurred) // if no error occurred
|
||||
{
|
||||
// Retives data about any previous installation of this extension
|
||||
// Retrieves data about any previous installation of this extension on this server
|
||||
$extensionDB = $this->_loadPreviousInstallation($uploadData->extensionName);
|
||||
}
|
||||
|
||||
@@ -128,15 +154,17 @@ class ExtensionsLib
|
||||
$this->_printStart('Proceding with the installation of the extension: '.$extensionJson->name);
|
||||
$this->_printEnd();
|
||||
|
||||
$this->_cleanPreviousInstallation($extensionJson); // cleans any previous installation
|
||||
// Remove any previous installation from file system and database
|
||||
$this->_cleanPreviousInstallation($extensionJson);
|
||||
|
||||
$this->_installExtension($extensionJson); // records extension data in DB
|
||||
// Records extension data in DB
|
||||
$this->_installExtension($extensionJson);
|
||||
|
||||
if (!$this->_errorOccurred) // if no error occurred
|
||||
if (!$this->_errorOccurred && $perform_sql === true) // if no error occurred
|
||||
{
|
||||
// Loads and executes neede SQL scripts
|
||||
// Loads and executes the needed SQL scripts
|
||||
$this->_loadSQLs(
|
||||
$this->UPLOAD_PATH.$extensionJson->name.'/'.ExtensionsLib::SQL_DIRECTORY,
|
||||
$this->_getUploadPath().$extensionJson->name.DIRECTORY_SEPARATOR.ExtensionsLib::SQL_DIRECTORY,
|
||||
$extensionJson
|
||||
);
|
||||
}
|
||||
@@ -152,20 +180,19 @@ 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
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
}
|
||||
|
||||
if ($this->_errorOccurred === false) // if no errors occurred
|
||||
{
|
||||
if (!$this->_rrm($uploadData->fullPath)) // removes uploaded file
|
||||
// If a file has been uploaded then remove them
|
||||
if (isset($uploadData) && !$this->_rrm($uploadData->fullPath))
|
||||
{
|
||||
$this->_printInfo('Error while cleaning upload directory. Not a blocking error');
|
||||
}
|
||||
@@ -191,19 +218,26 @@ class ExtensionsLib
|
||||
$result = $this->_ci->ExtensionsModel->load($extensionId);
|
||||
if (hasData($result)) // if something was found
|
||||
{
|
||||
$extensionName = $result->retval[0]->name; // extension name
|
||||
$this->_delSoftLinks($extensionName); // not to be checked, could fail if the extension is disabled
|
||||
// remove the extension from the extensions installation directory
|
||||
$delExtension = $this->_rrm($this->EXTENSIONS_PATH.$extensionName);
|
||||
// If this server is _not_ the same where the extension was installed then exit with a failure
|
||||
if (getData($result)[0]->server_kurzbz != SERVER_NAME) return false;
|
||||
|
||||
$extensionName = getData($result)[0]->name; // extension name
|
||||
|
||||
// Not to be checked, could fail if the extension is disabled
|
||||
$this->_delSoftLinks($extensionName);
|
||||
|
||||
// Remove the extension from the extensions installation directory
|
||||
$delExtension = $this->_rrm($this->_getExtensionsPath().$extensionName);
|
||||
|
||||
// Select all the version of this extension
|
||||
$this->_ci->ExtensionsModel->addSelect('extension_id');
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(array('name' => $extensionName));
|
||||
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(array('name' => $extensionName, 'server_kurzbz' => SERVER_NAME));
|
||||
|
||||
// If something was found
|
||||
if (hasData($result))
|
||||
{
|
||||
// Loops on them
|
||||
foreach ($result->retval as $extension)
|
||||
foreach (getData($result) as $extension) // loops on them
|
||||
{
|
||||
// Remove them all
|
||||
$result = $this->_ci->ExtensionsModel->delete($extension->extension_id);
|
||||
@@ -220,23 +254,57 @@ class ExtensionsLib
|
||||
*/
|
||||
public function getInstalledExtensions()
|
||||
{
|
||||
return $this->_ci->ExtensionsModel->getInstalledExtensions();
|
||||
$this->_ci->ExtensionsModel->addOrder('name', 'ASC');
|
||||
$this->_ci->ExtensionsModel->addOrder('server_kurzbz', 'ASC');
|
||||
$this->_ci->ExtensionsModel->addOrder('version', 'ASC');
|
||||
|
||||
return $this->_ci->ExtensionsModel->loadWhere(array('server_kurzbz' => SERVER_NAME));
|
||||
}
|
||||
|
||||
/**
|
||||
* To enable an extension
|
||||
* To enable/disable an extension
|
||||
*/
|
||||
public function enableExtension($extensionId)
|
||||
public function toggleExtension($extensionId, $enabled)
|
||||
{
|
||||
return $this->_toggleExtension($extensionId, true);
|
||||
}
|
||||
$_toggleExtension = false;
|
||||
|
||||
/**
|
||||
* To disable an extension
|
||||
*/
|
||||
public function disableExtension($extensionId)
|
||||
{
|
||||
return $this->_toggleExtension($extensionId, false);
|
||||
// Loads data from DB about the given extension
|
||||
$result = $this->_ci->ExtensionsModel->load($extensionId);
|
||||
if (hasData($result))
|
||||
{
|
||||
// If this server is _not_ the same where the extension was installed then exit with a failure
|
||||
if (getData($result)[0]->server_kurzbz != SERVER_NAME) return false;
|
||||
|
||||
$extensionName = getData($result)[0]->name; // extension name
|
||||
|
||||
// If to be enabled
|
||||
if ($enabled === true)
|
||||
{
|
||||
// Add the symlinks
|
||||
$_toggleExtension = $this->_addSoftLinks($extensionName);
|
||||
}
|
||||
else // If to be disabled
|
||||
{
|
||||
// Remove all the symlinks
|
||||
$_toggleExtension = $this->_delSoftLinks($extensionName);
|
||||
}
|
||||
|
||||
if ($_toggleExtension) // if is a success
|
||||
{
|
||||
// Updates DB
|
||||
$result = $this->_ci->ExtensionsModel->update($extensionId, array('enabled' => $enabled));
|
||||
if (isSuccess($result))
|
||||
{
|
||||
$_toggleExtension = true;
|
||||
}
|
||||
else // if DB update fails remove symlinks from file system
|
||||
{
|
||||
$this->_delSoftLinks($extensionName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $_toggleExtension;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
@@ -250,7 +318,7 @@ class ExtensionsLib
|
||||
$this->_ci->load->library(
|
||||
'upload',
|
||||
array(
|
||||
'upload_path' => $this->UPLOAD_PATH,
|
||||
'upload_path' => $this->_getUploadPath(),
|
||||
'allowed_types' => '*',
|
||||
'overwrite' => true
|
||||
)
|
||||
@@ -314,7 +382,7 @@ class ExtensionsLib
|
||||
// Extracts the uploaded file
|
||||
$pd = new PharData($uploadPath);
|
||||
|
||||
$pd->extractTo($this->UPLOAD_PATH, null, true);
|
||||
$pd->extractTo($this->_getUploadPath(), null, true);
|
||||
}
|
||||
catch (UnexpectedValueException $uva)
|
||||
{
|
||||
@@ -322,6 +390,16 @@ class ExtensionsLib
|
||||
$this->_printFailure('provided an invalid archive');
|
||||
}
|
||||
catch (PharException $pe)
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('phar error occurred');
|
||||
}
|
||||
catch (InvalidArgumentException $iae)
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('wrong file name');
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('generic error occurred, check logs');
|
||||
@@ -344,24 +422,29 @@ class ExtensionsLib
|
||||
// Loads the last version of the previous installation of this extension
|
||||
$this->_ci->ExtensionsModel->addOrder('version', 'DESC');
|
||||
$this->_ci->ExtensionsModel->addLimit(1);
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(array('name' => $extensionName));
|
||||
|
||||
// Loads extensions installed on this server
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(
|
||||
array(
|
||||
'name' => $extensionName,
|
||||
'server_kurzbz' => SERVER_NAME
|
||||
)
|
||||
);
|
||||
|
||||
// In an error occurred
|
||||
if (isError($result))
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('data base error: '.$result->retval);
|
||||
$this->_printFailure('data base error: '.getData($result));
|
||||
}
|
||||
else
|
||||
elseif (hasData($result))
|
||||
{
|
||||
if (hasData($result)) // if found
|
||||
{
|
||||
$extensionDB = $result->retval[0]; // return it!
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_printMessage('not found');
|
||||
}
|
||||
$extensionDB = getData($result)[0];
|
||||
}
|
||||
|
||||
// If no data have been found
|
||||
if ($extensionDB == null) $this->_printMessage('not found');
|
||||
|
||||
$this->_printSuccess(!$this->_errorOccurred);
|
||||
|
||||
$this->_printEnd();
|
||||
@@ -377,10 +460,10 @@ class ExtensionsLib
|
||||
$this->_printStart('Checking extension file system structure');
|
||||
|
||||
// Checks if the root directory of this archive has the same name of the extension
|
||||
if (is_dir($this->UPLOAD_PATH.$extensionName))
|
||||
if (is_dir($this->_getUploadPath().$extensionName))
|
||||
{
|
||||
// Checks if file extension.json exists inside the uploaded archive
|
||||
if (!file_exists($this->UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME))
|
||||
if (!file_exists($this->_getUploadPath().$extensionName.DIRECTORY_SEPARATOR.ExtensionsLib::EXTENSION_JSON_NAME))
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('missing extension.json');
|
||||
@@ -402,11 +485,14 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _chkExtensionJson($extensionName, $extensionDB)
|
||||
{
|
||||
// Set a default FHComplete version
|
||||
$fhcomplete_version = 0;
|
||||
|
||||
$this->_printStart('Parsing and checking extension.json');
|
||||
|
||||
// Decodes extension.json
|
||||
$extensionJson = json_decode(
|
||||
file_get_contents($this->UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME)
|
||||
file_get_contents($this->_getUploadPath().$extensionName.DIRECTORY_SEPARATOR.ExtensionsLib::EXTENSION_JSON_NAME)
|
||||
);
|
||||
|
||||
// Checks if the parameter name of the extension.json has the same value of the extension name
|
||||
@@ -416,36 +502,41 @@ class ExtensionsLib
|
||||
if (isset($extensionJson->version))
|
||||
{
|
||||
$extensionJson->currentInstalledVersion = 0; // default current installed version of this extension
|
||||
|
||||
if ($extensionDB != null) // if no previous installation was found in DB
|
||||
|
||||
// If a previous installation was found in DB
|
||||
if ($extensionDB != null)
|
||||
{
|
||||
// Then get the data from database
|
||||
$extensionJson->extension_id = $extensionDB->extension_id; // get the extension_id from DB
|
||||
$extensionJson->currentInstalledVersion = $extensionDB->version; // get the current installed version from DB
|
||||
|
||||
// Prompt a summary
|
||||
$this->_printMessage('Extension already installed!');
|
||||
$this->_printMessage('Current version: '.$extensionDB->version);
|
||||
$this->_printMessage('Version of the uploaded extension: '.$extensionJson->version);
|
||||
|
||||
// Check if the version of the uploaded extension is the same
|
||||
// as the one from the dataabase
|
||||
if ($extensionJson->version == $extensionDB->version)
|
||||
{
|
||||
$this->_printMessage('Updating the same version!');
|
||||
}
|
||||
elseif ($extensionJson->version > $extensionDB->version)
|
||||
elseif ($extensionJson->version > $extensionDB->version) // or it is higher
|
||||
{
|
||||
$this->_printMessage('Updating to a new version!');
|
||||
}
|
||||
else // downgrade is not possible
|
||||
else // otherwise is lower, then the downgrade is not possible
|
||||
{
|
||||
$extensionJson = null;
|
||||
$this->_printFailure('downgrade must be performed manually');
|
||||
}
|
||||
}
|
||||
else
|
||||
else // otherwise if it is not installed on this server
|
||||
{
|
||||
$this->_printMessage('Version of the uploaded extension: '.$extensionJson->version);
|
||||
}
|
||||
|
||||
// If no errors occurred
|
||||
// If no errors occurred then check the JSON file content within the uploaded extension
|
||||
if ($extensionJson != null)
|
||||
{
|
||||
// Default value
|
||||
@@ -454,7 +545,7 @@ class ExtensionsLib
|
||||
require_once('version.php'); // get the core version
|
||||
|
||||
// Checks if the required core version of the extension is the same of this system
|
||||
if (isset($extensionJson->core_version) && version_compare($extensionJson->core_version, $fhcomplete_version,'<='))
|
||||
if (isset($extensionJson->core_version) && version_compare($extensionJson->core_version, $fhcomplete_version, '<='))
|
||||
{
|
||||
$this->_printMessage('Required core version: '.$extensionJson->core_version);
|
||||
$this->_printMessage('Current core version: '.$fhcomplete_version);
|
||||
@@ -467,7 +558,7 @@ class ExtensionsLib
|
||||
// Gets the required dependencies
|
||||
$result = $this->_ci->ExtensionsModel->getDependencies($extensionJson->dependencies);
|
||||
// If they are matcheds
|
||||
if (hasData($result) && count($result->retval) == count($extensionJson->dependencies))
|
||||
if (hasData($result) && count(getData($result)) == count($extensionJson->dependencies))
|
||||
{
|
||||
if (isset($extensionJson->dependencies))
|
||||
{
|
||||
@@ -562,6 +653,7 @@ class ExtensionsLib
|
||||
{
|
||||
$this->_printStart('Adding new entry in the DB');
|
||||
|
||||
// Insert into database the extension information
|
||||
$result = $this->_ci->ExtensionsModel->insert(
|
||||
array(
|
||||
'name' => $extensionJson->name,
|
||||
@@ -570,7 +662,8 @@ class ExtensionsLib
|
||||
'license' => isset($extensionJson->license) ? $extensionJson->license : null,
|
||||
'url' => isset($extensionJson->url) ? $extensionJson->url : null,
|
||||
'core_version' => $extensionJson->core_version,
|
||||
'dependencies' => isset($extensionJson->dependencies) ? $extensionJson->dependencies : null
|
||||
'dependencies' => isset($extensionJson->dependencies) ? $extensionJson->dependencies : null,
|
||||
'server_kurzbz' => SERVER_NAME
|
||||
)
|
||||
);
|
||||
if (isSuccess($result))
|
||||
@@ -606,14 +699,16 @@ class ExtensionsLib
|
||||
// Loops through the versions
|
||||
for ($sqlDir = $startVersion; $sqlDir <= $extensionJson->version; $sqlDir++)
|
||||
{
|
||||
// Gets all the SQL files in the directory having the same name of the version
|
||||
$files = glob($pkgSQLsPath.DIRECTORY_SEPARATOR.$sqlDir.'/*'.ExtensionsLib::SQL_FILE_EXTENSION);
|
||||
|
||||
// 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)
|
||||
{
|
||||
{
|
||||
// Loads every sql files
|
||||
foreach ($files as $file)
|
||||
{
|
||||
$sql = file_get_contents($file); // gets the entire content of the file
|
||||
$sql = file_get_contents($file); // gets the entire content of the file
|
||||
|
||||
$this->_printMessage('Executing query:');
|
||||
$this->_printMessage($sql);
|
||||
@@ -651,17 +746,20 @@ class ExtensionsLib
|
||||
{
|
||||
$this->_printStart('Moving the upload extension from upload folder to extension folder');
|
||||
|
||||
$this->_printMessage('Current extension directory: '.$this->UPLOAD_PATH.$extensionName);
|
||||
$this->_printMessage('Directory where it will be moved: '.$this->EXTENSIONS_PATH.$extensionName);
|
||||
$this->_printMessage('Current extension directory: '.$this->_getUploadPath().$extensionName);
|
||||
$this->_printMessage('Directory where it will be moved: '.$this->_getExtensionsPath().$extensionName);
|
||||
|
||||
if (rename($this->UPLOAD_PATH.$extensionName.'/', $this->EXTENSIONS_PATH.$extensionName))
|
||||
if (!file_exists($this->_getExtensionsPath().$extensionName))
|
||||
{
|
||||
$this->_printSuccess(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('error while moving');
|
||||
if (rename($this->_getUploadPath().$extensionName.DIRECTORY_SEPARATOR, $this->_getExtensionsPath().$extensionName))
|
||||
{
|
||||
$this->_printSuccess(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure('error while moving');
|
||||
}
|
||||
}
|
||||
|
||||
$this->_printEnd();
|
||||
@@ -695,13 +793,21 @@ class ExtensionsLib
|
||||
{
|
||||
$_delSoftLinks = false;
|
||||
|
||||
// For every set of target directories where:
|
||||
// rootPath: is the prefix of the absolute path for the target directory
|
||||
// targetDirectories: is an array of target directories
|
||||
foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $rootPath => $targetDirectories)
|
||||
{
|
||||
// For every target directory in the current set
|
||||
foreach ($targetDirectories as $targetDirectory)
|
||||
{
|
||||
if (file_exists($rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName))
|
||||
// If the symlink exists
|
||||
if (file_exists($rootPath.$targetDirectory.DIRECTORY_SEPARATOR.ExtensionsLib::EXTENSIONS_DIR_NAME.DIRECTORY_SEPARATOR.$extensionName))
|
||||
{
|
||||
$_delSoftLinks = unlink($rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName);
|
||||
// Try to delete it
|
||||
$_delSoftLinks = unlink(
|
||||
$rootPath.$targetDirectory.DIRECTORY_SEPARATOR.ExtensionsLib::EXTENSIONS_DIR_NAME.DIRECTORY_SEPARATOR.$extensionName
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -714,29 +820,23 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _rrm($dir)
|
||||
{
|
||||
if (!file_exists($dir))
|
||||
// If the directory does not exist return success
|
||||
if (!file_exists($dir)) return true;
|
||||
|
||||
// If it is not a directory then delete it and return the result
|
||||
if (!is_dir($dir)) return unlink($dir);
|
||||
|
||||
// For each subdirectory
|
||||
foreach (scandir($dir) as $subdir)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!is_dir($dir))
|
||||
{
|
||||
return unlink($dir);
|
||||
}
|
||||
|
||||
foreach (scandir($dir) as $item)
|
||||
{
|
||||
if ($item == '.' || $item == '..')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!$this->_rrm($dir.DIRECTORY_SEPARATOR.$item))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// If it is the same directory or the parent directory skip to the next one
|
||||
if ($subdir == '.' || $subdir == '..') continue;
|
||||
|
||||
// Try to remove a subdirectory, if it fails then return a failure
|
||||
if (!$this->_rrm($dir.DIRECTORY_SEPARATOR.$subdir)) return false;
|
||||
}
|
||||
|
||||
// Delete the directory and return the result
|
||||
return rmdir($dir);
|
||||
}
|
||||
|
||||
@@ -746,27 +846,36 @@ class ExtensionsLib
|
||||
private function _addSoftLinks($extensionName)
|
||||
{
|
||||
$_addSoftLinks = false;
|
||||
$extensionPath = $this->EXTENSIONS_PATH.$extensionName.'/';
|
||||
$extensionPath = $this->_getExtensionsPath().$extensionName.DIRECTORY_SEPARATOR;
|
||||
|
||||
// For every target directory
|
||||
// For every set of target directories where:
|
||||
// rootPath: is the prefix of the absolute path for the target directory
|
||||
// targetDirectories: is an array of target directories
|
||||
foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $rootPath => $targetDirectories)
|
||||
{
|
||||
// For every target directory in the current set
|
||||
foreach ($targetDirectories as $targetDirectory)
|
||||
{
|
||||
// If destination of the symlink does not exist
|
||||
if (!file_exists($rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName))
|
||||
// Checks if the link already exists
|
||||
$_addSoftLinks = file_exists(
|
||||
$rootPath.$targetDirectory.DIRECTORY_SEPARATOR.ExtensionsLib::EXTENSIONS_DIR_NAME.DIRECTORY_SEPARATOR.$extensionName
|
||||
);
|
||||
|
||||
// If the symlink does not exist
|
||||
if (!$_addSoftLinks)
|
||||
{
|
||||
// If the target directory does not exist than creates that
|
||||
if (!is_dir($extensionPath.$targetDirectory))
|
||||
{
|
||||
mkdir($extensionPath.$targetDirectory);
|
||||
}
|
||||
// If the target directory does not exist than creates it
|
||||
if (!is_dir($extensionPath.$targetDirectory)) mkdir($extensionPath.$targetDirectory);
|
||||
|
||||
// Create the symlink
|
||||
$_addSoftLinks = symlink(
|
||||
$_addSoftLinks = @symlink(
|
||||
// Target
|
||||
$extensionPath.$targetDirectory,
|
||||
$rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName
|
||||
// Link
|
||||
$rootPath.$targetDirectory.DIRECTORY_SEPARATOR.ExtensionsLib::EXTENSIONS_DIR_NAME.DIRECTORY_SEPARATOR.$extensionName
|
||||
);
|
||||
|
||||
// On failure
|
||||
if (!$_addSoftLinks)
|
||||
{
|
||||
log_message('error', 'Failed to create Symlink to '.$extensionPath.$targetDirectory);
|
||||
@@ -796,9 +905,9 @@ class ExtensionsLib
|
||||
$this->_printMessage('Removing the extracted data from the upload directory');
|
||||
if ($uploadData != null
|
||||
&& isset($uploadData->extensionName)
|
||||
&& file_exists($this->UPLOAD_PATH.$uploadData->extensionName))
|
||||
&& file_exists($this->_getUploadPath().$uploadData->extensionName))
|
||||
{
|
||||
$this->_rrm($this->UPLOAD_PATH.$uploadData->extensionName);
|
||||
$this->_rrm($this->_getUploadPath().$uploadData->extensionName);
|
||||
}
|
||||
|
||||
// If the upload of the file is a success and the extension name is present and no previous installation were found
|
||||
@@ -812,16 +921,13 @@ class ExtensionsLib
|
||||
{
|
||||
// Remove them all from file system and DB
|
||||
$this->_printMessage('Removing entries in the DB related to this extension and from extensions directory');
|
||||
$this->delExtension($result->retval[0]->extension_id);
|
||||
$this->delExtension(getData($result)[0]->extension_id);
|
||||
}
|
||||
}
|
||||
else // otherwise
|
||||
// Otherwise remove them all only from DB
|
||||
elseif ($extensionJson != null && isset($extensionJson->extension_id))
|
||||
{
|
||||
// Remove them all only from DB
|
||||
if ($extensionJson != null && isset($extensionJson->extension_id))
|
||||
{
|
||||
$this->_ci->ExtensionsModel->delete($extensionJson->extension_id);
|
||||
}
|
||||
$this->_ci->ExtensionsModel->delete($extensionJson->extension_id);
|
||||
}
|
||||
|
||||
$this->_printMessage('Rollback finished');
|
||||
@@ -830,46 +936,19 @@ class ExtensionsLib
|
||||
}
|
||||
|
||||
/**
|
||||
* To enable/disable an extension
|
||||
* Returns the absolute upload path
|
||||
*/
|
||||
private function _toggleExtension($extensionId, $enabled)
|
||||
private function _getUploadPath()
|
||||
{
|
||||
$_toggleExtension = false;
|
||||
return APPPATH.self::UPLOAD_PATH;
|
||||
}
|
||||
|
||||
// Loads data from DB about the given extension
|
||||
$result = $this->_ci->ExtensionsModel->load($extensionId);
|
||||
if (hasData($result))
|
||||
{
|
||||
$extensionName = $result->retval[0]->name; // extension name
|
||||
|
||||
// If to be enabled
|
||||
if ($enabled === true)
|
||||
{
|
||||
// Add the symlinks
|
||||
$_toggleExtension = $this->_addSoftLinks($extensionName);
|
||||
}
|
||||
else // If to be disabled
|
||||
{
|
||||
// Remove all the symlinks
|
||||
$_toggleExtension = $this->_delSoftLinks($extensionName);
|
||||
}
|
||||
|
||||
if ($_toggleExtension) // if is a success
|
||||
{
|
||||
// Updates DB
|
||||
$result = $this->_ci->ExtensionsModel->update($extensionId, array('enabled' => $enabled));
|
||||
if (isSuccess($result))
|
||||
{
|
||||
$_toggleExtension = true;
|
||||
}
|
||||
else // if DB update fails remove symlinks from file system
|
||||
{
|
||||
$this->_delSoftLinks($extensionName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $_toggleExtension;
|
||||
/**
|
||||
* Returns the absolute extensions path
|
||||
*/
|
||||
private function _getExtensionsPath()
|
||||
{
|
||||
return APPPATH.self::EXTENSIONS_DIR_NAME.DIRECTORY_SEPARATOR;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -931,4 +1010,13 @@ class ExtensionsLib
|
||||
{
|
||||
$this->_printInfo('------------------------------------------------------------------------------------------');
|
||||
}
|
||||
|
||||
/**
|
||||
* Install the phrases from the given extension
|
||||
*/
|
||||
private function _installPhrases($extensionName)
|
||||
{
|
||||
$this->_ci->phraseslib->installFrom($this->_getExtensionsPath().$extensionName.'/'.self::PHRASES_DIRECTORY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,98 +1,96 @@
|
||||
<?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->_extend_construct(func_get_args());
|
||||
}
|
||||
$this->_extendConstruct(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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 the phrases in JSON format
|
||||
*/
|
||||
public function toJSON()
|
||||
{
|
||||
if (isEmptyString($phrasentext_id)) return error('Not a valid phrasentext_id');
|
||||
|
||||
return $this->_ci->PhrasentextModel->load($phrasentext_id);
|
||||
}
|
||||
return json_encode($this->_phrases);
|
||||
}
|
||||
|
||||
/**
|
||||
* getPhrases() - Retrieves phrases from the DB
|
||||
* 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
|
||||
* 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);
|
||||
@@ -100,7 +98,7 @@ class PhrasesLib
|
||||
if (hasData($result))
|
||||
{
|
||||
// Textile parser
|
||||
$textileParser = new \Netcarver\Textile\Parser();
|
||||
$textileParser = new NTParser();
|
||||
|
||||
for ($i = 0; $i < count($result->retval); $i++)
|
||||
{
|
||||
@@ -139,31 +137,7 @@ 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
|
||||
@@ -176,7 +150,7 @@ class PhrasesLib
|
||||
public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null)
|
||||
{
|
||||
// If the property _phrases is populated
|
||||
if (is_array($this->_phrases))
|
||||
if (!isEmptyArray($this->_phrases))
|
||||
{
|
||||
// Loops through the _phrases property
|
||||
for ($i = 0; $i < count($this->_phrases); $i++)
|
||||
@@ -202,6 +176,107 @@ 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
|
||||
*/
|
||||
@@ -215,6 +290,68 @@ 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
|
||||
@@ -224,22 +361,19 @@ 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 _extend_construct($params)
|
||||
private function _extendConstruct($params)
|
||||
{
|
||||
// Checks if the $params is an array with at least one element
|
||||
if (is_array($params) && count($params) > 0)
|
||||
if (!isEmptyArray($params))
|
||||
{
|
||||
$parameters = $params[0]; // temporary variable
|
||||
$isIndexArray = false; //flag for indexed array
|
||||
|
||||
// If there are parameters
|
||||
if (is_array($parameters) && count($parameters) > 0)
|
||||
if (!isEmptyArray($parameters))
|
||||
{
|
||||
$categories = $parameters[0]; // categories is always the first parameter
|
||||
if (!is_array($categories)) // if it is not an array, then convert into one
|
||||
{
|
||||
$categories = array($categories);
|
||||
}
|
||||
// If it is not an array, then convert into one
|
||||
if (!is_array($categories)) $categories = array($categories);
|
||||
|
||||
// Retrieves the language of the logged user
|
||||
$language = getUserLanguage(count($parameters) == 2 ? $parameters[1] : null);
|
||||
@@ -279,7 +413,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)
|
||||
{
|
||||
@@ -290,19 +424,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
|
||||
@@ -313,13 +447,11 @@ 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;
|
||||
@@ -327,19 +459,227 @@ 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the property _phrases JSON encoded
|
||||
* @return json encoded property _phrases
|
||||
* Install phrases from the given directory
|
||||
*/
|
||||
public function getJSON()
|
||||
private function _installPhrases($phrasesDirectory)
|
||||
{
|
||||
return json_encode($this->_phrases);
|
||||
$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('------------------------------------------------------------------------------------------');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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,6 +263,59 @@ 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,13 +40,16 @@ class StundenplanLib
|
||||
* @return stdClass
|
||||
* @access public
|
||||
*/
|
||||
public function getEventsUser($start, $end)
|
||||
public function getEventsUser($start, $end, $uid = null)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
$this->_ci->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
|
||||
|
||||
$uid = getAuthUID();
|
||||
if (!$uid) {
|
||||
$uid = getAuthUID();
|
||||
}
|
||||
|
||||
if (is_null($uid))
|
||||
return error("No UID");
|
||||
|
||||
@@ -217,7 +220,7 @@ class StundenplanLib
|
||||
* @param string $ort_kurzbz
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getReservierungen($start_date, $end_date, $ort_kurzbz = '')
|
||||
public function getReservierungen($start_date, $end_date, $ort_kurzbz = '', $uid = null)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
@@ -228,14 +231,14 @@ class StundenplanLib
|
||||
$this->_ci->load->model('ressource/Reservierung_model', 'ReservierungModel');
|
||||
$this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel');
|
||||
|
||||
$is_mitarbeiter = getData($this->_ci->MitarbeiterModel->isMitarbeiter(getAuthUID()));
|
||||
$is_mitarbeiter = getData($this->_ci->MitarbeiterModel->isMitarbeiter($uid ?? getAuthUID()));
|
||||
|
||||
if ($is_mitarbeiter && empty($ort_kurzbz)) {
|
||||
// request for personal lvplan show only reservations of logged in user
|
||||
$reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date);
|
||||
$reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $uid);
|
||||
} else {
|
||||
// querying the reservierungen
|
||||
$reservierungen = $this->_ci->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz);
|
||||
$reservierungen = $this->_ci->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz, $uid);
|
||||
}
|
||||
|
||||
if (isError($reservierungen))
|
||||
@@ -357,7 +360,10 @@ class StundenplanLib
|
||||
if (isError($ort_content_object)) {
|
||||
return error(getData($ort_content_object));
|
||||
}
|
||||
$ort_content_object = getData($ort_content_object)[0];
|
||||
$ort_content_object_data = getData($ort_content_object);
|
||||
$ort_content_object = (is_array($ort_content_object_data) && count($ort_content_object_data) > 0)
|
||||
? $ort_content_object_data[0]
|
||||
: null;
|
||||
if($ort_content_object) {
|
||||
$item->ort_content_id = $ort_content_object->content_id;
|
||||
}
|
||||
@@ -445,6 +451,24 @@ class StundenplanLib
|
||||
return success($ferienEventsFlattened);
|
||||
}
|
||||
|
||||
public function getEventsStgOrg( $start, $end, $stg_kz, $sem, $verband, $gruppe)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
$this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel');
|
||||
|
||||
$stundenplan_data = $this->_ci->StundenplanModel->getStundenplanStudiengang($start, $end, $stg_kz, $sem, $verband, $gruppe);
|
||||
if (isError($stundenplan_data))
|
||||
return $stundenplan_data;
|
||||
$stundenplan_data = getData($stundenplan_data) ?? [];
|
||||
|
||||
$function_error = $this->expandObjectInformation($stundenplan_data);
|
||||
if ($function_error)
|
||||
return $function_error;
|
||||
|
||||
return success($stundenplan_data);
|
||||
}
|
||||
|
||||
// start of the private functions ########################################################################################################
|
||||
|
||||
// function used to sort an array of studiensemester strings
|
||||
|
||||
@@ -37,7 +37,9 @@ class DashboardLib
|
||||
|
||||
public function getDashboardByKurzbz($dashboard_kurzbz)
|
||||
{
|
||||
$result = $this->_ci->DashboardModel->getDashboardByKurzbz($dashboard_kurzbz);
|
||||
$result = $this->_ci->DashboardModel->loadWhere([
|
||||
'dashboard_kurzbz' => $dashboard_kurzbz
|
||||
]);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
@@ -47,17 +49,21 @@ class DashboardLib
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getMergedConfig($dashboard_id, $uid)
|
||||
public function getMergedUserConfig($dashboard_id, $uid)
|
||||
{
|
||||
$defaultconfig = $this->getDefaultConfig($dashboard_id);
|
||||
$userconfig = $this->getUserConfig($dashboard_id, $uid);
|
||||
$defaultconfig = $this->getUserBaseConfig($dashboard_id);
|
||||
$userconfig = $this->getUserOverrideConfig($dashboard_id, $uid);
|
||||
|
||||
$mergedconfig = array_replace_recursive($defaultconfig, $userconfig);
|
||||
$sourceconfig = array_map(function ($value) {
|
||||
return ['source' => $value['source']];
|
||||
}, $defaultconfig);
|
||||
|
||||
$mergedconfig = array_replace_recursive($defaultconfig, $userconfig, $sourceconfig);
|
||||
|
||||
return $mergedconfig;
|
||||
}
|
||||
|
||||
public function getDefaultConfig($dashboard_id)
|
||||
protected function getUserBaseConfig($dashboard_id)
|
||||
{
|
||||
$funktion_kurzbzs = [];
|
||||
$rights = $this->_ci->permissionlib->getAccessRights();
|
||||
@@ -87,7 +93,11 @@ class DashboardLib
|
||||
$preset = json_decode($presetobj->preset, true);
|
||||
if (null !== $preset)
|
||||
{
|
||||
$defaultconfig = array_replace_recursive($defaultconfig, $preset);
|
||||
$preset = array_map(function ($value) use ($presetobj) {
|
||||
$value['source'] = $presetobj->funktion_kurzbz ?: self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
|
||||
return $value;
|
||||
}, $preset);
|
||||
$defaultconfig = array_merge_recursive($defaultconfig, $preset);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,7 +105,7 @@ class DashboardLib
|
||||
return $defaultconfig;
|
||||
}
|
||||
|
||||
public function getUserConfig($dashboard_id, $uid)
|
||||
protected function getUserOverrideConfig($dashboard_id, $uid)
|
||||
{
|
||||
$res_userconfig = $this->_ci->DashboardOverrideModel->getOverride($dashboard_id, $uid);
|
||||
|
||||
@@ -124,7 +134,7 @@ class DashboardLib
|
||||
$emptyoverride = new stdClass();
|
||||
$emptyoverride->dashboard_id = $dashboard->dashboard_id;
|
||||
$emptyoverride->uid = $uid;
|
||||
$emptyoverride->override = '{"' . self::USEROVERRIDE_SECTION . '": {"widgets":{}}, "custom": { "widgets" : {}}}';
|
||||
$emptyoverride->override = '[]';
|
||||
|
||||
return $emptyoverride;
|
||||
}
|
||||
@@ -143,8 +153,7 @@ class DashboardLib
|
||||
$emptypreset = new stdClass();
|
||||
$emptypreset->dashboard_id = $dashboard->dashboard_id;
|
||||
$emptypreset->funktion_kurzbz = $funktion_kurzbz;
|
||||
$section = ($funktion_kurzbz !== null) ? $funktion_kurzbz : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
|
||||
$emptypreset->preset = '{"' . $section . '": { "widgets" : {}},"custom": { "widgets" : {}}}';
|
||||
$emptypreset->preset = '[]';
|
||||
|
||||
return $emptypreset;
|
||||
}
|
||||
@@ -209,44 +218,4 @@ class DashboardLib
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function addWidgetsToWidgets(&$widgets, $dashboard_kurzbz, $section, $addwigets)
|
||||
{
|
||||
foreach ($addwigets as $widget)
|
||||
{
|
||||
if(!isset($widget['widgetid']))
|
||||
{
|
||||
$widget['widgetid'] = $this->generateWidgetId($dashboard_kurzbz);
|
||||
}
|
||||
$this->addWidgetToWidgets($widgets, $section, $widget, $widget['widgetid']);
|
||||
}
|
||||
}
|
||||
|
||||
public function addWidgetToWidgets(&$widgets, $section, $widget, $widgetid)
|
||||
{
|
||||
$section = ($section !== null) ? $section : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
|
||||
if (!isset($widgets[$section]) || !isset($widgets[$section]["widgets"]) || !is_array($widgets[$section]))
|
||||
{
|
||||
$widgets[$section] = array();
|
||||
$widgets[$section]["widgets"] = array();
|
||||
}
|
||||
|
||||
$widgets[$section]["widgets"][$widgetid] = $widget;
|
||||
}
|
||||
|
||||
public function removeWidgetFromWidgets(&$widgets, $section, $widgetid)
|
||||
{
|
||||
$section = ($section !== null) ? $section : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL;
|
||||
if (isset($widgets[$section]) && isset($widgets[$section]["widgets"][$widgetid]))
|
||||
{
|
||||
unset($widgets[$section]["widgets"][$widgetid]);
|
||||
if(empty($widgets[$section]["widgets"]) && $section !== self::USEROVERRIDE_SECTION) {
|
||||
unset($widgets[$section]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,363 @@
|
||||
<?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');
|
||||
|
||||
/**
|
||||
* This generates a list of students and or prestudents used for Studierendenverwaltung
|
||||
*/
|
||||
class StudentListLib
|
||||
{
|
||||
private $_ci; // Code igniter instance
|
||||
|
||||
private $_allowedStgs = [];
|
||||
private $_selects = [];
|
||||
private $_joins = [];
|
||||
|
||||
/**
|
||||
* Gets the CI instance, loads model and prepares default values
|
||||
*
|
||||
* @param array $params
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($params = null)
|
||||
{
|
||||
$this->_ci =& get_instance(); // get code igniter instance
|
||||
|
||||
$this->_ci->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
if (isset($params['allowedStgs']))
|
||||
$this->_allowedStgs = $params['allowedStgs'];
|
||||
|
||||
// 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');
|
||||
$this->addSelect('wahlname');
|
||||
$this->addSelect('vornamen');
|
||||
$this->addSelect('titelpost');
|
||||
$this->addSelect('ersatzkennzeichen');
|
||||
$this->addSelect('gebdatum');
|
||||
$this->addSelect('geschlecht');
|
||||
$this->addSelect('foto');
|
||||
$this->addSelect('foto_sperre');
|
||||
$this->addSelect('v.semester');
|
||||
$this->addSelect('v.verband');
|
||||
$this->addSelect('v.gruppe');
|
||||
$this->addSelect("statusofsemester"); // Will be replaced later
|
||||
$this->addSelect('UPPER(stg.typ || stg.kurzbz) AS studiengang');
|
||||
$this->addSelect('tbl_prestudent.studiengang_kz');
|
||||
$this->addSelect('stg.bezeichnung AS stg_bezeichnung');
|
||||
$this->addSelect("s.matrikelnr");
|
||||
$this->addSelect('p.person_id');
|
||||
$this->addSelect('pls.status_kurzbz AS status');
|
||||
$this->addSelect('pls.datum AS status_datum');
|
||||
$this->addSelect('pls.bestaetigtam AS status_bestaetigung');
|
||||
$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
|
||||
);
|
||||
$this->addSelect("
|
||||
CASE WHEN b.uid IS NOT NULL AND b.uid<>''
|
||||
THEN CONCAT(b.uid, '@', " . $this->_ci->PrestudentModel->escape(DOMAIN) . ")
|
||||
ELSE '' END AS mail_intern", false);
|
||||
$this->addSelect('p.anmerkung AS anmerkungen');
|
||||
$this->addSelect('tbl_prestudent.anmerkung');
|
||||
$this->addSelect('pls.orgform_kurzbz');
|
||||
$this->addSelect('aufmerksamdurch_kurzbz');
|
||||
$this->addSelect(
|
||||
"(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=ps.prestudent_id) AS punkte",
|
||||
false
|
||||
);
|
||||
$this->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
|
||||
$this->addSelect('tbl_prestudent.dual');
|
||||
$this->addSelect('p.matr_nr');
|
||||
$this->addSelect('sp.bezeichnung AS studienplan_bezeichnung');
|
||||
$this->addSelect('tbl_prestudent.prestudent_id');
|
||||
$this->addSelect("(
|
||||
SELECT count(*)
|
||||
FROM (
|
||||
SELECT *, public.get_rolle_prestudent(pss.prestudent_id, NULL) AS laststatus
|
||||
FROM public.tbl_prestudent pss
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
WHERE person_id = p.person_id
|
||||
AND studiensemester_kurzbz = (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = tbl_prestudent.prestudent_id
|
||||
AND status_kurzbz = 'Interessent'
|
||||
LIMIT 1
|
||||
)
|
||||
AND status_kurzbz = 'Interessent'
|
||||
) prest
|
||||
WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent')
|
||||
AND priorisierung <= tbl_prestudent.priorisierung
|
||||
) || ' (' || COALESCE(tbl_prestudent.priorisierung::text, ' '::text) || ')' AS priorisierung_relativ", false); // TODO(chris): overwrite in fetchStudents
|
||||
$this->addSelect('mentor');
|
||||
$this->addSelect('b.aktiv AS bnaktiv');
|
||||
$this->addSelect('unruly');
|
||||
|
||||
// Add default JOINs
|
||||
$this->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
|
||||
$this->addJoin('public.tbl_person p', 'person_id');
|
||||
$this->addJoin('public.tbl_student s', 'prestudent_id', 'LEFT'); // TODO(chris): overwrite in fetchStudents
|
||||
$this->addJoin('public.tbl_prestudentstatus pls', '
|
||||
pls.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL)
|
||||
AND pls.prestudent_id=tbl_prestudent.prestudent_id
|
||||
AND pls.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, NULL)
|
||||
AND pls.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_studienplan sp', 'studienplan_id', 'LEFT');
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* Adds a SELECT statement to the query.
|
||||
*
|
||||
* @param string|array $select
|
||||
* @param boolean $escape (optional)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addSelect($select, $escape = true)
|
||||
{
|
||||
if (is_array($select)) {
|
||||
foreach ($select as $s)
|
||||
$this->addSelect($s, $escape);
|
||||
return;
|
||||
}
|
||||
$alias = $this->getAliasFromSelect($select);
|
||||
$this->_selects[$alias] = [$select, $escape];
|
||||
}
|
||||
|
||||
/**
|
||||
* Joins a table to the query.
|
||||
*
|
||||
* @param string $table
|
||||
* @param string $cond
|
||||
* @param string $type (optional)
|
||||
* @param string $position (optional)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addJoin($table, $cond, $type = '', $position = 'end')
|
||||
{
|
||||
$alias = $this->getAliasFromTable($table);
|
||||
|
||||
if ($position == 'end') {
|
||||
return $this->_joins[$alias] = [$table, $cond, $type];
|
||||
}
|
||||
|
||||
if ($position == 'start') {
|
||||
return $this->_joins = [$alias => [$table, $cond, $type]] + $this->_joins;
|
||||
}
|
||||
|
||||
if (substr($position, 0, 7) == 'before_') {
|
||||
$ref = substr($position, 7);
|
||||
$index = 0;
|
||||
} elseif (substr($position, 0, 6) == 'after_') {
|
||||
$ref = substr($position, 6);
|
||||
$index = 1;
|
||||
} else {
|
||||
return $this->addJoin($table, $cond, $type);
|
||||
}
|
||||
if (!isset($this->_joins[$ref]))
|
||||
return $this->addJoin($table, $cond, $type);
|
||||
|
||||
$key_indeces = array_flip(array_keys($this->_joins));
|
||||
$index += $key_indeces[$ref];
|
||||
|
||||
if (!$index)
|
||||
return $this->addJoin($table, $cond, $type, 'start');
|
||||
|
||||
$front_part = array_slice($this->_joins, 0, $index, true);
|
||||
$back_part = array_slice($this->_joins, $index, null, true);
|
||||
|
||||
if (isset($front_part[$alias])) {
|
||||
unset($front_part[$alias]);
|
||||
}
|
||||
|
||||
$this->_joins = $front_part + [$alias => [$table, $cond, $type]] + $back_part;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a WHERE clause to the query.
|
||||
*
|
||||
* @param string|array $key
|
||||
* @param string|array $value
|
||||
* @param boolean $escape
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addWhere($key, $value = null, $escape = true)
|
||||
{
|
||||
if (!is_array($key) && is_array($value)) {
|
||||
$this->_ci->PrestudentModel->db->where_in($key, $value, $escape);
|
||||
} else {
|
||||
$this->_ci->PrestudentModel->db->where($key, $value, $escape);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a OR WHERE clause to the query.
|
||||
*
|
||||
* @param string|array $key
|
||||
* @param string|array $value
|
||||
* @param boolean $escape
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addOrWhere($key, $value = null, $escape = true)
|
||||
{
|
||||
if (!is_array($key) && is_array($value)) {
|
||||
$this->_ci->PrestudentModel->db->or_where_in($key, $value, $escape);
|
||||
} else {
|
||||
$this->_ci->PrestudentModel->db->or_where($key, $value, $escape);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the query and executes it.
|
||||
*
|
||||
* @param string|null $studiensemester_kurzbz
|
||||
*
|
||||
* @return stdClass result of the query
|
||||
*/
|
||||
public function execute($studiensemester_kurzbz)
|
||||
{
|
||||
$stdsemEsc = $studiensemester_kurzbz ? $this->_ci->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL';
|
||||
|
||||
|
||||
$this->addSelect(
|
||||
"public.get_rolle_prestudent(
|
||||
public.tbl_prestudent.prestudent_id,
|
||||
" . $this->_ci->PrestudentModel->escape($studiensemester_kurzbz) . "
|
||||
) AS statusofsemester"
|
||||
);
|
||||
$this->addJoin(
|
||||
'public.tbl_studentlehrverband v',
|
||||
'v.student_uid=s.student_uid AND v.studiensemester_kurzbz' . ($studiensemester_kurzbz ? '=' . $stdsemEsc : ' IS NULL'),
|
||||
'LEFT'
|
||||
);
|
||||
$this->addJoin(
|
||||
'public.tbl_prestudentstatus ps',
|
||||
'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
|
||||
AND ps.prestudent_id=tbl_prestudent.prestudent_id
|
||||
AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
|
||||
AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')
|
||||
',
|
||||
'LEFT'
|
||||
);
|
||||
|
||||
$this->addWhere('tbl_prestudent.studiengang_kz', $this->_allowedStgs);
|
||||
|
||||
foreach ($this->_joins as $join)
|
||||
$this->_ci->PrestudentModel->addJoin($join[0], $join[1], $join[2]);
|
||||
|
||||
foreach ($this->_selects as $select)
|
||||
$this->_ci->PrestudentModel->addSelect($select[0], $select[1]);
|
||||
|
||||
$this->_ci->PrestudentModel->addOrder('nachname');
|
||||
$this->_ci->PrestudentModel->addOrder('vorname');
|
||||
|
||||
return $this->_ci->PrestudentModel->load();
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Protected methods
|
||||
|
||||
/**
|
||||
* Get alias of a table or select statement
|
||||
*
|
||||
* @param string $select
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
final protected function getAliasFromSelect($select)
|
||||
{
|
||||
if (strpos($select, ' ') !== false) {
|
||||
return trim(strrchr($select, ' '));
|
||||
}
|
||||
|
||||
if (strpos($select, '.') !== false) {
|
||||
return substr(strrchr($select, '.'), 1);
|
||||
}
|
||||
|
||||
return $select;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get alias of a table or select statement
|
||||
*
|
||||
* @param string|array $table
|
||||
*
|
||||
* @return string|array
|
||||
*/
|
||||
final protected function getAliasFromTable($table)
|
||||
{
|
||||
if (strpos($table, ' ') !== false) {
|
||||
return trim(strrchr($table, ' '));
|
||||
}
|
||||
|
||||
return $table;
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,9 @@ abstract class AbstractBestandteil implements IValidation
|
||||
|
||||
if( is_bool($new_value) && ($old_value !== $new_value) ) {
|
||||
$this->modifiedcolumns[$columnname] = $columnname;
|
||||
} else if($old_value != $new_value) {
|
||||
} else if(is_null($old_value) xor is_null($new_value)) {
|
||||
$this->modifiedcolumns[$columnname] = $columnname;
|
||||
} else if($old_value != $new_value) {
|
||||
$this->modifiedcolumns[$columnname] = $columnname;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,19 +137,25 @@ EOTXT;
|
||||
return parent::__toString() . $txt;
|
||||
}
|
||||
|
||||
/* public function validate()
|
||||
public function validate()
|
||||
{
|
||||
if( !(filter_var($this->tage, FILTER_VALIDATE_INT,
|
||||
array(
|
||||
'options' => array(
|
||||
'min_range' => 1,
|
||||
'max_range' => 50
|
||||
)
|
||||
)
|
||||
)) ) {
|
||||
$this->validationerrors[] = 'Urlaubsanspruch muss eine Tagesanzahl im Bereich 1 bis 50 sein.';
|
||||
$value = $this->vordienstzeit;
|
||||
|
||||
if ($value === null || $value === '') {
|
||||
$result = null; // allow null value
|
||||
} else {
|
||||
$result = filter_var($value, FILTER_VALIDATE_INT, [
|
||||
'options' => [
|
||||
'min_range' => 0,
|
||||
'max_range' => 100
|
||||
]
|
||||
]);
|
||||
|
||||
if ($result === false) {
|
||||
$this->validationerrors[] = 'Vordienstjahre muss eine ganze Zahl (0 bis 100) enthalten oder leer sein.';
|
||||
}
|
||||
}
|
||||
|
||||
return parent::validate();
|
||||
} */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,9 +234,9 @@ class Content_model extends DB_Model
|
||||
FROM
|
||||
campus.tbl_content c1
|
||||
LEFT JOIN
|
||||
campus.tbl_contentsprache s1 ON c1.content_id=s1.content_id AND s1.sprache=?
|
||||
campus.tbl_contentsprache s1 ON c1.content_id=s1.content_id AND s1.sprache=? AND sichtbar=true
|
||||
WHERE
|
||||
sichtbar=true
|
||||
c1.aktiv = true
|
||||
) s2
|
||||
LEFT JOIN
|
||||
campus.tbl_contentsprache s3 USING(content_id, sprache)
|
||||
@@ -277,7 +277,7 @@ class Content_model extends DB_Model
|
||||
JOIN
|
||||
campus.tbl_contentsprache s USING(contentsprache_id)
|
||||
LEFT JOIN
|
||||
campus.tbl_contentchild k ON(m.content_id=k.content_id)
|
||||
campus.tbl_contentchild k ON(m.content_id=k.content_id) and c.aktiv = true
|
||||
WHERE EXISTS (
|
||||
SELECT 1
|
||||
FROM campus.tbl_contentgruppe
|
||||
|
||||
@@ -11,8 +11,4 @@ class Bookmark_model extends DB_Model
|
||||
$this->dbTable = 'dashboard.tbl_bookmark';
|
||||
$this->pk = 'bookmark_id';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -11,15 +11,4 @@ class Dashboard_model extends DB_Model
|
||||
$this->dbTable = 'dashboard.tbl_dashboard';
|
||||
$this->pk = 'dashboard_id';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Dashboard by kurzbz.
|
||||
* @param string dashboard_kurzbz
|
||||
* @return array
|
||||
*/
|
||||
public function getDashboardByKurzbz($dashboard_kurzbz)
|
||||
{
|
||||
return $this->loadWhere(array('dashboard_kurzbz' => $dashboard_kurzbz));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +187,10 @@ 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.insertvon,
|
||||
campus.tbl_paabgabe.insertamum,
|
||||
campus.tbl_paabgabe.updatevon,
|
||||
campus.tbl_paabgabe.updateamum
|
||||
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
|
||||
WHERE campus.tbl_paabgabe.projektarbeit_id = ?
|
||||
ORDER BY campus.tbl_paabgabe.datum";
|
||||
@@ -207,7 +210,18 @@ 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.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
|
||||
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
|
||||
WHERE campus.tbl_paabgabe.projektarbeit_id IN ?
|
||||
ORDER BY campus.tbl_paabgabe.datum";
|
||||
@@ -240,7 +254,8 @@ 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 projektarbeit_id = ?
|
||||
AND lehre.tbl_projektbetreuer.betreuerart_kurzbz = ANY('{Begutachter, Betreuer, Erstbetreuer,Erstbegutachter,Senatsvorsitz}')";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, [$projektarbeit_id]);
|
||||
}
|
||||
@@ -294,34 +309,142 @@ 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($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 ')."
|
||||
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 ')."
|
||||
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($uid));
|
||||
return $this->execReadOnlyQuery($qry, array($person_id, $person_id));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -341,176 +464,257 @@ class Projektarbeit_model extends DB_Model
|
||||
|
||||
|
||||
public function getProjektarbeitenForStudiengang($studiengang_kz, $benotet) {
|
||||
$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 = ?";
|
||||
$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
|
||||
)
|
||||
|
||||
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
|
||||
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
|
||||
) 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));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -149,6 +149,7 @@ class Studierendenantrag_model extends DB_Model
|
||||
$this->addSelect($this->dbTable . '.grund AS grund');
|
||||
$this->addSelect('s.studierendenantrag_statustyp_kurzbz status');
|
||||
$this->addSelect('s.insertvon status_insertvon');
|
||||
$this->addSelect('s.grund AS status_grund');
|
||||
$this->addSelect('t.bezeichnung[(' . $lang . ')] statustyp');
|
||||
$this->addSelect('p.unruly AS unruly');
|
||||
$this->addSelect($this->dbTable . '.insertamum AS insertamum');
|
||||
@@ -269,6 +270,7 @@ class Studierendenantrag_model extends DB_Model
|
||||
$this->addSelect($this->dbTable . '.grund');
|
||||
$this->addSelect($this->dbTable . '.dms_id');
|
||||
$this->addSelect('s.insertvon AS status_insertvon');
|
||||
$this->addSelect('s.grund AS status_grund');
|
||||
$this->addSelect(
|
||||
"(SELECT count(1) FROM campus.tbl_studierendenantrag_status WHERE studierendenantrag_id = " .
|
||||
$this->dbTable .
|
||||
|
||||
@@ -50,7 +50,7 @@ class Studierendenantragstatus_model extends DB_Model
|
||||
$this->addSelect('bezeichnung[(' . $lang . ')] AS typ');
|
||||
|
||||
$this->addJoin('campus.tbl_studierendenantrag_statustyp', 'studierendenantrag_statustyp_kurzbz');
|
||||
|
||||
$this->addOrder($this->dbTable. '.insertamum', 'DESC');
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ class Reservierung_model extends DB_Model
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getReservierungen($start_date, $end_date, $ort_kurzbz = null)
|
||||
public function getReservierungen($start_date, $end_date, $ort_kurzbz = null, $uid = null)
|
||||
{
|
||||
|
||||
$lvplan_reservierungen_query="SELECT r.* , stund.beginn, stund.ende,
|
||||
|
||||
$lvplan_reservierungen_query = "SELECT r.* , stund.beginn, stund.ende,
|
||||
CASE
|
||||
WHEN r.gruppe_kurzbz IS NOT NULL THEN r.gruppe_kurzbz
|
||||
ELSE CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',COALESCE(CAST(r.semester AS varchar),'/'),COALESCE(CAST(r.verband AS varchar),'/'))
|
||||
@@ -35,7 +35,7 @@ class Reservierung_model extends DB_Model
|
||||
LEFT JOIN public.tbl_studiensemester ss2 ON slv.studiensemester_kurzbz = ss2.studiensemester_kurzbz AND ss2.start <=r.datum AND ss2.ende >= r.datum
|
||||
WHERE datum >= ? AND datum <= ? AND (ss1.studiensemester_kurzbz IS NOT NULL
|
||||
OR ss2.studiensemester_kurzbz IS NOT NULL)";
|
||||
|
||||
|
||||
$raum_reservierungen_query = "SELECT res.*, beginn, ende,
|
||||
CASE
|
||||
WHEN res.gruppe_kurzbz IS NOT NULL THEN res.gruppe_kurzbz
|
||||
@@ -46,9 +46,9 @@ class Reservierung_model extends DB_Model
|
||||
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde
|
||||
WHERE res.ort_kurzbz = ? AND datum >= ? AND datum <= ?";
|
||||
|
||||
$subquery = is_null($ort_kurzbz)? $lvplan_reservierungen_query:$raum_reservierungen_query;
|
||||
|
||||
$query_result= $this->execReadOnlyQuery("
|
||||
$subquery = is_null($ort_kurzbz) ? $lvplan_reservierungen_query : $raum_reservierungen_query;
|
||||
|
||||
$query_result = $this->execReadOnlyQuery("
|
||||
SELECT
|
||||
'reservierung' as type, beginn, ende, datum,
|
||||
COALESCE(titel, beschreibung) as topic,
|
||||
@@ -59,15 +59,15 @@ class Reservierung_model extends DB_Model
|
||||
|
||||
FROM
|
||||
(
|
||||
". $subquery ."
|
||||
" . $subquery . "
|
||||
) AS subquery
|
||||
|
||||
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
|
||||
|
||||
ORDER BY datum, beginn
|
||||
", is_null($ort_kurzbz) ?[getAuthUID(), getAuthUID(),$start_date,$end_date]: [$ort_kurzbz, $start_date, $end_date]);
|
||||
", is_null($ort_kurzbz) ? [$uid ?? getAuthUID(), $uid ?? getAuthUID(), $start_date, $end_date] : [$ort_kurzbz, $start_date, $end_date]);
|
||||
|
||||
|
||||
|
||||
return $query_result;
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ class Reservierung_model extends DB_Model
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getReservierungenMitarbeiter($start_date, $end_date)
|
||||
public function getReservierungenMitarbeiter($start_date, $end_date, $uid = null)
|
||||
{
|
||||
|
||||
$raum_reservierungen_query = "SELECT res.*, beginn, ende,
|
||||
@@ -91,8 +91,8 @@ class Reservierung_model extends DB_Model
|
||||
|
||||
$subquery = $raum_reservierungen_query;
|
||||
|
||||
|
||||
$query_result= $this->execReadOnlyQuery("
|
||||
|
||||
$query_result = $this->execReadOnlyQuery("
|
||||
SELECT
|
||||
'reservierung' as type, beginn, ende, datum,
|
||||
COALESCE(titel, beschreibung) as topic,
|
||||
@@ -103,13 +103,13 @@ class Reservierung_model extends DB_Model
|
||||
|
||||
FROM
|
||||
(
|
||||
". $subquery ."
|
||||
" . $subquery . "
|
||||
) AS subquery
|
||||
|
||||
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
|
||||
|
||||
ORDER BY datum, beginn
|
||||
", [getAuthUID(), $start_date, $end_date]);
|
||||
", [$uid ?? getAuthUID(), $start_date, $end_date]);
|
||||
|
||||
|
||||
return $query_result;
|
||||
@@ -129,9 +129,9 @@ class Reservierung_model extends DB_Model
|
||||
$this->addJoin('public.tbl_studiensemester ss2', 'slv.studiensemester_kurzbz=ss2.studiensemester_kurzbz AND ss2.start<=r.datum AND ss2.ende>=r.datum', 'LEFT');
|
||||
$this->db->or_where('ss1.studiensemester_kurzbz IS NOT NULL', null, false);
|
||||
$this->db->or_where('ss2.studiensemester_kurzbz IS NOT NULL', null, false);
|
||||
|
||||
|
||||
$query = $this->db->get_compiled_select('campus.vw_reservierung r');
|
||||
|
||||
|
||||
return $this->execQuery($query, [$uid, $uid]);
|
||||
}
|
||||
|
||||
|
||||
@@ -388,6 +388,84 @@ class Stundenplan_model extends DB_Model
|
||||
|
||||
ORDER BY datum, beginn", [$start_date, $end_date, $ma_uid]);
|
||||
}
|
||||
|
||||
/**
|
||||
* queries Stundenplan and filters by studiengang, semester, verband gruppe
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function getStundenplanStudiengang($start_date, $end_date, $stg_kz, $sem, $verband, $gruppe) {
|
||||
|
||||
$qry_params = [$start_date, $end_date, $stg_kz];
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
'lehreinheit' as type, beginn, ende, datum,
|
||||
CONCAT(lehrfach,'-',lehrform) as topic,
|
||||
array_agg(DISTINCT lektor) as lektor,
|
||||
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
|
||||
string_agg(DISTINCT ort_kurzbz, '/') as ort_kurzbz,
|
||||
array_agg(DISTINCT lehreinheit_id) as lehreinheit_id,
|
||||
titel, lehrfach, lehrform, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
|
||||
FROM
|
||||
(
|
||||
SELECT unr,datum,beginn, ende,
|
||||
CASE
|
||||
WHEN sp.mitarbeiter_kurzbz IS NOT NULL THEN sp.mitarbeiter_kurzbz
|
||||
ELSE sp.lektor
|
||||
END as lektor,
|
||||
CASE
|
||||
WHEN gruppe_kurzbz IS NOT NULL THEN gruppe_kurzbz
|
||||
ELSE CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/'))
|
||||
END as gruppen_kuerzel,
|
||||
(SELECT bezeichnung
|
||||
FROM public.tbl_organisationseinheit
|
||||
WHERE oe_kurzbz IN(
|
||||
SELECT oe_kurzbz
|
||||
FROM lehre.tbl_lehrveranstaltung
|
||||
WHERE lehrveranstaltung_id = sp.lehrveranstaltung_id
|
||||
)) as organisationseinheit,
|
||||
sp.ort_kurzbz, sp.studiengang_kz, sp.titel,sp.lehreinheit_id,sp.lehrfach_id,sp.anmerkung,fix,lehrveranstaltung_id,stg_kurzbzlang,stg_bezeichnung,stg_typ,fachbereich_kurzbz,lehrfach,lehrfach_bez,farbe,lehrform,anmerkung_lehreinheit,gruppe, verband, semester,stg_kurzbz
|
||||
FROM (
|
||||
SELECT sp.*
|
||||
FROM lehre.vw_stundenplan sp
|
||||
WHERE
|
||||
sp.datum >= ?
|
||||
AND sp.datum <= ?
|
||||
) sp
|
||||
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = sp.stunde
|
||||
WHERE studiengang_kz = ? ";
|
||||
|
||||
if($sem != NULL)
|
||||
{
|
||||
$qry_params[] = $sem;
|
||||
$qry .= " AND (semester = ? OR semester IS NULL)";
|
||||
}
|
||||
if($verband != NULL)
|
||||
{
|
||||
$qry_params[] = $verband;
|
||||
$qry .= " AND (verband = ? OR verband IS NULL OR verband = '0' OR verband = '')";
|
||||
}
|
||||
if($gruppe != NULL)
|
||||
{
|
||||
$qry_params[] = $gruppe;
|
||||
$qry .= " AND (gruppe = ? OR gruppe IS NULL OR gruppe = '0' OR gruppe = '') ";
|
||||
}
|
||||
$qry.= " AND (
|
||||
gruppe_kurzbz is null OR EXISTS(
|
||||
SELECT 1
|
||||
FROM
|
||||
public.tbl_gruppe WHERE gruppe_kurzbz = sp.gruppe_kurzbz AND direktinskription = false
|
||||
)
|
||||
)";
|
||||
|
||||
$qry.= " ) as subquery
|
||||
|
||||
GROUP BY unr, datum, beginn, ende, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
|
||||
ORDER BY datum, beginn; ";
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $qry_params);
|
||||
}
|
||||
|
||||
/**
|
||||
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
|
||||
|
||||
@@ -26,22 +26,6 @@ class Extensions_model extends DB_Model
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function getInstalledExtensions()
|
||||
{
|
||||
$query = 'SELECT extension_id, e1.name, e1.version, description, license, url, core_version, dependencies, enabled
|
||||
FROM system.tbl_extensions e1
|
||||
INNER JOIN (
|
||||
SELECT name, MAX(version) AS version
|
||||
FROM system.tbl_extensions
|
||||
GROUP BY name) e2
|
||||
ON (e1.name = e2.name AND e1.version = e2.version)';
|
||||
|
||||
return $this->execQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -50,3 +34,4 @@ class Extensions_model extends DB_Model
|
||||
return $this->execQuery($sql);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,433 @@
|
||||
<?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
@@ -0,0 +1,141 @@
|
||||
<?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' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,388 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,76 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,220 @@
|
||||
<?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
@@ -0,0 +1,76 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,28 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,148 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,507 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,76 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,56 @@
|
||||
<?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' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,579 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,39 @@
|
||||
<?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' => '',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,340 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,603 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,365 @@
|
||||
<?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'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
<?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
@@ -0,0 +1,155 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,531 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,220 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,76 @@
|
||||
<?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',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,196 @@
|
||||
<?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
@@ -0,0 +1,339 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'benutzerSchonZugewiesen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Benutzer ist bereits der Gruppe zugewiesen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'User is already assigned to the group',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'kurzbezeichnung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kurzbezeichnung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Short description',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'beschreibung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Beschreibung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Description',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'zuweisenloeschen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zuweisen/Entfernen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Assign/Remove',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'benutzergruppe',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Benutzergruppe',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'User group',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'benutzerHinzufuegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Benutzer hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add user',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'aktiv',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'aktiv',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'active',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'nichtZumEditierenDerGruppeBerechtigt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nicht zum Editieren der Gruppe berechtigt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'No authorization for editing the group',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'automatisch_generiert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'automatisch generiert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'automatically generated',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'error_deleteGeneratedGroups',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Automatisch generierte Gruppenzuordnungen können nicht gelöscht werden.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Automatically generated group assignments cannot be deleted.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'special_groups',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Spezialgruppen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Special groups',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'add_group',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gruppe hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add group',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'groups_added',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => '{n} Gruppen hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Added {n} groups',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'gruppenmanagement',
|
||||
'phrase' => 'error_alreadyInGroup',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Student {uid} ist bereits im {studiensemester_kurzbz} dieser Gruppe zugeteilt. Entfernen Sie vorher diese Zuteilung.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Student {uid} is already assigned to this group in {studiensemester_kurzbz}. Remove this assignment beforehand.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'header',
|
||||
'phrase' => 'error_fotoupload',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehler beim Speichern des Fotos',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Error saving photo',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'header',
|
||||
'phrase' => 'alert_chooseFoto',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte zuerst ein Bild auswählen!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please select an image first!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
,
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'header',
|
||||
'phrase' => 'error_noPhoto',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kein Bild empfangen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'No picture received',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'jointstudies',
|
||||
'phrase' => 'gemeinsamesStudium',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gemeinsames Studium',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Joint Study',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'jointstudies',
|
||||
'phrase' => 'gemeinsameStudien',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gemeinsame Studien',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Joint Studies',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'jointstudies',
|
||||
'phrase' => 'studienprogramm',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienprogramm',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Study Program',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'jointstudies',
|
||||
'phrase' => 'neuAnlegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gemeinsames Studium anlegen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add Joint Study',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'jointstudies',
|
||||
'phrase' => 'edit',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gemeinsames Studium bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit Joint Study',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,388 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'buchung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Buchung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Booking',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'buchungsdatum',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Buchungsdatum',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Booking date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'buchungstext',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Buchungstext',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Booking text',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'betrag',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betrag',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Amount',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'buchungstyp',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Buchungstyp',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Booking type',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'buchungsnr',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Buchungs Nummer',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Booking number',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'mahnspanne',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Mahnspanne',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Dunning margin',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'credit_points',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Credit Points',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Credit Points',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'reference',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zahlungsreferenz',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Payment reference',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'confirm_overwrite',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Es ist bereits eine Buchung vorhanden:',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'A booking already exists:',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'confirm_overwrite_1_add_pers',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'und einer weiteren Person.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'and one additional person.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'confirm_overwrite_x_add_pers',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'und {x} weiteren Personen.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'and {x} additional persons.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'confirm_overwrite_proceed',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Trotzdem fortfahren?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Proceed anyway?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'error_missing',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Buchung #{buchungsnr} existiert nicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Booking #{buchungsnr} does not exist',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'error_counter_level',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gegenbuchungen koennen nur auf die obersten Buchungen getaetigt werden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Offsetting bookings can only be made on the top bookings',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'konto',
|
||||
'phrase' => 'error_delete_level',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte zuerst die zugeordneten Buchungen löschen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please delete the assigned bookings first',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
$phrases = array(
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'lvinfo',
|
||||
'phrase' => 'lehrveranstaltungsinformationen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehrveranstaltungsinformationen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Course Information',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'lvinfo',
|
||||
'phrase' => 'Moodleinformationen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Moodle Informationen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Moodle Information',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'lvinfo',
|
||||
'phrase' => 'actionname',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Aktion',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Action',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'lvinfo',
|
||||
'phrase' => 'overdue',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'überfällig',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'overdue',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'lvinfo',
|
||||
'phrase' => 'overdueEvent',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Event ist überfällig',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Event is overdue',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
array (
|
||||
'app' => 'core',
|
||||
'category' => 'lvinfo',
|
||||
'phrase' => 'moodleLink',
|
||||
'insertvon' => 'system',
|
||||
'phrases' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'sprache' => 'German',
|
||||
'text' => 'Moodle Link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'sprache' => 'English',
|
||||
'text' => 'Moodle link',
|
||||
'description' => '',
|
||||
'insertvon' => 'system',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user