Completed
Pull Request — master (#108)
by Deven
16:48
created

IncidentsHelper   A

Complexity

Total Complexity 20

Size/Duplication

Total Lines 99
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 74.36%

Importance

Changes 4
Bugs 1 Features 0
Metric Value
wmc 20
c 4
b 1
f 0
lcom 0
cbo 1
dl 0
loc 99
ccs 58
cts 78
cp 0.7436
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A createIncidentsLinks() 0 8 2
A linkToIncident() 0 5 1
A incidentsDescriptions() 0 12 2
C getStacktrace() 0 48 10
A _getStackLevelInfo() 0 15 4
1
<?php
2
/* vim: set noexpandtab sw=2 ts=2 sts=2: */
3
namespace app\View\Helper;
4
5
use App\Utility\Sanitize;
6
use App\View\Helper\AppHelper;
7
use Cake\View\View;
8
9
class IncidentsHelper extends AppHelper {
10
11 3
	public function __construct(View $view, $settings = array()) {
12 3
		parent::__construct($view, $settings);
13 3
	}
14
15 1
	public function createIncidentsLinks($incidents) {
16 1
		$links = array();
17 1
		foreach ($incidents as $incident) {
18 1
			$links[] = $this->linkToIncident($incident);
19 1
		}
20 1
		$string = implode(", ", $links);
21 1
		return $string;
22
	}
23
24 1
	public function linkToIncident($incident) {
25 1
		$incidentId = $incident["id"];
26 1
		$link = "<a href='/" . BASE_DIR . "incidents/view/$incidentId'>#$incidentId</a>";
27 1
		return $link;
28
	}
29
30 1
	public function incidentsDescriptions($incidents) {
31 1
		$descriptions = "";
32 1
		foreach ($incidents as $incident) {
33 1
			$descriptions .= "<span>Incident ";
34 1
			$descriptions .= $this->linkToIncident($incident);
35 1
			$descriptions .= ":</span>";
36 1
			$descriptions .= "<pre>";
37 1
			$descriptions .= $incident["steps"];
38 1
			$descriptions .= "</pre>";
39 1
		}
40 1
		return $descriptions;
41
	}
42
43 2
	public function getStacktrace($incident, $divClass) {
44 2
		$html = "";
45 2
		$html .= "<div class='$divClass'>";
46
47 2
		if (is_string($incident["stacktrace"])) {
48 1
			$incident["stacktrace"] =
49 1
					json_decode($incident["stacktrace"], true);
50 1
		}
51
52 2
		foreach ($incident["stacktrace"] as $level) {
53 2
			$exception_type = (($incident["exception_type"])?('php'):('js'));
54 2
			$html .= $this->_getStackLevelInfo($level, $exception_type);
55
			$html .= "<pre class='brush: "
56
				. $exception_type
57 2
				. "; tab-size: 2";
58 2
			if ($incident['exception_type']
59 2
				&& isset($level['line'])
60 2
				&& $level['line']
61 2
			) {
62
				$html .= "; first-line: " . $level['line'];
63
			}
64
65 2
			$html .= "'>";
66 2
			if($exception_type == 'js') {
67 2
				$html .= join("\n", $level["context"]);
68 2
			} else {
69
				$html .= $level["function"];
70
				$html .= "(";
71
				$argList = "";
72
				if (count($level["args"]) > 0) {
73
					foreach ($level["args"] as $arg) {
74
						$argList .= "\n"
75
							. getType($arg)
76
							. " => "
77
							. $arg;
78
						$argList .= ",";
79
					}
80
					$argList = substr($argList, 0, (strlen($argList)-1));
81
					$argList .= "\n";
82
				}
83
				$html .= $argList;
84
				$html .= ")";
85
			}
86 2
			$html .= "</pre>";
87 2
		}
88 2
		$html .= "</div>";
89 2
		return $html;
90
	}
91
92 2
	protected function _getStackLevelInfo($level, $exception_type = 'js') {
93 2
		$html = "<span>";
94 2
		if ($exception_type == 'js') {
95 2
			$elements = array("filename", "scriptname", "line", "func", "column");
96 2
		} else {
97
			$elements = array("file", "line", "function", "class");
98
		}
99 2
		foreach ($elements as $element) {
100 2
			if (isset($level[$element])) {
101
				$html .= "$element: " . $level[$element] . "; ";
102
			}
103 2
		}
104 2
		$html .= "</span>";
105 2
		return $html;
106
	}
107
}
108