#include #include "dynamiccontentpostlist.h" void DynamicContentPostList::setCategory(std::string catname) { this->catname = catname; } std::string DynamicContentPostList::render() { auto categoryDao = this->database->createCategoryDao(); auto pageDao = this->database->createPageDao(); auto revisionDao = this->database->createRevisionDao(); QueryOption option; option.includeInvisible = false; auto members = categoryDao->fetchMembers(this->catname, option); std::vector> pageList; for(std::string &member : members) { auto revision = revisionDao->getRevisionForPage(member, 1); pageList.push_back({member, revision->timestamp}); } std::sort(pageList.begin(), pageList.end(), [](std::pair &a, std::pair &b) { return a.second > b.second; }); std::string postListBegin = this->templ->loadResolvedPart("dynamic/postlistbegin"); std::string postListEnd = this->templ->loadResolvedPart("dynamic/postlistend"); std::string postLink = this->templ->loadResolvedPart("dynamic/postlistlink"); std::stringstream stream; stream << postListBegin; for(auto &pair : pageList) { std::string link = this->urlProvider->page(pair.first); std::string date = utils::toISODate(pair.second); Varreplacer replacer{"{"}; replacer.addKeyValue("url", link); replacer.addKeyValue("date", date); replacer.addKeyValue("title", pageDao->find(pair.first)->title); stream << replacer.parse(postLink); } stream << postListEnd; return stream.str(); }