Backup and Restore WordPress – WPBackItUp Backup Plugin - Version 1.2.0

Version Description

  • Fixed issues with broken directory tree, brought versioning inline with WP Backitup Pro
Download this release

Release Info

Developer jcpeden
Plugin Icon 128x128 Backup and Restore WordPress – WPBackItUp Backup Plugin
Version 1.2.0
Comparing to
See all releases

Code changes from version 1.1.6 to 1.2.0

backups/status.log CHANGED
@@ -1 +1 @@
1
- <ul><li>Creating backup directory...Done!</li><li>Backing up your files...Done!</li><li>Backing up your database...Done!</li><li>Creating backup zip...Done!</li><li>Backup file created successfully. You can download your backup file using the link above.</li></ul>
1
+ <ul><li>Uploading restoration file...Done!</li><li>Unzipping...Done!</li><li>Validating zip...Done!</li><li>Restoring wp-content directory...Done!</li><li>Restoring database...Done!</li><li>Restoration complete. Please refresh the page.</li></ul>
css/admin.css CHANGED
@@ -1,8 +1,8 @@
1
  /**
2
  * WP Backitup Admin Control Panel Stylesheets
3
  *
4
- * @version 1.1.6
5
- * @since 1.1.3
6
  */
7
 
8
  /* Global */
@@ -10,6 +10,8 @@
10
 
11
  p {line-height: 1.4em;}
12
 
 
 
13
  ul {padding: 1em 0 0 0;}
14
 
15
  h3 {
@@ -17,7 +19,7 @@ h3 {
17
  padding: 1em 0 0 0;
18
  }
19
 
20
- iframe {
21
  height: 0;
22
  margin: 0;
23
  padding: 0;
@@ -57,3 +59,6 @@ h3 {
57
  }
58
 
59
  .widget {padding: 1em;}
 
 
 
1
  /**
2
  * WP Backitup Admin Control Panel Stylesheets
3
  *
4
+ * @version 1.2.0
5
+ * @since 1.0.1
6
  */
7
 
8
  /* Global */
10
 
11
  p {line-height: 1.4em;}
12
 
13
+ td {padding: 0;}
14
+
15
  ul {padding: 1em 0 0 0;}
16
 
17
  h3 {
19
  padding: 1em 0 0 0;
20
  }
21
 
22
+ iframe {
23
  height: 0;
24
  margin: 0;
25
  padding: 0;
59
  }
60
 
61
  .widget {padding: 1em;}
62
+ .errorMessage{
63
+ color: red;
64
+ }
index.php CHANGED
@@ -7,13 +7,13 @@
7
  * @global object $wpdb
8
  *
9
  * @author jcpeden
10
- * @version 1.1.6
11
  */
12
  /*
13
  Plugin Name: WP Backitup Lite
14
  Plugin URI: http://www.wpbackitup.com
15
  Description: Backup your content, settings, themes, plugins and media in just a few simple clicks.
16
- Version: 1.1.6
17
  Author: John Peden
18
  Author URI: http://www.johncpeden.com
19
  License: GPL3
@@ -39,8 +39,8 @@ require_once( dirname( __FILE__ ) . '/lib/constants.php' );
39
 
40
  class WPBackitup {
41
  var $namespace = "wp-backitup-lite";
42
- var $friendly_name = "WP Backitup Lite";
43
- var $version = "1.1.6";
44
 
45
  // Default plugin options
46
  var $defaults = array(
7
  * @global object $wpdb
8
  *
9
  * @author jcpeden
10
+ * @version 1.2.0
11
  */
12
  /*
13
  Plugin Name: WP Backitup Lite
14
  Plugin URI: http://www.wpbackitup.com
15
  Description: Backup your content, settings, themes, plugins and media in just a few simple clicks.
16
+ Version: 1.2.0
17
  Author: John Peden
18
  Author URI: http://www.johncpeden.com
19
  License: GPL3
39
 
40
  class WPBackitup {
41
  var $namespace = "wp-backitup-lite";
42
+ var $friendly_name = WPBACKITUP_ITEM_NAME;
43
+ var $version = WPBACKITUP_VERSION;
44
 
45
  // Default plugin options
46
  var $defaults = array(
js/admin.js CHANGED
@@ -1,18 +1,21 @@
1
  /**
2
  * WP Backitup Admin Control Panel JavaScripts
3
  *
4
- * @version 1.1.6
5
- * @since 1.1.3
6
  */
7
 
8
  (function($){
 
 
9
  //define backup variables
10
  var backup = {
11
  action: 'backup',
12
  beforeSend: function() {
13
  $('.backup-icon').css('visibility','visible');
14
- $("#status").empty();
15
- setInterval(display_log, 1000);
 
16
  }
17
  };
18
  //define download variables
@@ -26,7 +29,15 @@
26
  //define logreader function
27
  function display_log() {
28
  $.post(ajaxurl, logreader, function(response) {
29
- $("#status").html(response);
 
 
 
 
 
 
 
 
30
  });
31
  }
32
  //define download function
@@ -48,4 +59,35 @@
48
  $("#php").html(response); //Return PHP messages, used for development
49
  });
50
  })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  })(jQuery);
1
  /**
2
  * WP Backitup Admin Control Panel JavaScripts
3
  *
4
+ * @version 1.2.0
5
+ * @since 1.0.1
6
  */
7
 
8
  (function($){
9
+
10
+
11
  //define backup variables
12
  var backup = {
13
  action: 'backup',
14
  beforeSend: function() {
15
  $('.backup-icon').css('visibility','visible');
16
+ var htmlText = "<div class='prerequisites'>Checking Prerequisites: <span class='currentStatus'>Pending</span></div><div class='backupfiles'>Backing up files: <span class='currentStatus'>Pending</span></div><div class='backupdb'>Backing up database: <span class='currentStatus'>Pending</span></div><div class='infofile'>Creating Info File: <span class='currentStatus'>Pending</span></div><div class='zipfile'>Creating Zip File: <span class='currentStatus'>Pending</span></div><div class='cleanup'>Cleaning Up: <span class='currentStatus'>Pending</span></div><div class='errorMessage'><span class='currentStatus'></span></div>";
17
+ $("#status").html(htmlText);
18
+ window.intervalDefine = setInterval(display_log, 1000);
19
  }
20
  };
21
  //define download variables
29
  //define logreader function
30
  function display_log() {
31
  $.post(ajaxurl, logreader, function(response) {
32
+ var xmlObj = $(response);
33
+ xmlObj.each(function(){
34
+ var attributename = "." + $(this).attr('code');
35
+ $(attributename).find(".currentStatus").html($(this).text());
36
+ if($(this).attr('code') == "finalinfo" || $(this).attr('code') == "errorMessage")
37
+ {
38
+ clearInterval(window.intervalDefine);
39
+ }
40
+ });
41
  });
42
  }
43
  //define download function
59
  $("#php").html(response); //Return PHP messages, used for development
60
  });
61
  })
62
+
63
+ //execute restore on button click
64
+ $("#restore-form").submit(function() {
65
+ var maximum = $("#maximum").val();
66
+ var fil = document.getElementById("wpbackitup-zip");
67
+ var sizes = fil.files[0].size;
68
+ var sizesd = sizes/(1024*1024);
69
+ if(sizesd > maximum)
70
+ {
71
+ $("#status").html("<span style='color: red'>File size exceeds maxium upload size.</span>");
72
+ return false;
73
+ }
74
+ var htmlvals = '<div class="upload">Uploading file: <span class="currentStatus">Pending</span></div><div class="unzipping">Unzipping Files: <span class="currentStatus">Pending</span></div><div class="validation">Validating Zip File: <span class="currentStatus">Pending</span></div><div class="wpcontent">Replacing WP-CONTENT Directory: <span class="currentStatus">Pending</span></div><div class="database">Restoring Database: <span class="currentStatus">Pending</span></div><div class="infomessage"><span class="currentStatus"></span></div><div class="errorMessage"><span class="currentStatus"></span></div>';
75
+
76
+ $("#status").html(htmlvals);
77
+ $(".upload").find('.currentStatus').html('In Progress');
78
+ $('.restore-icon').css('visibility','visible');
79
+ window.intervalDefine = setInterval(display_log, 1000);
80
+ $("#restore-form").attr("target","upload_target");
81
+ $("#upload_target").load(function (){
82
+ importRestore();
83
+ });
84
+ });
85
+
86
+ //define importRestore function
87
+ function importRestore() {
88
+ var ret = frames['upload_target'].document.getElementsByTagName("body")[0].innerHTML; //process upload
89
+ $("#php").html(ret); //Return PHP messages, used for development
90
+ clearInterval(display_log);
91
+ $('.restore-icon').fadeOut(1000);
92
+ }
93
  })(jQuery);
js/ajaxfileupload.js ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * WP Backitup Ajax File Upload
3
+ *
4
+ * @version 1.2.0
5
+ * @since 1.0.1
6
+ */
7
+
8
+ jQuery.extend({
9
+ createUploadIframe: function(id, uri)
10
+ {
11
+ //create frame
12
+ var frameId = 'jUploadFrame' + id;
13
+ var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';
14
+ if(window.ActiveXObject)
15
+ {
16
+ if(typeof uri== 'boolean'){
17
+ iframeHtml += ' src="' + 'javascript:false' + '"';
18
+
19
+ }
20
+ else if(typeof uri== 'string'){
21
+ iframeHtml += ' src="' + uri + '"';
22
+
23
+ }
24
+ }
25
+ iframeHtml += ' />';
26
+ jQuery(iframeHtml).appendTo(document.body);
27
+
28
+ return jQuery('#' + frameId).get(0);
29
+ },
30
+ createUploadForm: function(id, fileElementId, data)
31
+ {
32
+ //create form
33
+ var formId = 'jUploadForm' + id;
34
+ var fileId = 'jUploadFile' + id;
35
+ var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
36
+ if(data)
37
+ {
38
+ for(var i in data)
39
+ {
40
+ jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
41
+ }
42
+ }
43
+ var oldElement = jQuery('#' + fileElementId);
44
+ var newElement = jQuery(oldElement).clone();
45
+ jQuery(oldElement).attr('id', fileId);
46
+ jQuery(oldElement).before(newElement);
47
+ jQuery(oldElement).appendTo(form);
48
+
49
+
50
+
51
+ //set attributes
52
+ jQuery(form).css('position', 'absolute');
53
+ jQuery(form).css('top', '-1200px');
54
+ jQuery(form).css('left', '-1200px');
55
+ jQuery(form).appendTo('body');
56
+ return form;
57
+ },
58
+
59
+ ajaxFileUpload: function(s) {
60
+ // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
61
+ s = jQuery.extend({}, jQuery.ajaxSettings, s);
62
+ var id = new Date().getTime()
63
+ var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data));
64
+ var io = jQuery.createUploadIframe(id, s.secureuri);
65
+ var frameId = 'jUploadFrame' + id;
66
+ var formId = 'jUploadForm' + id;
67
+ // Watch for a new set of requests
68
+ if ( s.global && ! jQuery.active++ )
69
+ {
70
+ jQuery.event.trigger( "ajaxStart" );
71
+ }
72
+ var requestDone = false;
73
+ // Create the request object
74
+ var xml = {}
75
+ if ( s.global )
76
+ jQuery.event.trigger("ajaxSend", [xml, s]);
77
+ // Wait for a response to come back
78
+ var uploadCallback = function(isTimeout)
79
+ {
80
+ var io = document.getElementById(frameId);
81
+ try
82
+ {
83
+ if(io.contentWindow)
84
+ {
85
+ xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
86
+ xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
87
+
88
+ }else if(io.contentDocument)
89
+ {
90
+ xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
91
+ xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
92
+ }
93
+ }catch(e)
94
+ {
95
+ jQuery.handleError(s, xml, null, e);
96
+ }
97
+ if ( xml || isTimeout == "timeout")
98
+ {
99
+ requestDone = true;
100
+ var status;
101
+ try {
102
+ status = isTimeout != "timeout" ? "success" : "error";
103
+ // Make sure that the request was successful or notmodified
104
+ if ( status != "error" )
105
+ {
106
+ // process the data (runs the xml through httpData regardless of callback)
107
+ var data = jQuery.uploadHttpData( xml, s.dataType );
108
+ // If a local callback was specified, fire it and pass it the data
109
+ if ( s.success )
110
+ s.success( data, status );
111
+
112
+ // Fire the global callback
113
+ if( s.global )
114
+ jQuery.event.trigger( "ajaxSuccess", [xml, s] );
115
+ } else
116
+ jQuery.handleError(s, xml, status);
117
+ } catch(e)
118
+ {
119
+ status = "error";
120
+ jQuery.handleError(s, xml, status, e);
121
+ }
122
+
123
+ // The request was completed
124
+ if( s.global )
125
+ jQuery.event.trigger( "ajaxComplete", [xml, s] );
126
+
127
+ // Handle the global AJAX counter
128
+ if ( s.global && ! --jQuery.active )
129
+ jQuery.event.trigger( "ajaxStop" );
130
+
131
+ // Process result
132
+ if ( s.complete )
133
+ s.complete(xml, status);
134
+
135
+ jQuery(io).unbind()
136
+
137
+ setTimeout(function()
138
+ { try
139
+ {
140
+ jQuery(io).remove();
141
+ jQuery(form).remove();
142
+
143
+ } catch(e)
144
+ {
145
+ jQuery.handleError(s, xml, null, e);
146
+ }
147
+
148
+ }, 100)
149
+
150
+ xml = null
151
+
152
+ }
153
+ }
154
+ // Timeout checker
155
+ if ( s.timeout > 0 )
156
+ {
157
+ setTimeout(function(){
158
+ // Check to see if the request is still happening
159
+ if( !requestDone ) uploadCallback( "timeout" );
160
+ }, s.timeout);
161
+ }
162
+ try
163
+ {
164
+
165
+ var form = jQuery('#' + formId);
166
+ jQuery(form).attr('action', s.url);
167
+ jQuery(form).attr('method', 'POST');
168
+ jQuery(form).attr('target', frameId);
169
+ if(form.encoding)
170
+ {
171
+ jQuery(form).attr('encoding', 'multipart/form-data');
172
+ }
173
+ else
174
+ {
175
+ jQuery(form).attr('enctype', 'multipart/form-data');
176
+ }
177
+ jQuery(form).submit();
178
+
179
+ } catch(e)
180
+ {
181
+ jQuery.handleError(s, xml, null, e);
182
+ }
183
+
184
+ jQuery('#' + frameId).load(uploadCallback );
185
+ return {abort: function () {}};
186
+
187
+ },
188
+
189
+ uploadHttpData: function( r, type ) {
190
+ var data = !type;
191
+ data = type == "xml" || data ? r.responseXML : r.responseText;
192
+ // If the type is "script", eval it in global context
193
+ if ( type == "script" )
194
+ jQuery.globalEval( data );
195
+ // Get the JavaScript object, if JSON is used.
196
+ if ( type == "json" )
197
+ eval( "data = " + data );
198
+ // evaluate scripts within html
199
+ if ( type == "html" )
200
+ jQuery("<div>").html(data).evalScripts();
201
+
202
+ return data;
203
+ }
204
+ })
205
+
languages/wp-backitup-pro.mo ADDED
Binary file
languages/wp-backitup-pro.po ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Backitup Pro\n"
4
+ "POT-Creation-Date: 2013-02-17 11:26-0000\n"
5
+ "PO-Revision-Date: 2013-02-17 11:26-0000\n"
6
+ "Last-Translator: John Peden <john.peden@britishcouncil.org>\n"
7
+ "Language-Team: WP Backitup <support@wpbackitup.com>\n"
8
+ "Language: English\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.5.4\n"
13
+ "X-Poedit-KeywordsList: __;_e\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ #: index.php:328
19
+ msgid "Settings"
20
+ msgstr ""
21
+
22
+ #: lib/functions.php:46
23
+ msgid "Download most recent export file"
24
+ msgstr ""
25
+
26
+ #: lib/functions.php:50
27
+ msgid "No export file available for download. Please create one."
28
+ msgstr ""
29
+
30
+ #: lib/includes/backup.php:25 lib/includes/restore.php:24
31
+ msgid "Can't open file"
32
+ msgstr ""
33
+
34
+ #: lib/includes/backup.php:29
35
+ msgid "Creating backup directory..."
36
+ msgstr ""
37
+
38
+ #: lib/includes/backup.php:31
39
+ msgid ""
40
+ "Cannot create backup directory. Please check the CHMOD settings of your wp-"
41
+ "backitup plugin directory"
42
+ msgstr ""
43
+
44
+ #: lib/includes/backup.php:37 lib/includes/restore.php:142
45
+ msgid "Done"
46
+ msgstr ""
47
+
48
+ #: lib/includes/backup.php:45
49
+ msgid "Backing up your files..."
50
+ msgstr ""
51
+
52
+ #: lib/includes/backup.php:50
53
+ msgid "Unable to backup your files. Please try again."
54
+ msgstr ""
55
+
56
+ #: lib/includes/backup.php:55
57
+ msgid "Backing up your database..."
58
+ msgstr ""
59
+
60
+ #: lib/includes/backup.php:57 lib/includes/backup.php:77
61
+ #: lib/includes/restore.php:156 lib/includes/restore.php:174
62
+ #: lib/includes/restore.php:200 lib/includes/restore.php:336
63
+ msgid "Done!"
64
+ msgstr ""
65
+
66
+ #: lib/includes/backup.php:59
67
+ msgid "Unable to backup your database. Please try again."
68
+ msgstr ""
69
+
70
+ #: lib/includes/backup.php:67
71
+ msgid "Unable to create site information file. Please try again."
72
+ msgstr ""
73
+
74
+ #: lib/includes/backup.php:73
75
+ msgid "Creating backup zip..."
76
+ msgstr ""
77
+
78
+ #: lib/includes/backup.php:81
79
+ msgid "Warning: Unable to cleanup your backup directory."
80
+ msgstr ""
81
+
82
+ #: lib/includes/backup.php:85
83
+ msgid ""
84
+ "Backup file created successfully. You can download your backup file using "
85
+ "the link above."
86
+ msgstr ""
87
+
88
+ #: lib/includes/restore.php:133
89
+ msgid "No file selected"
90
+ msgstr ""
91
+
92
+ #: lib/includes/restore.php:138
93
+ msgid "Uploading restoration file..."
94
+ msgstr ""
95
+
96
+ #: lib/includes/restore.php:144
97
+ msgid "Your file could not be uploaded"
98
+ msgstr ""
99
+
100
+ #: lib/includes/restore.php:158
101
+ msgid "Your restoration file could not be unzipped."
102
+ msgstr ""
103
+
104
+ #: lib/includes/restore.php:165
105
+ msgid "Validating zip..."
106
+ msgstr ""
107
+
108
+ #: lib/includes/restore.php:176
109
+ msgid ""
110
+ "Your zip file appears to be invalid. Please ensure you chose the correct zip "
111
+ "file."
112
+ msgstr ""
113
+
114
+ #: lib/includes/restore.php:184
115
+ msgid "Restoring wp-content directory..."
116
+ msgstr ""
117
+
118
+ #: lib/includes/restore.php:186
119
+ msgid ""
120
+ "Unable to remove existing wp-content directory for import. Please check your "
121
+ "CHMOD settings in /wp-content/."
122
+ msgstr ""
123
+
124
+ #: lib/includes/restore.php:193
125
+ msgid ""
126
+ "Unable to create new wp-content directory for import. Please check your "
127
+ "CHMOD settings in /wp-content/."
128
+ msgstr ""
129
+
130
+ #: lib/includes/restore.php:202
131
+ msgid "Unable to import wp-content. Please try again."
132
+ msgstr ""
133
+
134
+ #: lib/includes/restore.php:212
135
+ msgid "Restoring database..."
136
+ msgstr ""
137
+
138
+ #: lib/includes/restore.php:222
139
+ msgid "Unable to connect to your current database"
140
+ msgstr ""
141
+
142
+ #: lib/includes/restore.php:236
143
+ msgid "Unable to get current site URL from database. Please try again."
144
+ msgstr ""
145
+
146
+ #: lib/includes/restore.php:250
147
+ msgid "Unable to get current home URL from database. Please try again."
148
+ msgstr ""
149
+
150
+ #: lib/includes/restore.php:264
151
+ msgid "Unable to get current user ID from database. Please try again."
152
+ msgstr ""
153
+
154
+ #: lib/includes/restore.php:278
155
+ msgid "Unable to get current user password from database. Please try again."
156
+ msgstr ""
157
+
158
+ #: lib/includes/restore.php:292
159
+ msgid "Unable to get current user email from database. Please try again."
160
+ msgstr ""
161
+
162
+ #: lib/includes/restore.php:305
163
+ msgid ""
164
+ "Unable to get import your database. This may require importing the file "
165
+ "manually."
166
+ msgstr ""
167
+
168
+ #: lib/includes/restore.php:323
169
+ msgid ""
170
+ "Unable to update your current home URL value. This may require importing the "
171
+ "file manually."
172
+ msgstr ""
173
+
174
+ #: lib/includes/restore.php:330
175
+ msgid ""
176
+ "Unable to update your user information. This may require importing the file "
177
+ "manually."
178
+ msgstr ""
179
+
180
+ #: lib/includes/restore.php:338
181
+ msgid "Warning: Database not detected in import file."
182
+ msgstr ""
183
+
184
+ #: lib/includes/restore.php:351
185
+ msgid "Restoration complete. Please refresh the page."
186
+ msgstr ""
187
+
188
+ #: views/options.php:6 views/options.php:8
189
+ msgid "Backup"
190
+ msgstr ""
191
+
192
+ #: views/options.php:7
193
+ msgid "Create a backup file of this site's content and settings."
194
+ msgstr ""
195
+
196
+ #: views/options.php:9
197
+ msgid "Download"
198
+ msgstr ""
199
+
200
+ #: views/options.php:11 views/options.php:23
201
+ msgid "Restore"
202
+ msgstr ""
203
+
204
+ #: views/options.php:14
205
+ msgid ""
206
+ "Restore a WP Backitup zip file and overwrite this site's content, themes, "
207
+ "plugins, uploads and settings."
208
+ msgstr ""
209
+
210
+ #: views/options.php:25
211
+ msgid "Status"
212
+ msgstr ""
213
+
214
+ #: views/options.php:26
215
+ msgid "Nothing to report"
216
+ msgstr ""
217
+
218
+ #: views/options.php:35 views/options.php:56
219
+ msgid "License Key"
220
+ msgstr ""
221
+
222
+ #: views/options.php:39
223
+ msgid "Automatic updates enabled"
224
+ msgstr ""
225
+
226
+ #: views/options.php:41
227
+ msgid "Activate automatic updates by entering your license key"
228
+ msgstr ""
229
+
230
+ #: views/options.php:46
231
+ msgid "Active"
232
+ msgstr ""
233
+
234
+ #: views/options.php:47
235
+ msgid "Update"
236
+ msgstr ""
237
+
238
+ #: views/options.php:49
239
+ msgid "Inactive"
240
+ msgstr ""
241
+
242
+ #: views/options.php:50
243
+ msgid "Activate"
244
+ msgstr ""
245
+
246
+ #: views/options.php:55
247
+ msgid "Need Support?"
248
+ msgstr ""
249
+
250
+ #: views/options.php:60
251
+ msgid "Spread the Word"
252
+ msgstr ""
253
+
254
+ #: views/options.php:65
255
+ msgid "Enable"
256
+ msgstr ""
257
+
258
+ #: views/options.php:66
259
+ msgid "Disable"
260
+ msgstr ""
261
+
262
+ #: views/options.php:67
263
+ msgid ""
264
+ "Help to improve Easy Webtrends by enabling <a href=\"http://www.presstrends."
265
+ "io\" target=\"_blank\">Presstrends</a>"
266
+ msgstr ""
267
+
268
+ #: views/options.php:68
269
+ msgid "Save"
270
+ msgstr ""
lib/constants.php CHANGED
@@ -2,20 +2,23 @@
2
  /**
3
  * Constants used by this plugin
4
  *
5
- * @package WPBackitup
6
  *
7
  * @author jcpeden
8
- * @version 1.1.6
9
- * @since 1.1.3
10
  */
11
 
12
- // The current version of this plugin
13
- if( !defined( 'WPBACKITUP_VERSION' ) ) define( 'WPBACKITUP_VERSION', '1.1.5' );
14
 
15
- // The directory the plugin resides in
16
  if( !defined( 'WPBACKITUP_DIRNAME' ) ) define( 'WPBACKITUP_DIRNAME', dirname( dirname( __FILE__ ) ) );
17
 
18
- // The URL path of this plugin
 
19
  if( !defined( 'WPBACKITUP_URLPATH' ) ) define( 'WPBACKITUP_URLPATH', WP_PLUGIN_URL . "/" . plugin_basename( WPBACKITUP_DIRNAME ) );
20
 
21
- if( !defined( 'IS_AJAX_REQUEST' ) ) define( 'IS_AJAX_REQUEST', ( !empty( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) == 'xmlhttprequest' ) );
 
 
 
 
2
  /**
3
  * Constants used by this plugin
4
  *
5
+ * @package WP Backitup Pro
6
  *
7
  * @author jcpeden
8
+ * @version 1.2.0
9
+ * @since 1.0.1
10
  */
11
 
12
+ if( !defined( 'WPBACKITUP_VERSION' ) ) define( 'WPBACKITUP_VERSION', '1.2.0' );
 
13
 
 
14
  if( !defined( 'WPBACKITUP_DIRNAME' ) ) define( 'WPBACKITUP_DIRNAME', dirname( dirname( __FILE__ ) ) );
15
 
16
+ if( !defined( 'WPBACKITUP_DIR_PATH' ) ) define( 'WPBACKITUP_DIR_PATH', dirname( dirname( dirname( __FILE__ ) ) ) );
17
+
18
  if( !defined( 'WPBACKITUP_URLPATH' ) ) define( 'WPBACKITUP_URLPATH', WP_PLUGIN_URL . "/" . plugin_basename( WPBACKITUP_DIRNAME ) );
19
 
20
+ if( !defined( 'IS_AJAX_REQUEST' ) ) define( 'IS_AJAX_REQUEST', ( !empty( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) == 'xmlhttprequest' ) );
21
+
22
+ if( !defined( 'WPBACKITUP_SITE_URL' ) ) define( 'WPBACKITUP_SITE_URL', 'http://www.wpbackitup.com' );
23
+
24
+ if( !defined( 'WPBACKITUP_ITEM_NAME' ) ) define( 'WPBACKITUP_ITEM_NAME', 'WP Backitup Lite' );
lib/functions.php CHANGED
@@ -2,13 +2,18 @@
2
  /**
3
  * WP Backitup Functions
4
  *
5
- * @package WP Backitup Lite
6
  *
7
  * @author jcpeden
8
- * @version 1.1.6
9
- * @since 1.1.3
10
  */
11
 
 
 
 
 
 
12
  //load backup function
13
  function backup() {
14
  include_once 'includes/backup.php';
@@ -18,14 +23,12 @@ add_action('wp_ajax_backup', 'backup');
18
  //load download function
19
  function download() {
20
  if(glob(WPBACKITUP_DIRNAME . "/backups/*.zip")) {
21
- echo '<ul>';
22
  foreach (glob(WPBACKITUP_DIRNAME . "/backups/*.zip") as $file) {
23
  $filename = basename($file);
24
- echo '<li>Download most recent export file: <a href="' .WPBACKITUP_URLPATH. '/backups/' .$filename .'">' .$filename .'</a></li>';
25
  }
26
- echo '</ul>';
27
  } else {
28
- echo '<p>No export file available for download. Please create one.</p>';
29
  }
30
  die();
31
  }
@@ -33,7 +36,7 @@ add_action('wp_ajax_download', 'download');
33
 
34
  //load logreader function
35
  function logreader() {
36
- $log = WPBACKITUP_DIRNAME .'/backups/status.log';
37
  if(file_exists($log) ) {
38
  readfile($log);
39
  }
@@ -84,40 +87,19 @@ if(!function_exists('recursive_copy')) {
84
  //Define DB backup function
85
  if(!function_exists('db_backup')) {
86
  function db_backup($path) {
87
- global $wpdb;
88
- $row = $wpdb->get_results('SHOW TABLES', ARRAY_N);
89
- $tables = array();
90
- foreach($row as $value) {
91
- $tables[] = $value[0];
92
- }
93
  $handle = fopen($path .'db-backup.sql', 'w+');
94
- foreach($tables as $table) {
95
- $result = $wpdb->get_results('SELECT * FROM '.$table,ARRAY_N);
96
- $testing = $wpdb->get_row('SELECT * FROM '.$table,ARRAY_N);
97
- $num_fields=count($testing);
98
- $return = '';
99
- $return.= 'DROP TABLE IF EXISTS '.$table.';';
100
- $row2 = $wpdb->get_row('SHOW CREATE TABLE '.$table,ARRAY_N);
101
- $return.= "\n\n".$row2[1].";\n\n";
102
- foreach($result as $row) {
103
- $return.= 'INSERT INTO '.$table.' VALUES(';
104
- for($j=0; $j<$num_fields; $j++) {
105
- $row[$j] = addslashes($row[$j]);
106
- $row[$j] = ereg_replace("\n", "\\n",$row[$j]);
107
- if (isset($row[$j])) {
108
- $return .= '"' .$row[$j] .'"';
109
- } else {
110
- $return .= '"';
111
- }
112
- if ($j<($num_fields-1)) { $return.= ', '; }
113
- }
114
- $return.= ");\n";
115
- }
116
- $return.="\n\n\n";
117
- fwrite($handle, $return);
118
- }
119
- fclose($handle);
120
- return true;
121
  }
122
  }
123
 
2
  /**
3
  * WP Backitup Functions
4
  *
5
+ * @package WP Backitup Pro
6
  *
7
  * @author jcpeden
8
+ * @version 1.2.0
9
+ * @since 1.0.1
10
  */
11
 
12
+ // include recurseZip class
13
+ if( !class_exists( 'recurseZip' ) ) {
14
+ include_once 'includes/recurse_zip.php';
15
+ }
16
+
17
  //load backup function
18
  function backup() {
19
  include_once 'includes/backup.php';
23
  //load download function
24
  function download() {
25
  if(glob(WPBACKITUP_DIRNAME . "/backups/*.zip")) {
 
26
  foreach (glob(WPBACKITUP_DIRNAME . "/backups/*.zip") as $file) {
27
  $filename = basename($file);
28
+ echo 'Download most recent export file: <a href="' .WPBACKITUP_URLPATH. '/backups/' .$filename .'">' .$filename .'</a>';
29
  }
 
30
  } else {
31
+ echo 'No export file available for download. Please create one.';
32
  }
33
  die();
34
  }
36
 
37
  //load logreader function
38
  function logreader() {
39
+ $log = WPBACKITUP_DIRNAME .'/logs/status.log';
40
  if(file_exists($log) ) {
41
  readfile($log);
42
  }
87
  //Define DB backup function
88
  if(!function_exists('db_backup')) {
89
  function db_backup($path) {
 
 
 
 
 
 
90
  $handle = fopen($path .'db-backup.sql', 'w+');
91
+
92
+
93
+ $path_sql = $path .'/db-backup.sql';
94
+ $db_name = DB_NAME;
95
+ $db_user = DB_USER;
96
+ $db_pass = DB_PASSWORD;
97
+ $db_host = DB_HOST;
98
+
99
+ $output = shell_exec("mysqldump --user $db_user --password=$db_pass $db_name");
100
+ fwrite($handle,$output);
101
+ fclose($handle);
102
+ return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
  }
105
 
lib/includes/backup.php CHANGED
@@ -1,15 +1,17 @@
1
  <?php
2
 
3
  /**
4
- * Constants used by this plugin
5
  *
6
  * @package WP Backitup Pro
7
  *
8
  * @author jcpeden
9
- * @version 1.1.6
10
- * @since 1.1.3
11
  */
12
 
 
 
13
  //limit process to 15 minutes
14
  @set_time_limit(900);
15
 
@@ -18,26 +20,37 @@ $backup_project_dirname = get_bloginfo('name') .'-Export-' .date('Y-m-d-Hi');
18
  $backup_project_path = WPBACKITUP_DIRNAME ."/backups/". $backup_project_dirname .'/';
19
  $wp_content_path = dirname(dirname(dirname(dirname(dirname(__FILE__))))) .'/';
20
 
21
- //create the backup dir
22
- if( !is_dir(WPBACKITUP_DIRNAME ."/backups") ) {
23
- @mkdir(WPBACKITUP_DIRNAME ."/backups", 0775);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  }
25
 
26
- //create log file
27
- $log = WPBACKITUP_DIRNAME ."/backups/status.log";
28
- $fh = fopen($log, 'w') or die("can't open file");
29
- fwrite($fh, '<ul>');
30
-
31
  //Check to see if the directory is writeable
32
- fwrite($fh, '<li>Creating backup directory...');
33
  if(!is_writeable(WPBACKITUP_DIRNAME ."/backups/")) {
34
- fwrite($fh, '</li><li class="error">Cannot create backup directory. Please check the CHMOD settings of your wp-backitup plugin directory.</li></ul>');
 
 
35
  die();
36
  } else {
37
  //If the directory is writeable, create the backup folder if it doesn't exist
38
  if( !is_dir($backup_project_path) ) {
39
- @mkdir($backup_project_path, 0775);
40
- fwrite($fh, 'Done!</li>');
41
  }
42
  foreach(glob(WPBACKITUP_DIRNAME ."/backups/*.zip") as $zip) {
43
  unlink($zip);
@@ -45,48 +58,63 @@ if(!is_writeable(WPBACKITUP_DIRNAME ."/backups/")) {
45
  }
46
 
47
  //Backup content to project dir
48
- fwrite($fh, '<li>Backing up your files...');
49
  //Backup with copy
50
  if(recursive_copy($wp_content_path, $backup_project_path, $ignore = array( 'cgi-bin','.','..','._',$backup_project_dirname,'backupbuddy_backups','*.zip','cache' ) ) ) {
51
- fwrite($fh, 'Done!</li>');
52
  } else {
53
- fwrite($fh, '</li><li class="error">Unable to backup your files. Please try again.</li></ul>');
 
54
  die();
55
  }
56
 
57
  //Dump DB to project dir
58
- fwrite($fh, '<li>Backing up your database...');
 
59
  if( db_backup($backup_project_path) ) {
60
- fwrite($fh, 'Done!</li>');
61
  } else {
62
- fwrite($fh, '</li><li class="error">Unable to backup your database. Please try again.</li></ul>');
63
  recursive_delete($backup_project_path);
64
  die();
65
  }
66
 
67
  //Create siteinfo in project dir
68
  global $wpdb;
 
69
  if (!create_siteinfo($backup_project_path, $wpdb->prefix) ) {
70
- fwrite($fh, '<li class="error">Unable to create site information file. Please try again.</li></ul>');
 
71
  recursive_delete($backup_project_path);
 
72
  die();
73
  }
 
 
 
 
74
 
75
  //Zip the project dir
76
- fwrite($fh, '<li>Creating backup zip...');
77
  $z = new recurseZip();
78
  $src = rtrim($backup_project_path, '/');
79
  $z->compress($src, WPBACKITUP_DIRNAME ."/backups/");
80
- fwrite($fh, 'Done!</li>');
81
 
82
  //Delete backup dir
83
  if(!recursive_delete($backup_project_path)) {
84
- fwrite($fh, '<li class="error">Warning: Unable to cleanup your backup directory.</li>');
 
 
 
 
 
 
85
  }
86
 
87
  //close log file
88
- fwrite($fh, '<li>Backup file created successfully. You can download your backup file using the link above.</li>');
89
- fwrite($fh, '</ul>');
90
  fclose($fh);
91
 
92
  //End backup function
1
  <?php
2
 
3
  /**
4
+ * WP Backitup Backup Functions
5
  *
6
  * @package WP Backitup Pro
7
  *
8
  * @author jcpeden
9
+ * @version 1.2.0
10
+ * @since 1.0.1
11
  */
12
 
13
+ global $WPBackitup;
14
+
15
  //limit process to 15 minutes
16
  @set_time_limit(900);
17
 
20
  $backup_project_path = WPBACKITUP_DIRNAME ."/backups/". $backup_project_dirname .'/';
21
  $wp_content_path = dirname(dirname(dirname(dirname(dirname(__FILE__))))) .'/';
22
 
23
+ //create log file
24
+
25
+ $log = WPBACKITUP_DIRNAME ."/logs/status.log";
26
+ unlink($log);
27
+ $fh = fopen($log, 'w') or die("Can't open log file");
28
+
29
+ //Delete the existing backup directory
30
+ recursive_delete( WPBACKITUP_DIR_PATH .'/backups/' );
31
+
32
+ //Re-create and empty backup dir
33
+ if(!create_dir( WPBACKITUP_DIR_PATH .'/backups/' )) {
34
+ fwrite($fh, '<status code="prerequsites">Failed</status>');
35
+ fwrite($fh, '<error code="errorMessage">Error: Unable to create new directory for backup. Please check your CHMOD settings in ' .WPBACKITUP_DIR_PATH .'.</error>');
36
+
37
+ fclose($fh);
38
+
39
+ die();
40
  }
41
 
 
 
 
 
 
42
  //Check to see if the directory is writeable
43
+
44
  if(!is_writeable(WPBACKITUP_DIRNAME ."/backups/")) {
45
+ fwrite($fh, '<status code="prerequsites">Failed</status>');
46
+ fwrite($fh, '<error code="errorMessage">Error: Cannot create backup directory. Please check the CHMOD settings of your wp-backitup plugin directory.</error>');
47
+
48
  die();
49
  } else {
50
  //If the directory is writeable, create the backup folder if it doesn't exist
51
  if( !is_dir($backup_project_path) ) {
52
+ @mkdir($backup_project_path, 0755);
53
+ fwrite($fh, '<status code="prerequisites">Done</status>');
54
  }
55
  foreach(glob(WPBACKITUP_DIRNAME ."/backups/*.zip") as $zip) {
56
  unlink($zip);
58
  }
59
 
60
  //Backup content to project dir
61
+
62
  //Backup with copy
63
  if(recursive_copy($wp_content_path, $backup_project_path, $ignore = array( 'cgi-bin','.','..','._',$backup_project_dirname,'backupbuddy_backups','*.zip','cache' ) ) ) {
64
+ fwrite($fh, '<status code="backupfiles">Done</status>');
65
  } else {
66
+ fwrite($fh, '<status code="backupfiles">Failed</status>');
67
+ fwrite($fh, '<error code="errorMessage">Error: Unable to backup your files. Please try again.</error>');
68
  die();
69
  }
70
 
71
  //Dump DB to project dir
72
+
73
+
74
  if( db_backup($backup_project_path) ) {
75
+ fwrite($fh, '<status code="backupdb">Done</status>');
76
  } else {
77
+ fwrite($fh, '<error code="errorMessage">Error: Unable to backup your database. Please try again.</error>');
78
  recursive_delete($backup_project_path);
79
  die();
80
  }
81
 
82
  //Create siteinfo in project dir
83
  global $wpdb;
84
+
85
  if (!create_siteinfo($backup_project_path, $wpdb->prefix) ) {
86
+ fwrite($fh, '<status code="infofile">Failed</status>');
87
+ fwrite($fh, '<error code="errorMessage">Error: Unable to create site information file. Please try again.</error>');
88
  recursive_delete($backup_project_path);
89
+
90
  die();
91
  }
92
+ else
93
+ {
94
+ fwrite($fh, '<status code="infofile">Done</status>');
95
+ }
96
 
97
  //Zip the project dir
98
+
99
  $z = new recurseZip();
100
  $src = rtrim($backup_project_path, '/');
101
  $z->compress($src, WPBACKITUP_DIRNAME ."/backups/");
102
+ fwrite($fh, '<status code="zipfile">Done</status>');
103
 
104
  //Delete backup dir
105
  if(!recursive_delete($backup_project_path)) {
106
+ fwrite($fh, '<status code="cleanup">Failed</status>');
107
+ fwrite($fh, '<error code="errorMessage">Error: Warning: Unable to cleanup your backup directory.</error>');
108
+
109
+ }
110
+ else
111
+ {
112
+ fwrite($fh, '<status code="cleanup">Done</status>');
113
  }
114
 
115
  //close log file
116
+ fwrite($fh, '<status code="finalinfo">Backup file created successfully. You can download your backup file using the link above.</status>');
117
+ fwrite($fh, '<status code="end">End</status>');
118
  fclose($fh);
119
 
120
  //End backup function
lib/includes/recurse_zip.php ADDED
@@ -0,0 +1 @@
 
0
  * WP Backitup Recurse Zip Function
1
  *
2
  * @package WP Backitup Pro
3
  *
4
  * @author jcpeden
5
  * @version 1.2.0
6
  * @since 1.0.1
7
  */
1
+ <?php
2
  * WP Backitup Recurse Zip Function
3
  *
4
  * @package WP Backitup Pro
5
  *
6
  * @author jcpeden
7
  * @version 1.2.0
8
  * @since 1.0.1
9
  */
lib/recurse_zip.php DELETED
@@ -1 +0,0 @@
1
- <?php
2
  * Recurse zip function
3
  *
4
  * @package WP Backitup Pro
5
  *
6
  * @author jcpeden
7
  * @version 1.1.6
8
  * @since 1.1.3
9
  */
 
0
  * Recurse zip function
1
  *
2
  * @package WP Backitup Pro
3
  *
4
  * @author jcpeden
5
  * @version 1.1.6
6
  * @since 1.1.3
7
  */
logs/status.log ADDED
@@ -0,0 +1 @@
 
1
+ <status code="prerequisites">Done</status><status code="backupfiles">Done</status><status code="backupdb">Done</status><status code="infofile">Done</status><status code="zipfile">Done</status><status code="cleanup">Done</status><status code="finalinfo">Backup file created successfully. You can download your backup file using the link above.</status><status code="end">End</status>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.wpbackitup.com
4
  Tags: backup wordpress, database backup, backup database, download database, backup and restore, restoring wordpress, restore wordpress, restore wordpress backup,
5
  Requires at least: 3.4
6
  Tested up to: 3.5.1
7
- Stable tag: 1.1.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -96,8 +96,14 @@ Yes.
96
 
97
  == Changelog ==
98
 
 
 
 
 
 
 
99
  = 1.1.6 =
100
- * Forced backup process to ignore cache files
101
 
102
  = 1.1.5 =
103
  * Fixed minor bugs in the code.
@@ -149,6 +155,12 @@ Yes.
149
 
150
  == Upgrade Notice ==
151
 
 
 
 
 
 
 
152
  = 1.1.6 =
153
  * Recommended upgrade. Backup process faster and more stable.
154
 
4
  Tags: backup wordpress, database backup, backup database, download database, backup and restore, restoring wordpress, restore wordpress, restore wordpress backup,
5
  Requires at least: 3.4
6
  Tested up to: 3.5.1
7
+ Stable tag: 1.2.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
96
 
97
  == Changelog ==
98
 
99
+ = 1.2.0 =
100
+ * Fixed issues with broken directory tree, brought versioning inline with WP Backitup Pro
101
+
102
+ = 1.1.7 =
103
+ * Setup backup to use mysqldump and shellexec.
104
+
105
  = 1.1.6 =
106
+ * Forced backup process to ignore cache files.
107
 
108
  = 1.1.5 =
109
  * Fixed minor bugs in the code.
155
 
156
  == Upgrade Notice ==
157
 
158
+ = 1.2.0 =
159
+ * Critical upgrade. Plugin broken for most users without this update.
160
+
161
+ = 1.1.7 =
162
+ * Recommended upgrade. Backup process faster and more stable.
163
+
164
  = 1.1.6 =
165
  * Recommended upgrade. Backup process faster and more stable.
166
 
screenshots/screenshot-1.png DELETED
Binary file
screenshots/screenshot-2.png DELETED
Binary file
screenshots/screenshot-3.png DELETED
Binary file
views/options.php CHANGED
@@ -4,7 +4,7 @@
4
  <div id="content">
5
  <h3><?php _e('Backup', $this->namespace ); ?></h3>
6
  <p><?php _e('Create a backup file of this site\'s content and settings.', $this->namespace ); ?></p>
7
- <p><a href="#" class="backup-button button-primary"><?php _e( "Backup", $this->namespace ); ?> ) ?></a><img class="backup-icon status-icon" src="<?php echo WPBACKITUP_URLPATH. "/images/loader.gif"; ?>" height="16" width="16" /></p>
8
  <h3>Download</h3>
9
  <p><div id="download-link"></div></p>
10
  <h3>Status</h3>
@@ -12,25 +12,17 @@
12
  </div>
13
  <div id="sidebar">
14
  <div class="widget" id="restore-widget">
15
- <h3 class="promo">Restore Your Backups</h3>
16
- <p>You can restore your backup zips by importing them manually or by getting WP Backitup Pro.</p>
17
  <p><a class="button-primary" href="http://www.wpbackitup.com/wp-backitup-pro/">Read more</a></p>
18
  </div>
19
  <div class="widget">
20
  <h3 class="promo">Need support?</h3>
21
  <p>If you are having problems with this plugin please talk about them in the <a href="http://wordpress.org/support/plugin/wp-backitup">support forum</a>.</p>
22
- <p>You can also refer to the <a href="http://www.wpbackitup.com/documentation/">WP Backitup documentation</a>.</p>
23
  </div>
24
  <div class="widget">
25
  <h3 class="promo">Spread the Word!</h3>
26
- <p>Want to help make WP Backitup even better? All donations are used to improve this plugin, so donate $10, $20 or $50 now!</p>
27
- <p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
28
- <input type="hidden" name="cmd" value="_s-xclick">
29
- <input type="hidden" name="hosted_button_id" value="QSHPK8EDMAW9N">
30
- <input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal — The safer, easier way to pay online.">
31
- <img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
32
- </form></p>
33
- <p>Or you could <a href="http://wordpress.org/extend/plugins/wp-backitup/">rate the plugin 5&#9733; on Wordpress.org</a>.</p>
34
  </div>
35
  <div class="widget">
36
  <h3 class="promo">Presstrends</h3>
4
  <div id="content">
5
  <h3><?php _e('Backup', $this->namespace ); ?></h3>
6
  <p><?php _e('Create a backup file of this site\'s content and settings.', $this->namespace ); ?></p>
7
+ <p><a href="#" class="backup-button button-primary"><?php _e( "Backup", $this->namespace ); ?></a><img class="backup-icon status-icon" src="<?php echo WPBACKITUP_URLPATH. "/images/loader.gif"; ?>" height="16" width="16" /></p>
8
  <h3>Download</h3>
9
  <p><div id="download-link"></div></p>
10
  <h3>Status</h3>
12
  </div>
13
  <div id="sidebar">
14
  <div class="widget" id="restore-widget">
15
+ <h3 class="promo">Go Pro!</h3>
16
+ <p>Upgrade to <a href="http://www.wpbackitup.com/wp-backitup-pro/">WP Backitup Pro</a> and restore your backups with a few simple clicks!</p>
17
  <p><a class="button-primary" href="http://www.wpbackitup.com/wp-backitup-pro/">Read more</a></p>
18
  </div>
19
  <div class="widget">
20
  <h3 class="promo">Need support?</h3>
21
  <p>If you are having problems with this plugin please talk about them in the <a href="http://wordpress.org/support/plugin/wp-backitup">support forum</a>.</p>
 
22
  </div>
23
  <div class="widget">
24
  <h3 class="promo">Spread the Word!</h3>
25
+ <p>Why not <a href="http://wordpress.org/extend/plugins/wp-backitup/">rate the plugin 5&#9733; on Wordpress.org</a>?</p>
 
 
 
 
 
 
 
26
  </div>
27
  <div class="widget">
28
  <h3 class="promo">Presstrends</h3>