* Add 'charset' to Content-Type headers on various HTTP error responses
[lhc/web/wiklou.git] / includes / AjaxDispatcher.php
index 89062f8..4a84ea2 100644 (file)
@@ -14,7 +14,7 @@ class AjaxDispatcher {
        var $func_name;
        var $args;
 
-       function AjaxDispatcher() {
+       function __construct() {
                wfProfileIn( __METHOD__ );
 
                $this->mode = "";
@@ -28,14 +28,14 @@ class AjaxDispatcher {
                }
 
                if ($this->mode == "get") {
-                       $this->func_name = $_GET["rs"];
+                       $this->func_name = isset( $_GET["rs"] ) ? $_GET["rs"] : '';
                        if (! empty($_GET["rsargs"])) {
                                $this->args = $_GET["rsargs"];
                        } else {
                                $this->args = array();
                        }
                } else {
-                       $this->func_name = $_POST["rs"];
+                       $this->func_name = isset( $_POST["rs"] ) ? $_POST["rs"] : '';
                        if (! empty($_POST["rsargs"])) {
                                $this->args = $_POST["rsargs"];
                        } else {
@@ -47,42 +47,42 @@ class AjaxDispatcher {
 
        function performAction() {
                global $wgAjaxExportList, $wgOut;
-               
+
                if ( empty( $this->mode ) ) {
                        return;
                }
                wfProfileIn( __METHOD__ );
 
                if (! in_array( $this->func_name, $wgAjaxExportList ) ) {
-                       header( 'Status: 400 Bad Request', true, 400 );
-                       print "unknown function " . htmlspecialchars( (string) $this->func_name );
+                       wfHttpError( 400, 'Bad Request',
+                               "unknown function " . (string) $this->func_name );
                } else {
                        try {
                                $result = call_user_func_array($this->func_name, $this->args);
-                               
+
                                if ( $result === false || $result === NULL ) {
-                                       header( 'Status: 500 Internal Error', true, 500 );
-                                       echo "{$this->func_name} returned no data";
+                                       wfHttpError( 500, 'Internal Error',
+                                               "{$this->func_name} returned no data" );
                                }
                                else {
                                        if ( is_string( $result ) ) {
                                                $result= new AjaxResponse( $result );
                                        }
-                                       
+
                                        $result->sendHeaders();
                                        $result->printText();
                                }
 
                        } catch (Exception $e) {
                                if (!headers_sent()) {
-                                       header( 'Status: 500 Internal Error', true, 500 );
-                                       print $e->getMessage();
+                                       wfHttpError( 500, 'Internal Error',
+                                               $e->getMessage() );
                                } else {
                                        print $e->getMessage();
                                }
                        }
                }
-               
+
                wfProfileOut( __METHOD__ );
                $wgOut = null;
        }