Streamline app compatibility between Solr and WS

master
Gilles Crettenand 11 years ago
parent 1ee3aa305d
commit 018846e567

@ -23,18 +23,18 @@ namespace BSR\Lib\db;
* @property string sql_collection
* @property string isbn
* @property string sql_isbn
* @property string readBy
* @property string sql_readBy
* @property string reader
* @property string sql_reader
* @property string cover
* @property string sql_cover
* @property string category
* @property string sql_category
* @property string date
* @property string sql_date
* @property string code3
* @property string sql_code3
* @property string code3Long
* @property string sql_code3Long
* @property string availabilityDate
* @property string sql_availabilityDate
* @property string producerCode
* @property string sql_producerCode
* @property string producer
* @property string sql_producer
* @property string genre
* @property string sql_genre
* @property string genreCode
@ -45,12 +45,12 @@ namespace BSR\Lib\db;
* @property string sql_link
* @property string linkTitle
* @property string sql_linkTitle
* @property string typeMedia1
* @property string sql_typeMedia1
* @property string mediaType
* @property string sql_mediaType
*/
class AudioBook extends DbMapping
{
protected $attributeNames = 'id title author code summary editor media collection isbn readBy reader cover category date code3 code3Long genre genreCode coverdisplay link linkTitle mediaType typeMedia1';
protected $attributeNames = 'id title author code summary editor media collection isbn reader cover category availabilityDate producerCode producer genre genreCode coverdisplay link linkTitle mediaType';
public static function find($id) {
return self::findBy('NoticeID', $id);
@ -88,22 +88,20 @@ class AudioBook extends DbMapping
Fields.[490a] AS collection,
isbn.DisplayText AS isbn,
Fields.[901] AS reader,
Fields.[901] AS readBy, -- for compatibility
Fields.[899a] AS cover,
'' AS category, -- supposed to come from tags 600, 610, 650, 651, 655, 690, 691, 695, 696 but always empty anyway
CONVERT(VARCHAR, Notices.[CreationDate], 102) AS date,
LTRIM(RTRIM(Notices.[userdefined3code])) AS code3,
[Code3].TextFre AS code3Long,
[GenreCode].TextFre AS genre,
[GenreCode].Code AS genreCode,
item1.AcquisitionDate AS availabilityDate,
ProducerCode.TextFre As producer,
LTRIM(RTRIM(ProducerCode.Code)) AS producerCode,
GenreCode.TextFre As genre,
LTRIM(RTRIM(GenreCode.Code)) AS genreCode,
Notices.[coverdisplay],
Fields.[856u] AS link,
Fields.[856z] AS linkTitle,
Notices.[MediaType1Code] AS mediaType,
Notices.[MediaType1Code] AS typeMedia1 -- for compatibility
FROM Notices
INNER JOIN Codes AS Code3 ON Notices.userdefined3code = Code3.Code AND Code3.Type=6
INNER JOIN Codes AS GenreCode ON MediaType2Code = GenreCode.Code AND GenreCode.Type = 2
INNER JOIN Codes As GenreCode ON Notices.MediaType2Code = GenreCode.Code AND GenreCode.Type = 2
INNER JOIN Codes AS ProducerCode ON Notices.userdefined3code = ProducerCode.Code AND ProducerCode.Type=6
LEFT OUTER JOIN (
SELECT *
FROM (
@ -137,6 +135,11 @@ class AudioBook extends DbMapping
FOR Field IN ([520], [901], [300], [020], [490a], [260b], [260c], [856u], [856z], [899a])
) AS pvt
) Fields ON Notices.NoticeID = Fields.NoticeID
OUTER APPLY (
SELECT TOP 1 *
FROM Items
WHERE Notices.NoticeID = NoticeId
) AS item1
LEFT JOIN Authorities AS isbn ON isbn.AuthorityID = Fields.[020]
WHERE
LTRIM(RTRIM(Notices.[%s])) IN ('%s')

@ -296,10 +296,12 @@ class NetBiblio extends WebService
$b['files'] = $files;
}
// add date if we have an availabilityDate for Mobile apps compatibility
if(! isset($b['date']) && isset($b['availabilityDate'])) {
// add fields for mobile apps compatibility
$b['date'] = date('Y.m.d', strtotime($b['availabilityDate']));
}
$b['readBy'] = $b['reader'];
$b['code3'] = $b['producerCode'];
$b['code3Long'] = $b['producer'];
$b['typeMedia1'] = $b['mediaType'];
return $b;
}, $books);

Loading…
Cancel
Save