示例#1
0
 /**
  * Invoke plugin and test various combinations of request and plugin parameters
  */
 public function testInvoke()
 {
     $plugin = $this->_getPlugin(true);
     $request = $this->_controller->getRequest();
     $parameters = new \Zend\Stdlib\Parameters();
     // Defaults only
     $parameters->fromArray(array());
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Default', 'direction' => 'asc'), $plugin('Default'));
     // Explicit order in request
     $parameters->fromArray(array('order' => 'Order'));
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Order', 'direction' => 'asc'), $plugin('Default'));
     // Invalid (empty) order in request
     $parameters->fromArray(array('order' => ''));
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Default', 'direction' => 'asc'), $plugin('Default'));
     // Explicit order and direction in request
     $parameters->fromArray(array('order' => 'Order', 'direction' => 'asc'));
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Order', 'direction' => 'asc'), $plugin('Default'));
     // Explicit order and non-default direction in request
     $parameters->fromArray(array('order' => 'Order', 'direction' => 'desc'));
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Order', 'direction' => 'desc'), $plugin('Default'));
     // Explicit order and invalid direction in request
     $parameters->fromArray(array('order' => 'Order', 'direction' => 'invalid'));
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Order', 'direction' => 'asc'), $plugin('Default'));
     // Explicit order and invalid direction in request, nonstandard default direction
     $parameters->fromArray(array('order' => 'Order', 'direction' => 'invalid'));
     $request->setQuery($parameters);
     $this->assertEquals(array('order' => 'Order', 'direction' => 'desc'), $plugin('Default', 'desc'));
 }
 public function createAjaxRequestWithSpecificPostData($postData)
 {
     $request = new Request();
     $request->getHeaders()->addHeaders(['X_REQUESTED_WITH' => 'XMLHttpRequest']);
     $parameters = new \Zend\Stdlib\Parameters();
     $parameters->fromArray($postData);
     $request->setPost($parameters);
     return $request;
 }
示例#3
0
 /**
  * Test feed generation
  *
  * @return void
  */
 public function testRSS()
 {
     // Set up a request -- we'll sort by title to ensure a predictable order
     // for the result list (relevance or last_indexed may lead to unstable test
     // cases).
     $request = new \Zend\Stdlib\Parameters();
     $request->set('lookfor', 'id:testbug2 OR id:testsample1');
     $request->set('skip_rss_sort', 1);
     $request->set('sort', 'title');
     $request->set('view', 'rss');
     $results = $this->getServiceManager()->get('VuFind\\SearchResultsPluginManager')->get('Solr');
     $results->getParams()->initFromRequest($request);
     $helper = new ResultFeed();
     $helper->setView($this->getPhpRenderer($this->getPlugins()));
     $feed = $helper->__invoke($results, '/test/path');
     $this->assertTrue(is_object($feed));
     $rss = $feed->export('rss');
     // Make sure it's really an RSS feed:
     $this->assertTrue(strstr($rss, '<rss') !== false);
     // Make sure custom Dublin Core elements are present:
     $this->assertTrue(strstr($rss, 'dc:format') !== false);
     // Now re-parse it and check for some expected values:
     $parsedFeed = \Zend\Feed\Reader\Reader::importString($rss);
     $this->assertEquals('Showing 1-2 of 2', $parsedFeed->getDescription());
     $items = [];
     $i = 0;
     foreach ($parsedFeed as $item) {
         $items[$i++] = $item;
     }
     $this->assertEquals('Journal of rational emotive therapy : ' . 'the journal of the Institute for Rational-Emotive Therapy.', $items[1]->getTitle());
 }
示例#4
0
 /**
  * Either assign the requested search object to the view or display a flash
  * message indicating why the operation failed.
  *
  * @param string $searchId ID value of a saved advanced search.
  *
  * @return bool|object     Restored search object if found, false otherwise.
  */
 protected function restoreAdvancedSearch($searchId)
 {
     $savedSearch = parent::restoreAdvancedSearch($searchId);
     if ($savedSearch) {
         if ($filter = $savedSearch->getParams()->getSpatialDateRangeFilter(true)) {
             $req = new \Zend\Stdlib\Parameters();
             $req->set('filter', [$filter['field'] . ':"' . $filter['value'] . '"']);
             if (isset($filter['type'])) {
                 $req->set('search_sdaterange_mvtype', $filter['type']);
             }
             $savedSearch->getParams()->initSpatialDateRangeFilter($req);
         }
     }
     return $savedSearch;
 }
示例#5
0
 /**
  * Create the URL used to apply the filter from a existing URL.
  *
  * @param array $qsParams Query string params.
  *
  * @return NULL|string
  */
 private function rewriteBaseUrl($qsParams)
 {
     $url = null;
     if ($this->getBaseUrl()) {
         $baseUrlParts = explode('?', $this->getBaseUrl());
         $qsParser = new \Zend\Stdlib\Parameters();
         $qsParser->fromArray($qsParams);
         if (count($baseUrlParts) > 1) {
             $qsParser->fromString($baseUrlParts[1]);
             $qsParams = array_merge($qsParser->toArray(), $qsParams);
             $qsParser->fromArray($qsParams);
         }
         $baseUrlParts[1] = $qsParser->toString();
         $url = implode('?', $baseUrlParts);
     }
     return $url;
 }