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); } }