1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

Cfg: Convert rest of pages

This commit is contained in:
gnosygnu
2016-12-21 03:07:38 -05:00
parent 68674ace83
commit 93fcec3457
112 changed files with 946 additions and 1386 deletions

View File

@@ -21,18 +21,25 @@ import gplx.xowa.htmls.*;
import gplx.xowa.addons.wikis.pages.syncs.dbs.*;
import gplx.xowa.apps.apis.xowa.addons.bldrs.*;
import gplx.xowa.wikis.data.tbls.*;
public class Xosync_read_mgr {
public class Xosync_read_mgr implements Gfo_invk {
private boolean auto_enabled = false;
private int auto_interval = 60 * 24; // in minutes
private final Xowd_page_itm tmp_dbpg = new Xowd_page_itm();
private Db_conn sync_conn; private Xosync_sync_tbl sync_tbl;
private final Xopg_match_mgr auto_page_matcher = new Xopg_match_mgr();
private final Xosync_update_mgr update_mgr = new Xosync_update_mgr();
public void Init_by_wiki(Xow_wiki wiki) {
this.Auto_scope_("*:Main_Page");
wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__auto__enabled, Cfg__auto__interval, Cfg__auto__scope);
}
public boolean Manual_enabled() {return manual_enabled;} private boolean manual_enabled;
public void Auto_update(Xow_wiki wiki, Xoa_page page, Xoa_ttl page_ttl) {
if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__home) return;
if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) return;
if (page_ttl.Ns().Id_is_special()) return;
Xoapi_sync_api sync_api = wiki.App().Api_root().Addon().Bldr().Sync();
if (!sync_api.Auto_enabled()) return;
if (!sync_api.Auto_page_matcher().Match(wiki, page_ttl.Full_db())) return;
if (!auto_enabled) return;
if (!auto_page_matcher.Match(wiki, page_ttl.Full_db())) return;
wiki.Data__core_mgr().Db__core().Tbl__page().Select_by_ttl(tmp_dbpg, page_ttl.Ns(), page_ttl.Page_db());
@@ -43,7 +50,7 @@ public class Xosync_read_mgr {
sync_conn.Meta_tbl_assert(sync_tbl);
}
DateAdp sync_date = sync_tbl.Select_sync_date_or_min(tmp_dbpg.Id());
if (Datetime_now.Get().Diff(sync_date).Total_mins().To_int() <= sync_api.Auto_interval()) return;
if (Datetime_now.Get().Diff(sync_date).Total_mins().To_int() <= auto_interval) return;
Xoa_app app = wiki.App();
Xoh_page hpg = new Xoh_page();
@@ -53,4 +60,21 @@ public class Xosync_read_mgr {
sync_tbl.Upsert(tmp_dbpg.Id(), Datetime_now.Get());
}
private void Auto_scope_(String v) {
auto_page_matcher.Set(v);
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Cfg__manual__enabled)) this.manual_enabled = m.ReadYn("v");
else if (ctx.Match(k, Cfg__auto__enabled)) this.auto_enabled = m.ReadYn("v");
else if (ctx.Match(k, Cfg__auto__interval)) this.auto_interval = m.ReadInt("v");
else if (ctx.Match(k, Cfg__auto__scope)) Auto_scope_(m.ReadStr("v"));
else return Gfo_invk_.Rv_unhandled;
return this;
}
private static final String
Cfg__manual__enabled = "xowa.wiki.import.page_sync.manual.enabled"
, Cfg__auto__enabled = "xowa.wiki.import.page_sync.auto.enabled"
, Cfg__auto__interval = "xowa.wiki.import.page_sync.auto.interval"
, Cfg__auto__scope = "xowa.wiki.import.page_sync.auto.scope"
;
}