本文整理汇总了C++中ConfigManager::global方法的典型用法代码示例。如果您正苦于以下问题:C++ ConfigManager::global方法的具体用法?C++ ConfigManager::global怎么用?C++ ConfigManager::global使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConfigManager
的用法示例。
在下文中一共展示了ConfigManager::global方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: render
void render(mg_connection* conn, int id, bool reverse){
ConfigManager configs;
// int id = cc_extract_uri_num(conn);
int limit, count;
auto r = unq_read_thread_sp(pDb, 0); // get the root thread
count = r.get()->childCount;
limit = count - configs.global().get<int>("user::viewable_threads");
// delete r;
if (id < 0 || (id < limit && limit != 0) || id > count){
views::info::render(conn, templates.invoke("misc").toggle("invalid_thread_no").build_destory().c_str());
return;
}
r = unq_read_thread_sp(pDb, id); // get the root thread
int pid = unq_thread_parent(pDb, r.get());
if ((pid == -1) && !is_admin(conn)){
views::info::render(conn, templates.invoke("misc").toggle("invalid_thread_no").build_destory().c_str());
// delete r;
return;
}
templates.invoke("site_header").toggle("thread_page").toggle("is_admin", is_admin(conn)) \
.var("THREAD_NO", id).var("THREAD_TITLE", r.get()->author).pipe_to(conn).destory();
templates.invoke("single_thread_header").toggle("homepage", !pid).var("THREAD_NO", id) \
.var("PARENT_NO", pid).toggle("thread", strstr(conn->uri, "/thread/")).pipe_to(conn).destory();
clock_t startc = clock();
// bool reverse = strstr(conn->uri, "/daerht/");
bool admin_view = is_admin(conn);
string username = cck_verify_ssid(conn);
views::each_thread(conn, r.get(), 0, admin_view);
mg_printf_data(conn, "<hr>");
char iid[10];
strcpy(iid, r.get()->ssid);
if(!configs.global().get<bool>("archive"))
templates.invoke("post_form") \
.var("THREAD_NO", to_string(id)).toggle("reply_to_thread"). \
toggle("is_admin", admin_view || !is_assist(conn).empty()).pipe_to(conn).destory();
if (r.get()->childThread) {
// int r_childThread = r->childThread;
// delete r;
int limit = configs.global().get<int>("user::collapse_image");
r = unq_read_thread_sp(pDb, r.get()->childThread); // beginning of the circle
int rid = r.get()->threadID; //the ID
bool too_many_replies = (r.get()->childCount > limit);
int di = 1;
if(reverse)
{
int n_rid = r.get()->prevThread;
// delete r;
r = unq_read_thread_sp(pDb, r.get()->prevThread);
views::each_thread(conn, r.get(), SEND_IS_REPLY + SEND_SHOW_REPLY_LINK, admin_view, iid, username.c_str());
while (r.get()->prevThread != n_rid){
di++;
// int r_prevThread = r->prevThread;
// delete r;
r = unq_read_thread_sp(pDb, r.get()->prevThread);
if(too_many_replies && (di > limit))
views::each_thread(conn, r.get(), SEND_IS_REPLY + SEND_SHOW_REPLY_LINK + SEND_CUT_IMAGE, admin_view, iid, username.c_str());
else
views::each_thread(conn, r.get(), SEND_IS_REPLY + SEND_SHOW_REPLY_LINK, admin_view, iid, username.c_str());
}
}
else
{
views::each_thread(conn, r.get(), SEND_IS_REPLY + SEND_SHOW_REPLY_LINK, admin_view, iid, username.c_str());
while (r.get()->nextThread != rid){
// int r_nextThread = r->nextThread;
// delete r;
r = unq_read_thread_sp(pDb, r.get()->nextThread);
di++;
//views::each_thread(conn, r, true, true, false, too_many_replies && (di > 20), admin_view, iid);
if(too_many_replies && (di > limit))
views::each_thread(conn, r.get(), SEND_IS_REPLY + SEND_SHOW_REPLY_LINK + SEND_CUT_IMAGE, admin_view, iid, username.c_str());
else
views::each_thread(conn, r.get(), SEND_IS_REPLY + SEND_SHOW_REPLY_LINK, admin_view, iid, username.c_str());
}
// if(r) delete r;
}
//.........这里部分代码省略.........
示例2: each_thread
void each_thread(mg_connection* conn, struct Thread* r, char display_state, bool admin_view,
const char* iid,
const char* uid){
time_t now = time(NULL);
string thread_post_time = cc_timestamp_to_time(r->date);
int diff_day = cc_timestamp_diff_day(now, r->date);
const char* content = unq_read_string(pDb, r->content);
string thread_content(content);
delete [] content;
if((display_state & SEND_CUT_LONG_COMMENT) && thread_content.size() > 1024)
thread_content = thread_content.substr(0, 1024) + templates.invoke("misc").toggle("more_contents").build_destory();
//+ "<font color='red'><b>👁" + STRING_MORE + "</b></font>";
HTMLTemplate *ht = templates.invoke_pointer("single_thread");
map<string, bool> stats;
map<string, string> vars;
ConfigManager c;
stats["reply"] = display_state & SEND_IS_REPLY;
stats["show_reply"] = display_state & SEND_SHOW_REPLY_LINK;
stats["archive"] = c.global().get<bool>("archive");
stats["normal_display"] = r->state & NORMAL_DISPLAY || admin_view;
stats["thread_poster_is_admin"] = (strcmp(r->ssid, "Admin") == 0);
stats["thread_poster_is_sameone"] = (strcmp(r->ssid, iid) == 0);
stats["is_sameone"] = (strcmp(r->ssid, uid) == 0);
stats["sage"] = (r->state & SAGE_THREAD && !stats["reply"]);
stats["lock"] = (r->state & LOCKED_THREAD);
stats["delete"] = !(r->state & NORMAL_DISPLAY);
stats["show_admin"] = admin_view;
if (strlen(r->imgSrc) >= 4){
string fname(r->imgSrc);
vars["THREAD_IMAGE"] = fname;
if (!cc_valid_image_ext(fname).empty()){
stats["image_attached"] = true;
if(display_state & SEND_CUT_IMAGE){
struct stat st;
stat(("images/" + fname).c_str(), &st);
stats["show_size_only"] = true;
vars["THREAD_IMAGE_SIZE"] = to_string((int)(st.st_size / 1024));
}
else{
stats["show_full_image"] = true;
vars["THREAD_THUMB_PREFIX"] = c.global().get("image::thumb_prefix");
}
}else{
stats["file_attached"] = true;
}
}
if(r->childThread && !(display_state & SEND_CUT_REPLY_COUNT)){
struct Thread* c = unq_read_thread(pDb, r->childThread);
const char *first_reply = unq_read_string(pDb, c->content);
string display_reply = (c->state & NORMAL_DISPLAY) ? string(first_reply) : "";
stats["show_num_replies"] = true;
vars["NUM_REPLIES"] = to_string(c->childCount);
vars["FIRST_REPLY"] = cc_smart_shorten(display_reply);// display_reply.substr(0, display_reply.find_first_of("<")).substr(0,15);
delete c;
delete[] first_reply;
}
vars["THREAD_POSTER"] = string(r->ssid);
vars["THREAD_NO"] = to_string(r->threadID);
vars["THREAD_CONTENT"] = thread_content;
// stats["show_title"] = !stats["reply"] || strcmp(r->author, STRING_UNTITLED) != 0;
vars["THREAD_TITLE"] = string(r->author);
vars["THREAD_IP"] = string(r->email);
vars["THREAD_POST_TIME"] = thread_post_time;
vars["THREAD_STATE"] = to_string(r->state);
if(diff_day >= 0 && diff_day <= 2){
stats["show_easy_date"] = true;
vars["THREAD_POST_DATE"] = to_string(diff_day);
}else{
char timetmp[64];
struct tm post_date;
localtime_r(&(r->date), &post_date);
strftime(timetmp, 64, "%Y-%m-%d", &post_date);
vars["THREAD_POST_DATE"] = string(timetmp);
}
map<string, queue<string>> loops; //nothing
mg_printf_data(conn, "%s", ht->build(vars, stats, loops).c_str());
// if(content) delete [] content;
delete ht;
}