Passed
Push — main ( 78cf6a...332f67 )
by N.
04:14
created

Hamta::hämta_system()   A

Complexity

Conditions 4
Paths 5

Size

Total Lines 30
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 4

Importance

Changes 0
Metric Value
cc 4
eloc 16
nc 5
nop 0
dl 0
loc 30
ccs 18
cts 18
cp 1
crap 4
rs 9.7333
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Klass Hamta.
5
 * @author Niklas Dougherty
6
 */
7
8
declare(strict_types=1);
9
10
namespace Tips\Moduler\System;
11
12
use PDO;
13
14
/**
15
 * Klass Hamta.
16
 * Hämta garderingar från databas och packa upp.
17
 */
18
class Hamta extends Preferenser {
19
	/**
20
	 * @var array<int, string[]> $reduktion
21
	 */
22
	public array $reduktion;
23
24
	/**
25
	 * Hämta garderingar från databas
26
	 */
27 20
	protected function hämta_system(): void {
28 20
		$garderingar = '';
29 20
		$andel_garderingar = '';
30 20
		$sats = $this->odds->spel->db->instans->prepare('SELECT `garderingar`, `andel_garderingar`
31 20
			FROM `system` WHERE `omgång`=:omgang AND `speltyp`=:speltyp AND `sekvens`=:sekvens LIMIT 1');
32 20
		$sats->bindValue(':omgang', $this->odds->spel->omgång, PDO::PARAM_INT);
33 20
		$sats->bindValue(':speltyp', $this->odds->spel->speltyp->value, PDO::PARAM_INT);
34 20
		$sats->bindValue(':sekvens', $this->odds->spel->sekvens, PDO::PARAM_INT);
35 20
		$sats->bindColumn('garderingar', $garderingar, PDO::PARAM_STR);
36 20
		$sats->bindColumn('andel_garderingar', $andel_garderingar, PDO::PARAM_STR);
37 20
		$sats->execute();
38
39
		/**
40
		 * Packa upp garderingar.
41
		 */
42 20
		if ($sats->fetch()) {
43 16
			if ($garderingar) {
44 16
				$this->garderingar = array_chunk(array_chunk(explode(',', $garderingar), 3), MATCHANTAL);
45
			}
46
47 16
			if ($andel_garderingar) {
48 16
				$this->andel_garderingar = array_map('intval', explode(',', $andel_garderingar));
49
			}
50
		}
51
52
		/**
53
		 * Extrahera halvgarderingar, spara reduktion.
54
		 */
55 20
		$this->extrahera_halvgarderingar();
56 20
		$this->spara_reduktion();
57
	}
58
59
	/**
60
	 * Extrahera halvgarderingar.
61
	 */
62 20
	private function extrahera_halvgarderingar(): void {
63 20
		foreach ($this->garderingar as $index => $gardering) {
64 20
			foreach ($gardering as $match) {
65
				/**
66
				 * Halvgardering = en ruta tom.
67
				 */
68 20
				if (count(array_unique($match)) > 1) {
69 16
					$this->antal_garderingar[$index]++;
70
				}
71
			}
72
73
			/**
74
			 * Villor för garderingar.
75
			 */
76 20
			if ($this->andel_garderingar[$index] > $this->antal_garderingar[$index]) {
77
				$this->antal_garderingar[$index] = $this->andel_garderingar[$index];
78
			}
79
		}
80
	}
81
82
	/**
83
	 * Spara reduktion.
84
	 */
85 20
	private function spara_reduktion(): void {
86 20
		$reduktion = $this->db_preferenser->hämta_preferens("system.reduktion");
87
88
		/**
89
		 * Finns reduktion i preferenser är allt väl.
90
		 * Annars sparas en tom datastruktur.
91
		 */
92 20
		match ($reduktion !== '') {
93 20
			true => $this->reduktion = array_chunk(explode(',', $reduktion), 3),
94
			false => $this->db_preferenser->spara_preferens(
0 ignored issues
show
Bug introduced by
Are you sure the usage of $this->db_preferenser->s...m\TOM_STRÄNGVEKTOR)))) targeting Tips\Klasser\DBPreferens...nOut::spara_preferens() seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
95
				"system.reduktion",
96
				implode(',', array_merge([], ...array_fill(0, MATCHANTAL, TOM_STRÄNGVEKTOR)))
97
			)
98 20
		};
99
	}
100
}
101