first commit

This commit is contained in:
salam committed 2026-10-17 11:51:19 +02:00
commit 7cd423a875
2443 files changed
+169189

No files matched your search

+67
View File
@@ -0,0 +1,67 @@
{
"repositories": {
"local": {
"type": "path",
"url": "packages/*"
},
"0": {
"type": "composer",
"url": "https://composer.typo3.org/"
}
},
"name": "typo3/cms-base-distribution",
"description": "TYPO3 CMS Base Distribution",
"license": "GPL-2.0-or-later",
"config": {
"platform": {
"php": "7.4"
},
"allow-plugins": {
"typo3/class-alias-loader": true,
"typo3/cms-composer-installers": true
}
},
"require": {
"typo3/cms-about": "^10.4",
"typo3/cms-adminpanel": "^10.4",
"typo3/cms-belog": "^10.4",
"typo3/cms-beuser": "^10.4",
"typo3/cms-felogin": "^10.4",
"typo3/cms-fluid-styled-content": "^10.4",
"typo3/cms-form": "^10.4",
"typo3/cms-impexp": "^10.4",
"typo3/cms-info": "^10.4",
"typo3/cms-redirects": "^10.4",
"typo3/cms-reports": "^10.4",
"typo3/cms-rte-ckeditor": "^10.4",
"typo3/cms-setup": "^10.4",
"typo3/cms-sys-note": "^10.4",
"typo3/cms-t3editor": "^10.4",
"typo3/cms-tstemplate": "^10.4",
"typo3/cms-viewpage": "^10.4",
"mpdf/mpdf": "^8.0",
"bk2k/bootstrap-package": "^11.0",
"catfan/medoo": "^1.7",
"hermanntelser/zuladungsliste": "^10.4",
"helhum/typo3-console": "^6.6",
"typo3/cms-backend": "^10.4",
"typo3/cms-core": "^10.4",
"typo3/cms-extbase": "^10.4",
"typo3/cms-extensionmanager": "^10.4",
"typo3/cms-filelist": "^10.4",
"typo3/cms-fluid": "^10.4",
"typo3/cms-frontend": "^10.4",
"typo3/cms-install": "^10.4",
"typo3/cms-recordlist": "^10.4",
"typo3/cms-scheduler": "^10.4",
"typo3/cms-workspaces": "^10.4",
"neitanod/forceutf8": "^2.0",
"nesbot/carbon": "^2.73"
},
"scripts": {
"typo3-cms-scripts": [],
"post-autoload-dump": [
"@typo3-cms-scripts"
]
}
}
Generated
+8102
View File
File diff suppressed because it is too large. Load diff
+26
View File
@@ -0,0 +1,26 @@
base: /app
errorHandling:
-
errorCode: 403
errorHandler: Page
errorContentSource: 't3://page?uid=1'
-
errorCode: 404
errorHandler: Page
errorContentSource: 't3://page?uid=1'
languages:
-
title: Deutsch
enabled: true
base: /
typo3Language: de
locale: de_DE.UTF-8
iso-639-1: de
navigationTitle: ''
hreflang: de-DE
direction: ''
flag: global
languageId: 0
websiteTitle: ''
rootPageId: 50
websiteTitle: zuladungsliste.at
+26
View File
@@ -0,0 +1,26 @@
base: /
errorHandling:
-
errorCode: 403
errorHandler: Page
errorContentSource: 't3://page?uid=1'
-
errorCode: 404
errorHandler: Page
errorContentSource: 't3://page?uid=1'
languages:
-
title: Deutsch
enabled: true
base: '/'
typo3Language: de
locale: de_DE.UTF-8
iso-639-1: de
navigationTitle: ''
hreflang: de-DE
direction: ''
flag: global
languageId: 0
websiteTitle: ''
rootPageId: 1
websiteTitle: 'zuladungsliste.at'
+626
View File
@@ -0,0 +1,626 @@
{
"storeLogMessages": true,
"enableLogging": true,
"reverseOrder": false,
"checkSimilar": true,
"checkStoredRecords": true,
"checkStoredRecords_loose": true,
"deleteTree": false,
"neverHideAtCopy": false,
"isImporting": false,
"dontProcessTransformations": false,
"bypassWorkspaceRestrictions": false,
"bypassAccessCheckForRecords": false,
"copyWhichTables": "*",
"copyTree": 0,
"defaultValues": {
"sys_note": {
"author": "",
"email": ""
}
},
"overrideValues": [],
"data_disableFields": [],
"suggestedInsertUids": [],
"callBackObj": null,
"autoVersionIdMap": [],
"substNEWwithIDs": [],
"substNEWwithIDs_table": [],
"newRelatedIDs": [],
"copyMappingArray_merged": [],
"errorLog": [],
"pagetreeRefreshFieldsFromPages": [
"pid",
"sorting",
"deleted",
"hidden",
"title",
"doktype",
"is_siteroot",
"fe_group",
"nav_hide",
"nav_title",
"module",
"starttime",
"endtime",
"content_from_pid",
"extendToSubpages"
],
"pagetreeNeedsRefresh": false,
"BE_USER": {
"usergroup_column": "usergroup",
"usergroup_table": "be_groups",
"groupData": {
"filemounts": [],
"webmounts": "0",
"pagetypes_select": "",
"tables_select": "",
"tables_modify": "",
"non_exclude_fields": "",
"explicit_allowdeny": "",
"allowed_languages": "",
"custom_options": "",
"modules": "",
"available_widgets": "",
"file_permissions": "",
"workspace_perms": 1
},
"userGroups": [],
"userGroupsUID": [],
"groupList": "",
"workspace": 0,
"workspaceRec": {
"uid": 0,
"_ACCESS": "admin"
},
"dataLists": {
"webmount_list": "0,",
"filemount_list": null,
"file_permissions": null,
"modList": null,
"tables_select": "",
"tables_modify": "",
"pagetypes_select": "",
"non_exclude_fields": "",
"explicit_allowdeny": "",
"allowed_languages": "",
"workspace_perms": 1,
"available_widgets": "",
"custom_options": ""
},
"includeGroupArray": [],
"errorMsg": "",
"user_table": "be_users",
"username_column": "username",
"userident_column": "password",
"userid_column": "uid",
"lastLogin_column": "lastlogin",
"enablecolumns": {
"rootLevel": 1,
"deleted": "deleted",
"disabled": "disable",
"starttime": "starttime",
"endtime": "endtime"
},
"formfield_uname": "username",
"formfield_uident": "userident",
"formfield_status": "login_status",
"writeStdLog": true,
"writeAttemptLog": true,
"sessionTimeout": 28800,
"firstMainGroup": 0,
"uc": {
"interfaceSetup": "backend",
"moduleData": {
"web_layout": {
"function": "1",
"language": "0"
},
"web_ts": {
"function": "TYPO3\\CMS\\Tstemplate\\Controller\\TypoScriptTemplateConstantEditorModuleFunctionController",
"constant_editor_cat": "frontend login",
"ts_browser_type": "const",
"ts_browser_const": "0",
"ts_browser_fixedLgd": "1",
"ts_browser_showComments": "1",
"tsbrowser_depthKeys_const": {
"config": 1,
"plugin": 1
},
"tsbrowser_depthKeys_setup": {
"plugin.tx_zuladungsliste_zuladungsliste": 1,
"plugin.tx_zuladungsliste": 1,
"plugin.tx_zuladungsliste_zuladungsliste.view": 1,
"plugin.tx_zuladungsliste_zuladungsliste.view.templateRootPaths": 1,
"plugin.tx_zuladungsliste_zuladungsliste.persistence": 1,
"lib": 1
}
},
"FormEngine": [
{
"ef16fd1dd21cee72b942496ea114ff2b": [
"Ivanova Ralitza [T] [4.00]",
{
"edit": {
"fe_users": {
"1295": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Bfe_users%5D%5B1295%5D=edit",
{
"table": "fe_users",
"uid": 1295,
"pid": 41,
"cmd": "edit",
"deleteAccess": true
}
]
},
"ef16fd1dd21cee72b942496ea114ff2b"
],
"TYPO3\\CMS\\Backend\\Utility\\BackendUtility::getUpdateSignal": [],
"opendocs::recent": {
"a21d6c7edc1b15cb689c935c0722c396": [
"Tirol 26. M\u00e4rz 2007",
{
"edit": {
"tx_zuladungsliste_domain_model_sektionstage": {
"1": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Btx_zuladungsliste_domain_model_sektionstage%5D%5B1%5D=edit",
{
"table": "tx_zuladungsliste_domain_model_sektionstage",
"uid": 1,
"pid": 55,
"cmd": "edit",
"deleteAccess": true
}
],
"ee4c99616f49d31dbc82d25c2d3c9a1c": [
"Tirol 25. April 2022",
{
"edit": {
"tx_zuladungsliste_domain_model_sektionstage": {
"5": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Btx_zuladungsliste_domain_model_sektionstage%5D%5B5%5D=edit",
{
"table": "tx_zuladungsliste_domain_model_sektionstage",
"uid": 5,
"pid": 55,
"cmd": "edit",
"deleteAccess": true
}
],
"5c47f13e0902dfd8209b90b0d7723150": [
"SCHAFFERER Architektur und Projektmanagement ZT-GmbH [T] [10.50]",
{
"edit": {
"fe_users": {
"1039": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Bfe_users%5D%5B1039%5D=edit",
{
"table": "fe_users",
"uid": 1039,
"pid": 41,
"cmd": "edit",
"deleteAccess": true
}
],
"96ec1f943e21ef2c82b60f01603ad514": [
"ma.lo ZT GmbH [T] [11.20]",
{
"edit": {
"fe_users": {
"278": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Bfe_users%5D%5B278%5D=edit",
{
"table": "fe_users",
"uid": 278,
"pid": 41,
"cmd": "edit",
"deleteAccess": true
}
],
"a664a04ba99864562a82556d5959e654": [
"Off. WB Volksschule Neilreichgasse 126, 1100 Wien",
{
"edit": {
"tx_zuladungsliste_domain_model_wettbewerbe": {
"1328": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Btx_zuladungsliste_domain_model_wettbewerbe%5D%5B1328%5D=edit",
{
"table": "tx_zuladungsliste_domain_model_wettbewerbe",
"uid": 1328,
"pid": 38,
"cmd": "edit",
"deleteAccess": true
}
],
"6f8355db50b8ab6ede002da86e799ea9": [
"[T] Reich Christoph, Waltl Clemens [0.00]",
{
"edit": {
"fe_users": {
"1410": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Bfe_users%5D%5B1410%5D=edit",
{
"table": "fe_users",
"uid": 1410,
"pid": 41,
"cmd": "edit",
"deleteAccess": true
}
],
"e3c44f8049f1ccbd6f867f6a028f3451": [
"App",
{
"edit": {
"pages": {
"50": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Bpages%5D%5B50%5D=edit",
{
"table": "pages",
"uid": 50,
"pid": 0,
"cmd": "edit",
"deleteAccess": true
}
],
"2a0b9c6788d93d9fa28f19ce1513f16d": [
"Florian Lutz . Daniela Amann . Architekten, Zivilt [Tirol] [32.50]",
{
"edit": {
"fe_users": {
"12": "edit"
}
},
"defVals": null,
"overrideVals": null,
"columnsOnly": null,
"noView": null
},
"&edit%5Bfe_users%5D%5B12%5D=edit",
{
"table": "fe_users",
"uid": 12,
"pid": 41,
"cmd": "edit",
"deleteAccess": true
}
]
},
"web_list": {
"bigControlPanel": "1",
"clipBoard": "0"
},
"file_list": [],
"tx_beuser": "O:40:\"TYPO3\\CMS\\Beuser\\Domain\\Model\\ModuleData\":2:{s:9:\"\u0000*\u0000demand\";O:36:\"TYPO3\\CMS\\Beuser\\Domain\\Model\\Demand\":12:{s:11:\"\u0000*\u0000userName\";s:0:\"\";s:11:\"\u0000*\u0000userType\";i:0;s:9:\"\u0000*\u0000status\";i:0;s:9:\"\u0000*\u0000logins\";i:0;s:19:\"\u0000*\u0000backendUserGroup\";i:0;s:6:\"\u0000*\u0000uid\";N;s:16:\"\u0000*\u0000_localizedUid\";N;s:15:\"\u0000*\u0000_languageUid\";N;s:16:\"\u0000*\u0000_versionedUid\";N;s:6:\"\u0000*\u0000pid\";N;s:61:\"\u0000TYPO3\\CMS\\Extbase\\DomainObject\\AbstractDomainObject\u0000_isClone\";b:0;s:69:\"\u0000TYPO3\\CMS\\Extbase\\DomainObject\\AbstractDomainObject\u0000_cleanProperties\";a:0:{}}s:18:\"\u0000*\u0000compareUserList\";a:0:{}}",
"browse_links.php": null,
"dashboard\/current_dashboard\/": "92c76bc17e0cf2b9faad9ba789cd1fb6304ca56e",
"web_info": {
"function": "TYPO3\\CMS\\Belog\\Module\\BackendLogModuleBootstrap"
},
"system_txschedulerM1": {
"function": "scheduler"
},
"TYPO3\\CMS\\Belog\\Controller\\BackendLogController": "O:39:\"TYPO3\\CMS\\Belog\\Domain\\Model\\Constraint\":12:{s:14:\"\u0000*\u0000userOrGroup\";s:1:\"0\";s:9:\"\u0000*\u0000number\";i:20;s:15:\"\u0000*\u0000workspaceUid\";s:3:\"-99\";s:12:\"\u0000*\u0000timeFrame\";i:20;s:9:\"\u0000*\u0000action\";i:-1;s:14:\"\u0000*\u0000groupByPage\";b:0;s:17:\"\u0000*\u0000startTimestamp\";i:0;s:15:\"\u0000*\u0000endTimestamp\";i:0;s:18:\"\u0000*\u0000manualDateStart\";N;s:17:\"\u0000*\u0000manualDateStop\";N;s:9:\"\u0000*\u0000pageId\";i:0;s:8:\"\u0000*\u0000depth\";i:0;}",
"clipboard": {
"tab_1": [],
"tab_2": [],
"tab_3": [],
"current": "normal",
"normal": {
"el": {
"tx_zuladungsliste_domain_model_kriterien|33": "1"
},
"mode": "copy"
}
},
"web_view": {
"States": {
"current": {
"width": "1024",
"height": "1366",
"label": "iPad Pro"
}
}
},
"list\/displayFields": {
"tx_zuladungsliste_domain_model_extrasperrung": [
"",
"sperrzeitbis"
],
"tx_zuladungsliste_domain_model_kriterien": [
"",
"sektinstagid"
],
"fe_users": [
"",
"company",
"punktestand",
"frauenfoerderpunkt",
"kammernid",
"burogemeinschaft"
],
"tx_zuladungsliste_domain_model_wettbewerbe": [
"",
"sperrung",
"uid"
],
"tx_zuladungsliste_domain_model_sektionstage": [
"",
"sperrzeit"
]
}
},
"thumbnailsByDefault": 1,
"emailMeAtLogin": 0,
"startModule": "help_AboutAbout",
"titleLen": 50,
"edit_RTE": "1",
"edit_docModuleUpload": "1",
"resizeTextareas": 1,
"resizeTextareas_MaxHeight": 500,
"resizeTextareas_Flexible": 0,
"lang": "de",
"firstLoginTimeStamp": 1630820412,
"moduleSessionID": {
"web_layout": "25fcfcf92982fa42346580799e48537d4b8f777a",
"web_ts": "2de213855cebd2a2a402927d354a986ef8676738",
"FormEngine": "74b4bd7a0a16ee20ecad2bc152910ac1ccfa561d",
"TYPO3\\CMS\\Backend\\Utility\\BackendUtility::getUpdateSignal": "74b4bd7a0a16ee20ecad2bc152910ac1ccfa561d",
"opendocs::recent": "b126de6826f76cbccf93ca2cd171702a31e1860e",
"web_list": "52d3ccefceb667e2006d39500beb09ed0e6d9dd5",
"file_list": "a108910a133349f44b7a30695f39f4f9d46ebea7",
"tx_beuser": "47984b26e00ef94c61198304478512981f5b1bfb",
"browse_links.php": "1a6a66d79b2d74ef433e538f4da2e577a5fbc912",
"dashboard\/current_dashboard\/": "736f1226b905776c353f2fa01d1d8996e3df6407",
"web_info": "64d318271cb7cde508059aa706f1b46b85725d33",
"system_txschedulerM1": "79b7773748da14dfca565f8916423ef4b5441af5",
"TYPO3\\CMS\\Belog\\Controller\\BackendLogController": "dfaa44a4cb3c3883af45a2ed2f21d38cf13e88a4",
"clipboard": "423da4f5321274300e630376b27acb3ae534ba71",
"list\/displayFields": "52d3ccefceb667e2006d39500beb09ed0e6d9dd5"
},
"BackendComponents": {
"States": {
"Pagetree": {
"stateHash": {
"0_1": "1",
"0_50": "1",
"0_37": "1",
"0_42": "1",
"0_39": "0",
"0_62": "1"
}
},
"typo3-module-menu": {
"collapsed": "false"
}
}
},
"inlineView": "{\"tx_zuladungsliste_domain_model_punkte\":{\"37\":{\"tx_zuladungsliste_punkte_kriterien_mm\":[\"145\"]},\"19\":{\"tx_zuladungsliste_punkte_kriterien_mm\":{\"5\":\"\"}},\"7\":{\"tx_zuladungsliste_punkte_kriterien_mm\":{\"1\":\"\"}},\"30\":{\"tx_zuladungsliste_punkte_kriterien_mm\":{\"3\":\"\"}}},\"site\":{\"1\":{\"site_language\":[\"0\"],\"site_errorhandling\":[\"0\",\"1\"]},\"50\":{\"site_errorhandling\":{\"1\":\"1\",\"2\":\"0\"},\"site_language\":{\"2\":\"0\"}}},\"fe_users\":{\"294\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"2\":\"1614\"}},\"131\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"10\":\"432\"}},\"259\":{\"tx_zuladungsliste_konto_aufloesung_mm\":{\"6\":\"\"}},\"159\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"11\":\"\"}},\"251\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"1785\"]},\"172\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"116\"]},\"170\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"1780\",\"1779\"]},\"160\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"}},\"244\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"2078\"]},\"154\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"2\":\"1101\"}},\"1\":{\"tx_zuladungsliste_extrasperrung_user_mm\":{\"12\":\"72\"},\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"38\":\"4798\"},\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"9\":\"2\",\"26\":\"\"},\"tx_zuladungsliste_konto_aufloesung_mm\":{\"5\":\"\"},\"tx_zuladungsliste_ruhestellung_user_mm\":[1],\"tx_zuladungsliste_domain_model_ruhestellung\":{\"0\":\"3\",\"3\":\"\"}},\"954\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"},\"tx_zuladungsliste_extrasperrung_user_mm\":{\"1\":\"\"},\"tx_zuladungsliste_domain_model_ruhestellung\":[5]},\"4\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"2\":\"3520\"},\"tx_zuladungsliste_domain_model_ruhestellung\":[6]},\"953\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"4765\"]},\"862\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"},\"tx_zuladungsliste_konto_aufloesung_mm\":{\"1\":\"\"},\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"0\":\"2\",\"1\":4,\"2\":\"3\",\"6\":\"\"},\"tx_zuladungsliste_domain_model_ruhestellung\":[17]},\"1001\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"5\":\"7\",\"6\":\"8\"}},\"1058\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"19\":\"\"},\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"}},\"67\":{\"tx_zuladungsliste_domain_model_ruhestellung\":{\"2\":\"4\"},\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"15\":\"\"},\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"7\":\"\"},\"tx_zuladungsliste_konto_aufloesung_mm\":[\"12\",\"13\"]},\"164\":{\"tx_zuladungsliste_domain_model_ruhestellung\":[7]},\"1096\":{\"tx_zuladungsliste_domain_model_ruhestellung\":{\"2\":\"\"}},\"992\":{\"tx_zuladungsliste_domain_model_ruhestellung\":{\"3\":\"\"},\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"10\":\"4899\"}},\"570\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"25\":\"5032\"}},\"444\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"5121\"]},\"643\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":[\"37\"]},\"1201\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"12\":\"5154\"},\"tx_zuladungsliste_domain_model_ruhestellung\":{\"10\":\"14\"}},\"1156\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"8\":\"\"}},\"867\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"}},\"1073\":{\"tx_zuladungsliste_domain_model_ruhestellung\":{\"8\":\"12\"}},\"430\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"1\":\"\"},\"tx_zuladungsliste_domain_model_ruhestellung\":[20],\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"}},\"827\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":{\"1\":\"\"}},\"825\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"2\":\"5118\"}},\"949\":{\"tx_zuladungsliste_domain_model_ruhestellung\":[18]},\"278\":{\"tx_zuladungsliste_domain_model_ruhestellung\":{\"2\":\"19\"},\"tx_zuladungsliste_buro_gemeinschaft_mm\":[\"21\"]},\"956\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"5138\"]},\"521\":{\"tx_zuladungsliste_konto_aufloesung_mm\":[9,10]},\"664\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"1\":\"\"}},\"1392\":{\"tx_zuladungsliste_buro_gemeinschaft_mm\":[\"163\",\"164\"]},\"651\":{\"tx_zuladungsliste_konto_aufloesung_mm\":[\"19\",\"20\"]},\"791\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"2380\"]},\"1295\":{\"tx_zuladungsliste_domain_model_ruhestellung\":{\"4\":\"23\",\"5\":\"24\"}}},\"tx_zuladungsliste_domain_model_wettbewerbe\":{\"674\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"1882\"]},\"688\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":{\"41\":\"\"}},\"720\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"2140\"]},\"708\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"2115\"]},\"715\":{\"tx_zuladungsliste_wettbewerbe_architekten_mm\":[\"2055\"]},\"717\":{\"tx_zuladungsliste_wettbLine truncated
"browseTrees": {
"folder": "{\"25218\":{\"62822724\":1,\"14248556\":1,\"202941852\":1}}",
"browsePages": "[{\"0\":1,\"1\":1,\"39\":1}]"
},
"recentSwitchedToUsers": [
6
],
"modulemenu": "{}",
"reports": {
"selection": {
"extension": "",
"report": ""
}
},
"systeminformation": "{\"system_BelogLog\":{\"lastAccess\":1738829473}}",
"beuser": {
"compareGroupUidList": {
"11": true,
"10": true
}
}
},
"uc_default": {
"interfaceSetup": "",
"moduleData": [],
"thumbnailsByDefault": 1,
"emailMeAtLogin": 0,
"titleLen": 50,
"edit_RTE": "1",
"edit_docModuleUpload": "1",
"resizeTextareas": 1,
"resizeTextareas_MaxHeight": 500,
"resizeTextareas_Flexible": 0
},
"loginType": "BE",
"name": "be_typo_user",
"showHiddenRecords": false,
"auth_timeout_field": "",
"lifetime": 0,
"gc_time": 28800,
"gc_probability": 1,
"sendNoCacheHeaders": true,
"hash_length": 32,
"warningEmail": "",
"warningPeriod": 3600,
"warningMax": 3,
"checkPid": true,
"checkPid_value": 0,
"id": "cdb89caf20737bf6f1308f1179246707",
"loginFailure": false,
"loginSessionStarted": false,
"user": {
"ses_id": "f83e3650f07302b46147597aa86a375a",
"ses_iplock": "[DISABLED]",
"ses_userid": 1,
"ses_tstamp": 1771344450,
"ses_data": "a:4:{s:26:\"formProtectionSessionToken\";s:64:\"fb0365b9bb620711613eceb086315c20f588489066f7ede0bcfb7d04d5fe01b5\";s:27:\"core.template.flashMessages\";N;s:52:\"TYPO3\\CMS\\Recordlist\\Controller\\RecordListController\";a:1:{s:12:\"search_field\";s:7:\"ivanova\";}s:26:\"extbase.flashmessages.tx__\";N;}",
"ses_backuserid": 0,
"uid": 1,
"pid": 0,
"tstamp": 1599464037,
"username": "hermann.telser@gmail.com",
"description": "Salam Admin Access",
"avatar": 0,
"password": "$argon2i$v=19$m=65536,t=16,p=1$VmZjQ3Rpd0kwdjh3c0l3eA$GZbZS\/xBv1z6RoGcMLhqXiobqzjVrR951VcBFqFt22U",
"admin": 1,
"usergroup": "",
"disable": 0,
"starttime": 0,
"endtime": 0,
"lang": "de",
"email": "",
"db_mountpoints": null,
"options": 0,
"crdate": 1468737078,
"cruser_id": 0,
"realName": "",
"userMods": null,
"allowed_languages": "",
"uc": "a:22:{s:14:\"interfaceSetup\";s:7:\"backend\";s:10:\"moduleData\";a:16:{s:10:\"web_layout\";a:2:{s:8:\"function\";s:1:\"1\";s:8:\"language\";s:1:\"0\";}s:6:\"web_ts\";a:8:{s:8:\"function\";s:88:\"TYPO3\\CMS\\Tstemplate\\Controller\\TypoScriptTemplateConstantEditorModuleFunctionController\";s:19:\"constant_editor_cat\";s:14:\"frontend login\";s:15:\"ts_browser_type\";s:5:\"const\";s:16:\"ts_browser_const\";s:1:\"0\";s:19:\"ts_browser_fixedLgd\";s:1:\"1\";s:23:\"ts_browser_showComments\";s:1:\"1\";s:25:\"tsbrowser_depthKeys_const\";a:2:{s:6:\"config\";i:1;s:6:\"plugin\";i:1;}s:25:\"tsbrowser_depthKeys_setup\";a:6:{s:39:\"plugin.tx_zuladungsliste_zuladungsliste\";i:1;s:24:\"plugin.tx_zuladungsliste\";i:1;s:44:\"plugin.tx_zuladungsliste_zuladungsliste.view\";i:1;s:62:\"plugin.tx_zuladungsliste_zuladungsliste.view.templateRootPaths\";i:1;s:51:\"plugin.tx_zuladungsliste_zuladungsliste.persistence\";i:1;s:3:\"lib\";i:1;}}s:10:\"FormEngine\";a:2:{i:0;a:1:{s:32:\"ef16fd1dd21cee72b942496ea114ff2b\";a:4:{i:0;s:27:\"Ivanova Ralitza [T] [4.00]\";i:1;a:5:{s:4:\"edit\";a:1:{s:8:\"fe_users\";a:1:{i:1295;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:34:\"&edit%5Bfe_users%5D%5B1295%5D=edit\";i:3;a:5:{s:5:\"table\";s:8:\"fe_users\";s:3:\"uid\";i:1295;s:3:\"pid\";i:41;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}}i:1;s:32:\"ef16fd1dd21cee72b942496ea114ff2b\";}s:57:\"TYPO3\\CMS\\Backend\\Utility\\BackendUtility::getUpdateSignal\";a:0:{}s:16:\"opendocs::recent\";a:8:{s:32:\"a21d6c7edc1b15cb689c935c0722c396\";a:4:{i:0;s:20:\"Tirol 26. M\u00e4rz 2007\";i:1;a:5:{s:4:\"edit\";a:1:{s:43:\"tx_zuladungsliste_domain_model_sektionstage\";a:1:{i:1;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:66:\"&edit%5Btx_zuladungsliste_domain_model_sektionstage%5D%5B1%5D=edit\";i:3;a:5:{s:5:\"table\";s:43:\"tx_zuladungsliste_domain_model_sektionstage\";s:3:\"uid\";i:1;s:3:\"pid\";i:55;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"ee4c99616f49d31dbc82d25c2d3c9a1c\";a:4:{i:0;s:20:\"Tirol 25. April 2022\";i:1;a:5:{s:4:\"edit\";a:1:{s:43:\"tx_zuladungsliste_domain_model_sektionstage\";a:1:{i:5;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:66:\"&edit%5Btx_zuladungsliste_domain_model_sektionstage%5D%5B5%5D=edit\";i:3;a:5:{s:5:\"table\";s:43:\"tx_zuladungsliste_domain_model_sektionstage\";s:3:\"uid\";i:5;s:3:\"pid\";i:55;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"5c47f13e0902dfd8209b90b0d7723150\";a:4:{i:0;s:65:\"SCHAFFERER Architektur und Projektmanagement ZT-GmbH [T] [10.50]\";i:1;a:5:{s:4:\"edit\";a:1:{s:8:\"fe_users\";a:1:{i:1039;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:34:\"&edit%5Bfe_users%5D%5B1039%5D=edit\";i:3;a:5:{s:5:\"table\";s:8:\"fe_users\";s:3:\"uid\";i:1039;s:3:\"pid\";i:41;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"96ec1f943e21ef2c82b60f01603ad514\";a:4:{i:0;s:26:\"ma.lo ZT GmbH [T] [11.20]\";i:1;a:5:{s:4:\"edit\";a:1:{s:8:\"fe_users\";a:1:{i:278;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:33:\"&edit%5Bfe_users%5D%5B278%5D=edit\";i:3;a:5:{s:5:\"table\";s:8:\"fe_users\";s:3:\"uid\";i:278;s:3:\"pid\";i:41;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"a664a04ba99864562a82556d5959e654\";a:4:{i:0;s:49:\"Off. WB Volksschule Neilreichgasse 126, 1100 Wien\";i:1;a:5:{s:4:\"edit\";a:1:{s:42:\"tx_zuladungsliste_domain_model_wettbewerbe\";a:1:{i:1328;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:68:\"&edit%5Btx_zuladungsliste_domain_model_wettbewerbe%5D%5B1328%5D=edit\";i:3;a:5:{s:5:\"table\";s:42:\"tx_zuladungsliste_domain_model_wettbewerbe\";s:3:\"uid\";i:1328;s:3:\"pid\";i:38;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"6f8355db50b8ab6ede002da86e799ea9\";a:4:{i:0;s:41:\"[T] Reich Christoph, Waltl Clemens [0.00]\";i:1;a:5:{s:4:\"edit\";a:1:{s:8:\"fe_users\";a:1:{i:1410;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:34:\"&edit%5Bfe_users%5D%5B1410%5D=edit\";i:3;a:5:{s:5:\"table\";s:8:\"fe_users\";s:3:\"uid\";i:1410;s:3:\"pid\";i:41;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"e3c44f8049f1ccbd6f867f6a028f3451\";a:4:{i:0;s:3:\"App\";i:1;a:5:{s:4:\"edit\";a:1:{s:5:\"pages\";a:1:{i:50;s:4:\"edit\";}}s:7:\"defVals\";N;s:12:\"overrideVals\";N;s:11:\"columnsOnly\";N;s:6:\"noView\";N;}i:2;s:29:\"&edit%5Bpages%5D%5B50%5D=edit\";i:3;a:5:{s:5:\"table\";s:5:\"pages\";s:3:\"uid\";i:50;s:3:\"pid\";i:0;s:3:\"cmd\";s:4:\"edit\";s:12:\"deleteAccess\";b:1;}}s:32:\"2a0b9c6788d93d9fa28f19ce1513f16d\";a:4:{i:0;s:67:\"Florian Lutz . Daniela Amann . Architekten, Zivilt [Tirol] [32.50]\";i:1;a:5:{s:4:\"edit\";a:1:{s:8:\"fe_users\";a:1:{i:12;s:4:\"edit\";Line truncated
"file_mountpoints": null,
"file_permissions": null,
"workspace_perms": 1,
"lockToDomain": "",
"disableIPlock": 0,
"deleted": 0,
"TSconfig": null,
"lastlogin": 1771320105,
"createdByAction": 0,
"usergroup_cached_list": null,
"workspace_id": 0,
"category_perms": "",
"password_reset_token": "",
"is_online": 1771344450
},
"newSessionID": false,
"forceSetCookie": false,
"dontSetCookie": false,
"svConfig": []
},
"userid": 1,
"username": "hermann.telser@gmail.com",
"admin": 1,
"defaultPermissions": {
"user": "show,edit,delete,new,editcontent",
"group": "show,edit,new,editcontent",
"everybody": ""
},
"datamap": {
"fe_users": {
"1295": {
"username": "ralichka00@yahoo.com",
"password": "$argon2i$v=19$m=65536,t=16,p=1$oRBcgdrIZnImY6lhB80iDw$M\/recXtvDC4n3\/1YO+WEieMbJjnDwR13S1eFV0794hQ",
"usergroup": "2",
"company": "Ivanova Ralitza",
"gender": "2",
"title": "",
"first_name": "Ralitza",
"last_name": "Ivanova",
"kammernid": "1",
"kammermitgliedsnummer": "23843",
"vereidigung": "2023-06-26T00:00:00+00:00",
"frauenfoerderpunkt": "1",
"wettbewerbe": "6702,5906,6781",
"extrasperrung": "",
"ruhestellungen": "23,24",
"burogemeinschaft_start": "0000-00-00",
"burogemeinschaft": "",
"kontoaufloesung_active": "0000-00-00",
"kontoaufloesung": "",
"kontoaufloesung_begruendung": ""
}
},
"tx_zuladungsliste_domain_model_ruhestellung": {
"23": {
"ruhestellung_start": "2025-01-14T00:00:00+00:00",
"ruhestellung_end": "2025-05-05T00:00:00+00:00"
},
"24": {
"ruhestellung_start": "2025-02-03T00:00:00+00:00",
"ruhestellung_end": "2026-03-20T00:00:00+00:00"
}
}
},
"cmdmap": [],
"pMap": {
"show": 1,
"edit": 2,
"delete": 4,
"new": 8,
"editcontent": 16
},
"sortIntervals": 256,
"dbAnalysisStore": [],
"registerDBList": [],
"registerDBPids": [],
"copyMappingArray": [],
"remapStack": [],
"remapStackRecords": [],
"callFromImpExp": false,
"checkValue_currentRecord": {
"uid": 23,
"pid": 63,
"tstamp": 0,
"crdate": 0,
"hidden": 0,
"deleted": 0,
"ruhestellung_start": "2025-01-14",
"ruhestellung_end": "2025-05-05",
"uid_ruhestellung": 1295
}
}
+33
View File
@@ -0,0 +1,33 @@
# flush cache
php vendor/bin/typo3 cache:flush
# get version
./vendor/bin/typo3 --version
# Falls der Vhost noch existiert, einmal sauber entfernen:
reeve vhost remove tirol.test
# Mit Root-Verzeichnis UND Proxy-Weiterleitung neu anlegen:
reeve vhost add tirol.test --root ~/Sites/typo3_zuladung_tirol/public --proxy http://127.0.0.1:9074 --server apache
# path to reeve config
cd ~/Library/Application\ Support/reeve/
# Erzwinge PHP 7.4 aus dem Docker-Container für alle PHP-Dateien
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9074"
</FilesMatch>
# Die Lösung: Den Datenbank-Host anpassen um vom docker php auf macos DB zuzugrreifen
# Du musst TYPO3 mitteilen, dass es die Datenbank über die spezielle Schnittstelle von Docker zum Mac-Host ansprechen soll.
# 1. Öffne die TYPO3-Konfigurationsdatei deines Projekts auf deinem Mac:
# • Bei TYPO3 v11/v12/v13: config/system/additional.php (oder settings.php)
# • Bei älteren Versionen (z. B. TYPO3 v9/v10): typo3conf/LocalConfiguration.php (oder AdditionalConfiguration.php)
# 2. Suche nach dem Eintrag für die Datenbankverbindung (Connections -> Default) und ändere den Wert für host um:php
# Vorher: 'host' => '127.0.0.1', oder 'localhost'
# Nachher:
'host' => 'host.docker.internal',
+5
View File
@@ -0,0 +1,5 @@
composer.lock
Resources/Public/Css/node_modules
Resources/Public/Css/package-lock.json
Resources/Public/JavaScript/package-lock.json
Resources/Public/JavaScript/node_modules
+434
View File
@@ -0,0 +1,434 @@
<?php
namespace HermannTelser\Zuladungsliste\Backend;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Page\PageRenderer;
use TYPO3\CMS\Core\Database\ConnectionPool;
use DateTime;
use IntlDateFormatter;
/**
* Generate additional label for category records
* including the title of the parent category
*
* @$parameters array $params
* @return void
*
*
* \TYPO3\CMS\Core\Utility\DebugUtility::debug($wettbewerbeid);
*
*/
class Labels extends DateTime
{
public function loadKriterien(&$parameters, $parentObject)
{
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord($parameters['table'], $parameters['row']['uid']);
$newTitle = $record['bezeichnung'];
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('tx_zuladungsliste_domain_model_sektionstage', $record['sektionstagid'], "rwcode,bezeichnung,stichtag,kammernid");
$parameters['title'] = $record['rwcode'] . ' ' . $newTitle;
// $parameters['title'] = $record['rwcode'];
// $parameters['title'] = $record['rwcode'] . ': ' . $newTitle . ' (' . $record['bezeichnung'] . ' vom ' . date("d. M. y", strtotime($record['stichtag'])) . ')';
}
public function loadSektionstag(&$parameters, $parentObject)
{
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord($parameters['table'], $parameters['row']['uid']);
$newTitle = $record['bezeichnung'];
$date = new DateTime($record['stichtag']);
$formatter = new IntlDateFormatter(
"de-DE",
IntlDateFormatter::LONG,
IntlDateFormatter::NONE,
"Europe/Vienna",
IntlDateFormatter::GREGORIAN,
"dd. MMMM YYYY"
);
// $newTitle .= ' ' . date("d. M. y", strtotime($record['stichtag']));
$newTitle .= ' ' . $formatter->format($date);
$parameters['title'] = $newTitle;
}
public function loadArchitekten(&$parameters, $parentObject)
{
/********************************************************
KONTOAUFLOESUNG
********************************************************/
$uid = $parameters["row"]['uid'];
//use pid filter admin out of popup
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord($parameters['table'], $uid, '*', 'pid=41');
if (!$record) {
return;
}
// $isPartner = "";
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_konto_aufloesung_mm');
$count = $queryBuilder
->count('uid')
->from('tx_zuladungsliste_konto_aufloesung_mm')
->where(
$queryBuilder->expr()->eq('uid_empfaenger', (int) $uid)
)->execute()
->fetchColumn(0);
switch ($record['kammernid']) {
case '1':
$title = $record['company'].' [T] ';
break;
case '2':
$title = $record['company'].' [V] ';
break;
default:
$title = $record['company'].' [!] ';
break;
}
if ($count) {
$title .= ' [Empfänger]';
} elseif ($record["kontoaufloesung"] > 0) {
$title .= " [".$record["kontoaufloesung_active"]." Aufgelöst]";
}
switch($parameters["row"]['istpartner']) {
case 1:
$title .= " [Partner]";
break;
case 2:
$title .= " [" . $record['punktestand'] . "][Gemeinschaft]";
break;
default:
$title .= " [" . $record['punktestand'] . ']';
break;
}
$parameters['title'] = $title;
// print_r($parameters);
}
// public function loadSektionstag($id)
// {
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($id);
//
// $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_sektionstage');
// $ref = $queryBuilder
// ->select('bezeichnung', 'stichtag')
// ->from('tx_zuladungsliste_domain_model_sektionstage')
// ->where(
// $queryBuilder->expr()->eq('uid', $id),
// )
// ->execute()
// ->fetchRow();
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($ref);
// }
public function loadKriterienPunkte(&$parameters)
{
$kriterien_label = '';
if (isset($parameters['options']['tx_zuladungsliste_punkte_kriterien_mm']) && is_array($parameters['options']['tx_zuladungsliste_punkte_kriterien_mm'])) {
/********************************************************
KRITERIEN BEZEICHNUNG
********************************************************/
$kriterien_id = $parameters['row']['uid_kriterien'];
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('tx_zuladungsliste_domain_model_kriterien', $kriterien_id);
$kriterien_label = '<span class="blau bold;">' . $record['bezeichnung'] . '</span>';
/********************************************************
KAMMER STICHTAG
********************************************************/
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('tx_zuladungsliste_domain_model_sektionstage', $record['sektionstagid']);
$stichtagTitle = $record['bezeichnung'];
$stichtagDate = $record['stichtag'];
$kriterien_label .= '<br><span class="grau bold">' . $stichtagTitle . ' ' . $stichtagDate . '</span>';
/********************************************************
PREIS
********************************************************/
$punkte_id = $parameters['row']['uid_punkte'][0];
$item = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('tx_zuladungsliste_domain_model_punkte', $punkte_id);
$kriterien_label .= '<br><b>' . $item['bezeichnung'] . '</b>';
//\TYPO3\CMS\Core\Utility\DebugUtility::debug($parameters['row']['uid_punkte'][0]);
/********************************************************
PUNKTE
********************************************************/
if ($parameters['row']['punkte']==1) {
$kriterien_label .= '<br><span class="rot bold">' . $parameters['row']['punkte'] . ' Punkt</span>';
} else {
$kriterien_label .= '<br><span class="rot bold">' . $parameters['row']['punkte'] . ' Punkte</span>';
}
} else {
$kriterien_label = '[Fehler!]';
}
$parameters['title'] = $kriterien_label;
}
public function loadPunkteVerteilungs(&$parameters)
{
$parameters['title'] = "ERROR";
if (isset($parameters['options']['tx_zuladungsliste_konto_aufloesung_mm']) && is_array($parameters['options']['tx_zuladungsliste_konto_aufloesung_mm'])) {
$uid_empfaenger = $parameters['row']['uid_empfaenger'][0];
//\TYPO3\CMS\Core\Utility\DebugUtility::debug($uid_empfaenger);
$prozente = $parameters['row']['prozente'];
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('fe_users', $uid_empfaenger);
$colorclass = "zuladungsliste-kammern-".$record["kammernid"];
$parameters['title'] = '<span class="'.$colorclass.'">' . $record['name'];
$parameters['title'] .= " <b>(" .$prozente. "%) </b></span>";
}
}
public function loadBuerogemeinschaft(&$parameters)
{
$parameters['title'] = "ERROR";
if (isset($parameters['options']['tx_zuladungsliste_buro_gemeinschaft_mm']) && is_array($parameters['options']['tx_zuladungsliste_buro_gemeinschaft_mm'])) {
$uid_user = $parameters['row']['uid_user'][0];
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('fe_users', $uid_user);
$colorclass = "zuladungsliste-kammern-".$record["kammernid"];
// $parameters['title'] = '<span class="'.$colorclass.'">' . $record['last_name'] . " " . $record['first_name'];
$parameters['title'] = '<span class="'.$colorclass.'">' . $record['company'];
}
}
public function loadWettbewerbArchitekten(&$parameters)
{
if (isset($parameters['options']['tx_zuladungsliste_wettbewerbe_architekten_mm']) && is_array($parameters['options']['tx_zuladungsliste_wettbewerbe_architekten_mm'])) {
if (is_array($parameters['row']['uid_wettbewerbe'])) {
$wettbewerbe_id = (int)$parameters['row']['uid_wettbewerbe'][0];
} else {
$wettbewerbe_id = (int)$parameters['row']['uid_wettbewerbe'];
}
if (is_array($parameters['row']['uid_user'])) {
$user_id = (int)$parameters['row']['uid_user'][0];
} else {
$user_id = (int)$parameters['row']['uid_user'];
}
if (is_array($parameters['row']['uid_punkte'])) {
$punkte_id = (int)$parameters['row']['uid_punkte'][0];
} else {
$punkte_id = (int)$parameters['row']['uid_punkte'];
}
if (is_array($parameters['row']['sperrzeitteilung'])) {
$sperrzeitteilung = (int)$parameters['row']['sperrzeitteilung'][0];
} else {
$sperrzeitteilung = (int)$parameters['row']['sperrzeitteilung'];
}
if (is_array($parameters['row']['ladung_durch_auslober'])) {
$ladung_durch_auslober = (int)$parameters['row']['ladung_durch_auslober'][0];
} else {
$ladung_durch_auslober = (int)$parameters['row']['ladung_durch_auslober'];
}
if (is_array($parameters['row']['nichtsperren'])) {
$nichtsperren = (int)$parameters['row']['nichtsperren'][0];
} else {
$nichtsperren = (int)$parameters['row']['nichtsperren'];
}
// echo json_encode($parameters);
// \TYPO3\CMS\Core\Utility\DebugUtility::debug(implode(", ",array_keys($parameters["row"])));
// \TYPO3\CMS\Core\Utility\DebugUtility::debug(implode(", ",$parameters["row"]));
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($parameters["row"]["uid_user"],"uid_user 1: ");
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($user_id,"uid_user 2: ");
// \TYPO3\CMS\Core\Utility\DebugUtility::debug(implode(", ",array_keys($parameters["options"])));
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($wettbewerbe_id);
if (isset($wettbewerbe_id)) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe');
$record = $queryBuilder
->select('kriteriumid', 'wettbewerb', 'kammerbeschluss', 'entscheidungstermin', 'loserverfahren')
->from('tx_zuladungsliste_domain_model_wettbewerbe')
->where(
$queryBuilder->expr()->eq('uid', (int) $wettbewerbe_id)
)->execute();
while ($row = $record->fetch()) {
$kriterien_id = $row['kriteriumid'];
$wettbewerb_label = $row['wettbewerb'];
$kammerbeschluss = $row['kammerbeschluss'];
$entscheidungstermin = $row['entscheidungstermin'];
$loserverfahren = $row['loserverfahren'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_kriterien');
$record = $queryBuilder
->select('sperrung', 'sektionstagid')
->from('tx_zuladungsliste_domain_model_kriterien')
->where(
$queryBuilder->expr()->eq('uid', (int) $kriterien_id)
)->execute();
while ($row = $record->fetch()) {
$sperrung = $row['sperrung'];
$sektionstagid = $row['sektionstagid'];
}
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($record);
// return;
// $record = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("kriteriumid,wettbewerb", "tx_zuladungsliste_domain_model_wettbewerbe", "uid=$wettbewerbe_id");
$parameters['row']['uid'] = strpos($parameters['row']['uid'], "NEW")!==false ? "Neuer Eintrag Bitte Sichern" : $parameters['row']['uid'];
if ($user_id) {
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('fe_users', $user_id);
$wettbewerb_label .= '</b><br><span class="blau bold">' . $record['company'] . '</span>';
}
if ($punkte_id) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_punkte');
$record = $queryBuilder
->select('tx_zuladungsliste_domain_model_punkte.bezeichnung', 'k.uid', 'k.punkte')
->from('tx_zuladungsliste_domain_model_punkte')
->join(
'tx_zuladungsliste_domain_model_punkte',
'tx_zuladungsliste_punkte_kriterien_mm',
'k',
$queryBuilder->expr()->eq('k.uid_punkte', $queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_punkte.uid'))
)
->where(
$queryBuilder->expr()->eq('k.uid_kriterien', $queryBuilder->createNamedParameter($kriterien_id, \PDO::PARAM_INT)),
$queryBuilder->expr()->eq('k.uid_punkte', $queryBuilder->createNamedParameter($punkte_id, \PDO::PARAM_INT))
)
->execute();
while ($row = $record->fetch()) {
$punkte = $row['punkte']==0 ? "Keine " : $row['punkte'];
$bezeichnung = $row['bezeichnung'];
}
if ($punkte!=0) {
$wettbewerb_label .= '</b><br><span class="rot bold">' . $bezeichnung .' (' . $punkte;
$wettbewerb_label .= $punkte==1 ? ' Punkt)</span>' : ' Punkte)</span>';
if ($kammerbeschluss) {
$wettbewerb_label .= '<li> Kooperationsdatum: ' . $kammerbeschluss;
}
if ($entscheidungstermin) {
$wettbewerb_label .= '<li> Entscheidungstermin: ' . $entscheidungstermin;
}
}
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_sektionstage');
$record = $queryBuilder
->select('punktezeit', 'sperrzeit', 'sperrzeit_aufteilen', 'ausloberladung')
->from('tx_zuladungsliste_domain_model_sektionstage')
->where(
$queryBuilder->expr()->eq('uid', (int) $sektionstagid)
)->execute();
while ($row = $record->fetch()) {
$punktezeit = $row['punktezeit'];
$sperrzeit_monate = $row['sperrzeit'];
$sperrzeit_aufteilen = $row['sperrzeit_aufteilen'];
// Maximale Sperrzeiten bei Auslosung
$ausloberladung_monate = $row['ausloberladung'];
}
if ($ladung_durch_auslober != 0) {
// Active Sperrzeit wird auf im Sektionstag beschlossene Monate verkürzt
// Daniela mail 16.11
// Mir ist aufgefallen, dass wenn ich eingebe „Zuladung durch Auslober“ oder „Zuladung durch Kammer“ sich eine Sperrzeitreduktion ergibt. Das sollte bitte nicht sein.
// Eine Reduktion ergibt sich nur bei „Zuladung durch Auslosen“.
// 'Keine Spezielle Zuladung', => 0
// 'Zuladung durch Auslober:in' => 1
// 'Zuladung durch Kammer' => 2
// 'Zuladung durch Auslosung' => 3
switch ($ladung_durch_auslober) {
case '1':
if($loserverfahren == 1 and $ausloberladung_monate > 0) {
$tmp = $ausloberladung_monate==1 ? $ausloberladung_monate ." Monat" : $ausloberladung_monate ." Monate";
$wettbewerb_label .= '<li> Zuladung durch Auslober:in bei Losverfahren, Sperrzeitreduktion auf maximal ' . $tmp;
if ($ausloberladung_monate < $sperrzeit_monate) {
$sperrzeit_monate = $ausloberladung_monate;
}
} else {
$wettbewerb_label .= '<li> Zuladung durch Auslober:in';
}
break;
case '2':
$wettbewerb_label .= '<li> Zuladung durch Kammer';
break;
case '3':
// reduktion nur hier!
if ($ausloberladung_monate > 0) {
$tmp = $ausloberladung_monate==1 ? $ausloberladung_monate ." Monat" : $ausloberladung_monate ." Monate";
$wettbewerb_label .= '<li> Auslosung, Sperrzeitreduktion auf maximal ' . $tmp;
if ($ausloberladung_monate < $sperrzeit_monate) {
$sperrzeit_monate = $ausloberladung_monate;
}
} else {
$wettbewerb_label .= '<li> Auslosung';
}
break;
}
}
/*--------------------------------------------------------------------------------------------------------------
Zeitlimits
Sperren => immer ab Freigabedatum (Kooperationsdatum)!! in db: "kammerbeschluss"
Punke => für Punkteverfall immer ab "entscheidungstermin"
--------------------------------------------------------------------------------------------------------------*/
if ($sperrung) {
// hier sperrzeitteiliung vom beschluss
# DEBUG
// \TYPO3\CMS\Core\Utility\DebugUtility::debug($sektionstagid);
if ($sperrzeitteilung > 1) {
// sperrzeit => Monate
$sperrzeit_monate = floor($sperrzeit_monate/$sperrzeitteilung);
}
if ($nichtsperren == 1) {
$wettbewerb_label .= '<li> Sperre deaktiviert';
} else {
switch ($sperrzeitteilung) {
case 2:
$wettbewerb_label .= '<li> Gemeinschafliches Antreten Sperrzeit wurde halbiert.';
break;
case 3:
$wettbewerb_label .= '<li> Gemeinschafliches Antreten Sperrzeit wurde gedrittelt.';
break;
case 4:
$wettbewerb_label .= '<li> Gemeinschafliches Antreten Sperrzeit wurde geviertelt.';
break;
}
$sperre = new DateTime($kammerbeschluss);
if ($sperrzeit_monate > 0) {
$sperre->modify("+".$sperrzeit_monate." months");
}
if ($kammerbeschluss and $sperre->format("U") > time()) {
$wettbewerb_label .= '<li>Gesperrt bis: <span class="rot">' . $sperre->format("Y-m-d") . '</span>';
} elseif ($kammerbeschluss) {
$wettbewerb_label .= '<li>Sperre beendet am: ' . $sperre->format("Y-m-d") . '</span>';
}
}
} else {
$wettbewerb_label .= '<li>Wettbewerb ohne Sperrung';
}
}
} else {
$wettbewerb_label = '[Fehler!]';
}
$parameters['title'] = '<b>' . $wettbewerb_label . '</b>';
}
}
@@ -0,0 +1,68 @@
<?php
namespace HermannTelser\Zuladungsliste\Backend;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
/**
* Generate additional label for category records
* including the title of the parent category
*
* @$parameters array $params
* @return void
*
*
* \TYPO3\CMS\Core\Utility\DebugUtility::debug($wettbewerbeid);
*
*/
class Selecting
{
public function loadPunkte(&$parameters)
{
if (is_array($parameters['row']['uid_wettbewerbe'])) {
$wettbewerbe_id = (int) $parameters['row']['uid_wettbewerbe'][0];
} else {
$wettbewerbe_id = (int) $parameters['row']['uid_wettbewerbe'];
}
if ($wettbewerbe_id!=0) {
$parameters["items"][] = array('Keine Punkte vergeben','0');
$record = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('tx_zuladungsliste_domain_model_wettbewerbe', $wettbewerbe_id);
$kriterien_id = $record['kriteriumid'];
if ($kriterien_id!=0) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_punkte');
$resource = $queryBuilder
->select('tx_zuladungsliste_domain_model_punkte.bezeichnung', 'tx_zuladungsliste_domain_model_punkte.uid', 'k.punkte')
->from('tx_zuladungsliste_domain_model_punkte')
->join(
'tx_zuladungsliste_domain_model_punkte',
'tx_zuladungsliste_punkte_kriterien_mm',
'k',
$queryBuilder->expr()->eq('k.uid_punkte', $queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_punkte.uid'))
)
->where(
$queryBuilder->expr()->eq('k.uid_kriterien', $queryBuilder->createNamedParameter($kriterien_id, \PDO::PARAM_INT))
)
->orderBy('tx_zuladungsliste_domain_model_punkte.sorting')
->execute()
->fetchAll();
foreach ($resource as $key => $row) {
if ($row['punkte']==0) {
$parameters["items"][] = array($row['bezeichnung'].' (Keine Punkte Zugeordnet)', $row['uid']);
} else {
$parameters["items"][] = array($row['bezeichnung'].' ('.$row['punkte'].' Punkte)', $row['uid']);
}
}
} else {
$parameters["items"][] = array('Punkte für Kriterium fehlen','');
}
} else {
$parameters["items"][] = array('Wettbewerb auswählen und speichern','');
}
}
}
@@ -0,0 +1,254 @@
<?PHP
if (!class_exists('t3lib_befunc')) require_once(PATH_t3lib.'class.t3lib_befunc.php');
class user_LabelClass {
function getSektionstagLabel(&$params, &$pObj) {
$id = $params['row']['uid']; //aktuelle uid
if ($id) {
$item = t3lib_BEfunc::getRecord('tx_archwest_sektionstage', $id);
$label = $item['bezeichnung'];
$stichtag = $item['stichtag'];
$uid = $item['tx_archwest_sperrzeit'];
$item2 = t3lib_BEfunc::getRecord('tx_archwest_sperrzeit', $uid);
$kammer = $item2['bezeichnung'];
}
else {
$label = '[Fehler!]';
$stichtag = '';
}
$params['title'] = $label.' '.date("j.m.y",$stichtag).' '.$kammer;
}
function getUserWettbewerbeLabel(&$params, &$pObj) {
#tx_archwest_feusers_wettbewerbe_mm
if ($params['row']['uid']) {
$item = t3lib_BEfunc::getRecord('tx_archwest_wettbewerbe', $params['row']['wettbewerbeid']);
#print_r($item);
/*
(
[uid] => 122
[pid] => 14
[tstamp] => 1328171206
[crdate] => 1328171206
[cruser_id] => 16
[sorting] => 16384
[deleted] => 0
[hidden] => 0
[starttime] => 0
[endtime] => 0
[wettbewerb] => Sanierung Volks- und Unesco-Mittelschule Bürs
[beschreibung] =>
[registrierung] =>
[verfahrensort] =>
[bundesland] =>
[abgabetermin] => 0
[entscheidungstermin] => 1257462000
[aufgabenstellung] =>
[punktekriterium] => 5
[feusersid] => 5
[kammerbeschluss] => 0
[sperrung] => 0
)
*/
$bewerblabel = "ID: " . $item['uid'] . "<br>";
$bewerblabel .= $item['wettbewerb'];
$kriterienid = $item['punktekriterium'];
$entscheidungstermin = $item['entscheidungstermin'];
$punktekriteriumId = $params['row']['punkte'];
//Sperre ab Kammerbschluß
$kammerbeschlusstermin = $item['kammerbeschluss'];
$sperrung = $item['sperrung'];
$item = t3lib_BEfunc::getRecord('tx_archwest_punkte', $punktekriteriumId);
#print_r($item);
/*
Array
(
[uid] => 3
[pid] => 11
[tstamp] => 1317098953
[crdate] => 1316882336
[cruser_id] => 1
[deleted] => 0
[hidden] => 0
[bezeichnung] => Anerkennung
[kriterien] => 1
)
*/
$preislabel = '<span style="color:blue; font-weight:normal;">'.$item['bezeichnung'].'</span>';
$punkte = '';
$esGibtPunkte = true;
if($item['bezeichnung']!="") {
#echo "SELECT * FROM tx_archwest_punkte_kriterien_mm WHERE punkteid = $punktekriteriumId AND kriterienid = $kriterienid";
$item = t3lib_BEfunc::getRecordRaw('tx_archwest_punkte_kriterien_mm', "punkteid = $punktekriteriumId AND kriterienid = $kriterienid","punkte");
#print_r($item);
$punkte .= $item['punkte'];
if($punkte==1) {
$punkte .= " Punkt";
}
else if($punkte >0) {
$punkte .= " Punkte";
}
else {
$punkte = "Keine Punktevergabe";
$esGibtPunkte=false;
}
}
else {
$preislabel = '<span style="color:#F00;">Preis oder Auszeichnung nicht zugeordnet!</span>';
}
//
$feuserId = $params['row']['feusersid'];
$item = t3lib_BEfunc::getRecord('fe_users', $feuserId);
if($item['name']){
$feuserlabel = '<br><span style="color:#909; font-weight:normal;">'.$item['name'].'</span><br>';
}
else {
$feuserlabel = '<br><span style="color:#F00;">Architekt nicht zugeordnet!</span><br>';
}
################################################################################
//Sperre from TIROL ODER VORARLBERG
$tx_archwest_sperrart = $item['tx_archwest_sperrart'];
//$item = t3lib_BEfunc::getRecord('tx_archwest_sperrzeit', $tx_archwest_sperrart);
//if($params['row']['wettbewerbeid']==392)
//{
// print_r($item);
//}
//echo "<hr>";
//ANGEPASST AN SPERAGE VON SEKTIONSTAGUNGEN
$arr = t3lib_BEfunc::getRecordsByField('tx_archwest_sektionstage', "tx_archwest_sperrzeit", $tx_archwest_sperrart,"","","stichtag DESC");
while (list($key,$value) = each($arr))
{
$monateSperre = $value['sperrzeit'];
$monatePunkte = $value['punkteverfall'];
if($kammerbeschlusstermin>$value['stichtag'])
break;
}
//if($params['row']['wettbewerbeid']==392)
//{
//echo $monatePunkte.",";
//echo $monateSperre.";";
//}
if($sperrung) {
if($kammerbeschlusstermin AND mktime(0, 0, 0, date("m")-$monateSperre, date("d"), date("Y")) < $kammerbeschlusstermin){
$gesperrt = '<br>Gesperrt bis: <span style="color:blue; font-weight:normal;">' . date("d. m. Y",mktime(0, 0, 0, date("m",$kammerbeschlusstermin)+$monateSperre, date("d",$kammerbeschlusstermin), date("Y",$kammerbeschlusstermin))).'</span>';
}
else if($kammerbeschlusstermin){
$gesperrt = '<br><span style="color:#666; font-weight:normal;">Sperre verfallen am: ' . date("d. m. Y",mktime(0, 0, 0, date("m",$kammerbeschlusstermin)+$monateSperre, date("d",$kammerbeschlusstermin), date("Y",$kammerbeschlusstermin))).'</span>';
}
else if($esGibtPunkte){
$gesperrt ='<br><span style="color:#f00;">Sperrung aktive aber Freigabedatum fehlt!</span>';
}
}
if($esGibtPunkte){
if($entscheidungstermin AND mktime(0, 0, 0, date("m")-$monatePunkte, date("d"), date("Y"))<$entscheidungstermin){
$punkte .= '<br>Punkte g&uuml;ltig bis: <span style="color:blue; font-weight:normal;">' . date("d. m. Y",mktime(0, 0, 0, date("m",$entscheidungstermin)+$monatePunkte, date("d",$entscheidungstermin), date("Y",$entscheidungstermin))).'</span>';
}
else if($entscheidungstermin>0){
$verfall = mktime(0, 0, 0, date("m",$entscheidungstermin)+$monatePunkte, date("d",$entscheidungstermin), date("Y",$entscheidungstermin));
$punkte = '<br><span style="color:#666; font-weight:normal;">Punkte ung&uuml;ltig seit: ' . date("d. m. Y",$verfall) . '</span>';
}
else{
$punkte ='<br><span style="color:#f00;">Freigabedatum fehlt! Punkte werden nicht in Zuladungsliste zugerechnet.</span>';
}
}
########
}
else {
$bewerblabel = '<span style="color:#f00; font-weight:bold;">[Fehler!]</span>';
$preislabel = '';
$punkte = '';
$feuserlabel = '';
}
$params['title'] = '<div style="font-weight:normal;">'.$bewerblabel . $feuserlabel . $preislabel .' '.$punkte . $gesperrt . '</div>';
}
function getKriterienPunkteLabel(&$params, &$pObj) {
if ($params['row']['uid']) {
$kriterienid = $params['row']['kriterienid'];
$item = t3lib_BEfunc::getRecord('tx_archwest_kriterien', $kriterienid);
$krilabel = $item['bezeichnung'];
$punktekriteriumId = $params['row']['punkteid'];
$item = t3lib_BEfunc::getRecord('tx_archwest_punkte', $punktekriteriumId);
$preislabel = $item['bezeichnung'];
$punkte = $params['row']['punkte'];
}
else {
$krilabel = '[Fehler!]';
$punkte = '';
}
if($punkte=='')
$str='';
else if($punkte==1)
$str = ' Punkt';
else
$str = ' Punkte';
$params['title'] = $krilabel . ', ' . $preislabel . ', ' . $punkte . $str;
}
function getBesondereSperrungLabel(&$params, &$pObj) {
/*
[row] => Array
(
[uid] => 4
[pid] => 12
[tstamp] => 1334475048
[tablenames] =>
[sorting] => 1
[feusersid] => 2
[extrasperrungid] => 1
[crdate] => 1334475048
[cruser_id] => 0
[deleted] => 0
[hidden] => 0
)
*/
if ($params['row']['extrasperrungid']) {
$extrasperrungid = $params['row']['extrasperrungid'];
$item = t3lib_BEfunc::getRecord('tx_archwest_extrasperrung', $extrasperrungid);
$label = '<span style=" font-weight:normal;">'.$item['begruendung'].'</span>';
$sperrzeitbis = $item['sperrzeitbis'];
$feuserId = $params['row']['feusersid'];
$item = t3lib_BEfunc::getRecord('fe_users', $feuserId);
if($item['name']){
$label .= '<br><span style="color:#909; font-weight:normal;">'.$item['name'].'</span>';
}
else {
$label .= '<br><span style="color:#F00;">Architekt nicht zugeordnet!</span>';
}
if($sperrzeitbis > time()) {
$label .= '<br>Sperrung <span style="color:red;">aktiv</span> bis: ' . date("d. M. Y",$sperrzeitbis);
}
else {
$label .= '<br>Sperrung <span style="color:green;">inaktiv</span> seit: ' . date("d. M. Y",$sperrzeitbis);
}
$params['title'] = $label;
}
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/archwest/lib/class.userLabelClass.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/archwest/lib/class.userLabelClass.php']);
}
?>
@@ -0,0 +1,80 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Architekten
{
/**
* @param mixed $uid
*
* @return void
*/
public static function load($uid = 0)
{
_Berechnung::$debug = 0;
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Load Architekten');
}
// PARTNER
$_ingemeinschaft = Partner::load_alle_in_gemeinschaft();
do {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('uid', 'disable', 'email', 'name', 'first_name', 'last_name', 'company', 'teilhaber', 'vereidigung', 'frauenfoerderpunkt', 'frauenfoerderpunkt_verfallen', 'solidaritaetserklaerung', 'extrasperrung', 'kontoaufloesung', 'kontoaufloesung_active', 'wettbewerbe', 'kammernid', 'kammermitgliedsnummer', 'gender', 'istpartner', 'burogemeinschaft', 'burogemeinschaft_start', 'ruhestellungen')
->from('fe_users')
->where(
$queryBuilder->expr()->eq('kammernid', (int) _Berechnung::$_config['kammernid']),
$queryBuilder->expr()->eq('pid', (int) _Berechnung::$_config['pid']),
$queryBuilder->expr()->eq('usergroup', (int) _Berechnung::$_config['usergroup']),
$queryBuilder->expr()->notIn('uid', $_ingemeinschaft)
);
if (is_array($uid)) {
$queryBuilder->andWhere($queryBuilder->expr()->in('uid', $uid));
} elseif (0 != $uid) {
$queryBuilder->andWhere($queryBuilder->expr()->eq('uid', (int) $uid));
}
$queryBuilder->andWhere("vereidigung < '" . _Berechnung::$berechne_bis->format('Y-m-d') . "'");
$statement = $queryBuilder->execute()->fetchAll();
if(\count($statement) == 0){
Message::error(__file__,__line__, "Keine Architekten selektiert. Falsche Kammer?");
}
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
foreach ($statement as $key => $user_objekt) {
if ($statement[$key]['burogemeinschaft']) {
$statement[$key]['frauenfoerderpunkt'] = 0;
}
}
_Berechnung::$_data['architekten'] = $statement;
if (!$statement) {
_Berechnung::moveOneMonthForward();
}
} while (!$statement);
}
}
@@ -0,0 +1,178 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use DateTime;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Aufloesung
{
private static function getPunkte(&$value)
{
foreach (_Berechnung::$_data['liste'] as $key => $row) {
if ($row['user_id'] == $value['uid_geber']) {
$value['geber'] = $row['company'];
$value['punkte'] = $row['punkte'];
}
}
return $value;
}
/**
* @return void
*/
public static function verteilung()
{
_Berechnung::$debug = 0;
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Auflösung Punkte Verteilung');
}
// 2 usergroup => Ordentliche Registrierung zur Zuladungsliste
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_konto_aufloesung_mm');
$statement = $queryBuilder
->select('uid_geber', ' uid_empfaenger', ' prozente')
->from('tx_zuladungsliste_konto_aufloesung_mm')
->where(
$queryBuilder->expr()->gt('prozente', (int) 0)
)->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$verteiler_arr = [];
foreach ($statement as $key => $value) {
$uid = $value['uid_geber'];
$verteiler_arr[$uid][] = $value;
}
// print_r($verteiler_arr);
// print_r(_Berechnung::$_data['liste']);
// exit;
foreach ($verteiler_arr as $uid_geber => $empfaener_arr) {
$frauenpunkt_abgezogen = '';
if (!_Berechnung::$_data['liste']) {
break;
}
foreach (_Berechnung::$_data['liste'] as $key => $_value_liste) {
if ($_value_liste['user_id'] == $uid_geber) {
// print_r($_value_liste);
// exit;
// LIST WETTBEWERBE VON AUFGELÖSTEN KONTEN BEI EMPFÄNGER
// set punktestand from geber to 0
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder->update('fe_users')->where($queryBuilder->expr()->eq('uid', (int) $uid_geber))->set('punktestand', 0)->execute();
$geber_wettbewerbe = $_value_liste['auswertung']['wettbewerbe'];
$geber_punkte = $_value_liste['punkte'];
$geber_gueltig_bis = '';
foreach ($geber_wettbewerbe as $k => $value) {
$geber_wettbewerbe[$k]['kontoaufloesung'] = 1;
if ($value['punkte'] > 0 and $value['gueltig_bis'] > $geber_gueltig_bis) {
$geber_gueltig_bis = $value['gueltig_bis'];
}
}
if ($geber_gueltig_bis) {
$geber_gueltig_bis = new DateTime($geber_gueltig_bis);
}
if ($geber_punkte > 0) {
$geber_company = $_value_liste['company'];
_Berechnung::$_data['liste'][$key]['company'] .= ' ( Kontoauflösung ' . _Berechnung::$_data['liste'][$key]['kontoaufloesung_active'] . ')';
// _Berechnung::$_data['liste'][$key]['punkte'] = 0;
_Berechnung::$_data['liste'][$key]['nominiert'] = 0;
// _Berechnung::$_data['liste'][$key]['auswertung']['wettbewerbe']['punkte'] = 0;
_Berechnung::$_data['liste'][$key]['auswertung']['neueinsteigerpunkt']['punkte'] = 0;
if (1 == _Berechnung::$_data['liste'][$key]['auswertung']['frauenfoerderpunkt']['punkte']) {
$frauenpunkt_abgezogen = ', Frauenförderpunkt wurde abgezogen';
--$geber_punkte;
}
_Berechnung::$_data['liste'][$key]['auswertung']['frauenfoerderpunkt']['punkte'] = 0;
foreach ($empfaener_arr as $k => $_empfaenger) {
// print_r($geber_punkte);exit;
$uid_empfaenger = $_empfaenger['uid_empfaenger'];
$prozente = $_empfaenger['prozente'];
// SET EMPFÄNGER
foreach (_Berechnung::$_data['liste'] as $keyEmp => $value) {
if ($value['user_id'] == $uid_empfaenger) {
$punkte_empf_anteil = round($geber_punkte * ($prozente / 100), 2);
if ($geber_gueltig_bis > _Berechnung::$berechne_bis) {
_Berechnung::$_data['liste'][$keyEmp]['nominiert'] = 1;
}
if($_value_liste['gesperrt_bis'] >_Berechnung::$berechne_bis->format('Y-m-d')){
_Berechnung::$_data['liste'][$keyEmp]['gesperrt_bis'] = $_value_liste['gesperrt_bis'];
_Berechnung::$_data['liste'][$keyEmp]['gesperrt'] = 1;
_Berechnung::$_data['liste'][$keyEmp]['nominiert'] = 0;
}
_Berechnung::$_data['liste'][$keyEmp]['punkte'] += $punkte_empf_anteil;
_Berechnung::$_data['liste'][$keyEmp]['istempfaenger'] = (int) 1;
// reduzier die punkte vom geber nach prozenten
$geber_wettbewerbe_reduziert = $geber_wettbewerbe;
foreach ($geber_wettbewerbe_reduziert as $kw => $vw) {
$geber_wettbewerbe_reduziert[$kw]['punkte'] = round($vw['punkte'] * ($prozente / 100), 2);
}
// _Berechnung::$_data['liste'][$keyEmp]['auswertung']['wettbewerbe']['punkte'] += $punkte_empf_anteil;
_Berechnung::$_data['liste'][$keyEmp]['auswertung']['wettbewerbe'] = array_merge(_Berechnung::$_data['liste'][$keyEmp]['auswertung']['wettbewerbe'], $geber_wettbewerbe_reduziert);
_Berechnung::$_data['liste'][$keyEmp]['auswertung']['kontoaufloesung'] = [
'kommentar' => "$prozente% von Kontoauflösung" . $frauenpunkt_abgezogen . ' "' . $geber_company . '"',
'punkte' => $punkte_empf_anteil,
'gueltig_bis' => $geber_gueltig_bis->format("Y-m-d") ?? '',
];
}
}
}
}
}
}
}
// REMOVE AUFGELÖSTE KONTEN
$tmp = _Berechnung::$_data['liste'];
_Berechnung::$_data['liste'] = [];
foreach ($tmp as $keyEmp => $_value_liste) {
if($_value_liste['kontoaufloesung_active'] == '0000-00-00' OR $_value_liste['kontoaufloesung_active'] >= _Berechnung::$berechne_bis->format('Y-m-d')){
_Berechnung::$_data['liste'][] = $_value_liste;
}
}
}
}
@@ -0,0 +1,338 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use DateTime;
use DateInterval;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Berechnung\Tools\TageInRuhestellung;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Erfolgspunkte
{
/**
* @return string
*/
public static $buero_id = 0;
public static $extrapunkte_jahr = [];
/**
* bis bei Auflösung von Bürogemeinschaften
*/
public static function load_user(&$_liste, $user_id, $name)
{
_Berechnung::$debug = 0;
if (_Berechnung::$debug) {
Message::debug(
__FILE__,
__LINE__,
"Erfolgspunkte"
);
}
// $anzeigemodus = GeneralUtility::_GP('anzeigemodus');
if (!isset(_Berechnung::$_data['sektionstage'])) {
Sektionstage::load();
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe');
$queryBuilder
->select(
'tx_zuladungsliste_domain_model_wettbewerbe.uid AS verfahrensid',
'tx_zuladungsliste_domain_model_wettbewerbe.wettbewerb',
'tx_zuladungsliste_domain_model_wettbewerbe.kriteriumid',
'tx_zuladungsliste_domain_model_wettbewerbe.entscheidungstermin',
'tx_zuladungsliste_domain_model_wettbewerbe.kammerbeschluss',
'tx_zuladungsliste_domain_model_wettbewerbe.sperrung AS sperrung_wettbewerb',
'tx_zuladungsliste_domain_model_wettbewerbe.sperre_deaktiviert',
'tx_zuladungsliste_domain_model_wettbewerbe.loserverfahren',
'b.ladung_durch_auslober',
'b.uid_punkte',
'b.sperrzeitteilung',
'b.nichtsperren',
)
->from('tx_zuladungsliste_domain_model_wettbewerbe')
->leftJoin(
'tx_zuladungsliste_domain_model_wettbewerbe',
'tx_zuladungsliste_wettbewerbe_architekten_mm',
'b',
$queryBuilder->expr()->eq(
'b.uid_wettbewerbe',
$queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_wettbewerbe.uid')
)
)
->where(
// $queryBuilder->expr()->eq('tx_zuladungsliste_domain_model_wettbewerbe.uid', (int)992),
$queryBuilder->expr()->eq('b.uid_user', (int)$user_id)
);
$statement = $queryBuilder->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note("Wettbewerbe\n" . $queryBuilder->getSQL());
}
/*--------------------------------------------------------------------------------------------------------------
PUNKTE
--------------------------------------------------------------------------------------------------------------*/
// $statement = self::punkteVergabe($statement);
// print_r($statement);
// exit;
/*--------------------------------------------------------------------------------------------------------------
Bürogemeinschften haben gleiche ID aber verschidene user
--------------------------------------------------------------------------------------------------------------*/
if (self::$buero_id != $_liste['user_id']) {
$_liste["gesperrt_bis"] = 0;
$_liste["gesperrt"] = 0;
$_liste["nominiert"] = 1;
}
/*--------------------------------------------------------------------------------------------------------------
Punke => für Punkteverfall immer ab "entscheidungstermin"
--------------------------------------------------------------------------------------------------------------*/
$_return_sort = [];
self::$extrapunkte_jahr = [];
foreach ($statement as $row) {
$uid_punkte = (int) $row["uid_punkte"];
$kriteriumid = $row['kriteriumid'];
$loserverfahren = $row['loserverfahren'];
if ($row['entscheidungstermin'] == "") {
$row['entscheidungstermin'] = 0;
}
if ($row['kammerbeschluss'] == "") {
$row['kammerbeschluss'] = 0;
}
if ($_liste['burogemeinschaft']) {
$row['teilnehmer'] = $name;
}
$row['bezeichnung_punkte'] = _Berechnung::$_bezeichnung_punkte[$uid_punkte]['bezeichnung'] ?? '';
$row['bezeichnung'] = _Berechnung::$_kriterien[$kriteriumid]['bezeichnung'];
$entscheidungstermin = strtotime($row["entscheidungstermin"]);
if(isset(_Berechnung::$_data['ruhestellungen'][$user_id])){
$ruhestellungen = _Berechnung::$_data['ruhestellungen'][$user_id];
$tage = TageInRuhestellung::get($ruhestellungen);
// $tage = 0;
// foreach ($ruhestellungen as $key => $ruhe) {
// if($ruhe['ruhestellung_end'] != 'offen'){
// $tage += $ruhe['tage'];
// }
// }
$_liste['tage_in_ruhestellung'] = $tage;
$row['tage_in_ruhestellung'] = $tage;
// Ruhestellung wurde beended, tage der Ruhestellung werden dem Entscheidungstermin hinzugezählt
$entscheidungstermin += $tage * 86400;
}
// echo "\nentscheidungstermin nachher\n";
// echo $entscheidungstermin;
// exit;
/**
* PUNKTE
* Punkteverfall immer ab entscheidungstermin
*/
if ((int)$entscheidungstermin) {
$_sektionstag = Sektionstage::filter($entscheidungstermin);
$row["regelwerk"] = $_sektionstag["bezeichnung"];
/**
* Punkte gültigkeit
*/
$gueltig_bis = new DateTime();
$gueltig_bis->setTimestamp($entscheidungstermin);
$gueltig_bis->add(new DateInterval("P".$_sektionstag["punktezeit"]."M"));
$row["gueltig_bis"] = $gueltig_bis->format("Y-m-d");
$row["wettbewerb_sort"] = $entscheidungstermin;
/**
* Punkte jährliche nur wenn Punkte
*/
// print_r(_Berechnung::$_bezeichnung_punkte);
// exit;
$jahr = date("Y", $entscheidungstermin);
if (isset(_Berechnung::$_bezeichnung_punkte[$uid_punkte]['einmal_im_jahr']) and _Berechnung::$_bezeichnung_punkte[$uid_punkte]['einmal_im_jahr'] == 1) {
$row['einmal_im_jahr'] = 1;
if(!in_array($jahr, self::$extrapunkte_jahr)) {
$row['punkte'] = (float) _Berechnung::$_punkte[$kriteriumid][$uid_punkte] ?? 0;
self::$extrapunkte_jahr[] = $jahr;
}
} else {
$row['einmal_im_jahr'] = 0;
$row['punkte'] = (float) _Berechnung::$_punkte[$kriteriumid][$uid_punkte] ?? 0;
}
$gueltig_bis = new DateTime($row['gueltig_bis']);
$row["punkte_aktive"] = $gueltig_bis->format("U") >= _Berechnung::$berechne_bis ->format('U') ? 1 : 0;
// print_r($row);
// exit;
if($row["punkte_aktive"]){
$punkte = (float) $row['punkte'];
$_liste["punkte"] += $punkte;
}
// b) bei Gleichstand: Ältestes in der Wertung
// befindliche Zuerkennungs-, Entscheidungs- oder Vereidigungsdatum geht vor
if ($punkte and $entscheidungstermin < $_liste["sorting"]) {
$_liste["sorting"] = $entscheidungstermin;
}
} else {
$row["entscheidungstermin"] = "";
$row["wettbewerb_sort"] = $_liste["sorting"];
}
/**
* SPERREN
* immer ab Freigabedatum (Kooperationsdatum)
* ohne kooperationsdatum gibt es keine Sperre
*/
if ($row["kammerbeschluss"] != "" and $row["nichtsperren"] == 0) {
/**
* nichtsperren
* Einzelner Teilnehmer kann für Teilnahme an Bewerb nicht geperrt werden
* auch wenn das Kriterium eine Sperrung vorgibt
*/
$kammerbeschluss = new DateTime($row["kammerbeschluss"]);
if ((int)$entscheidungstermin) {
$_sektionstag = Sektionstage::filter($entscheidungstermin);
} elseif ((int)$kammerbeschluss) {
$_sektionstag = Sektionstage::filter($kammerbeschluss->format("U"));
}
$sperrung_kriterien = _Berechnung::$_kriterien[$kriteriumid]['sperrung'];
if ($row["sperre_deaktiviert"]==0 and ($sperrung_kriterien or $row["sperrung_wettbewerb"])) {
/**
* KRITERIUM MIT SPERRUNG
*/
switch ($row['ladung_durch_auslober']) {
case 3:
// case "sperrzeitteilung == 2" Bei gemeinschaftlichem Antreten wurde schon verkürzt.
/**
* Active Sperrzeit wird auf im Sektionstag beschlossene Monate verkürzt
* Daniela mail 16.11
* Mir ist aufgefallen, dass wenn ich eingebe „Zuladung durch Auslober“ oder „Zuladung durch Kammer“
* sich eine Sperrzeitreduktion ergibt. Das sollte bitte nicht sein.
* Eine Reduktion ergibt sich nur bei „Auslosen“.
*/
/**
* Keine Spezielle Zuladung => 0
* Zuladung durch Auslober:in => 1
* Zuladung durch Kammer => 2
* Auslosung => 3
*/
$row['ladung_durch_auslober_monate'] = $_sektionstag['ausloberladung'];
$_sektionstag["sperrzeit"] = $_sektionstag['ausloberladung'];
break;
case 1:
if($loserverfahren == 1) {
// Maximale Sperrzeiten werden auch für Architekten:innen die durch die/den Auslober:in
// zugeladen wurden auf die im Sektionstag festgelegten Monate verkürzt wenn der Wettbewerb durch Losverfahren ermittelt wird
$row['ladung_durch_auslober_monate'] = $_sektionstag['ausloberladung'];
$_sektionstag["sperrzeit"] = $_sektionstag['ausloberladung'];
}
break;
}
$month = $_sektionstag['sperrzeit'];
if ($row["sperrzeitteilung"] > 0) {
/**
* größe sperrzeitteilung ist auch divisor
*/
$month = round($month/$row["sperrzeitteilung"], 2);
}
$datetime_gesperrt_bis = new DateTime($row["kammerbeschluss"]);
if ($month > 0) {
$datetime_gesperrt_bis->modify("+".$month." months");
}
$row["gesperrt_bis"] = date("Y-m-d", $datetime_gesperrt_bis->format("U"));
/**
* Sperre
*/
// Ruhestellungen::sperre($user_id, $row, $_liste);
/*--------------------------------------------------------------------------------------------------------------
Sperren => immer ab Freigabedatum (Kooperationsdatum)!! in db: "kammerbeschluss" ohne kooperationsdatum gibt es keine Sperre
--------------------------------------------------------------------------------------------------------------*/
$row["sperrung_aktive"] = $datetime_gesperrt_bis->format("U") > _Berechnung::$_config['berechne_bis'] ? 1 : 0;
if ($row["gesperrt_bis"] == 'Ruhend' or ($row["sperrung_aktive"] and strtotime($row["gesperrt_bis"]) > strtotime($_liste["gesperrt_bis"]))) {
$_liste["gesperrt_bis"] = $row["gesperrt_bis"];
$_liste["gesperrt"] = 1;
$_liste["nominiert"] = 0;
}
// if ($row['verfahrensid'] == 1152) {
// echo "\n---------------\n" . __line__ . " END \n---------------\n\n";
// print_r($row);
// exit;
// }
}
}
// anzeigemodus (für FFP werden alle gebrauch remove them at the end)
$_return_sort[] = $row;
// if (($row['punkte'] and $row['punkte_aktive']) or $anzeigemodus > 1 or $row['sperrung_aktive']) {
// $_return_sort[] = $row;
// }
}
$_return_sort = array_merge($_liste["auswertung"]["wettbewerbe"], $_return_sort);
if ($_return_sort) {
$wettbewerb_sort = array_column($_return_sort, 'wettbewerb_sort');
array_multisort($wettbewerb_sort, SORT_ASC, $_return_sort);
}
// WETTBEWERBE ERFOLGSPUNKTE
$_liste["auswertung"]["wettbewerbe"] = $_return_sort;
// damit liste nicht ünerschrieben wird bei Bürogemeinschaften
self::$buero_id = $_liste['user_id'];
}
}
@@ -0,0 +1,346 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
* FRAUENFÖRDERPUNKT
* Gültigkeit hat der Frauenförderpunkt dann drei Jahre ab Jurydatum des erzielten Erfolges bzw. der Wettbewerbsteilnahme.
* Mit dem Verfall der Punkte für den Wettbewerbserfolg bzw. für die Wettbewerbsteilnahme (drei Jahre ab Jurydatum) würde auch der Frauenförderpunkt verfallen,
* außer es sind wieder neue Wettbewerbserfolge/-teilnahmen dazugekommen. Es wird immer das neueste Jurydatum herangezogen.
* Wenn generell keine Punkte dazugekommen sind, bleibt der Frauenförderpunkt - wie gehabt – fünf Jahre ab Vereidigungsdatum in der Liste.
*
* Vor den Änderungen der Kriterien am 25.04.2022 war es so, dass der Frauenpunkt ab Vereidigungsdatum 5 Jahre gültig war und dann verfallen ist.
*/
class Frauen
{
public static $frauenfoerderpunkte = [];
/**
* @return void
*/
public static function load()
{
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, "Frauen Förderungs Punkt");
}
// print_r(_Berechnung::$_data);
// exit;
$sondersperrungen = _Berechnung::$_data['sondersperrungen'];
$sektionstage = _Berechnung::$_data['sektionstage'];
$ruhestellungen = _Berechnung::$_data['ruhestellungen'];
$berechnen_bis = Carbon::createFromDate(_Berechnung::$berechne_bis);
// print_r(_Berechnung::$_data['ruhestellungen']);
// exit;
$kammerBeschluss2022 = Carbon::createFromDate(2022, 04, 25);
foreach (_Berechnung::$_data['liste'] as $listenkey => $user_objekt) {
// print_r($user_objekt);
// exit;
$user_ruhestellungen = $ruhestellungen[$user_objekt['id']] ?? null;
$wettbewerbe = $user_objekt['auswertung']['wettbewerbe'] ?? [];
$ist_bueogemeinschaft = (bool) $user_objekt["burogemeinschaft"];
$hat_frauenfoerderpunkt = (bool) $user_objekt["frauenfoerderpunkt"];
$days_verlaengerung = 0;
if(is_array($user_ruhestellungen)){
$days_verlaengerung = self::getVerlaengerungDurchRuhestellung( $user_ruhestellungen);
}
if(!$ist_bueogemeinschaft && ! $hat_frauenfoerderpunkt){
if (GeneralUtility::_GP('anzeigemodus') > 1) {
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['kommentar'] = "Kein Anspruch";
}
}
else if($hat_frauenfoerderpunkt){
$kommentar = '';
$punkte = 0;
$ruhestellung = '';
$verfallen = false;
$vereidigung = Carbon::createFromDate($user_objekt['vereidigung'])->addYears(5);
$ffp = Carbon::createFromDate($user_objekt['vereidigung']);
$summe_punkte = array_sum(array_column($wettbewerbe,'punkte'));
/**
* Vereidigung + 5 Jahre VOR Kammerbeschluss (25.4.2022) => FFP verfällt
* || $berechnen_bis->greaterThan($vereidigung)
*/
if($kammerBeschluss2022->greaterThan($vereidigung)){
// schon verfallene bleiben verfallen
$kommentar = "Verfallen am ".$vereidigung->format('d. M Y');
$verfallen = true;
$punkte = 0;
}
else if (!$summe_punkte && $kammerBeschluss2022->greaterThan($vereidigung)){
// keine wettbewerbe
$kommentar = "Verfallen am ".$vereidigung->format('d. M Y');
$verfallen = true;
$punkte = 0;
} else if(!$summe_punkte && $berechnen_bis->greaterThan($vereidigung)){
$kommentar = "Verfallen am ".$vereidigung->format('d. M Y');
$verfallen = true;
$punkte = 0;
}
else {
$punkte = 1;
$kommentar = "Gültig bis ".$vereidigung->format('d. M Y');
}
$ffp->addYears(3);
foreach ($wettbewerbe as $wettbewerb) {
if(!$verfallen){
$stichtag = self::stichtag($wettbewerb);
if($stichtag && $wettbewerb['punkte'] >0){
/**
* EINZELN
*/
$stichtag_p3 = Carbon::createFromDate($stichtag)->addYears(3);
// if($days_verlaengerung){
// $stichtag_p3->addDays($days_verlaengerung);
// $ruhestellung = ' (verlängert durch Ruhestellung)';
// }
if($stichtag_p3->diffInYears($ffp) < 3 or $vereidigung->greaterThan($stichtag)){
$ffp = $stichtag_p3;
$punkte = 1;
if($vereidigung->greaterThan($ffp)){
$ffp = $vereidigung;
$kommentar = "Gültig bis ".$ffp->format('d. M Y').$ruhestellung;
}
else {
$kommentar = "Gültig bis ".$ffp->format('d. M Y'). ' (verlängert)'.$ruhestellung;
}
} else{
$kommentar = "Verfallen am ".$ffp->format('d. M Y');
$verfallen = true;
$punkte = 0;
}
}
}
}
_Berechnung::$_data['liste'][$listenkey]["punkte"] += $punkte;
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['punkte'] = $punkte;
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['kommentar'] = $kommentar;
}
else if($ist_bueogemeinschaft){
$kommentare = [];
$punkte = [];
$ruhestellung = '';
$verfallen = false;
$burogemeinschaft = $user_objekt['auswertung']['burogemeinschaft'] ?? [];
$summe_punkte = array_sum(array_column($wettbewerbe,'punkte'));
$order = $burogemeinschaft['order'];
foreach ($burogemeinschaft['data'] as $partner) {
/**
* bei mehreren Frauen in Bürogemeinschaft
*/
if($partner["frauenfoerderpunkt"] > 0){
$suplement = '<sup>'.$order[$partner['name']].'</sup>';
$pntr = $order[$partner['name']];
$vereidigung = Carbon::createFromDate($partner['vereidigung'])->addYears(5);
$ffp = Carbon::createFromDate($partner['vereidigung']);
$verfallen = false;
/**
* Vereidigung + 5 Jahre VOR Kammerbeschluss (25.4.2022) => FFP verfällt
*/
if($kammerBeschluss2022->greaterThan($vereidigung)){
$kommentare[$pntr] = "Verfallen am ".$vereidigung->format('d. M Y').$suplement;
$verfallen = true;
$punkte[$pntr] = 0;
}
else if (!$summe_punkte && $kammerBeschluss2022->greaterThan($vereidigung)){
// keine wettbewerbe
// beschluss vor vereidigung
$kommentare[$pntr] = "Verfallen am ".$vereidigung->format('d. M Y');
$verfallen = true;
$punkte[$pntr] = 0;
} else if(!$summe_punkte && $berechnen_bis->greaterThan($vereidigung)){
// keine wettbewerbe
// berechnen bis vor vereidigung punkt verfallen
$kommentare[$pntr] = "Verfallen am ".$vereidigung->format('d. M Y');
$verfallen = true;
$punkte[$pntr] = 0;
}
else {
$punkte[$pntr] = 1;
$kommentare[$pntr] = "Gültig bis ".$vereidigung->format('d. M Y').$suplement;
}
/**
* vor Kammerbeschluss vom 25.04.22 verfällt Punkt nach 5 Jahren wenn kein neuer Punkte erzielt wurden, er wird auch nicht mehr aktiviert
*/
$ffp->addYears(3);
foreach ($wettbewerbe as $wettbewerb) {
if(!$verfallen){
$stichtag = self::stichtag($wettbewerb);
if($stichtag && $wettbewerb['punkte']){
/**
* BÜRO
*/
$stichtag_p3 = Carbon::createFromDate($stichtag)->addYears(3);
// if($days_verlaengerung){
// $stichtag_p3->addDays($days_verlaengerung);
// $ruhestellung = ' (verlängert durch Ruhestellung)';
// }
if($stichtag_p3->diffInYears($ffp) < 3 or $vereidigung->greaterThan($stichtag)){
$ffp = $stichtag_p3;
if($vereidigung->greaterThan($ffp)){
$ffp = $vereidigung;
}
$punkte[$pntr] = 1;
$kommentare[$pntr] = "Gültig bis ".$ffp->format('d. M Y'). ' (verlängert)'.$ruhestellung.$suplement;
} else{
$kommentare[$pntr] = "Verfallen am RR ".$ffp->format('d. M Y').$suplement;
$punkte[$pntr] = 0;
$verfallen = true;
}
}
}
}
}
}
if(count($kommentare)) {
$kommentar = implode('<br>',$kommentare);
_Berechnung::$_data['liste'][$listenkey]["punkte"] += array_sum($punkte);
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['punkte'] = array_sum($punkte);
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['kommentar'] = $kommentar;
}
}
}
}
public static function stichtag($wettbewerb){
if(isset($wettbewerb['entscheidungstermin']) && $wettbewerb['entscheidungstermin'] != null){
return $wettbewerb['entscheidungstermin'];
}
else if(isset($wettbewerb['kammerbeschluss']) && $wettbewerb['kammerbeschluss'] != null){
return $wettbewerb['kammerbeschluss'];
}
return false;
}
public static function getVerlaengerungDurchRuhestellung( $user_ruhestellungen){
// print_r($user_ruhestellungen);
$days_summe = 0;
$_periods = [];
foreach ($user_ruhestellungen as $ruhestellung) {
$ruhestellung_start = Carbon::parse( $ruhestellung['ruhestellung_start']);
if($ruhestellung['ruhestellung_end'] == 'offen'){
$ruhestellung_end = Carbon::parse(_Berechnung::$_config['berechne_bis_datum']);
}else {
$ruhestellung_end = Carbon::parse( $ruhestellung['ruhestellung_end']);
}
$_periods[] = CarbonPeriod::create($ruhestellung_start, $ruhestellung_end);
$days = $ruhestellung_end->diffInDays($ruhestellung_start);
$days_summe +=$days;
}
// $overlapDays = self::overlapping($_periods);
return $days_summe;
}
public static function overlapping($_periods){
if(count($_periods) <= 1){
return 0;
}
$overlapDays = 0;
for ($i=0; $i < count($_periods); $i++) {
if(isset($_periods[$i]) && isset($_periods[$i + 1])){
$range1 = $_periods[$i];
$range2 = $_periods[$i + 1];
if ($range1->overlaps($range2)) {
// Find the overlapping start/end
$start = $range1->getStartDate()->greaterThan($range2->getStartDate()) ? $range1->getStartDate() : $range2->getStartDate();
$end = $range1->getEndDate()->lessThan($range2->getEndDate()) ? $range1->getEndDate() : $range2->getEndDate();
// Count days (including end date)
$overlapDays += (int) $start->diffInDays($end) + 1; // Result: 17
}
}
}
return $overlapDays;
}
}
@@ -0,0 +1,32 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Frauen;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use Carbon\Carbon;
class FilterWettbewerbe
{
public static function filter(&$_liste, &$wettbewerbe, $gemeischaft = [])
{
print_r($_liste);
print_r($wettbewerbe);
// exit;
$sondersperrungen = _Berechnung::$_data['sondersperrungen'];
$sektionstage = _Berechnung::$_data['sektionstage'];
$ruhestellungen = _Berechnung::$_data['ruhestellungen'];
$berechnen_bis = Carbon::createFromDate(_Berechnung::$berechne_bis);
$kammerBeschluss2022 = Carbon::createFromDate(2022, 04, 25);
}
}
@@ -0,0 +1,99 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Frauen;
use HermannTelser\Zuladungsliste\Berechnung\Frauen;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use Carbon\Carbon;
class FrauenPunkteBewertung
{
/**
* Erklärung:
* Den Frauenförderpunkt erhält jede Frau, ausschlaggebend ist das Vereidigungsdatum. Ab dem Vereidigungsdatum (Tag der Eidesablegung) bleibt der Frauenförderpunkt 5 Jahre in der Wertung
* Sollte diese Frau aber in der Folge Wettbewerbspunkte erzielt haben, verlängert sich die Dauer der Wertung um diejenige Zeit, bis zu dem auch der Punkt dieses Wettbewerbserfolges verfallen würde.
*
* @param mixed $_liste
* @return void
*/
public static function lade()
{
// print_r(_Berechnung::$_data['liste']);exit;
foreach (_Berechnung::$_data['liste'] as $key => $value) {
$berechnen_bis = Carbon::createFromDate(_Berechnung::$berechne_bis);
if(isset($value['auswertung']['burogemeinschaft']['order'])){
$order = $value['auswertung']['burogemeinschaft']['order'];
}
$punkt = 0;
$kommentar = "";
$vereidigung = Carbon::createFromDate($value['ffp']['vereidigung']);
$name = $value['ffp']['name'];
$sup = '';
if(isset($order[$name])){
$sup = '<sup>'.$order[$name].'</sup><br>';
}
if($vereidigung->greaterThan($berechnen_bis)){
$punkt = 0;
$kommentar = " Verfallen am ".$vereidigung->format('d. M Y').$sup;
} else {
$punkt = 1;
$kommentar = " Gültig bis ".$vereidigung->format('d. M Y').$sup;
}
// foreach ($value['ffp'] as $user_id => $ffps) {
// $sort = array_column($ffps['opjekte'], 'entscheidungstermin');
// array_multisort($sort, SORT_ASC, SORT_REGULAR ,$ffps['opjekte']);
// /**
// * filter double
// */
// $match = '';
// $ffpObjekte = [];
// foreach ($ffps['opjekte'] as $value) {
// if($match != $value['entscheidungstermin']){
// $match = $value['entscheidungstermin'];
// $ffpObjekte[] = $value;
// }
// }
// foreach ($ffpObjekte as $k => $ffp) {
// $entscheidungstermin = Carbon::parse($ffp['entscheidungstermin']);
// if($k == 0){
// if($entscheidungstermin > $vereidigung){
// // 1. Projekt mehr al 5 Jahre nach der Vereidigung, der FFP wird nicht mehr aktiviert
// break;
// }
// }
// $entscheidungstermin = Carbon::parse($ffp['entscheidungstermin'])->addYears(5);
// // echo $vereidigung->format('d. M Y')."\n";
// // echo $entscheidungstermin->format('d. M Y')."\n";
// if($entscheidungstermin < $berechnen_bis){
// $punkt = 0;
// $kommentar = " Verfallen am ".$entscheidungstermin->format('d. M Y').$sup;
// }else {
// $punkt = 1;
// $kommentar = " Gültig bis ".$entscheidungstermin->format('d. M Y').$sup;
// }
// }
// }
if($kommentar){
_Berechnung::$_data['liste'][$key]["punkte"] += $punkt;
_Berechnung::$_data['liste'][$key]["auswertung"]["frauenfoerderpunkt"]['punkte'] = $punkt;
_Berechnung::$_data['liste'][$key]["auswertung"]["frauenfoerderpunkt"]['kommentar'] = $kommentar;
}
}
}
}
@@ -0,0 +1,29 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Frauen;
use HermannTelser\Zuladungsliste\Berechnung\Frauen;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
class FrauenRuhestellung
{
public static function load(){
if(isset(_Berechnung::$_data['ruhestellungen'])){
foreach (_Berechnung::$_data['liste'] as $key => $value) {
if(isset($value['ffp'])){
foreach ($value['ffp'] as $user_id => $value) {
if(isset(_Berechnung::$_data['ruhestellungen'][$user_id])){
foreach ( _Berechnung::$_data['ruhestellungen'][$user_id] as $ruhestellungen) {
$ruhestellungen['entscheidungstermin'] = $ruhestellungen['ruhestellung_start'];
foreach (_Berechnung::$_data['liste'][$key]['ffp'] as $user_id => $value) {
_Berechnung::$_data['liste'][$key]['ffp'][$user_id]['opjekte'][] = $ruhestellungen;
}
}
}
}
}
}
}
}
}
@@ -0,0 +1,16 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Frauen;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
class GetGeber
{
public static function load($uid)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_konto_aufloesung_mm');
$queryBuilder->select('uid_geber')->from('tx_zuladungsliste_konto_aufloesung_mm')->where($queryBuilder->expr()->eq('uid_empfaenger', (int) $uid));
return $queryBuilder->execute()->fetchAll();
}
}
@@ -0,0 +1,31 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Frauen;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
class LoadWettbewerbe
{
public static function load($uid, $stichtagVerlaengerung)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder->select('uid_wettbewerbe')->from('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where($queryBuilder->expr()->eq('uid_user', (int) $uid));
$uid_wettbewerbe = $queryBuilder->execute()->fetchAll();
$arr = [];
foreach ($uid_wettbewerbe as $value) {
$arr[] = $value['uid_wettbewerbe'];
}
if($arr){
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe');
$queryBuilder->select('wettbewerb','entscheidungstermin','kammerbeschluss')->from('tx_zuladungsliste_domain_model_wettbewerbe')
->where(
$queryBuilder->expr()->gt('entscheidungstermin', $stichtagVerlaengerung->format('Y-m-d')),
$queryBuilder->expr()->in('uid', $arr)
);
return $queryBuilder->execute()->fetchAll();
}
return [];
}
}
@@ -0,0 +1,25 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Frauen;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
class SetVerfallen
{
public static function setDatum($verfallsdatum, $uid)
{
if(_Berechnung::$debug){
echo "Set FFP Datum: " . $verfallsdatum;
echo "\n<br>";
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder->update('fe_users')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid),
)
->set('frauenfoerderpunkt_verfallen', (string) $verfallsdatum)
->execute();
}
}
@@ -0,0 +1,261 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
use HermannTelser\Zuladungsliste\Berechnung\Frauen\FrauenPunkteBewertung;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
* FRAUENFÖRDERPUNKT
* Gültigkeit hat der Frauenförderpunkt dann drei Jahre ab Jurydatum des erzielten Erfolges bzw. der Wettbewerbsteilnahme.
* Mit dem Verfall der Punkte für den Wettbewerbserfolg bzw. für die Wettbewerbsteilnahme (drei Jahre ab Jurydatum) würde auch der Frauenförderpunkt verfallen,
* außer es sind wieder neue Wettbewerbserfolge/-teilnahmen dazugekommen. Es wird immer das neueste Jurydatum herangezogen.
* Wenn generell keine Punkte dazugekommen sind, bleibt der Frauenförderpunkt - wie gehabt – fünf Jahre ab Vereidigungsdatum in der Liste.
*
* Vor den Änderungen der Kriterien am 25.04.2022 war es so, dass der Frauenpunkt ab Vereidigungsdatum 5 Jahre gültig war und dann verfallen ist.
*/
class FrauenFoerderPunkt
{
public static $frauenfoerderpunkte = [];
/**
* @return void
*/
public static function berechnen()
{
_Berechnung::$debug = 1;
print_r(_Berechnung::$_data['liste']);
exit;
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, "Frauen Förderungs Punkt");
}
$kammerBeschluss2022 = Carbon::createFromDate(2022, 04, 25);
$berechnen_bis = Carbon::createFromDate(_Berechnung::$berechne_bis);
foreach (_Berechnung::$_data['liste'] as $key => $_liste) {
$ist_bueogemeinschaft = (bool) $_liste["burogemeinschaft"];
$hat_frauenfoerderpunkt = (bool) $_liste["frauenfoerderpunkt"];
if(!$ist_bueogemeinschaft && ! $hat_frauenfoerderpunkt){
if (GeneralUtility::_GP('anzeigemodus') > 1) {
$_liste["auswertung"]["frauenfoerderpunkt"]['punkte'] = 0;
$_liste["auswertung"]["frauenfoerderpunkt"]['kommentar'] = "Kein Anspruch";
}
}
else if($hat_frauenfoerderpunkt){
}
// print_r($_liste);
// exit;
foreach ($_liste as $listenkey => $user_objekt) {
// print_r($user_objekt);
// exit;
$user_ruhestellungen = $ruhestellungen[$user_objekt['id']] ?? null;
$wettbewerbe = $user_objekt['auswertung']['wettbewerbe'] ?? [];
$ist_bueogemeinschaft = (bool) $user_objekt["burogemeinschaft"];
$hat_frauenfoerderpunkt = (bool) $user_objekt["frauenfoerderpunkt"];
$days_verlaengerung = 0;
if(is_array($user_ruhestellungen)){
$days_verlaengerung = self::getVerlaengerungDurchRuhestellung( $user_ruhestellungen);
}
$kommentare = [];
$punkte = 0;
if(!$ist_bueogemeinschaft && ! $hat_frauenfoerderpunkt){
if (GeneralUtility::_GP('anzeigemodus') > 1) {
$kommentar = "Kein Anspruch";
}
}
else if(! $ist_bueogemeinschaft && $hat_frauenfoerderpunkt){
$vereidigung_p5 = Carbon::createFromDate($user_objekt['vereidigung'])->addYears(5);
/**
* vor Kammerbeschluss verfällt Punkt nach 5 Jahren und wird auch nicht mehr aktiviert
*/
if($kammerBeschluss2022->greaterThan($vereidigung_p5)){
$kommentare[] = "Verfallen am ".$vereidigung_p5->addDays($days_verlaengerung)->format('d. M Y');
}
else {
if($vereidigung_p5->greaterThan($berechnen_bis)){
$punkte += 1;
$kommentare[] = "Gültig bis ".$vereidigung_p5->addDays($days_verlaengerung)->format('d. M Y');
}
foreach ($wettbewerbe as $wettbewerb) {
/**
* Stichtag vom Wettbewerb
*/
$stichtagstring = self::stichtag($wettbewerb);
if($stichtagstring){
$stichtag_p3 = Carbon::createFromDate($stichtagstring)->addYears(3);
if($stichtag_p3->greaterThan($berechnen_bis)){
$punkte += 1;
$kommentare[] = "Gültig bis ".$stichtag_p3->addDays($days_verlaengerung)->format('d. M Y'). ' (verlängert)';
} else {
$kommentare[] = " Verfallen am ".$stichtag_p3->addDays($days_verlaengerung)->format('d. M Y');
}
}
}
}
}
else if($ist_bueogemeinschaft){
$burogemeinschaft = $user_objekt['auswertung']['burogemeinschaft'] ?? [];
$order = $burogemeinschaft['order'];
foreach ($burogemeinschaft['data'] as $partner) {
/**
* bei mehreren Frauen in Bürogemeinschaft
*/
$hat_frauenfoerderpunkt = (bool) $partner["frauenfoerderpunkt"] ? true : false;
if($hat_frauenfoerderpunkt){
$suplement = '<sub>'.$order[$partner['name']].'</sub>';
$vereidigung_p5 = Carbon::createFromDate($partner['vereidigung'])->addYears(5);
/**
* vor Kammerbeschluss verfällt Punkt nach 5 Jahren und wird auch nicht mehr aktiviert
*/
if($kammerBeschluss2022->greaterThan($vereidigung_p5)){
$kommentare[] = "Verfallen am ".$vereidigung_p5->addDays($days_verlaengerung)->format('d. M Y').$suplement;
}
else {
if($vereidigung_p5->greaterThan($berechnen_bis)){
$punkte += 1;
$kommentare[] = "Gültig bis ".$vereidigung_p5->addDays($days_verlaengerung)->format('d. M Y').$suplement;
}
foreach ($wettbewerbe as $wettbewerb) {
/**
* Stichtag vom Wettbewerb
*/
$stichtagstring = self::stichtag($wettbewerb);
if($stichtagstring){
$stichtag_p3 = Carbon::createFromDate($stichtagstring)->addYears(3);
if($stichtag_p3->greaterThan($berechnen_bis)){
$punkte += 1;
$kommentare[] = "Gültig bis ".$stichtag_p3->addDays($days_verlaengerung)->format('d. M Y'). ' (verlängert)'.$suplement;
} else {
$kommentare[] = " Verfallen am ".$stichtag_p3->addDays($days_verlaengerung)->format('d. M Y').$suplement;
}
}
}
}
}
}
}
if(count($kommentare)) {
$kommentar = implode('<br>',$kommentare);
_Berechnung::$_data['liste'][$listenkey]["punkte"] += $punkte;
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['punkte'] = $punkte;
_Berechnung::$_data['liste'][$listenkey]["auswertung"]["frauenfoerderpunkt"]['kommentar'] = $kommentar;
}
}
}
}
public static function stichtag($wettbewerb){
if(isset($wettbewerb['entscheidungstermin']) && $wettbewerb['entscheidungstermin'] != null){
return $wettbewerb['entscheidungstermin'];
}
else if(isset($wettbewerb['kammerbeschluss']) && $wettbewerb['kammerbeschluss'] != null){
return $wettbewerb['kammerbeschluss'];
}
return false;
}
public static function getVerlaengerungDurchRuhestellung( $user_ruhestellungen){
$days_summe = 0;
foreach ($user_ruhestellungen as $ruhestellung) {
$ruhestellung_start = Carbon::parse( $ruhestellung['ruhestellung_start']);
if($ruhestellung['ruhestellung_end'] == 'offen'){
$ruhestellung_end = Carbon::parse(_Berechnung::$_config['berechne_bis_datum']);
}else {
$ruhestellung_end = Carbon::parse( $ruhestellung['ruhestellung_end']);
}
$_periods[] = CarbonPeriod::create($ruhestellung_start, $ruhestellung_end);
$days = $ruhestellung_end->diffInDays($ruhestellung_start);
$days_summe +=$days;
}
return $days_summe;
}
// public static function overlapping($_periods){
// if(count($_periods) <= 1){
// return 0;
// }
// $overlapDays = 0;
// for ($i=0; $i < count($_periods); $i++) {
// if(isset($_periods[$i]) && isset($_periods[$i + 1])){
// $range1 = $_periods[$i];
// $range2 = $_periods[$i + 1];
// if ($range1->overlaps($range2)) {
// // Find the overlapping start/end
// $start = $range1->getStartDate()->greaterThan($range2->getStartDate()) ? $range1->getStartDate() : $range2->getStartDate();
// $end = $range1->getEndDate()->lessThan($range2->getEndDate()) ? $range1->getEndDate() : $range2->getEndDate();
// // Count days (including end date)
// $overlapDays += (int) $start->diffInDays($end) + 1; // Result: 17
// }
// }
// }
// return $overlapDays;
// }
}
@@ -0,0 +1,131 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Utilities\Zeit;
use DateTime;
use DateInterval;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Neueinsteiger
{
/**
* @param mixed $_liste
* @param mixed $user_objekt
*
* @return void
*/
public static function load(&$_liste, $user_objekt, $burogemeinschaft)
{
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Load NeueinsteigerPunkt');
}
$anzeigemodus = GeneralUtility::_GP('anzeigemodus');
/***
* BÜROGEMEINSCHAFT
*/
if ($burogemeinschaft) {
$_partner = $_liste["auswertung"]["burogemeinschaft"]["data"];
$punkte = 0;
$kommentar = [];
$i=1;
foreach ($_partner as $key => $value) {
if ('0000-00-00' == $value['vereidigung']) {
$kommentar[] = "Vereidigungsdatum fehlt" . "<sup>$i</sup>";
} else {
$return = self::controll_ruhestellung_neueinsteiger($value, $_liste);
if ($return['status'] == 1) {
$punkte += 1;
$_liste['punkte'] = $_liste['punkte'] + 1;
$kommentar[] = $return['kommentar'] . "<sup>$i</sup>";
} elseif ($anzeigemodus > 1) {
$kommentar[] = $return['kommentar'] . "<sup>$i</sup>";
}
}
$i++;
}
if ($punkte or $anzeigemodus > 1) {
$_liste['auswertung']['neueinsteigerpunkt']['punkte'] = $punkte;
$_liste['auswertung']['neueinsteigerpunkt']['kommentar'] = implode("<br>", $kommentar);
}
} else {
/***
* REGULARE
*/
if ('0000-00-00' == $user_objekt['vereidigung']) {
$_liste['auswertung']['neueinsteigerpunkt']['punkte'] = 0;
$_liste['auswertung']['neueinsteigerpunkt']['kommentar'] = 'Kein Vereidigungsdatum verfügbar';
}
$return = self::controll_ruhestellung_neueinsteiger($user_objekt, $_liste);
if ($return['status'] == 1) {
$_liste['auswertung']['neueinsteigerpunkt']['punkte'] = 1;
$_liste['punkte'] = $_liste['punkte'] + 1;
$_liste['auswertung']['neueinsteigerpunkt']['kommentar'] = $return['kommentar'];
} else {
if ($anzeigemodus > 1) {
$_liste['auswertung']['neueinsteigerpunkt']['punkte'] = 0;
$_liste['auswertung']['neueinsteigerpunkt']['kommentar'] = $return['kommentar'];
}
}
}
}
private static function controll_ruhestellung_neueinsteiger($value, &$_liste)
{
$uid = $value['uid'];
$ruhestellungen = [];
if (isset(_Berechnung::$_data['ruhestellungen'][$uid])) {
$ruhestellungen = _Berechnung::$_data['ruhestellungen'][$uid];
}
// bei Bürogemeinschaft uid ist von partner, bürogemeinschaft hat keinen NeueinsteigerPunkt
$return = [];
$return['status'] = 0;
// set Tag der Vereidigung
$vereidigung = new DateTime($value['vereidigung']);
$_sektionstag = Sektionstage::filter($vereidigung->format("U"));
// Gültigkeits Dauer des neueinsteiger Punktes von Sektionstag
$neueinsteiger = $_sektionstag['neueinsteiger'];
$gueltig_bis = new DateTime($value['vereidigung']);
$gueltig_bis->add(new DateInterval("P" . $neueinsteiger . "M"));
/*--------------------------------------------------------------------------------------------------------------
Ruhestellung => für jede Ruhestellung werden die Punkte verlängert.
--------------------------------------------------------------------------------------------------------------*/
foreach ($ruhestellungen as $ruhestellung) {
// wenn die punkte noch gültig sind wird verlängert
if($gueltig_bis->format("Y-m-d") > $ruhestellung['ruhestellung_start']){
$gueltig_bis->modify($ruhestellung['tage']." days");
}
}
if ($gueltig_bis < _Berechnung::$berechne_bis) {
$return['status'] = 0;
$return['kommentar'] = "Verfallen am " . $gueltig_bis->format("d. M Y");
} else {
$return['status'] = 1;
$return['kommentar'] = "Gültig bis " . $gueltig_bis->format("d. M Y");
}
return $return;
}
}
@@ -0,0 +1,136 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use Carbon\Carbon;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Partner
{
/**
* @return string
*/
public static function load($user_objekt, $burogemeinschaft)
{
// _Berechnung::$debug = 1;
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Lade Partner');
}
if ($burogemeinschaft == 0) {
// keine bürogemeinschaft
return false;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder
->select(
'fe_users.uid',
'fe_users.first_name',
'fe_users.last_name',
'fe_users.vereidigung',
'fe_users.frauenfoerderpunkt',
'fe_users.frauenfoerderpunkt_verfallen',
'fe_users.solidaritaetserklaerung',
'a.punkte_mitnehmen'
)->from('fe_users')
->join(
'fe_users',
'tx_zuladungsliste_buro_gemeinschaft_mm',
'a',
$queryBuilder->expr()->eq('a.uid_user', $queryBuilder->quoteIdentifier('fe_users.uid'))
)
->where($queryBuilder->expr()->eq('uid_gemeinschaft', (int) $user_objekt["uid"]));
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$ref = $queryBuilder->execute()->fetchAll();
$i=1;
$kom = [];
$tmp = [];
$order = [];
foreach ($ref as $value) {
$vereidigung = Carbon::createFromDate($value['vereidigung']);
$sub = '<sup>'.$i.'</sup><br><div style="color:#999; text-align:right;">Vereidigung '.$vereidigung->format('d.M.Y').'</div>';
if ($value['name'] == "") {
$value['name'] = $value['first_name'] . " " . $value['last_name'];
}
$tmp[$i] = $value;
if ($value['last_name'] != "") {
$kom[] = '<i class="far fa-user small"></i> ' . $value['first_name'] . ' ' . $value['last_name'] . $sub;
} else {
$kom[] = '<i class="far fa-user small"></i> ' . $value['name'] . $sub;
}
$order[$value['name']] = $i;
$i++;
}
$data = [];
$data['data'] = $tmp;
$data['order'] = $order;
$data['kommentar'] = implode("<br>", $kom);
return $data;
}
/**
* @return string
*/
public static function load_alle_in_gemeinschaft()
{
// _Berechnung::$debug = 1;
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Lade Partner in Gemeinschaft');
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$res = $queryBuilder->select('uid')->from('fe_users')->where(
$queryBuilder->expr()->gt('kontoaufloesung_active', (string) _Berechnung::$berechne_bis->format('Y-m-d')))
->execute()
->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
foreach ($res as $key => $value) {
$aufgeloesteGemeinschaften[] = $value['uid'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_buro_gemeinschaft_mm');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder->select('uid_user','uid_gemeinschaft')->from('tx_zuladungsliste_buro_gemeinschaft_mm');
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$res = $queryBuilder->execute()->fetchAll();
$return = [];
foreach ($res as $key => $value) {
if(!in_array($value['uid_gemeinschaft'], $aufgeloesteGemeinschaften))
{
$return[] = $value['uid_user'];
}
}
return $return;
}
}
@@ -0,0 +1,111 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class PunkteKriterien
{
/**
* @return void
*/
public static function load()
{
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Load Punkte Kriterien');
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_punkte_kriterien_mm');
$queryBuilder
->select(
'tx_zuladungsliste_punkte_kriterien_mm.uid',
'tx_zuladungsliste_punkte_kriterien_mm.uid_punkte',
'tx_zuladungsliste_punkte_kriterien_mm.uid_kriterien',
'tx_zuladungsliste_punkte_kriterien_mm.punkte',
'a.bezeichnung AS bezeichnung_punkte',
'b.bezeichnung AS bezeichnung_kritierien'
)->from('tx_zuladungsliste_punkte_kriterien_mm')
->join(
'tx_zuladungsliste_punkte_kriterien_mm',
'tx_zuladungsliste_domain_model_punkte',
'a',
$queryBuilder->expr()->eq('a.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_punkte_kriterien_mm.uid_punkte'))
)
->join(
'tx_zuladungsliste_punkte_kriterien_mm',
'tx_zuladungsliste_domain_model_kriterien',
'b',
$queryBuilder->expr()->eq('b.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_punkte_kriterien_mm.uid_kriterien'))
);
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$tmp = $queryBuilder->execute()->fetchAll();
$return = [];
foreach ($tmp as $key => $value) {
$return[$value['uid_punkte']] = $value;
}
return $return;
}
public static function fill()
{
if (_Berechnung::$debug) {
Message::debug(
__FILE__,
__LINE__,
"Lade Arrays [PUNKTE, KRITERIEN, BEZEICHNUNG_PUNKTE]"
);
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_punkte_kriterien_mm');
$queryBuilder
->select('uid_punkte', 'uid_kriterien', 'punkte')->from('tx_zuladungsliste_punkte_kriterien_mm');
$statement = $queryBuilder->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
foreach ($statement as $key => $value) {
$uid_kriterien = $value['uid_kriterien'];
$uid_punkte = $value['uid_punkte'];
_Berechnung::$_punkte[$uid_kriterien][$uid_punkte] = $value['punkte'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_kriterien');
$queryBuilder->select('uid', 'bezeichnung', 'sperrung')->from('tx_zuladungsliste_domain_model_kriterien');
$statement = $queryBuilder->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
foreach ($statement as $key => $value) {
$uid = $value['uid'];
_Berechnung::$_kriterien[$uid] = $value;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_punkte');
$queryBuilder->select('uid', 'bezeichnung', 'einmal_im_jahr')->from('tx_zuladungsliste_domain_model_punkte');
$statement = $queryBuilder->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
foreach ($statement as $key => $value) {
$uid = $value['uid'];
_Berechnung::$_bezeichnung_punkte[$uid] = $value;
}
}
}
@@ -0,0 +1,155 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Utilities\Zeit;
use DateTime;
use DateInterval;
use DateTimeImmutable;
use Carbon\Carbon;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Ruhestellungen
{
public static $_ruhestellungen = [];
/**
* @return string
*/
public static function company($uid)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
return $queryBuilder
->select("company")
->from('fe_users')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid)
)
->execute()
->fetchOne();
}
/**
* @return void
*/
public static function load()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_ruhestellung');
$queryBuilder
->select("uid", "uid_ruhestellung", "ruhestellung_start", "ruhestellung_end")
->from('tx_zuladungsliste_domain_model_ruhestellung')
->execute();
$result = $queryBuilder->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$_arr = [];
foreach ($result as $value) {
/**
* sort per user
*/
$uid = $value['uid_ruhestellung'];
$ruhestellung_start = new DateTime($value['ruhestellung_start']);
$ruhestellung_end = new DateTime($value['ruhestellung_end']);
if(!$value['ruhestellung_end']){
$value['ruhestellung_end'] = 'offen';
// $ruhestellung_end->format('Y-m-d');
}
$difference = $ruhestellung_start->diff($ruhestellung_end);
$value['tage'] = $difference->format('%R%a');
$value['company'] = self::company($value['uid_ruhestellung']);
/**
* as array as same user can have more sperren
*/
unset($value['uid']);
unset($value['uid_ruhestellung']);
_Berechnung::$_data['ruhestellungen'][$uid][] = $value;
}
}
/**
* @return void
*/
public static function berechnen()
{
_Berechnung::$debug = 0;
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'IN -> RUHESTELLUNGEN BERECHNEN');
}
$_ruhestellungen = _Berechnung::$_data['ruhestellungen'];
// print_r(_Berechnung::$_data['liste']);
// exit;
foreach (_Berechnung::$_data['liste'] as $key => $_value_liste) {
$userid = $_value_liste['id'];
if(isset($_ruhestellungen[$userid])){
$user_ruhestellung = $_ruhestellungen[$userid];
// print_r($user_ruhestellung);
// exit;
/**
* loop $_ruhestellungen in case for more then one time ruhegestellt
*/
$kommentare = [];
foreach ($user_ruhestellung as $ruhestellung) {
$ruhestellung_start = Carbon::parse( $ruhestellung['ruhestellung_start']);
if($ruhestellung['ruhestellung_end'] == 'offen'){
$ruhestellung_end = Carbon::parse(_Berechnung::$_config['berechne_bis_datum']);
}else {
$ruhestellung_end = Carbon::parse( $ruhestellung['ruhestellung_end']);
}
$kommentare[] = $ruhestellung_start->format('d. M Y').' - '.$ruhestellung_end->format('d. M Y');
if($ruhestellung['ruhestellung_end'] == 'offen' OR $ruhestellung['ruhestellung_end'] >= _Berechnung::$berechne_bis) {
$row['gesperrt_bis'] = 'Ruhend';
_Berechnung::$_data['liste'][$key]['gesperrt'] = 1;
_Berechnung::$_data['liste'][$key]['nominiert'] = 0;
_Berechnung::$_data['liste'][$key]['inruhestellung'] = 1;
}
$objekte = $_value_liste['auswertung']['wettbewerbe'];
// NEUE VERSION, WENN SPERRE BEENDED VERLÄNGERUNG WIRD IN ERFOLGSPUNKTE BERECHNET
// WHEN OFFEN DANN HIER
foreach ($objekte as $k => $objekt) {
if ($objekt['gueltig_bis'] >= $ruhestellung['ruhestellung_start'] and $ruhestellung['ruhestellung_end'] == 'offen')
{
$objekte[$k]['punkte_verl'] = 1;
$objekte[$k]['punkte_aktive'] = 1;
$objekte[$k]['gueltig_bis'] = 'offen';
}
}
_Berechnung::$_data['liste'][$key]['auswertung']['wettbewerbe'] = $objekte;
}
if($kommentare){
_Berechnung::$_data['liste'][$key]["auswertung"]["ruhestellungen"]['punkte'] = 0;
_Berechnung::$_data['liste'][$key]["auswertung"]["ruhestellungen"]['kommentar'] = implode('<br>', $kommentare);
}
}
}
}
}
@@ -0,0 +1,79 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Message;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Sektionstage
{
/**
* @return void
*/
public static function load()
{
if (_Berechnung::$debug) {
Message::debug(__file__, __line__, "Lade Sektionstage");
}
// 2 usergroup => Ordentliche Registrierung zur Zuladungsliste
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_sektionstage');
$statement = $queryBuilder
->select("bezeichnung", "rwcode", "stichtag", "sperrzeit", "punktezeit", "neueinsteiger", "frauenfoerderung", "frauenfoerderung_erweitert", "kammernid", "ausloberladung", "sperrzeit_aufteilen", "teilnahme_maximumjahr")
->from('tx_zuladungsliste_domain_model_sektionstage')
->where(
$queryBuilder->expr()->eq('kammernid', (int)_Berechnung::$_config['kammernid'])
);
if (_Berechnung::$_config['berechne_bis'] != 0) {
$date = date("Y-m-d", _Berechnung::$_config['berechne_bis']);
$queryBuilder->andWhere("stichtag < '". $date ."'");
}
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$statement = $queryBuilder->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$_arr = [];
foreach ($statement as $key => $value) {
$stichtag = strtotime(trim($value['stichtag']));
$value['stichtagtstamp'] = $stichtag;
$_arr[$stichtag] = $value;
ksort($_arr[$stichtag]);
}
_Berechnung::$_data['sektionstage'] = $_arr;
}
/**
* @return array
*/
public static function filter($entscheidungstermin)
{
$_sektionstage = _Berechnung::$_data['sektionstage'];
foreach ($_sektionstage as $stichtag => $_stichtagdetails) {
if ($entscheidungstermin <= $stichtag) {
return $_stichtagdetails;
}
}
return $_stichtagdetails;
}
}
@@ -0,0 +1,68 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Message;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Solidaritaetserklaerung
{
/**
* @return void
*/
public static function filter(&$_liste, $user_objekt, $burogemeinschaft)
{
if (_Berechnung::$debug) {
Message::debug(__file__, __line__, "Filter Solidaritaetserklaerung");
}
// Datum Start SOLIDARITÄTSERKLÄRUNG ab 15. Juni "2021"
if (_Berechnung::$_config['berechne_bis'] > mktime(0, 0, 0, 6, 15, 2021)) {
/***
* BÜROGEMEINSCHAFT
*/
if ($burogemeinschaft) {
$_partner = $_liste["auswertung"]["burogemeinschaft"]["data"];
$punkte = 0;
$kommentar = [];
$i=1;
foreach ($_partner as $key => $value) {
if ($user_objekt["solidaritaetserklaerung"]==0) {
$kommentar[] = "Nicht zugestimmt" . "<sup>$i</sup>";
} else {
$_liste["auswertung"]["solidaritaetserklaerung"]["kommentar"] = "Zugestimmt<sup>$i</sup>";
$_liste["auswertung"]["solidaritaetserklaerung"]["punkte"] = 1;
$punkte++;
$_liste["punkte"]++;
}
$i++;
}
$_liste['auswertung']['solidaritaetserklaerung']['punkte'] = $punkte;
$_liste['auswertung']['solidaritaetserklaerung']['kommentar'] = implode(", ", $kommentar);
return $_liste;
}
if ($user_objekt["solidaritaetserklaerung"]==0) {
$_liste["auswertung"]["solidaritaetserklaerung"]["kommentar"] = "Nicht zugestimmt";
$_liste["auswertung"]["solidaritaetserklaerung"]["punkte"] = 0;
} else {
$_liste["auswertung"]["solidaritaetserklaerung"]["kommentar"] = "Zugestimmt";
$_liste["auswertung"]["solidaritaetserklaerung"]["punkte"] = 1;
$_liste["punkte"]++;
}
}
}
}
@@ -0,0 +1,99 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Message;
use DateTime;
use DateInterval;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Sondersperrungen
{
/**
* @return void
*/
public static function load()
{
// _Berechnung::$debug = 1;
if (_Berechnung::$debug) {
Message::debug(
__FILE__,
__LINE__,
"Lade Sondersperrungen"
);
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_extrasperrung');
$statement = $queryBuilder
->select('tx_zuladungsliste_domain_model_extrasperrung.begruendung', 'tx_zuladungsliste_domain_model_extrasperrung.sperrzeitbis', 'b.uid_user', 'c.company')
->from('tx_zuladungsliste_domain_model_extrasperrung')
->join(
'tx_zuladungsliste_domain_model_extrasperrung',
'tx_zuladungsliste_extrasperrung_user_mm',
'b',
$queryBuilder->expr()->eq('b.uid_extrasperrung', $queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_extrasperrung.uid'))
)
->join(
'b',
'fe_users',
'c',
$queryBuilder->expr()->eq('c.uid', $queryBuilder->quoteIdentifier('b.uid_user'))
)
->where(
$queryBuilder->expr()->eq('c.kammernid', _Berechnung::$_config['kammernid'])
)->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$_sondersperrungen = [];
foreach ($statement as $key => $value) {
$_sondersperrungen[$value['uid_user']][] = $value;
}
_Berechnung::$_data['sondersperrungen'] = $_sondersperrungen;
}
/**
* @return void
*/
public static function filter(&$_liste, $user_objekt)
{
$user_id = $user_objekt["uid"];
if (isset(_Berechnung::$_data['sondersperrungen'][$user_id])) {
foreach (_Berechnung::$_data['sondersperrungen'][$user_id] as $key => $value_sperrung) {
// nur active Sperrungen auflisten
$sperrzeitbis = new DateTime($value_sperrung['sperrzeitbis']);
if (_Berechnung::$berechne_bis < $sperrzeitbis) {
$tmp = [];
$tmp["active"] = 1;
$tmp["gesperrt_bis"] = $sperrzeitbis->format('Y-m-d');
$tmp["kommentar"] = $value_sperrung["begruendung"];
$_liste["auswertung"]["sondersperrungen"][] = $tmp;
if ($_liste['gesperrt_bis'] == 0) {
$_liste["gesperrt_bis"] = $sperrzeitbis->format('Y-m-d');
} else {
$gesperrt_bis = new DateTime($_liste['gesperrt_bis']);
if ($sperrzeitbis > $gesperrt_bis) {
$_liste["gesperrt_bis"] = $sperrzeitbis->format('Y-m-d');
}
}
$_liste["nominiert"] = 0;
}
}
}
}
}
@@ -0,0 +1,69 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung\Tools;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class TageInRuhestellung
{
public static function get($ruhestellungen)
{
// print_r($ruhestellungen);
// echo _Berechnung::$_config['berechne_bis_datum'];
// exit;
$days_summe = 0;
$_periods = [];
foreach ($ruhestellungen as $ruhestellung) {
$ruhestellung_start = Carbon::parse( $ruhestellung['ruhestellung_start']);
if($ruhestellung['ruhestellung_end'] == 'offen'){
$ruhestellung_end = Carbon::parse(_Berechnung::$_config['berechne_bis_datum']);
}else {
$ruhestellung_end = Carbon::parse( $ruhestellung['ruhestellung_end']);
}
$_periods[] = CarbonPeriod::create($ruhestellung_start, $ruhestellung_end);
$days = $ruhestellung_end->diffInDays($ruhestellung_start);
$days_summe +=$days;
}
// return $days_summe;
// $overlapDays = self::overlapping($_periods);
return $days_summe;
}
public static function overlapping($_periods){
if(count($_periods) <= 1){
return 0;
}
$overlapDays = 0;
for ($i=0; $i < count($_periods); $i++) {
if(isset($_periods[$i]) && isset($_periods[$i + 1])){
$range1 = $_periods[$i];
$range2 = $_periods[$i + 1];
if ($range1->overlaps($range2)) {
// Find the overlapping start/end
$start = $range1->getStartDate()->greaterThan($range2->getStartDate()) ? $range1->getStartDate() : $range2->getStartDate();
$end = $range1->getEndDate()->lessThan($range2->getEndDate()) ? $range1->getEndDate() : $range2->getEndDate();
// Count days (including end date)
$overlapDays += (int) $start->diffInDays($end) + 1; // Result: 17
}
}
}
return $overlapDays;
}
}
@@ -0,0 +1,61 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class WettbewerbeArchitekten
{
/**
* @return void
*/
public static function load()
{
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Load Wettbewerbe Architekten');
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->select(
'tx_zuladungsliste_wettbewerbe_architekten_mm.uid AS uid_wettarch',
'tx_zuladungsliste_wettbewerbe_architekten_mm.uid_wettbewerbe',
'tx_zuladungsliste_wettbewerbe_architekten_mm.uid_user',
'tx_zuladungsliste_wettbewerbe_architekten_mm.uid_punkte',
'tx_zuladungsliste_wettbewerbe_architekten_mm.tstamp_zuordnung',
'tx_zuladungsliste_wettbewerbe_architekten_mm.tstamp_aktivierung',
'tx_zuladungsliste_wettbewerbe_architekten_mm.tstamp_ablehnen',
'a.wettbewerb',
'a.bundesland',
'a.entscheidungstermin',
'a.abgabetermin'
)
->from('tx_zuladungsliste_wettbewerbe_architekten_mm')
->join(
'tx_zuladungsliste_wettbewerbe_architekten_mm',
'tx_zuladungsliste_domain_model_wettbewerbe',
'a',
$queryBuilder->expr()->eq('a.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_wettbewerbe_architekten_mm.uid_wettbewerbe'))
)->where(
$queryBuilder->expr()->gt('tx_zuladungsliste_wettbewerbe_architekten_mm.uid_punkte', 0)
);
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
return $queryBuilder->execute()->fetchAll();
}
}
@@ -0,0 +1,527 @@
<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
set_time_limit(600);
ini_set("memory_limit", -1);
ini_set("max_execution_time", "600");
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
date_default_timezone_set('Europe/Vienna');
ini_set('date.timezone','Europe/Vienna');
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Message;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class _Berechnung
{
public static $_return = [];
public static $_data = [];
public static $_config = [];
public static $_punkte = [];
public static $_bezeichnung_punkte = [];
public static $_kriterien = [];
public static $debug = 0;
public static $berechne_bis = 0;
/**
* @return string
*/
public function __construct()
{
// self::$debug = 1;
self::$_data = [];
$user = $GLOBALS['TSFE']->fe_user->user;
/**
* pid
* Ordner ID für gültige Architeken
*/
self::$_config['pid'] = 41;
$kammerid = GeneralUtility::_GP('kammernid');
if (isset($kammerid)) {
self::$_config['kammernid'] = GeneralUtility::_GP('kammernid');
}
self::$_config['userid'] = $user['uid'];
/**
* usergroup
* 2 => Ordentliche Registrierung zur Zuladungsliste
*/
self::$_config['usergroup'] = 2; //
/**
* Start Liste
* 15 November 2011 12:00:00 AM CEST
* Liste Tirol Vorarlberg
* Ältester Eintrag Wettbewerb 2009-01-08
*/
self::$_config['liste_start'] = strtotime("2008-12-15");
self::$_config['liste_start_datum'] = date("Y-m-d", self::$_config['liste_start']);
_Berechnung::$berechne_bis = new \DateTime();
_Berechnung::$berechne_bis->setTimestamp(time());
self::$_config['berechne_bis'] = _Berechnung::$berechne_bis ->format('U');
self::$_config['berechne_bis_datum'] = _Berechnung::$berechne_bis ->format('Y-m-d');
}
public static function local_debug():void
{
foreach (self::$_data['architekten'] as $value) {
echo "\n------------------------------------\n";
echo $value['uid'].': '.$value['company'];
}
exit;
}
/**
* @return string
*/
public static function berechnen():void
{
// self::$debug = 1;
if (self::$debug) {
Message::note("BERECHNUNG FOR: " . _Berechnung::$berechne_bis ->format('Y-m-d'));
}
if (!self::$_config['kammernid']) {
Message::error(__FILE__, __LINE__, "kammernid fehlt!");
}
// $architekt_uid = 1201;
// $architekt_uid = [1201,1312];
// $architekt_uid = [1201];
// $architekt_uid = [67,1096,1073,1201];
// $architekt_uid = [1201,949];
// $architekt_uid = [22,49,62,225,225,262,333,381,444,444,444,570,678,757,763,764,796,807,807,826,857,895,900,935,938,948,950950,948,938,935];
// $architekt_uid = [278, 1191, 1190, 164];
// $architekt_uid = [949,979];
// $architekt_uid = [1091, 148];
// $architekt_uid = [1041,289];
// $architekt_uid = [827,1119,1120];
// $architekt_uid = 1071;
// BÜRGEMEINSCHAFTEN
// $architekt_uid = [1291,1071];
// $architekt_uid = [1110,1111,72,1305,1306,645,1171,1172,22,581];
// Frauen
// $architekt_uid = [104,278,619,643,662,693,709,732,757,763,764,791,792,796,807,808,847,859,868,872,886,893,894,901,904,940,949,954,964,979,987,993,997,998,1012,1013,1017,1018,1036,1071,1085,1107,1111,1115,1119,1120,1122,1127,1131,1133,1144,1159,1195,1203,1229,1232,1238,1241,1245,1254,1290,1295,1304,1307,1327,1336,1339,1341,1344,1350,1351,1363,1370,1375,1377,1378,1379,1380];
// $architekt_uid = [827, 1119, 1383, 1120];
$architekt_uid = 663;
$architekt_uid = [12,1143,1144];
$architekt_uid = [1279,1223,1328];
$architekt_uid = [1383, 1121, 1120];
$architekt_uid = [827, 1383, 1121, 1120];
$architekt_uid = [964,954];
$architekt_uid = 0;
self::$_data = [];
PunkteKriterien::fill();
Sondersperrungen::load();
Architekten::load($architekt_uid);
Sektionstage::load();
Ruhestellungen::load();
// self::local_debug();
// print_r(_Berechnung::$_data['architekten']);
// exit;
// print_r(_Berechnung::$_data);
// exit;
foreach (self::$_data['architekten'] as $key => $user_objekt) {
// print_r($user_objekt);
// exit;
$user_id = $user_objekt["uid"];
$_liste = [];
$_liste["id"] = $user_objekt["uid"];
$_liste["disable"] = $user_objekt["disable"];
$_liste["user_id"] = $user_objekt["uid"];
$_liste["company"] = $user_objekt["company"];
$_liste["teilhaber"] = $user_objekt["teilhaber"];
$_liste["vereidigung"] = $user_objekt["vereidigung"];
$_liste["frauenfoerderpunkt"] = $user_objekt["frauenfoerderpunkt"];
$_liste["frauenfoerderpunkt_verfallen"] = $user_objekt["frauenfoerderpunkt_verfallen"];
$_liste["sorting"] = 10000000000;
if ($user_objekt["last_name"] != '') {
$_liste["name"] = $user_objekt["first_name"] . ' ' . $user_objekt["last_name"];
} else {
$_liste["name"] = $user_objekt["name"];
}
$_liste["kontoaufloesung"] = $user_objekt["kontoaufloesung"];
$_liste["kontoaufloesung_active"] = $user_objekt["kontoaufloesung_active"];
$_liste["punkte"] = 0;
$_liste["inruhestellung"] = 0;
$_liste["auswertung"] = [];
$_liste["auswertung"]["wettbewerbe"] = [];
/**
* WETTBEWERBE ERFOLGSPUNKTE
*/
Erfolgspunkte::load_user($_liste, $user_id, $user_objekt["company"]);
// print_r($_liste);
// exit;
/**
* BÜROGEMEINSCHAFT START
*/
$_liste["burogemeinschaft"] = 0;
if ($user_objekt["burogemeinschaft"] > 0 and
$user_objekt["burogemeinschaft_start"] != '0000-00-00' and
$user_objekt["kontoaufloesung_active"] == '0000-00-00')
{
$burogemeinschaft_start = strtotime($user_objekt['burogemeinschaft_start']);
// echo "\nHERE\n";
// print_r($user_objekt);
// echo PHP_EOL;
// echo $burogemeinschaft_start;
// echo PHP_EOL;
// echo _Berechnung::$_config['berechne_bis'];
// echo PHP_EOL;
if ($burogemeinschaft_start < _Berechnung::$_config['berechne_bis']) {
$_liste["burogemeinschaft"] = 1;
/**
* BÜROGEMEINSCHAFT PARTNER load
*/
$buerogemeischaft = Partner::load($user_objekt, $_liste["burogemeinschaft"]);
/**
* COPY WETTBEWERBE VON PARTNER TO BÜROGEMEINSCHAFT
*/
if($buerogemeischaft) {
$_liste['auswertung']['burogemeinschaft'] = $buerogemeischaft;
foreach ($_liste['auswertung']['burogemeinschaft']['data'] as $partner) {
if ((int) $partner['punkte_mitnehmen'] == 1) {
Erfolgspunkte::load_user($_liste, $partner['uid'], $partner['name']);
}
}
}
}
}
/**
* NEUEINSTEIGERPUNKT
*/
Neueinsteiger::load($_liste, $user_objekt, $_liste["burogemeinschaft"]);
/**
* SOLIDARITÄTSERKLÄRUNG
* disabled not used
*/
Solidaritaetserklaerung::filter($_liste, $user_objekt, $_liste["burogemeinschaft"]);
if ($_liste["punkte"] == 0) {
$_liste["nominiert"] = 0;
}
if ($_liste["inruhestellung"] == 1) {
$_liste["nominiert"] = 0;
}
if ($_liste["sorting"] == 10000000000) {
// wenn keine punkte, verwende neueinsteigerpunk für die sortierung
if ($_liste["auswertung"]['neueinsteigerpunkt']['punkte'] == 1) {
$_liste["sorting"] = strtotime($_liste["vereidigung"]);
}
}
self::$_data['liste'][] = $_liste;
}
/**
* VERTEILUNG DER PUNKTE NACH AUFLÖSUNG
*/
Aufloesung::verteilung();
// print_r(self::$_data['liste']);
// exit;
/**
* RUHESTELLUNGEN BERECHNEN
* (am 15.06.25 nach "Auflösung" verschoben wegen user Claudia Gast, die hatte alle punkte nur von auflösung)
*/
Ruhestellungen::berechnen();
// print_r(self::$_data['liste']);
// exit;
/**
* sortierung der bewerbe per user
*/
foreach (self::$_data['liste'] as $key => $user_data) {
$tmp = $user_data['auswertung']['wettbewerbe'];
$wettbewerb_sort = array_column($tmp, 'wettbewerb_sort');
array_multisort($wettbewerb_sort, SORT_NUMERIC, SORT_ASC, $tmp);
self::$_data['liste'][$key]['auswertung']['wettbewerbe'] = $tmp;
}
// print_r(self::$_data['liste']);
// exit;
/**
* FRAUEN FÖRDERUNGS PUNKT
* Anzeigemodus nach FFP da bis hier auch alle verfallenen Punkte in der Liste sind
* 1) FFP für Architektin
* 2) FFP für Architektin in BG
* 3) FFP Durch Vererbung ddurch Auflösung ( deshalb nach Auflösung)
* 4) FFP Verlängerung durch Ruhestellung
*/
Frauen::load();
// print_r(self::$_data['liste']);
// exit;
// schreib punkte stand ins BE
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
foreach (self::$_data['liste'] as $key => $user_data) {
$queryBuilder->update('fe_users')
->where(
$queryBuilder->expr()->eq('uid', (int) $user_data['user_id'])
)
->set('punktestand', number_format($user_data['punkte'], 2))
->execute();
}
/* ANZEIGEMODUS
1) Nur Aktive Daten
2) erweitert mit Wettbewerben, FFP und Neueinsteigerpunkt ohne Sperre oder Punkte
3) Umfassen mit Architekten ohne Punkte
*/
$anzeigemodus = GeneralUtility::_GP('anzeigemodus');
switch($anzeigemodus){
default:
case 1:
foreach (self::$_data['liste'] as $key => $user_data) {
foreach ($user_data['auswertung']['wettbewerbe'] as $k => $value) {
if($value['punkte_aktive'] && $value['punkte'] || $value['sperrung_aktive']){
// keep
}
else {
unset(self::$_data['liste'][$key]['auswertung']['wettbewerbe'][$k]);
}
}
}
break;
}
/*
[verfahrensid] => 491
[wettbewerb] => Gel. WB Entwicklung Bäumlequartier am See, Lochau
[kriteriumid] => 11
[entscheidungstermin] => 2015-04-21
[kammerbeschluss] => 2014-12-19
[sperrung_wettbewerb] => 1
[sperre_deaktiviert] => 0
[loserverfahren] => 0
[ladung_durch_auslober] => 1
[uid_punkte] => 0
[sperrzeitteilung] => 0
[nichtsperren] => 0
[bezeichnung_punkte] =>
[bezeichnung] => Offene Wettbewerbe und geladene Wettbewerbe (1-stufige und 2-stufige) mit mind. 15 TN im Unterschwellenbereich
[regelwerk] => Vorarlberg
[gueltig_bis] => 2018-04-21
[wettbewerb_sort] => 1429567200
[einmal_im_jahr] => 0
[punkte] => 0
[punkte_aktive] => 0
[gesperrt_bis] => 2015-06-19
[sperrung_aktive] => 0
*
* [verfahrensid] => 1368
[wettbewerb] => Gel. WB Südtirolersiedlung Bregenz Rheinstraße 2.0 Ersatzneubauten Wohnanlage 801 Bregenz - Rheinstraße I
[kriteriumid] => 55
[entscheidungstermin] =>
[kammerbeschluss] => 2025-10-06
[sperrung_wettbewerb] => 0
[sperre_deaktiviert] => 0
[loserverfahren] => 0
[ladung_durch_auslober] => 1
[uid_punkte] => 0
[sperrzeitteilung] => 0
[nichtsperren] => 0
[bezeichnung_punkte] =>
[bezeichnung] => Geladene Wettbewerbe im Unterschwellenbereich
[wettbewerb_sort] => 1683842400
[gesperrt_bis] => 2026-04-06
[sperrung_aktive] => 1
*/
// print_r(self::$_data['liste']);
// exit;
/***
Reihung der Liste absolut
a) Punktezahl
b) bei Gleichstand: Ältestes in der Wertung befindliche Zuerkennungs-, Entscheidungs- oder Vereidigungsdatum geht vor
c) falls immer noch Gleichstand: Reihung alphabetisch nach Nach- bzw. Firmennamen
*/
if (self::$_data['liste']) {
$punkte = array_column(self::$_data['liste'], 'punkte');
$sorting = array_column(self::$_data['liste'], 'sorting');
$nameorder = array_column(self::$_data['liste'], 'company');
foreach ($nameorder as $key => $value) {
$nameorder[$key] = strtolower($value);
}
// Message::note("ARRAY_MULTISORT");
// print_r($punkte);
// print_r($sortdatum);
// print_r($nameorder);
// exit;
if (\count($punkte) and \count($sorting) and \count($nameorder)) {
array_multisort($punkte, SORT_NUMERIC, SORT_DESC, $sorting, SORT_NUMERIC, SORT_ASC, $nameorder, SORT_STRING, SORT_ASC, self::$_data['liste']);
}
}
// if ($architekt_uid) {
// print_r(self::$_data['liste']);
// exit;
// }
/***
Reihung für Nominierung Wie Reihung absolut, aber ohne Zählung von gesperrten Teilnehmern (Sperre bei WB-Teilnahme an geladenen WB, aber nicht nur durch Nominierung aus der Liste(!), dzt. 18 Monate)
Nominierung Herangezogen wird die Nominierungsreihung.
1 Nominierung: Nr. 1 der Nominierungsreihung
2 Nominierungen: Nr. 1 und die Nr. des Absolutwerts der Hälfte des Maximalwerts der Nominierungsreihung (z.B. 35 in der Nominierungswertung, gezogen wird Nr. 1 und Nr. 17)
3 Nominierungen: Nr. 1, die Nr. des Absolutwerts von 2/3 des Maximalwerts der Nominierungsreihung, die Nr. des Absolutwerts von 1/3 des Maximalwerts der Nominierungsreihung (z.B. 35 in der Nominierungswertung, gezogen wird Nr. 1, Nr. 11, Nr. 23)
ab 4 Nominierungen: Die ersten 3 Nominierungen wie oben, nächste ist die Nr. 2, nächste die dem Absolutwert von 2/3 des Maximalwerts der Nominierungreihung folgende Zahl (z.B. bei obigem Beispiel, aber 5 aus 35: Nr. 1,2,11,12,23)
*/
$arr = [];
$pos = 0;
$rang = 1;
if (self::$_data['liste']) {
foreach (self::$_data['liste'] as $key => $value) {
if ($value["disable"] == 0) {
$value["rang"] = $rang;
$rang++;
$sperre_wettbewerbe = $value["auswertung"]["wettbewerbe"]["gesperrt_bis"];
$sperre_sondersperrungen = $value["auswertung"]["sondersperrungen"]["gesperrt_bis"];
$sperre_wettbewerbe = str_replace(". ", "-", $sperre_wettbewerbe);
if (strtotime($sperre_wettbewerbe) > self::$_config['berechne_bis']) {
$value["gesperrt_bis"] = $sperre_wettbewerbe;
}
if (strtotime($sperre_sondersperrungen) > self::$_config['berechne_bis']) {
$value["gesperrt_bis"] = $sperre_sondersperrungen;
}
$value["punkte"] = (float) $value["punkte"];
if ($value["nominiert"] == 1 and $value["punkte"] > 0) {
$value["pos"] = $pos + 1;
$pos++;
} else {
$value["pos"] = 0;
}
// unset($value["auswertung"]);
unset($value["nameorder"]);
unset($value["sorting"]);
unset($value["last_name"]);
// unset($value["vereidigung"]);
$arr[] = $value;
}
}
}
$zwei = round($pos / 2);
$drei = round($pos / 3);
$vier = round($pos / 4);
$fuenf = round($pos / 5);
$sechs = round($pos / 6);
// echo "\neins: " . $eins;
// echo "\nzwei: " . $zwei;
// echo "\ndrei: " . $drei;
// echo "\nvier: " . $vier;
// echo "\nfünf: " . $fuenf;
// echo "\nsechs: " . $sechs;
// exit;
self::$_data['liste'] = [];
foreach ($arr as $key => $value) {
$pos = $value["pos"];
if ($pos == 1) {
$value["n1"] = 1;
$value["n2"] = 1;
$value["n3"] = 1;
$value["n4"] = 1;
$value["n5"] = 1;
$value["n6"] = 1;
} elseif ($pos > 1) {
$value["n2"] = ($pos == $zwei) ? 1 : 0;
$value["n3"] = ($pos == $drei || $pos == $drei * 2) ? 1 : 0;
$value["n4"] = ($pos == $vier || $pos == $vier * 2 || $pos == $vier * 3) ? 1 : 0;
$value["n5"] = ($pos == $fuenf || $pos == $fuenf * 2 || $pos == $fuenf * 3 || $pos == $fuenf * 4) ? 1 : 0;
$value["n6"] = ($pos == $sechs || $pos == $sechs * 2 || $pos == $sechs * 3 || $pos == $sechs * 4 || $pos == $sechs * 5) ? 1 : 0;
}
if ($pos == 2) {
$value["e1"] = 1;
$value["e2"] = 1;
$value["e3"] = 1;
}
if ($pos == 3) {
$value["e4"] = 1;
$value["e5"] = 1;
$value["e6"] = 1;
} elseif ($pos > 3) {
$value["e2"] = ($pos == $zwei + 1) ? 1 : 0;
$value["e3"] = ($pos == $drei + 1 || $pos == $drei * 2 + 1) ? 1 : 0;
$value["e4"] = ($pos == $vier + 1 || $pos == $vier * 2 + 1 || $pos == $vier * 3 + 1) ? 1 : 0;
$value["e5"] = ($pos == $fuenf + 1 || $pos == $fuenf * 2 + 1 || $pos == $fuenf * 3 + 1 || $pos == $fuenf * 4 + 1) ? 1 : 0;
$value["e6"] = ($pos == $sechs + 1 || $pos == $sechs * 2 + 1 || $pos == $sechs * 3 + 1 || $pos == $sechs * 4 + 1 || $pos == $sechs * 5 + 1) ? 1 : 0;
}
self::$_data['liste'][] = $value;
}
// print_r(self::$_data['liste']);
// exit;
}
public static function moveOneMonthForward()
{
_Berechnung::$berechne_bis->add(new \DateInterval("P1M"));
_Berechnung::$_config['berechne_bis'] = _Berechnung::$berechne_bis ->format('U');
_Berechnung::$_config['berechne_bis_datum'] = _Berechnung::$berechne_bis ->format('Y-m-d');
}
}
@@ -0,0 +1,22 @@
Den Frauenförderpunkt erhält jede Frau, ausschlaggebend ist das Vereidigungsdatum.
Ab dem Vereidigungsdatum (Tag der Eidesablegung) bleibt der Frauenförderpunkt 5 Jahre in der Wertung.
Sollte diese Frau aber in der Folge Wettbewerbspunkte erzielt haben,
verlängert sich die Dauer der Wertung um diejenige Zeit,
bis zu dem auch der Punkt dieses Wettbewerbserfolges verfallen würde.
Z.B. Frau X legt am 12.01.2026 den Eid ab. Der Frauenförderpunkt würde dann am 12.01.2031 verfallen.
Erzielt Frau X aber Wettbewerbspunkte (z.B. Jurydatum des Wettbewerbes 18.12.2030 – Wettbewerbspunkte würden 3 Jahre später verfallen),
verlängert sich auch der Frauenförderpunkt und würde erst am 18.12.2033 verfallen.
Dies gilt für alle darauffolgenden Erzielung von Wettbewerbspunkten.
Z.B. Frau X legt am 12.01.2026 den Eid ab.
Der Frauenförderpunkt würde dann am 12.01.2031 verfallen.
Erzielt Frau X aber Wettbewerbspunkte (z.B. Jurydatum des Wettbewerbes 01.05.2031),
kann das Jurydatum und die Dauer von 3 Jahren nicht ausschlaggebend sein,
denn dann würde der Frauenförderpunkt am 01.05.2034 verfallen.
Der Frauenförderpunkt muss aber auf alle Fälle 5 Jahre in der Wertung bleiben,
das heißt der Frauenförderpunkt würde am 12.01.2036 verfallen.
Ist der Frauenförderpunkt schon vor Inkrafttreten der neuen Kriterien, z.B. am 01.04.2022 verfallen,
ist dieser verfallen und wird auch durch Wettbewerbspunkte nicht mehr aktiviert.
@@ -0,0 +1,56 @@
<?php
namespace HermannTelser\Zuladungsliste\Bootstrap;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Message;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class Kammern
{
/**
* @param mixed $kammerid
*
* @return string
*/
public static function loadById($user)
{
$kammerid = $user['kammernid'];
$uid = $user['uid'];
if ($kammerid == 0 and $uid == ARCHITEKTEN_PID) {
Message::error(__file__, __line__, "Kammer ID fehlt");
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_zuladungsliste_domain_model_kammern')->createQueryBuilder();
$statement = $queryBuilder->select('bezeichnung')->from('tx_zuladungsliste_domain_model_kammern')
->where($queryBuilder->expr()->in('uid', $kammerid))
->execute();
while ($row = $statement->fetch()) {
return $row['bezeichnung'];
}
}
/**
*
* @return string
*/
public static function load()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_zuladungsliste_domain_model_kammern')->createQueryBuilder();
return $queryBuilder->select('uid AS id', 'bezeichnung')->from('tx_zuladungsliste_domain_model_kammern')
->execute()
->fetchAll();
}
}
@@ -0,0 +1,73 @@
<?php
namespace HermannTelser\Zuladungsliste\Bootstrap;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
use HermannTelser\Zuladungsliste\Utilities\Resources;
class User
{
/**
*
* @return array
*/
public static function load()
{
$user = $GLOBALS['TSFE']->fe_user->user;
if ($user['gender'] == 0) {
$gender = 'Herr';
} elseif ($user['gender'] == 1) {
$gender = 'Frau';
} else {
$gender = '';
}
_Berechnung::$_return = [
['key' => 'userid', 'value' => $user['uid']],
['key' => 'isadmin', 'value' => self::is_admin($user['usergroup'])],
['key' => 'usergroup', 'value' => $user['usergroup']],
['key' => 'gender', 'value' => $gender],
['key' => 'username', 'value' => $user['username']],
['key' => 'company', 'value' => $user['company']],
['key' => 'email', 'value' => $user['email']],
['key' => 'inliste', 'value' => $user['inliste']],
['key' => 'vereidigung', 'value' => $user['vereidigung']],
['key' => 'frauenfoerderpunkt', 'value' => $user['frauenfoerderpunkt']],
['key' => 'kammernid', 'value' => $user['kammernid']],
['key' => 'kammermitgliedsnummer', 'value' => $user['kammermitgliedsnummer']],
['key' => 'kammer', 'value' => Kammern::loadById($user)],
['key' => 'kammern', 'value' => Kammern::load()],
['key' => 'displaymenu', 'value' => Resources::displaymenu()],
['key' => 'sperren', 'value' => Resources::sperren()],
['key' => 'years', 'value' => Resources::years()],
['key' => 'next', 'value' => Resources::next()],
['key' => 'bundeslaender', 'value' => Resources::bundeslaender()]];
}
/**
*
* @return bool
*/
public static function is_admin($str)
{
$_arr = \explode(",", $str);
foreach ($_arr as $key => $value) {
if ($value == '3') {
return true;
}
}
return false;
}
}
@@ -0,0 +1,42 @@
<?php
namespace HermannTelser\Zuladungsliste\Bootstrap;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Liste\ArchiveMenu;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _BootstrapController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'administrator':
User::load();
break;
case 'start_liste':
User::load();
break;
case 'load_archive_menu':
ArchiveMenu::load();
break;
default:
Message::error(__FILE__, __LINE__, "no xaction switch defined");
}
}
}
@@ -0,0 +1,35 @@
<?php
namespace HermannTelser\Zuladungsliste\Controller;
/***************************************************************
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Test case for class HermannTelser\Zuladungsliste\Controller\ExtrasperrungController.
*
* @author Hermann Telser <hermann.telser@gmail.com>
*/
class AdministrationController extends \TYPO3\CMS\Core\Tests\UnitTestCase
{
}
@@ -0,0 +1,150 @@
<?php
namespace HermannTelser\Zuladungsliste\Controller;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
/***************************************************************
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Test case for class HermannTelser\Zuladungsliste\Controller\KriterienController.
*
* @author Hermann Telser <hermann.telser@gmail.com>
*/
class ArchitektenController extends ActionController
{
/**
* @var \HermannTelser\Zuladungsliste\Controller\KriterienController
*/
protected $subject = NULL;
public function setUp()
{
$this->subject = $this->getMock('HermannTelser\Zuladungsliste\Controller\KriterienController', array('redirect', 'forward', 'addFlashMessage'), array(), '', FALSE);
}
public function tearDown()
{
unset($this->subject);
}
/**
* @test
*/
public function listActionFetchesAllKriteriensFromRepositoryAndAssignsThemToView()
{
$allKriteriens = $this->getMock('TYPO3\CMS\Extbase\Persistence\ObjectStorage', array(), array(), '', FALSE);
$kriterienRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\KriterienRepository', array('findAll'), array(), '', FALSE);
$kriterienRepository->expects($this->once())->method('findAll')->will($this->returnValue($allKriteriens));
$this->inject($this->subject, 'kriterienRepository', $kriterienRepository);
$view = $this->getMock('TYPO3\CMS\Extbase\Mvc\View\ViewInterface');
$view->expects($this->once())->method('assign')->with('kriteriens', $allKriteriens);
$this->inject($this->subject, 'view', $view);
$this->subject->listAction();
}
/**
* @test
*/
public function showActionAssignsTheGivenKriterienToView()
{
$kriterien = new \HermannTelser\Zuladungsliste\Domain\Model\Kriterien();
$view = $this->getMock('TYPO3\CMS\Extbase\Mvc\View\ViewInterface');
$this->inject($this->subject, 'view', $view);
$view->expects($this->once())->method('assign')->with('kriterien', $kriterien);
$this->subject->showAction($kriterien);
}
/**
* @test
*/
public function createActionAddsTheGivenKriterienToKriterienRepository()
{
$kriterien = new \HermannTelser\Zuladungsliste\Domain\Model\Kriterien();
$kriterienRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\KriterienRepository', array('add'), array(), '', FALSE);
$kriterienRepository->expects($this->once())->method('add')->with($kriterien);
$this->inject($this->subject, 'kriterienRepository', $kriterienRepository);
$this->subject->createAction($kriterien);
}
/**
* @test
*/
public function editActionAssignsTheGivenKriterienToView()
{
$kriterien = new \HermannTelser\Zuladungsliste\Domain\Model\Kriterien();
$view = $this->getMock('TYPO3\CMS\Extbase\Mvc\View\ViewInterface');
$this->inject($this->subject, 'view', $view);
$view->expects($this->once())->method('assign')->with('kriterien', $kriterien);
$this->subject->editAction($kriterien);
}
/**
* @test
*/
public function updateActionUpdatesTheGivenKriterienInKriterienRepository()
{
$kriterien = new \HermannTelser\Zuladungsliste\Domain\Model\Kriterien();
$kriterienRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\KriterienRepository', array('update'), array(), '', FALSE);
$kriterienRepository->expects($this->once())->method('update')->with($kriterien);
$this->inject($this->subject, 'kriterienRepository', $kriterienRepository);
$this->subject->updateAction($kriterien);
}
/**
* @test
*/
public function deleteActionRemovesTheGivenKriterienFromKriterienRepository()
{
$kriterien = new \HermannTelser\Zuladungsliste\Domain\Model\Kriterien();
$kriterienRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\KriterienRepository', array('remove'), array(), '', FALSE);
$kriterienRepository->expects($this->once())->method('remove')->with($kriterien);
$this->inject($this->subject, 'kriterienRepository', $kriterienRepository);
$this->subject->deleteAction($kriterien);
}
/**
* action list
*
* @return void
*/
public function listAction()
{
// $architektens = $this->architektenRepository->findAll();
// $this->view->assign('architektens', $architektens);
}
/**
* action
*
* @return void
*/
public function Action()
{
}
}
@@ -0,0 +1,136 @@
<?php
namespace HermannTelser\Zuladungsliste\Controller;
/***************************************************************
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Test case for class HermannTelser\Zuladungsliste\Controller\WettbewerbeController.
*
* @author Hermann Telser <hermann.telser@gmail.com>
*/
class ExtrasperrungController extends \TYPO3\CMS\Core\Tests\UnitTestCase
{
/**
* @var \HermannTelser\Zuladungsliste\Controller\WettbewerbeController
*/
protected $subject = NULL;
public function setUp()
{
$this->subject = $this->getMock('HermannTelser\Zuladungsliste\Controller\WettbewerbeController', array('redirect', 'forward', 'addFlashMessage'), array(), '', FALSE);
}
public function tearDown()
{
unset($this->subject);
}
/**
* @test
*/
public function listActionFetchesAllWettbewerbesFromRepositoryAndAssignsThemToView()
{
$allWettbewerbes = $this->getMock('TYPO3\CMS\Extbase\Persistence\ObjectStorage', array(), array(), '', FALSE);
$wettbewerbeRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\WettbewerbeRepository', array('findAll'), array(), '', FALSE);
$wettbewerbeRepository->expects($this->once())->method('findAll')->will($this->returnValue($allWettbewerbes));
$this->inject($this->subject, 'wettbewerbeRepository', $wettbewerbeRepository);
$view = $this->getMock('TYPO3\CMS\Extbase\Mvc\View\ViewInterface');
$view->expects($this->once())->method('assign')->with('wettbewerbes', $allWettbewerbes);
$this->inject($this->subject, 'view', $view);
$this->subject->listAction();
}
/**
* @test
*/
public function showActionAssignsTheGivenWettbewerbeToView()
{
$wettbewerbe = new \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe();
$view = $this->getMock('TYPO3\CMS\Extbase\Mvc\View\ViewInterface');
$this->inject($this->subject, 'view', $view);
$view->expects($this->once())->method('assign')->with('wettbewerbe', $wettbewerbe);
$this->subject->showAction($wettbewerbe);
}
/**
* @test
*/
public function createActionAddsTheGivenWettbewerbeToWettbewerbeRepository()
{
$wettbewerbe = new \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe();
$wettbewerbeRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\WettbewerbeRepository', array('add'), array(), '', FALSE);
$wettbewerbeRepository->expects($this->once())->method('add')->with($wettbewerbe);
$this->inject($this->subject, 'wettbewerbeRepository', $wettbewerbeRepository);
$this->subject->createAction($wettbewerbe);
}
/**
* @test
*/
public function editActionAssignsTheGivenWettbewerbeToView()
{
$wettbewerbe = new \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe();
$view = $this->getMock('TYPO3\CMS\Extbase\Mvc\View\ViewInterface');
$this->inject($this->subject, 'view', $view);
$view->expects($this->once())->method('assign')->with('wettbewerbe', $wettbewerbe);
$this->subject->editAction($wettbewerbe);
}
/**
* @test
*/
public function updateActionUpdatesTheGivenWettbewerbeInWettbewerbeRepository()
{
$wettbewerbe = new \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe();
$wettbewerbeRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\WettbewerbeRepository', array('update'), array(), '', FALSE);
$wettbewerbeRepository->expects($this->once())->method('update')->with($wettbewerbe);
$this->inject($this->subject, 'wettbewerbeRepository', $wettbewerbeRepository);
$this->subject->updateAction($wettbewerbe);
}
/**
* @test
*/
public function deleteActionRemovesTheGivenWettbewerbeFromWettbewerbeRepository()
{
$wettbewerbe = new \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe();
$wettbewerbeRepository = $this->getMock('HermannTelser\Zuladungsliste\Domain\Repository\WettbewerbeRepository', array('remove'), array(), '', FALSE);
$wettbewerbeRepository->expects($this->once())->method('remove')->with($wettbewerbe);
$this->inject($this->subject, 'wettbewerbeRepository', $wettbewerbeRepository);
$this->subject->deleteAction($wettbewerbe);
}
/**
* action
*
* @return void
*/
public function Action()
{
}
}
@@ -0,0 +1,142 @@
<?php
namespace HermannTelser\Zuladungsliste\Controller;
/***************************************************************
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Test case for class HermannTelser\Zuladungsliste\Controller\ExtrasperrungController.
*
* @author Hermann Telser <hermann.telser@gmail.com>
*/
class KriterienController extends \TYPO3\CMS\Core\Tests\UnitTestCase
{
/**
* @var \HermannTelser\Zuladungsliste\Controller\ExtrasperrungController
*/
protected $subject = NULL;
/**
* kriterienRepository
*
* @var \HermannTelser\Zuladungsliste\Domain\Repository\KriterienRepository
* @TYPO3CMSExtbaseAnnotationInject
*/
protected $kriterienRepository = NULL;
public function setUp()
{
$this->subject = $this->getMock('HermannTelser\Zuladungsliste\Controller\ExtrasperrungController', array('redirect', 'forward', 'addFlashMessage'), array(), '', FALSE);
}
public function tearDown()
{
unset($this->subject);
}
/**
* action list
*
* @return void
*/
public function listAction()
{
$kriteriens = $this->kriterienRepository->findAll();
$this->view->assign('kriteriens', $kriteriens);
}
/**
* action show
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien
* @return void
*/
public function showAction(\HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien)
{
$this->view->assign('kriterien', $kriterien);
}
/**
* action new
*
* @return void
*/
public function newAction()
{
}
/**
* action create
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Kriterien $newKriterien
* @return void
*/
public function createAction(\HermannTelser\Zuladungsliste\Domain\Model\Kriterien $newKriterien)
{
$this->addFlashMessage('The object was created. Please be aware that this action is publicly accessible unless you implement an access check. See http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
$this->kriterienRepository->add($newKriterien);
$this->redirect('list');
}
/**
* action edit
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien
* @TYPO3CMS\Extbase\Annotation\IgnoreValidation $kriterien
* @return void
*/
public function editAction(\HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien)
{
$this->view->assign('kriterien', $kriterien);
}
/**
* action update
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien
* @return void
*/
public function updateAction(\HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien)
{
$this->addFlashMessage('The object was updated. Please be aware that this action is publicly accessible unless you implement an access check. See http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
$this->kriterienRepository->update($kriterien);
$this->redirect('list');
}
/**
* action delete
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien
* @return void
*/
public function deleteAction(\HermannTelser\Zuladungsliste\Domain\Model\Kriterien $kriterien)
{
$this->addFlashMessage('The object was deleted. Please be aware that this action is publicly accessible unless you implement an access check. See http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
$this->kriterienRepository->remove($kriterien);
$this->redirect('list');
}
}
@@ -0,0 +1,225 @@
<?php
namespace HermannTelser\Zuladungsliste\Controller;
/***************************************************************
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Extbase\Annotation\Inject;
/**
* Test case for class \HermannTelser\Zuladungsliste\Domain\Model\Architekten.
*
* @copyright Copyright belongs to the respective authors
* @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later
* @author Hermann Telser <hermann.telser@gmail.com>
*/
class WettbewerbeController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
/**
* @var \HermannTelser\Zuladungsliste\Domain\Model\Architekten
*/
protected $subject = NULL;
/**
* wettbewerbeRepository
*
* @var \HermannTelser\Zuladungsliste\Domain\Repository\WettbewerbeRepository
* @TYPO3\CMS\Extbase\Annotation\Inject
*/
protected $wettbewerbeRepository = NULL;
public function setUp()
{
$this->subject = new \HermannTelser\Zuladungsliste\Domain\Model\Architekten();
}
public function tearDown()
{
unset($this->subject);
}
/**
* @test
*/
public function getInlisteReturnsInitialValueForBool()
{
$this->assertSame(FALSE, $this->subject->getInliste());
}
/**
* @test
*/
public function setInlisteForBoolSetsInliste()
{
$this->subject->setInliste(TRUE);
$this->assertAttributeEquals(TRUE, 'inliste', $this->subject);
}
/**
* @test
*/
public function getVereidigungReturnsInitialValueForDateTime()
{
$this->assertEquals(NULL, $this->subject->getVereidigung());
}
/**
* @test
*/
public function setVereidigungForDateTimeSetsVereidigung()
{
$dateTimeFixture = new \DateTime();
$this->subject->setVereidigung($dateTimeFixture);
$this->assertAttributeEquals($dateTimeFixture, 'vereidigung', $this->subject);
}
/**
* @test
*/
public function getGeburtsdatumReturnsInitialValueForDateTime()
{
$this->assertEquals(NULL, $this->subject->getGeburtsdatum());
}
/**
* @test
*/
public function setGeburtsdatumForDateTimeSetsGeburtsdatum()
{
$dateTimeFixture = new \DateTime();
$this->subject->setGeburtsdatum($dateTimeFixture);
$this->assertAttributeEquals($dateTimeFixture, 'geburtsdatum', $this->subject);
}
/**
* @test
*/
public function getfrauenfoerderpunktReturnsInitialValueForBool()
{
$this->assertSame(FALSE, $this->subject->getfrauenfoerderpunkt());
}
/**
* @test
*/
public function setfrauenfoerderpunktForBoolSetsfrauenfoerderpunkt()
{
$this->subject->setfrauenfoerderpunkt(TRUE);
$this->assertAttributeEquals(TRUE, 'frauenfoerderpunkt', $this->subject);
}
/**
* action list
*
* @return void
*/
public function listAction()
{
$wettbewerbes = $this->wettbewerbeRepository->findAll();
$this->view->assign('wettbewerbes', $wettbewerbes);
}
/**
* action show
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe
* @return void
*/
public function showAction(\HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe)
{
$this->view->assign('wettbewerbe', $wettbewerbe);
}
/**
* action new
*
* @return void
*/
public function newAction()
{
//// top.TYPO3.Backend.NavigationContainer.PageTree.select(38);
echo '<script>
if (top && top.TYPO3.Backend.NavigationContainer.PageTree) {
top.TYPO3.ModuleMenu.App.showModule("web_list");
}
window.open("http://'.$_SERVER["SERVER_NAME"].':index.php?id=34","_blank");
</script>';
exit();
}
/**
* action create
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $newWettbewerbe
* @return void
*/
public function createAction(\HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $newWettbewerbe)
{
$this->addFlashMessage('The object was created. Please be aware that this action is publicly accessible unless you implement an access check. See http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
$this->wettbewerbeRepository->add($newWettbewerbe);
$this->redirect('list');
}
/**
* action edit
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe
* @TYPO3\CMS\Extbase\Annotation\IgnoreValidation $wettbewerbe
* @return void
*/
public function editAction(\HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe)
{
$this->view->assign('wettbewerbe', $wettbewerbe);
}
/**
* action update
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe
* @return void
*/
public function updateAction(\HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe)
{
$this->addFlashMessage('The object was updated. Please be aware that this action is publicly accessible unless you implement an access check. See http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
$this->wettbewerbeRepository->update($wettbewerbe);
$this->redirect('list');
}
/**
* action delete
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe
* @return void
*/
public function deleteAction(\HermannTelser\Zuladungsliste\Domain\Model\Wettbewerbe $wettbewerbe)
{
$this->addFlashMessage('The object was deleted. Please be aware that this action is publicly accessible unless you implement an access check. See http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
$this->wettbewerbeRepository->remove($wettbewerbe);
$this->redirect('list');
}
}
@@ -0,0 +1,193 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Architeckten model extends FrondenUser model
*/
class Architekten extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
{
/**
* kammermitgliedsnummer
*
* @var string
*/
protected $kammermitgliedsnummer;
/**
* inliste
*
* @var bool
*/
protected $inliste = false;
/**
* vereidigung
*
* @var \DateTime
*/
protected $vereidigung = null;
/**
* geburtsdatum
*
* @var \DateTime
*/
protected $geburtsdatum = null;
/**
* frauenfoerderpunkt
*
* @var bool
*/
protected $frauenfoerderpunkt = false;
/**
* Returns the kammermitgliedsnummer
*
* @return string $kammermitgliedsnummer
*/
public function getKammermitgliedsnummer() {
return $this->kammermitgliedsnummer;
}
/**
* Sets the kammermitgliedsnummer
*
* @param string $kammermitgliedsnummer
* @return void
*/
public function setKammermitgliedsnummer($kammermitgliedsnummer) {
$this->kammermitgliedsnummer = $kammermitgliedsnummer;
}
/**
* Returns the inliste
*
* @return bool $inliste
*/
public function getInliste()
{
return $this->inliste;
}
/**
* Sets the inliste
*
* @param bool $inliste
* @return void
*/
public function setInliste($inliste)
{
$this->inliste = $inliste;
}
/**
* Returns the boolean state of inliste
*
* @return bool
*/
public function isInliste()
{
return $this->inliste;
}
/**
* Returns the vereidigung
*
* @return \DateTime $vereidigung
*/
public function getVereidigung()
{
return $this->vereidigung;
}
/**
* Sets the vereidigung
*
* @param \DateTime $vereidigung
* @return void
*/
public function setVereidigung(\DateTime $vereidigung)
{
$this->vereidigung = $vereidigung;
}
/**
* Returns the geburtsdatum
*
* @return \DateTime $geburtsdatum
*/
public function getGeburtsdatum()
{
return $this->geburtsdatum;
}
/**
* Sets the geburtsdatum
*
* @param \DateTime $geburtsdatum
* @return void
*/
public function setGeburtsdatum(\DateTime $geburtsdatum)
{
$this->geburtsdatum = $geburtsdatum;
}
/**
* Returns the frauenfoerderpunkt
*
* @return bool $frauenfoerderpunkt
*/
public function getfrauenfoerderpunkt()
{
return $this->frauenfoerderpunkt;
}
/**
* Sets the frauenfoerderpunkt
*
* @param bool $frauenfoerderpunkt
* @return void
*/
public function setfrauenfoerderpunkt($frauenfoerderpunkt)
{
$this->frauenfoerderpunkt = $frauenfoerderpunkt;
}
/**
* Returns the boolean state of frauenfoerderpunkt
*
* @return bool
*/
public function isfrauenfoerderpunkt()
{
return $this->frauenfoerderpunkt;
}
}
@@ -0,0 +1,120 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Extrasperrung
*/
class Extrasperrung extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* begruendung
*
* @var string
*/
protected $begruendung = '';
/**
* sperrzeitbis
*
* @var \DateTime
*/
protected $sperrzeitbis = null;
/**
* extrasperrungUser
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage
*/
protected $extrasperrungUser = null;
/**
* Returns the begruendung
*
* @return string $begruendung
*/
public function getBegruendung()
{
return $this->begruendung;
}
/**
* Sets the begruendung
*
* @param string $begruendung
* @return void
*/
public function setBegruendung($begruendung)
{
$this->begruendung = $begruendung;
}
/**
* Returns the sperrzeitbis
*
* @return \DateTime $sperrzeitbis
*/
public function getSperrzeitbis()
{
return $this->sperrzeitbis;
}
/**
* Sets the sperrzeitbis
*
* @param \DateTime $sperrzeitbis
* @return void
*/
public function setSperrzeitbis(\DateTime $sperrzeitbis)
{
$this->sperrzeitbis = $sperrzeitbis;
}
/**
* __construct
*/
public function __construct()
{
//Do not remove the next line: It would break the functionality
$this->initStorageObjects();
}
/**
* Initializes all ObjectStorage properties
* Do not modify this method!
* It will be rewritten on each save in the extension builder
* You may modify the constructor of this class instead
*
* @return void
*/
protected function initStorageObjects()
{
$this->extrasperrungUser = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}
}
@@ -0,0 +1,63 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Kammern
*/
class Kammern extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* bezeichnung
*
* @var string
*/
protected $bezeichnung = '';
/**
* Returns the bezeichnung
*
* @return string $bezeichnung
*/
public function getBezeichnung()
{
return $this->bezeichnung;
}
/**
* Sets the bezeichnung
*
* @param string $bezeichnung
* @return void
*/
public function setBezeichnung($bezeichnung)
{
$this->bezeichnung = $bezeichnung;
}
}
@@ -0,0 +1,90 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Wetbewerbsarten mit Bewertung
*/
class Kriterien extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* bezeichnung
*
* @var string
*/
protected $bezeichnung = '';
/**
* sektionstagid
*
* @var \HermannTelser\Zuladungsliste\Domain\Model\Sektionstage
*/
protected $sektionstagid = null;
/**
* Returns the bezeichnung
*
* @return string $bezeichnung
*/
public function getBezeichnung()
{
return $this->bezeichnung;
}
/**
* Sets the bezeichnung
*
* @param string $bezeichnung
* @return void
*/
public function setBezeichnung($bezeichnung)
{
$this->bezeichnung = $bezeichnung;
}
/**
* Returns the sektionstagid
*
* @return \HermannTelser\Zuladungsliste\Domain\Model\Sektionstage $sektionstagid
*/
public function getsektionstagid()
{
return $this->sektionstagid;
}
/**
* Sets the sektionstagid
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Sektionstage $sektionstagid
* @return void
*/
public function setsektionstagid(\HermannTelser\Zuladungsliste\Domain\Model\Sektionstage $sektionstagid)
{
$this->sektionstagid = $sektionstagid;
}
}
@@ -0,0 +1,63 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Punkte
*/
class Punkte extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* bezeichnung
*
* @var string
*/
protected $bezeichnung = '';
/**
* Returns the bezeichnung
*
* @return string $bezeichnung
*/
public function getBezeichnung()
{
return $this->bezeichnung;
}
/**
* Sets the bezeichnung
*
* @param string $bezeichnung
* @return void
*/
public function setBezeichnung($bezeichnung)
{
$this->bezeichnung = $bezeichnung;
}
}
@@ -0,0 +1,98 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Wetbewerbsarten mit Bewertung
*/
class Ruhestellungen extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* bezeichnung
*
* @var \DateTime
*/
protected $ruhestellung_start = null;
/**
* @var \DateTime
*/
protected $ruhestellung_end = null;
/**
* uid_ruhestellung
*
* @var \HermannTelser\Zuladungsliste\Domain\Model\Architekten
*/
protected $uid_ruhestellung = null;
/**
* Returns the ruhestellung_start
*
* @return \DateTime $ruhestellung_start
*/
public function getRuhestellung_Start()
{
return $this->ruhestellung_start;
}
/**
* Sets the ruhestellung_start
*
* @param \DateTime $ruhestellung_start
* @return void
*/
public function setRuhestellung_Start(\DateTime $ruhestellung_start)
{
$this->sperrzeitbis = $ruhestellung_start;
}
/**
* Returns the ruhestellung_end
*
* @return \DateTime $ruhestellung_end
*/
public function getRuhestellung_End()
{
return $this->ruhestellung_end;
}
/**
* Sets the ruhestellung_end
*
* @param \DateTime $ruhestellung_end
* @return void
*/
public function setRuhestellung_End(\DateTime $ruhestellung_end)
{
$this->sperrzeitbis = $ruhestellung_end;
}
}
@@ -0,0 +1,227 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Sektionstage
*/
class Sektionstage extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* bezeichnung
*
* @var string
*/
protected $bezeichnung = '';
/**
* stichtag
*
* @var \DateTime
*/
protected $stichtag = null;
/**
* sperrzeit
*
* @var int
*/
protected $sperrzeit = 0;
/**
* punktezeit
*
* @var int
*/
protected $punktezeit = 0;
/**
* neueinsteiger
*
* @var int
*/
protected $neueinsteiger = 0;
/**
* frauenfoerderung
*
* @var int
*/
protected $frauenfoerderung = 0;
/**
* Returns the bezeichnung
*
* @return string $bezeichnung
*/
public function getBezeichnung()
{
return $this->bezeichnung;
}
/**
* Sets the bezeichnung
*
* @param string $bezeichnung
* @return void
*/
public function setBezeichnung($bezeichnung)
{
$this->bezeichnung = $bezeichnung;
}
/**
* Returns the stichtag
*
* @return \DateTime $stichtag
*/
public function getStichtag()
{
return $this->stichtag;
}
/**
* Sets the stichtag
*
* @param \DateTime $stichtag
* @return void
*/
public function setStichtag(\DateTime $stichtag)
{
$this->stichtag = $stichtag;
}
/**
* Returns the sperrzeit
*
* @return int $sperrzeit
*/
public function getSperrzeit()
{
return $this->sperrzeit;
}
/**
* Sets the sperrzeit
*
* @param int $sperrzeit
* @return void
*/
public function setSperrzeit($sperrzeit)
{
$this->sperrzeit = $sperrzeit;
}
/**
* Returns the punktezeit
*
* @return int $punktezeit
*/
public function getPunktezeit()
{
return $this->punktezeit;
}
/**
* Sets the punktezeit
*
* @param int $punktezeit
* @return void
*/
public function setPunktezeit($punktezeit)
{
$this->punktezeit = $punktezeit;
}
/**
* Returns the neueinsteiger
*
* @return int $neueinsteiger
*/
public function getNeueinsteiger()
{
return $this->neueinsteiger;
}
/**
* Sets the neueinsteiger
*
* @param int $neueinsteiger
* @return void
*/
public function setNeueinsteiger($neueinsteiger)
{
$this->neueinsteiger = $neueinsteiger;
}
/**
* Returns the frauenfoerderung
*
* @return int $frauenfoerderung
*/
public function getFrauenfoerderung()
{
return $this->frauenfoerderung;
}
/**
* Sets the frauenfoerderung
*
* @param int $frauenfoerderung
* @return void
*/
public function setFrauenfoerderung($frauenfoerderung)
{
$this->frauenfoerderung = $frauenfoerderung;
}
/**
* Returns the kammernid
*
* @return \HermannTelser\Zuladungsliste\Domain\Model\Kammern kammernid
*/
public function getKammernid()
{
return $this->kammernid;
}
/**
* Sets the kammernid
*
* @param \HermannTelser\Zuladungsliste\Domain\Model\Kammern $kammernid
* @return void
*/
public function setKammernid(\HermannTelser\Zuladungsliste\Domain\Model\Kammern $kammernid)
{
$this->kammernid = $kammernid;
}
}
@@ -0,0 +1,355 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2016
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Wettbewerbe und Preise
*/
class Wettbewerbe extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* wettbewerb
*
* @var string
* @TYPO3\CMS\Extbase\Annotation\Validate NotEmpty
*/
protected $wettbewerb = '';
/**
* beschreibung
*
* @var string
*/
protected $beschreibung = '';
/**
* registrierung
*
* @var string
*/
protected $registrierung = '';
/**
* verfahrensort
*
* @var string
*/
protected $verfahrensort = '';
/**
* bundesland
*
* @var string
*/
protected $bundesland = '';
/**
* abgabetermin
*
* @var \DateTime
*/
protected $abgabetermin = null;
/**
* kammerbeschluss
*
* @var \DateTime
*/
protected $kammerbeschluss = null;
/**
* entscheidungstermin
*
* @var \DateTime
*/
protected $entscheidungstermin = null;
/**
* sperrung
*
* @var bool
*/
protected $sperrung = false;
/**
* aufgabenstellung
*
* @var string
*/
protected $aufgabenstellung = '';
/**
* wettbewerbUser
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\HermannTelser\Zuladungsliste\Domain\Model\Architekten>
*/
protected $wettbewerbUser = null;
/**
* Returns the wettbewerb
*
* @return string $wettbewerb
*/
public function getWettbewerb()
{
return $this->wettbewerb;
}
/**
* Sets the wettbewerb
*
* @param string $wettbewerb
* @return void
*/
public function setWettbewerb($wettbewerb)
{
$this->wettbewerb = $wettbewerb;
}
/**
* Returns the beschreibung
*
* @return string $beschreibung
*/
public function getBeschreibung()
{
return $this->beschreibung;
}
/**
* Sets the beschreibung
*
* @param string $beschreibung
* @return void
*/
public function setBeschreibung($beschreibung)
{
$this->beschreibung = $beschreibung;
}
/**
* Returns the registrierung
*
* @return string $registrierung
*/
public function getRegistrierung()
{
return $this->registrierung;
}
/**
* Sets the registrierung
*
* @param string $registrierung
* @return void
*/
public function setRegistrierung($registrierung)
{
$this->registrierung = $registrierung;
}
/**
* Returns the verfahrensort
*
* @return string $verfahrensort
*/
public function getVerfahrensort()
{
return $this->verfahrensort;
}
/**
* Sets the verfahrensort
*
* @param string $verfahrensort
* @return void
*/
public function setVerfahrensort($verfahrensort)
{
$this->verfahrensort = $verfahrensort;
}
/**
* Returns the bundesland
*
* @return string $bundesland
*/
public function getBundesland()
{
return $this->bundesland;
}
/**
* Sets the bundesland
*
* @param string $bundesland
* @return void
*/
public function setBundesland($bundesland)
{
$this->bundesland = $bundesland;
}
/**
* Returns the abgabetermin
*
* @return \DateTime $abgabetermin
*/
public function getAbgabetermin()
{
return $this->abgabetermin;
}
/**
* Sets the abgabetermin
*
* @param \DateTime $abgabetermin
* @return void
*/
public function setAbgabetermin(\DateTime $abgabetermin)
{
$this->abgabetermin = $abgabetermin;
}
/**
* Returns the kammerbeschluss
*
* @return \DateTime $kammerbeschluss
*/
public function getKammerbeschluss()
{
return $this->kammerbeschluss;
}
/**
* Sets the kammerbeschluss
*
* @param \DateTime $kammerbeschluss
* @return void
*/
public function setKammerbeschluss(\DateTime $kammerbeschluss)
{
$this->kammerbeschluss = $kammerbeschluss;
}
/**
* Returns the entscheidungstermin
*
* @return \DateTime $entscheidungstermin
*/
public function getEntscheidungstermin()
{
return $this->entscheidungstermin;
}
/**
* Sets the entscheidungstermin
*
* @param \DateTime $entscheidungstermin
* @return void
*/
public function setEntscheidungstermin(\DateTime $entscheidungstermin)
{
$this->entscheidungstermin = $entscheidungstermin;
}
/**
* Returns the sperrung
*
* @return bool $sperrung
*/
public function getSperrung()
{
return $this->sperrung;
}
/**
* Sets the sperrung
*
* @param bool $sperrung
* @return void
*/
public function setSperrung($sperrung)
{
$this->sperrung = $sperrung;
}
/**
* Returns the boolean state of sperrung
*
* @return bool
*/
public function isSperrung()
{
return $this->sperrung;
}
/**
* Returns the aufgabenstellung
*
* @return string $aufgabenstellung
*/
public function getAufgabenstellung()
{
return $this->aufgabenstellung;
}
/**
* Sets the aufgabenstellung
*
* @param string $aufgabenstellung
* @return void
*/
public function setAufgabenstellung($aufgabenstellung)
{
$this->aufgabenstellung = $aufgabenstellung;
}
/**
* __construct
*/
public function __construct()
{
//Do not remove the next line: It would break the functionality
$this->initStorageObjects();
}
/**
* Initializes all ObjectStorage properties
* Do not modify this method!
* It will be rewritten on each save in the extension builder
* You may modify the constructor of this class instead
*
* @return void
*/
protected function initStorageObjects()
{
$this->wettbewerbUser = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}
}
@@ -0,0 +1,36 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* The repository for Architektens
*/
class ArchitektenRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
}
@@ -0,0 +1,36 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* The repository for Kriteriens
*/
class KriterienRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
}
@@ -0,0 +1,36 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2016 Hermann Telser <hermann.telser@gmail.com>, Hermann Telser
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Extbase\Persistence\Repository;
/**
* The repository for Ruhestellungen
*/
class RuhestellungenRepository extends Repository
{
}
@@ -0,0 +1,36 @@
<?php
namespace HermannTelser\Zuladungsliste\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2016
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project 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.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* The repository for Wettbewerbes
*/
class WettbewerbeRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
}
@@ -0,0 +1,38 @@
<?php
namespace HermannTelser\Zuladungsliste\Download;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Core\Environment;
class PdfEinreichung
{
/**
* @return array
*/
public static function download()
{
$pdfname = GeneralUtility::_GP("pdf");
$userid = GeneralUtility::_GP("userid");
$file = Environment::getPublicPath() . "/uploads/tx_zuladungsliste/" . $userid . "/" . $pdfname;
echo $file;
if(file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
}
exit;
}
}
@@ -0,0 +1,289 @@
<?php
namespace HermannTelser\Zuladungsliste\Download;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Berechnung\Sektionstage;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Liste\ListeTree;
use Mpdf;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use DateTime;
class PdfListe
{
public static $Mpdf;
/**
* @return array
*/
public static function download()
{
new _Berechnung();
_Berechnung::$debug = 0;
$pdf_archive_id = GeneralUtility::_GP('pdf_archive_id');
$kammernid = GeneralUtility::_GP('kammernid');
$extPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('zuladungsliste');
Sektionstage::load();
// exit;
if ($pdf_archive_id) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_archive_admin');
$statement = $queryBuilder
->select('liste', 'erstellt_am', 'kammernid')
->from('tx_zuladungsliste_archive_admin')
->where(
$queryBuilder->expr()->eq('uid', (int) $pdf_archive_id)
)
->execute()->fetchAll();
$tmp = json_decode($statement[0]['liste'], true);
$erstellt_am = $statement[0]['erstellt_am'];
$kammernid = $statement[0]['kammernid'];
} else {
_Berechnung::berechnen();
ListeTree::set_dijit();
$tmp = _Berechnung::$_return;
$t = new DateTime();
$erstellt_am = $t->format('Y-m-d');
}
$door = 'open';
$_liste = [];
foreach ($tmp as $key => $value) {
if ($value['hasChildren'] == 1 and $value['punkte'] == 0) {
$door = 'close';
}
if ($door == 'open') {
$_liste[] = $value;
}
}
// dd($_liste);
self::$Mpdf = new \Mpdf\Mpdf([
'mode' => 'utf-8',
'format' => 'A4-L',
'margin_left' => 7,
'margin_right' => 7,
'margin_top' => 12,
'margin_bottom' => 12,
'margin_header' => 0,
'margin_footer' => 0,
]);
self::$Mpdf->SetTitle("ZL vom " . $erstellt_am);
$stylesheet = file_get_contents($extPath.'Classes/Download/style.css');
self::$Mpdf->WriteHTML($stylesheet, \Mpdf\HTMLParserMode::HEADER_CSS);
// logo
$html = '<div>';
$html .= '<img src="'.$extPath.'Resources/Public/Images/logo-archwest-adler.png" style="height:17mm; width:auto">';
// wappen
// switch ($kammernid) {
// case 1:
// $image = $extPath.'Resources/Public/Images/wappen-tirol.svg';
// break;
// case 2:
// $image = $extPath.'Resources/Public/Images/wappen-vorarlberg.svg';
// break;
// }
// $wappen = '<img src="'.$image.'" style="height:10mm; width:auto">';
// header
// $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_kammern');
// $kammer = $queryBuilder
// ->select('bezeichnung')
// ->from('tx_zuladungsliste_domain_model_kammern')
// ->where(
// $queryBuilder->expr()->eq('uid', (int) $kammernid)
// )
// ->execute()->fetchOne();
// switch($kammernid) {
// case 1:
// $html .= '<div class="liste-titel">Wettbewerbzuladungsliste Kammer der ZiviltechnikerInnen für Tirol</div>';
// break;
// case 2:
// $html .= '<div class="liste-titel">Wettbewerbzuladungsliste Kammer der ZiviltechnikerInnen für Vorarlberg</div>';
// break;
// }
$html .= '<div class="liste-titel">Wettbewerbzuladungsliste vom ' . $erstellt_am . '</div>';
// sub header
// $sektionstag = Sektionstage::filter($timestamp);
// $html .= '<p class="center">Stand ' . $erstellt_am . ', auf Basis des Sektionstages vom '.$sektionstag['stichtag'].', '.$sektionstag['bezeichnung'].'</p>';
$html .= '<p class="liste-subtitel">Die Wettbewerbsliste wurde vom Sektionstag der Sektion Architekt:innen am 13.11.1998 mit Zusätzen vom 04.10.2001, 14.06.2004, 27.03.2007, 20.06.2013, 15.09.2014, 09.10.2017, 14.10.2019, 25.04.2022 beschlossen. Dabei handelt es sich um eine Liste, aus der die Kammer nach einem Punktesystem Architekt:innen für Wettbewerbe nominiert.</p>';
// print_r($_liste);
// exit;
self::movePartnerToTeilhaber($_liste);
$bggrau = "";
$html .= '<table class="pure-table pure-table-bordered liste">';
$html .= '<tr><th>Reihung</th><th>Nennung</th><th>Teilnehmer:innen</th><th>Verfall Punkte</th><th>Sperre bis</th><th>Preis/Zuladung</th><th>Punkte</th><th>Wettbewerb</th><tr>';
foreach ($_liste as $key => $value) {
if (isset($value['user_id'])) {
if ($key > 0) {
$html .= '<tr class="border-table"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>';
}
if (0 == $value['pos']) {
$value['pos'] = '';
} else {
$value['gesperrt_bis'] = "";
}
if ($value['pos']) {
$html .= '<tr>';
$bggrau = "";
} else {
$html .= '<tr class="bg-grau">';
$bggrau = "bg-grau";
$value['pos'] = "Gesperrt";
}
$html .= "<td class=\"center\">".$value['rang'].'</td>';
$html .= "<td class=\"center \">".$value['pos'].'</td>';
if($value['burogemeinschaft'] == 1){
$html .= "<td>" . $value['company'] . '<br><span class="small">' . $value['teilhaber'] . '</small></td>';
}
else {
$html .= "<td>" . $value['company'] . '<br><span class="small">' . $value['name'] . '</small></td>';
}
// $html .= "<td>" . $value['company'] . '<br><span class="small">' . $value['teilhaber'] . '</small></td>';
$html .= "<td class=\"center\">Verfall Punkte</td>";
$html .= "<td class=\"center\">" . $value['gesperrt_bis'] . '</td>';
$html .= "<td class=\"center\">Preis/Zuladung</td>";
if ($value['punkte']) {
$html .= "<td class=\"center bg-grau-d\">" . number_format($value['punkte'], 2) . '</td>';
} else {
$html .= "<td class=\"center\"></td>";
}
$html .= "<td class=\"center\">Wettbewerb</td>";
$html .= '</tr>';
} elseif (isset($value['type'])) {
switch ($value['type']) {
case 'neueinsteiger':
case 'frauenfoerderpunkt':
if ($value['punkte']) {
// [id] => 3
// [company] => Neueinsteigerpunkt
// [kommentar] => Gültig bis 2023-07-31<sup>2</sup>
// [hasChildren] => 0
// [parent] => 1
// [punkte] => 1
// [nominiert] => 2
// [gesperrt_bis] =>
// [type] => neueinsteiger
$html .= '<tr class="' . $bggrau . '">';
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td class=\"center\">".str_replace("Gültig bis ", "", $value['kommentar'])."</td>";
$html .= "<td></td>";
$html .= "<td>".$value['company']."</td>";
$html .= "<td class=\"center\">" . number_format($value['punkte'], 2) . '</td>';
$html .= "<td></td>";
$html .= '</tr>';
}
break;
case 'wettbewerb':
// "id": 5,
// "company": "Off. WB Neubau Hofgartencafe Innsbruck<br><i class=\"fa fa-trophy\"></i> Anerkennung",
// "gesperrt_bis": "",
// "kommentar": "",
// "entscheidungstermin": "2022-11-25",
// "zuladung": 0,
// "valid": "2025-11-25",
// "hasChildren": 0,
// "parent": 1,
// "punkte": 4,
// "nominiert": 2,
// "punkte_aktive": 1,
// "geladen": null,
// "type": "wettbewerb"
#############
// 'Keine Spezielle Zuladung', => 0
// 'Zuladung durch Auslober:in' => 1
// 'Zuladung durch Kammer' => 2
// 'Zuladung durch Auslosung' => 3
$zuladung = "";
switch ($value['ladung_durch_auslober']) {
case '1':
$zuladung = 'Zuladung durch Auslober:in';
break;
case '2':
$zuladung = 'Zuladung durch Kammer';
break;
case '3':
$zuladung = 'Zuladung durch Auslosung';
break;
}
#############
$html .= '<tr class="' . $bggrau . '">';
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td class=\"center\">".$value['valid']."</td>";
$html .= "<td class=\"center\">" . $value['gesperrt_bis'] . '</td>';
if ($value['bezeichnung_punkte'] != "" and $zuladung != "") {
$html .= "<td>". $value['bezeichnung_punkte'] . "<br>" . $zuladung . "</td>";
} else {
$html .= "<td>". $value['bezeichnung_punkte'] . $zuladung . "</td>";
}
if ($value['punkte']) {
$html .= "<td class=\"center\">" . number_format($value['punkte'], 2) . '</td>';
} else {
$html .= "<td></td>";
}
$html .= "<td>".$value['company']."</td>";
$html .= '</tr>';
break;
case 'sondersperrung':
// [id] => 38
// [company] => Sondersperrung
// [kommentar] => Ablehnung Baufeld Neuwirt, Götzens
// [hasChildren] => 0
// [parent] => 37
// [punkte] => 0
// [nominiert] => 2
// [gesperrt_bis] => 04.02.2023
// [type] => sondersperrung
$html .= '<tr class="' . $bggrau . '">';
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td></td>";
$html .= "<td class=\"center\">" . $value['gesperrt_bis'] . '</td>';
$html .= "<td>".$value['company']."</td>";
$html .= "<td></td>";
$html .= "<td>".$value['kommentar']."</td>";
$html .= '</tr>';
break;
}
}
}
$html .= '</table>';
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
self::$Mpdf->Output('Standard.pdf', Mpdf\Output\Destination::INLINE);
exit;
}
public static function movePartnerToTeilhaber(&$_liste)
{
foreach ($_liste as $key => $value) {
if ($value['burogemeinschaft']) {
$key1 = $key +1;
$_liste[$key]['teilhaber'] = str_replace("<br>", " ", $_liste[$key1]['kommentar']);
}
}
}
}
@@ -0,0 +1,39 @@
<?php
namespace HermannTelser\Zuladungsliste\Download;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _DownloadController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'download_pdf':
PdfListe::download();
break;
case 'download_einreichung':
PdfEinreichung::download();
break;
}
}
}
@@ -0,0 +1,98 @@
body {
font-family: sans-serif;
font-size: 0.9em;
line-height: 1.1em;
margin: 0;
padding: 0;
}
.liste-titel {
font-family: sans-serif;
padding: 15mm 0 0;
font-size: 2em;
font-weight: bold;
text-align: center;
margin: 1em auto;
}
.rot {
color: #800;
}
table {
width: 100%;
}
.center {
text-align: center;
}
.right {
text-align: right;
}
.filter {
background-color: #eee;
border: 1px solid #cbcbcb;
padding: 0.5rem 1rem;
margin: 0.5rem 0;
}
/* PURE TABLES START */
.pure-table {
/* Remove spacing between table cells (from Normalize.css) */
border-collapse: collapse;
border-spacing: 0;
empty-cells: show;
border: 1px solid #cbcbcb;
}
.pure-table td,
.pure-table th,
.pure-table-noborder td,
.pure-table-noborder th {
border-left: 1px solid #cbcbcb;
border-bottom: 1px solid #cbcbcb;
/* inner column border */
border-width: 0 0 1px 1px;
font-size: inherit;
margin: 0;
overflow: visible;
/*to make ths where the title is really long work*/
padding: .7em 1em;
/* cell padding */
}
.pure-table td {
background-color: transparent;
}
.pure-table-odd td {
background-color: #eee;
}
/* nth-child selector for modern browsers */
.pure-table-striped tr:nth-child(2n-1) td {
background-color: #eee;
border-bottom: 1px solid #cbcbcb;
}
/* BORDERED TABLES */
.pure-table-bordered td {
border-bottom: 1px solid #cbcbcb;
}
.pure-table-bordered tbody>tr:last-child>td {
border-bottom-width: 0;
}
/* HORIZONTAL BORDERED TABLES */
.pure-table-horizontal td,
.pure-table-horizontal th {
border-width: 0 0 1px 0;
border-bottom: 1px solid #cbcbcb;
}
.pure-table-horizontal tbody>tr:last-child>td {
border-bottom-width: 0;
}
@@ -0,0 +1,116 @@
body {
font-family: sans-serif;
font-size: 0.8rem;
line-height: 1.1rem;
margin: 0;
padding: 0;
}
.liste-titel {
font-family: sans-serif;
padding: 15mm 0 0;
font-size: 1.8em;
text-align: center;
}
.liste-subtitel {
font-size: 1.1em;
line-height: 1.3;
text-align: center;
}
table.liste {
width: 100%;
font-size: 0.9em;
margin-top: 7mm;
}
.rot {
color: #800;
}
.gruen {
color: green;
}
.center {
text-align: center;
}
.right {
text-align: right;
}
.small {
font-size: 0.8rem;
}
.bg-grau {
background-color: #ddd;
}
.bg-grau-d {
background-color: #bcbcbc;
font-weight: bold;
}
.bg-black {
background-color: #000;
}
.border-table td {
height: 5px;
padding: 0;
background-color: #000;
border-left: 1px solid #000;
border-bottom: 1px solid #000;
border-top: 1px solid #000;
}
/* PURE TABLES START */
.pure-table {
/* Remove spacing between table cells (from Normalize.css) */
border-collapse: collapse;
border-spacing: 0;
empty-cells: show;
border: 1px solid #000;
}
.pure-table caption {
color: #000;
font: italic 85%/1 arial, sans-serif;
padding: 1em 0;
text-align: center;
}
.pure-table td,
.pure-table th {
border-left: 1px solid #000;
border-bottom: 1px solid #000;
/* inner column border */
/* border-width: 0 0 1px 1px; */
border-top: 1px solid #000;
font-size: inherit;
margin: 0;
overflow: visible;
/*to make ths where the title is really long work*/
padding: 0.5em 0.7em;
/* cell padding */
}
.pure-table th {
background-color: #000;
color: #e0e0e0;
text-align: center;
vertical-align: bottom;
}
/* BORDERED TABLES */
/* .pure-table-bordered td {
border-bottom: 1px solid #000 !important;
} */
.pure-table-bordered tbody>tr:last-child>td {
border-bottom-width: 0;
}
@@ -0,0 +1,47 @@
<?php
namespace HermannTelser\Zuladungsliste\Einreichen;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class EinreichungDelete
{
public static function laden()
{
// lösche Einreichung
$uid = GeneralUtility::_GP('uid');
if (!is_numeric($uid)) {
exit;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
$queryBuilder
->update('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid)
)
->set('tstamp', time())
->set('deleted', (int) 1)
->execute();
echo $queryBuilder->getSQL();
}
}
@@ -0,0 +1,57 @@
<?php
namespace HermannTelser\Zuladungsliste\Einreichen;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class EinreichungenUser
{
public static function laden()
{
// EIGEREICHTE PROJEKT
$user = $GLOBALS['TSFE']->fe_user->user;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
// $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('uid', 'crdate', 'wettbewerb', 'beschreibung', 'entscheidungstermin', 'verfahrensort', 'bundesland', 'dokument_orig_name', 'aufgenommen', 'abgelehnt', 'begruendung')
->from('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->where($queryBuilder->expr()->eq('cruser_id', $user['uid']))
->orderBy('aufgenommen');
$statement = $queryBuilder->execute()->fetchAll();
$arr = array();
foreach ($statement as $key => $value) {
$value["status"] = 0;
if($value["aufgenommen"] > 0){
$value["status"] = 1;
}
else if ($value["abgelehnt"] > 0){
$value["status"] = 2;
}
$arr[] = $value;
}
header('Content-Type: application/json');
echo json_encode($arr);
exit();
}
}
@@ -0,0 +1,36 @@
<?php
namespace HermannTelser\Zuladungsliste\Einreichen;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _EinreichenController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'lade_einreichungen':
return EinreichungenUser::laden();
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,167 @@
<?php
namespace HermannTelser\Zuladungsliste\Hooks;
/**
* This file is part of the "news" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*/
use TYPO3\CMS\Backend\Utility\BackendUtility as BackendUtilityCore;
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use \TYPO3\CMS\Core\Messaging\FlashMessage;
use \TYPO3\CMS\Core\Messaging\FlashMessageService;
use Carbon\Carbon;
/**
* Hook into tcemain which is used to show preview of news item
*/
class DataHandler implements SingletonInterface
{
/**
* Prevent saving of a news record if the editor doesn't have access to all categories of the news record
*
* @param array $fieldArray
* @param string $table
* @param int $id
* @param $parentObject \TYPO3\CMS\Core\DataHandling\DataHandler
*
* @return void
*/
public function processDatamap_preProcessFieldArray(&$fieldArray, $table, $id, $parentObject): void
{
if ($table === 'tx_zuladungsliste_domain_model_ruhestellung') {
$carbon_start = Carbon::parse($fieldArray['ruhestellung_start']);
$carbon_end = Carbon::parse($fieldArray['ruhestellung_end']);
$flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
$messageQueue = $flashMessageService->getMessageQueueByIdentifier();
if($carbon_start >= $carbon_end){
/**
* Ende vor Start error
*/
$text = 'Der Start der Ruhestellung vom '.$carbon_start->format('d. M Y').' muß vor dessem Ende sein.';
$message = GeneralUtility::makeInstance(
FlashMessage::class, $text,'Fehler in Ruhestellungen', FlashMessage::ERROR);
$messageQueue->addMessage($message);
}
else {
/**
* load all ruhestellungen für aktuellen user
*/
$row = GeneralUtility::makeInstance(ConnectionPool::class)
->getConnectionForTable($table)
->select(['uid_ruhestellung'], // fields to select
$table, // from
[ 'uid' => (int)$id ] // where
)
->fetch();
$uid_ruhestellung = $row['uid_ruhestellung'];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$queryBuilder->select('ruhestellung_start','ruhestellung_end')->from($table)->where(
$queryBuilder->expr()->eq('uid_ruhestellung', (int)$uid_ruhestellung),
$queryBuilder->expr()->neq('uid', (int)$id)
);
$statement = $queryBuilder->execute()->fetchAll();
$ueberlappend = false;
foreach ($statement as $row) {
$row_start = Carbon::parse($row['ruhestellung_start']);
$row_end = Carbon::parse($row['ruhestellung_end']);
if($carbon_start->between($row_start, $row_end) or $carbon_end->between($row_start, $row_end)){
$text = $carbon_start->format('d. M y').' -'.$row_start->format('d. M y').' -'.$row_end->format('d. M y');
$message = GeneralUtility::makeInstance(FlashMessage::class, $text,'Ruhestellungen Fehler', FlashMessage::INFO);
$messageQueue->addMessage($message);
$ueberlappend = true;
}
}
if($ueberlappend){
$text = 'Die Ruhestellung vom '.$carbon_start->format('d. M y').' überschneiden sich mit einer anderen Ruhestellung.';
$message = GeneralUtility::makeInstance(FlashMessage::class, $text,'Ruhestellungen Fehler', FlashMessage::ERROR);
$messageQueue->addMessage($message);
}
else {
/********************************************************
fix pid
********************************************************/
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_ruhestellung');
$queryBuilder
->update('tx_zuladungsliste_domain_model_ruhestellung')
->set('pid', 63)
->execute();
$message = GeneralUtility::makeInstance(FlashMessage::class, '','Ruhestellungen Gespeichert', FlashMessage::OK);
$messageQueue->addMessage($message);
}
}
// FlashMessage::NOTICE for notifications
// FlashMessage::INFO for information messages
// FlashMessage::OK for success messages
// FlashMessage::WARNING for warnings
// FlashMessage::ERROR for errors
}
if ($table === 'tx_zuladungsliste_buro_gemeinschaft_mm') {
/********************************************************
BUROGEMEINSCHAFT ALLE AKTIVEN PARTNER in tx_zuladungsliste_buro_gemeinschaft_mm
********************************************************/
$_partner = [];
$_gemeinschaft = [];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$ref = $queryBuilder
->select('uid_user','uid_gemeinschaft')
->from($table)
->execute()
->fetchAll();
$_partner = [];
foreach ($ref as $key => $value) {
$_partner[] = $value['uid_user'];
$_gemeinschaft[] = $value['uid_gemeinschaft'];
}
/********************************************************
IS PARTNER TO DISABLE CREATION OF BÜROGEMEISCHAFT on PARTNER in fe_users
0 => Architekt Alleine
1 => Partner einer Bürogemeischaft
2 => Ist Bürogemeischaft
********************************************************/
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder
->update('fe_users')
->set('istpartner', '0')
->execute();
if ($_partner) {
$queryBuilder
->update('fe_users')
->where(
$queryBuilder->expr()->eq('deleted', 0),
$queryBuilder->expr()->eq('kontoaufloesung', 0),
$queryBuilder->expr()->in('uid', $_partner)
)
->set('istpartner', '1')
->execute();
}
$_gemeinschaft = array_unique($_gemeinschaft);
if ($_gemeinschaft) {
$queryBuilder
->update('fe_users')
->where(
$queryBuilder->expr()->eq('deleted', 0),
$queryBuilder->expr()->eq('kontoaufloesung', 0),
$queryBuilder->expr()->in('uid', $_gemeinschaft)
)
->set('istpartner', '2')
->execute();
}
}
}
}
@@ -0,0 +1,53 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class Archive
{
/**
* @return void
*/
public static function load($archive_id)
{
// Ajax::$debug = 1;
if (_Berechnung::$debug) {
Message::debug(
__FILE__,
__LINE__,
'Load Liste Archive'
);
}
$queryBuilder = GeneralUtility::makeInstance(
ConnectionPool::class
)->getQueryBuilderForTable('tx_zuladungsliste_archive_admin');
$statement = $queryBuilder
->select('liste')
->from('tx_zuladungsliste_archive_admin')
->where($queryBuilder->expr()->eq('uid', (int) $archive_id))
->addOrderBy('uid', 'DESC')
->execute()
->fetchAll();
$tmp = json_decode($statement[0]['liste'], true);
$door = 'open';
$_return = [];
foreach ($tmp as $key => $value) {
if ($value['hasChildren'] == 1 and $value['punkte'] == 0) {
$door = 'close';
}
if ($door == 'open') {
$_return[] = $value;
}
}
header('Content-Type: application/json');
echo json_encode($_return);
exit();
}
}
@@ -0,0 +1,59 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use DateTime;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class ArchiveMenu
{
/**
*
* @return string
*/
public static function load()
{
$kammerid = GeneralUtility::_GP('kammernid');
$queryBuilder = GeneralUtility::makeInstance(
ConnectionPool::class
)->getQueryBuilderForTable('tx_zuladungsliste_archive_admin');
$statement = $queryBuilder
->select('uid', 'erstellt_am')
->from('tx_zuladungsliste_archive_admin')
->where($queryBuilder->expr()->in('kammernid', $kammerid))
->addOrderBy('uid', 'DESC')
->execute();
$tmp=[];
foreach ($statement as $key => $value) {
$zeit = new DateTime($value["erstellt_am"]);
$year = $zeit->format("Y");
$tmp[$year][] = $value;
}
_Berechnung::$_return = [];
foreach ($tmp as $year => $value) {
$t = array();
$t["year"] = $year;
foreach ($value as $key => $val) {
$t2 = array();
$t2["id"] = $val["uid"];
$t2["titel"] = $val["erstellt_am"];
$t["subdata"][] = $t2;
}
_Berechnung::$_return[] = $t;
}
}
}
@@ -0,0 +1,148 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Utilities\Resources;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class EinreichungenAdmin
{
/**
* @return bool
*/
public static function disable()
{
// EINGEREICHTE PROJEKT DELETE
$uid = preg_replace("'\D'", "", $_GET['uid']);
if (!is_numeric($uid)) {
exit;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
$queryBuilder
->update('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid),
$queryBuilder->expr()->eq('aufgenommen', 0),
$queryBuilder->expr()->eq('abgelehnt', 0)
)->set('deleted', '1')->execute();
// echo $queryBuilder->getSQL();
echo 1;
exit;
}
/**
* @return bool
*/
public static function update()
{
// EINGEREICHTE PROJEKT UPDATE
$uid = preg_replace("'\D'", "", $_GET['uid']);
if (!is_numeric($uid)) {
exit;
}
$field = preg_replace("'\W'", "", $_GET['field']);
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
if ($field=="aufgenommen") {
$queryBuilder
->update('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->where($queryBuilder->expr()->eq('uid', (int) $uid))
->set('aufgenommen', (int) time())
->set('abgelehnt', 0)
->execute();
} elseif ($field=="abgelehnt") {
$queryBuilder
->update('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->where($queryBuilder->expr()->eq('uid', (int) $uid))
->set('aufgenommen', 0)
->set('abgelehnt', (int) time())
->execute();
}
// echo $queryBuilder->getSQL();
echo 1;
exit;
}
/**
* @return bool
*/
public static function load()
{
// EINGEREICHTE PROJEKT LOAD
// _Berechnung::$debug = 1;
if (_Berechnung::$debug) {
Message::debug(
__FILE__,
__LINE__,
'Load ListeBerechnung'
);
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
$statement = $queryBuilder
->select(
'a.company',
'a.name',
'a.uid AS user_uid',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.uid',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.crdate',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.wettbewerb',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.beschreibung',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.entscheidungstermin',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.verfahrensort',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.bundesland',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.dokument_orig_name',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.aufgenommen',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.abgelehnt',
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.begruendung'
)
->from('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->join(
'tx_zuladungsliste_domain_model_wettbewerbe_einreichungen',
'fe_users',
'a',
$queryBuilder->expr()->eq('a.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.cruser_id'))
)
->where(
$queryBuilder->expr()->eq('a.deleted', (int) 0),
$queryBuilder->expr()->eq('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen.deleted', (int) 0)
)->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$bundeslaender_map = array_flip(Resources::bundeslaender());
$_return = [];
foreach ($statement as $key => $value) {
$value['id'] = (int) $value['uid'];
unset($value['uid']);
$value['aufgenommen'] = (int) $value['aufgenommen'];
$value['abgelehnt'] = (int) $value['abgelehnt'];
$value['year'] = (int) substr($value['entscheidungstermin'], 0, 4);
$value['bundeslandid'] = $bundeslaender_map[$value['bundesland']];
$value['status'] = 1;
if ($value['abgelehnt'] > 0) {
$value['status'] = 3;
} elseif ($value['aufgenommen'] > 0) {
$value['status'] = 2;
}
$_return[] = $value;
}
header('Content-Type: application/json');
echo json_encode($_return);
exit();
}
}
@@ -0,0 +1,174 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use HermannTelser\Zuladungsliste\Berechnung\Architekten;
use HermannTelser\Zuladungsliste\Berechnung\PunkteKriterien;
use HermannTelser\Zuladungsliste\Berechnung\WettbewerbeArchitekten;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Utilities\Resources;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/*
ORIGINAL QUERY
$fields = "wamm.uid id,
fe.company,fe.name,
wb.wettbewerb,
wb.bundesland,
EXTRACT(YEAR FROM wb.entscheidungstermin) entyear,
EXTRACT(YEAR FROM wb.abgabetermin) abgyear,
pu.bezeichnung pname,
pkmm.punkte,
wamm.tstamp_zuordnung,
wamm.tstamp_aktivierung,
wamm.tstamp_ablehnen";
$from = "tx_zuladungsliste_wettbewerbe_architekten_mm wamm,
fe_users fe,
tx_zuladungsliste_domain_model_wettbewerbe wb,
tx_zuladungsliste_punkte_kriterien_mm pkmm,
tx_zuladungsliste_domain_model_punkte pu";
$where = "wamm.uid_user=fe.uid AND
wamm.uid_wettbewerbe=wb.uid AND
wb.kriteriumid=pkmm.uid_kriterien AND
wamm.uid_punkte=pu.uid AND
pkmm.uid_punkte = wamm.uid_punkte";
*/
class Freischaltungen
{
/**
* @return bool
*/
public static function aktivieren()
{
// _Berechnung::$debug = 1;
$uid_wettarch = GeneralUtility::_GP('uid_wettarch');
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder->update('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid_wettarch)
)
->set('tstamp', (int) time())
->set('tstamp_aktivierung', (int) time())
->set('tstamp_ablehnen', 0)
->execute();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
echo 1;
exit;
}
/**
* @return bool
*/
public static function ablehnen()
{
// _Berechnung::$debug = 1;
$uid_wettarch = GeneralUtility::_GP('uid_wettarch');
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder->update('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid_wettarch)
)
->set('tstamp', (int)time())
->set('tstamp_aktivierung', 0)
->set('tstamp_ablehnen', (int)time())
->execute();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
echo 1;
exit;
}
/**
* @return void
*/
public static function load()
{
$webvalue = GeneralUtility::_GP('value');
$webkey = GeneralUtility::_GP('key');
new _Berechnung();
_Berechnung::$debug = 0;
if (_Berechnung::$debug) {
Message::debug(
__FILE__,
__LINE__,
'Load Liste Freischaltungen'
);
}
Architekten::load();
$Architekten = [];
foreach (_Berechnung::$_data['architekten'] as $key => $_row) {
$Architekten[$_row['uid']] = $_row;
}
$PunkteKriterien = PunkteKriterien::load();
$WettbewerbeArchitekten = WettbewerbeArchitekten::load();
$_data = [];
foreach ($WettbewerbeArchitekten as $key => $_row) {
$uid_user = $_row['uid_user'];
if (isset($Architekten[$uid_user])) {
$_row = array_merge($_row, $Architekten[$uid_user]);
$uid_punkte = $_row['uid_punkte'];
if (!$PunkteKriterien[$uid_punkte]) {
print_r($_row);
exit;
}
$_row = array_merge($_row, $PunkteKriterien[$uid_punkte]);
$_data[] = $_row;
}
}
$bundeslaender_map = array_flip(Resources::bundeslaender());
_Berechnung::$_return = [];
foreach ($_data as $key => $_row) {
$_row['id'] = $key;
$entyear = (int) substr($_row['entscheidungstermin'], 0, 4);
$abgyear = (int) substr($_row['abgabetermin'], 0, 4);
if ($entyear) {
$_row['jahr'] = $entyear;
} elseif ($abgyear) {
$_row['jahr'] = $abgyear;
} else {
$_row['jahr'] = 'fehlt!';
}
// anstehend
$_row['status'] = 0;
if (0 != $_row['tstamp_zuordnung'] and 0 == $_row['tstamp_aktivierung'] and 0 == $_row['tstamp_ablehnen']) {
$_row['status'] = 1;
}
// freie
if (0 != $_row['tstamp_aktivierung']) {
$_row['status'] = 2;
}
// freie
if (0 != $_row['tstamp_ablehnen']) {
$_row['status'] = 3;
}
$_row['bundeslandid'] = $bundeslaender_map[$_row['bundesland']];
if ('jahr' == $webkey) {
if ($_row['jahr'] == $webvalue) {
_Berechnung::$_return[] = $_row;
}
} else {
_Berechnung::$_return[] = $_row;
}
}
}
}
@@ -0,0 +1,45 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class ListeAdmin
{
/**
*
* @return string
*/
public static function load()
{
$archive_id = GeneralUtility::_GP('archive_id');
if ($archive_id) {
Archive::load($archive_id);
}
$berechnen = new _Berechnung();
$berechnen::berechnen();
ListeTree::set_dijit();
Punketstand::update();
header('Content-Type: application/json');
echo json_encode(_Berechnung::$_return);
exit();
}
}
@@ -0,0 +1,349 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ListeTree
{
/**
* @return void
*/
public static function set_dijit()
{
$anzeigemodus = GeneralUtility::_GP('anzeigemodus');
// print_r(_Berechnung::$_data['liste']);
// exit;
$_return = [];
$i = 1;
foreach (_Berechnung::$_data['liste'] as $value) {
// if($value["user_id"]==859) {
// print_r($value);
// exit;
// }
$wettbewerbe = $value["auswertung"]["wettbewerbe"];
$neueinsteigerpunkt = $value["auswertung"]["neueinsteigerpunkt"];
$frauenfoerderpunkt = $value["auswertung"]["frauenfoerderpunkt"];
$solidaritaetserklaerung = $value["auswertung"]["solidaritaetserklaerung"];
$sondersperrungen = $value["auswertung"]["sondersperrungen"];
$kontoaufloesung = $value["auswertung"]["kontoaufloesung"];
$ruhestellungen = $value["auswertung"]["ruhestellungen"];
$burogemeinschaft = $value["auswertung"]["burogemeinschaft"];
$ruhestellung = $value["auswertung"]["ruhestellung"];
$vereidigung = $value["vereidigung"];
unset($value["auswertung"]);
$value["id"] = (int) $i;
$value["hasChildren"] = (int) 1;
$value["parent"] = null;
$value["punkte"] = (float) $value["punkte"];
$value["sortdatum"] = (int) $value["sortdatum"];
$value["ffp"] = $frauenfoerderpunkt['punkte'];
$_return[] = $value;
$i++;
// burogemeinschaft
if ($burogemeinschaft) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Partner:innen';
$tmp["kommentar"] = $burogemeinschaft["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = (float) $solidaritaetserklaerung["punkte"];
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["type"] = "burogemeinschaft";
$_return[] = $tmp;
}
else {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Vereidigung';
$tmp["kommentar"] = $vereidigung;
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = "";
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["type"] = "burogemeinschaft";
$_return[] = $tmp;
}
// neueinsteigerpunkt
if ($neueinsteigerpunkt) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Neueinsteiger:innenpunkt';
$tmp["kommentar"] = $neueinsteigerpunkt["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = (float) $neueinsteigerpunkt["punkte"];
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["type"] = "neueinsteiger";
$_return[] = $tmp;
}
// frauenfoerderpunkt
if ($frauenfoerderpunkt) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Frauenförderpunkt';
$tmp["kommentar"] = $frauenfoerderpunkt["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = (float) $frauenfoerderpunkt["punkte"];
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["type"] = "frauenfoerderpunkt";
$_return[] = $tmp;
}
// kontoaufloesung
if ($kontoaufloesung) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Kontoaufloesung';
$tmp["kommentar"] = $kontoaufloesung["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = (float) $kontoaufloesung["punkte"];
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["valid"] = $kontoaufloesung["gueltig_bis"];
$tmp["type"] = "kontoaufloesung";
$_return[] = $tmp;
}
// solidaritaetserklaerung
if ($solidaritaetserklaerung['punkte']) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Solidaritätserklärung';
$tmp["kommentar"] = $solidaritaetserklaerung["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = (float) $solidaritaetserklaerung["punkte"];
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["type"] = "solidaritaetserklaerung";
$_return[] = $tmp;
}
//
if ($sondersperrungen) {
foreach ($sondersperrungen as $key => $sondersperrung) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Sondersperrung';
$tmp["kommentar"] = $sondersperrung["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = 0;
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = $sondersperrung["gesperrt_bis"];
$tmp["type"] = "sondersperrung";
$_return[] = $tmp;
}
}
if ($ruhestellungen) {
// foreach ($ruhestellungen as $key => $ruhestellung) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = 'Ruhestellung';
$tmp["kommentar"] = $ruhestellungen["kommentar"];
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = 0;
$tmp["nominiert"] = (int) 2;
$tmp["gesperrt_bis"] = '';
$tmp["type"] = "ruhestellung";
$_return[] = $tmp;
// }
}
$wettbewerbe = array_reverse($wettbewerbe);
foreach ($wettbewerbe as $key => $value2) {
if (is_array($value2)) {
$tmp = [];
$tmp["id"] = (int) $i;
$i++;
$tmp["company"] = '';
if ($value2["sperrung_kriterien"] == 1) {
$tmp["company"] .= ' <span class="geladen">Geladen</span>';
}
$tmp["company"] .= $value2["wettbewerb"];
$tmp["bezeichnung_punkte"] = $value2["bezeichnung_punkte"];
$tmp["gesperrt_bis"] = '';
if (isset($value2["sperrung_aktive"]) and $value2["sperrung_aktive"] == 1) {
$tmp["gesperrt_bis"] .= $value2["gesperrt_bis"];
}
if (isset($value2["von_transfer"])) {
$tmp["gesperrt_bis"] .= $value2["von_transfer"];
$tmp["info"] = "";
}
$kommentare = [];
if ($value2['sperrzeitteilung']) {
$txt = 'Punkte und Sperrzeit ';
switch ($value2['sperrzeitteilung']) {
case 2:
$txt .= 'halbiert';
break;
case 3:
$txt .= 'gedrittelt';
break;
case 4:
$txt .= 'geviertelt';
break;
case 5:
$txt .= 'gefünftelt';
break;
}
$kommentare[] = '<i class="fa fa-divide"></i> ' . $txt;
}
if ($value2["einmal_im_jahr"] == 1) {
if($value2['entscheidungstermin']){
$t = explode('-',$value2['entscheidungstermin']);
}
else if($value2['kammerbeschluss']){
$t = explode('-',$value2['kammerbeschluss']);
}
$str = '';
if($t){
$str = '('.$t[0].')';
}
$kommentare[] = '<i class="fa fa-plus-circle"></i> Punkt für Teilnahme '.$str;
}
if ($value2["tage_in_ruhestellung"]) {
$kommentare[] = '<i class="fa fa-bed"></i> Verlängert um ' . $value2["tage_in_ruhestellung"]. ' Tage';
}
/**
* Ruhestellung -> punkte_verl
* 1: Verlängerung aktive, Abschlußdatum fehlt
* 2: Verlängerung stopped, Abschlußdatum present
* 3: Verlängerung active, Abschlußdatum present
*/
if ($value2['punkte_verl']) {
switch($value2['punkte_verl']) {
case 1:
$kommentare[] = '<i class="fa fa-bed"></i> Ruhestellung Ende offen';
break;
case 2:
$kommentare[] = '<i class="fa fa-bed"></i> Pausierte für ' . $value2["punkte_ruhiggestellt_tage"] . ' Tage';
break;
}
}
/**
* Sperre -> sperre_verl
* 1: Verlängerung aktive, Abschlußdatum fehlt
* 2: Verlängerung stopped, Abschlußdatum present
* 3: Verlängerung active, Abschlußdatum present
*/
if ($value2['sperre_verl']) {
switch($value2['punkte_verl']) {
case 1:
$kommentare[] = '<i class="fa fa-times"></i> Sperre verl. offen';
break;
case 2:
$kommentare[] = '<i class="fa fa-times"></i> Sperre verl. um ' . $value2["tage_verl"] . ' Tage';
break;
case 3:
$kommentare[] = '<i class="fa fa-times"></i> Sperre verl. um ' . $value2["tage_verl"] . ' Tage';
break;
}
}
// 'Keine Spezielle Zuladung', => 0
// 'Zuladung durch Auslober:in' => 1
// 'Zuladung durch Kammer' => 2
// 'Zuladung durch Auslosung' => 3
if ($value2['ladung_durch_auslober'] == 1) {
if($value2['loserverfahren'] ==1) {
$kommentare[] = '<i class="fa fa-dolly"></i> Zuladung durch Auslober:in<br><i class="fa fa-random"></i> Losverfahren Sperrzeitreduktion';
} else {
$kommentare[] = '<i class="fa fa-dolly"></i> Zuladung durch Auslober:in';
}
} elseif ($value2['ladung_durch_auslober'] == 2) {
$kommentare[] = '<i class="fa fa-dolly"></i> Zuladung durch Kammer';
} elseif ($value2['ladung_durch_auslober'] == 3) {
$kommentare[] = '<i class="fa fa-dolly"></i> Auslosung';
}
if ($value2['kontoaufloesung'] == 1) {
$kommentare[] = '<i class="fa fa-share"></i> von Kontoauflösung';
}
if ($value2['nichtsperren'] == 1) {
$kommentare[] = '<i class="fa fa-undo"></i> Sperre aufgehoben ';
}
$tmp["ladung_durch_auslober"] = $value2['ladung_durch_auslober'];
$tmp["kommentar"] = implode('<br>', $kommentare);
if ($value2['entscheidungstermin']) {
$tmp["entscheidungstermin"] .= $value2['entscheidungstermin'];
}
if ($value2['kammerbeschluss']) {
$tmp["kammerbeschluss"] .= $value2['kammerbeschluss'];
}
$tmp["zuladung"] = (int) $value2["ladung_durch_auslober"];
if ($value2["punkte"]) {
$tmp["valid"] = $value2["gueltig_bis"];
}
$tmp["hasChildren"] = (int) 0;
$tmp["parent"] = (int) $value["id"];
$tmp["punkte"] = (float) $value2["punkte"];
$tmp["nominiert"] = (int) 2;
// $tmp["sortdatum"] = (int)$value2["sortdatum"]+$key;
$tmp["punkte_aktive"] = $value2["punkte_aktive"];
$tmp["geladen"] = $value2["mit_sperrung"];
if ($value2["kontoaufloesung"]) {
$tmp["kontoaufloesung"] = $value2["kontoaufloesung"];
}
$tmp["type"] = "wettbewerb";
$_return[] = $tmp;
}
}
}
// print_r($_return);
// exit;
// filter out Architekten mit null punkten
$door = 'open';
_Berechnung::$_return = [];
foreach ($_return as $key => $value) {
if ($anzeigemodus != 3 and $value['hasChildren'] == 1 and $value['punkte'] == 0) {
$door = 'close';
}
if ($door == 'open') {
_Berechnung::$_return[] = $value;
}
}
}
}
@@ -0,0 +1,31 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class Punketstand
{
/**
* @return void
*/
public static function update()
{
return;
foreach (_Berechnung::$_data['liste'] as $value) {
$punkte = (float) str_replace(',', '.', $value['punkte']) ?? 0;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder
->update('fe_users')
->where(
$queryBuilder->expr()->eq('uid', (int) $value['user_id'])
)
->set('punktestand', "$punkte")
->execute();
}
}
}
@@ -0,0 +1,185 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
// use Doctrine\DBAL\DBALException;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use ForceUTF8\Encoding;
use DateTime;
use DateTimeZone;
class Recalculate
{
public static function latest()
{
// Message::error(__file__,__line__,"TEST LATEST");
$timestamp = mktime(0, 0, 0, date("m"), 15, date("Y"));
if ($timestamp > time()) {
$timestamp = mktime(0, 0, 0, date("m") - 1, 15, date("Y"));
}
/*
* ZT Kammer Tirol => 1
* ZT Kammer Vorarlberg => 2
*/
foreach ([1, 2] as $kammernid) {
new _Berechnung();
_Berechnung::$debug = 0;
_Berechnung::$_config['kammernid'] = $kammernid;
_Berechnung::$berechne_bis = (new DateTime('@' . $timestamp))->setTimezone(new DateTimeZone('Europe/Vienna'));
_Berechnung::$_config['berechne_bis'] = _Berechnung::$berechne_bis->format('U');
_Berechnung::$_config['berechne_bis_datum'] = _Berechnung::$berechne_bis->format('Y-m-d');
self::clearDate();
_Berechnung::berechnen();
ListeTree::set_dijit();
self::addNew();
}
return 1;
}
public static function all()
{
// Message::error(__file__,__line__,"TEST ALL");
ini_set('max_execution_time', 0);
self::clearAll();
// TIROL
new _Berechnung();
_Berechnung::$_config['kammernid'] = 1;
_Berechnung::$berechne_bis->setTimestamp(_Berechnung::$_config['liste_start']);
while (_Berechnung::$berechne_bis->format('U') < time()) {
_Berechnung::berechnen();
ListeTree::set_dijit();
self::addNew();
_Berechnung::moveOneMonthForward();
}
// VORARLBERG
new _Berechnung();
_Berechnung::$_config['kammernid'] = 2;
_Berechnung::$berechne_bis->setTimestamp(_Berechnung::$_config['liste_start']);
while (_Berechnung::$berechne_bis->format('U') < time()) {
_Berechnung::berechnen();
ListeTree::set_dijit();
self::addNew();
_Berechnung::moveOneMonthForward();
}
return 1;
}
/**
* Helper function
*/
private static function clearDate()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_zuladungsliste_archive_admin')->createQueryBuilder();
$queryBuilder
->delete('tx_zuladungsliste_archive_admin')
->where(
$queryBuilder->expr()->eq('kammernid', (int) _Berechnung::$_config['kammernid']),
$queryBuilder->expr()->eq('erstellt_am', "'" . _Berechnung::$berechne_bis->format('Y-m-d') . "'")
)
->execute();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_zuladungsliste_archive_user')->createQueryBuilder();
$queryBuilder
->delete('tx_zuladungsliste_archive_user')
->where(
$queryBuilder->expr()->eq('kammernid', (int) _Berechnung::$_config['kammernid']),
$queryBuilder->expr()->eq('erstellt_am', "'" . _Berechnung::$berechne_bis->format('Y-m-d') . "'")
)
->execute();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
}
/**
* empty all json data tables
*/
private static function clearAll()
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_zuladungsliste_archive_admin');
$connection->truncate('tx_zuladungsliste_archive_admin');
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_zuladungsliste_archive_user');
$connection->truncate('tx_zuladungsliste_archive_user');
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder->update('fe_users')
->set('frauenfoerderpunkt_verfallen', '0000-00-00')
->execute();
}
/**
* add neu entry in json table after calcualtion
*/
private static function addNew()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_archive_admin');
$queryBuilder
->insert('tx_zuladungsliste_archive_admin')
->values([
'erstellt_am' => _Berechnung::$berechne_bis->format('Y-m-d'),
'liste' => json_encode(Encoding::fixUTF8(_Berechnung::$_return)),
'kammernid' => _Berechnung::$_config['kammernid']
])
->execute();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$uid_archive_admin = $queryBuilder->getConnection()->lastInsertId();
$userid = 0;
$user_arr = [];
foreach (_Berechnung::$_return as $key => $value) {
if ($value["hasChildren"] == 1) {
$insert_array = [];
$insert_array["erstellt_am"] = _Berechnung::$berechne_bis->format('Y-m-d');
$insert_array["user_id"] = $value["user_id"];
$insert_array["archive_admin_uid"] = $uid_archive_admin;
$insert_array["company"] = $value["company"];
$insert_array["name"] = $value["name"];
$insert_array["punkte"] = $value["punkte"];
$insert_array["nominiert"] = $value["nominiert"] ?? 0;
$insert_array["rang"] = $value["rang"];
$insert_array["pos"] = $value["pos"];
$insert_array["kammernid"] = _Berechnung::$_config['kammernid'];
$userid = $value["id"];
$user_arr[$userid]["user"] = $insert_array;
} else {
$user_arr[$userid]["data"][] = $value;
}
}
foreach ($user_arr as $key => $value) {
$insert_array = [];
$insert_array = $value["user"];
$insert_array["auswertung"] = json_encode(Encoding::fixUTF8($value["data"]));
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_archive_user');
$queryBuilder
->insert('tx_zuladungsliste_archive_user')
->values($insert_array)
->execute();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
}
}
}
@@ -0,0 +1,69 @@
<?php
namespace HermannTelser\Zuladungsliste\Liste;
use ForceUTF8\Encoding;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _ListeController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'load_liste_admin':
ListeAdmin::load();
break;
case 'load_freischaltungen':
Freischaltungen::load();
break;
case 'freischaltung_aktivieren':
Freischaltungen::aktivieren();
break;
case 'freischaltung_ablehnen':
Freischaltungen::ablehnen();
break;
case "load_einreichungen":
EinreichungenAdmin::load();
break;
case "disable_einreichung":
EinreichungenAdmin::disable();
break;
case "update_einreichung":
EinreichungenAdmin::update();
break;
case 'liste_all':
Recalculate::all();
echo 1;
exit;
case 'liste_latest':
Recalculate::latest();
echo 1;
exit;
case 'cron_latest':
/*
https://kammerwest.betaid.info/app/administration?zlcontroller=liste_controller&xaction=liste_all
https://kammerwest.betaid.info/app/administration?zlcontroller=liste_controller&xaction=liste_latest
*/
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,76 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Zuladungsliste\Middleware;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Bootstrap\_BootstrapController;
use HermannTelser\Zuladungsliste\Download\_DownloadController;
use HermannTelser\Zuladungsliste\Liste\_ListeController;
use HermannTelser\Zuladungsliste\Zuteilungen\_ZuteilungenController;
use HermannTelser\Zuladungsliste\Zuladungsliste\_ZuladungslisteController;
use HermannTelser\Zuladungsliste\PunkteZuweisung\_PunkteZuweisungController;
use HermannTelser\Zuladungsliste\Einreichen\_EinreichenController;
use HermannTelser\Zuladungsliste\User\_UserController;
use HermannTelser\Zuladungsliste\Upload\_UploadController;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use TYPO3\CMS\Core\Http\JsonResponse;
define("WETTBEWERBE_PID", 38);
define("ARCHITEKTEN_PID", 41);
setlocale(LC_TIME, 'de_DE.UTF8');
class Ajax implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$response = $handler->handle($request);
if (!isset($request->getQueryParams()['zlcontroller'])) {
return $response;
}
$xaction = $request->getQueryParams()['xaction'];
// $user = $GLOBALS['TSFE']->fe_user->user;
$zlcontroller = $request->getQueryParams()['zlcontroller'];
switch ($zlcontroller) {
case 'bootstrap_controller':
new _BootstrapController($xaction);
break;
case 'liste_controller':
new _ListeController($xaction);
break;
case 'download_controller':
new _DownloadController($xaction);
break;
case 'zuteilungen_controller':
new _ZuteilungenController($xaction);
break;
case 'zuladungsliste_controller':
new _ZuladungslisteController($xaction);
break;
case 'punktezuweisung_controller':
new _PunkteZuweisungController($xaction);
break;
case 'einreichen_controller':
new _EinreichenController($xaction);
break;
case 'user_controller':
new _UserController($xaction);
break;
case 'upload_controller':
new _UploadController($xaction);
break;
default:
_Berechnung::$_return = ['error' => __FILE__.': call \''.$zlcontroller.'\' not implemented'];
break;
}
return new JsonResponse(_Berechnung::$_return);
}
}
@@ -0,0 +1,118 @@
<?php
namespace HermannTelser\Zuladungsliste\PunkteZuweisung;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use HermannTelser\Zuladungsliste\Utilities\Resources;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*¨
* All rights reserved
* ************************************************************* */
class Preise
{
/**
* @return void
*/
public static function laden()
{
$kriteriumid = GeneralUtility::_GP('kriteriumid');
$wettbewerbid = GeneralUtility::_GP('wettbewerbid');
$user = $GLOBALS['TSFE']->fe_user->user;
// $punktestatus = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("uid_punkte, tstamp_zuordnung, tstamp_aktivierung", "tx_zuladungsliste_wettbewerbe_architekten_mm",
// "uid_wettbewerbe=$wettbewerb_id AND uid_user=$user_id AND uid_punkte>0", "", "", "", "uid_punkte");
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->select('uid_punkte', 'tstamp_zuordnung', 'tstamp_aktivierung')
->from('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->gt('uid_punkte', 0),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->orderBy('uid_punkte');
$res = $queryBuilder->execute()->fetchAll();
$punktestatus = [];
$closed=false;
foreach ($res as $key => $value) {
$punktestatus[$value['uid_punkte']] = $value;
if ($value["tstamp_aktivierung"]>0) {
$closed=true;
}
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_punkte');
$queryBuilder
->select(
'tx_zuladungsliste_domain_model_punkte.uid',
'tx_zuladungsliste_domain_model_punkte.bezeichnung',
'b.sorting',
'b.punkte',
'b.uid_punkte'
)
->from('tx_zuladungsliste_domain_model_punkte')
->leftJoin(
'tx_zuladungsliste_domain_model_punkte',
'tx_zuladungsliste_punkte_kriterien_mm',
'b',
$queryBuilder->expr()->eq(
'b.uid_punkte',
$queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_punkte.uid')
)
)
->where(
$queryBuilder->expr()->eq('b.uid_kriterien', (int) $kriteriumid)
);
$_punkte_kriterien = $queryBuilder->execute()->fetchAll();
// echo $queryBuilder->getSQL();
$_return = [];
foreach ($_punkte_kriterien as $key => $value) {
$value["sorting"] = (int)$value["sorting"];
$value["status"] = 0;
$value["tstamp_zuordnung"] = "";
$value["tstamp_aktivierung"] = "";
$punkteId = $value["uid_punkte"];
if (isset($punktestatus[$punkteId])) {
$tmp = $punktestatus[$punkteId];
if ($tmp["tstamp_zuordnung"]>0) {
$value["tstamp_zuordnung"] = date("d. M. Y", $tmp["tstamp_zuordnung"]);
$value["status"] = 1;
}
if ($tmp["tstamp_aktivierung"]>0) {
$value["tstamp_aktivierung"] = date("d. M. Y", $tmp["tstamp_aktivierung"]);
}
}
if ($closed) {
$value["status"] = 2;
}
$_return[] = $value;
}
header('Content-Type: application/json');
echo json_encode($_return);
exit();
}
}
@@ -0,0 +1,170 @@
<?php
namespace HermannTelser\Zuladungsliste\PunkteZuweisung;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use HermannTelser\Zuladungsliste\Utilities\Resources;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*¨
* All rights reserved
* ************************************************************* */
class PunkteZuweisen
{
/**
* @return void
*/
public static function setzen()
{
$user = $GLOBALS['TSFE']->fe_user->user;
$debug = 1;
$kriteriumid = GeneralUtility::_GP('kriteriumid');
$wettbewerbid = GeneralUtility::_GP('wettbewerbid');
$arr = json_decode(GeneralUtility::_GP('data'), true);
$zuweisung_uid_punkte = (int) $arr["uid_punkte"];
if (!is_numeric($zuweisung_uid_punkte)) {
if ($debug) {
Message::note("zuweisung_uid_punkte fehlt");
}
exit;
}
if (!is_numeric($kriteriumid)) {
if ($debug) {
Message::note("kriteriumid fehlt");
}
exit;
}
if (!is_numeric($wettbewerbid)) {
if ($debug) {
Message::note("wettbewerbid fehlt");
}
exit;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->select('uid', 'uid_wettbewerbe', 'uid_user', 'uid_punkte', 'sorting', 'tstamp', 'crdate', 'tstamp_zuordnung', 'tstamp_aktivierung')
->from('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->orderBy('uid_punkte');
$active_punkte = $queryBuilder->execute()->fetchAll();
// echo $queryBuilder->getSQL();
//
// print_r($active_punkte);
//
// exit;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_punkte');
$queryBuilder
->select(
'tx_zuladungsliste_domain_model_punkte.uid',
'tx_zuladungsliste_domain_model_punkte.bezeichnung',
'b.sorting',
'b.punkte',
'b.uid_punkte'
)
->from('tx_zuladungsliste_domain_model_punkte')
->leftJoin(
'tx_zuladungsliste_domain_model_punkte',
'tx_zuladungsliste_punkte_kriterien_mm',
'b',
$queryBuilder->expr()->eq(
'b.uid_punkte',
$queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_punkte.uid')
)
)
->where(
$queryBuilder->expr()->eq('b.uid_kriterien', (int) $kriteriumid)
);
$kriterien = $queryBuilder->execute()->fetchAll();
//Kontrolle if uid_punkte existiert in den kriterien für diesen wettbewerb
$stopping = true;
foreach ($kriterien as $key => $value) {
if ($value["uid_punkte"] == $zuweisung_uid_punkte) {
$stopping = false;
}
}
if ($stopping) {
if ($debug) {
Message::note("uid_punkte existiert nicht in den kriterien für diesen wettbewerb");
}
exit;
}
if (count($active_punkte)) {
if ($active_punkte[0]["uid_punkte"]==$zuweisung_uid_punkte) {
// PUNKTE ZUWEISUNG VOM BENUTZER GELÖSCHT
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->delete('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->execute();
} else {
// UPDATE PUNKTE
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder->update('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->set('tstamp', (int) time())
->set('tstamp_zuordnung', (int) time())
->set('uid_punkte', (int) $zuweisung_uid_punkte)
->execute();
}
} else {
// PUNKTE NEU ZUGETEILT
$insertArray = array();
$insertArray['crdate'] = time();
$insertArray['pid'] = WETTBEWERBE_PID;
$insertArray['tstamp_zuordnung'] = time();
$insertArray['uid_punkte'] = $zuweisung_uid_punkte;
$insertArray['uid_wettbewerbe'] = $wettbewerbid;
$insertArray['uid_user'] = $user['uid'];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->insert('tx_zuladungsliste_wettbewerbe_architekten_mm')
->values($insertArray)
->execute();
}
// echo $queryBuilder->getSQL();
echo 1;
exit;
}
}
@@ -0,0 +1,94 @@
<?php
namespace HermannTelser\Zuladungsliste\PunkteZuweisung;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
// use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use HermannTelser\Zuladungsliste\Utilities\Resources;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*¨
* All rights reserved
* ************************************************************* */
class PunkteZuweisungen
{
/**
* @return void
*/
public static function laden()
{
$user = $GLOBALS['TSFE']->fe_user->user;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe');
// $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('uid', 'wettbewerb', 'bundesland', 'kriteriumid', 'entscheidungstermin', 'abgabetermin')
->from('tx_zuladungsliste_domain_model_wettbewerbe');
$_wettbewerbe = $queryBuilder->execute()->fetchAll();
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
// $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('uid_wettbewerbe', 'tstamp_zuordnung', 'tstamp_aktivierung')
->from('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where($queryBuilder->expr()->eq('uid_user', (int) $user['uid']));
$res = $queryBuilder->execute()->fetchAll();
$punktestatus = [];
foreach ($res as $key => $value) {
$punktestatus[$value['uid_wettbewerbe']] = $value;
}
$bundeslaender = Resources::bundeslaender();
$bundeslaender = array_flip($bundeslaender);
$_return = [];
foreach ($_wettbewerbe as $key => $value) {
$value["bundeslandid"] = $bundeslaender[$value["bundesland"]];
$year = date('Y', strtotime($value["entscheidungstermin"]));
if (strtotime($value["entscheidungstermin"]) > 0) {
$value["jahr"] = (int) $year;
} else {
$value["jahr"] = (int) date('Y', strtotime($value["abgabetermin"]));
}
unset($value["entscheidungstermin"]);
unset($value["abgabetermin"]);
$wettbewerbeId = $value["uid"];
$value["status"] = 0;
if (isset($punktestatus[$wettbewerbeId])) {
$tmp = $punktestatus[$wettbewerbeId];
if ($tmp["tstamp_zuordnung"]>0) {
$value["status"] = 1;
}
if ($tmp["tstamp_aktivierung"]>0) {
$value["status"] = 2;
}
}
$_return[] = $value;
}
header('Content-Type: application/json');
echo json_encode($_return);
exit();
}
}
@@ -0,0 +1,41 @@
<?php
namespace HermannTelser\Zuladungsliste\PunkteZuweisung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use ForceUTF8\Encoding;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _PunkteZuweisungController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'lade_punktezuweisungen':
PunkteZuweisungen::laden();
break;
case 'lade_preise':
Preise::laden();
break;
case 'setze_punktezuweisungen':
PunkteZuweisen::setzen();
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Zuladungsliste\Scheduler;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Scheduler\Task\AbstractTask;
use HermannTelser\Zuladungsliste\Liste\Recalculate;
class RecalculateAll extends AbstractTask
{
public function execute()
{
$businessLogic = GeneralUtility::makeInstance(Recalculate::class);
$businessLogic->all();
}
}
@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Zuladungsliste\Scheduler;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Scheduler\Task\AbstractTask;
use HermannTelser\Zuladungsliste\Liste\Recalculate;
class RecalculateLatest extends AbstractTask
{
public function execute()
{
$businessLogic = GeneralUtility::makeInstance(Recalculate::class);
$businessLogic->latest();
}
}
@@ -0,0 +1,118 @@
<?php
namespace HermannTelser\Zuladungsliste\Upload;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Core\Environment;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class Upload
{
/**
*
* @return bool
*/
public static function einreichen()
{
/*** UPLOAD FILE start ***/
$user = $GLOBALS['TSFE']->fe_user->user;
$user_id = $user['uid'];
$upload_dir = Environment::getPublicPath() . "/uploads/tx_zuladungsliste/$user_id";
if (!is_dir($upload_dir)) {
GeneralUtility::mkdir($upload_dir);
}
$insert_array = [];
$insert_array['dokument_orig_name'] = "";
$insert_array['dokument_size'] = "";
$insert_array['dokument_type'] = "";
if (isset($_FILES['uploadedfile'])) {
$dokument_size = $_FILES['uploadedfile']['size'];
$dokument_orig_name = $_FILES['uploadedfile']['name'];
$dokument_orig_type = $_FILES['uploadedfile']['type'];
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $upload_dir . '/' . $dokument_orig_name);
}
foreach ($_POST as $nm => $val) {
$postdata[$nm] = $val; // array for html
}
$data = ["Bitte Wählen","Burgenland","Kärnten","Niederösterreich","Oberösterreich","Salzburg","Steiermark","Tirol","Vorarlberg","Wien"];
$insert_array = [];
$insert_array['crdate'] = time();
$insert_array['tstamp'] = time();
$insert_array['cruser_id'] = $user_id;
$insert_array['wettbewerb'] = htmlspecialchars($postdata['formwettbewerb']);
$insert_array['beschreibung'] = htmlspecialchars($postdata["formbeschreibung"]);
$insert_array['entscheidungstermin'] = htmlspecialchars($postdata["formentscheidungstermin"]);
$insert_array['verfahrensort'] = htmlspecialchars($postdata["formverfahrensort"]);
$insert_array['bundesland'] = $data[$postdata["formbundesland"]];
$insert_array['dokument_orig_name'] = $dokument_orig_name;
$insert_array['dokument_size'] = round($dokument_size/1024, 2) . "k";
$insert_array['dokument_type'] = "pdf";
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
$queryBuilder
->insert('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->values($insert_array)
->execute();
echo 1;
exit;
}
/**
*
* @return bool
*/
public static function aktualisieren()
{
/*** UPLOAD FILE start ***/
$uid = GeneralUtility::_GP("uid");
if (!is_numeric($uid)) {
echo 1;
exit;
}
$user = $GLOBALS['TSFE']->fe_user->user;
$user_id = $user['uid'];
$upload_dir = Environment::getPublicPath() . "/uploads/tx_zuladungsliste/$user_id";
if (!is_dir($upload_dir)) {
GeneralUtility::mkdir($upload_dir);
}
if (isset($_FILES['uploadedfile'])) {
$dokument_size = $_FILES['uploadedfile']['size'];
$dokument_orig_name = $_FILES['uploadedfile']['name'];
$dokument_orig_type = $_FILES['uploadedfile']['type'];
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $upload_dir . '/' . $dokument_orig_name);
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen');
$queryBuilder
->update('tx_zuladungsliste_domain_model_wettbewerbe_einreichungen')
->where(
$queryBuilder->expr()->eq('uid', (int) $uid)
)
->set('tstamp', time())
->set('dokument_orig_name', (string) $dokument_orig_name)
->set('dokument_size', (string) round($dokument_size/1024, 2) . "k")
->execute();
echo 1;
exit;
}
}
@@ -0,0 +1,41 @@
<?php
namespace HermannTelser\Zuladungsliste\Upload;
use ForceUTF8\Encoding;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _UploadController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'dokument_einreichen':
Upload::einreichen();
break;
case 'dokument_aktualisieren':
Upload::aktualisieren();
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,199 @@
<?php
namespace HermannTelser\Zuladungsliste\User;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class UserKonto
{
public static function sichern(){
$user = $GLOBALS['TSFE']->fe_user->user;
$data = GeneralUtility::_GP('data');
$data = json_decode($data, true);
$update_array = [];
foreach ($data as $key => $value)
{
switch ($value["fieldname"]) {
case "address":
$update_array["address"] = $value["value"];
break;
case "zip":
$update_array["zip"] = $value["value"];
break;
case "city":
$update_array["city"] = $value["value"];
break;
case "title":
$update_array["title"] = $value["value"];
break;
case "first_name":
$update_array["first_name"] = $value["value"];
break;
case "last_name":
$update_array["last_name"] = $value["value"];
break;
case "telephone":
$update_array["telephone"] = $value["value"];
break;
}
}
$user = $GLOBALS['TSFE']->fe_user->user;
if(\count($update_array) == 7){
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
$queryBuilder->update('fe_users')
->where($queryBuilder->expr()->eq('uid', (int) $user['uid']))
->set('address', (string) $update_array['address'])
->set('zip', (string) $update_array['zip'])
->set('city', (string) $update_array['city'])
->set('title', (string) $update_array['title'])
->set('first_name', (string) $update_array['first_name'])
->set('last_name', (string) $update_array['last_name'])
->set('telephone', (string) $update_array['telephone'])
->execute();
}
// echo $queryBuilder->getSQL();
echo 1;
exit;
}
public static function laden()
{
$user = $GLOBALS['TSFE']->fe_user->user;
$return = [];
$tmp = [];
$tmp['id'] = 0;
$tmp['editable'] = 0;
$tmp['title'] = 1;
$tmp['beschreibung'] = "Architektur";
$tmp['value'] = 'Büro';
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 1;
$tmp['editable'] = 0;
$tmp['fieldname'] = 'company';
$tmp['beschreibung'] = "Büroname:";
$tmp['value'] = $user['company'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 2;
$tmp['editable'] = 0;
$tmp['fieldname'] = 'email';
$tmp['beschreibung'] = "E-Mail:";
$tmp['value'] = $user['email'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 3;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'address';
$tmp['beschreibung'] = "Büroanschrift:";
$tmp['value'] = $user['address'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 4;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'zip';
$tmp['beschreibung'] = "PLZ:";
$tmp['value'] = $user['zip'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 5;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'city';
$tmp['beschreibung'] = "Ort:";
$tmp['value'] = $user['city'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 6;
$tmp['editable'] = 0;
$tmp['title'] = 1;
$tmp['beschreibung'] = "Verantwortliche";
$tmp['value'] = 'Person';
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 7;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'title';
$tmp['beschreibung'] = "Titel:";
$tmp['value'] = $user['title'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 8;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'first_name';
$tmp['beschreibung'] = "Vorname:";
$tmp['value'] = $user['first_name'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 9;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'last_name';
$tmp['beschreibung'] = "Nachname:";
$tmp['value'] = $user['last_name'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 10;
$tmp['editable'] = 0;
$tmp['fieldname'] = 'vereidigung';
$tmp['beschreibung'] = "Tag der Vereidigung:";
$tmp['value'] = $user['vereidigung'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 11;
$tmp['editable'] = 0;
$tmp['fieldname'] = 'kammermitgliedsnummer';
$tmp['beschreibung'] = "Mitgliedsnummer:";
$tmp['value'] = $user['kammermitgliedsnummer'];
$return[] = $tmp;
$tmp = [];
$tmp['id'] = 12;
$tmp['editable'] = 1;
$tmp['fieldname'] = 'telephone';
$tmp['beschreibung'] = "Telefon:";
$tmp['value'] = $user['telephone'];
$return[] = $tmp;
$return = json_encode($return);
header('Content-Type: application/json');
echo $return;
exit();
}
}
@@ -0,0 +1,40 @@
<?php
namespace HermannTelser\Zuladungsliste\User;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _UserController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'lade_konto':
return UserKonto::laden();
break;
case 'sichern_konto':
return UserKonto::sichern();
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,40 @@
<?php
namespace HermannTelser\Zuladungsliste\Utilities;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\PathUtility;
/**
* Class FileUtility
*/
class FileUtility extends AbstractUtility
{
/**
* @param string $path Absolute path
* @throws \Exception
*/
public static function createFolderIfNotExists(string $path)
{
if (!is_dir($path) && !GeneralUtility::mkdir($path)) {
throw new \UnexpectedValueException(
'Folder ' . self::getRelativeFolderFromAbsolutePath($path) . ' does not exists and can not be created!',
1516373962125
);
}
}
/**
* Get relative path from absolute path, but don't touch if it's already a relative path
*
* @param string $path
* @return string
*/
public static function getRelativeFolderFromAbsolutePath(string $path): string
{
if (PathUtility::isAbsolutePath($path)) {
$path = PathUtility::getRelativePathTo($path);
}
return $path;
}
}
@@ -0,0 +1,36 @@
<?php
namespace HermannTelser\Zuladungsliste\Utilities;
class Message
{
public static function error($filename, $linenumber, $message)
{
die(PHP_EOL.PHP_EOL.
'-----------------------------------------------------------'.PHP_EOL.
'DOKUMENT: '.$filename.PHP_EOL.
'ZEILE: '.$linenumber.PHP_EOL.
'FEHLER: '.$message.PHP_EOL.
"\nVerarbeitung gestoppt !".PHP_EOL.
'-----------------------------------------------------------'.PHP_EOL.
PHP_EOL);
}
public static function debug($filename, $linenumber, $message)
{
echo PHP_EOL.
'-----------------------------------------------------------'.PHP_EOL.
'file: '.$filename.PHP_EOL.
'line: '.$linenumber.PHP_EOL.
'note: '.$message.PHP_EOL.
'-----------------------------------------------------------'.PHP_EOL.PHP_EOL;
}
public static function note($message)
{
echo PHP_EOL.
'-----------------------------------------------------------'.PHP_EOL.
$message.PHP_EOL.
'-----------------------------------------------------------'.PHP_EOL.PHP_EOL;
}
}
@@ -0,0 +1,72 @@
<?php
namespace HermannTelser\Zuladungsliste\Utilities;
class Resources
{
public static function displaymenu()
{
return [
['label' => 'Begründungen', 'id' => 'begruendung', 'ckecked' => false],
['label' => 'Titel', 'id' => 'titel', 'ckecked' => false],
['label' => 'Name', 'id' => 'name', 'ckecked' => true],
['label' => 'Geburtsdatum', 'id' => 'geburtsdatum', 'ckecked' => true],
['label' => 'Vereidigung', 'id' => 'vereidigung', 'ckecked' => true],
['label' => 'Ältest Projekt in Wertung', 'id' => 'aeltesterEntscheidungstermin', 'ckecked' => false],
['label' => 'Punkte', 'id' => 'punkte', 'ckecked' => true],
['label' => 'Sperre', 'id' => 'sperre', 'ckecked' => true],
['label' => 'Id', 'id' => 'id', 'ckecked' => false]
];
}
public static function sperren()
{
return [
['id' => '1', 'label' => 'Default', 'value' => '0', 'selected' => true],
['id' => '2', 'label' => '3 Monare', 'value' => '3'],
['id' => '3', 'label' => '4 Monare', 'value' => '4'],
['id' => '4', 'label' => '5 Monare', 'value' => '5'],
['id' => '5', 'label' => '6 Monare', 'value' => '6'],
['id' => '6', 'label' => '8 Monare', 'value' => '8'],
['id' => '7', 'label' => '10 Monare', 'value' => '10'],
['id' => '8', 'label' => '12 Monare', 'value' => '12'],
['id' => '9', 'label' => '18 Monare', 'value' => '18'],
['id' => '10', 'label' => '24 Monare', 'value' => '24'],
];
}
public static function bundeslaender()
{
return [
'Burgenland',
'Kärnten',
'Niederösterreich',
'Oberösterreich',
'Salzburg',
'Steiermark',
'Tirol',
'Vorarlberg',
'Wien'
];
}
public static function years()
{
$arr = range(2012, date('Y'));
rsort($arr);
return $arr;
}
public static function next()
{
return[
['id' => '1', 'label' => 'Nächste(r)'],
['id' => '2', 'label' => 'Nächsten Zwei'] ,
['id' => '3', 'label' => 'Nächsten Drei'] ,
['id' => '4', 'label' => 'Nächsten Vier'] ,
['id' => '5', 'label' => 'Nächsten Fünf'] ,
['id' => '6', 'label' => 'Nächsten Sechs']
];
}
}
@@ -0,0 +1,79 @@
<?php
namespace HermannTelser\Zuladungsliste\Utilities;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use DateTime;
use DateInterval;
/**
* Class FileUtility
*/
class zeit
{
/**
* Schnittmenge zweier Zeitspannen in Tage
*/
public static function diffZeitSpannen($von1, $bis1, $von2, $bis2, $debug = 0)
{
if ($debug) {
Message::note(
"Von 1 " . $von1->format("Y-m-d") . PHP_EOL .
"Bis 1 " . $bis1->format("Y-m-d") . PHP_EOL .
"Von 2 " . $von2->format("Y-m-d") . PHP_EOL .
"Bis 2 " . $bis2->format("Y-m-d")
);
}
if ($bis1 > $von2 && $von1 < $bis2) {
$von = Max($von1, $von2);
$bis = Min($bis1, $bis2);
$differenz = $von->diff($bis);
if ($debug) {
Message::note(
"Von " . $von->format("Y-m-d") . PHP_EOL .
"Bis " . $bis->format("Y-m-d")
);
Message::note(" TAGE: " . $differenz->days);
}
return $differenz->days;
} else {
return 0;
}
}
/**
* Schnittmenge zweier Zeitspannen in Tage
*/
public static function mehrTage($von, $bis, $gue, $debug = 0)
{
if ($debug) {
Message::note(
"Ruhe von " . $von->format("Y-m-d") . PHP_EOL .
"Ruhe bis " . $bis->format("Y-m-d") . PHP_EOL .
"Gültig bis " . $gue->format("Y-m-d")
);
}
if ($bis > $gue && $von < $gue) {
$differenz = $gue->diff($bis);
if ($debug) {
Message::note(
"Von " . $von->format("Y-m-d") . PHP_EOL .
"Bis " . $bis->format("Y-m-d")
);
Message::note(" TAGE: " . $differenz->days);
}
return $differenz->days;
} else {
return 0;
}
}
}
@@ -0,0 +1,44 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuladungsliste;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class PositionArchitekt
{
public static function laden()
{
//LOAD POSITION TREE Menu
// echo $GLOBALS['TYPO3_DB']->SELECTquery("uid, tstamp, punkte, rang, nominiert", "tx_zuladungsliste_archive_user", "user_id=$user_id AND hidden=0", "", "tstamp DESC");
// exit;
$uid = preg_replace("'\D'", "", $_GET['uid']);
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_archive_user');
$queryBuilder
->select('auswertung')
->from('tx_zuladungsliste_archive_user')
->where($queryBuilder->expr()->eq('uid', (int) $uid));
$tmp = $queryBuilder->execute()->fetchAll();
// echo $queryBuilder->getSQL();
header('Content-Type: application/json');
echo $tmp[0]["auswertung"];
exit();
}
}
@@ -0,0 +1,78 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuladungsliste;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
// class PositionArchitekt
// {
// public static function laden()
// {
// //LOAD POSITION TREE Menu
// // echo $GLOBALS['TYPO3_DB']->SELECTquery("uid, tstamp, punkte, rang, nominiert", "tx_zuladungsliste_archive_user", "user_id=$user_id AND hidden=0", "", "tstamp DESC");
// // exit;
// $uid = preg_replace("'\D'", "", $_GET['uid']);
// $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_archive_user');
// $queryBuilder
// ->select('auswertung')
// ->from('tx_zuladungsliste_archive_user')
// ->where($queryBuilder->expr()->eq('uid', (int) $uid));
// $tmp = $queryBuilder->execute()->fetchAll();
// // echo $queryBuilder->getSQL();
//
// // ----------
//
// $arr2 = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("uid id, wettbewerb, kriteriumid, bundesland, EXTRACT(YEAR FROM entscheidungstermin) entyear, EXTRACT(YEAR FROM abgabetermin) abgyear", "tx_zuladungsliste_domain_model_wettbewerbe", "deleted=0 AND hidden=0");
//
// $punktestatus = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("uid_wettbewerbe, tstamp_zuordnung, tstamp_aktivierung", "tx_zuladungsliste_wettbewerbe_architekten_mm", "uid_user=$user_id AND uid_punkte>0", "", "", "", "uid_wettbewerbe");
//
// $arr = array();
// foreach ($arr2 as $key => $value) {
// $value["status"] = 0;
//
// if ($value["entyear"]!=0) {
// $value["jahr"] = $value["entyear"];
// } else {
// $value["jahr"] = $value["abgyear"];
// }
// unset($value["entyear"]);
// unset($value["abgyear"]);
//
// $wettbewerbeId = $value["id"];
// if (isset($punktestatus[$wettbewerbeId])) {
// $tmp = $punktestatus[$wettbewerbeId];
//
// if ($tmp["tstamp_zuordnung"]>0) {
// $value["status"] = 1;
// }
//
// if ($tmp["tstamp_aktivierung"]>0) {
// $value["status"] = 2;
// }
// }
// $arr[] = $value;
// }
//
//
// header('Content-Type: application/json');
// echo $tmp[0]["auswertung"];
// exit();
// }
// }
@@ -0,0 +1,90 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuladungsliste;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class TreemenuPosition
{
public static function laden()
{
//LOAD POSITION TREE Menu
// echo $GLOBALS['TYPO3_DB']->SELECTquery("uid, tstamp, punkte, rang, nominiert", "tx_zuladungsliste_archive_user", "user_id=$user_id AND hidden=0", "", "tstamp DESC");
// exit;
$user = $GLOBALS['TSFE']->fe_user->user;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('fe_users');
// $queryBuilder
// ->getRestrictions()
// ->removeByType(StartTimeRestriction::class)
// ->removeByType(EndTimeRestriction::class);
// $queryBuilder->getRestrictions()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('uid', 'tstamp', 'punkte', 'rang', 'nominiert')
->from('tx_zuladungsliste_archive_user')
->where(
$queryBuilder->expr()->eq('user_id', (int) $user['uid']),
)->orderBy('tstamp', 'DESC');
$tmp = $queryBuilder->execute()->fetchAll();
// echo $queryBuilder->getSQL();
// debug($queryBuilder->getSQL());
// $tmp = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid, tstamp, punkte, rang, nominiert', 'tx_zuladungsliste_archive_user', "user_id=$user_id AND hidden=0", '', 'tstamp DESC');
$arr = [];
$i = 1;
$tmp2 = [];
$p_year = 0;
foreach ($tmp as $key => $value) {
//print_r($value);
$year = date('Y', $value['tstamp']);
if ($p_year != $year) {
$p_year = $year;
$arr[] = [
'title' => $year,
'id' => (int) $i,
'hasChildren' => (int) 1,
'type' => 'year',
'parent' => null,
];
$parentid = $i;
++$i;
}
$value["tstamp"] += 3600*12;
$arr[] = [
'title' => strftime("%e. %b. %G", $value["tstamp"]),
'hasChildren' => 0,
'parent' => $parentid,
'type' => 'month',
'punkte' => $value['punkte'],
'rang' => $value['rang'],
'nominiert' => $value['nominiert'],
'id' => $i,
'uid' => $value['uid'],
];
++$i;
}
header('Content-Type: application/json');
echo json_encode($arr);
exit();
}
}
@@ -0,0 +1,43 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuladungsliste;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _ZuladungslisteController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'lade_treemenu_position':
return TreemenuPosition::laden();
break;
case 'lade_position_architekt':
return PositionArchitekt::laden();
break;
case 'lade_punktezuweisung':
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,140 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuteilungen;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class Zuteilung
{
/**
* @return void
*/
public static function laden()
{
// load for prit zuteilungen
$zuteilung_uid = preg_replace("'\D'", "", $_GET['zuladungid']);
if (!is_numeric($zuteilung_uid)) {
exit;
}
// $arr = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("a.uid id, a.tstamp, b.wettbewerb, a.anzahl_architekten",
// "tx_zuladungsliste_zuteilungen a, tx_zuladungsliste_domain_model_wettbewerbe b",
// "a.hidden=0 AND a.uid_wettbewerbe=b.uid AND a.uid=$zuteilung_uid");
$limitSelection=date('Y-m-d', strtotime('-1 year'));
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_zuteilungen');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('tx_zuladungsliste_zuteilungen.uid', 'tx_zuladungsliste_zuteilungen.tstamp', 'b.wettbewerb', 'tx_zuladungsliste_zuteilungen.anzahl_architekten')
->from('tx_zuladungsliste_zuteilungen')
->join(
'tx_zuladungsliste_zuteilungen',
'tx_zuladungsliste_domain_model_wettbewerbe',
'b',
$queryBuilder->expr()->eq('b.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_zuteilungen.uid_wettbewerbe')),
)
->where($queryBuilder->expr()->eq('tx_zuladungsliste_zuteilungen.uid', $zuteilung_uid));
$statement = $queryBuilder->execute()->fetchAll();
// Message::note($queryBuilder->getSQL());
$$print = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Print Zuladungsliste</title></head><body>';
if (isset($_GET['print'])) {
$print .= '<image style="width:300px;" src="/typo3conf/ext/zuladungsliste/Resources/Public/Images/ztkammer-logo-adler.png"><br>';
} else {
$print .= '<div id="print_header"></div>';
}
$print .= '<br><br><h3 class="text-subheader center">'.$statement[0]["wettbewerb"].'<br> vom '.date("d. M. y", (int)$statement[0]["tstamp"]).'</h3>';
$limitSelection=date('Y-m-d', strtotime('-1 year'));
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_zuteilungen');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select(
'tx_zuladungsliste_zuteilungen_user.uid',
'tx_zuladungsliste_zuteilungen_user.tstamp',
'tx_zuladungsliste_zuteilungen_user.position',
'tx_zuladungsliste_zuteilungen_user.ersatz',
'b.company',
'b.name'
)
->from('tx_zuladungsliste_zuteilungen_user')
->join(
'tx_zuladungsliste_zuteilungen_user',
'fe_users',
'b',
$queryBuilder->expr()->eq('b.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_zuteilungen_user.user_id')),
)
->where($queryBuilder->expr()->eq('tx_zuladungsliste_zuteilungen_user.uid_zuteilungen_user', $zuteilung_uid))
->orderBy('ersatz')->addOrderBy('position');
// Message::note($queryBuilder->getSQL());
$statement = $queryBuilder->execute()->fetchAll();
$nomiert = '<h3 class="center">Nominierungen</h3>';
$nomiert .= '<table class="print_zladungen" width="95%" border="0" cellspacing="5" cellpadding="5">';
$ersatz = '<h3 class="center">Ersatz Nominierungen</h3>';
$ersatz .= '<table class="print_zladungen" width="95%" border="0" cellspacing="5" cellpadding="5">';
// if (count($statement)/2==$key) {
// $print .= '<tr><td>&nbsp;</td></tr>';
// }
foreach ($statement as $key => $value) {
$colorclass = $value["ersatz"] ? "ersatz" : "gewaehlt";
if ($value["ersatz"]) {
$ersatz .= '<tr>';
$ersatz .= '<td class="position '.$colorclass.'">'.$value["position"].'</td>';
$ersatz .= '<td class="company '.$colorclass.'">'.$value["company"].'</td>';
$ersatz .= '<td class="name '.$colorclass.'">'.$value["name"].'</td>';
$ersatz .= '<td class="'.$colorclass.'">Ersatz</td>';
$ersatz .= '</tr>';
} else {
$nomiert .= '<tr>';
$nomiert .= '<td class="position '.$colorclass.'">'.$value["position"].'</td>';
$nomiert .= '<td class="company '.$colorclass.'">'.$value["company"].'</td>';
$nomiert .= '<td class="name '.$colorclass.'">'.$value["name"].'</td>';
$nomiert .= '<td class="'.$colorclass.'">Ausgewählt</td>';
$nomiert .= '</tr>';
}
}
$nomiert .= '</table></div>';
$ersatz .= '</table></div>';
$print .= $nomiert;
$print .= $ersatz;
if (isset($_GET['print'])) {
$print .= '<script>this.focus(); this.print();</script>';
}
echo $print;
exit;
}
}
@@ -0,0 +1,122 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuteilungen;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class ZuteilungNeu
{
/**
* @return void
*/
public static function zuteilen()
{
$user = $GLOBALS['TSFE']->fe_user->user;
/********************************************************
* VARS
********************************************************/
$kammernid = GeneralUtility::_GP("kammernid");
if (!is_numeric($kammernid)) {
exit;
}
$wettbewerb_uid = GeneralUtility::_GP("wettbewerb_uid");
if (!is_numeric($wettbewerb_uid)) {
exit;
}
$next = GeneralUtility::_GP("next");
if (!is_numeric($next)) {
exit;
}
/********************************************************
* NEXT
********************************************************/
$arr = Zuteilungen::laden($returnAsArray = true);
$next_array = Zuteilungen::filterNaechsten($arr, $next);
/********************************************************
* punkte uid with 0 punkte
* Platzhalter für Zuteilung
* bei gewinn erden punkte später zugeteilt
********************************************************/
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_punkte_kriterien_mm');
$queryBuilder
->select(
'a.uid',
'a.bezeichnung',
)->from('tx_zuladungsliste_punkte_kriterien_mm')
->join(
'tx_zuladungsliste_punkte_kriterien_mm',
'tx_zuladungsliste_domain_model_punkte',
'a',
$queryBuilder->expr()->eq('a.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_punkte_kriterien_mm.uid_punkte'))
)
->where($queryBuilder->expr()->eq('tx_zuladungsliste_punkte_kriterien_mm.punkte', 0));
// Message::note($queryBuilder->getSQL());
$zuweisung_uid_punkte = $queryBuilder->execute()->fetchOne();
$insert_array = [];
$insert_array['tstamp'] = time();
$insert_array['crdate'] = time();
$insert_array['pid'] = WETTBEWERBE_PID;
$insert_array['uid_user'] = $user['uid']; // Ersteller
$insert_array['uid_wettbewerbe'] = $wettbewerb_uid;
$insert_array['anzahl_architekten'] = $next;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_zuteilungen');
$queryBuilder->insert('tx_zuladungsliste_zuteilungen')->values($insert_array)->execute();
$uid_zuteilungen_user = $queryBuilder->getConnection()->lastInsertId();
foreach ($next_array as $key => $value) {
if ($value["ersatz"]==0) {
$insert_array = array();
$insert_array['crdate'] = time();
$insert_array['pid'] = WETTBEWERBE_PID;
$insert_array['tstamp_zuordnung'] = time();
$insert_array['tstamp_aktivierung'] = time();
$insert_array['uid_punkte'] = $zuweisung_uid_punkte;
$insert_array['uid_wettbewerbe'] = $wettbewerb_uid;
$insert_array['uid_user'] = $value["user_id"]; // Architekten
$queryBuilder
->insert('tx_zuladungsliste_wettbewerbe_architekten_mm')
->values($insert_array)
->execute();
}
$insert_array = array();
$insert_array['tstamp'] = time();
$insert_array['crdate'] = time();
$insert_array['pid'] = WETTBEWERBE_PID;
$insert_array['uid_zuteilungen_user'] = $uid_zuteilungen_user;
$insert_array['user_id'] = $value["user_id"]; // Architekten
$insert_array['position'] = $key+1;
$insert_array['ersatz'] = $value["ersatz"];
$queryBuilder
->insert('tx_zuladungsliste_zuteilungen_user')
->values($insert_array)
->execute();
}
sleep(1);
echo $uid_zuteilungen_user;
exit;
}
}
@@ -0,0 +1,78 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuteilungen;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class ZuteilungWettbewerbe
{
/**
* @return void
*/
public static function laden()
{
$limitSelection=date('Y-m-d', strtotime('-1 year'));
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('tx_zuladungsliste_domain_model_wettbewerbe.uid', 'tx_zuladungsliste_domain_model_wettbewerbe.wettbewerb', 'tx_zuladungsliste_domain_model_wettbewerbe.sperre_deaktiviert')
->from('tx_zuladungsliste_domain_model_wettbewerbe')
->join(
'tx_zuladungsliste_domain_model_wettbewerbe',
'tx_zuladungsliste_domain_model_kriterien',
'b',
$queryBuilder->expr()->eq('b.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_wettbewerbe.kriteriumid'))
)
->where(
$queryBuilder->expr()->gt('tx_zuladungsliste_domain_model_wettbewerbe.entscheidungstermin', $queryBuilder->createNamedParameter($limitSelection)),
// $queryBuilder->expr()->eq('b.sperrung', (int) 1)
);
$statement = $queryBuilder->execute()->fetchAll();
// Message::note($queryBuilder->getSQL());
// select wettbewerb für zuteilung
// $limitSelection=date('Y-m-d', strtotime('-1 year'));
// // echo $GLOBALS['TYPO3_DB']->SELECTquery("a.uid id, a.wettbewerb name", "tx_zuladungsliste_domain_model_wettbewerbe a, tx_zuladungsliste_domain_model_kriterien b", "a.deleted=0 AND a.hidden=0 AND a.entscheidungstermin>'".$limitSelection."' AND a.kriteriumid=b.uid AND b.sperrung=1","","a.sperre_deaktiviert ASC, a.entscheidungstermin ASC");
// $tmp = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
// "a.uid id, a.wettbewerb name, a.sperre_deaktiviert",
// "tx_zuladungsliste_domain_model_wettbewerbe a, tx_zuladungsliste_domain_model_kriterien b",
// "a.deleted=0 AND a.hidden=0 AND a.entscheidungstermin>'".$limitSelection."' AND a.kriteriumid=b.uid AND b.sperrung=1",
// "",
// "a.uid DESC"
// );
// $arr=[];
// while (list($key, $value) = each($tmp)) {
// if ($value["sperre_deaktiviert"]==1) {
// $value["label"] = '<div style="width:500px; display:block;overflow:hidden;">' . $value["name"] . '</div> <span class="rot">(Sperre deaktiviert).</span>';
// } else {
// $value["label"] = '<b>' . $value["name"] . "</b>";
// }
// $arr[] = $value;
// }
header('Content-Type: application/json');
echo json_encode($statement);
exit();
}
}
@@ -0,0 +1,86 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuteilungen;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class Zuteilungen
{
/**
* @return void
*/
public static function laden($return_array = false)
{
$liste = new _Berechnung();
$liste::berechnen();
$_p = ['n2','n3','n4','n5','n6','e2','e3','e4','e5','e6'];
$_arr = [];
foreach (_Berechnung::$_data['liste'] as $key => $value) {
$door = false;
foreach ($_p as $k => $v) {
if (isset($value[$v]) and $value[$v] == 1) {
$value[$v] = (int) $value[$v];
$door = true;
}
}
if ($door) {
unset($value['auswertung']);
$_arr[] = $value;
}
}
if ($return_array) {
return $_arr;
}
header('Content-Type: application/json');
echo json_encode($_arr);
exit();
}
/**
* @return void
*/
public static function filterNaechsten($_arr, $dienaechsten)
{
$f1 = "n".$dienaechsten;
$f2 = "e".$dienaechsten;
// echo "\nf1: " . $f1;
// echo "\nf2: " . $f2;
// echo "\n";
$next = [];
foreach ($_arr as $key => $value) {
if ((isset($value[$f1]) and $value[$f1]==1) || (isset($value[$f2]) and $value[$f2]==1)) {
$tmp = [];
$tmp['user_id'] = $value['user_id'];
$tmp['pos'] = $value['pos'];
$tmp['rang'] = $value['rang'];
$tmp["ersatz"] = $value[$f2] ? $value[$f2] : 0;
$tmp[$f1] = $value[$f1];
$tmp[$f2] = $value[$f2];
$next[] = $tmp;
}
}
return $next;
}
}
@@ -0,0 +1,53 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuteilungen;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class ZuteilungenErteilt
{
/**
* @return void
*/
public static function laden()
{
$limitSelection=date('Y-m-d', strtotime('-1 year'));
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_zuteilungen');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$queryBuilder
->select('tx_zuladungsliste_zuteilungen.uid', 'tx_zuladungsliste_zuteilungen.tstamp', 'b.wettbewerb', 'tx_zuladungsliste_zuteilungen.anzahl_architekten')
->from('tx_zuladungsliste_zuteilungen')
->join(
'tx_zuladungsliste_zuteilungen',
'tx_zuladungsliste_domain_model_wettbewerbe',
'b',
$queryBuilder->expr()->eq('b.uid', $queryBuilder->quoteIdentifier('tx_zuladungsliste_zuteilungen.uid_wettbewerbe'))
);
$statement = $queryBuilder->execute()->fetchAll();
// Message::note($queryBuilder->getSQL());
header('Content-Type: application/json');
echo json_encode($statement);
exit();
}
}
@@ -0,0 +1,50 @@
<?php
namespace HermannTelser\Zuladungsliste\Zuteilungen;
use ForceUTF8\Encoding;
use HermannTelser\Zuladungsliste\Berechnung\_Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "NuhOdds Comparatore" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*
* All rights reserved
* ************************************************************* */
class _ZuteilungenController
{
public function __construct($xaction)
{
switch ($xaction) {
case 'lade_zuteilungen':
Zuteilungen::laden();
break;
case 'zuteilungen_wettbewerbe':
ZuteilungWettbewerbe::laden();
break;
case 'zuteilungen_erteilt':
ZuteilungenErteilt::laden();
break;
case 'zuteilung_laden':
Zuteilung::laden();
break;
case 'neu_zuteilen':
ZuteilungNeu::zuteilen();
break;
default:
Message::error(__FILE__, __LINE__, 'no xaction switch defined');
}
}
}
@@ -0,0 +1,25 @@
<?php
declare(strict_types=1);
return [
\HermannTelser\Zuladungsliste\Domain\Model\Architekten::class => [
'tableName' => 'fe_users',
'recordType' => 'Tx_Zuladungsliste_Architekten',
],
];
// config.tx_extbase{
// persistence{
// classes{
// HermannTelser\Zuladungsliste\Domain\Model\Architekten {
// mapping {
// tableName = fe_users
// recordType = Tx_Zuladungsliste_Architekten
// }
// }
//
// }
// }
// }
@@ -0,0 +1,37 @@
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Zuladungsliste Konfiguration</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.zuladungsliste_modus>
<TCEforms>
<label>Select Arbeitsmodus</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Administration</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Zuladungsliste</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
</items>
<default>0</default>
</config>
</TCEforms>
</settings.zuladungsliste_modus>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -0,0 +1,12 @@
<?php
return [
'frontend' => [
'HermannTelser/zuladungsliste/ajaxzuladungsliste' => [
'target' => \HermannTelser\Zuladungsliste\Middleware\Ajax::class,
'after' => [
'typo3/cms-frontend/prepare-tsfe-rendering'
]
],
],
];
@@ -0,0 +1,345 @@
<?php
if (!isset($GLOBALS['TCA']['fe_users']['ctrl']['type'])) {
if (file_exists($GLOBALS['TCA']['fe_users']['ctrl']['dynamicConfigFile'])) {
require_once($GLOBALS['TCA']['fe_users']['ctrl']['dynamicConfigFile']);
}
// no type field defined, so we define it here. This will only happen the first time the extension is installed!!
$GLOBALS['TCA']['fe_users']['ctrl']['type'] = 'tx_extbase_type';
$GLOBALS['TCA']['fe_users']['ctrl']['searchFields'] = 'last_name, company, teilhaber';
$tempColumnstx_zuladungsliste_fe_users = array();
$tempColumnstx_zuladungsliste_fe_users[$GLOBALS['TCA']['fe_users']['ctrl']['label']] = 'company';
$tempColumnstx_zuladungsliste_fe_users[$GLOBALS['TCA']['fe_users']['ctrl']['type']] = array(
'exclude' => 0,
'label' => 'LLL:EXT:zuladungsliste/Resources/Private/Language/locallang_db.xlf:tx_zuladungsliste.tx_extbase_type',
'config' => array(
'type' => 'select',
'renderType' => 'selectSingle',
'items' => array(
array('Architekten', 'Tx_Zuladungsliste_Architekten')
),
'default' => 'Tx_Zuladungsliste_Architekten',
'size' => 1,
'maxitems' => 1,
)
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users', $tempColumnstx_zuladungsliste_fe_users, 1);
}
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'fe_users',
$GLOBALS['TCA']['fe_users']['ctrl']['type'],
'',
'after:' . $GLOBALS['TCA']['fe_users']['ctrl']['label']
);
// Cukrowicz
$GLOBALS['TCA']['fe_users']['ctrl']['label_userFunc'] = 'HermannTelser\\Zuladungsliste\\Backend\\Labels->loadArchitekten';
$GLOBALS['TCA']['fe_users']['feInterface']['fe_admin_fieldList'] .= ',kammermitgliedsnummer, punktestand, istpartner';
$GLOBALS['TCA']['fe_users']['ctrl']['searchFields'] = 'username, email, last_name, company, teilhaber';
$tmp_zuladungsliste_columns = array(
'istpartner' => [
'exclude' => 1,
'label' => 'Status',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'readOnly' => true,
'items' => [
['Architekt Alleine', '0', 'EXT:zuladungsliste/Resources/Public/Icons/user.svg'],
['Partner:in einer Gemeinschaft', '1', 'EXT:zuladungsliste/Resources/Public/Icons/users.svg'],
['Bürogemeinschaft', '2', 'EXT:zuladungsliste/Resources/Public/Icons/handshake.svg']
],
],
],
'punktestand' => [
'exclude' => 1,
'label' => 'Punktestand',
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'config' => [
'type' => 'input',
'size' => 12,
'readOnly' => true,
],
],
'company' => [
'exclude' => 1,
'label' => 'Firma / Bürogemeinschaft / Partner:innen',
'config' => [
'type' => 'input',
'size' => 120,
'eval' => 'trim,required',
],
],
'first_name' => [
'exclude' => 1,
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'label' => 'Vorname',
'config' => [
'type' => 'input',
'size' => 120,
'eval' => 'trim',
],
],
'last_name' => [
'exclude' => 1,
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'label' => 'Nachname',
'config' => [
'type' => 'input',
'size' => 120,
'eval' => 'trim',
],
],
'title' => [
'exclude' => true,
'label' => 'Titel',
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'config' => [
'type' => 'input',
'size' => 20,
'eval' => 'trim',
'max' => 40,
],
],
'gender' => [
'exclude' => 0,
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'label' => 'Hr./Fr.:',
'config' => [
'type' => 'radio',
'items' => [
[
'None',
'0'
],
[
'Herr',
'1'
],
[
'Frau',
'2'
]
],
]
],
'kammermitgliedsnummer' => array(
'exclude' => 0,
'label' => 'Kammer Mitgliedsnummer',
'config' => array(
'type' => 'input',
'size' => 10,
'eval' => 'unique'
)
),
'inliste' => array(
'exclude' => 0,
'label' => 'In Zuladungsliste',
'config' => array(
'type' => 'check',
'default' => 0
)
),
'vereidigung' => array(
'exclude' => 0,
'label' => 'Vereidigung',
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'config' => array(
'dbType' => 'date',
'renderType' => 'inputDateTime',
'type' => 'input',
'size' => 10,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00'
),
),
'frauenfoerderpunkt' => array(
'exclude' => 0,
'label' => 'Frauenförderpunkt',
'displayCond' => 'FIELD:burogemeinschaft:REQ:false',
'config' => array(
'type' => 'check',
'default' => 0
)
),
'frauenfoerderpunkt_verfallen' => array(
'exclude' => 0,
'displayCond' => 'FIELD:frauenfoerderpunkt:REQ:true',
'readOnly' => true,
'label' => 'Status Frauenförderpunkt',
'description' => 'Wird ein gültiges Datum angezeigten so ist der Frauenförderpunkt ab diesem Zeitpunkt verfallen.',
'config' => array(
'type' => 'input',
'size' => 7,
'readOnly' => true
),
),
'solidaritaetserklaerung' => array(
'exclude' => 0,
'label' => 'Solidaritätserklärung',
'config' => array(
'type' => 'check',
'default' => 0
)
),
'kontoaufloesung_active' => array(
'exclude' => 0,
'label' => 'Kontoauflösung',
'description' => 'Aktiv nur mit Stichtag',
'config' => array(
'dbType' => 'date',
'renderType' => 'inputDateTime',
'type' => 'input',
'size' => 7,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00'
),
),
'kontoaufloesung_begruendung' => [
'label' => 'Begründung der Auslistung',
'description' => 'z.B.: Pension, Abmeldung, Zusammenlegung..',
'config' => array(
'type' => 'text',
'cols' => 30,
'rows' => 5,
'eval' => 'trim',
'max' => 255
),
],
'extrasperrung' => array(
'exclude' => 0,
'label' => 'Sperrungen',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_zuladungsliste_extrasperrung_user_mm',
'foreign_field' => 'uid_user',
'foreign_label' => 'uid_extrasperrung',
),
),
'wettbewerbe' => array(
'exclude' => 0,
'label' => 'Wettbewerbe',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_zuladungsliste_wettbewerbe_architekten_mm',
'foreign_field' => 'uid_user',
'foreign_label' => 'uid_wettbewerbe',
'appearance' => array(
'expandSingle' => 1,
'newRecordLinkAddTitle' => 0,
'levelLinksPosition' => 'both',
),
),
),
'kammernid' => array(
'exclude' => 0,
'label' => 'Kammer Zuordnung',
'config' => array(
'type' => 'select',
'size' => 1,
'renderType' => 'selectSingle',
'items' => array(
array(' --- Bitte wählen --- ', 0)
),
'foreign_table' => 'tx_zuladungsliste_domain_model_kammern',
)
),
'kontoaufloesung' => array(
'exclude' => 0,
'label' => 'Punkte Verteilung (optional)',
'description' => 'Gültige Punkte können anderen Architekte:innen übertragen werden. Bei Auflösung einer Bürogemeinschaft das ist nur mit den gemeinsam erlangten Punkte möglich. Die eingebrachten Punkte gehen zurück an den/die jeweilige/n Architekten:in.',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_zuladungsliste_konto_aufloesung_mm',
'foreign_field' => 'uid_geber',
'foreign_label' => 'uid_empfaenger',
),
),
'burogemeinschaft_start' => array(
'exclude' => 0,
'label' => 'Begin der Bürogemeinschaft',
'description' => 'Aktiv nur mit Stichtag, zum Beenden Tab "Konto Auflösung" verwenden.',
'config' => array(
'dbType' => 'date',
'renderType' => 'inputDateTime',
'type' => 'input',
'size' => 7,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00'
),
),
'burogemeinschaft' => array(
'exclude' => 0,
'label' => 'Partner:innen der Bürogemeinschaft',
'description' => 'Architekten:innen können gleichzeitig nur jeweils einer aktiven Bürogemeinschaft angehören. Bei Mitgliedschaft zu einer Bürogemeinschaft scheint die Einzelwertung nicht mehr auf.',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_zuladungsliste_buro_gemeinschaft_mm',
'foreign_field' => 'uid_gemeinschaft',
'foreign_label' => 'uid_user',
),
),
'teilhaber' => [
'exclude' => 1,
'displayCond' => 'FIELD:burogemeinschaft:REQ:true',
'label' => 'Teilhaber',
'config' => [
'type' => 'input',
'size' => 255,
'eval' => 'trim',
],
],
'ruhestellungen' => array(
'exclude' => 0,
'label' => 'Ruhestellungen',
'description' => 'Mitglieder können ihre Punkte ruhend stellen. Die Verfallsfrist der Punkte wird gehemmt, eine Zuladung erfolgt in dieser Zeit nicht.',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_zuladungsliste_domain_model_ruhestellung',
'foreign_table_where' => 'AND pid = 63',
'foreign_field' => 'uid_ruhestellung',
'foreign_label' => 'ruhestellung_start',
),
),
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users', $tmp_zuladungsliste_columns, true);
/* inherit and extend the show items from the parent class */
// debug($GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']);
// if (isset($GLOBALS['TCA']['fe_users']['types']['0']['showitem'])) {
// $GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] = $GLOBALS['TCA']['fe_users']['types']['0']['showitem'];
// } elseif (is_array($GLOBALS['TCA']['fe_users']['types'])) {
// // use first entry in types array
// $fe_users_type_definition = reset($GLOBALS['TCA']['fe_users']['types']);
// $GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] = $fe_users_type_definition['showitem'];
// } else {
// $GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] = '';
// }
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] = '--div--;Allgemein,username,password,usergroup';
// $GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Persönliche Daten,company,title,gender,first_name,last_name,address,zip,city,static_info_country,telephone,email,comments';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Teilnehmer,istpartner,company,teilhaber,gender,title,first_name,last_name';
// $GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Hinweise,description';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Zuladungsliste, kammernid, kammermitgliedsnummer, punktestand, vereidigung, geburtsdatum, frauenfoerderpunkt, frauenfoerderpunkt_verfallen';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Wettbewerbe,wettbewerbe';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Besondere Sperrungen,extrasperrung';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Ruhestellungen,ruhestellungen';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Bürogemeinschaft,burogemeinschaft_start,burogemeinschaft';
$GLOBALS['TCA']['fe_users']['types']['Tx_Zuladungsliste_Architekten']['showitem'] .= ',--div--;Konto Auflösung,kontoaufloesung_active,kontoaufloesung,kontoaufloesung_begruendung';
$GLOBALS['TCA']['fe_users']['columns'][$GLOBALS['TCA']['fe_users']['ctrl']['type']]['config']['items'][] = array('LLL:EXT:zuladungsliste/Resources/Private/Language/locallang_db.xlf:fe_users.tx_extbase_type.Tx_Zuladungsliste_Architekten', 'Tx_Zuladungsliste_Architekten');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr(
'Zuladungsliste',
'EXT:/Resources/Private/Language/locallang_csh_.xlf'
);
@@ -0,0 +1,5 @@
<?php
defined('TYPO3_MODE') || die();
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('zuladungsliste', 'Configuration/TypoScript', 'Zuladungsliste ZT Kammer');
Loaded 100 of 2443 files, more files were not shown because too many files have changed in this diff. Show more