From ab5c317fd9cce2e9a81495e3ff03b569f8f26db7 Mon Sep 17 00:00:00 2001 From: konrad Date: Fri, 21 Nov 2008 08:39:34 +0000 Subject: [PATCH] moved templates to own class git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@197 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- src/smoke.pro | 6 ++- src/templates.cpp | 126 ++++++++++++++++++++++++++++++++++++++++++++++ src/templates.h | 35 +++++++++++++ src/webrequest.cpp | 90 +------------------------------- src/webrequest.h | 3 + www/inc/db/db_scheme.php | 1 + 6 files changed, 172 insertions(+), 89 deletions(-) create mode 100644 src/templates.cpp create mode 100644 src/templates.h diff --git a/src/smoke.pro b/src/smoke.pro index a62f6df..35e7e21 100644 --- a/src/smoke.pro +++ b/src/smoke.pro @@ -44,7 +44,8 @@ SOURCES = \ ticketrender.cpp \ orderwin.cpp \ labeldlg.cpp \ - version.cpp + version.cpp \ + templates.cpp HEADERS = \ keygen.h \ @@ -67,7 +68,8 @@ HEADERS = \ ticketrender.h \ orderwin.h \ labeldlg.h \ - misc.h + misc.h \ + templates.h #some PHP files are listed in this file to scan them for translatable items #use genphpscan.sh to regenerate it. diff --git a/src/templates.cpp b/src/templates.cpp new file mode 100644 index 0000000..c53ba42 --- /dev/null +++ b/src/templates.cpp @@ -0,0 +1,126 @@ +// +// C++ Implementation: templates +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2008 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +#include "templates.h" +#include "webrequest.h" +#include "main.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +MTemplates::MTemplates(MWebRequest*r,QString p) +{ + req=r; + profileid=p; +} + +QString MTemplates::getTemplate(QString f) +{ + //syntax check + f=f.toLower(); + QRegExp fregexp("[a-z0-9_\\.]+"); + if(!fregexp.exactMatch(f))return ""; + //basics + QString dname=req->dataDir()+"/templates/"; + QSettings set; + set.beginGroup("templates/"+profileid); + //do we need an update? + QDateTime last=QDateTime::fromTime_t(set.value("lastupdate",0).toInt()+300); + if(last fmap; + for(int i=0;irequest("gettemplatelist",""))break; + if(req->responseStatus()!=MWebRequest::Ok)break; + //remember update time + set.setValue("lastupdate",QDateTime::currentDateTime().toTime_t()); + //parse info + QDomDocument doc; + if(!doc.setContent(req->responseBody()))break; + //prune old stuff + set.remove("checksum"); + //scan and create new list + QDomNodeList nl=doc.elementsByTagName("Template"); + QMapnfmap; + for(int i=0;idataDir()).mkpath("templates"); + //retrieve template file + if(!req->request("gettemplate",f.toAscii())) + return ""; + if(req->responseStatus()!=MWebRequest::Ok) + return ""; + QFile fl(dname+"/"+f); + if(!fl.open(QIODevice::WriteOnly)) + return ""; + fl.write(req->responseBody()); + fl.close(); + } + //return file name + return dname+"/"+f; +} + +bool MTemplates::setTemplate(QString n,QString f) +{ + //sanity check + QRegExp fregexp("[a-z0-9_\\.]+"); + if(!fregexp.exactMatch(n))return false; + //get content + QFile fl(f); + if(!fl.open(QIODevice::ReadOnly)) + return false; + QByteArray ba=fl.readAll(); + fl.close(); + //send to server + if(!req->request("settemplate",n.toAscii()+"\n"+ba)) + return false; + if(req->responseStatus()!=MWebRequest::Ok) + return false; + //delete it from cache, so it is retrieved again + QSettings().remove("templates/"+profileid+"/checksum/"+n); + QFile(req->dataDir()+"/templates/"+n).remove(); + //return success + return true; +} diff --git a/src/templates.h b/src/templates.h new file mode 100644 index 0000000..3ef3c1a --- /dev/null +++ b/src/templates.h @@ -0,0 +1,35 @@ +// +// C++ Interface: templates +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2008 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +#ifndef MAGICSMOKE_TEMPLATES_H +#define MAGICSMOKE_TEMPLATES_H + +#include + +class MWebRequest; + +class MTemplates +{ + public: + MTemplates(MWebRequest*,QString); + + QString getTemplate(QString); + + bool setTemplate(QString,QString); + + private: + MWebRequest*req; + QString profileid; + +}; + +#endif diff --git a/src/webrequest.cpp b/src/webrequest.cpp index 10d622a..67342a1 100644 --- a/src/webrequest.cpp +++ b/src/webrequest.cpp @@ -25,6 +25,7 @@ #include MWebRequest::MWebRequest(QString pid) + :temp(this,pid) { profileid=pid; webtimeout=30000; @@ -586,95 +587,10 @@ QString MWebRequest::hostName() QString MWebRequest::getTemplate(QString f) { - //syntax check - f=f.toLower(); - QRegExp fregexp("[a-z0-9_\\.]+"); - if(!fregexp.exactMatch(f))return ""; - //basics - QString dname=dataDir()+"/templates/"; - QSettings set; - set.beginGroup("templates/"+profileid); - //do we need an update? - QDateTime last=QDateTime::fromTime_t(set.value("lastupdate",0).toInt()+300); - if(last fmap; - for(int i=0;infmap; - for(int i=0;ischeme["template"]=array( "filename" => array("string","primarykey"), + "description" =>array("string"), "content" => array("blob"), "hash" => array("string:32","notnull") //md5 ); -- 1.7.2.5