Passed
Push — main ( f1b4ad...6ccac6 )
by N.
04:46
created

Scheman::visa_scheman()   A

Complexity

Conditions 5
Paths 7

Size

Total Lines 47
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 5.1502

Importance

Changes 0
Metric Value
cc 5
eloc 20
nc 7
nop 0
dl 0
loc 47
ccs 18
cts 22
cp 0.8182
crap 5.1502
rs 9.2888
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Klass Scheman.
5
 * @author Niklas Dougherty
6
 */
7
8
declare(strict_types=1);
9
10
namespace Tips\Klasser;
11
12
use Tips\Klasser\Scheman\Hamta;
13
14
/**
15
 * Klass Scheman.
16
 * Förinställda konfigurationer för olika moduler med värden.
17
 */
18
final class Scheman extends Hamta {
19 1
	public function __construct(protected Tips $tips) {
20 1
		parent::__construct($this->tips);
21 1
		$this->hämta_scheman();
22 1
		$this->visa_scheman();
23
	}
24
25
	/**
26
	 * Visa scheman.
27
	 */
28 1
	public function visa_scheman(): void {
29 1
		$db_preferenser = new DBPreferenser($this->tips->spel->db);
30
31 1
		$aktiva_moduler = array_keys($this->tips->moduler->moduldata);
32
33 1
		$scheman = '';
34 1
		foreach ($this->scheman as $id => $schema) {
35 1
			$schemarad = '';
36 1
			$schemamoduler = [];
37
38 1
			$data = $this->extrahera_namn($schema['data']);
39
40
			/**
41
			 * Lägg till rader för aktiva moduler.
42
			 */
43 1
			foreach (explode(',', $schema['faktorer']) as $faktor) {
44 1
				[$modul, $attraktionsfaktor] = explode(':', $faktor);
45 1
				$schemamoduler[] = $modul;
46
47 1
				[$klass, $radera] = match (in_array($modul, $aktiva_moduler)) {
48
					true => ['', ''],
49 1
					false => [' class="streck radera"', '❌ ']
50 1
				};
51
52 1
				$schemarad .= $this->schemarad($modul, $attraktionsfaktor, $klass, $radera);
53
			}
54
55
			/**
56
			 * Lägg till rader för nyaktiverade moduler.
57
			 */
58 1
			foreach ($aktiva_moduler as $modul) {
59
				if (!in_array($modul, $schemamoduler)) {
60
					$attraktionsfaktor = $db_preferenser->hämta_preferens(mb_strtolower($modul) . '.attraktionsfaktor');
61
					$schemarad .= $this->schemarad($modul, $attraktionsfaktor);
62
				}
63
			}
64
65
			/**
66
			 * Lägg samman rader.
67
			 */
68 1
			$scheman .= $this->enskilt_schema($id, $data, $schemarad);
69
		}
70
71
			/**
72
			 * Eka ut tabeller.
73
			 */
74 1
		echo $this->schema($scheman);
75
	}
76
77
	/**
78
	 * Extrahera schemanamn.
79
	 * @return string[] $data
80
	 */
81 1
	private function extrahera_namn(string $schema_data): array {
82
		/**
83
		 * Associativt fält $data[$namn]:
84
		 * [schema_namn] => R_4_5_238_1 F2/4
85
		 * [schema_antal_rader] => 100
86
		 */
87 1
		$data = [];
88 1
		foreach (explode(',', $schema_data) as $dat) {
89 1
			[$namn, $data[$namn]] = explode(':', $dat);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $namn seems to be defined later in this foreach loop on line 89. Are you sure it is defined here?
Loading history...
90
		}
91 1
		return $data;
92
	}
93
}
94