|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
/** |
|
4
|
|
|
* Klass Garderingar. |
|
5
|
|
|
* @author Niklas Dougherty |
|
6
|
|
|
*/ |
|
7
|
|
|
|
|
8
|
|
|
declare(strict_types=1); |
|
9
|
|
|
|
|
10
|
|
|
namespace Tips\Moduler\Ajax\SystemAjax; |
|
11
|
|
|
|
|
12
|
|
|
use PDO; |
|
13
|
|
|
use Tips\Klasser\Spel; |
|
14
|
|
|
use Tips\Klasser\DBPreferenser; |
|
15
|
|
|
use Tips\Moduler\System\Konstanter; |
|
16
|
|
|
|
|
17
|
|
|
/** |
|
18
|
|
|
* Klass Garderingar. |
|
19
|
|
|
*/ |
|
20
|
|
|
class Garderingar { |
|
21
|
|
|
use Konstanter; |
|
22
|
|
|
|
|
23
|
|
|
protected Spel $spel; |
|
24
|
|
|
protected DBPreferenser $db_preferenser; |
|
25
|
|
|
|
|
26
|
|
|
/** |
|
27
|
|
|
* Initiera. |
|
28
|
|
|
*/ |
|
29
|
1 |
|
public function __construct() { |
|
30
|
1 |
|
$this->spel = new Spel(); |
|
31
|
1 |
|
$this->db_preferenser = new DBPreferenser($this->spel->db); |
|
32
|
|
|
} |
|
33
|
|
|
|
|
34
|
|
|
/** |
|
35
|
|
|
* Spara garderingar. |
|
36
|
|
|
* Manuella garderingar som komplement till R-system. |
|
37
|
|
|
*/ |
|
38
|
1 |
|
protected function garderingar(): void { |
|
39
|
1 |
|
$antal_garderingar = array_fill(0, self::SYSTEM_MAX_ANTAL_FÄLT, 0); |
|
|
|
|
|
|
40
|
|
|
|
|
41
|
1 |
|
$garderingar = $this->parse($_REQUEST['garderingar']); |
|
42
|
1 |
|
$andel_garderingar = $this->parse($_REQUEST['andel_garderingar']); |
|
43
|
|
|
|
|
44
|
|
|
/** |
|
45
|
|
|
* Filtrera indata samt uppdatera andelar. |
|
46
|
|
|
*/ |
|
47
|
1 |
|
foreach ($garderingar as $index => $gardering) { |
|
48
|
1 |
|
$gardering = (array) filter_var_array((array) $gardering, FILTER_SANITIZE_SPECIAL_CHARS); |
|
49
|
1 |
|
$garderingar[$index] = $gardering; |
|
50
|
|
|
|
|
51
|
|
|
/** |
|
52
|
|
|
* Räkna upp antal om gardering finns. |
|
53
|
|
|
*/ |
|
54
|
1 |
|
foreach ($gardering as $gard) { |
|
55
|
1 |
|
if ($gard != TOM_STRÄNGVEKTOR) { |
|
56
|
1 |
|
$antal_garderingar[$index]++; |
|
57
|
|
|
} |
|
58
|
|
|
} |
|
59
|
|
|
|
|
60
|
1 |
|
$andel_garderingar[$index] = min($andel_garderingar[$index], $antal_garderingar[$index]); |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
/** |
|
64
|
|
|
* Spara garderingar. |
|
65
|
|
|
*/ |
|
66
|
1 |
|
$sats = $this->spel->db->instans->prepare("REPLACE INTO `system` |
|
67
|
|
|
(`omgång`, `speltyp`, `sekvens`, `garderingar`, `andel_garderingar`) |
|
68
|
1 |
|
VALUES (:omgang, :speltyp, :sekvens, :garderingar, :andel_garderingar)"); |
|
69
|
1 |
|
$sats->bindValue(':omgang', $this->spel->omgång, PDO::PARAM_INT); |
|
70
|
1 |
|
$sats->bindValue(':speltyp', $this->spel->speltyp->value, PDO::PARAM_INT); |
|
71
|
1 |
|
$sats->bindValue(':sekvens', $this->spel->sekvens, PDO::PARAM_INT); |
|
72
|
1 |
|
$sats->bindValue(':garderingar', implode(',', array_merge([], ...array_merge([], ...$garderingar))), PDO::PARAM_STR); |
|
73
|
1 |
|
$sats->bindValue(':andel_garderingar', implode(',', $andel_garderingar), PDO::PARAM_STR); |
|
74
|
1 |
|
echo $sats->execute(); |
|
75
|
|
|
} |
|
76
|
|
|
|
|
77
|
|
|
/** |
|
78
|
|
|
* Hantera extrahering av post-data. |
|
79
|
|
|
* @return mixed[] |
|
80
|
|
|
*/ |
|
81
|
1 |
|
private function parse(mixed $request): array { |
|
82
|
1 |
|
$request = is_string($request) ? $request : ''; |
|
83
|
1 |
|
parse_str($request, $resultat); |
|
84
|
1 |
|
return (array) array_values($resultat)[0]; |
|
85
|
|
|
} |
|
86
|
|
|
} |
|
87
|
|
|
|