/** * @param Parameter[] $parameters * @param Collection $collection */ public function addParameters(array $parameters, Collection $collection) { foreach ($parameters as $parameter) { $value = ''; $localParams = $parameter->getLocalParams(); if (!empty($localParams)) { if (!isset($localParameterSerializer)) { $localParameterSerializer = new LocalParameterSerializer(); } $value = $localParameterSerializer->serialize($localParams); } $value .= $parameter->getValue(); $collection->add($parameter->getKey(), $value); } }
/** * Get a list of suggestions from the given search string. * @param string $search * String to get suggestions for. * @param array $types * Types to search for. Example page. * @param bool $past * Also search suggestions for past events. * @param array $extra_parameters * Extra parameters to add to the search query. */ public function searchSuggestions($search_string, $types = null, $past = FALSE, $extra_parameters = array(), $max = null) { $client = $this->getClient(); $request = $client->get($search_path = empty($types) ? 'search/suggest' : 'search/suggest/item'); if (!empty($types)) { foreach ($types as $type) { $parameter = new Type($type); $request->getQuery()->add($parameter->getKey(), $parameter->getValue()); } $parameter = new Title($search_string); $request->getQuery()->add($parameter->getKey(), $parameter->getValue()); } else { $parameter = new Query($search_string); $request->getQuery()->add($parameter->getKey(), $parameter->getValue()); } // Add additional requested parameters. foreach ($extra_parameters as $parameter) { $value = ''; $localParams = $parameter->getLocalParams(); if (!empty($localParams)) { if (!isset($localParameterSerializer)) { $localParameterSerializer = new LocalParameterSerializer(); } $value = $localParameterSerializer->serialize($localParams); } $value .= $parameter->getValue(); $request->getQuery()->add($parameter->getKey(), $value); } if ($past) { $request->getQuery()->add('past', 'true'); } if ($max) { $request->getQuery()->add('max', $max); } $this->addVersionToRequest($request); $response = $request->send(); $xmlElement = new SimpleXMLElement($response->getBody(true), 0, false, $this->cdbXmlNamespaceUri); return SuggestionsResult::fromXml($xmlElement); }