use new batch mode to add files

master
Gilles Crettenand 11 years ago
parent 33649ccc03
commit 112ac74355

@ -190,19 +190,19 @@ class NetBiblio extends WebService
public function GetWishes()
{
$books = $this->getUser()->getWishes();
return array_values(array_map(array($this, 'AddFiles'), $books));
return array_values($this->AddFiles($books));
}
public function GetCirculations()
{
$circulations = $this->getUser()->getCirculations();
return array_values(array_map(array($this, 'AddFiles'), $circulations));
return array_values($this->AddFiles($circulations));
}
public function GetOldCirculations()
{
$circulations = $this->getUser()->getOldCirculations();
return array_values(array_map(array($this, 'AddFiles'), $circulations));
return array_values($this->AddFiles($circulations));
}
public function AddWish($bookNr)
@ -222,7 +222,7 @@ class NetBiblio extends WebService
$codes = json_decode($codes, true);
$codes = array_map('intval', $codes);
$books = AudioBook::findBy('NoticeNr', $codes, true);
return array_values(array_map(array($this, 'AddFiles'), $books));
return array_values($this->AddFiles($books));
}
private function GetFiles(array $ids)
@ -247,16 +247,24 @@ class NetBiblio extends WebService
return json_decode($json, true);
}
private function AddFiles(array $book)
private function AddFiles(array $books)
{
$files = $this->GetFiles(array($book['code']));
if(isset($books['code'])) {
$result = $this->AddFiles(array($books));
return reset($result);
}
if (is_array($files) && isset($files[$book['code']])) {
$book['files'] = $files[$book['code']];
$ids = array_map(function($b) { return $b['code']; }, $books);
$files = $this->GetFiles($ids);
foreach($books as $k => $b) {
if(isset($files[$b['code']])) {
$books[$k]['files'] = $files[$b['code']];
} else {
$book['files'] = array();
// we need to have an empty array for mobile apps compatibility.
$books[$k]['files'] = array();
}
}
return $book;
return $books;
}
public function FindBook($code)
@ -283,7 +291,7 @@ class NetBiblio extends WebService
$ids = Connection::execute($sql)->to_array();
$ids = array_map(function($a) { return $a['NoticeId']; }, $ids);
$books = AudioBook::findBy('NoticeId', $ids, true);
return array_values(array_map(array($this, 'AddFiles'), $books));
return array_values($this->AddFiles($books));
}
public function Search($query, $start, $limit)
@ -376,8 +384,10 @@ class NetBiblio extends WebService
'facets' => $results['facet_counts']['facet_fields'],
);
foreach ($results['response']['docs'] as $doc) {
$data[] = $this->AddFiles((array) $doc);
if($results['response']['docs']) {
$books = array_map(function($o) { return (array) $o; }, $results['response']['docs']);
$books = $this->AddFiles($books);
$data = array_merge($data, $books);
}
return $data;
@ -431,7 +441,7 @@ class NetBiblio extends WebService
$ids = array_map(function($r) { return $r['id']; }, $results['response']['docs']);
$books = AudioBook::findBy('NoticeID', $ids, true);
$books = array_map(array($this, 'AddFiles'), $books);
$books = $this->AddFiles($books);
$data = array();
foreach($books as $b) {

Loading…
Cancel
Save