mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v3.1.5.1
This commit is contained in:
@@ -284,7 +284,7 @@ class Xob_rate_mgr {
|
||||
private int item_len;
|
||||
private Bry_bfr save_bfr = Bry_bfr.reset_(255);
|
||||
public int Reset_interval() {return reset_interval;} public Xob_rate_mgr Reset_interval_(int v) {reset_interval = v; return this;} private int reset_interval = 10000;
|
||||
public Io_url Log_file() {return log_file;} public Xob_rate_mgr Log_file_(Io_url v) {log_file = v; return this;} private Io_url log_file;
|
||||
public Io_url Log_file_url() {return log_file;} public Xob_rate_mgr Log_file_(Io_url v) {log_file = v; return this;} private Io_url log_file;
|
||||
public void Init() {time_bgn = Env_.TickCount();}
|
||||
public void Increment() {
|
||||
++item_len;
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
public class Xob_lnki_src_tid {
|
||||
public static final byte Tid_file = 0, Tid_media = 1, Tid_gallery = 2, Tid_imageMap = 3;
|
||||
}
|
||||
@@ -20,11 +20,12 @@ import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; i
|
||||
import gplx.xowa.files.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.xndes.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*;
|
||||
import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*;
|
||||
import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*;
|
||||
import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.vnts.*;
|
||||
public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink_logger {
|
||||
import gplx.xowa.parsers.lnkis.files.*;
|
||||
public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements gplx.xowa.parsers.lnkis.files.Xop_file_logger {
|
||||
private Xob_lnki_temp_tbl tbl; private boolean wdata_enabled = true, xtn_ref_enabled = true, gen_html, gen_hdump;
|
||||
private Xop_log_invoke_wkr invoke_wkr; private Xop_log_property_wkr property_wkr;
|
||||
private boolean ns_file_is_case_match_all = true; private Xowe_wiki commons_wiki;
|
||||
@@ -40,7 +41,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
property_wkr.Init_reset();
|
||||
}
|
||||
@Override protected Db_conn Init_db_file() {
|
||||
ctx.Lnki().File_wkr_(this);
|
||||
ctx.Lnki().File_logger_(this);
|
||||
Xob_db_file make_db = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
Db_conn make_conn = make_db.Conn();
|
||||
this.tbl = new Xob_lnki_temp_tbl(make_conn); tbl.Create_tbl();
|
||||
@@ -125,7 +126,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
wiki.Appe().Log_mgr().Txn_end();
|
||||
tbl.Insert_end();
|
||||
}
|
||||
public void Wkr_exec(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, byte lnki_src_tid) {
|
||||
public void Log_file(Xop_ctx ctx, Xop_lnki_tkn lnki, byte caller_tid) {
|
||||
if (lnki.Ttl().ForceLiteralLink()) return; // ignore literal links which creat a link to file, but do not show the image; EX: [[:File:A.png|thumb|120px]] creates a link to File:A.png, regardless of other display-oriented args
|
||||
byte[] ttl = lnki.Ttl().Page_db();
|
||||
Xof_ext ext = Xof_ext_.new_by_ttl_(ttl);
|
||||
@@ -136,8 +137,8 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
&& Xof_lnki_time.Null_n(lnki_time)) // thumbtime set
|
||||
usr_dlg.Warn_many("", "", "page and thumbtime both set; this may be an issue with fsdb: page=~{0} ttl=~{1}", ctx.Page().Ttl().Page_db_as_str(), String_.new_u8(ttl));
|
||||
if (lnki.Ns_id() == Xow_ns_.Tid__media)
|
||||
lnki_src_tid = Xob_lnki_src_tid.Tid_media;
|
||||
tbl.Insert_cmd_by_batch(ctx.Page().Bldr__ns_ord(), ctx.Page().Revision_data().Id(), ttl, ttl_commons, Byte_.By_int(ext.Id()), lnki.Lnki_type(), lnki_src_tid, lnki.W(), lnki.H(), lnki.Upright(), lnki_time, lnki_page);
|
||||
caller_tid = Xop_file_logger_.Tid__media;
|
||||
tbl.Insert_cmd_by_batch(ctx.Page().Bldr__ns_ord(), ctx.Page().Revision_data().Id(), ttl, ttl_commons, Byte_.By_int(ext.Id()), lnki.Lnki_type(), caller_tid, lnki.W(), lnki.H(), lnki.Upright(), lnki_time, lnki_page);
|
||||
}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_wdata_enabled_)) wdata_enabled = m.ReadYn("v");
|
||||
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.core.stores.*;
|
||||
import gplx.dbs.*; import gplx.xowa.files.*;
|
||||
import gplx.xowa.parsers.lnkis.*;
|
||||
import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.files.*;
|
||||
class Xob_xfer_temp_itm {
|
||||
public int Lnki_id() {return lnki_id;} private int lnki_id;
|
||||
public int Lnki_tier_id() {return lnki_tier_id;} private int lnki_tier_id;
|
||||
@@ -119,7 +119,7 @@ class Xob_xfer_temp_itm {
|
||||
chk_tid = Chk_tid_orig_media_type_is_audio;
|
||||
return false;
|
||||
}
|
||||
if (lnki_src_tid == Xob_lnki_src_tid.Tid_media) {
|
||||
if (lnki_src_tid == Xop_file_logger_.Tid__media) {
|
||||
chk_tid = Chk_tid_ns_is_media;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gp
|
||||
import org.junit.*;
|
||||
import gplx.core.gfo_ndes.*;
|
||||
import gplx.core.stores.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*;
|
||||
import gplx.xowa.parsers.lnkis.*;
|
||||
import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.files.*;
|
||||
public class Xob_xfer_temp_itm_tst {
|
||||
private Xob_xfer_temp_itm_fxt fxt = new Xob_xfer_temp_itm_fxt();
|
||||
@Before public void init() {fxt.Reset();}
|
||||
@@ -86,7 +86,7 @@ public class Xob_xfer_temp_itm_tst {
|
||||
@Test public void Media_should_be_ignored() {// ignore [[Media:]] for xfer_thumb (needed for xfer_orig)
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_src_tid , Xob_lnki_src_tid.Tid_media)
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_src_tid , Xop_file_logger_.Tid__media)
|
||||
);
|
||||
fxt.Test_itm_chk_fail_id(Xob_xfer_temp_itm.Chk_tid_ns_is_media);
|
||||
}
|
||||
@@ -137,7 +137,7 @@ class Xob_xfer_temp_itm_fxt {
|
||||
GfoFldList flds = GfoFldList_.str_(Flds);
|
||||
nde = GfoNde_.vals_(flds, Object_.Ary
|
||||
( Xof_ext_.Id_png, 1, 1, Xof_repo_itm_.Repo_remote
|
||||
, "A.png", Xof_ext_.Id_png, "A.png", Xop_lnki_type.Id_thumb, Xob_lnki_src_tid.Tid_file
|
||||
, "A.png", Xof_ext_.Id_png, "A.png", Xop_lnki_type.Id_thumb, Xop_file_logger_.Tid__file
|
||||
, 220, 200, 1, 2, 440, 400, 3
|
||||
, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null, Xof_lnki_page.Null
|
||||
, Xof_media_type.Name_bitmap, "png"
|
||||
|
||||
@@ -34,7 +34,8 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
{ Dbmeta_fld_itm.new_int("page_id").Primary_y_()
|
||||
, Dbmeta_fld_itm.new_int("page_text_db_id")
|
||||
}
|
||||
, Dbmeta_idx_itm.new_normal_by_tbl("page_filter", "db_id", "page_text_db_id", "page_id")
|
||||
, Dbmeta_idx_itm.new_normal_by_tbl("page_filter", "db_id__page", "page_text_db_id", "page_id")
|
||||
, Dbmeta_idx_itm.new_normal_by_tbl("page_filter", "page_id", "page_id")
|
||||
));
|
||||
}
|
||||
|
||||
@@ -53,25 +54,28 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
, ";"
|
||||
));
|
||||
|
||||
Xowd_db_file[] db_files = core_db.Tbl__db().Select_all(wiki.Data__core_mgr().Props(), wiki.Fsys_mgr().Root_dir());
|
||||
int len = db_files.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
boolean db_file_is_text = Bool_.N, db_file_is_cat = Bool_.N, db_file_is_search = Bool_.N;
|
||||
Xowd_db_file db_file = db_files[i];
|
||||
switch (db_file.Tid()) {
|
||||
case Xowd_db_file_.Tid_core: case Xowd_db_file_.Tid_wiki_solo: case Xowd_db_file_.Tid_text_solo:
|
||||
db_file_is_text = db_file_is_cat = db_file_is_search = Bool_.Y; break;
|
||||
case Xowd_db_file_.Tid_text: db_file_is_text = Bool_.Y; break;
|
||||
case Xowd_db_file_.Tid_cat: db_file_is_cat = Bool_.Y; break;
|
||||
case Xowd_db_file_.Tid_search_core: db_file_is_search = Bool_.Y; break;
|
||||
try {
|
||||
Xowd_db_file[] db_files = core_db.Tbl__db().Select_all(wiki.Data__core_mgr().Props(), wiki.Fsys_mgr().Root_dir());
|
||||
int len = db_files.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
boolean db_file_is_text = Bool_.N, db_file_is_cat = Bool_.N, db_file_is_search = Bool_.N;
|
||||
Xowd_db_file db_file = db_files[i];
|
||||
switch (db_file.Tid()) {
|
||||
case Xowd_db_file_.Tid_core: case Xowd_db_file_.Tid_wiki_solo: case Xowd_db_file_.Tid_text_solo:
|
||||
if (wiki.Data__core_mgr().Props().Layout_text().Tid_is_lot()) continue; // if mode is lot, then "core" db does not have text, cat, search; skip; DATE:2016-01-31
|
||||
db_file_is_text = db_file_is_cat = db_file_is_search = Bool_.Y; break;
|
||||
case Xowd_db_file_.Tid_text: db_file_is_text = Bool_.Y; break;
|
||||
case Xowd_db_file_.Tid_cat: db_file_is_cat = Bool_.Y; break;
|
||||
case Xowd_db_file_.Tid_search_core: db_file_is_search = Bool_.Y; break;
|
||||
}
|
||||
int db_id = db_file.Id();
|
||||
if (db_file_is_text) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting text: " + db_id, "DELETE FROM <attach_db>text WHERE page_id IN (SELECT page_id FROM page_filter WHERE page_text_db_id = {0});");
|
||||
if (db_file_is_cat) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting cat: " + db_id, "DELETE FROM <attach_db>cat_link WHERE cl_from IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_search) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting search:" + db_id, "DELETE FROM <attach_db>search_link WHERE page_id IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_text || db_file_is_cat || db_file_is_search)
|
||||
db_file.Conn().Env_vacuum();
|
||||
}
|
||||
int db_id = db_file.Id();
|
||||
if (db_file_is_text) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting text: " + db_id, "DELETE FROM <attach_db>text WHERE page_id IN (SELECT page_id FROM page_filter WHERE page_text_db_id = {0});");
|
||||
if (db_file_is_cat) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting cat: " + db_id, "DELETE FROM <attach_db>cat_link WHERE cl_from IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_cat) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting search:" + db_id, "DELETE FROM <attach_db>search_link WHERE page_id IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_text || db_file_is_cat || db_file_is_search)
|
||||
db_file.Conn().Env_vacuum();
|
||||
}
|
||||
} catch (Exception e) {Gfo_usr_dlg_.Instance.Warn_many("", "", "fatal error during page deletion: err=~{0}", Err_.Message_gplx_log(e));}
|
||||
core_db_conn.Exec_sql_plog_ntx("deleting from table: page", "DELETE FROM page WHERE page_id IN (SELECT page_id FROM page_filter);");
|
||||
// core_db_conn.Ddl_delete_tbl("page_filter");
|
||||
core_db_conn.Env_vacuum();
|
||||
|
||||
Reference in New Issue
Block a user