first commit

This commit is contained in:
salam committed 2026-10-06 19:40:28 +02:00
commit e81864e683
2984 files changed
+267797

No files matched your search

@@ -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 "Zuladungsliste Steiermark" 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 "Zuladungsliste Steiermark" 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 "Zuladungsliste Steiermark" 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 "Zuladungsliste Steiermark" 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 "Zuladungsliste Steiermark" 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 "Zuladungsliste Steiermark" 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');
}
}
}