@@ -123,7 +123,7 @@ discard block |
||
123 | 123 | } |
124 | 124 | |
125 | 125 | /** |
126 | - * @return Player[]|Collection |
|
126 | + * @return Collection |
|
127 | 127 | */ |
128 | 128 | public function getPlayersA() |
129 | 129 | { |
@@ -131,7 +131,7 @@ discard block |
||
131 | 131 | } |
132 | 132 | |
133 | 133 | /** |
134 | - * @return Player[]|Collection |
|
134 | + * @return Collection |
|
135 | 135 | */ |
136 | 136 | public function getPlayersB() |
137 | 137 | { |
@@ -67,9 +67,9 @@ discard block |
||
67 | 67 | */ |
68 | 68 | public function __construct() |
69 | 69 | { |
70 | - parent::__construct(); |
|
71 | - $this->playersA = new ArrayCollection(); |
|
72 | - $this->playersB = new ArrayCollection(); |
|
70 | + parent::__construct(); |
|
71 | + $this->playersA = new ArrayCollection(); |
|
72 | + $this->playersB = new ArrayCollection(); |
|
73 | 73 | } |
74 | 74 | //</editor-fold desc="Constructor"> |
75 | 75 | |
@@ -79,7 +79,7 @@ discard block |
||
79 | 79 | */ |
80 | 80 | public function getChildren(): Collection |
81 | 81 | { |
82 | - return new ArrayCollection(); |
|
82 | + return new ArrayCollection(); |
|
83 | 83 | } |
84 | 84 | |
85 | 85 | /** |
@@ -87,7 +87,7 @@ discard block |
||
87 | 87 | */ |
88 | 88 | public function getGameNumber(): int |
89 | 89 | { |
90 | - return $this->gameNumber; |
|
90 | + return $this->gameNumber; |
|
91 | 91 | } |
92 | 92 | |
93 | 93 | /** |
@@ -95,7 +95,7 @@ discard block |
||
95 | 95 | */ |
96 | 96 | public function getLevel(): int |
97 | 97 | { |
98 | - return Level::GAME; |
|
98 | + return Level::GAME; |
|
99 | 99 | } |
100 | 100 | |
101 | 101 | /** |
@@ -103,7 +103,7 @@ discard block |
||
103 | 103 | */ |
104 | 104 | public function getLocalIdentifier() |
105 | 105 | { |
106 | - return $this->getGameNumber(); |
|
106 | + return $this->getGameNumber(); |
|
107 | 107 | } |
108 | 108 | |
109 | 109 | /** |
@@ -111,7 +111,7 @@ discard block |
||
111 | 111 | */ |
112 | 112 | public function getMatch(): Match |
113 | 113 | { |
114 | - return $this->match; |
|
114 | + return $this->match; |
|
115 | 115 | } |
116 | 116 | |
117 | 117 | /** |
@@ -119,7 +119,7 @@ discard block |
||
119 | 119 | */ |
120 | 120 | public function getParent(): ?TournamentHierarchyInterface |
121 | 121 | { |
122 | - return $this->getMatch(); |
|
122 | + return $this->getMatch(); |
|
123 | 123 | } |
124 | 124 | |
125 | 125 | /** |
@@ -127,7 +127,7 @@ discard block |
||
127 | 127 | */ |
128 | 128 | public function getPlayersA() |
129 | 129 | { |
130 | - return $this->playersA; |
|
130 | + return $this->playersA; |
|
131 | 131 | } |
132 | 132 | |
133 | 133 | /** |
@@ -135,7 +135,7 @@ discard block |
||
135 | 135 | */ |
136 | 136 | public function getPlayersB() |
137 | 137 | { |
138 | - return $this->playersB; |
|
138 | + return $this->playersB; |
|
139 | 139 | } |
140 | 140 | |
141 | 141 | /** |
@@ -144,8 +144,8 @@ discard block |
||
144 | 144 | */ |
145 | 145 | public function setGameNumber(int $gameNumber): Game |
146 | 146 | { |
147 | - $this->gameNumber = $gameNumber; |
|
148 | - return $this; |
|
147 | + $this->gameNumber = $gameNumber; |
|
148 | + return $this; |
|
149 | 149 | } |
150 | 150 | |
151 | 151 | /** |
@@ -154,12 +154,12 @@ discard block |
||
154 | 154 | */ |
155 | 155 | public function setMatch(Match $match): Game |
156 | 156 | { |
157 | - if ($this->match !== null) { |
|
158 | - $this->match->getGames()->remove($this->getGameNumber()); |
|
159 | - } |
|
160 | - $this->match = $match; |
|
161 | - $match->getGames()->set($this->getGameNumber(), $this); |
|
162 | - return $this; |
|
157 | + if ($this->match !== null) { |
|
158 | + $this->match->getGames()->remove($this->getGameNumber()); |
|
159 | + } |
|
160 | + $this->match = $match; |
|
161 | + $match->getGames()->set($this->getGameNumber(), $this); |
|
162 | + return $this; |
|
163 | 163 | } |
164 | 164 | //</editor-fold desc="Public Methods"> |
165 | 165 | } |
166 | 166 | \ No newline at end of file |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | /** |
4 | 4 | * Created by PhpStorm. |
5 | 5 | * User: benedikt |
@@ -142,7 +142,7 @@ discard block |
||
142 | 142 | * @param int $gameNumber |
143 | 143 | * @return $this|Game |
144 | 144 | */ |
145 | - public function setGameNumber(int $gameNumber): Game |
|
145 | + public function setGameNumber( int $gameNumber ): Game |
|
146 | 146 | { |
147 | 147 | $this->gameNumber = $gameNumber; |
148 | 148 | return $this; |
@@ -152,9 +152,9 @@ discard block |
||
152 | 152 | * @param Match $match |
153 | 153 | * @return $this|Game |
154 | 154 | */ |
155 | - public function setMatch(Match $match): Game |
|
155 | + public function setMatch( Match $match ): Game |
|
156 | 156 | { |
157 | - if ($this->match !== null) { |
|
157 | + if ( $this->match !== null ) { |
|
158 | 158 | $this->match->getGames()->remove($this->getGameNumber()); |
159 | 159 | } |
160 | 160 | $this->match = $match; |
@@ -24,8 +24,7 @@ discard block |
||
24 | 24 | * @ORM\Entity |
25 | 25 | * @ORM\Table(name="games") |
26 | 26 | */ |
27 | -class Game extends TournamentHierarchyEntity |
|
28 | -{ |
|
27 | +class Game extends TournamentHierarchyEntity { |
|
29 | 28 | use ResultEntity; |
30 | 29 | |
31 | 30 | //<editor-fold desc="Fields"> |
@@ -65,8 +64,7 @@ discard block |
||
65 | 64 | /** |
66 | 65 | * Match constructor. |
67 | 66 | */ |
68 | - public function __construct() |
|
69 | - { |
|
67 | + public function __construct() { |
|
70 | 68 | parent::__construct(); |
71 | 69 | $this->playersA = new ArrayCollection(); |
72 | 70 | $this->playersB = new ArrayCollection(); |
@@ -101,8 +99,7 @@ discard block |
||
101 | 99 | /** |
102 | 100 | * @inheritDoc |
103 | 101 | */ |
104 | - public function getLocalIdentifier() |
|
105 | - { |
|
102 | + public function getLocalIdentifier() { |
|
106 | 103 | return $this->getGameNumber(); |
107 | 104 | } |
108 | 105 | |
@@ -125,16 +122,14 @@ discard block |
||
125 | 122 | /** |
126 | 123 | * @return Player[]|Collection |
127 | 124 | */ |
128 | - public function getPlayersA() |
|
129 | - { |
|
125 | + public function getPlayersA() { |
|
130 | 126 | return $this->playersA; |
131 | 127 | } |
132 | 128 | |
133 | 129 | /** |
134 | 130 | * @return Player[]|Collection |
135 | 131 | */ |
136 | - public function getPlayersB() |
|
137 | - { |
|
132 | + public function getPlayersB() { |
|
138 | 133 | return $this->playersB; |
139 | 134 | } |
140 | 135 |
@@ -115,7 +115,7 @@ |
||
115 | 115 | //<editor-fold desc="Private Methods"> |
116 | 116 | /** |
117 | 117 | * @param RankingSystemChange[] $changes |
118 | - * @param Collection|Player[] $players |
|
118 | + * @param Collection $players |
|
119 | 119 | * @param TournamentHierarchyEntity $entity |
120 | 120 | * @param \Tfboe\FmLib\Entity\RankingSystem $ranking |
121 | 121 | */ |
@@ -46,7 +46,7 @@ discard block |
||
46 | 46 | */ |
47 | 47 | protected function getAdditionalFields(): array |
48 | 48 | { |
49 | - return ['playedGames' => 0, 'ratedGames' => 0, 'provisoryRanking' => 1200.0]; |
|
49 | + return ['playedGames' => 0, 'ratedGames' => 0, 'provisoryRanking' => 1200.0]; |
|
50 | 50 | } |
51 | 51 | |
52 | 52 | /** |
@@ -54,51 +54,51 @@ discard block |
||
54 | 54 | */ |
55 | 55 | protected function getChanges(TournamentHierarchyEntity $entity, RankingSystemList $list): array |
56 | 56 | { |
57 | - /** @var Game $game */ |
|
58 | - $game = $entity; |
|
59 | - $changes = []; |
|
60 | - |
|
61 | - if (!$game->isPlayed() || $game->getResult() === Result::NOT_YET_FINISHED || |
|
62 | - $game->getResult() === Result::NULLED) { |
|
63 | - //game gets not elo rated |
|
64 | - $this->addNotRatedChanges($changes, $game->getPlayersA(), $entity, $list->getRankingSystem()); |
|
65 | - $this->addNotRatedChanges($changes, $game->getPlayersB(), $entity, $list->getRankingSystem()); |
|
66 | - return $changes; |
|
67 | - } |
|
68 | - |
|
69 | - $entriesA = $this->getEntriesOfPlayers($game->getPlayersA(), $list); |
|
70 | - $entriesB = $this->getEntriesOfPlayers($game->getPlayersB(), $list); |
|
71 | - |
|
72 | - $isAProvisory = $this->hasProvisoryEntry($entriesA); |
|
73 | - $isBProvisory = $this->hasProvisoryEntry($entriesB); |
|
74 | - |
|
75 | - $averageA = $this->getEloAverage($entriesA); |
|
76 | - $averageB = $this->getEloAverage($entriesB); |
|
77 | - |
|
78 | - $expectationA = 1 / (1 + 10 ** (($averageB - $averageA) / self::EXP_DIFF)); |
|
79 | - $expectationB = 1 - $expectationA; |
|
80 | - |
|
81 | - $resultA = 0.0; |
|
82 | - |
|
83 | - switch ($game->getResult()) { |
|
84 | - case Result::TEAM_A_WINS: |
|
85 | - $resultA = 1.0; |
|
86 | - break; |
|
87 | - case Result::DRAW: |
|
88 | - $resultA = 0.5; |
|
89 | - break; |
|
90 | - } |
|
91 | - $resultB = 1 - $resultA; |
|
92 | - |
|
93 | - $expectationDiffA = $resultA - $expectationA; |
|
94 | - $expectationDiffB = $resultB - $expectationB; |
|
95 | - |
|
96 | - |
|
97 | - $this->computeChanges($changes, $entriesA, $resultA, $expectationDiffA, $game, $averageA, $averageB, |
|
98 | - $isAProvisory, $isBProvisory); |
|
99 | - $this->computeChanges($changes, $entriesB, $resultB, $expectationDiffB, $game, $averageB, $averageA, |
|
100 | - $isBProvisory, $isAProvisory); |
|
101 | - return $changes; |
|
57 | + /** @var Game $game */ |
|
58 | + $game = $entity; |
|
59 | + $changes = []; |
|
60 | + |
|
61 | + if (!$game->isPlayed() || $game->getResult() === Result::NOT_YET_FINISHED || |
|
62 | + $game->getResult() === Result::NULLED) { |
|
63 | + //game gets not elo rated |
|
64 | + $this->addNotRatedChanges($changes, $game->getPlayersA(), $entity, $list->getRankingSystem()); |
|
65 | + $this->addNotRatedChanges($changes, $game->getPlayersB(), $entity, $list->getRankingSystem()); |
|
66 | + return $changes; |
|
67 | + } |
|
68 | + |
|
69 | + $entriesA = $this->getEntriesOfPlayers($game->getPlayersA(), $list); |
|
70 | + $entriesB = $this->getEntriesOfPlayers($game->getPlayersB(), $list); |
|
71 | + |
|
72 | + $isAProvisory = $this->hasProvisoryEntry($entriesA); |
|
73 | + $isBProvisory = $this->hasProvisoryEntry($entriesB); |
|
74 | + |
|
75 | + $averageA = $this->getEloAverage($entriesA); |
|
76 | + $averageB = $this->getEloAverage($entriesB); |
|
77 | + |
|
78 | + $expectationA = 1 / (1 + 10 ** (($averageB - $averageA) / self::EXP_DIFF)); |
|
79 | + $expectationB = 1 - $expectationA; |
|
80 | + |
|
81 | + $resultA = 0.0; |
|
82 | + |
|
83 | + switch ($game->getResult()) { |
|
84 | + case Result::TEAM_A_WINS: |
|
85 | + $resultA = 1.0; |
|
86 | + break; |
|
87 | + case Result::DRAW: |
|
88 | + $resultA = 0.5; |
|
89 | + break; |
|
90 | + } |
|
91 | + $resultB = 1 - $resultA; |
|
92 | + |
|
93 | + $expectationDiffA = $resultA - $expectationA; |
|
94 | + $expectationDiffB = $resultB - $expectationB; |
|
95 | + |
|
96 | + |
|
97 | + $this->computeChanges($changes, $entriesA, $resultA, $expectationDiffA, $game, $averageA, $averageB, |
|
98 | + $isAProvisory, $isBProvisory); |
|
99 | + $this->computeChanges($changes, $entriesB, $resultB, $expectationDiffB, $game, $averageB, $averageA, |
|
100 | + $isBProvisory, $isAProvisory); |
|
101 | + return $changes; |
|
102 | 102 | } |
103 | 103 | |
104 | 104 | /** @noinspection PhpMissingParentCallCommonInspection */ |
@@ -107,7 +107,7 @@ discard block |
||
107 | 107 | */ |
108 | 108 | protected function startPoints(): float |
109 | 109 | { |
110 | - return 1200.0; |
|
110 | + return 1200.0; |
|
111 | 111 | } |
112 | 112 | //</editor-fold desc="Protected Methods"> |
113 | 113 | |
@@ -120,16 +120,16 @@ discard block |
||
120 | 120 | * @param \Tfboe\FmLib\Entity\RankingSystem $ranking |
121 | 121 | */ |
122 | 122 | private function addNotRatedChanges(array &$changes, Collection $players, TournamentHierarchyEntity $entity, |
123 | - RankingSystem $ranking) |
|
123 | + RankingSystem $ranking) |
|
124 | 124 | { |
125 | - foreach ($players as $player) { |
|
126 | - $change = $this->getOrCreateChange($entity, $ranking, $player); |
|
127 | - $change->setPointsChange(0.0); |
|
128 | - $change->setPlayedGames(0); |
|
129 | - $change->setRatedGames(0); |
|
130 | - $change->setProvisoryRanking(0.0); |
|
131 | - $changes[] = $change; |
|
132 | - } |
|
125 | + foreach ($players as $player) { |
|
126 | + $change = $this->getOrCreateChange($entity, $ranking, $player); |
|
127 | + $change->setPointsChange(0.0); |
|
128 | + $change->setPlayedGames(0); |
|
129 | + $change->setRatedGames(0); |
|
130 | + $change->setProvisoryRanking(0.0); |
|
131 | + $changes[] = $change; |
|
132 | + } |
|
133 | 133 | } |
134 | 134 | |
135 | 135 | /** @noinspection PhpTooManyParametersInspection */ //TODO refactor this method |
@@ -145,56 +145,56 @@ discard block |
||
145 | 145 | * @param bool $opponentHasProvisory |
146 | 146 | */ |
147 | 147 | private function computeChanges(array &$changes, array $entries, float $result, float $expectationDiff, Game $game, |
148 | - float $teamAverage, float $opponentAverage, bool $teamHasProvisory, |
|
149 | - bool $opponentHasProvisory) |
|
148 | + float $teamAverage, float $opponentAverage, bool $teamHasProvisory, |
|
149 | + bool $opponentHasProvisory) |
|
150 | 150 | { |
151 | - foreach ($entries as $entry) { |
|
152 | - $change = $this->getOrCreateChange($game, $entry->getRankingSystemList()->getRankingSystem(), |
|
153 | - $entry->getPlayer()); |
|
154 | - $change->setPlayedGames(1); |
|
155 | - $factor = 2 * $result - 1; |
|
156 | - if ($entry->getPlayedGames() < self::NUM_PROVISORY_GAMES) { |
|
157 | - //provisory entry => recalculate |
|
158 | - if (count($entries) > 1) { |
|
159 | - $teamMatesAverage = ($teamAverage * count($entries) - $entry->getProvisoryRanking()) / |
|
160 | - (count($entries) - 1); |
|
161 | - if ($teamMatesAverage > $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY) { |
|
162 | - $teamMatesAverage = $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY; |
|
163 | - } |
|
164 | - if ($teamMatesAverage < $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY) { |
|
165 | - $teamMatesAverage = $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY; |
|
166 | - } |
|
167 | - $performance = $opponentAverage * (1 + self::PROVISORY_PARTNER_FACTOR) - |
|
168 | - $teamMatesAverage * self::PROVISORY_PARTNER_FACTOR; |
|
169 | - } else { |
|
170 | - $performance = $opponentAverage; |
|
171 | - } |
|
172 | - if ($performance < self::START) { |
|
173 | - $performance = self::START; |
|
174 | - } |
|
175 | - $performance += self::EXP_DIFF * $factor; |
|
176 | - //old average performance = $entry->getProvisoryRating() |
|
177 | - //=> new average performance = ($entry->getProvisoryRating() * $entry->getRatedGames() + $performance) / |
|
178 | - // ($entry->getRatedGames() + 1) |
|
179 | - //=> performance change = ($entry->getProvisoryRating() * $entry->getRatedGames() + $performance) / |
|
180 | - // ($entry->getRatedGames() + 1) - $entry->getProvisoryRating() |
|
181 | - // = ($performance - $entry->getProvisoryRating()) / ($entry->getRatedGames() + 1) |
|
182 | - $change->setProvisoryRanking(($performance - $entry->getProvisoryRanking()) / ($entry->getRatedGames() + 1)); |
|
183 | - $change->setPointsChange(0.0); |
|
184 | - $change->setRatedGames(1); |
|
185 | - } else if (!$teamHasProvisory && !$opponentHasProvisory) { |
|
186 | - //real elo ranking |
|
187 | - $change->setProvisoryRanking(0.0); |
|
188 | - $change->setPointsChange(self::K * $expectationDiff); |
|
189 | - $change->setRatedGames(1); |
|
190 | - } else { |
|
191 | - //does not get rated |
|
192 | - $change->setProvisoryRanking(0.0); |
|
193 | - $change->setPointsChange(0.0); |
|
194 | - $change->setRatedGames(0); |
|
195 | - } |
|
196 | - $changes[] = $change; |
|
197 | - } |
|
151 | + foreach ($entries as $entry) { |
|
152 | + $change = $this->getOrCreateChange($game, $entry->getRankingSystemList()->getRankingSystem(), |
|
153 | + $entry->getPlayer()); |
|
154 | + $change->setPlayedGames(1); |
|
155 | + $factor = 2 * $result - 1; |
|
156 | + if ($entry->getPlayedGames() < self::NUM_PROVISORY_GAMES) { |
|
157 | + //provisory entry => recalculate |
|
158 | + if (count($entries) > 1) { |
|
159 | + $teamMatesAverage = ($teamAverage * count($entries) - $entry->getProvisoryRanking()) / |
|
160 | + (count($entries) - 1); |
|
161 | + if ($teamMatesAverage > $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY) { |
|
162 | + $teamMatesAverage = $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY; |
|
163 | + } |
|
164 | + if ($teamMatesAverage < $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY) { |
|
165 | + $teamMatesAverage = $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY; |
|
166 | + } |
|
167 | + $performance = $opponentAverage * (1 + self::PROVISORY_PARTNER_FACTOR) - |
|
168 | + $teamMatesAverage * self::PROVISORY_PARTNER_FACTOR; |
|
169 | + } else { |
|
170 | + $performance = $opponentAverage; |
|
171 | + } |
|
172 | + if ($performance < self::START) { |
|
173 | + $performance = self::START; |
|
174 | + } |
|
175 | + $performance += self::EXP_DIFF * $factor; |
|
176 | + //old average performance = $entry->getProvisoryRating() |
|
177 | + //=> new average performance = ($entry->getProvisoryRating() * $entry->getRatedGames() + $performance) / |
|
178 | + // ($entry->getRatedGames() + 1) |
|
179 | + //=> performance change = ($entry->getProvisoryRating() * $entry->getRatedGames() + $performance) / |
|
180 | + // ($entry->getRatedGames() + 1) - $entry->getProvisoryRating() |
|
181 | + // = ($performance - $entry->getProvisoryRating()) / ($entry->getRatedGames() + 1) |
|
182 | + $change->setProvisoryRanking(($performance - $entry->getProvisoryRanking()) / ($entry->getRatedGames() + 1)); |
|
183 | + $change->setPointsChange(0.0); |
|
184 | + $change->setRatedGames(1); |
|
185 | + } else if (!$teamHasProvisory && !$opponentHasProvisory) { |
|
186 | + //real elo ranking |
|
187 | + $change->setProvisoryRanking(0.0); |
|
188 | + $change->setPointsChange(self::K * $expectationDiff); |
|
189 | + $change->setRatedGames(1); |
|
190 | + } else { |
|
191 | + //does not get rated |
|
192 | + $change->setProvisoryRanking(0.0); |
|
193 | + $change->setPointsChange(0.0); |
|
194 | + $change->setRatedGames(0); |
|
195 | + } |
|
196 | + $changes[] = $change; |
|
197 | + } |
|
198 | 198 | } |
199 | 199 | |
200 | 200 | /** |
@@ -204,11 +204,11 @@ discard block |
||
204 | 204 | */ |
205 | 205 | private function getEloAverage(array $entries): float |
206 | 206 | { |
207 | - $sum = 0; |
|
208 | - foreach ($entries as $entry) { |
|
209 | - $sum += $entry->getRatedGames() < self::NUM_PROVISORY_GAMES ? $entry->getProvisoryRanking() : $entry->getPoints(); |
|
210 | - } |
|
211 | - return $sum / count($entries); |
|
207 | + $sum = 0; |
|
208 | + foreach ($entries as $entry) { |
|
209 | + $sum += $entry->getRatedGames() < self::NUM_PROVISORY_GAMES ? $entry->getProvisoryRanking() : $entry->getPoints(); |
|
210 | + } |
|
211 | + return $sum / count($entries); |
|
212 | 212 | } |
213 | 213 | |
214 | 214 | /** |
@@ -218,12 +218,12 @@ discard block |
||
218 | 218 | */ |
219 | 219 | private function hasProvisoryEntry(array $entries): bool |
220 | 220 | { |
221 | - foreach ($entries as $entry) { |
|
222 | - if ($entry->getPlayedGames() < self::NUM_PROVISORY_GAMES) { |
|
223 | - return true; |
|
224 | - } |
|
225 | - } |
|
226 | - return false; |
|
221 | + foreach ($entries as $entry) { |
|
222 | + if ($entry->getPlayedGames() < self::NUM_PROVISORY_GAMES) { |
|
223 | + return true; |
|
224 | + } |
|
225 | + } |
|
226 | + return false; |
|
227 | 227 | } |
228 | 228 | //</editor-fold desc="Private Methods"> |
229 | 229 | } |
230 | 230 | \ No newline at end of file |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | /** |
4 | 4 | * Created by PhpStorm. |
5 | 5 | * User: benedikt |
@@ -52,14 +52,14 @@ discard block |
||
52 | 52 | /** |
53 | 53 | * @inheritDoc |
54 | 54 | */ |
55 | - protected function getChanges(TournamentHierarchyEntity $entity, RankingSystemList $list): array |
|
55 | + protected function getChanges( TournamentHierarchyEntity $entity, RankingSystemList $list ): array |
|
56 | 56 | { |
57 | 57 | /** @var Game $game */ |
58 | 58 | $game = $entity; |
59 | 59 | $changes = []; |
60 | 60 | |
61 | - if (!$game->isPlayed() || $game->getResult() === Result::NOT_YET_FINISHED || |
|
62 | - $game->getResult() === Result::NULLED) { |
|
61 | + if ( !$game->isPlayed() || $game->getResult() === Result::NOT_YET_FINISHED || |
|
62 | + $game->getResult() === Result::NULLED ) { |
|
63 | 63 | //game gets not elo rated |
64 | 64 | $this->addNotRatedChanges($changes, $game->getPlayersA(), $entity, $list->getRankingSystem()); |
65 | 65 | $this->addNotRatedChanges($changes, $game->getPlayersB(), $entity, $list->getRankingSystem()); |
@@ -80,7 +80,7 @@ discard block |
||
80 | 80 | |
81 | 81 | $resultA = 0.0; |
82 | 82 | |
83 | - switch ($game->getResult()) { |
|
83 | + switch ( $game->getResult() ) { |
|
84 | 84 | case Result::TEAM_A_WINS: |
85 | 85 | $resultA = 1.0; |
86 | 86 | break; |
@@ -119,10 +119,10 @@ discard block |
||
119 | 119 | * @param TournamentHierarchyEntity $entity |
120 | 120 | * @param \Tfboe\FmLib\Entity\RankingSystem $ranking |
121 | 121 | */ |
122 | - private function addNotRatedChanges(array &$changes, Collection $players, TournamentHierarchyEntity $entity, |
|
123 | - RankingSystem $ranking) |
|
122 | + private function addNotRatedChanges( array &$changes, Collection $players, TournamentHierarchyEntity $entity, |
|
123 | + RankingSystem $ranking ) |
|
124 | 124 | { |
125 | - foreach ($players as $player) { |
|
125 | + foreach ( $players as $player ) { |
|
126 | 126 | $change = $this->getOrCreateChange($entity, $ranking, $player); |
127 | 127 | $change->setPointsChange(0.0); |
128 | 128 | $change->setPlayedGames(0); |
@@ -144,24 +144,24 @@ discard block |
||
144 | 144 | * @param bool $teamHasProvisory |
145 | 145 | * @param bool $opponentHasProvisory |
146 | 146 | */ |
147 | - private function computeChanges(array &$changes, array $entries, float $result, float $expectationDiff, Game $game, |
|
147 | + private function computeChanges( array &$changes, array $entries, float $result, float $expectationDiff, Game $game, |
|
148 | 148 | float $teamAverage, float $opponentAverage, bool $teamHasProvisory, |
149 | - bool $opponentHasProvisory) |
|
149 | + bool $opponentHasProvisory ) |
|
150 | 150 | { |
151 | - foreach ($entries as $entry) { |
|
151 | + foreach ( $entries as $entry ) { |
|
152 | 152 | $change = $this->getOrCreateChange($game, $entry->getRankingSystemList()->getRankingSystem(), |
153 | 153 | $entry->getPlayer()); |
154 | 154 | $change->setPlayedGames(1); |
155 | 155 | $factor = 2 * $result - 1; |
156 | - if ($entry->getPlayedGames() < self::NUM_PROVISORY_GAMES) { |
|
156 | + if ( $entry->getPlayedGames() < self::NUM_PROVISORY_GAMES ) { |
|
157 | 157 | //provisory entry => recalculate |
158 | - if (count($entries) > 1) { |
|
158 | + if ( count($entries) > 1 ) { |
|
159 | 159 | $teamMatesAverage = ($teamAverage * count($entries) - $entry->getProvisoryRanking()) / |
160 | 160 | (count($entries) - 1); |
161 | - if ($teamMatesAverage > $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY) { |
|
161 | + if ( $teamMatesAverage > $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY ) { |
|
162 | 162 | $teamMatesAverage = $opponentAverage + self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY; |
163 | 163 | } |
164 | - if ($teamMatesAverage < $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY) { |
|
164 | + if ( $teamMatesAverage < $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY ) { |
|
165 | 165 | $teamMatesAverage = $opponentAverage - self::MAX_DIFF_TO_OPPONENT_FOR_PROVISORY; |
166 | 166 | } |
167 | 167 | $performance = $opponentAverage * (1 + self::PROVISORY_PARTNER_FACTOR) - |
@@ -169,7 +169,7 @@ discard block |
||
169 | 169 | } else { |
170 | 170 | $performance = $opponentAverage; |
171 | 171 | } |
172 | - if ($performance < self::START) { |
|
172 | + if ( $performance < self::START ) { |
|
173 | 173 | $performance = self::START; |
174 | 174 | } |
175 | 175 | $performance += self::EXP_DIFF * $factor; |
@@ -182,7 +182,7 @@ discard block |
||
182 | 182 | $change->setProvisoryRanking(($performance - $entry->getProvisoryRanking()) / ($entry->getRatedGames() + 1)); |
183 | 183 | $change->setPointsChange(0.0); |
184 | 184 | $change->setRatedGames(1); |
185 | - } else if (!$teamHasProvisory && !$opponentHasProvisory) { |
|
185 | + } else if ( !$teamHasProvisory && !$opponentHasProvisory ) { |
|
186 | 186 | //real elo ranking |
187 | 187 | $change->setProvisoryRanking(0.0); |
188 | 188 | $change->setPointsChange(self::K * $expectationDiff); |
@@ -202,10 +202,10 @@ discard block |
||
202 | 202 | * @param RankingSystemListEntry[] $entries must be nonempty |
203 | 203 | * @return float |
204 | 204 | */ |
205 | - private function getEloAverage(array $entries): float |
|
205 | + private function getEloAverage( array $entries ): float |
|
206 | 206 | { |
207 | 207 | $sum = 0; |
208 | - foreach ($entries as $entry) { |
|
208 | + foreach ( $entries as $entry ) { |
|
209 | 209 | $sum += $entry->getRatedGames() < self::NUM_PROVISORY_GAMES ? $entry->getProvisoryRanking() : $entry->getPoints(); |
210 | 210 | } |
211 | 211 | return $sum / count($entries); |
@@ -216,10 +216,10 @@ discard block |
||
216 | 216 | * @param RankingSystemListEntry[] $entries |
217 | 217 | * @return bool |
218 | 218 | */ |
219 | - private function hasProvisoryEntry(array $entries): bool |
|
219 | + private function hasProvisoryEntry( array $entries ): bool |
|
220 | 220 | { |
221 | - foreach ($entries as $entry) { |
|
222 | - if ($entry->getPlayedGames() < self::NUM_PROVISORY_GAMES) { |
|
221 | + foreach ( $entries as $entry ) { |
|
222 | + if ( $entry->getPlayedGames() < self::NUM_PROVISORY_GAMES ) { |
|
223 | 223 | return true; |
224 | 224 | } |
225 | 225 | } |
@@ -23,8 +23,7 @@ discard block |
||
23 | 23 | * Class EloRanking |
24 | 24 | * @package Tfboe\FmLib\Service\TournamentRanking |
25 | 25 | */ |
26 | -class EloRanking extends GameRankingSystemService implements EloRankingInterface |
|
27 | -{ |
|
26 | +class EloRanking extends GameRankingSystemService implements EloRankingInterface { |
|
28 | 27 | //<editor-fold desc="Fields"> |
29 | 28 | const EXP_DIFF = 400; |
30 | 29 | const K = 20; |
@@ -120,8 +119,7 @@ discard block |
||
120 | 119 | * @param \Tfboe\FmLib\Entity\RankingSystem $ranking |
121 | 120 | */ |
122 | 121 | private function addNotRatedChanges(array &$changes, Collection $players, TournamentHierarchyEntity $entity, |
123 | - RankingSystem $ranking) |
|
124 | - { |
|
122 | + RankingSystem $ranking) { |
|
125 | 123 | foreach ($players as $player) { |
126 | 124 | $change = $this->getOrCreateChange($entity, $ranking, $player); |
127 | 125 | $change->setPointsChange(0.0); |
@@ -146,8 +144,7 @@ discard block |
||
146 | 144 | */ |
147 | 145 | private function computeChanges(array &$changes, array $entries, float $result, float $expectationDiff, Game $game, |
148 | 146 | float $teamAverage, float $opponentAverage, bool $teamHasProvisory, |
149 | - bool $opponentHasProvisory) |
|
150 | - { |
|
147 | + bool $opponentHasProvisory) { |
|
151 | 148 | foreach ($entries as $entry) { |
152 | 149 | $change = $this->getOrCreateChange($game, $entry->getRankingSystemList()->getRankingSystem(), |
153 | 150 | $entry->getPlayer()); |
@@ -206,7 +206,7 @@ |
||
206 | 206 | } |
207 | 207 | |
208 | 208 | /** |
209 | - * @param Collection|Player[] $players |
|
209 | + * @param Collection $players |
|
210 | 210 | * @param RankingSystemList $list |
211 | 211 | * @return RankingSystemListEntry[] $entries |
212 | 212 | */ |
@@ -67,14 +67,14 @@ discard block |
||
67 | 67 | * @param EntityComparerInterface $entityComparer |
68 | 68 | */ |
69 | 69 | public function __construct(EntityManagerInterface $entityManager, TimeServiceInterface $timeService, |
70 | - EntityComparerInterface $entityComparer) |
|
70 | + EntityComparerInterface $entityComparer) |
|
71 | 71 | { |
72 | - $this->entityManager = $entityManager; |
|
73 | - $this->timeService = $timeService; |
|
74 | - $this->entityComparer = $entityComparer; |
|
75 | - $this->changes = []; |
|
76 | - $this->deletedChanges = []; |
|
77 | - $this->updateRankingCalls = []; |
|
72 | + $this->entityManager = $entityManager; |
|
73 | + $this->timeService = $timeService; |
|
74 | + $this->entityComparer = $entityComparer; |
|
75 | + $this->changes = []; |
|
76 | + $this->deletedChanges = []; |
|
77 | + $this->updateRankingCalls = []; |
|
78 | 78 | } |
79 | 79 | //</editor-fold desc="Constructor"> |
80 | 80 | |
@@ -84,23 +84,23 @@ discard block |
||
84 | 84 | */ |
85 | 85 | public function getEarliestInfluence(RankingSystem $ranking, Tournament $tournament): ?\DateTime |
86 | 86 | { |
87 | - return $this->getEarliestEntityInfluence($ranking, $tournament, false); |
|
87 | + return $this->getEarliestEntityInfluence($ranking, $tournament, false); |
|
88 | 88 | } |
89 | 89 | |
90 | 90 | /** |
91 | 91 | * @inheritdoc |
92 | 92 | */ |
93 | 93 | public function updateRankingForTournament(RankingSystem $ranking, Tournament $tournament, |
94 | - ?\DateTime $oldInfluence) |
|
94 | + ?\DateTime $oldInfluence) |
|
95 | 95 | { |
96 | - $earliestInfluence = $this->getEarliestInfluence($ranking, $tournament); |
|
97 | - if ($oldInfluence !== null && |
|
98 | - ($earliestInfluence === null || $oldInfluence < $earliestInfluence)) { |
|
99 | - $earliestInfluence = $oldInfluence; |
|
100 | - } |
|
101 | - if ($earliestInfluence !== null) { |
|
102 | - $this->updateRankingFrom($ranking, $earliestInfluence); |
|
103 | - } |
|
96 | + $earliestInfluence = $this->getEarliestInfluence($ranking, $tournament); |
|
97 | + if ($oldInfluence !== null && |
|
98 | + ($earliestInfluence === null || $oldInfluence < $earliestInfluence)) { |
|
99 | + $earliestInfluence = $oldInfluence; |
|
100 | + } |
|
101 | + if ($earliestInfluence !== null) { |
|
102 | + $this->updateRankingFrom($ranking, $earliestInfluence); |
|
103 | + } |
|
104 | 104 | } |
105 | 105 | |
106 | 106 | /** |
@@ -108,60 +108,60 @@ discard block |
||
108 | 108 | */ |
109 | 109 | public function updateRankingFrom(RankingSystem $ranking, \DateTime $from) |
110 | 110 | { |
111 | - // can only be called once per ranking system!!! |
|
112 | - if (array_key_exists($ranking->getId(), $this->updateRankingCalls)) { |
|
113 | - throw new PreconditionFailedException(); |
|
114 | - } |
|
115 | - $this->updateRankingCalls[$ranking->getId()] = $ranking; |
|
116 | - //find first reusable |
|
117 | - /** @var RankingSystemList[] $lists */ |
|
118 | - $lists = array_values($ranking->getLists()->toArray()); |
|
119 | - |
|
120 | - $current = null; |
|
121 | - /** @var RankingSystemList $lastReusable */ |
|
122 | - $lastReusable = null; |
|
123 | - $toUpdate = []; |
|
124 | - |
|
125 | - foreach ($lists as $list) { |
|
126 | - if ($list->isCurrent()) { |
|
127 | - $current = $list; |
|
128 | - } else if ($list->getLastEntryTime() >= $from) { |
|
129 | - $toUpdate[] = $list; |
|
130 | - } else if ($lastReusable === null || $list->getLastEntryTime() > $lastReusable->getLastEntryTime()) { |
|
131 | - $lastReusable = $list; |
|
132 | - } |
|
133 | - } |
|
134 | - |
|
135 | - if ($lastReusable === null) { |
|
136 | - $lastReusable = new RankingSystemList(); |
|
137 | - } |
|
138 | - |
|
139 | - usort($toUpdate, function (RankingSystemList $list1, RankingSystemList $list2) { |
|
140 | - return $list1->getLastEntryTime() <=> $list2->getLastEntryTime(); |
|
141 | - }); |
|
142 | - |
|
143 | - $entities = $this->getEntities($ranking, $lastReusable->getLastEntryTime()); |
|
144 | - //sort entities |
|
145 | - $this->timeService->clearTimes(); |
|
146 | - usort($entities, function ($entity1, $entity2) { |
|
147 | - return $this->entityComparer->compareEntities($entity1, $entity2); |
|
148 | - }); |
|
149 | - |
|
150 | - $this->deleteOldChanges($ranking, $entities); |
|
151 | - |
|
152 | - $nextEntityIndex = 0; |
|
153 | - foreach ($toUpdate as $list) { |
|
154 | - $this->recomputeBasedOn($list, $lastReusable, $entities, $nextEntityIndex); |
|
155 | - $lastReusable = $list; |
|
156 | - } |
|
157 | - |
|
158 | - if ($current === null) { |
|
159 | - $current = new RankingSystemList(); |
|
160 | - $current->setCurrent(true); |
|
161 | - $this->entityManager->persist($current); |
|
162 | - $current->setRankingSystem($ranking); |
|
163 | - } |
|
164 | - $this->recomputeBasedOn($current, $lastReusable, $entities, $nextEntityIndex); |
|
111 | + // can only be called once per ranking system!!! |
|
112 | + if (array_key_exists($ranking->getId(), $this->updateRankingCalls)) { |
|
113 | + throw new PreconditionFailedException(); |
|
114 | + } |
|
115 | + $this->updateRankingCalls[$ranking->getId()] = $ranking; |
|
116 | + //find first reusable |
|
117 | + /** @var RankingSystemList[] $lists */ |
|
118 | + $lists = array_values($ranking->getLists()->toArray()); |
|
119 | + |
|
120 | + $current = null; |
|
121 | + /** @var RankingSystemList $lastReusable */ |
|
122 | + $lastReusable = null; |
|
123 | + $toUpdate = []; |
|
124 | + |
|
125 | + foreach ($lists as $list) { |
|
126 | + if ($list->isCurrent()) { |
|
127 | + $current = $list; |
|
128 | + } else if ($list->getLastEntryTime() >= $from) { |
|
129 | + $toUpdate[] = $list; |
|
130 | + } else if ($lastReusable === null || $list->getLastEntryTime() > $lastReusable->getLastEntryTime()) { |
|
131 | + $lastReusable = $list; |
|
132 | + } |
|
133 | + } |
|
134 | + |
|
135 | + if ($lastReusable === null) { |
|
136 | + $lastReusable = new RankingSystemList(); |
|
137 | + } |
|
138 | + |
|
139 | + usort($toUpdate, function (RankingSystemList $list1, RankingSystemList $list2) { |
|
140 | + return $list1->getLastEntryTime() <=> $list2->getLastEntryTime(); |
|
141 | + }); |
|
142 | + |
|
143 | + $entities = $this->getEntities($ranking, $lastReusable->getLastEntryTime()); |
|
144 | + //sort entities |
|
145 | + $this->timeService->clearTimes(); |
|
146 | + usort($entities, function ($entity1, $entity2) { |
|
147 | + return $this->entityComparer->compareEntities($entity1, $entity2); |
|
148 | + }); |
|
149 | + |
|
150 | + $this->deleteOldChanges($ranking, $entities); |
|
151 | + |
|
152 | + $nextEntityIndex = 0; |
|
153 | + foreach ($toUpdate as $list) { |
|
154 | + $this->recomputeBasedOn($list, $lastReusable, $entities, $nextEntityIndex); |
|
155 | + $lastReusable = $list; |
|
156 | + } |
|
157 | + |
|
158 | + if ($current === null) { |
|
159 | + $current = new RankingSystemList(); |
|
160 | + $current->setCurrent(true); |
|
161 | + $this->entityManager->persist($current); |
|
162 | + $current->setRankingSystem($ranking); |
|
163 | + } |
|
164 | + $this->recomputeBasedOn($current, $lastReusable, $entities, $nextEntityIndex); |
|
165 | 165 | } |
166 | 166 | //</editor-fold desc="Public Methods"> |
167 | 167 | |
@@ -173,15 +173,15 @@ discard block |
||
173 | 173 | */ |
174 | 174 | protected final function getAverage(array $entries): float |
175 | 175 | { |
176 | - $sum = 0.0; |
|
177 | - foreach ($entries as $entry) { |
|
178 | - $sum += $entry->getPoints(); |
|
179 | - } |
|
180 | - if (count($entries) === 0) { |
|
181 | - return 0.0; |
|
182 | - } else { |
|
183 | - return $sum / count($entries); |
|
184 | - } |
|
176 | + $sum = 0.0; |
|
177 | + foreach ($entries as $entry) { |
|
178 | + $sum += $entry->getPoints(); |
|
179 | + } |
|
180 | + if (count($entries) === 0) { |
|
181 | + return 0.0; |
|
182 | + } else { |
|
183 | + return $sum / count($entries); |
|
184 | + } |
|
185 | 185 | } |
186 | 186 | |
187 | 187 | /** |
@@ -193,8 +193,8 @@ discard block |
||
193 | 193 | */ |
194 | 194 | protected final function getEntities(RankingSystem $ranking, \DateTime $from): array |
195 | 195 | { |
196 | - $query = $this->getEntitiesQueryBuilder($ranking, $from); |
|
197 | - return $query->getQuery()->getResult(); |
|
196 | + $query = $this->getEntitiesQueryBuilder($ranking, $from); |
|
197 | + return $query->getQuery()->getResult(); |
|
198 | 198 | } |
199 | 199 | |
200 | 200 | /** |
@@ -202,7 +202,7 @@ discard block |
||
202 | 202 | */ |
203 | 203 | protected final function getEntityManager(): EntityManagerInterface |
204 | 204 | { |
205 | - return $this->entityManager; |
|
205 | + return $this->entityManager; |
|
206 | 206 | } |
207 | 207 | |
208 | 208 | /** |
@@ -212,11 +212,11 @@ discard block |
||
212 | 212 | */ |
213 | 213 | protected final function getEntriesOfPlayers(Collection $players, RankingSystemList $list): array |
214 | 214 | { |
215 | - $result = []; |
|
216 | - foreach ($players as $player) { |
|
217 | - $result[] = $this->getOrCreateRankingSystemListEntry($list, $player); |
|
218 | - } |
|
219 | - return $result; |
|
215 | + $result = []; |
|
216 | + foreach ($players as $player) { |
|
217 | + $result[] = $this->getOrCreateRankingSystemListEntry($list, $player); |
|
218 | + } |
|
219 | + return $result; |
|
220 | 220 | } |
221 | 221 | |
222 | 222 | /** @noinspection PhpDocMissingThrowsInspection */ //PropertyNotExistingException |
@@ -228,49 +228,49 @@ discard block |
||
228 | 228 | * @return RankingSystemChange the found or newly created ranking system change |
229 | 229 | */ |
230 | 230 | protected final function getOrCreateChange(TournamentHierarchyEntity $entity, RankingSystem $ranking, |
231 | - Player $player) |
|
231 | + Player $player) |
|
232 | 232 | { |
233 | - $key1 = $entity->getId(); |
|
234 | - $key2 = $ranking->getId(); |
|
235 | - $key3 = $player->getPlayerId(); |
|
236 | - if (!array_key_exists($key1, $this->changes) || !array_key_exists($key2, $this->changes[$key1]) || |
|
237 | - !array_key_exists($key3, $this->changes[$key1][$key2])) { |
|
238 | - /** @var RankingSystemChange[] $changes */ |
|
239 | - $changes = $this->entityManager->getRepository(RankingSystemChange::class)->findBy( |
|
240 | - ['hierarchyEntity' => $entity]); |
|
241 | - $this->changes[$key1] = []; |
|
242 | - foreach ($changes as $change) { |
|
243 | - |
|
244 | - $newKey2 = $change->getRankingSystem()->getId(); |
|
245 | - $newKey3 = $change->getPlayer()->getPlayerId(); |
|
246 | - if (!array_key_exists($key1, $this->deletedChanges) || !array_key_exists($key2, $this->deletedChanges[$key1]) || |
|
247 | - !array_key_exists($key3, $this->deletedChanges[$key1][$key2])) { |
|
248 | - if (!array_key_exists($newKey2, $this->changes)) { |
|
249 | - $this->changes[$key1][$newKey2] = []; |
|
250 | - } |
|
251 | - $this->changes[$key1][$newKey2][$newKey3] = $change; |
|
252 | - } |
|
253 | - } |
|
254 | - } |
|
255 | - if (!array_key_exists($key2, $this->changes[$key1]) || !array_key_exists($key3, $this->changes[$key1][$key2])) { |
|
256 | - //create new change |
|
257 | - $change = new RankingSystemChange(array_keys($this->getAdditionalFields())); |
|
258 | - foreach ($this->getAdditionalFields() as $field => $value) { |
|
259 | - // PropertyNotExistingException => we know for sure that the property exists (see 2 lines above) |
|
260 | - /** @noinspection PhpUnhandledExceptionInspection */ |
|
261 | - $change->setProperty($field, 0); |
|
262 | - } |
|
263 | - $change->setHierarchyEntity($entity); |
|
264 | - $change->setRankingSystem($ranking); |
|
265 | - $change->setPlayer($player); |
|
266 | - $this->entityManager->persist($change); |
|
267 | - $this->changes[$key1][$key2][$key3] = $change; |
|
268 | - if (array_key_exists($key1, $this->deletedChanges) && array_key_exists($key2, $this->deletedChanges[$key1]) && |
|
269 | - array_key_exists($key3, $this->deletedChanges[$key1][$key2])) { |
|
270 | - unset($this->deletedChanges[$key1][$key2][$key3]); |
|
271 | - } |
|
272 | - } |
|
273 | - return $this->changes[$key1][$key2][$key3]; |
|
233 | + $key1 = $entity->getId(); |
|
234 | + $key2 = $ranking->getId(); |
|
235 | + $key3 = $player->getPlayerId(); |
|
236 | + if (!array_key_exists($key1, $this->changes) || !array_key_exists($key2, $this->changes[$key1]) || |
|
237 | + !array_key_exists($key3, $this->changes[$key1][$key2])) { |
|
238 | + /** @var RankingSystemChange[] $changes */ |
|
239 | + $changes = $this->entityManager->getRepository(RankingSystemChange::class)->findBy( |
|
240 | + ['hierarchyEntity' => $entity]); |
|
241 | + $this->changes[$key1] = []; |
|
242 | + foreach ($changes as $change) { |
|
243 | + |
|
244 | + $newKey2 = $change->getRankingSystem()->getId(); |
|
245 | + $newKey3 = $change->getPlayer()->getPlayerId(); |
|
246 | + if (!array_key_exists($key1, $this->deletedChanges) || !array_key_exists($key2, $this->deletedChanges[$key1]) || |
|
247 | + !array_key_exists($key3, $this->deletedChanges[$key1][$key2])) { |
|
248 | + if (!array_key_exists($newKey2, $this->changes)) { |
|
249 | + $this->changes[$key1][$newKey2] = []; |
|
250 | + } |
|
251 | + $this->changes[$key1][$newKey2][$newKey3] = $change; |
|
252 | + } |
|
253 | + } |
|
254 | + } |
|
255 | + if (!array_key_exists($key2, $this->changes[$key1]) || !array_key_exists($key3, $this->changes[$key1][$key2])) { |
|
256 | + //create new change |
|
257 | + $change = new RankingSystemChange(array_keys($this->getAdditionalFields())); |
|
258 | + foreach ($this->getAdditionalFields() as $field => $value) { |
|
259 | + // PropertyNotExistingException => we know for sure that the property exists (see 2 lines above) |
|
260 | + /** @noinspection PhpUnhandledExceptionInspection */ |
|
261 | + $change->setProperty($field, 0); |
|
262 | + } |
|
263 | + $change->setHierarchyEntity($entity); |
|
264 | + $change->setRankingSystem($ranking); |
|
265 | + $change->setPlayer($player); |
|
266 | + $this->entityManager->persist($change); |
|
267 | + $this->changes[$key1][$key2][$key3] = $change; |
|
268 | + if (array_key_exists($key1, $this->deletedChanges) && array_key_exists($key2, $this->deletedChanges[$key1]) && |
|
269 | + array_key_exists($key3, $this->deletedChanges[$key1][$key2])) { |
|
270 | + unset($this->deletedChanges[$key1][$key2][$key3]); |
|
271 | + } |
|
272 | + } |
|
273 | + return $this->changes[$key1][$key2][$key3]; |
|
274 | 274 | } |
275 | 275 | |
276 | 276 | /** @noinspection PhpDocMissingThrowsInspection */ //PropertyNotExistingException |
@@ -280,22 +280,22 @@ discard block |
||
280 | 280 | * @return RankingSystemListEntry the found or the new entry |
281 | 281 | */ |
282 | 282 | protected final function getOrCreateRankingSystemListEntry(RankingSystemList $list, |
283 | - Player $player): RankingSystemListEntry |
|
283 | + Player $player): RankingSystemListEntry |
|
284 | 284 | { |
285 | - $playerId = $player->getPlayerId(); |
|
286 | - if (!$list->getEntries()->containsKey($playerId)) { |
|
287 | - $entry = new RankingSystemListEntry(array_keys($this->getAdditionalFields())); |
|
288 | - $entry->setPoints($this->startPoints()); |
|
289 | - $entry->setPlayer($player); |
|
290 | - $entry->setRankingSystemList($list); |
|
291 | - foreach ($this->getAdditionalFields() as $field => $value) { |
|
292 | - // PropertyNotExistingException => we know for sure that the property exists (see 2 lines above) |
|
293 | - /** @noinspection PhpUnhandledExceptionInspection */ |
|
294 | - $entry->setProperty($field, $value); |
|
295 | - } |
|
296 | - $this->entityManager->persist($entry); |
|
297 | - } |
|
298 | - return $list->getEntries()->get($playerId); |
|
285 | + $playerId = $player->getPlayerId(); |
|
286 | + if (!$list->getEntries()->containsKey($playerId)) { |
|
287 | + $entry = new RankingSystemListEntry(array_keys($this->getAdditionalFields())); |
|
288 | + $entry->setPoints($this->startPoints()); |
|
289 | + $entry->setPlayer($player); |
|
290 | + $entry->setRankingSystemList($list); |
|
291 | + foreach ($this->getAdditionalFields() as $field => $value) { |
|
292 | + // PropertyNotExistingException => we know for sure that the property exists (see 2 lines above) |
|
293 | + /** @noinspection PhpUnhandledExceptionInspection */ |
|
294 | + $entry->setProperty($field, $value); |
|
295 | + } |
|
296 | + $this->entityManager->persist($entry); |
|
297 | + } |
|
298 | + return $list->getEntries()->get($playerId); |
|
299 | 299 | } |
300 | 300 | //</editor-fold desc="Protected Final Methods"> |
301 | 301 | |
@@ -323,7 +323,7 @@ discard block |
||
323 | 323 | * @return QueryBuilder |
324 | 324 | */ |
325 | 325 | protected abstract function getEntitiesQueryBuilder(RankingSystem $ranking, |
326 | - \DateTime $from): QueryBuilder; |
|
326 | + \DateTime $from): QueryBuilder; |
|
327 | 327 | |
328 | 328 | /** |
329 | 329 | * Gets the level of the ranking system service (see Level Enum) |
@@ -337,7 +337,7 @@ discard block |
||
337 | 337 | */ |
338 | 338 | protected function startPoints(): float |
339 | 339 | { |
340 | - return 0.0; |
|
340 | + return 0.0; |
|
341 | 341 | } |
342 | 342 | //</editor-fold desc="Protected Methods"> |
343 | 343 | |
@@ -350,38 +350,38 @@ discard block |
||
350 | 350 | */ |
351 | 351 | private function cloneInto(RankingSystemList $list, RankingSystemList $base) |
352 | 352 | { |
353 | - /*//first remove all entries from list |
|
353 | + /*//first remove all entries from list |
|
354 | 354 | foreach($list->getEntries()->toArray() as $entry) |
355 | 355 | { |
356 | 356 | $list->getEntries()->removeElement($entry); |
357 | 357 | $this->entityManager->remove($entry); |
358 | 358 | }*/ |
359 | 359 | |
360 | - $clonedPlayers = []; |
|
361 | - |
|
362 | - foreach ($base->getEntries() as $entry) { |
|
363 | - $playerId = $entry->getPlayer()->getPlayerId(); |
|
364 | - $clonedPlayers[$playerId] = true; |
|
365 | - if (!$list->getEntries()->containsKey($playerId)) { |
|
366 | - //create new entry |
|
367 | - $clone = new RankingSystemListEntry([]); |
|
368 | - $clone->cloneSubClassDataFrom($entry); |
|
369 | - $this->entityManager->persist($clone); |
|
370 | - $clone->setPlayer($entry->getPlayer()); |
|
371 | - $clone->setRankingSystemList($list); |
|
372 | - } |
|
373 | - $foundEntry = $list->getEntries()[$playerId]; |
|
374 | - $foundEntry->setNumberRankedEntities($entry->getNumberRankedEntities()); |
|
375 | - $foundEntry->setPoints($entry->getPoints()); |
|
376 | - } |
|
377 | - |
|
378 | - //remove all unused entries from list |
|
379 | - foreach ($list->getEntries()->toArray() as $playerId => $entry) { |
|
380 | - if (!array_key_exists($playerId, $clonedPlayers)) { |
|
381 | - $list->getEntries()->removeElement($entry); |
|
382 | - $this->entityManager->remove($entry); |
|
383 | - } |
|
384 | - } |
|
360 | + $clonedPlayers = []; |
|
361 | + |
|
362 | + foreach ($base->getEntries() as $entry) { |
|
363 | + $playerId = $entry->getPlayer()->getPlayerId(); |
|
364 | + $clonedPlayers[$playerId] = true; |
|
365 | + if (!$list->getEntries()->containsKey($playerId)) { |
|
366 | + //create new entry |
|
367 | + $clone = new RankingSystemListEntry([]); |
|
368 | + $clone->cloneSubClassDataFrom($entry); |
|
369 | + $this->entityManager->persist($clone); |
|
370 | + $clone->setPlayer($entry->getPlayer()); |
|
371 | + $clone->setRankingSystemList($list); |
|
372 | + } |
|
373 | + $foundEntry = $list->getEntries()[$playerId]; |
|
374 | + $foundEntry->setNumberRankedEntities($entry->getNumberRankedEntities()); |
|
375 | + $foundEntry->setPoints($entry->getPoints()); |
|
376 | + } |
|
377 | + |
|
378 | + //remove all unused entries from list |
|
379 | + foreach ($list->getEntries()->toArray() as $playerId => $entry) { |
|
380 | + if (!array_key_exists($playerId, $clonedPlayers)) { |
|
381 | + $list->getEntries()->removeElement($entry); |
|
382 | + $this->entityManager->remove($entry); |
|
383 | + } |
|
384 | + } |
|
385 | 385 | } |
386 | 386 | |
387 | 387 | |
@@ -391,21 +391,21 @@ discard block |
||
391 | 391 | */ |
392 | 392 | private function deleteOldChanges(RankingSystem $ranking, array $entities) |
393 | 393 | { |
394 | - //delete old changes |
|
395 | - $queryBuilder = $this->entityManager->createQueryBuilder(); |
|
396 | - /** @var RankingSystemChange[] $changes */ |
|
397 | - $changes = $queryBuilder |
|
398 | - ->from(RankingSystemChange::class, 'c') |
|
399 | - ->select('c') |
|
400 | - ->where($queryBuilder->expr()->eq('c.rankingSystem', $ranking)) |
|
401 | - ->where($queryBuilder->expr()->in('c.hierarchyEntity', ':entities')) |
|
402 | - ->setParameter('entities', $entities) |
|
403 | - ->getQuery()->getResult(); |
|
404 | - foreach ($changes as $change) { |
|
405 | - $this->deletedChanges[$change->getHierarchyEntity()->getId()][$ranking |
|
406 | - ->getId()][$change->getPlayer()->getPlayerId()] = $change; |
|
407 | - $this->entityManager->remove($change); |
|
408 | - } |
|
394 | + //delete old changes |
|
395 | + $queryBuilder = $this->entityManager->createQueryBuilder(); |
|
396 | + /** @var RankingSystemChange[] $changes */ |
|
397 | + $changes = $queryBuilder |
|
398 | + ->from(RankingSystemChange::class, 'c') |
|
399 | + ->select('c') |
|
400 | + ->where($queryBuilder->expr()->eq('c.rankingSystem', $ranking)) |
|
401 | + ->where($queryBuilder->expr()->in('c.hierarchyEntity', ':entities')) |
|
402 | + ->setParameter('entities', $entities) |
|
403 | + ->getQuery()->getResult(); |
|
404 | + foreach ($changes as $change) { |
|
405 | + $this->deletedChanges[$change->getHierarchyEntity()->getId()][$ranking |
|
406 | + ->getId()][$change->getPlayer()->getPlayerId()] = $change; |
|
407 | + $this->entityManager->remove($change); |
|
408 | + } |
|
409 | 409 | } |
410 | 410 | |
411 | 411 | /** |
@@ -417,26 +417,26 @@ discard block |
||
417 | 417 | * successors do not have the ranking in its ranking systems |
418 | 418 | */ |
419 | 419 | private function getEarliestEntityInfluence(RankingSystem $ranking, TournamentHierarchyInterface $entity, |
420 | - bool $parentIsRanked): ?\DateTime |
|
420 | + bool $parentIsRanked): ?\DateTime |
|
421 | 421 | { |
422 | - $this->timeService->clearTimes(); |
|
423 | - $entityIsRanked = $parentIsRanked || $entity->getRankingSystems()->containsKey($ranking->getId()); |
|
424 | - if ($entity->getLevel() === $this->getLevel()) { |
|
425 | - if ($entityIsRanked) { |
|
426 | - return $this->timeService->getTime($entity); |
|
427 | - } else { |
|
428 | - return null; |
|
429 | - } |
|
430 | - } |
|
431 | - $result = null; |
|
432 | - |
|
433 | - foreach ($entity->getChildren() as $child) { |
|
434 | - $earliest = $this->getEarliestEntityInfluence($ranking, $child, $entityIsRanked); |
|
435 | - if ($result === null || ($earliest !== null && $earliest < $result)) { |
|
436 | - $result = $earliest; |
|
437 | - } |
|
438 | - } |
|
439 | - return $result; |
|
422 | + $this->timeService->clearTimes(); |
|
423 | + $entityIsRanked = $parentIsRanked || $entity->getRankingSystems()->containsKey($ranking->getId()); |
|
424 | + if ($entity->getLevel() === $this->getLevel()) { |
|
425 | + if ($entityIsRanked) { |
|
426 | + return $this->timeService->getTime($entity); |
|
427 | + } else { |
|
428 | + return null; |
|
429 | + } |
|
430 | + } |
|
431 | + $result = null; |
|
432 | + |
|
433 | + foreach ($entity->getChildren() as $child) { |
|
434 | + $earliest = $this->getEarliestEntityInfluence($ranking, $child, $entityIsRanked); |
|
435 | + if ($result === null || ($earliest !== null && $earliest < $result)) { |
|
436 | + $result = $earliest; |
|
437 | + } |
|
438 | + } |
|
439 | + return $result; |
|
440 | 440 | } |
441 | 441 | |
442 | 442 | /** @noinspection PhpDocMissingThrowsInspection */ //PropertyNotExistingException |
@@ -450,35 +450,35 @@ discard block |
||
450 | 450 | * @param int $nextEntityIndex the first index in the entities list to consider |
451 | 451 | */ |
452 | 452 | private function recomputeBasedOn(RankingSystemList $list, RankingSystemList $base, array $entities, |
453 | - int &$nextEntityIndex) |
|
453 | + int &$nextEntityIndex) |
|
454 | 454 | { |
455 | - $this->cloneInto($list, $base); |
|
456 | - for ($i = $nextEntityIndex; $i < count($entities); $i++) { |
|
457 | - $time = $this->timeService->getTime($entities[$i]); |
|
458 | - if (!$list->isCurrent() && $time > $list->getLastEntryTime()) { |
|
459 | - $nextEntityIndex = $i; |
|
460 | - return; |
|
461 | - } |
|
462 | - $changes = $this->getChanges($entities[$nextEntityIndex], $list); |
|
463 | - foreach ($changes as $change) { |
|
464 | - $entry = $this->getOrCreateRankingSystemListEntry($list, $change->getPlayer()); |
|
465 | - $entry->setNumberRankedEntities($entry->getNumberRankedEntities() + 1); |
|
466 | - $pointsAfterwards = $entry->getPoints() + $change->getPointsChange(); |
|
467 | - $entry->setPoints($pointsAfterwards); |
|
468 | - $change->setPointsAfterwards($pointsAfterwards); |
|
469 | - //apply further changes |
|
470 | - foreach ($this->getAdditionalFields() as $field => $value) { |
|
471 | - // PropertyNotExistingException => entry and field have exactly the static properties from getAdditionalFields |
|
472 | - /** @noinspection PhpUnhandledExceptionInspection */ |
|
473 | - $entry->setProperty($field, $entry->getProperty($field) + $change->getProperty($field)); |
|
474 | - } |
|
475 | - if ($time > $list->getLastEntryTime()) { |
|
476 | - $list->setLastEntryTime($time); |
|
477 | - } |
|
478 | - $this->entityManager->persist($change); |
|
479 | - } |
|
480 | - } |
|
481 | - $nextEntityIndex = count($entities); |
|
455 | + $this->cloneInto($list, $base); |
|
456 | + for ($i = $nextEntityIndex; $i < count($entities); $i++) { |
|
457 | + $time = $this->timeService->getTime($entities[$i]); |
|
458 | + if (!$list->isCurrent() && $time > $list->getLastEntryTime()) { |
|
459 | + $nextEntityIndex = $i; |
|
460 | + return; |
|
461 | + } |
|
462 | + $changes = $this->getChanges($entities[$nextEntityIndex], $list); |
|
463 | + foreach ($changes as $change) { |
|
464 | + $entry = $this->getOrCreateRankingSystemListEntry($list, $change->getPlayer()); |
|
465 | + $entry->setNumberRankedEntities($entry->getNumberRankedEntities() + 1); |
|
466 | + $pointsAfterwards = $entry->getPoints() + $change->getPointsChange(); |
|
467 | + $entry->setPoints($pointsAfterwards); |
|
468 | + $change->setPointsAfterwards($pointsAfterwards); |
|
469 | + //apply further changes |
|
470 | + foreach ($this->getAdditionalFields() as $field => $value) { |
|
471 | + // PropertyNotExistingException => entry and field have exactly the static properties from getAdditionalFields |
|
472 | + /** @noinspection PhpUnhandledExceptionInspection */ |
|
473 | + $entry->setProperty($field, $entry->getProperty($field) + $change->getProperty($field)); |
|
474 | + } |
|
475 | + if ($time > $list->getLastEntryTime()) { |
|
476 | + $list->setLastEntryTime($time); |
|
477 | + } |
|
478 | + $this->entityManager->persist($change); |
|
479 | + } |
|
480 | + } |
|
481 | + $nextEntityIndex = count($entities); |
|
482 | 482 | } |
483 | 483 | //</editor-fold desc="Private Methods"> |
484 | 484 | } |
485 | 485 | \ No newline at end of file |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | /** |
4 | 4 | * Created by PhpStorm. |
5 | 5 | * User: benedikt |
@@ -66,8 +66,8 @@ discard block |
||
66 | 66 | * @param TimeServiceInterface $timeService |
67 | 67 | * @param EntityComparerInterface $entityComparer |
68 | 68 | */ |
69 | - public function __construct(EntityManagerInterface $entityManager, TimeServiceInterface $timeService, |
|
70 | - EntityComparerInterface $entityComparer) |
|
69 | + public function __construct( EntityManagerInterface $entityManager, TimeServiceInterface $timeService, |
|
70 | + EntityComparerInterface $entityComparer ) |
|
71 | 71 | { |
72 | 72 | $this->entityManager = $entityManager; |
73 | 73 | $this->timeService = $timeService; |
@@ -82,7 +82,7 @@ discard block |
||
82 | 82 | /** |
83 | 83 | * @inheritDoc |
84 | 84 | */ |
85 | - public function getEarliestInfluence(RankingSystem $ranking, Tournament $tournament): ?\DateTime |
|
85 | + public function getEarliestInfluence( RankingSystem $ranking, Tournament $tournament ): ?\DateTime |
|
86 | 86 | { |
87 | 87 | return $this->getEarliestEntityInfluence($ranking, $tournament, false); |
88 | 88 | } |
@@ -90,15 +90,15 @@ discard block |
||
90 | 90 | /** |
91 | 91 | * @inheritdoc |
92 | 92 | */ |
93 | - public function updateRankingForTournament(RankingSystem $ranking, Tournament $tournament, |
|
94 | - ?\DateTime $oldInfluence) |
|
93 | + public function updateRankingForTournament( RankingSystem $ranking, Tournament $tournament, |
|
94 | + ?\DateTime $oldInfluence ) |
|
95 | 95 | { |
96 | 96 | $earliestInfluence = $this->getEarliestInfluence($ranking, $tournament); |
97 | - if ($oldInfluence !== null && |
|
98 | - ($earliestInfluence === null || $oldInfluence < $earliestInfluence)) { |
|
97 | + if ( $oldInfluence !== null && |
|
98 | + ($earliestInfluence === null || $oldInfluence < $earliestInfluence) ) { |
|
99 | 99 | $earliestInfluence = $oldInfluence; |
100 | 100 | } |
101 | - if ($earliestInfluence !== null) { |
|
101 | + if ( $earliestInfluence !== null ) { |
|
102 | 102 | $this->updateRankingFrom($ranking, $earliestInfluence); |
103 | 103 | } |
104 | 104 | } |
@@ -106,10 +106,10 @@ discard block |
||
106 | 106 | /** |
107 | 107 | * @inheritDoc |
108 | 108 | */ |
109 | - public function updateRankingFrom(RankingSystem $ranking, \DateTime $from) |
|
109 | + public function updateRankingFrom( RankingSystem $ranking, \DateTime $from ) |
|
110 | 110 | { |
111 | 111 | // can only be called once per ranking system!!! |
112 | - if (array_key_exists($ranking->getId(), $this->updateRankingCalls)) { |
|
112 | + if ( array_key_exists($ranking->getId(), $this->updateRankingCalls) ) { |
|
113 | 113 | throw new PreconditionFailedException(); |
114 | 114 | } |
115 | 115 | $this->updateRankingCalls[$ranking->getId()] = $ranking; |
@@ -122,40 +122,40 @@ discard block |
||
122 | 122 | $lastReusable = null; |
123 | 123 | $toUpdate = []; |
124 | 124 | |
125 | - foreach ($lists as $list) { |
|
126 | - if ($list->isCurrent()) { |
|
125 | + foreach ( $lists as $list ) { |
|
126 | + if ( $list->isCurrent() ) { |
|
127 | 127 | $current = $list; |
128 | - } else if ($list->getLastEntryTime() >= $from) { |
|
128 | + } else if ( $list->getLastEntryTime() >= $from ) { |
|
129 | 129 | $toUpdate[] = $list; |
130 | - } else if ($lastReusable === null || $list->getLastEntryTime() > $lastReusable->getLastEntryTime()) { |
|
130 | + } else if ( $lastReusable === null || $list->getLastEntryTime() > $lastReusable->getLastEntryTime() ) { |
|
131 | 131 | $lastReusable = $list; |
132 | 132 | } |
133 | 133 | } |
134 | 134 | |
135 | - if ($lastReusable === null) { |
|
135 | + if ( $lastReusable === null ) { |
|
136 | 136 | $lastReusable = new RankingSystemList(); |
137 | 137 | } |
138 | 138 | |
139 | - usort($toUpdate, function (RankingSystemList $list1, RankingSystemList $list2) { |
|
139 | + usort($toUpdate, function( RankingSystemList $list1, RankingSystemList $list2 ) { |
|
140 | 140 | return $list1->getLastEntryTime() <=> $list2->getLastEntryTime(); |
141 | 141 | }); |
142 | 142 | |
143 | 143 | $entities = $this->getEntities($ranking, $lastReusable->getLastEntryTime()); |
144 | 144 | //sort entities |
145 | 145 | $this->timeService->clearTimes(); |
146 | - usort($entities, function ($entity1, $entity2) { |
|
146 | + usort($entities, function( $entity1, $entity2 ) { |
|
147 | 147 | return $this->entityComparer->compareEntities($entity1, $entity2); |
148 | 148 | }); |
149 | 149 | |
150 | 150 | $this->deleteOldChanges($ranking, $entities); |
151 | 151 | |
152 | 152 | $nextEntityIndex = 0; |
153 | - foreach ($toUpdate as $list) { |
|
153 | + foreach ( $toUpdate as $list ) { |
|
154 | 154 | $this->recomputeBasedOn($list, $lastReusable, $entities, $nextEntityIndex); |
155 | 155 | $lastReusable = $list; |
156 | 156 | } |
157 | 157 | |
158 | - if ($current === null) { |
|
158 | + if ( $current === null ) { |
|
159 | 159 | $current = new RankingSystemList(); |
160 | 160 | $current->setCurrent(true); |
161 | 161 | $this->entityManager->persist($current); |
@@ -171,13 +171,13 @@ discard block |
||
171 | 171 | * @param RankingSystemListEntry[] $entries |
172 | 172 | * @return float |
173 | 173 | */ |
174 | - protected final function getAverage(array $entries): float |
|
174 | + protected final function getAverage( array $entries ): float |
|
175 | 175 | { |
176 | 176 | $sum = 0.0; |
177 | - foreach ($entries as $entry) { |
|
177 | + foreach ( $entries as $entry ) { |
|
178 | 178 | $sum += $entry->getPoints(); |
179 | 179 | } |
180 | - if (count($entries) === 0) { |
|
180 | + if ( count($entries) === 0 ) { |
|
181 | 181 | return 0.0; |
182 | 182 | } else { |
183 | 183 | return $sum / count($entries); |
@@ -191,7 +191,7 @@ discard block |
||
191 | 191 | * time value exactly $from |
192 | 192 | * @return TournamentHierarchyEntity[] |
193 | 193 | */ |
194 | - protected final function getEntities(RankingSystem $ranking, \DateTime $from): array |
|
194 | + protected final function getEntities( RankingSystem $ranking, \DateTime $from ): array |
|
195 | 195 | { |
196 | 196 | $query = $this->getEntitiesQueryBuilder($ranking, $from); |
197 | 197 | return $query->getQuery()->getResult(); |
@@ -210,10 +210,10 @@ discard block |
||
210 | 210 | * @param RankingSystemList $list |
211 | 211 | * @return RankingSystemListEntry[] $entries |
212 | 212 | */ |
213 | - protected final function getEntriesOfPlayers(Collection $players, RankingSystemList $list): array |
|
213 | + protected final function getEntriesOfPlayers( Collection $players, RankingSystemList $list ): array |
|
214 | 214 | { |
215 | 215 | $result = []; |
216 | - foreach ($players as $player) { |
|
216 | + foreach ( $players as $player ) { |
|
217 | 217 | $result[] = $this->getOrCreateRankingSystemListEntry($list, $player); |
218 | 218 | } |
219 | 219 | return $result; |
@@ -227,35 +227,35 @@ discard block |
||
227 | 227 | * @param Player $player the player to search for |
228 | 228 | * @return RankingSystemChange the found or newly created ranking system change |
229 | 229 | */ |
230 | - protected final function getOrCreateChange(TournamentHierarchyEntity $entity, RankingSystem $ranking, |
|
231 | - Player $player) |
|
230 | + protected final function getOrCreateChange( TournamentHierarchyEntity $entity, RankingSystem $ranking, |
|
231 | + Player $player ) |
|
232 | 232 | { |
233 | 233 | $key1 = $entity->getId(); |
234 | 234 | $key2 = $ranking->getId(); |
235 | 235 | $key3 = $player->getPlayerId(); |
236 | - if (!array_key_exists($key1, $this->changes) || !array_key_exists($key2, $this->changes[$key1]) || |
|
237 | - !array_key_exists($key3, $this->changes[$key1][$key2])) { |
|
236 | + if ( !array_key_exists($key1, $this->changes) || !array_key_exists($key2, $this->changes[$key1]) || |
|
237 | + !array_key_exists($key3, $this->changes[$key1][$key2]) ) { |
|
238 | 238 | /** @var RankingSystemChange[] $changes */ |
239 | 239 | $changes = $this->entityManager->getRepository(RankingSystemChange::class)->findBy( |
240 | 240 | ['hierarchyEntity' => $entity]); |
241 | 241 | $this->changes[$key1] = []; |
242 | - foreach ($changes as $change) { |
|
242 | + foreach ( $changes as $change ) { |
|
243 | 243 | |
244 | 244 | $newKey2 = $change->getRankingSystem()->getId(); |
245 | 245 | $newKey3 = $change->getPlayer()->getPlayerId(); |
246 | - if (!array_key_exists($key1, $this->deletedChanges) || !array_key_exists($key2, $this->deletedChanges[$key1]) || |
|
247 | - !array_key_exists($key3, $this->deletedChanges[$key1][$key2])) { |
|
248 | - if (!array_key_exists($newKey2, $this->changes)) { |
|
246 | + if ( !array_key_exists($key1, $this->deletedChanges) || !array_key_exists($key2, $this->deletedChanges[$key1]) || |
|
247 | + !array_key_exists($key3, $this->deletedChanges[$key1][$key2]) ) { |
|
248 | + if ( !array_key_exists($newKey2, $this->changes) ) { |
|
249 | 249 | $this->changes[$key1][$newKey2] = []; |
250 | 250 | } |
251 | 251 | $this->changes[$key1][$newKey2][$newKey3] = $change; |
252 | 252 | } |
253 | 253 | } |
254 | 254 | } |
255 | - if (!array_key_exists($key2, $this->changes[$key1]) || !array_key_exists($key3, $this->changes[$key1][$key2])) { |
|
255 | + if ( !array_key_exists($key2, $this->changes[$key1]) || !array_key_exists($key3, $this->changes[$key1][$key2]) ) { |
|
256 | 256 | //create new change |
257 | 257 | $change = new RankingSystemChange(array_keys($this->getAdditionalFields())); |
258 | - foreach ($this->getAdditionalFields() as $field => $value) { |
|
258 | + foreach ( $this->getAdditionalFields() as $field => $value ) { |
|
259 | 259 | // PropertyNotExistingException => we know for sure that the property exists (see 2 lines above) |
260 | 260 | /** @noinspection PhpUnhandledExceptionInspection */ |
261 | 261 | $change->setProperty($field, 0); |
@@ -265,8 +265,8 @@ discard block |
||
265 | 265 | $change->setPlayer($player); |
266 | 266 | $this->entityManager->persist($change); |
267 | 267 | $this->changes[$key1][$key2][$key3] = $change; |
268 | - if (array_key_exists($key1, $this->deletedChanges) && array_key_exists($key2, $this->deletedChanges[$key1]) && |
|
269 | - array_key_exists($key3, $this->deletedChanges[$key1][$key2])) { |
|
268 | + if ( array_key_exists($key1, $this->deletedChanges) && array_key_exists($key2, $this->deletedChanges[$key1]) && |
|
269 | + array_key_exists($key3, $this->deletedChanges[$key1][$key2]) ) { |
|
270 | 270 | unset($this->deletedChanges[$key1][$key2][$key3]); |
271 | 271 | } |
272 | 272 | } |
@@ -279,16 +279,16 @@ discard block |
||
279 | 279 | * @param Player $player the player to search for |
280 | 280 | * @return RankingSystemListEntry the found or the new entry |
281 | 281 | */ |
282 | - protected final function getOrCreateRankingSystemListEntry(RankingSystemList $list, |
|
283 | - Player $player): RankingSystemListEntry |
|
282 | + protected final function getOrCreateRankingSystemListEntry( RankingSystemList $list, |
|
283 | + Player $player ): RankingSystemListEntry |
|
284 | 284 | { |
285 | 285 | $playerId = $player->getPlayerId(); |
286 | - if (!$list->getEntries()->containsKey($playerId)) { |
|
286 | + if ( !$list->getEntries()->containsKey($playerId) ) { |
|
287 | 287 | $entry = new RankingSystemListEntry(array_keys($this->getAdditionalFields())); |
288 | 288 | $entry->setPoints($this->startPoints()); |
289 | 289 | $entry->setPlayer($player); |
290 | 290 | $entry->setRankingSystemList($list); |
291 | - foreach ($this->getAdditionalFields() as $field => $value) { |
|
291 | + foreach ( $this->getAdditionalFields() as $field => $value ) { |
|
292 | 292 | // PropertyNotExistingException => we know for sure that the property exists (see 2 lines above) |
293 | 293 | /** @noinspection PhpUnhandledExceptionInspection */ |
294 | 294 | $entry->setProperty($field, $value); |
@@ -313,7 +313,7 @@ discard block |
||
313 | 313 | * @param RankingSystemList $list the list for which to compute the ranking changes |
314 | 314 | * @return RankingSystemChange[] the changes |
315 | 315 | */ |
316 | - protected abstract function getChanges(TournamentHierarchyEntity $entity, RankingSystemList $list): array; |
|
316 | + protected abstract function getChanges( TournamentHierarchyEntity $entity, RankingSystemList $list ): array; |
|
317 | 317 | |
318 | 318 | /** |
319 | 319 | * Gets a query for getting the relevant entities for updating |
@@ -322,8 +322,8 @@ discard block |
||
322 | 322 | * time value exactly $from |
323 | 323 | * @return QueryBuilder |
324 | 324 | */ |
325 | - protected abstract function getEntitiesQueryBuilder(RankingSystem $ranking, |
|
326 | - \DateTime $from): QueryBuilder; |
|
325 | + protected abstract function getEntitiesQueryBuilder( RankingSystem $ranking, |
|
326 | + \DateTime $from ): QueryBuilder; |
|
327 | 327 | |
328 | 328 | /** |
329 | 329 | * Gets the level of the ranking system service (see Level Enum) |
@@ -348,7 +348,7 @@ discard block |
||
348 | 348 | * @param RankingSystemList $list the ranking list to change |
349 | 349 | * @param RankingSystemList $base the ranking list to use as base list, this doesn't get changed |
350 | 350 | */ |
351 | - private function cloneInto(RankingSystemList $list, RankingSystemList $base) |
|
351 | + private function cloneInto( RankingSystemList $list, RankingSystemList $base ) |
|
352 | 352 | { |
353 | 353 | /*//first remove all entries from list |
354 | 354 | foreach($list->getEntries()->toArray() as $entry) |
@@ -359,10 +359,10 @@ discard block |
||
359 | 359 | |
360 | 360 | $clonedPlayers = []; |
361 | 361 | |
362 | - foreach ($base->getEntries() as $entry) { |
|
362 | + foreach ( $base->getEntries() as $entry ) { |
|
363 | 363 | $playerId = $entry->getPlayer()->getPlayerId(); |
364 | 364 | $clonedPlayers[$playerId] = true; |
365 | - if (!$list->getEntries()->containsKey($playerId)) { |
|
365 | + if ( !$list->getEntries()->containsKey($playerId) ) { |
|
366 | 366 | //create new entry |
367 | 367 | $clone = new RankingSystemListEntry([]); |
368 | 368 | $clone->cloneSubClassDataFrom($entry); |
@@ -376,8 +376,8 @@ discard block |
||
376 | 376 | } |
377 | 377 | |
378 | 378 | //remove all unused entries from list |
379 | - foreach ($list->getEntries()->toArray() as $playerId => $entry) { |
|
380 | - if (!array_key_exists($playerId, $clonedPlayers)) { |
|
379 | + foreach ( $list->getEntries()->toArray() as $playerId => $entry ) { |
|
380 | + if ( !array_key_exists($playerId, $clonedPlayers) ) { |
|
381 | 381 | $list->getEntries()->removeElement($entry); |
382 | 382 | $this->entityManager->remove($entry); |
383 | 383 | } |
@@ -389,7 +389,7 @@ discard block |
||
389 | 389 | * @param RankingSystem $ranking |
390 | 390 | * @param TournamentHierarchyEntity[] $entities |
391 | 391 | */ |
392 | - private function deleteOldChanges(RankingSystem $ranking, array $entities) |
|
392 | + private function deleteOldChanges( RankingSystem $ranking, array $entities ) |
|
393 | 393 | { |
394 | 394 | //delete old changes |
395 | 395 | $queryBuilder = $this->entityManager->createQueryBuilder(); |
@@ -401,7 +401,7 @@ discard block |
||
401 | 401 | ->where($queryBuilder->expr()->in('c.hierarchyEntity', ':entities')) |
402 | 402 | ->setParameter('entities', $entities) |
403 | 403 | ->getQuery()->getResult(); |
404 | - foreach ($changes as $change) { |
|
404 | + foreach ( $changes as $change ) { |
|
405 | 405 | $this->deletedChanges[$change->getHierarchyEntity()->getId()][$ranking |
406 | 406 | ->getId()][$change->getPlayer()->getPlayerId()] = $change; |
407 | 407 | $this->entityManager->remove($change); |
@@ -416,13 +416,13 @@ discard block |
||
416 | 416 | * @return \DateTime|null the earliest influence or null if $parentIsRanked is false and the entity and all its |
417 | 417 | * successors do not have the ranking in its ranking systems |
418 | 418 | */ |
419 | - private function getEarliestEntityInfluence(RankingSystem $ranking, TournamentHierarchyInterface $entity, |
|
420 | - bool $parentIsRanked): ?\DateTime |
|
419 | + private function getEarliestEntityInfluence( RankingSystem $ranking, TournamentHierarchyInterface $entity, |
|
420 | + bool $parentIsRanked ): ?\DateTime |
|
421 | 421 | { |
422 | 422 | $this->timeService->clearTimes(); |
423 | 423 | $entityIsRanked = $parentIsRanked || $entity->getRankingSystems()->containsKey($ranking->getId()); |
424 | - if ($entity->getLevel() === $this->getLevel()) { |
|
425 | - if ($entityIsRanked) { |
|
424 | + if ( $entity->getLevel() === $this->getLevel() ) { |
|
425 | + if ( $entityIsRanked ) { |
|
426 | 426 | return $this->timeService->getTime($entity); |
427 | 427 | } else { |
428 | 428 | return null; |
@@ -430,9 +430,9 @@ discard block |
||
430 | 430 | } |
431 | 431 | $result = null; |
432 | 432 | |
433 | - foreach ($entity->getChildren() as $child) { |
|
433 | + foreach ( $entity->getChildren() as $child ) { |
|
434 | 434 | $earliest = $this->getEarliestEntityInfluence($ranking, $child, $entityIsRanked); |
435 | - if ($result === null || ($earliest !== null && $earliest < $result)) { |
|
435 | + if ( $result === null || ($earliest !== null && $earliest < $result) ) { |
|
436 | 436 | $result = $earliest; |
437 | 437 | } |
438 | 438 | } |
@@ -449,30 +449,30 @@ discard block |
||
449 | 449 | * @param TournamentHierarchyEntity[] $entities the list of entities to use for the computation |
450 | 450 | * @param int $nextEntityIndex the first index in the entities list to consider |
451 | 451 | */ |
452 | - private function recomputeBasedOn(RankingSystemList $list, RankingSystemList $base, array $entities, |
|
453 | - int &$nextEntityIndex) |
|
452 | + private function recomputeBasedOn( RankingSystemList $list, RankingSystemList $base, array $entities, |
|
453 | + int &$nextEntityIndex ) |
|
454 | 454 | { |
455 | 455 | $this->cloneInto($list, $base); |
456 | - for ($i = $nextEntityIndex; $i < count($entities); $i++) { |
|
456 | + for ( $i = $nextEntityIndex; $i < count($entities); $i++ ) { |
|
457 | 457 | $time = $this->timeService->getTime($entities[$i]); |
458 | - if (!$list->isCurrent() && $time > $list->getLastEntryTime()) { |
|
458 | + if ( !$list->isCurrent() && $time > $list->getLastEntryTime() ) { |
|
459 | 459 | $nextEntityIndex = $i; |
460 | 460 | return; |
461 | 461 | } |
462 | 462 | $changes = $this->getChanges($entities[$nextEntityIndex], $list); |
463 | - foreach ($changes as $change) { |
|
463 | + foreach ( $changes as $change ) { |
|
464 | 464 | $entry = $this->getOrCreateRankingSystemListEntry($list, $change->getPlayer()); |
465 | 465 | $entry->setNumberRankedEntities($entry->getNumberRankedEntities() + 1); |
466 | 466 | $pointsAfterwards = $entry->getPoints() + $change->getPointsChange(); |
467 | 467 | $entry->setPoints($pointsAfterwards); |
468 | 468 | $change->setPointsAfterwards($pointsAfterwards); |
469 | 469 | //apply further changes |
470 | - foreach ($this->getAdditionalFields() as $field => $value) { |
|
470 | + foreach ( $this->getAdditionalFields() as $field => $value ) { |
|
471 | 471 | // PropertyNotExistingException => entry and field have exactly the static properties from getAdditionalFields |
472 | 472 | /** @noinspection PhpUnhandledExceptionInspection */ |
473 | 473 | $entry->setProperty($field, $entry->getProperty($field) + $change->getProperty($field)); |
474 | 474 | } |
475 | - if ($time > $list->getLastEntryTime()) { |
|
475 | + if ( $time > $list->getLastEntryTime() ) { |
|
476 | 476 | $list->setLastEntryTime($time); |
477 | 477 | } |
478 | 478 | $this->entityManager->persist($change); |
@@ -29,8 +29,7 @@ discard block |
||
29 | 29 | * @package Tfboe\FmLib\Service\RankingSystemService |
30 | 30 | * @SuppressWarnings(PHPMD) TODO: refactor this class and remove suppress warnings |
31 | 31 | */ |
32 | -abstract class RankingSystemService implements RankingSystemInterface |
|
33 | -{ |
|
32 | +abstract class RankingSystemService implements RankingSystemInterface { |
|
34 | 33 | //<editor-fold desc="Fields"> |
35 | 34 | /** @var EntityManagerInterface */ |
36 | 35 | private $entityManager; |
@@ -67,8 +66,7 @@ discard block |
||
67 | 66 | * @param EntityComparerInterface $entityComparer |
68 | 67 | */ |
69 | 68 | public function __construct(EntityManagerInterface $entityManager, TimeServiceInterface $timeService, |
70 | - EntityComparerInterface $entityComparer) |
|
71 | - { |
|
69 | + EntityComparerInterface $entityComparer) { |
|
72 | 70 | $this->entityManager = $entityManager; |
73 | 71 | $this->timeService = $timeService; |
74 | 72 | $this->entityComparer = $entityComparer; |
@@ -91,8 +89,7 @@ discard block |
||
91 | 89 | * @inheritdoc |
92 | 90 | */ |
93 | 91 | public function updateRankingForTournament(RankingSystem $ranking, Tournament $tournament, |
94 | - ?\DateTime $oldInfluence) |
|
95 | - { |
|
92 | + ?\DateTime $oldInfluence) { |
|
96 | 93 | $earliestInfluence = $this->getEarliestInfluence($ranking, $tournament); |
97 | 94 | if ($oldInfluence !== null && |
98 | 95 | ($earliestInfluence === null || $oldInfluence < $earliestInfluence)) { |
@@ -106,8 +103,7 @@ discard block |
||
106 | 103 | /** |
107 | 104 | * @inheritDoc |
108 | 105 | */ |
109 | - public function updateRankingFrom(RankingSystem $ranking, \DateTime $from) |
|
110 | - { |
|
106 | + public function updateRankingFrom(RankingSystem $ranking, \DateTime $from) { |
|
111 | 107 | // can only be called once per ranking system!!! |
112 | 108 | if (array_key_exists($ranking->getId(), $this->updateRankingCalls)) { |
113 | 109 | throw new PreconditionFailedException(); |
@@ -228,8 +224,7 @@ discard block |
||
228 | 224 | * @return RankingSystemChange the found or newly created ranking system change |
229 | 225 | */ |
230 | 226 | protected final function getOrCreateChange(TournamentHierarchyEntity $entity, RankingSystem $ranking, |
231 | - Player $player) |
|
232 | - { |
|
227 | + Player $player) { |
|
233 | 228 | $key1 = $entity->getId(); |
234 | 229 | $key2 = $ranking->getId(); |
235 | 230 | $key3 = $player->getPlayerId(); |
@@ -348,8 +343,7 @@ discard block |
||
348 | 343 | * @param RankingSystemList $list the ranking list to change |
349 | 344 | * @param RankingSystemList $base the ranking list to use as base list, this doesn't get changed |
350 | 345 | */ |
351 | - private function cloneInto(RankingSystemList $list, RankingSystemList $base) |
|
352 | - { |
|
346 | + private function cloneInto(RankingSystemList $list, RankingSystemList $base) { |
|
353 | 347 | /*//first remove all entries from list |
354 | 348 | foreach($list->getEntries()->toArray() as $entry) |
355 | 349 | { |
@@ -389,8 +383,7 @@ discard block |
||
389 | 383 | * @param RankingSystem $ranking |
390 | 384 | * @param TournamentHierarchyEntity[] $entities |
391 | 385 | */ |
392 | - private function deleteOldChanges(RankingSystem $ranking, array $entities) |
|
393 | - { |
|
386 | + private function deleteOldChanges(RankingSystem $ranking, array $entities) { |
|
394 | 387 | //delete old changes |
395 | 388 | $queryBuilder = $this->entityManager->createQueryBuilder(); |
396 | 389 | /** @var RankingSystemChange[] $changes */ |
@@ -450,8 +443,7 @@ discard block |
||
450 | 443 | * @param int $nextEntityIndex the first index in the entities list to consider |
451 | 444 | */ |
452 | 445 | private function recomputeBasedOn(RankingSystemList $list, RankingSystemList $base, array $entities, |
453 | - int &$nextEntityIndex) |
|
454 | - { |
|
446 | + int &$nextEntityIndex) { |
|
455 | 447 | $this->cloneInto($list, $base); |
456 | 448 | for ($i = $nextEntityIndex; $i < count($entities); $i++) { |
457 | 449 | $time = $this->timeService->getTime($entities[$i]); |
@@ -47,7 +47,7 @@ discard block |
||
47 | 47 | |
48 | 48 | 'keys' => [ |
49 | 49 | |
50 | - /* |
|
50 | + /* |
|
51 | 51 | |-------------------------------------------------------------------------- |
52 | 52 | | Public Key |
53 | 53 | |-------------------------------------------------------------------------- |
@@ -58,9 +58,9 @@ discard block |
||
58 | 58 | | |
59 | 59 | */ |
60 | 60 | |
61 | - 'public' => env('JWT_PUBLIC_KEY'), |
|
61 | + 'public' => env('JWT_PUBLIC_KEY'), |
|
62 | 62 | |
63 | - /* |
|
63 | + /* |
|
64 | 64 | |-------------------------------------------------------------------------- |
65 | 65 | | Private Key |
66 | 66 | |-------------------------------------------------------------------------- |
@@ -71,9 +71,9 @@ discard block |
||
71 | 71 | | |
72 | 72 | */ |
73 | 73 | |
74 | - 'private' => env('JWT_PRIVATE_KEY'), |
|
74 | + 'private' => env('JWT_PRIVATE_KEY'), |
|
75 | 75 | |
76 | - /* |
|
76 | + /* |
|
77 | 77 | |-------------------------------------------------------------------------- |
78 | 78 | | Passphrase |
79 | 79 | |-------------------------------------------------------------------------- |
@@ -82,7 +82,7 @@ discard block |
||
82 | 82 | | |
83 | 83 | */ |
84 | 84 | |
85 | - 'passphrase' => env('JWT_PASSPHRASE'), |
|
85 | + 'passphrase' => env('JWT_PASSPHRASE'), |
|
86 | 86 | |
87 | 87 | ], |
88 | 88 | |
@@ -148,12 +148,12 @@ discard block |
||
148 | 148 | */ |
149 | 149 | |
150 | 150 | 'required_claims' => [ |
151 | - 'iss', |
|
152 | - 'iat', |
|
153 | - 'exp', |
|
154 | - 'nbf', |
|
155 | - 'sub', |
|
156 | - 'jti', |
|
151 | + 'iss', |
|
152 | + 'iat', |
|
153 | + 'exp', |
|
154 | + 'nbf', |
|
155 | + 'sub', |
|
156 | + 'jti', |
|
157 | 157 | ], |
158 | 158 | |
159 | 159 | /* |
@@ -170,8 +170,8 @@ discard block |
||
170 | 170 | */ |
171 | 171 | |
172 | 172 | 'persistent_claims' => [ |
173 | - // 'foo', |
|
174 | - // 'bar', |
|
173 | + // 'foo', |
|
174 | + // 'bar', |
|
175 | 175 | ], |
176 | 176 | |
177 | 177 | /* |
@@ -212,7 +212,7 @@ discard block |
||
212 | 212 | |
213 | 213 | 'providers' => [ |
214 | 214 | |
215 | - /* |
|
215 | + /* |
|
216 | 216 | |-------------------------------------------------------------------------- |
217 | 217 | | JWT Provider |
218 | 218 | |-------------------------------------------------------------------------- |
@@ -221,9 +221,9 @@ discard block |
||
221 | 221 | | |
222 | 222 | */ |
223 | 223 | |
224 | - 'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class, |
|
224 | + 'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class, |
|
225 | 225 | |
226 | - /* |
|
226 | + /* |
|
227 | 227 | |-------------------------------------------------------------------------- |
228 | 228 | | Authentication Provider |
229 | 229 | |-------------------------------------------------------------------------- |
@@ -232,9 +232,9 @@ discard block |
||
232 | 232 | | |
233 | 233 | */ |
234 | 234 | |
235 | - 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, |
|
235 | + 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, |
|
236 | 236 | |
237 | - /* |
|
237 | + /* |
|
238 | 238 | |-------------------------------------------------------------------------- |
239 | 239 | | Storage Provider |
240 | 240 | |-------------------------------------------------------------------------- |
@@ -243,7 +243,7 @@ discard block |
||
243 | 243 | | |
244 | 244 | */ |
245 | 245 | |
246 | - 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, |
|
246 | + 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, |
|
247 | 247 | |
248 | 248 | ], |
249 | 249 |
@@ -1,5 +1,5 @@ |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | |
4 | 4 | /* |
5 | 5 | * This file is part of jwt-auth. |
@@ -29,16 +29,16 @@ |
||
29 | 29 | | |
30 | 30 | */ |
31 | 31 | 'connections' => [ |
32 | - 'mysql' => [ |
|
33 | - 'driver' => 'mysql', |
|
34 | - 'host' => env('DB_HOST', 'localhost'), |
|
35 | - 'database' => env('DB_DATABASE'), |
|
36 | - 'username' => env('DB_USERNAME'), |
|
37 | - 'password' => env('DB_PASSWORD'), |
|
38 | - 'charset' => 'utf8', |
|
39 | - 'collation' => 'utf8_unicode_ci', |
|
40 | - 'prefix' => '', |
|
41 | - 'strict' => false, |
|
42 | - ] |
|
32 | + 'mysql' => [ |
|
33 | + 'driver' => 'mysql', |
|
34 | + 'host' => env('DB_HOST', 'localhost'), |
|
35 | + 'database' => env('DB_DATABASE'), |
|
36 | + 'username' => env('DB_USERNAME'), |
|
37 | + 'password' => env('DB_PASSWORD'), |
|
38 | + 'charset' => 'utf8', |
|
39 | + 'collation' => 'utf8_unicode_ci', |
|
40 | + 'prefix' => '', |
|
41 | + 'strict' => false, |
|
42 | + ] |
|
43 | 43 | ], |
44 | 44 | ]; |
45 | 45 | \ No newline at end of file |
@@ -1,5 +1,5 @@ |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | |
4 | 4 | return [ |
5 | 5 | /* |
@@ -3,22 +3,22 @@ |
||
3 | 3 | |
4 | 4 | return [ |
5 | 5 | 'defaults' => [ |
6 | - 'guard' => env('AUTH_GUARD', 'api'), |
|
7 | - 'passwords' => 'users', |
|
6 | + 'guard' => env('AUTH_GUARD', 'api'), |
|
7 | + 'passwords' => 'users', |
|
8 | 8 | ], |
9 | 9 | 'guards' => [ |
10 | - 'api' => [ |
|
11 | - 'driver' => 'jwt-auth', |
|
12 | - 'provider' => 'users' |
|
13 | - ], |
|
10 | + 'api' => [ |
|
11 | + 'driver' => 'jwt-auth', |
|
12 | + 'provider' => 'users' |
|
13 | + ], |
|
14 | 14 | |
15 | - // ... |
|
15 | + // ... |
|
16 | 16 | ], |
17 | 17 | |
18 | 18 | 'providers' => [ |
19 | - 'users' => [ |
|
20 | - 'driver' => 'doctrine', |
|
21 | - 'model' => \Tfboe\FmLib\Entity\User::class |
|
22 | - ], |
|
19 | + 'users' => [ |
|
20 | + 'driver' => 'doctrine', |
|
21 | + 'model' => \Tfboe\FmLib\Entity\User::class |
|
22 | + ], |
|
23 | 23 | ], |
24 | 24 | ]; |
25 | 25 | \ No newline at end of file |
@@ -1,5 +1,5 @@ |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | |
4 | 4 | return [ |
5 | 5 | 'defaults' => [ |
@@ -22,23 +22,23 @@ discard block |
||
22 | 22 | | |
23 | 23 | */ |
24 | 24 | 'managers' => [ |
25 | - 'default' => [ |
|
26 | - 'dev' => env('APP_DEBUG'), |
|
27 | - 'meta' => env('DOCTRINE_METADATA', 'annotations'), |
|
28 | - 'connection' => env('DB_CONNECTION', 'mysql'), |
|
29 | - 'namespaces' => [ |
|
30 | - 'Tfboe\FmLib\Entity' |
|
31 | - ], |
|
32 | - 'paths' => [ |
|
33 | - base_path('vendor/tfboe/fm-lib/src/Entity'), |
|
34 | - ], |
|
35 | - 'repository' => Doctrine\ORM\EntityRepository::class, |
|
36 | - 'proxies' => [ |
|
37 | - 'namespace' => false, |
|
38 | - 'path' => storage_path('proxies'), |
|
39 | - 'auto_generate' => env('DOCTRINE_PROXY_AUTOGENERATE', false) |
|
40 | - ], |
|
41 | - /* |
|
25 | + 'default' => [ |
|
26 | + 'dev' => env('APP_DEBUG'), |
|
27 | + 'meta' => env('DOCTRINE_METADATA', 'annotations'), |
|
28 | + 'connection' => env('DB_CONNECTION', 'mysql'), |
|
29 | + 'namespaces' => [ |
|
30 | + 'Tfboe\FmLib\Entity' |
|
31 | + ], |
|
32 | + 'paths' => [ |
|
33 | + base_path('vendor/tfboe/fm-lib/src/Entity'), |
|
34 | + ], |
|
35 | + 'repository' => Doctrine\ORM\EntityRepository::class, |
|
36 | + 'proxies' => [ |
|
37 | + 'namespace' => false, |
|
38 | + 'path' => storage_path('proxies'), |
|
39 | + 'auto_generate' => env('DOCTRINE_PROXY_AUTOGENERATE', false) |
|
40 | + ], |
|
41 | + /* |
|
42 | 42 | |-------------------------------------------------------------------------- |
43 | 43 | | Doctrine events |
44 | 44 | |-------------------------------------------------------------------------- |
@@ -47,12 +47,12 @@ discard block |
||
47 | 47 | | e.g. Doctrine\ORM\Events::onFlush |
48 | 48 | | |
49 | 49 | */ |
50 | - 'events' => [ |
|
51 | - 'listeners' => [], |
|
52 | - 'subscribers' => [] |
|
53 | - ], |
|
54 | - 'filters' => [], |
|
55 | - /* |
|
50 | + 'events' => [ |
|
51 | + 'listeners' => [], |
|
52 | + 'subscribers' => [] |
|
53 | + ], |
|
54 | + 'filters' => [], |
|
55 | + /* |
|
56 | 56 | |-------------------------------------------------------------------------- |
57 | 57 | | Doctrine mapping types |
58 | 58 | |-------------------------------------------------------------------------- |
@@ -75,10 +75,10 @@ discard block |
||
75 | 75 | | http://symfony.com/doc/current/cookbook/doctrine/dbal.html#registering-custom-mapping-types-in-the-schematool |
76 | 76 | |-------------------------------------------------------------------------- |
77 | 77 | */ |
78 | - 'mapping_types' => [ |
|
79 | - //'enum' => 'string' |
|
80 | - ] |
|
81 | - ] |
|
78 | + 'mapping_types' => [ |
|
79 | + //'enum' => 'string' |
|
80 | + ] |
|
81 | + ] |
|
82 | 82 | ], |
83 | 83 | /* |
84 | 84 | |-------------------------------------------------------------------------- |
@@ -92,16 +92,16 @@ discard block |
||
92 | 92 | | |
93 | 93 | */ |
94 | 94 | 'extensions' => [ |
95 | - //LaravelDoctrine\ORM\Extensions\TablePrefix\TablePrefixExtension::class, |
|
96 | - LaravelDoctrine\Extensions\Timestamps\TimestampableExtension::class, |
|
97 | - //LaravelDoctrine\Extensions\SoftDeletes\SoftDeleteableExtension::class, |
|
98 | - //LaravelDoctrine\Extensions\Sluggable\SluggableExtension::class, |
|
99 | - //LaravelDoctrine\Extensions\Sortable\SortableExtension::class, |
|
100 | - //LaravelDoctrine\Extensions\Tree\TreeExtension::class, |
|
101 | - //LaravelDoctrine\Extensions\Loggable\LoggableExtension::class, |
|
102 | - //LaravelDoctrine\Extensions\Blameable\BlameableExtension::class, |
|
103 | - //LaravelDoctrine\Extensions\IpTraceable\IpTraceableExtension::class, |
|
104 | - //LaravelDoctrine\Extensions\Translatable\TranslatableExtension::class |
|
95 | + //LaravelDoctrine\ORM\Extensions\TablePrefix\TablePrefixExtension::class, |
|
96 | + LaravelDoctrine\Extensions\Timestamps\TimestampableExtension::class, |
|
97 | + //LaravelDoctrine\Extensions\SoftDeletes\SoftDeleteableExtension::class, |
|
98 | + //LaravelDoctrine\Extensions\Sluggable\SluggableExtension::class, |
|
99 | + //LaravelDoctrine\Extensions\Sortable\SortableExtension::class, |
|
100 | + //LaravelDoctrine\Extensions\Tree\TreeExtension::class, |
|
101 | + //LaravelDoctrine\Extensions\Loggable\LoggableExtension::class, |
|
102 | + //LaravelDoctrine\Extensions\Blameable\BlameableExtension::class, |
|
103 | + //LaravelDoctrine\Extensions\IpTraceable\IpTraceableExtension::class, |
|
104 | + //LaravelDoctrine\Extensions\Translatable\TranslatableExtension::class |
|
105 | 105 | ], |
106 | 106 | /* |
107 | 107 | |-------------------------------------------------------------------------- |
@@ -112,7 +112,7 @@ discard block |
||
112 | 112 | |-------------------------------------------------------------------------- |
113 | 113 | */ |
114 | 114 | 'custom_types' => [ |
115 | - 'json' => LaravelDoctrine\ORM\Types\Json::class |
|
115 | + 'json' => LaravelDoctrine\ORM\Types\Json::class |
|
116 | 116 | ], |
117 | 117 | /* |
118 | 118 | |-------------------------------------------------------------------------- |
@@ -157,9 +157,9 @@ discard block |
||
157 | 157 | | |
158 | 158 | */ |
159 | 159 | 'cache' => [ |
160 | - 'default' => env('DOCTRINE_CACHE', 'array'), |
|
161 | - 'namespace' => null, |
|
162 | - 'second_level' => false, |
|
160 | + 'default' => env('DOCTRINE_CACHE', 'array'), |
|
161 | + 'namespace' => null, |
|
162 | + 'second_level' => false, |
|
163 | 163 | ], |
164 | 164 | /* |
165 | 165 | |-------------------------------------------------------------------------- |
@@ -172,7 +172,7 @@ discard block |
||
172 | 172 | | |
173 | 173 | */ |
174 | 174 | 'gedmo' => [ |
175 | - 'all_mappings' => false |
|
175 | + 'all_mappings' => false |
|
176 | 176 | ], |
177 | 177 | /* |
178 | 178 | |-------------------------------------------------------------------------- |
@@ -193,6 +193,6 @@ discard block |
||
193 | 193 | | |
194 | 194 | */ |
195 | 195 | 'notifications' => [ |
196 | - 'channel' => 'database' |
|
196 | + 'channel' => 'database' |
|
197 | 197 | ] |
198 | 198 | ]; |
@@ -1,5 +1,5 @@ |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | |
4 | 4 | return [ |
5 | 5 |
@@ -13,28 +13,28 @@ |
||
13 | 13 | | |
14 | 14 | */ |
15 | 15 | 'stores' => [ |
16 | - 'array' => [ |
|
17 | - 'driver' => 'array' |
|
18 | - ], |
|
19 | - 'apc' => [ |
|
20 | - 'driver' => 'apc', |
|
21 | - ], |
|
22 | - 'file' => [ |
|
23 | - 'driver' => 'file', |
|
24 | - 'path' => storage_path('framework/cache'), |
|
25 | - ], |
|
26 | - 'memcached' => [ |
|
27 | - 'driver' => 'memcached', |
|
28 | - 'servers' => [ |
|
29 | - [ |
|
30 | - 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, |
|
31 | - ], |
|
32 | - ], |
|
33 | - ], |
|
34 | - 'redis' => [ |
|
35 | - 'driver' => 'redis', |
|
36 | - 'connection' => 'default', |
|
37 | - ], |
|
16 | + 'array' => [ |
|
17 | + 'driver' => 'array' |
|
18 | + ], |
|
19 | + 'apc' => [ |
|
20 | + 'driver' => 'apc', |
|
21 | + ], |
|
22 | + 'file' => [ |
|
23 | + 'driver' => 'file', |
|
24 | + 'path' => storage_path('framework/cache'), |
|
25 | + ], |
|
26 | + 'memcached' => [ |
|
27 | + 'driver' => 'memcached', |
|
28 | + 'servers' => [ |
|
29 | + [ |
|
30 | + 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, |
|
31 | + ], |
|
32 | + ], |
|
33 | + ], |
|
34 | + 'redis' => [ |
|
35 | + 'driver' => 'redis', |
|
36 | + 'connection' => 'default', |
|
37 | + ], |
|
38 | 38 | ], |
39 | 39 | |
40 | 40 | 'default' => env('CACHE_DRIVER'), |
@@ -1,5 +1,5 @@ |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | |
4 | 4 | return [ |
5 | 5 | /* |
@@ -1,5 +1,5 @@ |
||
1 | 1 | <?php |
2 | -declare(strict_types=1); |
|
2 | +declare(strict_types = 1); |
|
3 | 3 | /** |
4 | 4 | * Created by PhpStorm. |
5 | 5 | * User: benedikt |
@@ -15,8 +15,7 @@ |
||
15 | 15 | * Class Version |
16 | 16 | * @package App\Claims |
17 | 17 | */ |
18 | -class Version extends Claim |
|
19 | -{ |
|
18 | +class Version extends Claim { |
|
20 | 19 | //<editor-fold desc="Fields"> |
21 | 20 | /** |
22 | 21 | * {@inheritdoc} |