Commit 0d1afde3 authored by jan.koester's avatar jan.koester
Browse files

search is working

parent 5266b6ed
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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);
+45 −0
Original line number Diff line number Diff line
@@ -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());

}