From 8f416baead93a48e5799e44b8bd2e2c4859f4e04 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 14 Sep 2007 13:18:58 +0200 Subject: auf Version 1.11 aktualisiert; Login-Bug behoben --- includes/AjaxDispatcher.php | 51 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'includes/AjaxDispatcher.php') diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php index ca129029..7b85ed20 100644 --- a/includes/AjaxDispatcher.php +++ b/includes/AjaxDispatcher.php @@ -1,10 +1,9 @@ mode = "post"; } - if ($this->mode == "get") { + switch( $this->mode ) { + + case 'get': $this->func_name = isset( $_GET["rs"] ) ? $_GET["rs"] : ''; if (! empty($_GET["rsargs"])) { $this->args = $_GET["rsargs"]; } else { $this->args = array(); } - } else { + break; + + case 'post': $this->func_name = isset( $_POST["rs"] ) ? $_POST["rs"] : ''; if (! empty($_POST["rsargs"])) { $this->args = $_POST["rsargs"]; } else { $this->args = array(); } + break; + + default: + return; + # Or we could throw an exception: + #throw new MWException( __METHOD__ . ' called without any data (mode empty).' ); + } + wfProfileOut( __METHOD__ ); } + /** Pass the request to our internal function. + * BEWARE! Data are passed as they have been supplied by the user, + * they should be carefully handled in the function processing the + * request. + */ function performAction() { global $wgAjaxExportList, $wgOut; @@ -62,8 +84,13 @@ class AjaxDispatcher { wfHttpError( 400, 'Bad Request', "unknown function " . (string) $this->func_name ); } else { + if ( strpos( $this->func_name, '::' ) !== false ) { + $func = explode( '::', $this->func_name, 2 ); + } else { + $func = $this->func_name; + } try { - $result = call_user_func_array($this->func_name, $this->args); + $result = call_user_func_array($func, $this->args); if ( $result === false || $result === NULL ) { wfHttpError( 500, 'Internal Error', @@ -93,4 +120,4 @@ class AjaxDispatcher { } } -?> + -- cgit v1.2.2