X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FAjaxDispatcher.php;h=5ee14a5007fafafcf486335242069e1da82fad7f;hb=f471d3fcc2f5bab4152729f89139899ae4282ab2;hp=452c3b33fbdee0d6b9b5ccba97e1b8d530f75d9f;hpb=a15c419b3d130248f2556b9d00643ba9666a4189;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php index 452c3b33fb..5ee14a5007 100644 --- a/includes/AjaxDispatcher.php +++ b/includes/AjaxDispatcher.php @@ -1,9 +1,13 @@ mode = ""; - if (! empty($_GET["rs"])) { + if ( ! empty( $_GET["rs"] ) ) { $this->mode = "get"; } - if (!empty($_POST["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: - return; - # Or we could throw an exception: - #throw new MWException( __METHOD__ . ' called without any data (mode empty).' ); - + 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).' ); } wfProfileOut( __METHOD__ ); @@ -78,30 +79,52 @@ class AjaxDispatcher { if ( empty( $this->mode ) ) { return; } + wfProfileIn( __METHOD__ ); - if (! in_array( $this->func_name, $wgAjaxExportList ) ) { - wfHttpError( 400, 'Bad Request', - "unknown function " . (string) $this->func_name ); + if ( ! in_array( $this->func_name, $wgAjaxExportList ) ) { + wfDebug( __METHOD__ . ' Bad Request for unknown function ' . $this->func_name . "\n" ); + + wfHttpError( + 400, + 'Bad Request', + "unknown function " . (string) $this->func_name + ); } else { + wfDebug( __METHOD__ . ' dispatching ' . $this->func_name . "\n" ); + + 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 ) { + wfDebug( __METHOD__ . ' ERROR while dispatching ' + . $this->func_name . "(" . var_export( $this->args, true ) . "): " + . "no data returned\n" ); - if ( $result === false || $result === NULL ) { wfHttpError( 500, 'Internal Error', "{$this->func_name} returned no data" ); - } - else { + } else { if ( is_string( $result ) ) { - $result= new AjaxResponse( $result ); + $result = new AjaxResponse( $result ); } $result->sendHeaders(); $result->printText(); + + wfDebug( __METHOD__ . ' dispatch complete for ' . $this->func_name . "\n" ); } + } catch ( Exception $e ) { + wfDebug( __METHOD__ . ' ERROR while dispatching ' + . $this->func_name . "(" . var_export( $this->args, true ) . "): " + . get_class( $e ) . ": " . $e->getMessage() . "\n" ); - } catch (Exception $e) { - if (!headers_sent()) { + if ( !headers_sent() ) { wfHttpError( 500, 'Internal Error', $e->getMessage() ); } else { @@ -114,5 +137,3 @@ class AjaxDispatcher { $wgOut = null; } } - -