Version Description
- Fixed issues with broken directory tree, brought versioning inline with WP Backitup Pro
Download this release
Release Info
Developer | jcpeden |
Plugin | 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 +1 -1
- css/admin.css +8 -3
- index.php +4 -4
- js/admin.js +47 -5
- js/ajaxfileupload.js +205 -0
- languages/wp-backitup-pro.mo +0 -0
- languages/wp-backitup-pro.po +270 -0
- lib/constants.php +11 -8
- lib/functions.php +23 -41
- lib/includes/backup.php +55 -27
- lib/includes/recurse_zip.php +1 -0
- lib/recurse_zip.php +0 -1
- logs/status.log +1 -0
- readme.txt +14 -2
- screenshots/screenshot-1.png +0 -0
- screenshots/screenshot-2.png +0 -0
- screenshots/screenshot-3.png +0 -0
- views/options.php +4 -12
backups/status.log
CHANGED
@@ -1 +1 @@
|
|
1 |
-
<ul><li>
|
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.
|
5 |
-
* @since 1.1
|
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 |
-
|
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.
|
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.
|
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 =
|
43 |
-
var $version =
|
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.
|
5 |
-
* @since 1.1
|
6 |
*/
|
7 |
|
8 |
(function($){
|
|
|
|
|
9 |
//define backup variables
|
10 |
var backup = {
|
11 |
action: 'backup',
|
12 |
beforeSend: function() {
|
13 |
$('.backup-icon').css('visibility','visible');
|
14 |
-
|
15 |
-
|
|
|
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 |
-
$(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
6 |
*
|
7 |
* @author jcpeden
|
8 |
-
* @version 1.
|
9 |
-
* @since 1.1
|
10 |
*/
|
11 |
|
12 |
-
|
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 |
-
|
|
|
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
|
6 |
*
|
7 |
* @author jcpeden
|
8 |
-
* @version 1.
|
9 |
-
* @since 1.1
|
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 '
|
25 |
}
|
26 |
-
echo '</ul>';
|
27 |
} else {
|
28 |
-
echo '
|
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 .'/
|
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 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
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 |
-
*
|
5 |
*
|
6 |
* @package WP Backitup Pro
|
7 |
*
|
8 |
* @author jcpeden
|
9 |
-
* @version 1.
|
10 |
-
* @since 1.1
|
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
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
33 |
if(!is_writeable(WPBACKITUP_DIRNAME ."/backups/")) {
|
34 |
-
|
|
|
|
|
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,
|
40 |
-
fwrite($fh, 'Done
|
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 |
-
|
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
|
52 |
} else {
|
53 |
-
|
|
|
54 |
die();
|
55 |
}
|
56 |
|
57 |
//Dump DB to project dir
|
58 |
-
|
|
|
59 |
if( db_backup($backup_project_path) ) {
|
60 |
-
fwrite($fh, 'Done
|
61 |
} else {
|
62 |
-
fwrite($fh, '
|
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 |
-
|
|
|
71 |
recursive_delete($backup_project_path);
|
|
|
72 |
die();
|
73 |
}
|
|
|
|
|
|
|
|
|
74 |
|
75 |
//Zip the project dir
|
76 |
-
|
77 |
$z = new recurseZip();
|
78 |
$src = rtrim($backup_project_path, '/');
|
79 |
$z->compress($src, WPBACKITUP_DIRNAME ."/backups/");
|
80 |
-
fwrite($fh, 'Done
|
81 |
|
82 |
//Delete backup dir
|
83 |
if(!recursive_delete($backup_project_path)) {
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
|
87 |
//close log file
|
88 |
-
fwrite($fh, '<
|
89 |
-
fwrite($fh, '</
|
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.
|
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 );
|
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">
|
16 |
-
<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>
|
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★ 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★ on Wordpress.org</a>?</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
</div>
|
27 |
<div class="widget">
|
28 |
<h3 class="promo">Presstrends</h3>
|