Guest User

Untitled

a guest
Jul 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. <?php
  2. /**
  3. * Mock load.php with pre-defined test modules.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License along
  16. * with this program; if not, write to the Free Software Foundation, Inc.,
  17. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. * http://www.gnu.org/copyleft/gpl.html
  19. *
  20. * @file
  21. * @package MediaWiki
  22. * @author Lupo
  23. * @since 1.20
  24. */
  25. header( 'Content-Type: text/javascript; charset=utf-8' );
  26.  
  27. $moduleImplementations = [
  28. 'testUsesMissing' => "
  29. mw.loader.implement( 'testUsesMissing', function () {
  30. mw.loader.testFail( 'Module usesMissing script should not run.' );
  31. }, {}, {});
  32. ",
  33.  
  34. 'testUsesNestedMissing' => "
  35. mw.loader.implement( 'testUsesNestedMissing', function () {
  36. mw.loader.testFail('Module testUsesNestedMissing script should not run.' );
  37. }, {}, {});
  38. ",
  39.  
  40. 'testSkipped' => "
  41. mw.loader.implement( 'testSkipped', function () {
  42. mw.loader.testFail( false, 'Module testSkipped was supposed to be skipped.' );
  43. }, {}, {});
  44. ",
  45.  
  46. 'testNotSkipped' => "
  47. mw.loader.implement( 'testNotSkipped', function () {}, {}, {});
  48. ",
  49.  
  50. 'testUsesSkippable' => "
  51. mw.loader.implement( 'testUsesSkippable', function () {}, {}, {});
  52. ",
  53.  
  54. 'testUrlInc' => "
  55. mw.loader.implement( 'testUrlInc', function () {} );
  56. ",
  57. 'testUrlInc.a' => "
  58. mw.loader.implement( 'testUrlInc.a', function () {} );
  59. ",
  60. 'testUrlInc.b' => "
  61. mw.loader.implement( 'testUrlInc.b', function () {} );
  62. ",
  63. 'testUrlOrder' => "
  64. mw.loader.implement( 'testUrlOrder', function () {} );
  65. ",
  66. 'testUrlOrder.a' => "
  67. mw.loader.implement( 'testUrlOrder.a', function () {} );
  68. ",
  69. 'testUrlOrder.b' => "
  70. mw.loader.implement( 'testUrlOrder.b', function () {} );
  71. ",
  72. ];
  73.  
  74. $response = '';
  75.  
  76. // Does not support the full behaviour of ResourceLoaderContext::expandModuleNames(),
  77. // Only supports dotless module names joined by comma,
  78. // with the exception of the hardcoded cases for testUrl*.
  79. if ( isset( $_GET['modules'] ) ) {
  80. if ( $_GET['modules'] === 'testUrlInc,testUrlIncDump|testUrlInc.a,b' ) {
  81. $modules = [ 'testUrlInc', 'testUrlIncDump', 'testUrlInc.a', 'testUrlInc.b' ];
  82. } elseif ( $_GET['modules'] === 'testUrlOrder,testUrlOrderDump|testUrlOrder.a,b' ) {
  83. $modules = [ 'testUrlOrder', 'testUrlOrderDump', 'testUrlOrder.a', 'testUrlOrder.b' ];
  84. } else {
  85. $modules = explode( ',', $_GET['modules'] );
  86. }
  87. foreach ( $modules as $module ) {
  88. if ( isset( $moduleImplementations[$module] ) ) {
  89. $response .= $moduleImplementations[$module];
  90. } elseif ( preg_match( '/^test.*Dump$/', $module ) === 1 ) {
  91. $queryModules = $_GET['modules'];
  92. $queryVersion = isset( $_GET['version'] ) ? strval( $_GET['version'] ) : null;
  93. $response .= 'mw.loader.implement( ' . json_encode( $module )
  94. . ', function ( $, jQuery, require, module ) {'
  95. . 'module.exports.query = { '
  96. . 'modules: ' . json_encode( $queryModules ) . ','
  97. . 'version: ' . json_encode( $queryVersion )
  98. . ' };'
  99. . '} );';
  100. } else {
  101. // Default
  102. $response .= 'mw.loader.state(' . json_encode( $module ) . ', "missing" );' . "n";
  103. }
  104. }
  105. }
  106.  
  107. echo $response;
Add Comment
Please, Sign In to add comment