- streamlined way of managing query parameters

master
Gilles Crettenand 11 years ago
parent c967a3ec1d
commit d797f62c47

@ -41,7 +41,7 @@ class BookSearch
{ {
if(count($texts) > 0) { if(count($texts) > 0) {
$texts = array_map(array('SolrUtils', 'escapeQueryChars'), $texts); $texts = array_map(array('SolrUtils', 'escapeQueryChars'), $texts);
$query = sprintf('%s:(%s)', $field, implode(' OR ', $texts)); $query = sprintf('%s:("%s")', $field, implode('" OR "', $texts));
$this->addQuery($query, null, false); $this->addQuery($query, null, false);
} }
} }

@ -13,7 +13,7 @@ use BSR\Lib\WebService;
class NetBiblio extends WebService class NetBiblio extends WebService
{ {
/** @var string $version version number */ /** @var string $version version number */
public static $version = '1.0.1'; public static $version = '1.0.2';
private $login = ''; private $login = '';
private $client = 'website'; private $client = 'website';
@ -616,9 +616,10 @@ class NetBiblio extends WebService
throw new WebException("CallArg", "Argument must be valid JSON.", -42); throw new WebException("CallArg", "Argument must be valid JSON.", -42);
} }
// The iOS and Android applications still uses 'category' and 'producer' // shortcuts and the iOS app still uses 'category'
$compatibility = array( $compatibility = array(
'category' => 'genre', 'genre' => 'genreCode',
'category' => 'genreCode',
'producer' => 'producerCode' 'producer' => 'producerCode'
); );
foreach($compatibility as $old => $new) { foreach($compatibility as $old => $new) {
@ -645,26 +646,29 @@ class NetBiblio extends WebService
$bs->addQuery($queryArray['queryText'], $type); $bs->addQuery($queryArray['queryText'], $type);
} }
if(isset($queryArray['genre']) && is_array($queryArray['genre'])) { if(isset($queryArray['genreCode']) && is_array($queryArray['genreCode'])) {
if(($key = array_search('J', $queryArray['genre'])) !== false) { // Jeunesse is a particular genre with it's own way of being searched
unset($queryArray['genre']['J']); if(($key = array_search('J', $queryArray['genreCode'])) !== false) {
unset($queryArray['genreCode']['J']);
$queryArray['jeunesse'] = array('filtrer' => 'filtrer'); $queryArray['jeunesse'] = array('filtrer' => 'filtrer');
} }
$selectedGenres = array_filter($queryArray['genre'], function ($c) {
return $c != '0';
});
$bs->addOrQuery($selectedGenres, 'genreCode');
} }
if(isset($queryArray['jeunesse']) && $queryArray['jeunesse']['filtrer'] === 'filtrer') { if(isset($queryArray['jeunesse']) && $queryArray['jeunesse']['filtrer'] === 'filtrer') {
$bs->addQuery(1, 'jeunesse'); $bs->addQuery(1, 'jeunesse');
} }
$availableFields = array('producerCode', 'author', 'reader', 'motsMatieres'); $availableFields = array('producerCode', 'genreCode', 'author', 'reader', 'motsMatieres');
foreach($availableFields as $q) { foreach($availableFields as $q) {
if(isset($queryArray[$q]) && strlen($queryArray[$q]) > 0) { if(isset($queryArray[$q]) && (
$bs->addQuery($queryArray[$q], $q); (is_string($queryArray[$q]) && strlen($queryArray[$q]) > 0) ||
(is_array($queryArray[$q]) && count($queryArray[$q]) > 0)
)) {
if(is_array($queryArray[$q])) {
$bs->addOrQuery($queryArray[$q], $q);
} else {
$bs->addQuery($queryArray[$q], $q);
}
} }
} }

Loading…
Cancel
Save