Passed
Push — main ( 203f91...e5e48e )
by N.
03:27
created

Hamta::spara_reduktion()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1.0787

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 12
ccs 4
cts 7
cp 0.5714
crap 1.0787
rs 10
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 2
	protected function hämta_system(): void {
28 2
		$garderingar = '';
29 2
		$andel_garderingar = '';
30 2
		$sats = $this->odds->spel->db->instans->prepare('SELECT `garderingar`, `andel_garderingar`
31 2
			FROM `system` WHERE `omgång`=:omgang AND `speltyp`=:speltyp AND `sekvens`=:sekvens LIMIT 1');
32 2
		$sats->bindValue(':omgang', $this->odds->spel->omgång, PDO::PARAM_INT);
33 2
		$sats->bindValue(':speltyp', $this->odds->spel->speltyp->value, PDO::PARAM_INT);
34 2
		$sats->bindValue(':sekvens', $this->odds->spel->sekvens, PDO::PARAM_INT);
35 2
		$sats->bindColumn('garderingar', $garderingar, PDO::PARAM_STR);
36 2
		$sats->bindColumn('andel_garderingar', $andel_garderingar, PDO::PARAM_STR);
37 2
		$sats->execute();
38
39
		/**
40
		 * Packa upp garderingar.
41
		 */
42 2
		if ($sats->fetch()) {
43
			if ($garderingar) {
44
				$this->garderingar = array_chunk(array_chunk(explode(',', $garderingar), 3), MATCHANTAL);
45
			}
46
47
			if ($andel_garderingar) {
48
				$this->andel_garderingar = array_map('intval', explode(',', $andel_garderingar));
49
			}
50
		}
51
52
		/**
53
		 * Extrahera halvgarderingar.
54
		 */
55 2
		foreach ($this->garderingar as $index => $gardering) {
56 2
			foreach ($gardering as $tecken) {
57
				/**
58
				 * Halvgardering = en ruta tom.
59
				 */
60 2
				if (!in_array('', $tecken, true)) {
61
					$this->antal_garderingar[(int) $tecken]++;
62
				}
63
			}
64
65 2
			$this->antal_garderingar[$index] = min($this->andel_garderingar[$index], $this->antal_garderingar[$index]);
66
		}
67
68 2
		$this->spara_reduktion();
69
	}
70
71
	/**
72
	 * Spara reduktion.
73
	 */
74 2
	private function spara_reduktion(): void {
75 2
		$reduktion = $this->db_preferenser->hämta_preferens("system.reduktion");
76
77
		/**
78
		 * Finns reduktion i preferenser är allt väl.
79
		 * Annars sparas en tom datastruktur.
80
		 */
81 2
		match ($reduktion !== '') {
82 2
			true => $this->reduktion = array_chunk(explode(',', $reduktion), 3),
83
			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...
84
				"system.reduktion",
85
				implode(',', array_merge([], ...array_fill(0, MATCHANTAL, TOM_STRÄNGVEKTOR)))
86
			)
87 2
		};
88
	}
89
}
90