1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
<?php
class Feedback
{
private $conference;
public function __construct(Conference $conference)
{
$this->conference = $conference;
}
public function getConference() {
return $this->conference;
}
public function validate($info)
{
return
isset($_POST['datetime']) ||
isset($_POST['net']) ||
isset($_POST['os']) ||
isset($_POST['player']) ||
isset($_POST['stream']) ||
isset($_POST['provider']) ||
isset($_POST['issuetext']);
}
public function store($info)
{
$db = new PDO($this->getConference()->get('FEEDBACK.DSN'));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stm = $db->prepare('
INSERT INTO feedback (reported, datetime, net, os, player, stream, ipproto_v4, ipproto_v6, provider, issues, issuetext)
VALUES (:reported, :datetime, :net, :os, :player, :stream, :ipproto_v4, :ipproto_v6, :provider, :issues, :issuetext)
');
$issuetext = preg_replace('/\r?\n/', ' ', $info['issuetext']);
$stm->execute(array(
'reported' => time(),
'datetime' => strtotime($info['datetime']),
'net' => $info['net'],
'os' => $info['os'],
'player' => $info['player'],
'stream' => $info['stream'],
'ipproto_v4' => isset($info['ipproto']) && is_array($info['ipproto']) && in_array('v4', $info['ipproto']),
'ipproto_v6' => isset($info['ipproto']) && is_array($info['ipproto']) && in_array('v6', $info['ipproto']),
'provider' => $info['provider'],
'issues' => isset($info['issues']) && is_array($info['issues']) ? implode(',', $info['issues']) : '',
'issuetext' => $issuetext,
));
}
public function isLoggedIn()
{
return
isset($_SERVER['PHP_AUTH_USER']) &&
$_SERVER['PHP_AUTH_USER'] == $this->getConference()->get('FEEDBACK.USERNAME') &&
$_SERVER['PHP_AUTH_PW'] == $this->getConference()->get('FEEDBACK.PASSWORD');
}
public function requestLogin()
{
header('WWW-Authenticate: Basic realm="Kadse?"');
header('HTTP/1.0 401 Unauthorized');
echo 'You are no real Winkekatzenoperator!!!1!';
exit;
}
public function read($from, $to)
{
$db = new PDO($this->getConference()->get('FEEDBACK.DSN'));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stm = $db->prepare('
SELECT *
FROM feedback
WHERE reported BETWEEN :from AND :to
ORDER BY reported DESC
');
$stm->setFetchMode(PDO::FETCH_ASSOC);
$stm->execute(array(
'from' => $from,
'to' => $to,
));
return $stm;
}
}
|