]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/error.php
Cannot use NoticeListemItem as type-hint as NoticeListItemAdapter exists.
[quix0rs-gnu-social.git] / lib / error.php
index 3162cfe656f30c701a429f1cb6aaec6ded14e8a3..03a1960c620bdc124836e16f276426b2f210185f 100644 (file)
@@ -42,7 +42,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
  * @link     http://status.net/
  */
-class ErrorAction extends Action
+class ErrorAction extends InfoAction
 {
     static $status = array();
 
@@ -50,12 +50,13 @@ class ErrorAction extends Action
     var $message = null;
     var $default = null;
 
-    function __construct($message, $code, $output='php://output', $indent=true)
+    function __construct($message, $code, $output='php://output', $indent=null)
     {
-        parent::__construct($output, $indent);
+        parent::__construct(null, $message, $output, $indent);
 
         $this->code = $code;
         $this->message = $message;
+        $this->minimal = GNUsocial::isApi();
 
         // XXX: hack alert: usually we aren't going to
         // call this page directly, but because it's
@@ -63,15 +64,23 @@ class ErrorAction extends Action
         $this->prepare($_REQUEST);
     }
 
-    /**
-     *  To specify additional HTTP headers for the action
-     *
-     *  @return void
-     */
-    function extraHeaders()
+    function showPage()
     {
-        $status_string = @self::$status[$this->code];
-        header('HTTP/1.1 '.$this->code.' '.$status_string);
+        if (GNUsocial::isAjax()) {
+            $this->extraHeaders();
+            $this->ajaxErrorMsg();
+            exit();
+        } if ($this->minimal) {
+            // Even more minimal -- we're in a machine API
+            // and don't want to flood the output.
+            $this->extraHeaders();
+            $this->showContent();
+        } else {
+            parent::showPage();
+        }
+
+        // We don't want to have any more output after this
+        exit();
     }
 
     /**
@@ -84,56 +93,30 @@ class ErrorAction extends Action
         $this->element('div', array('class' => 'error'), $this->message);
     }
 
-    /**
-     * Page title.
-     *
-     * @return page title
-     */
-
-    function title()
-    {
-        return @self::$status[$this->code];
-    }
-
-    function isReadOnly($args)
+    function showNoticeForm()
     {
-        return true;
     }
 
-    function showPage()
-    {
-        parent::showPage();
-
-        // We don't want to have any more output after this
-        exit();
-    }
-
-    // Overload a bunch of stuff so the page isn't too bloated
+    /**
+     * Show an Ajax-y error message
+     *
+     * Goes back to the browser, where it's shown in a popup.
+     *
+     * @param string $msg Message to show
+     *
+     * @return void
+     */
 
-    function showBody()
+    function ajaxErrorMsg()
     {
-        $this->elementStart('body', array('id' => 'error'));
-        $this->elementStart('div', array('id' => 'wrap'));
-        $this->showHeader();
-        $this->showCore();
-        $this->showFooter();
-        $this->elementEnd('div');
+        $this->startHTML('text/xml;charset=utf-8', true);
+        $this->elementStart('head');
+        // TRANS: Page title after an AJAX error occurs on the send notice page.
+        $this->element('title', null, _('Ajax Error'));
+        $this->elementEnd('head');
+        $this->elementStart('body');
+        $this->element('p', array('id' => 'error'), $this->message);
         $this->elementEnd('body');
+        $this->endHTML();
     }
-
-    function showCore()
-    {
-        $this->elementStart('div', array('id' => 'core'));
-        $this->showContentBlock();
-        $this->elementEnd('div');
-    }
-
-    function showHeader()
-    {
-        $this->elementStart('div', array('id' => 'header'));
-        $this->showLogo();
-        $this->showPrimaryNav();
-        $this->elementEnd('div');
-    }
-
 }