From 5806e63383b32d38078af2185b51b2ba2aab90a2 Mon Sep 17 00:00:00 2001 From: Chad Horohoe Date: Thu, 12 Aug 2010 14:34:54 +0000 Subject: [PATCH] AjaxDispatcher, now ~30 lines shorter and not using $_GET or $_POST --- includes/AjaxDispatcher.php | 48 ++++++++----------------------------- index.php | 2 +- 2 files changed, 11 insertions(+), 39 deletions(-) diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php index 16e5301180..969efa4790 100644 --- a/includes/AjaxDispatcher.php +++ b/includes/AjaxDispatcher.php @@ -18,51 +18,23 @@ require_once( 'AjaxFunctions.php' ); * @ingroup Ajax */ class AjaxDispatcher { - /** The way the request was made, either a 'get' or a 'post' */ - private $mode; - /** Name of the requested handler */ - private $func_name; + private $func_name = null; /** Arguments passed */ - private $args; + private $args = array(); /** Load up our object with user supplied data */ - function __construct() { + public function __construct( WebRequest $req ) { wfProfileIn( __METHOD__ ); - $this->mode = ""; - - if ( ! empty( $_GET["rs"] ) ) { - $this->mode = "get"; + $rs = $req->getVal( 'rs' ); + if( $rs !== null ) { + $this->func_name = $rs; } - - if ( !empty( $_POST["rs"] ) ) { - $this->mode = "post"; - } - - 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(); - } - 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: - wfProfileOut( __METHOD__ ); - return; - # Or we could throw an exception: - # throw new MWException( __METHOD__ . ' called without any data (mode empty).' ); + $rsargs = $req->getVal( 'rsargs' ); + if( $rsargs !== null ) { + $this->args = $rsargs; } wfProfileOut( __METHOD__ ); @@ -76,7 +48,7 @@ class AjaxDispatcher { function performAction() { global $wgAjaxExportList, $wgOut; - if ( empty( $this->mode ) ) { + if ( is_null( $this->func_name ) ) { return; } diff --git a/index.php b/index.php index dcea36b5b7..9f45c59172 100644 --- a/index.php +++ b/index.php @@ -68,7 +68,7 @@ wfProfileOut( 'main-misc-setup' ); # if( $wgUseAjax && $action == 'ajax' ) { require_once( $IP . '/includes/AjaxDispatcher.php' ); - $dispatcher = new AjaxDispatcher(); + $dispatcher = new AjaxDispatcher( $wgRequest ); $dispatcher->performAction(); $mediaWiki->restInPeace(); exit; -- 2.20.1