/**
  * Finds search suggestions phrases for chosen query
  *
  * @requestParam string $query search term for suggestions
  *
  * @responseParam array $items The list of phrases matching the query
  *
  * @example &query=los
  */
 public function getList()
 {
     wfProfileIn(__METHOD__);
     if (!empty($this->wg->EnableLinkSuggestExt)) {
         $query = trim($this->request->getVal(self::PARAMETER_QUERY, null));
         if (empty($query)) {
             throw new MissingParameterApiException(self::PARAMETER_QUERY);
         }
         $request = new WebRequest();
         $request->setVal('format', 'array');
         $linkSuggestions = LinkSuggest::getLinkSuggest($request);
         if (!empty($linkSuggestions)) {
             foreach ($linkSuggestions as $suggestion) {
                 $searchSuggestions[]['title'] = $suggestion;
             }
             $this->response->setVal('items', $searchSuggestions);
         } else {
             throw new NotFoundApiException();
         }
         $this->response->setCacheValidity(WikiaResponse::CACHE_STANDARD);
     } else {
         throw new NotFoundApiException('Link Suggest extension not available');
     }
     wfProfileOut(__METHOD__);
 }
 function __construct(WebRequest $request)
 {
     // put the username and password field in the expected place for validation MAIN-1283
     $request->setVal('userloginext01', $request->getVal('username'));
     $request->setVal('userloginext02', $request->getVal('password'));
     $request->setVal('email', $this->getUserEmail($request));
     $request->setVal('type', 'signup');
     parent::__construct($request);
 }
 function __construct(WebRequest $request)
 {
     $this->fbUserId = $request->getVal('fbuserid');
     $this->fbFeedOptions = explode(',', $request->getVal('fbfeedoptions', ''));
     // get an email from Facebook API
     $resp = F::app()->sendRequest('FacebookSignup', 'getFacebookData', array('fbUserId' => $this->fbUserId));
     // add an email to the request and pass it to the underlying class
     $request->setVal('email', $resp->getVal('email', false));
     if ($request->getVal('type', '') == '') {
         $request->setVal('type', 'signup');
     }
     parent::__construct($request);
 }
 public function __construct(WebRequest $request)
 {
     parent::__construct($request);
     $groups = explode(',', $this->mOid);
     foreach ($groups as $groupName) {
         // fake request to a group
         $groupRequest = new WebRequest();
         $groupRequest->setVal('type', 'group');
         $groupRequest->setVal('oid', $groupName);
         $builder = new AssetsManagerGroupBuilder($groupRequest);
         $this->mContent .= "\n\n" . $builder->getContent();
         $this->mContentType = $builder->getContentType();
     }
 }
 public function __construct(WebRequest $request)
 {
     parent::__construct($request);
     $files = explode(',', $this->mOid);
     foreach ($files as $file) {
         // fake single SASS file request
         $sassRequest = new WebRequest();
         $sassRequest->setVal('type', 'sass');
         $sassRequest->setVal('oid', $file);
         $builder = new AssetsManagerSassBuilder($sassRequest);
         $this->mContent .= "\n\n/* {$file} */\n" . $builder->getContent();
     }
     $this->mContentType = AssetsManager::TYPE_CSS;
 }
 /**
  * Initialize instance variables from request and create an Upload handler
  *
  * @param WebRequest $request The request to extract variables from
  */
 protected function loadRequest($request)
 {
     global $wgUser, $wgMaxUploadFiles;
     // let's make the parent happy
     wfSuppressWarnings();
     $_FILES['wpUploadFile'] = $_FILES['wpUploadFile0'];
     wfRestoreWarnings();
     // Guess the desired name from the filename if not provided
     $this->mDesiredDestNames = array();
     $this->mUploads = array();
     // deal with session keys, if we have some pick the first one, for now
     $vals = $request->getValues();
     $fromsession = false;
     foreach ($vals as $k => $v) {
         if (preg_match("@^wpSessionKey@", $k)) {
             $request->setVal('wpSessionKey', $v);
             $fromsession = true;
             $filenum = preg_replace("@wpSessionKey@", '', $k);
             $request->setVal('wpDestFile', $request->getVal('wpDestFile' . $filenum));
             $up = UploadBase::createFromRequest($request);
             $this->mUploads[] = $up;
             $this->mDesiredDestNames[] = $request->getVal('wpDestFile' . $filenum);
         }
     }
     parent::loadRequest($request);
     $this->mUploadClicked = $request->wasPosted() && ($request->getCheck('wpUpload') || $request->getCheck('wpUploadIgnoreWarning'));
     if (!$fromsession) {
         for ($i = 0; $i < $wgMaxUploadFiles; $i++) {
             $this->mDesiredDestNames[$i] = $request->getText('wpDestFile' . $i);
             if (!$this->mDesiredDestNames[$i] && $request->getFileName('wpUploadFile' . $i) !== null) {
                 $this->mDesiredDestNames[$i] = $request->getFileName('wpUploadFile' . $i);
             }
             wfSuppressWarnings();
             $request->setVal('wpUploadFile', $_FILES['wpUploadFile' . $i]);
             wfRestoreWarnings();
             $request->setVal('wpDestFile', $request->getVal('wpDestFile' . $i));
             move_uploaded_file('wpUploadFile' . $i, 'wpUploadFile');
             wfSuppressWarnings();
             $_FILES['wpUploadFile'] = $_FILES['wpUploadFile' . $i];
             wfRestoreWarnings();
             $up = UploadBase::createFromRequest($request);
             if ($up) {
                 $this->mUploads[] = $up;
             }
         }
     }
     $this->mDesiredDestName = $this->mDesiredDestNames[0];
     $this->mUpload = $this->mUploads[0];
 }
 /**
  * @group Slow
  * @slowExecutionTime 0.01651 ms
  * @dataProvider resourceLoaderModifyMaxAgeDataProvider
  *
  * @param $timestamp int timestamp in URL
  * @param $ttl int expected caching period
  */
 public function testResourceLoaderModifyMaxAge($version, $ttl)
 {
     global $wgHooks;
     $resourceLoader = new ResourceLoader();
     $resourceLoader->register('WikiaTestModule', array('class' => 'TestResourceLoaderModule'));
     $request = new WebRequest();
     $request->setVal('modules', 'WikiaTestModule');
     $request->setVal('version', join('-', $version));
     // set up hooks
     $wgHooks['ResourceLoaderCacheControlHeaders'][] = 'ResourceLoaderTest::onResourceLoaderCacheControlHeaders';
     ob_start();
     $resourceLoader->respond(new ResourceLoaderContext($resourceLoader, $request));
     ob_end_clean();
     // hook ResourceLoaderHooks::onResourceLoaderModifyMaxAge was called
     // check modified caching period with expected one
     $this->assertEquals($ttl, self::$ttl, 'TTL should match expected value');
 }
 /**
  * @dataProvider pageIsTrackableProvider
  * @param $ns int namespace
  * @param $action string action=... value
  * @param $exists bool does the page exist?
  * @param $expectedResult bool expected result
  */
 public function testPageIsTrackable($ns, $action, $exists, $expectedResult)
 {
     $title = $this->mockClassWithMethods('Title', ['getNamespace' => $ns, 'exists' => $exists]);
     $request = new WebRequest();
     $request->setVal('action', $action);
     $this->mockGlobalVariable('wgRequest', $request);
     $this->assertEquals($expectedResult, LyricFindHooks::pageIsTrackable($title));
 }
 /**
  * @group Slow
  * @slowExecutionTime 0.85936 ms
  */
 public function testSassBuilder()
 {
     // disable memcache layer in this test
     $mock_memc = $this->getMock('stdClass', array('get', 'set'));
     $mock_memc->expects($this->any())->method('get')->will($this->returnValue(false));
     $mock_memc->expects($this->any())->method('set')->will($this->returnValue(true));
     $this->mockGlobalVariable('wgMemc', $mock_memc);
     $request = new WebRequest();
     $request->setVal('oid', self::SASS_FILE);
     $request->setVal('cb', $this->cb);
     $builder = new AssetsManagerSassBuilder($request);
     $this->assertContains('#foo', $builder->getContent());
     // test URLs rewriting
     $this->assertContains('sprite.png', $builder->getContent());
     $this->assertContains("{$this->cdn}/skins/shared/images/sprite.png", $builder->getContent());
     $this->assertNotContains('/* $wgCdnStylePath */', $builder->getContent());
     // test base64 encoding
     $this->assertNotContains('blank.gif', $builder->getContent());
     $this->assertContains('data:image/gif;base64,', $builder->getContent());
     $this->assertNotContains('/* base64 */', $builder->getContent());
 }
 /**
  * If the user has specified that they want to edit the page with VE, suppress any redirect.
  * @param Title $title Title being used for request
  * @param Article|null $article
  * @param OutputPage $output
  * @param User $user
  * @param WebRequest $request
  * @param MediaWiki $mediaWiki
  * @return bool Always true
  */
 public static function onBeforeInitialize(Title $title, $article, OutputPage $output, User $user, WebRequest $request, MediaWiki $mediaWiki)
 {
     if ($request->getVal('veaction') === 'edit') {
         $request->setVal('redirect', 'no');
     }
     return true;
 }
 /**
  * Returns instance of AssetsManager builder handling given type of assets
  *
  * @param string $type assets type ('one', 'group', 'groups', 'sass')
  * @param string $oid assets / group name
  * @return AssetsManagerBaseBuilder instance of builder
  */
 private function getBuilder($type, $oid)
 {
     $type = ucfirst($type);
     // TODO: add a factory method to AssetsManager
     $className = "AssetsManager{$type}Builder";
     if (class_exists($className)) {
         $request = new WebRequest();
         $request->setVal('oid', $oid);
         $builder = new $className($request);
         return $builder;
     } else {
         return null;
     }
 }
 protected function setUpRequest($params = array())
 {
     $wgRequest = new WebRequest();
     foreach ($params as $key => $value) {
         $wgRequest->setVal($key, $value);
     }
     $this->mockGlobalVariable('wgRequest', $wgRequest);
 }