- streamlined way of managing query parameters
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user