/* **************************************************************************** * Menu Manager Session * appPath: * useDb: * lang: FIXME: default|lang1|lang2|lang3 * connectionPool: */ MenuManSession::MenuManSession(const std::string& appPath, const std::string& useDb, const std::string& lang, Wt::Dbo::SqlConnectionPool& connectionPool) : appPath_(appPath), useDb_(useDb), lang_(lang), connectionPool_(connectionPool) { if (useDb == "1") { setConnectionPool(connectionPool_); mapClass<MenuMan>("menuman"); // table name menuman Wt::WApplication* app = Wt::WApplication::instance(); std::string path = app->internalPath(); // /lang/menuman/ bool doXmlUpdate = false; // FIXME add security for logon or certificate // hard code /admin/menuman/updatexml for admin work if (path.find("/admin/menuman/updatexml") != std::string::npos) { doXmlUpdate = true; } //Wt::log("start") << " *** MenuManSession::MenuManSession() useDb | path = " << path << " | doXmlUpdate = " << doXmlUpdate << " *** "; if (CrystalBall::InitDb || doXmlUpdate) { try { Wt::Dbo::Transaction t(*this); // Note: you must drop table to do update if (doXmlUpdate) { Wt::log("warning") << "MenuManSession::MenuManSession() SQL Drop Table menuman"; dropTables(); } createTables(); Wt::log("warning") << "Created database: menuman "; if (!ImportXML()) { Wt::log("error") << " *** MenuManSession::MenuManSession() ImportXML failed! *** "; return; } t.commit(); } catch (std::exception& e) { Wt::log("warning") << " *** MenuManSession::MenuManSession() Using existing menuman database = " << e.what(); } } } // end if (useDb == "1") //Wt::log("end") << " *** MenuManSession::MenuManSession() *** "; } // end MenuManSession
/* **************************************************************************** * Get Hits */ std::string HitCounterManImpl::GetHits() { // Create an instance of app to access Internal Paths Wt::WApplication* app = Wt::WApplication::instance(); try { // Start a Transaction Wt::Dbo::Transaction t(session_); hits = session_.query<int>("select count(*) from hitcounterman").where("page = ?").bind(app->internalPath()); //Wt::log("notice") << "HitCounterManImpl::GetHits() hits = " << hits << " | page = " << app->internalPath(); // Commit Transaction t.commit(); } catch (std::exception& e) { std::cerr << e.what() << std::endl; //Wt::log("error") << "HitCounterManImpl::GetHits() Failed reading from hitcounterman database."; hits = 0; } try { Wt::WLocale myString = Wt::WLocale(theLocale.c_str()); // Note: this only works if you set the Separator, use case to set it myString.setGroupSeparator(","); std::string myReturn = myString.toString(hits).toUTF8(); return myReturn; /* * This requires locale to be installed and configured on server std::stringstream ss; ss.imbue(std::locale(theLocale.c_str())); ss << std::fixed << hits; return ss.str(); */ } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::cerr << "HitCounterManImpl::GetHits: Failed local not installed"; Wt::log("error") << "HitCounterManImpl::GetHits() Failed local not installed"; } return std::to_string(hits); } // end GetHits
/* **************************************************************************** * Set */ void HitCounterManImpl::Set() { // Create an instance of app to access Internal Paths Wt::WApplication* app = Wt::WApplication::instance(); try { // Start a Transaction Wt::Dbo::Transaction t(session_); HitCounterMans myHitCounterMan = session_.find<HitCounterMan>(); // hits = myHitCounterMan.size(); // // Commit Transaction t.commit(); } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::cerr << "HitCounterManImpl::Update: Failed reading from hitcounterman database"; Wt::log("error") << "HitCounterManImpl::Update() Failed reading from hitcounterman database"; } try { // Start a Transaction Wt::Dbo::Transaction t(session_); // uniqueHits = session_.query<int>("select COUNT(distinct ipaddress) from hitcounterman").where("page = ?").bind(app->internalPath());; // Commit Transaction t.commit(); } catch (std::exception& e) { std::cerr << e.what() << std::endl; std::cerr << "HitCounterManImpl::Update: Failed reading from hitcounterman database"; Wt::log("error") << "HitCounterManImpl::Update() Failed reading from hitcounterman database"; } } // end