API: Ignore '_' parameter in jsonp callback mode
authorBrad Jorsch <bjorsch@wikimedia.org>
Fri, 27 Mar 2015 16:36:19 +0000 (12:36 -0400)
committerGergő Tisza <tgr.huwiki@gmail.com>
Wed, 5 Aug 2015 19:26:04 +0000 (12:26 -0700)
jQuery has a misfeature where it by default appends a '_' parameter as a
cachebuster in jsonp mode. So, when in jsonp mode, mark this bogus
parameter as used to avoid an unnecessary warning.

Bug: T94015
Change-Id: I43373439a3605e4589315139c30976c6c2f68542

includes/api/ApiFormatJson.php

index 43877b7..9538842 100644 (file)
@@ -35,6 +35,15 @@ class ApiFormatJson extends ApiFormatBase {
        public function __construct( ApiMain $main, $format ) {
                parent::__construct( $main, $format );
                $this->isRaw = ( $format === 'rawfm' );
+
+               if ( $this->getMain()->getCheck( 'callback' ) ) {
+                       # T94015: jQuery appends a useless '_' parameter in jsonp mode.
+                       # Mark the parameter as used in that case to avoid a warning that's
+                       # outside the control of the end user.
+                       # (and do it here because ApiMain::reportUnusedParams() gets called
+                       # before our ::execute())
+                       $this->getMain()->getCheck( '_' );
+               }
        }
 
        public function getMimeType() {