wip watten

This commit is contained in:
salam committed 2026-10-18 17:49:22 +02:00
1 parent 8ace316cbf
commit afc8a6e1f5
93 files changed
+14369 -1

No files matched your search

@@ -0,0 +1,71 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Watten\Controller;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Watten\Domain\Repository\SpieltageRepository;
use HermannTelser\Watten\Domain\Repository\ErgebnisseRepository;
use HermannTelser\Watten\Domain\Repository\RanglisteRepository;
use HermannTelser\Watten\Domain\Repository\StatistikRepository;
use HermannTelser\Watten\Domain\Repository\GstrichenRepository;
use HermannTelser\Watten\Domain\Repository\AthletenRepository;
class EidController implements MiddlewareInterface
{
/**
* @return void
*/
public function __construct()
{
date_default_timezone_set('Europe/Vienna');
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$response = $handler->handle($request);
if (!isset($request->getQueryParams()['application'])) {
return $response;
}
switch (GeneralUtility::_GP('application')) {
case 'loadspieltag':
$arr = SpieltageRepository::loadSpieltag();
break;
case 'loadrangliste':
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
$arr = RanglisteRepository::loadRangliste($activeTournament);
break;
case 'loadgstrichenliste':
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
$arr = GstrichenRepository::loadGstrichenliste($activeTournament);
break;
case 'loadstatistik':
$event_id = GeneralUtility::_GP('event_id') ?? ErgebnisseRepository::getLastEventId();
$arr = StatistikRepository::loadStatistik($event_id);
break;
case 'loadstatistiktangliste':
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
$arr = StatistikRepository::loadStatistikRangliste($activeTournament);
break;
case 'loadtournamentathleten':
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
$arr = AthletenRepository::loadTournamentAthleten($activeTournament);
break;
case 'loadpaarlaufer';
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
$teilnehmer_id = GeneralUtility::_GP('teilnehmer_id');
$arr = StatistikRepository::loadPaarlauf($activeTournament, $teilnehmer_id);
break;
}
header('Content-Type: application/json');
echo json_encode((array) $arr);
exit();
}
}
@@ -0,0 +1,71 @@
<?php
namespace HermannTelser\Watten\Controller;
use HermannTelser\Watten\Domain\Repository\ErgebnisseRepository;
use HermannTelser\Watten\Domain\Repository\AthletenRepository;
use HermannTelser\Watten\Domain\Repository\SpieltageRepository;
use HermannTelser\Watten\Domain\Repository\RanglisteRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class WattenController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
private $athletenRepository;
private $spieltageRepository;
private $ergebnisseRepository;
private $ranglisteRepository;
private $activeTournament;
private $event_id;
/**
* Inject the Athleten repository
*
* @param \HermannTelser\Watten\Domain\Repository\AthletenRepository $athletenRepository
* @param \HermannTelser\Watten\Domain\Repository\SpieltageRepository $spieltageRepository
* @param \HermannTelser\Watten\Domain\Repository\ErgebnisseRepository $ergebnisseRepository
* @param \HermannTelser\Watten\Domain\Repository\RanglisteRepository $ranglisteRepository
*/
public function __construct(AthletenRepository $athletenRepository, SpieltageRepository $spieltageRepository, ErgebnisseRepository $ergebnisseRepository, RanglisteRepository $ranglisteRepository)
{
$this->athletenRepository = $athletenRepository;
$this->ergebnisseRepository = $ergebnisseRepository;
$this->spieltageRepository = $spieltageRepository;
$this->ranglisteRepository = $ranglisteRepository;
$this->activeTournament = GeneralUtility::_GP('tournament') ?? $this->ergebnisseRepository->getActiveTournament();
$this->event_id = GeneralUtility::_GP('event_id') ?? $this->ergebnisseRepository->getLastEventId();
}
public function ergebnisseAction()
{
$tournaments = $this->ergebnisseRepository->findTournaments(false);
$this->view->assign('tournaments', $tournaments);
$this->view->assign('active_tournaments', $this->activeTournament);
$spieltage = $this->spieltageRepository->loadSpieltage();
$this->view->assign('spieltage', $spieltage);
$this->view->assign('active_event_id', $this->event_id);
}
public function ranglisteAction()
{
$tournaments = $this->ergebnisseRepository->findTournaments(true);
$this->view->assign('tournaments', $tournaments);
$this->view->assign('active', $this->activeTournament);
}
public function statistikAction()
{
$tournaments = $this->ergebnisseRepository->findTournaments(true);
$this->view->assign('tournaments', $tournaments);
$this->view->assign('active', $this->activeTournament);
$teilnehmer = $this->athletenRepository->loadTournamentAthleten($this->activeTournament);
$this->view->assign('teilnehmer', $teilnehmer);
}
}
@@ -0,0 +1,191 @@
<?php
namespace HermannTelser\Watten\Daten;
// use Doctrine\DBAL\DBALException;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class Berechnung
{
public static function run()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'athlet')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['athlet'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
$tournaments = $queryBuilder
->select('uid', 'tournament', 'active', 'king')
->from('tx_watten_tournaments')
->execute();
// TRUNCATE `tx_watten_tournaments_ergebnisse`
GeneralUtility::makeInstance(ConnectionPool::class)
->getConnectionForTable('tx_watten_tournaments_ergebnisse')
->truncate('tx_watten_tournaments_ergebnisse');
self::calcolate_data($user, ['uid' => 0, 'tournament' => 'Gesamt']);
foreach ($tournaments as $key => $row) {
self::calcolate_data($user, $row);
}
}
public static function calcolate_data($user, $row)
{
$tournamentid = $row['uid'];
$tournament = $row['tournament'];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
if ($tournamentid == 0) {
// Gesamt
$_tournament = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid')
->from('tx_watten_domain_model_ergebnisse')
->executeQuery()
->fetchAllAssociative();
} else {
$_tournament = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid')
->from('tx_watten_domain_model_ergebnisse')
->where(
$queryBuilder->expr()->eq('tournaments_id', (int) $tournamentid)
)
->executeQuery()
->fetchAllAssociative();
}
$arr = [];
foreach ($_tournament as $key => $value) {
$bum = $value['bumid'];
$s1 = $value['s1'];
$s2 = $value['s2'];
$v1 = $value['v1'];
$v2 = $value['v2'];
if (!isset($arr[$s1]['s'][$bum])) {
$arr[$s1]['s'][$bum] = 0;
}
if (!isset($arr[$s2]['s'][$bum])) {
$arr[$s2]['s'][$bum] = 0;
}
if (!isset($arr[$v1]['v'][$bum])) {
$arr[$v1]['v'][$bum] = 0;
}
if (!isset($arr[$v2]['v'][$bum])) {
$arr[$v2]['v'][$bum] = 0;
}
if (!isset($arr[$s1]['p'])) {
$arr[$s1]['p'] = 0;
}
if (!isset($arr[$s2]['p'])) {
$arr[$s2]['p'] = 0;
}
if (!isset($arr[$v1]['p'])) {
$arr[$v1]['p'] = 0;
}
if (!isset($arr[$v2]['p'])) {
$arr[$v2]['p'] = 0;
}
$arr[$s1]['s'][$bum]++;
$arr[$s2]['s'][$bum]++;
$arr[$v1]['v'][$bum]++;
$arr[$v2]['v'][$bum]++;
$arr[$s1]['p']++;
$arr[$s2]['p']++;
$arr[$v1]['p']++;
$arr[$v2]['p']++;
}
foreach ($arr as $userid => $value) {
$punkte = 0;
if (isset($value['s'][1])) {
$punkte = $value['s'][1] * 1.1;
}
if (isset($value['s'][2])) {
$punkte += $value['s'][2] * 2.1;
}
if (isset($value['s'][4])) {
$punkte += $value['s'][4] * 4.1;
}
if (isset($value['v'][1])) {
$punkte -= $value['v'][1];
}
if (isset($value['v'][2])) {
$punkte -= $value['v'][2] * 2;
}
if (isset($value['v'][4])) {
$punkte -= $value['v'][4] * 4;
}
$arr[$userid]['punkte'] = round($punkte, 2);
$arr[$userid]['spiele'] = $value['p'];
$arr[$userid]['userid'] = $userid;
$arr[$userid]['name'] = $user[$userid];
$arr[$userid]['userid'] = $userid;
}
$punkte = array_column($arr, 'punkte');
array_multisort($punkte, SORT_NUMERIC, SORT_DESC, $arr);
$winner = $arr[0];
$looser = $arr[array_key_last($arr)];
foreach ($arr as $key => $value) {
$arr[$key]['platz'] = $key + 1;
$arr[$key]['s1'] = isset($value['s'][1]) ? $value['s'][1] : '';
$arr[$key]['s1'] = isset($value['s'][1]) ? $value['s'][1] : '';
$arr[$key]['s2'] = isset($value['s'][2]) ? $value['s'][2] : '';
$arr[$key]['s4'] = isset($value['s'][4]) ? $value['s'][4] : '';
unset($arr[$key]['s']);
$arr[$key]['v1'] = isset($value['v'][1]) ? $value['v'][1] : '';
$arr[$key]['v2'] = isset($value['v'][2]) ? $value['v'][2] : '';
$arr[$key]['v4'] = isset($value['v'][4]) ? $value['v'][4] : '';
unset($arr[$key]['v']);
}
$insert_value = [];
$insert_value['crdate'] = time();
$insert_value['tournament_id'] = $tournamentid;
$insert_value['tournament'] = (string)$tournament;
if ($tournamentid == 0) {
$insert_value['type'] = 'gesamt';
} elseif ($row['king'] == 1) {
$insert_value['type'] = 'king';
} elseif ($row['active'] == 1) {
$insert_value['type'] = 'active';
}
$insert_value['koenig'] = (string)$winner['name'];
$insert_value['koenig_id'] = (int)$winner['userid'];
$insert_value['koenig_spiele'] = isset($winner['spiele']) ? $winner['spiele'] : 0;
$insert_value['koenig_punkte'] = isset($winner['punkte']) ? (float) $winner['punkte'] : 0;
$insert_value['koenig_siege'] = isset($winner['s'][1]) ? $winner['s'][1] : 0;
$insert_value['koenig_niederlagen'] = isset($winner['v'][1]) ? $winner['v'][1] : 0;
$insert_value['koenig_schneider'] = isset($winner['s'][2]) ? $winner['s'][2] : 0;
$insert_value['koenig_schneider_niederlage'] = isset($winner['v'][2]) ? $winner['v'][2] : 0;
$insert_value['koenig_retour_schneider'] = isset($winner['s'][4]) ? $winner['s'][4] : 0;
$insert_value['koenig_retour_schneider_niederlage'] = isset($winner['v'][4]) ? $winner['v'][4] : 0;
$insert_value['schneewatter'] = (string)$looser['name'];
$insert_value['schneewatter_id'] = (int)$looser['userid'];
$insert_value['schneewatter_spiele'] = isset($looser['spiele']) ? $looser['spiele'] : 0;
$insert_value['schneewatter_punkte'] = isset($looser['punkte']) ? (float) $looser['punkte'] : 0;
$insert_value['schneewatter_siege'] = isset($looser['s'][1]) ? $looser['s'][1] : 0;
$insert_value['schneewatter_niederlagen'] = isset($looser['v'][1]) ? $looser['v'][1] : 0;
$insert_value['schneewatter_schneider'] = isset($looser['s'][2]) ? $looser['s'][2] : 0;
$insert_value['schneewatter_schneider_niederlage'] = isset($looser['v'][2]) ? $looser['v'][2] : 0;
$insert_value['schneewatter_retour_schneider'] = isset($looser['s'][4]) ? $looser['s'][4] : 0;
$insert_value['schneewatter_retour_schneider_niederlage'] = isset($looser['v'][4]) ? $looser['v'][4] : 0;
$insert_value['result_json'] = json_encode($arr);
GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments_ergebnisse')
->insert('tx_watten_tournaments_ergebnisse', $insert_value);
}
}
@@ -0,0 +1,117 @@
<?php
namespace HermannTelser\Watten\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class Athleten extends AbstractEntity
{
/**
* @var int
*/
protected $gender = 0;
/**
* @var string
*/
protected $name = '';
/**
* @var string
*/
protected $image = '';
/**
* @var int
*/
protected $isactive = 0;
public function __construct(int $gender = 0, string $name = '', string $image = '', int $isactive = 0)
{
$this->setGender($gender);
$this->setName($name);
$this->setImage($image);
$this->setIsactive($isactive);
}
/**
*
* @param int $gender
*
* @return void
*/
public function setGender(int $gender): void
{
$this->gender = $gender;
}
/**
*
* @return int
*/
public function getGender(): int
{
return $this->gender;
}
/**
*
* @param string $name
*
* @return void
*/
public function setName(string $name): void
{
$this->name = $name;
}
/**
*
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
*
* @param string $image
*
* @return void
*/
public function setImage(string $image): void
{
$this->image = $image;
}
/**
*
* @return string
*/
public function getImage(): string
{
return $this->image;
}
/**
*
* @param int $isactive
*
* @return void
*/
public function setIsactive(int $isactive): void
{
$this->isactive = $isactive;
}
/**
*
* @return int
*/
public function getIsactive(): int
{
return $this->isactive;
}
}
@@ -0,0 +1,170 @@
<?php
namespace HermannTelser\Watten\Domain\Model;
use DateTime;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class Ergebnisse extends AbstractEntity
{
/**
* @var DateTime
*/
protected $datum = 0;
/**
* @var int
*/
protected $s1 = 0;
/**
* @var int
*/
protected $s2 = 0;
/**
* @var int
*/
protected $v1 = 0;
/**
* @var int
*/
protected $v2 = 0;
/**
* @var int
*/
protected $bumid = 0;
public function __construct(int $datum = 0, int $s1 = 0, int $s2 = 0, int $v1 = 0, int $v2 = 0, int $bumid = 0)
{
$this->setDatum($datum);
$this->setS1($s1);
$this->setS2($s2);
$this->setV1($v1);
$this->setV2($v2);
$this->setBumid($bumid);
}
/**
*
* @param DateTime $datum time stamp
*
* @return void
*/
public function setDatum(int $datum): void
{
$this->datum = $datum;
}
/**
*
* @return DateTime
*/
public function getDatum(): int
{
return $this->datum;
}
/**
*
* @param int $s1
*
* @return void
*/
public function setS1(int $s1): void
{
$this->s1 = $s1;
}
/**
*
* @return Int
*/
public function getS1(): int
{
return $this->s1;
}
/**
*
* @param int $s2
*
* @return void
*/
public function setS2(int $s2): void
{
$this->s2 = $s2;
}
/**
*
* @return Int
*/
public function getS2(): int
{
return $this->s2;
}
/**
*
* @param int $v1
*
* @return void
*/
public function setV1(int $v1): void
{
$this->v1 = $v1;
}
/**
*
* @return Int
*/
public function getV1(): int
{
return $this->v1;
}
/**
*
* @param int $v1
*
* @return void
*/
public function setV2(int $v2): void
{
$this->v2 = $v2;
}
/**
*
* @return Int
*/
public function getV2(): int
{
return $this->v2;
}
/**
*
* @param int $bumid
*
* @return void
*/
public function setBumid(int $bumid): void
{
$this->bumid = $bumid;
}
/**
*
* @return Int
*/
public function getBumid(): int
{
return $this->bumid;
}
}
@@ -0,0 +1,119 @@
<?php
namespace HermannTelser\Watten\Domain\Model;
use \DateTime;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class Events extends AbstractEntity
{
/**
* @var DateTime
*/
protected $datum = 0;
/**
* @var int
*/
protected $tournaments_id = 0;
/**
* @var string
*/
protected $event = 0;
/**
* @var int
*/
protected $isactive = 0;
public function __construct(int $datum = 0, int $tournaments_id = 0, string $event = '', int $isactive = 0)
{
$this->setDatum($datum);
$this->setTournamentId($tournaments_id);
$this->setEvent($event);
$this->setIsactive($isactive);
}
/**
*
* @param DateTime $datum
*
* @return void
*/
public function setDatum(int $datum): void
{
$this->datum = $datum;
}
/**
*
* @return DateTime
*/
public function getDatum(): int
{
return $this->datum;
}
/**
*
* @param int $tournaments_id
*
* @return void
*/
public function setTournamentId(int $tournaments_id): void
{
$this->s1 = $tournaments_id;
}
/**
*
* @return Int
*/
public function getTournamentId(): int
{
return $this->tournaments_id;
}
/**
*
* @param String $event
*
* @return void
*/
public function setEvent(string $event): void
{
$this->event = $event;
}
/**
*
* @return String
*/
public function getEvent(): string
{
return $this->event;
}
/**
*
* @param int $isactive
*
* @return void
*/
public function setIsactive(int $isactive): void
{
$this->s1 = $isactive;
}
/**
*
* @return Int
*/
public function getIsactive(): int
{
return $this->isactive;
}
}
@@ -0,0 +1,49 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class AthletenRepository extends Repository
{
public static function loadTournamentAthleten($activeTournament)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$athleten = [];
foreach ($res as $value) {
$athleten[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
$res = $queryBuilder
->select('s1', 's2', 'v1', 'v2')
->from('tx_watten_domain_model_ergebnisse')
->where(
$queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament)
)
->execute();
$active = [];
foreach ($res as $value) {
$active[] = $value['s1'];
$active[] = $value['s2'];
$active[] = $value['v1'];
$active[] = $value['v2'];
}
$active = array_unique($active);
$return = [];
$return[] = ['id' => 0, 'name' => 'Athleten'];
foreach ($athleten as $key => $name) {
if (in_array($key, $active)) {
$return[] = ['id' => $key, 'name' => $name];
}
}
return $return;
}
}
@@ -0,0 +1,120 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use stdClass;
class ErgebnisseRepository extends Repository
{
public static function loadStatistik()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
$res = $queryBuilder
->select('uid')
->from('tx_watten_tournaments')
->where(
$queryBuilder->expr()->eq('active', (int) 1)
)
->execute();
foreach ($res as $key => $value) {
return (int) $value['uid'];
}
return 0;
}
public static function getActiveTournament()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
$res = $queryBuilder
->select('uid')
->from('tx_watten_tournaments')
->where(
$queryBuilder->expr()->eq('active', (int) 1)
)
->execute();
foreach ($res as $key => $value) {
return (int) $value['uid'];
}
return 0;
}
public function getLastEventId()
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_events')->createQueryBuilder();
$res = $queryBuilder
->select('uid')
->from('tx_watten_domain_model_events')
->where(
$queryBuilder->expr()->eq('isactive', (int) 1)
)
->execute();
foreach ($res as $key => $value) {
return (int) $value['uid'];
}
return 0;
}
public function findTournaments($mitGesammt)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'tournament', 'active')
->from('tx_watten_tournaments')
->execute();
$tournaments = [];
foreach ($res as $key => $value) {
$tmp = new stdClass();
$tmp->id = (int) $value['uid'];
$tmp->name = $value['tournament'];
$tmp->active = $value['active'];
$tournaments[] = $tmp;
}
if ($mitGesammt == true) {
$tmp = new stdClass();
$tmp->id = -1;
$tmp->name = "Gesamt";
$tournaments[] = $tmp;
}
return $tournaments;
}
public function findByEventId(int $event_id)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$athleten = [];
foreach ($res as $key => $value) {
$athleten[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
$ergebnisse = $queryBuilder
->select('uid', 'datum', 's1', 's2', 'v1', 'v2', 'bumid')
->from('tx_watten_domain_model_ergebnisse')
->where(
$queryBuilder->expr()->eq('event_id', (int) $event_id)
)
->execute();
$return = [];
foreach ($ergebnisse as $key => $value) {
$tmp = [];
$tmp['uid'] = $value['uid'];
$tmp['s1'] = $athleten[$value['s1']];
$tmp['s2'] = $athleten[$value['s2']];
$tmp['v1'] = $athleten[$value['v1']];
$tmp['v2'] = $athleten[$value['v2']];
$tmp['bumid'] = $value['bumid'];
$return[] = $tmp;
}
return $return;
}
}
@@ -0,0 +1,111 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use stdClass;
class GstrichenRepository extends Repository
{
public static function loadGstrichenliste($activeTournament)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
if ($activeTournament < 0) {
$ergebnisse = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->execute();
} else {
$ergebnisse = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->where($queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament))
->execute();
}
$arr = [];
foreach ($ergebnisse as $key => $value) {
$s1 = $value['s1'];
$s2 = $value['s2'];
$v1 = $value['v1'];
$v2 = $value['v2'];
$gs = $value['gstrichen'];
if (!isset($arr[$s1]['s'])) {
$arr[$s1]['s'] = 0;
$arr[$s1]['v'] = 0;
}
if (!isset($arr[$s2]['s'])) {
$arr[$s2]['s'] = 0;
$arr[$s2]['v'] = 0;
}
if (!isset($arr[$v1]['v'])) {
$arr[$v1]['v'] = 0;
$arr[$v1]['s'] = 0;
}
if (!isset($arrv[$v2]['v'])) {
$arr[$v2]['v'] = 0;
$arr[$v2]['s'] = 0;
}
if ($gs) {
$arr[$s1]['s']++;
$arr[$s2]['s']++;
$arr[$v1]['v']++;
$arr[$v2]['v']++;
}
}
$sieger = [];
$verlierer = [];
$i = 1;
foreach ($arr as $userid => $value) {
$sieger[$i]['sieger'] = $user[$userid];
$sieger[$i]['gewonnen'] = $value['s'];
$verlierer[$i]['verlierer'] = $user[$userid];
$verlierer[$i]['verloren'] = $value['v'];
$i++;
}
$gewonnen = array_column($sieger, 'gewonnen');
array_multisort($gewonnen, SORT_NUMERIC, SORT_DESC, $sieger);
$verloren = array_column($verlierer, 'verloren');
array_multisort($verloren, SORT_NUMERIC, SORT_DESC, $verlierer);
$return = [];
$s = 0;
$v = 0;
foreach ($gewonnen as $key => $value) {
$return[$key] = array_merge($sieger[$key], $verlierer[$key]);
$return[$key]['platz'] = $key + 1;
if ($return[$key]['gewonnen'] == 0) {
$return[$key]['sieger'] = '';
$return[$key]['gewonnen'] = '';
$s = 1;
}
if ($return[$key]['verloren'] == 0) {
$return[$key]['verloren'] = '';
$return[$key]['verlierer'] = '';
$v = 1;
}
if ($s and $v) {
unset($return[$key]);
}
}
return $return;
}
}
@@ -0,0 +1,149 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use stdClass;
class RanglisteRepository extends Repository
{
public static function loadRangliste($activeTournament)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
if ($activeTournament < 0) {
$ergebnisse = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->execute();
} else {
$ergebnisse = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->where($queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament))
->execute();
}
// debug($queryBuilder->getSQL());
$arr = [];
foreach ($ergebnisse as $key => $value) {
$bum = $value['bumid'];
$s1 = $value['s1'];
$s2 = $value['s2'];
$v1 = $value['v1'];
$v2 = $value['v2'];
$ge = $value['gstrichen'];
if (!isset($arr[$s1]['s'][$bum])) {
$arr[$s1]['s'][$bum] = 0;
}
if (!isset($arr[$s2]['s'][$bum])) {
$arr[$s2]['s'][$bum] = 0;
}
if (!isset($arr[$v1]['v'][$bum])) {
$arr[$v1]['v'][$bum] = 0;
}
if (!isset($arr[$v2]['v'][$bum])) {
$arr[$v2]['v'][$bum] = 0;
}
if (!isset($arr[$s1]['p'])) {
$arr[$s1]['p'] = 0;
}
if (!isset($arr[$s2]['p'])) {
$arr[$s2]['p'] = 0;
}
if (!isset($arr[$v1]['p'])) {
$arr[$v1]['p'] = 0;
}
if (!isset($arr[$v2]['p'])) {
$arr[$v2]['p'] = 0;
}
if (!isset($arr[$s1]['sg'])) {
$arr[$s1]['sg'] = 0;
}
if (!isset($arr[$s2]['sg'])) {
$arr[$s2]['sg'] = 0;
}
if (!isset($arr[$v1]['vg'])) {
$arr[$v1]['vg'] = 0;
}
if (!isset($arr[$v2]['vg'])) {
$arr[$v2]['vg'] = 0;
}
$arr[$s1]['s'][$bum]++;
$arr[$s2]['s'][$bum]++;
$arr[$v1]['v'][$bum]++;
$arr[$v2]['v'][$bum]++;
$arr[$s1]['p']++;
$arr[$s2]['p']++;
$arr[$v1]['p']++;
$arr[$v2]['p']++;
if ($ge) {
$arr[$s1]['sg']++;
$arr[$s2]['sg']++;
$arr[$v1]['vg']++;
$arr[$v2]['vg']++;
}
}
foreach ($arr as $userid => $value) {
$punkte = 0;
if (isset($value['s'][1])) {
$punkte += $value['s'][1] * 1.1;
}
if (isset($value['s'][2])) {
$punkte += $value['s'][2] * 2.1;
}
if (isset($value['s'][4])) {
$punkte += $value['s'][4] * 4.1;
}
if (isset($value['v'][1])) {
$punkte -= $value['v'][1];
}
if (isset($value['v'][2])) {
$punkte -= $value['v'][2] * 2;
}
if (isset($value['v'][4])) {
$punkte -= $value['v'][4] * 4;
}
$arr[$userid]['punkte'] = round($punkte, 2);
$arr[$userid]['spiele'] = $value['p'];
$arr[$userid]['name'] = $user[$userid];
unset($arr[$userid]['p']);
}
$punkte = array_column($arr, 'punkte');
array_multisort($punkte, SORT_NUMERIC, SORT_DESC, $arr);
// $winner = $arr[0];
// $looser = $arr[array_key_last($arr)];
foreach ($arr as $key => $value) {
$arr[$key]['platz'] = $key + 1;
$arr[$key]['s1'] = isset($value['s'][1]) ?? '';
$arr[$key]['s1'] = isset($value['s'][1]) ? $value['s'][1] : '';
$arr[$key]['s2'] = isset($value['s'][2]) ? $value['s'][2] : '';
$arr[$key]['s4'] = isset($value['s'][4]) ? $value['s'][4] : '';
$arr[$key]['sg'] = isset($value['sg']) && $value['sg'] != 0 ? $value['sg'] : '';
unset($arr[$key]['s']);
$arr[$key]['v1'] = isset($value['v'][1]) ? $value['v'][1] : '';
$arr[$key]['v2'] = isset($value['v'][2]) ? $value['v'][2] : '';
$arr[$key]['v4'] = isset($value['v'][4]) ? $value['v'][4] : '';
$arr[$key]['vg'] = isset($value['vg']) && $value['vg'] != 0 ? $value['vg'] : '';
unset($arr[$key]['v']);
}
return $arr;
}
}
@@ -0,0 +1,146 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use HermannTelser\Watten\Domain\Repository\ErgebnisseRepository;
use stdClass;
class SpieltageRepository extends Repository
{
public static function loadSpieltage()
{
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_events')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'datum', 'event', 'isactive')
->from('tx_watten_domain_model_events')
->where(
$queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament)
)
->addOrderBy('datum', 'DESC')
->execute();
$spieltage = [];
$tmp = new stdClass();
$tmp->id = 0;
$tmp->name = 'Spieltag';
$spieltage[] = $tmp;
foreach ($res as $key => $value) {
$tmp = new stdClass();
$tmp->id = (int) $value['uid'];
// $tmp->selected = (int) $value['isactive'];
$tmp->name = date("d. M. Y", $value['datum']);
if ($value['event']) {
$tmp->name .= ' - ' . $value['event'];
}
$spieltage[] = $tmp;
}
return $spieltage;
}
public static function loadSpieltag()
{
$event_id = (int) GeneralUtility::_GP('event_id');
if (!$event_id) {
exit;
}
$return = [];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_events')->createQueryBuilder();
$res = $queryBuilder
->select('story')
->from('tx_watten_domain_model_events')
->where(
$queryBuilder->expr()->eq('uid', (int) $event_id)
)
->execute();
foreach ($res as $key => $value) {
$return['story'] = $value['story'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$athleten = [];
foreach ($res as $key => $value) {
$athleten[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
$ergebnisse = $queryBuilder
->select('uid', 'datum', 's1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->where(
$queryBuilder->expr()->eq('event_id', (int) $event_id)
)
->execute();
$data = [];
foreach ($ergebnisse as $key => $value) {
$tmp = [];
$tmp['uid'] = (int) $value['uid'];
$tmp['s1'] = $athleten[$value['s1']];
$tmp['s2'] = $athleten[$value['s2']];
$tmp['v1'] = $athleten[$value['v1']];
$tmp['v2'] = $athleten[$value['v2']];
$tmp['gs'] = $value['gstrichen'] ? '||' : '';
$tmp['bumid'] = (int) $value['bumid'];
$tmp['datum'] = (int) $value['datum'];
$data[] = $tmp;
}
$return['data'] = $data;
$return['punkte'] = self::punkte($data);
return $return;
}
private static function punkte(array $data)
{
$punkte = [];
foreach ($data as $value) {
$s1 = $value['s1'];
$s2 = $value['s2'];
$v1 = $value['v1'];
$v2 = $value['v2'];
if (!isset($punkte[$s1])) {
$punkte[$s1] = $value['bumid'] + 0.1;
} else {
$punkte[$s1] = $punkte[$s1] + $value['bumid'] + 0.1;
}
if (!isset($punkte[$s2])) {
$punkte[$s2] = $value['bumid'] + 0.1;
} else {
$punkte[$s2] = $punkte[$s2] + $value['bumid'] + 0.1;
}
if (!isset($punkte[$v1])) {
$punkte[$v1] = - ($value['bumid']);
} else {
$punkte[$v1] = $punkte[$v1] - $value['bumid'];
}
if (!isset($punkte[$v2])) {
$punkte[$v2] = - ($value['bumid']);
} else {
$punkte[$v2] = $punkte[$v2] - $value['bumid'];
}
}
$return = [];
arsort($punkte);
$i = 1;
foreach ($punkte as $name => $value) {
$tmp = [];
$tmp['rang'] = $i;
$tmp['name'] = $name;
$tmp['punkte'] = round($value, 1);
$return[] = $tmp;
$i++;
}
return $return;
}
}
@@ -0,0 +1,395 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use stdClass;
class StatistikRepository extends Repository
{
public static function loadStatistikRangliste($activeTournament)
{
/*
[punkte] => 5.9
[spiele] => 13
[name] => Gerhard
[platz] => 1
[s1] => 9
[s2] =>
[s4] =>
[v1] => 4
[v2] =>
[v4] =>
*/
$arr = RanglisteRepository::loadRangliste($activeTournament);
$return = [];
$tmp = [];
foreach ($arr as $key => $value) {
$return['labels'][] = $value['name'] . " " . $value['platz'] . ". Platz";
$tmp['s1']['label'] = "Gewonnen";
$tmp['s1']['data'][] = $value['s1'] ? $value['s1'] : 0;
$tmp['s2']['label'] = "Schneider";
$tmp['s2']['data'][] = $value['s2'] ? $value['s2'] : 0;
$tmp['s4']['label'] = "Retour Schneider";
$tmp['s4']['data'][] = $value['s4'] ? $value['s4'] : 0;
$tmp['v1']['label'] = "Verloren";
$tmp['v1']['data'][] = $value['v1'] ? $value['v1'] * -1 : 0;
$tmp['v2']['label'] = "Schneider Verloren";
$tmp['v2']['data'][] = $value['v2'] ? $value['v2'] * -1 : 0;
$tmp['v4']['label'] = "Retour Schneider Verloren";
$tmp['v4']['data'][] = $value['v4'] ? $value['v4'] * -1 : 0;
}
$datasets = [];
foreach ($tmp as $key => $value) {
if (array_sum($value['data']) != false) {
$value['borderWidth'] = 1;
$datasets[] = $value;
}
}
$return['datasets'] = $datasets;
// print_r($return);
return $return;
}
public static function loadStatistik($event_id)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
$ergebnisse = $queryBuilder
->select('uid', 's1', 's2', 'v1', 'v2', 'bumid')
->from('tx_watten_domain_model_ergebnisse')
->where($queryBuilder->expr()->eq('event_id', (int) $event_id))
->execute();
$usr = [];
$data = [];
foreach ($ergebnisse as $value) {
$usr[] = $value['s1'];
$usr[] = $value['s2'];
$usr[] = $value['v1'];
$usr[] = $value['v2'];
$data[] = $value;
}
$usr = array_unique($usr);
$arr = [];
$datasets = [];
foreach ($data as $value) {
$arr['labels'][] = $value['uid'];
$bum = $value['bumid'];
$s1 = $value['s1'];
$s2 = $value['s2'];
$v1 = $value['v1'];
$v2 = $value['v2'];
foreach ($usr as $key => $uid) {
if (isset($datasets[$uid])) {
$punkte = 0;
if ($s1 == $uid or $s2 == $uid) {
switch ($bum) {
case 1:
$punkte = 1.1;
break;
case 2:
$punkte = 2.1;
break;
case 4:
$punkte = 4.1;
break;
}
} elseif ($v1 == $uid or $v2 == $uid) {
switch ($bum) {
case 1:
$punkte = -1;
break;
case 2:
$punkte = -2;
break;
case 4:
$punkte = -4;
break;
}
}
$datasets[$uid]['stand'] = round($datasets[$uid]['stand'] + $punkte, 2);
$datasets[$uid]['data'][] = $datasets[$uid]['stand'];
} else {
$datasets[$uid]['label'] = $user[$uid];
$punkte = 0;
if ($s1 == $uid or $s2 == $uid) {
switch ($bum) {
case 1:
$punkte = 1.1;
break;
case 2:
$punkte = 2.1;
break;
case 4:
$punkte = 4.1;
break;
}
} elseif ($v1 == $uid or $v2 == $uid) {
switch ($bum) {
case 1:
$punkte = -1;
break;
case 2:
$punkte = -2;
break;
case 4:
$punkte = -4;
break;
}
}
$datasets[$uid]['stand'] = $punkte;
$datasets[$uid]['data'][] = $punkte;
}
}
}
foreach ($datasets as $value) {
unset($value['stand']);
$value['pointRadius'] = 2;
$value['tension'] = 0;
$value['borderWidth'] = 0.5;
$arr['datasets'][] = $value;
}
return $arr;
}
public static function loadPaarlauf($activeTournament, $athlet_1)
{
$athlet_1 = (int) $athlet_1;
$athlet_2 = 3;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
if ($activeTournament < 0) {
$res = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->execute();
} else {
$res = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->where($queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament))
->execute();
}
$_names = [
'spiele' => 0,
'siege' => 0,
'verloren' => 0,
'sn' => 0,
'ss' => 0,
'srs' => 0,
'sg' => 0,
'vn' => 0,
'vs' => 0,
'vrs' => 0,
'vg' => 0,
];
$_data = [];
foreach ($res as $row) {
if ($row['s1'] == $athlet_1 or $row['s2'] == $athlet_1) {
if ($row['s1'] == $athlet_1)
$partner = (int) $row['s2'];
else
$partner = (int) $row['s1'];
$gegner1 = (int) $row['v1'];
$gegner2 = (int) $row['v2'];
$bummalen = (int) $row['bumid'];
$gstrichen = (int) $row['gstrichen'];
if (!isset($_data[$partner])) {
$_data[$partner] = $_names;
}
$_data[$partner]['spiele']++;
$_data[$partner]['siege']++;
if ($bummalen == 1)
$_data[$partner]['sn']++;
else if ($bummalen == 2)
$_data[$partner]['ss']++;
else if ($bummalen == 4)
$_data[$partner]['srs']++;
if ($gstrichen == 1)
$_data[$partner]['sg']++;
if ($gegner1 < $gegner2) {
$team = "$gegner1:$gegner2";
} else {
$team = "$gegner2:$gegner1";
}
if (!isset($_data[$partner]['gegner'][$team])) {
$_data[$partner]['gegner'][$team] = $_names;
}
$_data[$partner]['gegner'][$team]['spiele']++;
$_data[$partner]['gegner'][$team]['siege']++;
if ($bummalen == 1)
$_data[$partner]['gegner'][$team]['sn']++;
else if ($bummalen == 2)
$_data[$partner]['gegner'][$team]['ss']++;
else if ($bummalen == 4)
$_data[$partner]['gegner'][$team]['srs']++;
if ($gstrichen == 1)
$_data[$partner]['gegner'][$team]['sg']++;
} else if ($row['v1'] == $athlet_1 or $row['v2'] == $athlet_1) {
if ($row['v1'] == $athlet_1)
$partner = $row['v2'];
else
$partner = (int) $row['v1'];
$gegner1 = (int) $row['s1'];
$gegner2 = (int) $row['s2'];
$bummalen = (int) $row['bumid'];
$gstrichen = (int) $row['gstrichen'];
if (!isset($_data[$partner])) {
$_data[$partner] = $_names;
}
$_data[$partner]['spiele']++;
$_data[$partner]['verloren']++;
if ($bummalen == 1)
$_data[$partner]['vn']++;
if ($bummalen == 2)
$_data[$partner]['vs']++;
if ($bummalen == 4)
$_data[$partner]['vrs']++;
if ($gstrichen == 1)
$_data[$partner]['vg']++;
if ($gegner1 < $gegner2) {
$team = "$gegner1:$gegner2";
} else {
$team = "$gegner2:$gegner1";
}
if (!isset($_data[$partner]['gegner'][$team])) {
$_data[$partner]['gegner'][$team] = $_names;
}
$_data[$partner]['gegner'][$team]['spiele']++;
$_data[$partner]['gegner'][$team]['verloren']++;
if ($bummalen == 1)
$_data[$partner]['gegner'][$team]['vn']++;
if ($bummalen == 2)
$_data[$partner]['gegner'][$team]['vs']++;
if ($bummalen == 4)
$_data[$partner]['gegner'][$team]['vrs']++;
if ($gstrichen == 1)
$_data[$partner]['gegner'][$team]['vg']++;
}
}
$return = [];
if(isset($user[$athlet_1])){
$athlet = $user[$athlet_1];
foreach ($_data as $partnerid => $row) {
$tmp = [];
$partner = $user[$partnerid];
$tmp['head'] = 1;
$tmp['teams'] = $athlet . ' & ' . $partner . ' ';
$tmp['spiele'] = $row['spiele'];
$tmp['siege'] = $row['siege'];
$tmp['verloren'] = $row['verloren'];
$tmp['sn'] = $row['sn'];
$tmp['ss'] = $row['ss'];
$tmp['srs'] = $row['srs'];
$tmp['sg'] = $row['sg'];
$tmp['vn'] = $row['vn'];
$tmp['vs'] = $row['vs'];
$tmp['vrs'] = $row['vrs'];
$tmp['vg'] = $row['vg'];
$return[] = $tmp;
foreach ($row['gegner'] as $team => $value) {
$tmp = [];
$tmp['head'] = 0;
$tmp['teams'] = $athlet . ' & ' . $partner . ' <img src="/typo3conf/ext/watten/Resources/Public/Icons/Degen.svg" class="iconsizesm"> ' . self::getnames($user, $team);
$tmp['spiele'] = $value['spiele'];
$tmp['siege'] = $value['siege'];
$tmp['verloren'] = $value['verloren'];
$tmp['sn'] = $value['sn'];
$tmp['ss'] = $value['ss'];
$tmp['srs'] = $value['srs'];
$tmp['sg'] = $value['sg'];
$tmp['vn'] = $value['vn'];
$tmp['vs'] = $value['vs'];
$tmp['vrs'] = $value['vrs'];
$tmp['vg'] = $value['vg'];
$return[] = $tmp;
}
}
}
foreach ($return as $key1 => $row) {
foreach ($row as $key2 => $value) {
if ($key2 != 'teams' and $value == 0)
$return[$key1][$key2] = '';
}
}
return $return;
}
public function getnames(&$user, $team)
{
$_gegner = explode(':', $team);
$g1 = $_gegner[0];
$g2 = $_gegner[1];
return $user[$g1] . " & " . $user[$g2];
}
}
// Array
// (
// [26] => Array
// (
// [spiele] => 11
// [siege] => 6
// [verloren] => 5
// [sn] => 0
// [ss] => 0
// [srs] => 0
// [gs] => 0
// [vn] => 0
// [vs] => 0
// [vrs] => 0
// [vg] => 0
// [6:31] => Array
// (
// [spiele] => 1
// [siege] => 1
// [verloren] => 0
// [sn] => 1
// [ss] => 0
// [srs] => 0
// [gs] => 0
// [vn] => 0
// [vs] => 0
// [vrs] => 0
@@ -0,0 +1,75 @@
<?php
namespace HermannTelser\Watten\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\Session\SessionManager;
/**
* 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_watten_domain_model_ergebnisse') {
// print_r($fieldArray);
// print_r($table);
// print_r($id);
$tmp = [];
$tmp[] = $fieldArray['s1'];
$tmp[] = $fieldArray['s2'];
$tmp[] = $fieldArray['v1'];
$tmp[] = $fieldArray['v2'];
$tmp = array_unique($tmp);
if (\array_sum($tmp) < 4) {
$parentObject->log(
$table,
$id,
2,
0,
1,
"Sichern des Eintrags misslang. Grund: Athleten müssen vollständig ausgefüllt werden.",
1,
[$table]
);
// unset table to prevent saving
$table = '';
} elseif (\count($tmp) != 4) {
$parentObject->log(
$table,
$id,
2,
0,
1,
"Sichern des Eintrags misslang. Grund: Athleten dürfen nicht doppelt vorkommen.",
1,
[$table]
);
// unset table to prevent saving
$table = '';
}
}
}
}
@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Watten\Scheduler;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Scheduler\Task\AbstractTask;
use HermannTelser\Watten\Daten\Berechnung;
class CronTask extends AbstractTask
{
public function execute()
{
$businessLogic = GeneralUtility::makeInstance(Berechnung::class);
$businessLogic->run();
return true;
}
}
@@ -0,0 +1,34 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Watten\Tca;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class Configuration
{
/*
* @param string $type
* @return integer
*/
public static function eingabedatum(): int
{
// use last entry in ergebnisse as default
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
$res = $queryBuilder
->select('datum')
->from('tx_watten_domain_model_ergebnisse')
->addOrderBy('uid', 'DESC')
->setMaxResults(1)
->setFirstResult(0)
->execute();
$spieltag = 0;
foreach ($res as $key => $value) {
$spieltag = (int) $value['datum'];
}
return $spieltag;
}
}
@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
namespace HermannTelser\Watten\Utilities;
/***
*
* This file is part of the "mindshape Cookie Consent" 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) 2021 Daniel Dorndorf <dorndorf@mindshape.de>, mindshape GmbH
*
***/
/**
* @package HermannTelser\Watten\Utility
*/
class CookieUtility
{
public const DEFAULT_COOKIE_NAME = 'watten';
/**
* @param string $name
* @return array|null
*/
public static function getCookieValue(string $name = self::DEFAULT_COOKIE_NAME): ?array
{
if (false === self::hasCookie($name)) {
return null;
}
return json_decode($_COOKIE[$name], true);
}
/**
* @param string $named
* @return bool
*/
public static function hasCookie(string $name = self::DEFAULT_COOKIE_NAME): bool
{
return true === array_key_exists($name, $_COOKIE);
}
/**
* @param string $name
*/
public static function deleteCookie(string $name = self::DEFAULT_COOKIE_NAME): void
{
unset($_COOKIE[$name]);
}
}