Licensed under the GNU GPL version 2 or any later. See file COPYRIGHT for details. */ if (!defined('MTTPATH')) { die("Unexpected usage."); } require_once('class.controller.php'); function mtt_ext_backup_instance(): MTTExtension { return new BackupExtension(); } use BackupExtension\Controller; class BackupExtension extends MTTExtension implements MTTExtensionSettingsInterface, MTTHttpApiExtender { //the same as dir name const bundleId = 'backup'; // settings domain const domain = "ext.backup.json"; function init() { } // MTTHttpApiExtender function extendHttpApi(): array { return array( '/makeBackup' => [ 'POST' => [ Controller::class , 'postMakeBackup' ], ], '/download' => [ 'POST' => [ Controller::class , 'postDownload' ], 'GET' => [ Controller::class , 'getDownload', true ], // doesn't check auth token ], '/restore' => [ 'POST' => [ Controller::class , 'postRestore' ], ], '/checkInconsistency' => [ 'POST' => [ Controller::class , 'postCheckInconsistency' ], ], '/repairInconsistency' => [ 'POST' => [ Controller::class , 'postRepairInconsistency' ], ], ); } function settingsPage(): string { $warning = ''; $e = function($s, $arg=null) { return __($s, true, $arg); }; $ext = htmlspecialchars(self::bundleId); $downloadDisabled = ''; $lastBackup = ''; $filename = MTTPATH. 'db/backup.xml'; if (file_exists($filename)) { $time = filemtime($filename); $lastBackup = htmlspecialchars( sprintf($e('backup.last_backup'), formatTime(Config::get('dateformat'). " H:m:s", $time)) ); } else { $downloadDisabled = 'disabled'; } return << function onBackupFileChange(el) { const fd = new FormData(); fd.append('file', el.files[0]); mytinytodo.extensionSettingsAction(el.dataset.extSettingsAction, el.dataset.ext, fd); }
{$e('backup.h_make')}
{$e('backup.d_make', 'db')}


$lastBackup  
{$e('backup.h_inconsistency')}
{$e('backup.d_inconsistency')}
 
{$e('backup.h_restore')}
{$e('backup.d_restore')}
EOD; } function settingsPageType(): int { return 1; //no form buttons } function saveSettings(array $params, ?string &$outMessage): bool { return false; } /* static function preferences(): array { return [ 'backupFilePath' => MTTPATH. 'db/backup.xml' ]; } */ static function backupFilePath() { //return self::preferences()['backupFilePath']; return MTTPATH. 'db/backup.xml'; } }