]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - lib/error.php
Merged stuff from upstream/master
[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 InfoAction
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=null)
54     {
55         parent::__construct(null, $message, $output, $indent);
56
57         $this->code = $code;
58         $this->message = $message;
59         $this->minimal = GNUsocial::isApi();
60
61         // XXX: hack alert: usually we aren't going to
62         // call this page directly, but because it's
63         // an action it needs an args array anyway
64         $this->prepare($_REQUEST);
65     }
66
67     function showPage()
68     {
69         if (GNUsocial::isAjax()) {
70             $this->extraHeaders();
71             $this->ajaxErrorMsg();
72             exit();
73         } if ($this->minimal) {
74             // Even more minimal -- we're in a machine API
75             // and don't want to flood the output.
76             $this->extraHeaders();
77             $this->showContent();
78         } else {
79             parent::showPage();
80         }
81
82         // We don't want to have any more output after this
83         exit();
84     }
85
86     /**
87      * Display content.
88      *
89      * @return nothing
90      */
91     function showContent()
92     {
93         $this->element('div', array('class' => 'error'), $this->message);
94     }
95
96     function showNoticeForm()
97     {
98     }
99
100     /**
101      * Show an Ajax-y error message
102      *
103      * Goes back to the browser, where it's shown in a popup.
104      *
105      * @param string $msg Message to show
106      *
107      * @return void
108      */
109
110     function ajaxErrorMsg()
111     {
112         $this->startHTML('text/xml;charset=utf-8', true);
113         $this->elementStart('head');
114         // TRANS: Page title after an AJAX error occurs on the send notice page.
115         $this->element('title', null, _('Ajax Error'));
116         $this->elementEnd('head');
117         $this->elementStart('body');
118         $this->element('p', array('id' => 'error'), $this->message);
119         $this->elementEnd('body');
120         $this->endHTML();
121     }
122 }