Version Description
- Added support for mysql connection to happen over sockets or TCP
- Added support for Windows OS and fully tested the plugin on IIS
- Added support for limited memory_limit - 1MB - The plugin now requires only 1MB to operate properly
- Added support for multisite
- Use mysql_unbuffered_query instead of mysql_query to overcome any memory problems
- Fixed a deprecated warning for mysql_pconnect when php 5.5 and above is used
- Fixed memory_limit problem with PCLZIP library
- Fixed a bug when the archive is exported with zero size when using PCLZIP
- Fixed a bug when the archive was exported broken on some servers
- Fixed a deprecated usage of preg_replace \e in php v5.5 and above
Download this release
Release Info
| Developer | yani.iliev |
| Plugin | |
| Version | 1.3.0 |
| Comparing to | |
| See all releases | |
Code changes from version 1.2.1 to 1.3.0
- all-in-one-wp-migration.php +1 -1
- constants.php +1 -1
- lib/controller/class-ai1wm-export-controller.php +8 -6
- lib/controller/class-ai1wm-main-controller.php +5 -1
- lib/model/class-ai1wm-export.php +11 -31
- lib/model/class-ai1wm-file.php +118 -0
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpFactory.php +2 -2
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpInterface.php +2 -2
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpPDO.php +51 -24
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpSQL.php +52 -24
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlFileAdapter.php +2 -2
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlQueryAdapter.php +2 -2
- lib/vendor/zip-factory/zip-factory/lib/ArchiverInterface.php +1 -1
- lib/vendor/zip-factory/zip-factory/lib/ArchiverPclZip.php +7 -3
- lib/vendor/zip-factory/zip-factory/lib/ArchiverZipArchive.php +5 -1
- lib/vendor/zip-factory/zip-factory/lib/ZipFactory.php +1 -1
- lib/view/export/index.php +6 -0
- loader.php +2 -0
- readme.txt +24 -1
all-in-one-wp-migration.php
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
* Description: Migration tool for all your blog data
|
| 6 |
* Author: ServMask
|
| 7 |
* Author URI: http://servmask.com/
|
| 8 |
-
* Version: 1.
|
| 9 |
*
|
| 10 |
* Copyright (C) 2013 ServMask LLC
|
| 11 |
*
|
| 5 |
* Description: Migration tool for all your blog data
|
| 6 |
* Author: ServMask
|
| 7 |
* Author URI: http://servmask.com/
|
| 8 |
+
* Version: 1.3.0
|
| 9 |
*
|
| 10 |
* Copyright (C) 2013 ServMask LLC
|
| 11 |
*
|
constants.php
CHANGED
|
@@ -19,7 +19,7 @@
|
|
| 19 |
// ==================
|
| 20 |
// = Plugin VERSION =
|
| 21 |
// ==================
|
| 22 |
-
define( 'AI1WM_VERSION', '1.
|
| 23 |
|
| 24 |
// ===============
|
| 25 |
// = Plugin Name =
|
| 19 |
// ==================
|
| 20 |
// = Plugin VERSION =
|
| 21 |
// ==================
|
| 22 |
+
define( 'AI1WM_VERSION', '1.3.0' );
|
| 23 |
|
| 24 |
// ===============
|
| 25 |
// = Plugin Name =
|
lib/controller/class-ai1wm-export-controller.php
CHANGED
|
@@ -19,16 +19,19 @@
|
|
| 19 |
class Ai1wm_Export_Controller
|
| 20 |
{
|
| 21 |
public static function index() {
|
| 22 |
-
$model
|
|
|
|
| 23 |
Ai1wm_Template::render( 'export/index', array(
|
| 24 |
-
|
|
|
|
|
|
|
| 25 |
)
|
| 26 |
);
|
| 27 |
}
|
| 28 |
|
| 29 |
public static function export() {
|
| 30 |
if ( isset( $_POST['options'] ) && ( $options = $_POST['options'] ) ) {
|
| 31 |
-
$output_file =
|
| 32 |
|
| 33 |
// Export archive
|
| 34 |
$model = new Ai1wm_Export;
|
|
@@ -52,10 +55,9 @@ class Ai1wm_Export_Controller
|
|
| 52 |
header( 'Content-Length: ' . filesize( $file ) );
|
| 53 |
|
| 54 |
// Clear output buffering and read file content
|
| 55 |
-
|
| 56 |
-
ob_end_clean();
|
| 57 |
-
}
|
| 58 |
readfile( $file );
|
|
|
|
| 59 |
exit;
|
| 60 |
}
|
| 61 |
}
|
| 19 |
class Ai1wm_Export_Controller
|
| 20 |
{
|
| 21 |
public static function index() {
|
| 22 |
+
$model = new Ai1wm_Export;
|
| 23 |
+
$temp_dir = sys_get_temp_dir();
|
| 24 |
Ai1wm_Template::render( 'export/index', array(
|
| 25 |
+
'list_plugins' => get_plugins(),
|
| 26 |
+
'temp_dir' => $temp_dir,
|
| 27 |
+
'temp_dir_access' => is_readable( $temp_dir ) && is_writable( $temp_dir ),
|
| 28 |
)
|
| 29 |
);
|
| 30 |
}
|
| 31 |
|
| 32 |
public static function export() {
|
| 33 |
if ( isset( $_POST['options'] ) && ( $options = $_POST['options'] ) ) {
|
| 34 |
+
$output_file = tempnam( sys_get_temp_dir(), 'wm_' );
|
| 35 |
|
| 36 |
// Export archive
|
| 37 |
$model = new Ai1wm_Export;
|
| 55 |
header( 'Content-Length: ' . filesize( $file ) );
|
| 56 |
|
| 57 |
// Clear output buffering and read file content
|
| 58 |
+
@ob_end_flush();
|
|
|
|
|
|
|
| 59 |
readfile( $file );
|
| 60 |
+
@unlink( $file );
|
| 61 |
exit;
|
| 62 |
}
|
| 63 |
}
|
lib/controller/class-ai1wm-main-controller.php
CHANGED
|
@@ -58,8 +58,12 @@ class Ai1wm_Main_Controller
|
|
| 58 |
* @return Object Instance of this class
|
| 59 |
*/
|
| 60 |
private function activate_actions() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
| 62 |
-
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
| 63 |
add_action( 'init', array( $this, 'router' ) );
|
| 64 |
add_action( 'wp_ajax_leave_feedback', array( $this, 'leave_feedback' ) );
|
| 65 |
add_action( 'wp_ajax_upload_file', 'Ai1wm_Import_Controller::upload_file' );
|
| 58 |
* @return Object Instance of this class
|
| 59 |
*/
|
| 60 |
private function activate_actions() {
|
| 61 |
+
if ( is_multisite() ) {
|
| 62 |
+
add_action( 'network_admin_menu', array( $this, 'admin_menu' ) );
|
| 63 |
+
} else {
|
| 64 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
| 65 |
+
}
|
| 66 |
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
|
|
|
| 67 |
add_action( 'init', array( $this, 'router' ) );
|
| 68 |
add_action( 'wp_ajax_leave_feedback', array( $this, 'leave_feedback' ) );
|
| 69 |
add_action( 'wp_ajax_upload_file', 'Ai1wm_Import_Controller::upload_file' );
|
lib/model/class-ai1wm-export.php
CHANGED
|
@@ -68,8 +68,9 @@ class Ai1wm_Export
|
|
| 68 |
// Should we export database?
|
| 69 |
if ( ! isset( $options['export-database' ] ) ) {
|
| 70 |
$database_file = tmpfile();
|
|
|
|
| 71 |
$archive->addFile(
|
| 72 |
-
$
|
| 73 |
self::EXPORT_DATABASE_NAME
|
| 74 |
);
|
| 75 |
}
|
|
@@ -117,6 +118,8 @@ class Ai1wm_Export
|
|
| 117 |
public function prepare_database( $output_file, array $options = array() ) {
|
| 118 |
global $wpdb;
|
| 119 |
|
|
|
|
|
|
|
| 120 |
// Set include tables
|
| 121 |
$includeTables = array();
|
| 122 |
if ( isset( $options['include-tables'] ) ) {
|
|
@@ -190,43 +193,20 @@ class Ai1wm_Export
|
|
| 190 |
$new_values[] = $replace['new-value'][$i];
|
| 191 |
}
|
| 192 |
}
|
| 193 |
-
|
| 194 |
// Do String Replacement
|
| 195 |
if ( $old_values && $new_values ) {
|
| 196 |
-
$
|
|
|
|
| 197 |
$old_values,
|
| 198 |
-
$new_values
|
| 199 |
-
stream_get_contents( $output_file )
|
| 200 |
-
);
|
| 201 |
-
|
| 202 |
-
// Replace serialized string values
|
| 203 |
-
$data = preg_replace(
|
| 204 |
-
'!s:(\d+):([\\\\]?"[\\\\]?"|[\\\\]?"((.*?)[^\\\\])[\\\\]?");!e',
|
| 205 |
-
"'s:'.strlen( Ai1wm_Export::unescape_mysql( '$3' ) ).':\"'. Ai1wm_Export::unescape_quotes( '$3' ) .'\";'",
|
| 206 |
-
$data
|
| 207 |
);
|
| 208 |
-
if ( $data ) {
|
| 209 |
-
ftruncate( $output_file, 0 );
|
| 210 |
-
rewind( $output_file );
|
| 211 |
-
fwrite( $output_file, $data );
|
| 212 |
-
}
|
| 213 |
-
} else {
|
| 214 |
-
$data = stream_get_contents( $output_file );
|
| 215 |
-
// Replace serialized string values
|
| 216 |
-
$data = preg_replace(
|
| 217 |
-
'!s:(\d+):([\\\\]?"[\\\\]?"|[\\\\]?"((.*?)[^\\\\])[\\\\]?");!e',
|
| 218 |
-
"'s:'.strlen( Ai1wm_Export::unescape_mysql( '$3' ) ).':\"'. Ai1wm_Export::unescape_quotes( '$3' ) .'\";'",
|
| 219 |
-
$data
|
| 220 |
-
);
|
| 221 |
-
if ( $data ) {
|
| 222 |
-
ftruncate( $output_file, 0 );
|
| 223 |
-
rewind( $output_file );
|
| 224 |
-
fwrite( $output_file, $data );
|
| 225 |
-
}
|
| 226 |
}
|
| 227 |
}
|
| 228 |
|
| 229 |
-
return $
|
|
|
|
|
|
|
|
|
|
| 230 |
}
|
| 231 |
|
| 232 |
/**
|
| 68 |
// Should we export database?
|
| 69 |
if ( ! isset( $options['export-database' ] ) ) {
|
| 70 |
$database_file = tmpfile();
|
| 71 |
+
$database_file = $this->prepare_database( $database_file, $options );
|
| 72 |
$archive->addFile(
|
| 73 |
+
$database_file,
|
| 74 |
self::EXPORT_DATABASE_NAME
|
| 75 |
);
|
| 76 |
}
|
| 118 |
public function prepare_database( $output_file, array $options = array() ) {
|
| 119 |
global $wpdb;
|
| 120 |
|
| 121 |
+
$_f = new Ai1wm_File();
|
| 122 |
+
|
| 123 |
// Set include tables
|
| 124 |
$includeTables = array();
|
| 125 |
if ( isset( $options['include-tables'] ) ) {
|
| 193 |
$new_values[] = $replace['new-value'][$i];
|
| 194 |
}
|
| 195 |
}
|
|
|
|
| 196 |
// Do String Replacement
|
| 197 |
if ( $old_values && $new_values ) {
|
| 198 |
+
$output_file = $_f->str_replace_file(
|
| 199 |
+
$output_file,
|
| 200 |
$old_values,
|
| 201 |
+
$new_values
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 202 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
}
|
| 204 |
}
|
| 205 |
|
| 206 |
+
return $_f->preg_replace_file(
|
| 207 |
+
$output_file,
|
| 208 |
+
'/s:(\d+):([\\\\]?"[\\\\]?"|[\\\\]?"((.*?)[^\\\\])[\\\\]?");/'
|
| 209 |
+
);
|
| 210 |
}
|
| 211 |
|
| 212 |
/**
|
lib/model/class-ai1wm-file.php
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Copyright (C) 2013 ServMask LLC
|
| 4 |
+
*
|
| 5 |
+
* This program is free software: you can redistribute it and/or modify
|
| 6 |
+
* it under the terms of the GNU General Public License as published by
|
| 7 |
+
* the Free Software Foundation, either version 3 of the License, or
|
| 8 |
+
* (at your option) any later version.
|
| 9 |
+
*
|
| 10 |
+
* This program is distributed in the hope that it will be useful,
|
| 11 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 12 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 13 |
+
* GNU General Public License for more details.
|
| 14 |
+
*
|
| 15 |
+
* You should have received a copy of the GNU General Public License
|
| 16 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
| 17 |
+
*/
|
| 18 |
+
|
| 19 |
+
class Ai1wm_File
|
| 20 |
+
{
|
| 21 |
+
|
| 22 |
+
/**
|
| 23 |
+
* [str_replace_file description]
|
| 24 |
+
* @param [type] $fh [description]
|
| 25 |
+
* @param [type] $pattern [description]
|
| 26 |
+
* @param [type] $replacement [description]
|
| 27 |
+
* @return [type] [description]
|
| 28 |
+
*/
|
| 29 |
+
public function str_replace_file( $fh, $pattern, $replacement ) {
|
| 30 |
+
$_new_file = tmpfile();
|
| 31 |
+
|
| 32 |
+
while ( ! feof( $fh ) ) {
|
| 33 |
+
$line = stream_get_line( $fh, 1000000, '\n' );
|
| 34 |
+
|
| 35 |
+
// append new line at the end of the line
|
| 36 |
+
if ( strlen( $line ) < 1000000 && ! feof( $fh ) ) {
|
| 37 |
+
$line .= '\n';
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
if (
|
| 41 |
+
false === fwrite(
|
| 42 |
+
$_new_file,
|
| 43 |
+
str_replace( $pattern, $replacement, $line )
|
| 44 |
+
)
|
| 45 |
+
) {
|
| 46 |
+
wp_die(
|
| 47 |
+
'Writting to a file failed! Probably, there is no more free space left?',
|
| 48 |
+
'Out of disk space'
|
| 49 |
+
);
|
| 50 |
+
}
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
return $_new_file;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
/**
|
| 57 |
+
* Replace a file, line by line with the regex pattern and then writes the
|
| 58 |
+
* output to a new file.
|
| 59 |
+
*
|
| 60 |
+
* @param [type] $fh [description]
|
| 61 |
+
* @param [type] $pattern [description]
|
| 62 |
+
*
|
| 63 |
+
* @return [type] [description]
|
| 64 |
+
*/
|
| 65 |
+
public function preg_replace_file( $fh, $pattern ) {
|
| 66 |
+
$_new_file = tmpfile();
|
| 67 |
+
|
| 68 |
+
// set filehandle to the beginning of the file
|
| 69 |
+
rewind( $fh );
|
| 70 |
+
|
| 71 |
+
while ( ! feof( $fh ) ) {
|
| 72 |
+
$line = stream_get_line( $fh, 1000000, '\n' );
|
| 73 |
+
// append new line at the end of the line
|
| 74 |
+
if ( strlen( $line ) < 1000000 && ! feof( $fh ) ) {
|
| 75 |
+
$line .= '\n';
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
$replaced = $this->_preg_replace( $line, $pattern );
|
| 79 |
+
if (
|
| 80 |
+
false === fwrite(
|
| 81 |
+
$_new_file,
|
| 82 |
+
$replaced
|
| 83 |
+
)
|
| 84 |
+
) {
|
| 85 |
+
wp_die(
|
| 86 |
+
'Writting to a file failed! Probably, there is no more free space left?',
|
| 87 |
+
'Out of disk space'
|
| 88 |
+
);
|
| 89 |
+
}
|
| 90 |
+
}
|
| 91 |
+
return $_new_file;
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
/**
|
| 95 |
+
* [_preg_replace description]
|
| 96 |
+
* @param [type] $line [description]
|
| 97 |
+
* @param [type] $pattern [description]
|
| 98 |
+
* @return [type] [description]
|
| 99 |
+
*/
|
| 100 |
+
public function _preg_replace( $line, $pattern ) {
|
| 101 |
+
//php doesn't garbage collect functions created by create_function()
|
| 102 |
+
static $callback = null;
|
| 103 |
+
|
| 104 |
+
if ( $callback === null ) {
|
| 105 |
+
$callback = create_function(
|
| 106 |
+
'$matches',
|
| 107 |
+
"return isset(\$matches[3]) ? 's:' .
|
| 108 |
+
strlen( Ai1wm_Export::unescape_mysql( \$matches[3] ) ) .
|
| 109 |
+
':\"'.
|
| 110 |
+
Ai1wm_Export::unescape_quotes( \$matches[3] ) .
|
| 111 |
+
'\";' : \$matches[0];
|
| 112 |
+
"
|
| 113 |
+
);
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
return preg_replace_callback( $pattern, $callback, $line );
|
| 117 |
+
}
|
| 118 |
+
}
|
lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpFactory.php
CHANGED
|
@@ -29,7 +29,7 @@
|
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
-
* @version GIT: 1.0.
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
|
@@ -42,7 +42,7 @@
|
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
-
* @version GIT: 1.0.
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
class MysqlDumpFactory
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
+
* @version GIT: 1.0.9
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
+
* @version GIT: 1.0.9
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
class MysqlDumpFactory
|
lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpInterface.php
CHANGED
|
@@ -29,7 +29,7 @@
|
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
-
* @version GIT: 1.0.
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
|
@@ -42,7 +42,7 @@
|
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
-
* @version GIT: 1.0.
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
interface MysqlDumpInterface
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
+
* @version GIT: 1.0.9
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
+
* @version GIT: 1.0.9
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
interface MysqlDumpInterface
|
lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpPDO.php
CHANGED
|
@@ -29,7 +29,7 @@
|
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
-
* @version GIT: 1.0.
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
|
@@ -46,7 +46,7 @@ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'MysqlFileAdapter.php';
|
|
| 46 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 47 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 48 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 49 |
-
* @version GIT: 1.0.
|
| 50 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 51 |
*/
|
| 52 |
class MysqlDumpPDO implements MysqlDumpInterface
|
|
@@ -416,39 +416,62 @@ class MysqlDumpPDO implements MysqlDumpInterface
|
|
| 416 |
}
|
| 417 |
|
| 418 |
/**
|
| 419 |
-
*
|
| 420 |
*
|
| 421 |
-
* @return
|
| 422 |
*/
|
| 423 |
public function getConnection()
|
| 424 |
{
|
| 425 |
if ($this->connection === null) {
|
| 426 |
try {
|
| 427 |
-
// Make connection
|
| 428 |
-
$this->connection =
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
|
| 432 |
-
|
| 433 |
-
|
| 434 |
-
|
| 435 |
-
|
| 436 |
-
);
|
| 437 |
-
|
| 438 |
-
// Set additional connection attributes
|
| 439 |
-
$this->connection->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL);
|
| 440 |
-
|
| 441 |
-
// Set default encoding
|
| 442 |
-
$query = $this->queryAdapter->set_names( 'utf8' );
|
| 443 |
-
$this->connection->exec($query);
|
| 444 |
-
} catch (PDOException $e) {
|
| 445 |
-
throw new Exception('Unable to connect to MySQL database server: ' . $e->getMessage());
|
| 446 |
}
|
| 447 |
}
|
| 448 |
|
| 449 |
return $this->connection;
|
| 450 |
}
|
| 451 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 452 |
/**
|
| 453 |
* Returns header for dump file
|
| 454 |
*
|
|
@@ -533,7 +556,8 @@ class MysqlDumpPDO implements MysqlDumpInterface
|
|
| 533 |
);
|
| 534 |
|
| 535 |
// Generate insert statements
|
| 536 |
-
|
|
|
|
| 537 |
$items = array();
|
| 538 |
foreach ($row as $value) {
|
| 539 |
if ($value) {
|
|
@@ -555,6 +579,9 @@ class MysqlDumpPDO implements MysqlDumpInterface
|
|
| 555 |
}
|
| 556 |
}
|
| 557 |
|
|
|
|
|
|
|
|
|
|
| 558 |
if (!$insertFirst) {
|
| 559 |
$this->fileAdapter->write(";\n");
|
| 560 |
}
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
+
* @version GIT: 1.0.9
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
| 46 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 47 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 48 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 49 |
+
* @version GIT: 1.0.9
|
| 50 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 51 |
*/
|
| 52 |
class MysqlDumpPDO implements MysqlDumpInterface
|
| 416 |
}
|
| 417 |
|
| 418 |
/**
|
| 419 |
+
* Get MySQL connection (lazy loading)
|
| 420 |
*
|
| 421 |
+
* @return PDO
|
| 422 |
*/
|
| 423 |
public function getConnection()
|
| 424 |
{
|
| 425 |
if ($this->connection === null) {
|
| 426 |
try {
|
| 427 |
+
// Make connection (Socket)
|
| 428 |
+
$this->connection = $this->makeConnection();
|
| 429 |
+
} catch (Exception $e) {
|
| 430 |
+
try {
|
| 431 |
+
// Make connection (TCP)
|
| 432 |
+
$this->connection = $this->makeConnection(false);
|
| 433 |
+
} catch (Exception $e) {
|
| 434 |
+
throw new Exception('Unable to connect to MySQL database server: ' . $e->getMessage());
|
| 435 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 436 |
}
|
| 437 |
}
|
| 438 |
|
| 439 |
return $this->connection;
|
| 440 |
}
|
| 441 |
|
| 442 |
+
/**
|
| 443 |
+
* Make MySQL connection
|
| 444 |
+
*
|
| 445 |
+
* @param bool $useSocket Use socket or TCP connection
|
| 446 |
+
* @return PDO
|
| 447 |
+
*/
|
| 448 |
+
protected function makeConnection($useSocket = true)
|
| 449 |
+
{
|
| 450 |
+
// Use Socket or TCP
|
| 451 |
+
$hostname = ($useSocket ? $this->hostname : gethostbyname($this->hostname));
|
| 452 |
+
|
| 453 |
+
// Make connection
|
| 454 |
+
$connection = new PDO(
|
| 455 |
+
sprintf('mysql:host=%s;dbname=%s', $hostname, $this->database),
|
| 456 |
+
$this->username,
|
| 457 |
+
$this->password,
|
| 458 |
+
array(
|
| 459 |
+
PDO::ATTR_PERSISTENT => true,
|
| 460 |
+
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
| 461 |
+
)
|
| 462 |
+
);
|
| 463 |
+
|
| 464 |
+
// Set additional connection attributes
|
| 465 |
+
$connection->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL);
|
| 466 |
+
$connection->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
|
| 467 |
+
|
| 468 |
+
// Set default encoding
|
| 469 |
+
$query = $this->queryAdapter->set_names('utf8');
|
| 470 |
+
$connection->exec($query);
|
| 471 |
+
|
| 472 |
+
return $connection;
|
| 473 |
+
}
|
| 474 |
+
|
| 475 |
/**
|
| 476 |
* Returns header for dump file
|
| 477 |
*
|
| 556 |
);
|
| 557 |
|
| 558 |
// Generate insert statements
|
| 559 |
+
$result = $this->getConnection()->query($query, PDO::FETCH_NUM);
|
| 560 |
+
foreach ($result as $row) {
|
| 561 |
$items = array();
|
| 562 |
foreach ($row as $value) {
|
| 563 |
if ($value) {
|
| 579 |
}
|
| 580 |
}
|
| 581 |
|
| 582 |
+
// Close result cursor
|
| 583 |
+
$result->closeCursor();
|
| 584 |
+
|
| 585 |
if (!$insertFirst) {
|
| 586 |
$this->fileAdapter->write(";\n");
|
| 587 |
}
|
lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpSQL.php
CHANGED
|
@@ -29,7 +29,7 @@
|
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
-
* @version GIT: 1.0.
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
|
@@ -46,7 +46,7 @@ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'MysqlFileAdapter.php';
|
|
| 46 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 47 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 48 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 49 |
-
* @version GIT: 1.0.
|
| 50 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 51 |
*/
|
| 52 |
class MysqlDumpSQL implements MysqlDumpInterface
|
|
@@ -356,11 +356,14 @@ class MysqlDumpSQL implements MysqlDumpInterface
|
|
| 356 |
public function truncateDatabase()
|
| 357 |
{
|
| 358 |
$query = $this->queryAdapter->show_tables($this->database);
|
| 359 |
-
$result =
|
|
|
|
| 360 |
while ($row = mysql_fetch_assoc($result)) {
|
| 361 |
// Drop table
|
| 362 |
-
$
|
| 363 |
-
|
|
|
|
|
|
|
| 364 |
}
|
| 365 |
}
|
| 366 |
|
|
@@ -384,7 +387,7 @@ class MysqlDumpSQL implements MysqlDumpInterface
|
|
| 384 |
$query .= $line;
|
| 385 |
if (preg_match('/;\s*$/', $line)) {
|
| 386 |
// Run SQL query
|
| 387 |
-
$result =
|
| 388 |
if ($result) {
|
| 389 |
$query = null;
|
| 390 |
}
|
|
@@ -405,7 +408,7 @@ class MysqlDumpSQL implements MysqlDumpInterface
|
|
| 405 |
$tables = array();
|
| 406 |
|
| 407 |
$query = $this->queryAdapter->show_tables($this->database);
|
| 408 |
-
$result =
|
| 409 |
while ($row = mysql_fetch_assoc($result)) {
|
| 410 |
$tables[] = $row['table_name'];
|
| 411 |
}
|
|
@@ -414,32 +417,57 @@ class MysqlDumpSQL implements MysqlDumpInterface
|
|
| 414 |
}
|
| 415 |
|
| 416 |
/**
|
| 417 |
-
*
|
| 418 |
*
|
| 419 |
-
* @return
|
| 420 |
*/
|
| 421 |
protected function getConnection()
|
| 422 |
{
|
| 423 |
if ($this->connection === null) {
|
| 424 |
-
// Make connection
|
| 425 |
-
$this->connection =
|
| 426 |
-
|
| 427 |
-
|
| 428 |
-
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
|
| 432 |
-
|
| 433 |
-
throw new Exception('
|
| 434 |
}
|
| 435 |
-
} else {
|
| 436 |
-
throw new Exception('Unable to connect to MySQL database server: ' . mysql_error($this->connection));
|
| 437 |
}
|
| 438 |
}
|
| 439 |
|
| 440 |
return $this->connection;
|
| 441 |
}
|
| 442 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 443 |
/**
|
| 444 |
* Returns header for dump file
|
| 445 |
*
|
|
@@ -469,7 +497,7 @@ class MysqlDumpSQL implements MysqlDumpInterface
|
|
| 469 |
protected function getTableStructure($tableName)
|
| 470 |
{
|
| 471 |
$query = $this->queryAdapter->show_create_table($tableName);
|
| 472 |
-
$result =
|
| 473 |
while ($row = mysql_fetch_assoc($result)) {
|
| 474 |
if (isset($row['Create Table'])) {
|
| 475 |
// Replace table prefix
|
|
@@ -525,13 +553,13 @@ class MysqlDumpSQL implements MysqlDumpInterface
|
|
| 525 |
);
|
| 526 |
|
| 527 |
// Generate insert statements
|
| 528 |
-
$result =
|
| 529 |
while ($row = mysql_fetch_row($result)) {
|
| 530 |
$items = array();
|
| 531 |
foreach ($row as $value) {
|
| 532 |
if ($value) {
|
| 533 |
$value = $this->replaceTablePrefix($value);
|
| 534 |
-
}
|
| 535 |
$items[] = is_null($value) ? 'NULL' : "'" . mysql_real_escape_string($value) . "'";
|
| 536 |
}
|
| 537 |
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
+
* @version GIT: 1.0.9
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
| 46 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 47 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 48 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 49 |
+
* @version GIT: 1.0.9
|
| 50 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 51 |
*/
|
| 52 |
class MysqlDumpSQL implements MysqlDumpInterface
|
| 356 |
public function truncateDatabase()
|
| 357 |
{
|
| 358 |
$query = $this->queryAdapter->show_tables($this->database);
|
| 359 |
+
$result = mysql_unbuffered_query($query, $this->getConnection());
|
| 360 |
+
$_deleteTables = array();
|
| 361 |
while ($row = mysql_fetch_assoc($result)) {
|
| 362 |
// Drop table
|
| 363 |
+
$_deleteTables []= $this->queryAdapter->drop_table($row['table_name']);
|
| 364 |
+
}
|
| 365 |
+
foreach ($_deleteTables as $delete) {
|
| 366 |
+
mysql_unbuffered_query($delete, $this->getConnection());
|
| 367 |
}
|
| 368 |
}
|
| 369 |
|
| 387 |
$query .= $line;
|
| 388 |
if (preg_match('/;\s*$/', $line)) {
|
| 389 |
// Run SQL query
|
| 390 |
+
$result = mysql_unbuffered_query($query, $this->getConnection());
|
| 391 |
if ($result) {
|
| 392 |
$query = null;
|
| 393 |
}
|
| 408 |
$tables = array();
|
| 409 |
|
| 410 |
$query = $this->queryAdapter->show_tables($this->database);
|
| 411 |
+
$result = mysql_unbuffered_query($query, $this->getConnection());
|
| 412 |
while ($row = mysql_fetch_assoc($result)) {
|
| 413 |
$tables[] = $row['table_name'];
|
| 414 |
}
|
| 417 |
}
|
| 418 |
|
| 419 |
/**
|
| 420 |
+
* Get MySQL connection (lazy loading)
|
| 421 |
*
|
| 422 |
+
* @return resource
|
| 423 |
*/
|
| 424 |
protected function getConnection()
|
| 425 |
{
|
| 426 |
if ($this->connection === null) {
|
| 427 |
+
// Make connection (Socket)
|
| 428 |
+
$this->connection = $this->makeConnection();
|
| 429 |
+
|
| 430 |
+
if ($this->connection === false) {
|
| 431 |
+
// Make connection (TCP)
|
| 432 |
+
$this->connection = $this->makeConnection(false);
|
| 433 |
+
|
| 434 |
+
// Unable to connect to MySQL database server
|
| 435 |
+
if ($this->connection === false) {
|
| 436 |
+
throw new Exception('Unable to connect to MySQL database server: ' . mysql_error($this->connection));
|
| 437 |
}
|
|
|
|
|
|
|
| 438 |
}
|
| 439 |
}
|
| 440 |
|
| 441 |
return $this->connection;
|
| 442 |
}
|
| 443 |
|
| 444 |
+
/**
|
| 445 |
+
* Make MySQL connection
|
| 446 |
+
*
|
| 447 |
+
* @param bool $useSocket Use socket or TCP connection
|
| 448 |
+
* @return resource
|
| 449 |
+
*/
|
| 450 |
+
protected function makeConnection($useSocket = true)
|
| 451 |
+
{
|
| 452 |
+
// Use Socket or TCP
|
| 453 |
+
$hostname = ($useSocket ? $this->hostname : gethostbyname($this->hostname));
|
| 454 |
+
|
| 455 |
+
// Make connection
|
| 456 |
+
$connection = @mysql_pconnect($hostname, $this->username, $this->password);
|
| 457 |
+
|
| 458 |
+
// Select database and set default encoding
|
| 459 |
+
if ($connection) {
|
| 460 |
+
if (mysql_select_db($this->database, $connection)) {
|
| 461 |
+
$query = $this->queryAdapter->set_names('utf8');
|
| 462 |
+
mysql_unbuffered_query($query, $connection);
|
| 463 |
+
} else {
|
| 464 |
+
throw new Exception('Could not select MySQL database: ' . mysql_error($connection));
|
| 465 |
+
}
|
| 466 |
+
}
|
| 467 |
+
|
| 468 |
+
return $connection;
|
| 469 |
+
}
|
| 470 |
+
|
| 471 |
/**
|
| 472 |
* Returns header for dump file
|
| 473 |
*
|
| 497 |
protected function getTableStructure($tableName)
|
| 498 |
{
|
| 499 |
$query = $this->queryAdapter->show_create_table($tableName);
|
| 500 |
+
$result = mysql_unbuffered_query($query, $this->getConnection());
|
| 501 |
while ($row = mysql_fetch_assoc($result)) {
|
| 502 |
if (isset($row['Create Table'])) {
|
| 503 |
// Replace table prefix
|
| 553 |
);
|
| 554 |
|
| 555 |
// Generate insert statements
|
| 556 |
+
$result = mysql_unbuffered_query($query, $this->getConnection());
|
| 557 |
while ($row = mysql_fetch_row($result)) {
|
| 558 |
$items = array();
|
| 559 |
foreach ($row as $value) {
|
| 560 |
if ($value) {
|
| 561 |
$value = $this->replaceTablePrefix($value);
|
| 562 |
+
}
|
| 563 |
$items[] = is_null($value) ? 'NULL' : "'" . mysql_real_escape_string($value) . "'";
|
| 564 |
}
|
| 565 |
|
lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlFileAdapter.php
CHANGED
|
@@ -29,7 +29,7 @@
|
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
-
* @version GIT: 1.0.
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
|
@@ -42,7 +42,7 @@
|
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
-
* @version GIT: 1.0.
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
class MysqlFileAdapter
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
+
* @version GIT: 1.0.9
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
+
* @version GIT: 1.0.9
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
class MysqlFileAdapter
|
lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlQueryAdapter.php
CHANGED
|
@@ -29,7 +29,7 @@
|
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
-
* @version GIT: 1.0.
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
|
@@ -42,7 +42,7 @@
|
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
-
* @version GIT: 1.0.
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
class MysqlQueryAdapter
|
| 29 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 31 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 32 |
+
* @version GIT: 1.0.9
|
| 33 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 34 |
*/
|
| 35 |
|
| 42 |
* @author Bobby Angelov <bobby@servmask.com>
|
| 43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
| 44 |
* @license https://raw.github.com/yani-/mysqldump-factory/master/LICENSE The MIT License (MIT)
|
| 45 |
+
* @version GIT: 1.0.9
|
| 46 |
* @link https://github.com/yani-/mysqldump-factory/
|
| 47 |
*/
|
| 48 |
class MysqlQueryAdapter
|
lib/vendor/zip-factory/zip-factory/lib/ArchiverInterface.php
CHANGED
|
@@ -28,7 +28,7 @@
|
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
-
* @version GIT: 1.0.
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
+
* @version GIT: 1.0.3
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
lib/vendor/zip-factory/zip-factory/lib/ArchiverPclZip.php
CHANGED
|
@@ -28,7 +28,7 @@
|
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
-
* @version GIT: 1.0.
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
|
@@ -105,11 +105,15 @@ if (function_exists('gzopen')) {
|
|
| 105 |
$start = null,
|
| 106 |
$length = null
|
| 107 |
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
$this->pclzip->add(
|
| 109 |
array(
|
| 110 |
array(
|
| 111 |
-
PCLZIP_ATT_FILE_NAME
|
| 112 |
-
|
| 113 |
)
|
| 114 |
)
|
| 115 |
);
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
+
* @version GIT: 1.0.3
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
| 105 |
$start = null,
|
| 106 |
$length = null
|
| 107 |
) {
|
| 108 |
+
if (is_resource($filepath)) {
|
| 109 |
+
$meta = stream_get_meta_data($filepath);
|
| 110 |
+
$filepath = $meta['uri'];
|
| 111 |
+
}
|
| 112 |
$this->pclzip->add(
|
| 113 |
array(
|
| 114 |
array(
|
| 115 |
+
PCLZIP_ATT_FILE_NAME => $filepath,
|
| 116 |
+
PCLZIP_ATT_FILE_NEW_FULL_NAME => $entryname
|
| 117 |
)
|
| 118 |
)
|
| 119 |
);
|
lib/vendor/zip-factory/zip-factory/lib/ArchiverZipArchive.php
CHANGED
|
@@ -28,7 +28,7 @@
|
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
-
* @version GIT: 1.0.
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
|
@@ -97,6 +97,10 @@ if (class_exists('ZipArchive')) {
|
|
| 97 |
$start = null,
|
| 98 |
$length = null
|
| 99 |
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
parent::addFile($filepath, $entryname, $start, $length);
|
| 101 |
}
|
| 102 |
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
+
* @version GIT: 1.0.3
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
| 97 |
$start = null,
|
| 98 |
$length = null
|
| 99 |
) {
|
| 100 |
+
if (is_resource($filepath)) {
|
| 101 |
+
$meta = stream_get_meta_data($filepath);
|
| 102 |
+
$filepath = $meta['uri'];
|
| 103 |
+
}
|
| 104 |
parent::addFile($filepath, $entryname, $start, $length);
|
| 105 |
}
|
| 106 |
|
lib/vendor/zip-factory/zip-factory/lib/ZipFactory.php
CHANGED
|
@@ -28,7 +28,7 @@
|
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
-
* @version GIT: 1.0.
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
| 28 |
* @author Yani Iliev <yani@iliev.me>
|
| 29 |
* @copyright 2014 Yani Iliev
|
| 30 |
* @license https://raw.github.com/yani-/zip-factory/master/LICENSE The MIT License (MIT)
|
| 31 |
+
* @version GIT: 1.0.3
|
| 32 |
* @link https://github.com/yani-/zip-factory/
|
| 33 |
*/
|
| 34 |
|
lib/view/export/index.php
CHANGED
|
@@ -115,12 +115,18 @@
|
|
| 115 |
</div>
|
| 116 |
|
| 117 |
<div class="ai1wm-field">
|
|
|
|
| 118 |
<div class="ai1wm-buttons">
|
| 119 |
<button type="submit" name="options[action]" value="export" class="ai1wm-button-green">
|
| 120 |
<i class="ai1wm-icon-arrow-down"></i>
|
| 121 |
<?php _e( 'EXPORT PACKAGE' ); ?>
|
| 122 |
</button>
|
| 123 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
</div>
|
| 125 |
</form>
|
| 126 |
</div>
|
| 115 |
</div>
|
| 116 |
|
| 117 |
<div class="ai1wm-field">
|
| 118 |
+
<?php if ( $temp_dir_access ): ?>
|
| 119 |
<div class="ai1wm-buttons">
|
| 120 |
<button type="submit" name="options[action]" value="export" class="ai1wm-button-green">
|
| 121 |
<i class="ai1wm-icon-arrow-down"></i>
|
| 122 |
<?php _e( 'EXPORT PACKAGE' ); ?>
|
| 123 |
</button>
|
| 124 |
</div>
|
| 125 |
+
<?php else: ?>
|
| 126 |
+
<div class="ai1wm-message ai1wm-red-message">
|
| 127 |
+
<?php printf( _( 'Please ensure that PHP temporary directory <strong>%s</strong> has read and write permissions.' ), $temp_dir ); ?>
|
| 128 |
+
</div>
|
| 129 |
+
<?php endif; ?>
|
| 130 |
</div>
|
| 131 |
</form>
|
| 132 |
</div>
|
loader.php
CHANGED
|
@@ -66,3 +66,5 @@ require_once AI1WM_MODEL_PATH .
|
|
| 66 |
require_once AI1WM_MODEL_PATH . DIRECTORY_SEPARATOR . 'class-ai1wm-export.php';
|
| 67 |
|
| 68 |
require_once AI1WM_MODEL_PATH . DIRECTORY_SEPARATOR . 'class-ai1wm-import.php';
|
|
|
|
|
|
| 66 |
require_once AI1WM_MODEL_PATH . DIRECTORY_SEPARATOR . 'class-ai1wm-export.php';
|
| 67 |
|
| 68 |
require_once AI1WM_MODEL_PATH . DIRECTORY_SEPARATOR . 'class-ai1wm-import.php';
|
| 69 |
+
|
| 70 |
+
require_once AI1WM_MODEL_PATH . DIRECTORY_SEPARATOR . 'class-ai1wm-file.php';
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: yani.iliev, bangelov, mirkov
|
|
| 3 |
Tags: db migration, migration, wordpress migration, db backup, db restore, website backup, website restore, website migration, website deploy, wordpress deploy, db backup, database export, database serialization, database find replace
|
| 4 |
Requires at least: 3.3
|
| 5 |
Tested up to: 3.8
|
| 6 |
-
Stable tag: 1.
|
| 7 |
License: GPLv2 or later
|
| 8 |
|
| 9 |
All-in-One WP Migration is the only tools that you will ever needs when you need to perform site migration of your WordPress blog.
|
|
@@ -15,6 +15,17 @@ You can apply unlimited find and replace operations on your database and the plu
|
|
| 15 |
|
| 16 |
All in One WP Plugin is the first plugin to offer true mobile experience on WordPress versions 3.3 and up.
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
= Bypass all upload size restriction =
|
| 19 |
* We use chunks to import your data and that way we bypass any webserver upload size restrictions up to **512MB** - commercial version supports up to **5GB**
|
| 20 |
|
|
@@ -59,6 +70,18 @@ All in One WP Plugin is the first plugin to offer true mobile experience on Word
|
|
| 59 |
3. Plugin Menu
|
| 60 |
|
| 61 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
= 1.2.1 =
|
| 63 |
* Fixed an issue when HTTP Error was shown on some hosts after import, credit to Michael Simon
|
| 64 |
* Fixed an issue when exporting databases with different prefix than wp_, credit to najtrox
|
| 3 |
Tags: db migration, migration, wordpress migration, db backup, db restore, website backup, website restore, website migration, website deploy, wordpress deploy, db backup, database export, database serialization, database find replace
|
| 4 |
Requires at least: 3.3
|
| 5 |
Tested up to: 3.8
|
| 6 |
+
Stable tag: 1.3.0
|
| 7 |
License: GPLv2 or later
|
| 8 |
|
| 9 |
All-in-One WP Migration is the only tools that you will ever needs when you need to perform site migration of your WordPress blog.
|
| 15 |
|
| 16 |
All in One WP Plugin is the first plugin to offer true mobile experience on WordPress versions 3.3 and up.
|
| 17 |
|
| 18 |
+
= Multisite compatible =
|
| 19 |
+
* The plugin menu is available for the network administrator only `wp-admin/network/admin.php?page=site-migration-export`
|
| 20 |
+
|
| 21 |
+
= Works on Windows OS and IIS =
|
| 22 |
+
* Tested the plugin on Windows 7 and Windows Server 2012 with the default available IIS
|
| 23 |
+
* You will need to make sure that Windows\TEMP folder has write permissions for the IIS user
|
| 24 |
+
|
| 25 |
+
= memory_limit requirement of only 32MB =
|
| 26 |
+
* The plugin handles archiving of files by using 2048 bytes of chunks
|
| 27 |
+
* The plugin processes database find/replacement in chunks of 1MB
|
| 28 |
+
|
| 29 |
= Bypass all upload size restriction =
|
| 30 |
* We use chunks to import your data and that way we bypass any webserver upload size restrictions up to **512MB** - commercial version supports up to **5GB**
|
| 31 |
|
| 70 |
3. Plugin Menu
|
| 71 |
|
| 72 |
== Changelog ==
|
| 73 |
+
= 1.3.0 =
|
| 74 |
+
* Added support for mysql connection to happen over sockets or TCP
|
| 75 |
+
* Added support for Windows OS and fully tested the plugin on IIS
|
| 76 |
+
* Added support for limited memory_limit - 1MB - The plugin now requires only 1MB to operate properly
|
| 77 |
+
* Added support for multisite
|
| 78 |
+
* Use mysql_unbuffered_query instead of mysql_query to overcome any memory problems
|
| 79 |
+
* Fixed a deprecated warning for mysql_pconnect when php 5.5 and above is used
|
| 80 |
+
* Fixed memory_limit problem with PCLZIP library
|
| 81 |
+
* Fixed a bug when the archive is exported with zero size when using PCLZIP
|
| 82 |
+
* Fixed a bug when the archive was exported broken on some servers
|
| 83 |
+
* Fixed a deprecated usage of preg_replace \e in php v5.5 and above
|
| 84 |
+
|
| 85 |
= 1.2.1 =
|
| 86 |
* Fixed an issue when HTTP Error was shown on some hosts after import, credit to Michael Simon
|
| 87 |
* Fixed an issue when exporting databases with different prefix than wp_, credit to najtrox
|
