Completed
Push — ghaction ( 43957e...7bbf38 )
by Andreas
02:52
created

Headers   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 32
rs 10
c 0
b 0
f 0
wmc 5
lcom 0
cbo 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A contentSecurityPolicy() 0 22 5
1
<?php
2
3
namespace dokuwiki\HTTP;
4
5
/**
6
 * Utilities to send HTTP Headers
7
 */
8
class Headers
9
{
10
    /**
11
     * Send a Content-Security-Polica Header
12
     *
13
     * Expects an associative array with individual policies and their values
14
     *
15
     * @param array $policy
16
     */
17
    static public function contentSecurityPolicy($policy)
18
    {
19
        foreach ($policy as $key => $values) {
20
            // if the value is not an array, we also accept newline terminated strings
21
            if (!is_array($values)) $values = explode("\n", $values);
22
            $values = array_map('trim', $values);
23
            $values = array_unique($values);
24
            $values = array_filter($values);
25
            $policy[$key] = $values;
26
        }
27
28
        $cspheader = 'Content-Security-Policy:';
29
        foreach ($policy as $key => $values) {
30
            if ($values) {
31
                $cspheader .= " $key " . join(' ', $values) . ';';
32
            } else {
33
                $cspheader .= " $key;";
34
            }
35
        }
36
37
        header($cspheader);
38
    }
39
}
40