/** * 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; }
/** * 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()); }
/** * 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; }
/** * 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; }