diff --git a/src/common/kiwix/manager.cpp b/src/common/kiwix/manager.cpp index 788f1a13a..184de56ce 100644 --- a/src/common/kiwix/manager.cpp +++ b/src/common/kiwix/manager.cpp @@ -345,6 +345,22 @@ namespace kiwix { return booksLanguages; } + vector Manager::getBooksPublishers() { + std::vector booksPublishers; + std::vector::iterator itr; + std::map booksPublishersMap; + + std::sort(library.books.begin(), library.books.end(), kiwix::Book::sortByPublisher); + for ( itr = library.books.begin(); itr != library.books.end(); ++itr ) { + if (booksPublishersMap.find(itr->creator) == booksPublishersMap.end()) { + booksPublishersMap[itr->creator] = true; + booksPublishers.push_back(itr->creator); + } + } + + return booksPublishers; + } + kiwix::Library Manager::cloneLibrary() { return this->library; } diff --git a/src/common/kiwix/manager.h b/src/common/kiwix/manager.h index 5f02d553c..171a24ecb 100644 --- a/src/common/kiwix/manager.h +++ b/src/common/kiwix/manager.h @@ -65,6 +65,7 @@ namespace kiwix { void removeBookPaths(); bool listBooks(const supportedListMode mode, const supportedListSortBy sortBy, const unsigned int maxSize); vector getBooksLanguages(); + vector getBooksPublishers(); string writableLibraryPath;