Loading plugins/staticpage/static.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -385,17 +385,18 @@ void blogi::StaticPage::Search(const int tid, const char* word, blogi::SearchRet std::vector<char> buf; blogi::SQL sql; blogi::DBResult res; sql << "SELECT id,url,meta,text FROM table WHERE text LIKE '%s'"<< sql.escaped(buf,word) <<"'%' OR meta LIKE '%" << sql.escaped(buf,word) << "%';"; sql << "SELECT id,url,meta,text FROM static_content WHERE text @@ to_tsquery('" << word <<"') OR meta @@ to_tsquery('" << word <<"');"; int count=Args->database[tid]->exec(&sql,res); for (int i=0; i < count; ++i) { SearchRet::Data data; data.title=res[i][2]; data.title=res[i][1]; int tlen = strlen(res[i][3]) < 25 ? strlen(res[i][3]) : 25; std::copy(res[i][2],res[i][2]+strlen(res[i][2]),std::back_inserter(data.text)); std::copy(res[i][3],res[i][3]+tlen,std::back_inserter(data.text)); data.text.push_back('\0'); char url[512]; std::string surl=Args->config->buildurl("staticpage/",url,512); Loading src/blogi.cpp +45 −0 Original line number Diff line number Diff line Loading @@ -303,6 +303,51 @@ void blogi::Blogi::settingsPage(libhttppp::HttpRequest* curreq,const int tid,con } void blogi::Blogi::searchPage(libhttppp::HttpRequest* curreq, const int tid, const char* sessionid){ char url[512]; std::string word=curreq->getRequestURL()+strlen(PlgArgs->config->buildurl("search/",url,512)); SearchRet sdat; for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ PluginApi *api=curplg->getInstace(); api->Search(tid,word.c_str(),sdat,sessionid); } libhtmlpp::HtmlElement index; if(curreq->isMobile()) index=MIndex; else index=Index; for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ if(curreq->isMobile()) curplg->getInstace()->Rendering(tid,curreq,&index,RenderingType::Mobile); else curplg->getInstace()->Rendering(tid,curreq,&index,RenderingType::Desktop); } libhtmlpp::HtmlString search,out; search << "<ul>"; for(SearchRet::Data *cdat=sdat.getfirstData(); cdat; cdat=cdat->nextData()){ search << "<li>" << "<a href=\"" << cdat->anchor << "\" >" << cdat->title << "</a>" << "<p> " << cdat->text.data() << "</p>" << "</li>"; } search << "</ul>"; index.getElementbyID("main")->appendChild(search.parse()); PlgArgs->theme->printSite(tid,out,&index,curreq->getRequestURL(),false); libhttppp::HttpResponse curres; curres.setState(HTTP200); curres.setVersion(HTTPVERSION(1.1)); curres.setContentType("text/html"); curres.send(curreq,out.c_str(),out.size()); } Loading Loading
plugins/staticpage/static.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -385,17 +385,18 @@ void blogi::StaticPage::Search(const int tid, const char* word, blogi::SearchRet std::vector<char> buf; blogi::SQL sql; blogi::DBResult res; sql << "SELECT id,url,meta,text FROM table WHERE text LIKE '%s'"<< sql.escaped(buf,word) <<"'%' OR meta LIKE '%" << sql.escaped(buf,word) << "%';"; sql << "SELECT id,url,meta,text FROM static_content WHERE text @@ to_tsquery('" << word <<"') OR meta @@ to_tsquery('" << word <<"');"; int count=Args->database[tid]->exec(&sql,res); for (int i=0; i < count; ++i) { SearchRet::Data data; data.title=res[i][2]; data.title=res[i][1]; int tlen = strlen(res[i][3]) < 25 ? strlen(res[i][3]) : 25; std::copy(res[i][2],res[i][2]+strlen(res[i][2]),std::back_inserter(data.text)); std::copy(res[i][3],res[i][3]+tlen,std::back_inserter(data.text)); data.text.push_back('\0'); char url[512]; std::string surl=Args->config->buildurl("staticpage/",url,512); Loading
src/blogi.cpp +45 −0 Original line number Diff line number Diff line Loading @@ -303,6 +303,51 @@ void blogi::Blogi::settingsPage(libhttppp::HttpRequest* curreq,const int tid,con } void blogi::Blogi::searchPage(libhttppp::HttpRequest* curreq, const int tid, const char* sessionid){ char url[512]; std::string word=curreq->getRequestURL()+strlen(PlgArgs->config->buildurl("search/",url,512)); SearchRet sdat; for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ PluginApi *api=curplg->getInstace(); api->Search(tid,word.c_str(),sdat,sessionid); } libhtmlpp::HtmlElement index; if(curreq->isMobile()) index=MIndex; else index=Index; for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ if(curreq->isMobile()) curplg->getInstace()->Rendering(tid,curreq,&index,RenderingType::Mobile); else curplg->getInstace()->Rendering(tid,curreq,&index,RenderingType::Desktop); } libhtmlpp::HtmlString search,out; search << "<ul>"; for(SearchRet::Data *cdat=sdat.getfirstData(); cdat; cdat=cdat->nextData()){ search << "<li>" << "<a href=\"" << cdat->anchor << "\" >" << cdat->title << "</a>" << "<p> " << cdat->text.data() << "</p>" << "</li>"; } search << "</ul>"; index.getElementbyID("main")->appendChild(search.parse()); PlgArgs->theme->printSite(tid,out,&index,curreq->getRequestURL(),false); libhttppp::HttpResponse curres; curres.setState(HTTP200); curres.setVersion(HTTPVERSION(1.1)); curres.setContentType("text/html"); curres.send(curreq,out.c_str(),out.size()); } Loading