/** * @param VulnerabilityHost $host * @return array */ protected function calcComputedVulns(VulnerabilityHost $host) { $baseVulns = $this->calcVulnerableElementVulns($host->getVulnTree()); if ($host instanceof Field && $host->getName() == 'userEmail') { //var_dump($baseVulns);exit; } $descriptor = null; if ($host instanceof Field) { $descriptor = $host->getDescriptor(); } $chain = $host->getCheckChain(); unset($chain[0]); if (!count($chain)) { return $baseVulns; } if (!$baseVulns['children']) { $baseVulns['children'] = []; } if ($descriptor) { foreach ($chain as $chainEl) { if ($chainEl === $host->getParent()) { continue; } foreach ($chainEl->getFields() as $field) { if ($field === $host) { continue; } if ($field->matchesToDescriptor($descriptor)) { $fieldVulns = $this->calcVulnerableElementVulns($field->getVulnTree(), null, true, true); if (count($fieldVulns)) { $baseVulns['children'][] = $fieldVulns; } break; } } } } foreach ($chain as $chainEl) { $fieldVulns = $this->calcVulnerableElementVulns($chainEl->getVulnTree(), null, true, true); if (count($fieldVulns)) { $baseVulns['children'][] = $fieldVulns; } } if (!count($baseVulns['children'])) { unset($baseVulns['children']); } return $baseVulns; }