diff --git a/mobile.netbiblio.php b/mobile.netbiblio.php index 64091ee..e12d2eb 100644 --- a/mobile.netbiblio.php +++ b/mobile.netbiblio.php @@ -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']]; - } else { - $book['files'] = array(); + $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 { + // 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) {