response.php
1.54 KB
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
<?php
class N2AjaxResponse
{
/**
* @var N2ApplicationType
*/
private $appType;
private $isError = false;
private $response = array(
'data' => null,
'notification' => array()
);
public function __construct($appType) {
$this->appType = $appType;
}
public function error($showNotification = true) {
$this->isError = true;
$this->respond(null, $showNotification);
}
public function respond($data = null, $showNotification = true) {
$this->response['data'] = $data;
self::fix_output_buffer();
if ($showNotification) {
$this->response['notification'] = N2Message::showAjax();
}
header("Content-Type: application/json");
if ($this->isError) {
header("HTTP/1.0 403 Forbidden");
}
echo json_encode($this->response);
n2_exit(true);
}
public function redirect($url) {
self::fix_output_buffer();
$this->response['redirect'] = $this->appType->router->createUrl($url);
echo json_encode($this->response);
n2_exit(true);
}
private static function fix_output_buffer() {
$ob_list_handlers = ob_list_handlers();
$ob_list_handlers_count = count($ob_list_handlers);
$exclude = array(
'ob_gzhandler',
'zlib output compression'
);
if ($ob_list_handlers_count && !in_array($ob_list_handlers[$ob_list_handlers_count - 1], $exclude)) {
ob_clean();
}
}
}