]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - lib/error.php
Merge commit 'refs/merge-requests/2006' of git://gitorious.org/statusnet/mainline...
[quix0rs-gnu-social.git] / lib / error.php
1 <?php
2
3 /**
4  * Error action.
5  *
6  * PHP version 5
7  *
8  * @category Action
9  * @package  StatusNet
10  * @author   Evan Prodromou <evan@status.net>
11  * @author   Zach Copley <zach@status.net>
12  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
13  * @link     http://status.net/
14  *
15  * StatusNet - the distributed open-source microblogging tool
16  * Copyright (C) 2008, 2009, StatusNet, Inc.
17  *
18  * This program is free software: you can redistribute it and/or modify
19  * it under the terms of the GNU Affero General Public License as published by
20  * the Free Software Foundation, either version 3 of the License, or
21  * (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU Affero General Public License for more details.
27  *
28  * You should have received a copy of the GNU Affero General Public License
29  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
30  */
31
32 if (!defined('STATUSNET') && !defined('LACONICA')) {
33     exit(1);
34 }
35
36 /**
37  * Base class for displaying HTTP errors
38  *
39  * @category Action
40  * @package  StatusNet
41  * @author   Zach Copley <zach@status.net>
42  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
43  * @link     http://status.net/
44  */
45 class ErrorAction extends Action
46 {
47     static $status = array();
48
49     var $code    = null;
50     var $message = null;
51     var $default = null;
52
53     function __construct($message, $code, $output='php://output', $indent=true)
54     {
55         parent::__construct($output, $indent);
56
57         $this->code = $code;
58         $this->message = $message;
59
60         // XXX: hack alert: usually we aren't going to
61         // call this page directly, but because it's
62         // an action it needs an args array anyway
63         $this->prepare($_REQUEST);
64     }
65
66     /**
67      *  To specify additional HTTP headers for the action
68      *
69      *  @return void
70      */
71     function extraHeaders()
72     {
73         $status_string = @self::$status[$this->code];
74         header('HTTP/1.1 '.$this->code.' '.$status_string);
75     }
76
77     /**
78      * Display content.
79      *
80      * @return nothing
81      */
82     function showContent()
83     {
84         $this->element('div', array('class' => 'error'), $this->message);
85     }
86
87     /**
88      * Page title.
89      *
90      * @return page title
91      */
92
93     function title()
94     {
95         return @self::$status[$this->code];
96     }
97
98     function isReadOnly($args)
99     {
100         return true;
101     }
102
103     function showPage()
104     {
105         parent::showPage();
106
107         // We don't want to have any more output after this
108         exit();
109     }
110
111     // Overload a bunch of stuff so the page isn't too bloated
112
113     function showBody()
114     {
115         $this->elementStart('body', array('id' => 'error'));
116         $this->elementStart('div', array('id' => 'wrap'));
117         $this->showHeader();
118         $this->showCore();
119         $this->showFooter();
120         $this->elementEnd('div');
121         $this->elementEnd('body');
122     }
123
124     function showCore()
125     {
126         $this->elementStart('div', array('id' => 'core'));
127         $this->showContentBlock();
128         $this->elementEnd('div');
129     }
130
131     function showHeader()
132     {
133         $this->elementStart('div', array('id' => 'header'));
134         $this->showLogo();
135         $this->showPrimaryNav();
136         $this->elementEnd('div');
137     }
138
139 }