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

Loading…
Cancel
Save