Skip to content

Commit 99aa2e9

Browse files
committed
move file-reading functions
1 parent fb8f3b0 commit 99aa2e9

4 files changed

Lines changed: 94 additions & 97 deletions

File tree

data.php

Lines changed: 37 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,24 @@
11
<?php
22
require_once("functions.php");
33

4+
// get form data
45
$showPerformed = ($_GET['performed'] ?? false) == "true" ? "true" : false;
56
$showPlanned = ($_GET['planned'] ?? false) == "true" ? "true" : false;
67

7-
$dimensions = array();
8-
$files = scandir("data");
9-
$dimensions = readYaml("data/dimensions.yaml");
8+
$dimensions = getDimensions();
109

11-
// reorder in-place $dimensions. This should wrap readYaml(data/dimensions.yaml)
12-
ksort($dimensions);
13-
foreach ($dimensions as $dimensionName => $subDimension) {
14-
ksort($subDimension);
15-
foreach ($subDimension as $subDimensionName => $elements) {
16-
17-
// Q: should I retain this?
18-
if (substr($subDimensionName, 0, 1) == "_")
10+
// Create filteredDimensions
11+
$filteredDimensions = array();
12+
foreach(getActions($dimensions) as list($dimension, $subdimension, $activities)) {
13+
foreach ($activities as $activityName => $activity) {
14+
if (elementIsSelected($activityName) && !$showPerformed) {
1915
continue;
20-
21-
// Upgrade old configuration to `references:`
22-
// this code can be modified to other models.
23-
foreach ($elements as $activityName => $content) {
24-
25-
if ($content["references"] ?? null) // ignore new lines
26-
continue;
27-
28-
$content["references"]["samm2"] = $content["samm2"] ?? array();
29-
unset($content["samm2"]);
30-
$content["references"]["iso27001-2017"] = $content["iso27001-2017"] ?? array();
31-
unset($content["iso27001-2017"]);
32-
//echo var_dump($elements[$activityName]);
33-
//echo "<hr>";
34-
$elements[$activityName] = $content;
35-
3616
}
37-
$newElements = $elements;
38-
ksort($newElements);
39-
$dimensions[$dimensionName][$subDimensionName] = $newElements;
40-
}
41-
}
4217

43-
44-
$filteredDimensions = array();
45-
foreach ($dimensions as $dimensionName => $subDimension) {
46-
ksort($subDimension);
47-
foreach ($subDimension as $subDimensionName => $elements) {
48-
if (substr($subDimensionName, 0, 1) == "_")
18+
if (!elementIsSelected($activityName) && !$showPlanned) {
4919
continue;
50-
$newElements = $elements;
51-
ksort($newElements);
52-
foreach ($newElements as $activityName => $activity) {
53-
if (elementIsSelected($activityName) && !$showPerformed) {
54-
continue;
55-
}
56-
57-
if (!elementIsSelected($activityName) && !$showPlanned) {
58-
continue;
59-
}
60-
$filteredDimensions[$dimensionName][$subDimensionName][$activityName] = $activity;
6120
}
62-
21+
$filteredDimensions[$dimension][$subdimension][$activityName] = $activity;
6322
}
6423
}
6524

@@ -78,7 +37,7 @@ function getDifficultyOfImplementationWithDependencies($dimensions, $elementImpl
7837

7938
if (array_key_exists('dependsOn', $elementImplementation) && $_GET['aggregated'] == "true") {
8039
foreach ($elementImplementation['dependsOn'] as $dependency) {
81-
$dependencyElement = getElementByName($dimensions, $dependency);
40+
$dependencyElement = getActivity($dimensions, $dependency);
8241
getDifficultyOfImplementationWithDependencies($dimensions, $dependencyElement, $allElements);
8342

8443

@@ -105,7 +64,7 @@ function getDifficultyOfImplementation($dimensions, $elementImplementation)
10564

10665
if (array_key_exists('dependsOn', $elementImplementation) && $_GET['aggregated'] == "true") {
10766
foreach ($elementImplementation['dependsOn'] as $dependency) {
108-
$dependencyElement = getElementByName($dimensions, $dependency);
67+
$dependencyElement = getActivity($dimensions, $dependency);
10968
$value += getDifficultyOfImplementation($dimensions, $dependencyElement);
11069
}
11170
}
@@ -142,31 +101,34 @@ function getElementContentAndCheckExistence($parent, $name)
142101
function getElementContent($element)
143102
{
144103
$Extra = new ParsedownExtra();
145-
$contentString = "";
146-
if (is_array($element)) {
147-
if (isAssoc($element)) {
148-
foreach ($element as $title => $elementContent) {
149-
$titleWithSpace = preg_replace('/(?<=[a-z])[A-Z]|[A-Z](?=[a-z])/', ' $0', $title);
150-
$contentString .= "<b>" . ucfirst($titleWithSpace) . "</b>";
151-
$contentString .= "<ul>";
152-
if (is_array($elementContent)) {
153-
$contentString .= getElementContent($elementContent);
154-
} else
155-
$contentString .= "<li>" . $Extra->text($elementContent) . "</li>";
156-
$contentString .= "</ul>";
157-
}
104+
if (!is_array($element)){
105+
return str_replace("\"", "'", $element);
106+
}
158107

159-
} else {
108+
if (isAssoc($element)) {
109+
$contentString = "";
110+
111+
foreach ($element as $title => $elementContent) {
112+
$titleWithSpace = preg_replace('/(?<=[a-z])[A-Z]|[A-Z](?=[a-z])/', ' $0', $title);
113+
$contentString .= "<b>" . ucfirst($titleWithSpace) . "</b>";
160114
$contentString .= "<ul>";
161-
foreach ($element as $content) {
162-
$contentString .= "<li>" . $Extra->text($content) . "</li>";
163-
}
115+
if (is_array($elementContent)) {
116+
$contentString .= getElementContent($elementContent);
117+
} else
118+
$contentString .= "<li>" . $Extra->text($elementContent) . "</li>";
164119
$contentString .= "</ul>";
165120
}
166-
167-
} else {
168-
$contentString = str_replace("\"", "'", $element);
121+
return $contentString;
122+
123+
}
124+
125+
// default
126+
$contentString = "<ul>";
127+
foreach ($element as $content) {
128+
$contentString .= "<li>" . $Extra->text($content) . "</li>";
169129
}
130+
$contentString .= "</ul>";
131+
170132
return $contentString;
171133
}
172134

@@ -216,13 +178,13 @@ function build_table_tooltip($array, $headerWeight = 2)
216178
}
217179

218180

219-
function getElementByName($dimensions, $name)
181+
function getActivity($dimensions, $name)
220182
{
221183
foreach ($dimensions as $dimensionName => $subDimension) {
222184
foreach ($subDimension as $subDimensionName => $activities) {
223-
foreach ($activities as $activityName => $content) {
185+
foreach ($activities as $activityName => $activity) {
224186
if ($activityName == $name) {
225-
return $content;
187+
return $activity;
226188
}
227189
}
228190
}

functions.php

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,46 @@ function readYaml($file) {
1717
return $ret;
1818
}
1919

20+
/**
21+
* Get dimensions from yaml file.
22+
*/
23+
function getDimensions() {
24+
$dimensions = readYaml("data/dimensions.yaml");
25+
26+
// reorder in-place $dimensions. This should wrap readYaml(data/dimensions.yaml)
27+
ksort($dimensions);
28+
foreach ($dimensions as $dimensionName => $subDimension) {
29+
ksort($subDimension);
30+
foreach ($subDimension as $subDimensionName => $elements) {
31+
32+
// Q: should I retain this?
33+
if (substr($subDimensionName, 0, 1) == "_")
34+
continue;
35+
36+
// Upgrade old configuration to `references:`
37+
// this code can be modified to other models.
38+
foreach ($elements as $activityName => $content) {
39+
40+
if ($content["references"] ?? null) // ignore new lines
41+
continue;
42+
43+
$content["references"]["samm2"] = $content["samm2"] ?? array();
44+
unset($content["samm2"]);
45+
$content["references"]["iso27001-2017"] = $content["iso27001-2017"] ?? array();
46+
unset($content["iso27001-2017"]);
47+
//echo var_dump($elements[$activityName]);
48+
//echo "<hr>";
49+
$elements[$activityName] = $content;
50+
51+
}
52+
$newElements = $elements;
53+
ksort($newElements);
54+
$dimensions[$dimensionName][$subDimensionName] = $newElements;
55+
}
56+
}
57+
return $dimensions;
58+
}
59+
2060
/** This function should be a sort of db wrapper. */
2161
function getActions($dimensions) {
2262
ksort($dimensions);
@@ -63,13 +103,13 @@ function as_list($items){
63103
yield $items;
64104
}
65105
}
66-
function renderSamms($samm_references) {
106+
function ul($samm_references, $callback='renderSamm') {
67107
if( ! is_array($samm_references) ){
68-
return renderSamm($samm_references);
108+
return ($callback)($samm_references);
69109
}
70110

71111
$ret = "<ul><li>"
72-
. implode("</li><li>", array_map('renderSamm', $samm_references))
112+
. implode("</li><li>", array_map($callback, $samm_references))
73113
."</li></ul>";
74114
return $ret;
75115
}

graph.php

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,20 @@
1010
<h2>Navigation</h2>
1111
<?php
1212
include_once "data.php";
13-
function hasElementChildren($element) {
14-
$hasContent = false;
15-
foreach ($element as $activityName => $content) {
16-
if (!array_key_exists("dependsOn", $content)) {
17-
continue;
18-
}
19-
$hasContent = true;
13+
14+
/** Return true if has dependsOn. */
15+
function hasElementChildren($activities) {
16+
foreach ($activities as $activityName => $activity) {
17+
if ($activity["dependsOn"] ?? null)
18+
return true;
2019
}
21-
return $hasContent;
20+
return false;
2221
}
2322

24-
foreach ($dimensions as $dimension => $subdimensions) {
25-
foreach ($subdimensions as $subdimension => $element) {
26-
27-
if (hasElementChildren($element)) {
28-
echo "<a href='#" . base64_encode($subdimension) . "'>$dimension - $subdimension</a><br />";
29-
}
23+
foreach (getActions($dimensions) as list($dimension, $subdimension, $activities)) {
24+
if (hasElementChildren($activities)) {
25+
echo "<a href='#" . base64_encode($subdimension)
26+
. "'> $dimension - $subdimension </a><br />";
3027
}
3128
}
3229
?>
@@ -68,8 +65,7 @@ function getSourceAndParent($activityName, $subdimension, $parent = "")
6865
}
6966

7067

71-
foreach ($dimensions as $dimension => $subdimensions) {
72-
foreach ($subdimensions as $subdimension => $element) {
68+
foreach (getActions($dimensions) as list($dimension, $subdimension, $element)) {
7369
if(!hasElementChildren($element)) {
7470
continue;
7571
}
@@ -209,6 +205,5 @@ function transform(d) {
209205
})();
210206
</script>
211207
<?php
212-
}
213208
}
214209
?>

mappings.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ function formCheck($reference_id, $sort) {
8585

8686
foreach($referenceLabels as $r => $rLabel){
8787
$rlist = $activity["references"][$r] ?? array();
88-
echo "<td>". renderSamms($rlist) ."</td>";
88+
echo "<td>". ul($rlist) ."</td>";
8989
}
9090
}
9191
}
@@ -133,7 +133,7 @@ function formCheck($reference_id, $sort) {
133133

134134
foreach($referenceLabels as $r => $rLabel){
135135
$rlist = $activity["references"][$r] ?? array();
136-
echo "<td>". renderSamms($rlist) ."</td>";
136+
echo "<td>". ul($rlist) ."</td>";
137137
}
138138
}
139139
}

0 commit comments

Comments
 (0)