@ -21,29 +21,33 @@ public class Pagebaks_addon implements Xoax_addon_itm {
// get vars
if ( ! app . Cfg ( ) . Get_bool_app_or ( "xowa.wiki.edit.pagebaks.enabled" , true ) ) return ;
// #save file
// get file name; note encoding for wnt even on lnx systems just to be consistent
Gfo_url_encoder encoder = Gfo_url_encoder_ . New__fsys_wnt ( ) . Make ( ) ;
byte [ ] file_name = encoder . Encode ( ttl . Full_db ( ) ) ;
try {
// #save file
// get file name; note encoding for wnt even on lnx systems just to be consistent
Gfo_url_encoder encoder = Gfo_url_encoder_ . New__fsys_wnt ( ) . Make ( ) ;
byte [ ] file_name = encoder . Encode ( ttl . Full_db ( ) ) ;
// save file to backup dir; EX: /xowa/wiki/en.w/user/temp/save_backups/Earth/20170303_080102_123.txt
Io_url bak_dir = wiki . Fsys_mgr ( ) . Root_dir ( ) . GenSubDir_nest ( "user" , "temp" , "page_backups" , String_ . new_u8 ( file_name ) ) ;
Io_url file_url = bak_dir . GenSubFil_ary ( Datetime_now . Get ( ) . XtoStr_fmt ( "yyyyMMdd_HHmmss_fff" ) , ".txt" ) ;
Io_mgr . Instance . SaveFilBry ( file_url , text ) ;
// save file to backup dir; EX: /xowa/wiki/en.w/user/temp/save_backups/Earth/20170303_080102_123.txt
Io_url bak_dir = wiki . Fsys_mgr ( ) . Root_dir ( ) . GenSubDir_nest ( "user" , "temp" , "page_backups" , String_ . new_u8 ( file_name ) ) ;
Io_url file_url = bak_dir . GenSubFil_ary ( Datetime_now . Get ( ) . XtoStr_fmt ( "yyyyMMdd_HHmmss_fff" ) , ".txt" ) ;
Io_mgr . Instance . SaveFilBry ( file_url , text ) ;
// #prune dir
// get files for pruning
Io_url [ ] fils = Io_mgr . Instance . QueryDir_fils ( bak_dir ) ;
Array_ . Sort ( fils ) ;
// calc files
int num_files = fils . length ;
int max_files = app . Cfg ( ) . Get_int_app_or ( "xowa.wiki.edit.pagebaks.max_backups" , 16 ) ;
int cutoff = num_files - max_files ;
// #prune dir
// get files for pruning
Io_url [ ] fils = Io_mgr . Instance . QueryDir_fils ( bak_dir ) ;
Array_ . Sort ( fils ) ;
// calc files
int num_files = fils . length ;
int max_files = app . Cfg ( ) . Get_int_app_or ( "xowa.wiki.edit.pagebaks.max_backups" , 16 ) ;
int cutoff = num_files - max_files ;
// do pruning
for ( int i = 0 ; i < cutoff ; i + + ) { // EX: 3 files and 2 max; 1st file (index 0) needs to be deleted
Io_mgr . Instance . DeleteFil ( fils [ i ] ) ;
// do pruning
for ( int i = 0 ; i < cutoff ; i + + ) { // EX: 3 files and 2 max; 1st file (index 0) needs to be deleted
Io_mgr . Instance . DeleteFil ( fils [ i ] ) ;
}
} catch ( Exception e ) {
Gfo_usr_dlg_ . Instance . Log_many ( "" , "" , "failed to save page backup; wiki=~{0} ttl=~{1} err=~{2}" , wiki . Domain_bry ( ) , ttl . Full_db ( ) , Err_ . Message_gplx_log ( e ) ) ;
}
}