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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
<?php /* * This file is part of the DebugBar package. * * (c) 2013 Maxime Bouroumeau-Fuseau * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */
namespace DebugBar;
/** * Handler to list and open saved dataset */ class OpenHandler { protected $debugBar;
/** * @param DebugBar $debugBar * @throws DebugBarException */ public function __construct(DebugBar $debugBar) { if (!$debugBar->isDataPersisted()) { throw new DebugBarException("DebugBar must have a storage backend to use OpenHandler"); } $this->debugBar = $debugBar; }
/** * Handles the current request * * @param array $request Request data * @param bool $echo * @param bool $sendHeader * @return string * @throws DebugBarException */ public function handle($request = null, $echo = true, $sendHeader = true) { if ($request === null) { $request = $_REQUEST; }
$op = 'find'; if (isset($request['op'])) { $op = $request['op']; if (!in_array($op, array('find', 'get', 'clear'))) { throw new DebugBarException("Invalid operation '{$request['op']}'"); } }
if ($sendHeader) { $this->debugBar->getHttpDriver()->setHeaders(array( 'Content-Type' => 'application/json' )); }
$response = json_encode(call_user_func(array($this, $op), $request)); if ($echo) { echo $response; } return $response; }
/** * Find operation * @param $request * @return array */ protected function find($request) { $max = 20; if (isset($request['max'])) { $max = $request['max']; }
$offset = 0; if (isset($request['offset'])) { $offset = $request['offset']; }
$filters = array(); foreach (array('utime', 'datetime', 'ip', 'uri', 'method') as $key) { if (isset($request[$key])) { $filters[$key] = $request[$key]; } }
return $this->debugBar->getStorage()->find($filters, $max, $offset); }
/** * Get operation * @param $request * @return array * @throws DebugBarException */ protected function get($request) { if (!isset($request['id'])) { throw new DebugBarException("Missing 'id' parameter in 'get' operation"); } return $this->debugBar->getStorage()->get($request['id']); }
/** * Clear operation */ protected function clear($request) { $this->debugBar->getStorage()->clear(); return array('success' => true); } }
|