ContentModerationReportBase::buildGrid()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 16
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
c 1
b 0
f 0
dl 0
loc 16
rs 9.9332
cc 3
nc 4
nop 0
1
<?php
2
3
namespace Drupal\magpjm\Workflows;
4
5
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
6
use Drupal\Core\StringTranslation\StringTranslationTrait;
7
8
abstract class ContentModerationReportBase implements ContainerInjectionInterface {
9
10
  use StringTranslationTrait;
11
12
  protected $stateStorage;
13
14
  protected $transStorage;
15
16
  protected function buildGrid() {
17
    $grid = [];
18
    $stateIds = array_keys($this->getStates());
19
    $stateCells = array_map(function ($stateId) {
0 ignored issues
show
Unused Code introduced by
The parameter $stateId is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

19
    $stateCells = array_map(function (/** @scrutinizer ignore-unused */ $stateId) {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
20
      return [];
21
    }, array_flip($stateIds));
22
23
    foreach ($stateIds as $stateId) {
24
      $grid[$stateId] = $stateCells;
25
    }
26
27
    foreach ($this->getTrans() as $transId => $trans) {
28
      $grid[$trans['from']][$trans['to']][] = $transId;
29
    }
30
31
    return $grid;
32
  }
33
34
  public function getDuplicateTransLabels() {
35
    $labels = [];
36
    foreach ($this->getTrans() as $trans) {
37
      if (isset($labels[$trans['label']])) {
38
        $labels[$trans['label']]++;
39
      }
40
      else {
41
        $labels[$trans['label']] = 1;
42
      }
43
    }
44
    $repeatedLabels = array_filter($labels, function ($count) {
45
      return $count > 1;
46
    });
47
48
    return $repeatedLabels;
49
  }
50
51
  protected function getStates() {
52
    $fullStates = $this->stateStorage->loadMultiple();
53
    $simpleStates = array_map(function ($entity) {
54
      return $entity->label();
55
    }, $fullStates);
56
    asort($simpleStates);
57
    return $simpleStates;
58
  }
59
60
  protected function getTrans() {
61
    $fullTrans = $this->transStorage->loadMultiple();
62
    $simpleTrans = array_map(function ($trans) {
63
      return [
64
        'label' => $trans->label(),
65
        'from' => $trans->getFromState(),
66
        'to' => $trans->getToState(),
67
      ];
68
    }, $fullTrans);
69
70
    return $simpleTrans;
71
  }
72
73
  public abstract function report();
74
}
75