@@ -37,6 +37,34 @@ class plugin_backuplist extends plugin_base {
3737 var $ formdef ;
3838 var $ options ;
3939
40+ /**
41+ * Process request to make a backup. This request is triggered manually by the user in the ISPConfig interface.
42+ * @param string $message
43+ * @param string $error
44+ * @param string[] $wb language text
45+ * @author Ramil Valitov <ramilvalitov@gmail.com>
46+ * @uses backup_plugin::make_backup_callback() this method is called later in the plugin to run the backup
47+ */
48+ protected function makeBackup (&$ message , &$ error , $ wb )
49+ {
50+ global $ app ;
51+
52+ $ mode = $ _GET ['make_backup ' ];
53+ $ action_type = ($ mode == 'web ' ) ? 'backup_web_files ' : 'backup_database ' ;
54+ $ domain_id = intval ($ this ->form ->id );
55+
56+ $ sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = ? AND action_param = ? " ;
57+ $ tmp = $ app ->db ->queryOneRecord ($ sql , $ action_type , $ domain_id );
58+ if ($ tmp ['number ' ] == 0 ) {
59+ $ server_id = $ this ->form ->dataRecord ['server_id ' ];
60+ $ message .= $ wb ['backup_info_txt ' ];
61+ $ sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) VALUES (?, UNIX_TIMESTAMP(), ?, ?, 'pending', '') " ;
62+ $ app ->db ->query ($ sql , $ server_id , $ action_type , $ domain_id );
63+ } else {
64+ $ error .= $ wb ['backup_pending_txt ' ];
65+ }
66+ }
67+
4068 function onShow () {
4169
4270 global $ app ;
@@ -52,6 +80,10 @@ function onShow() {
5280 $ message = '' ;
5381 $ error = '' ;
5482
83+ if (isset ($ _GET ['make_backup ' ])) {
84+ $ this ->makeBackup ($ message , $ error , $ wb );
85+ }
86+
5587 if (isset ($ _GET ['backup_action ' ])) {
5688 $ backup_id = $ app ->functions ->intval ($ _GET ['backup_id ' ]);
5789
@@ -137,7 +169,30 @@ function onShow() {
137169 $ rec ["bgcolor " ] = $ bgcolor ;
138170
139171 $ rec ['date ' ] = date ($ app ->lng ('conf_format_datetime ' ), $ rec ['tstamp ' ]);
140- $ rec ['backup_type ' ] = $ wb [('backup_type_ ' .$ rec ['backup_type ' ])];
172+ $ backup_format = $ rec ['backup_format ' ];
173+ if (empty ($ backup_format )) {
174+ //We have a backup from old version of ISPConfig
175+ switch ($ rec ['backup_type ' ]) {
176+ case 'mysql ' :
177+ $ backup_format = 'gzip ' ;
178+ break ;
179+ case 'web ' :
180+ $ backup_format = ($ rec ['backup_mode ' ] == 'userzip ' ) ? 'zip ' : 'tar_gzip ' ;
181+ break ;
182+ default :
183+ $ app ->log ('Unsupported backup type " ' . $ rec ['backup_type ' ] . '" for backup id ' . $ rec ['backup_id ' ], LOGLEVEL_ERROR );
184+ break ;
185+ }
186+ }
187+ $ rec ['backup_type ' ] = $ wb [('backup_type_ ' . $ rec ['backup_type ' ])];
188+ $ backup_format = (!empty ($ backup_format )) ? $ wb [('backup_format_ ' . $ backup_format . '_txt ' )] : $ wb ["backup_format_unknown_txt " ];
189+ if (empty ($ backup_format ))
190+ $ backup_format = $ wb ["backup_format_unknown_txt " ];
191+
192+ $ rec ['backup_format ' ] = $ backup_format ;
193+ $ rec ['backup_encrypted ' ] = empty ($ rec ['backup_password ' ]) ? $ wb ["no_txt " ] : $ wb ["yes_txt " ];
194+ $ backup_manual_prefix = 'manual- ' ;
195+ $ rec ['backup_job ' ] = (substr ($ rec ['filename ' ], 0 , strlen ($ backup_manual_prefix )) == $ backup_manual_prefix ) ? $ wb ["backup_job_manual_txt " ] : $ wb ["backup_job_auto_txt " ];
141196
142197 $ rec ['download_available ' ] = true ;
143198 if ($ rec ['server_id ' ] != $ web ['server_id ' ]) $ rec ['download_available ' ] = false ;
0 commit comments