$activity) { if (elementIsSelected($activityName, $activity) && !$showPerformed) { continue; } if (!elementIsSelected($activityName, $activity) && !$showPlanned) { continue; } $filteredDimensions[$dimension][$subdimension][$activityName] = $activity; } } /** * * @param unknown $dimensions * @param unknown $elementImplementation * @param unknown $allElements (reference) */ function getDifficultyOfImplementationWithDependencies($dimensions, $elementImplementation, &$allElements) { $aggregated = ($_GET['aggregated'] ?? false) == "true" ? "true" : false; if ($elementImplementation == null) { return; } $knowledge = getKnowledge($elementImplementation); $allElements[] = $knowledge; $allElements[] = $elementImplementation['difficultyOfImplementation']["time"]; $allElements[] = $elementImplementation['difficultyOfImplementation']["time"]; $allElements[] = $elementImplementation['difficultyOfImplementation']["resources"]; if (array_key_exists('dependsOn', $elementImplementation) && $aggregated == "true") { foreach ($elementImplementation['dependsOn'] as $dependency) { $dependencyElement = getActivity($dimensions, $dependency); getDifficultyOfImplementationWithDependencies($dimensions, $dependencyElement, $allElements); $knowledge = getKnowledge($elementImplementation); $allElements[] = $knowledge; $allElements[] = $elementImplementation['difficultyOfImplementation']["time"]; $allElements[] = $elementImplementation['difficultyOfImplementation']["time"]; $allElements[] = $elementImplementation['difficultyOfImplementation']["resources"]; } } } /** * * @param unknown $dimensions * @param unknown $elementImplementation * @return unknown */ function getDifficultyOfImplementation($dimensions, $elementImplementation) { $aggregated = ($_GET['aggregated'] ?? false) == "true" ? "true" : false; if ($elementImplementation == null) { return; } $knowledge = getKnowledge($elementImplementation); $value = $knowledge + $elementImplementation['difficultyOfImplementation']["time"] * 2 + $elementImplementation['difficultyOfImplementation']["resources"]; $value = $value / 4; if (array_key_exists('dependsOn', $elementImplementation) && $aggregated == "true") { foreach ($elementImplementation['dependsOn'] as $dependency) { $dependencyElement = getActivity($dimensions, $dependency); $value += getDifficultyOfImplementation($dimensions, $dependencyElement); } } if ($value > 5) { $value = 5; } return number_format((float)$value, 2, '.', ''); } /** * * @param unknown $elementImplementation * @return unknown */ function getKnowledge($elementImplementation) { $knowledge = $elementImplementation['difficultyOfImplementation']["knowledge"]; if (is_array($knowledge)) { $sum = 0; // areas = operation, development, expertise, security $areaCount = 4; foreach ($knowledge as $knowledgeAttribute) { $sum += $knowledgeAttribute; } $knowledge = $sum / $areaCount; } return $knowledge; } /** * * @param unknown $parent * @param unknown $name * @param unknown $isMarkdown (optional) * @return unknown */ function getElementContentAndCheckExistence($parent, $name, $isMarkdown=false) { if (array_key_exists($name, $parent)) { return getElementContent($parent[$name], $isMarkdown); } return ""; } /** * * @param unknown $element * @param unknown $isMarkdown (optional) * @return unknown */ function getElementContent($element, $isMarkdown=false) { $Extra = new ParsedownExtra(); $Parsedown = new Parsedown(); if (!is_array($element)) { if ($isMarkdown) { return "