Version Description
- Added support for automatically switching database adapters for better performance and optimization
- Fixed a bug when using host:port syntax with MySQL PDO
- Fixed a bug when using find and replace functionality
Download this release
Release Info
Developer | bangelov |
Plugin | All-in-One WP Migration |
Version | 1.7.2 |
Comparing to | |
See all releases |
Code changes from version 1.7.1 to 1.7.2
- all-in-one-wp-migration.php +1 -1
- constants.php +1 -1
- lib/model/class-ai1wm-export.php +32 -27
- lib/model/class-ai1wm-file.php +7 -5
- lib/model/class-ai1wm-import.php +39 -185
- lib/vendor/mysqldump-factory/mysqldump-factory/README.md +1 -1
- 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 +53 -4
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlDumpSQL.php +2 -2
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlFileAdapter.php +2 -2
- lib/vendor/mysqldump-factory/mysqldump-factory/lib/MysqlQueryAdapter.php +2 -2
- lib/vendor/storage-factory/storage-factory/.editorconfig +0 -26
- lib/vendor/storage-factory/storage-factory/.travil.yml +0 -10
- lib/vendor/storage-factory/storage-factory/composer.json +0 -25
- lib/vendor/storage-factory/storage-factory/lib/StorageAbstract.php +3 -3
- lib/vendor/storage-factory/storage-factory/lib/StorageArea.php +3 -2
- lib/vendor/storage-factory/storage-factory/lib/StorageDirectory.php +101 -11
- lib/vendor/storage-factory/storage-factory/lib/StorageFile.php +2 -2
- lib/vendor/storage-factory/storage-factory/phpunit.xml +0 -29
- lib/vendor/storage-factory/storage-factory/test/bootstrap.php +0 -40
- lib/vendor/storage-factory/storage-factory/test/test-storage-factory.php +0 -67
- lib/view/assets/css/import.min.css +1 -1
- lib/view/assets/javascript/import.min.js +1 -1
- readme.txt +6 -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.7.
|
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.7.2
|
9 |
*
|
10 |
* Copyright (C) 2013 ServMask LLC
|
11 |
*
|
constants.php
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
// ==================
|
27 |
// = Plugin VERSION =
|
28 |
// ==================
|
29 |
-
define( 'AI1WM_VERSION', '1.7.
|
30 |
|
31 |
// ===============
|
32 |
// = Plugin Name =
|
26 |
// ==================
|
27 |
// = Plugin VERSION =
|
28 |
// ==================
|
29 |
+
define( 'AI1WM_VERSION', '1.7.2' );
|
30 |
|
31 |
// ===============
|
32 |
// = Plugin Name =
|
lib/model/class-ai1wm-export.php
CHANGED
@@ -33,22 +33,6 @@ class Ai1wm_Export
|
|
33 |
const EXPORT_THEMES_NAME = 'themes';
|
34 |
const EXPORT_LAST_OPTIONS = 'ai1wm_export_last_options';
|
35 |
|
36 |
-
protected $connection = null;
|
37 |
-
|
38 |
-
public function __construct() {
|
39 |
-
$this->connection = MysqlDumpFactory::makeMysqlDump(
|
40 |
-
DB_HOST,
|
41 |
-
DB_USER,
|
42 |
-
DB_PASSWORD,
|
43 |
-
DB_NAME,
|
44 |
-
(
|
45 |
-
class_exists(
|
46 |
-
'PDO'
|
47 |
-
) && in_array( 'mysql', PDO::getAvailableDrivers() )
|
48 |
-
)
|
49 |
-
);
|
50 |
-
}
|
51 |
-
|
52 |
/**
|
53 |
* Export archive file (database, media, package.json)
|
54 |
*
|
@@ -70,6 +54,9 @@ class Ai1wm_Export
|
|
70 |
// Export last options
|
71 |
update_option( self::EXPORT_LAST_OPTIONS, $options );
|
72 |
|
|
|
|
|
|
|
73 |
// Create output file
|
74 |
$output_file = $storage->makeFile();
|
75 |
|
@@ -180,18 +167,36 @@ class Ai1wm_Export
|
|
180 |
$clauses[ $wpdb->usermeta ] = ' WHERE user_id = 1 ';
|
181 |
}
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
// Set dump options
|
184 |
-
$
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
->setQueryClauses( $clauses );
|
192 |
|
193 |
// Make dump
|
194 |
-
$
|
195 |
|
196 |
// Replace Old/New Values
|
197 |
if ( isset( $options['replace'] ) && ( $replace = $options['replace'] ) ) {
|
@@ -317,8 +322,8 @@ class Ai1wm_Export
|
|
317 |
|
318 |
$plugins = array();
|
319 |
foreach ( get_plugins() as $key => $plugin ) {
|
320 |
-
$directory =
|
321 |
-
if ( ! in_array( $directory, $exclude ) ) {
|
322 |
$plugins[] = $directory;
|
323 |
}
|
324 |
}
|
33 |
const EXPORT_THEMES_NAME = 'themes';
|
34 |
const EXPORT_LAST_OPTIONS = 'ai1wm_export_last_options';
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
/**
|
37 |
* Export archive file (database, media, package.json)
|
38 |
*
|
54 |
// Export last options
|
55 |
update_option( self::EXPORT_LAST_OPTIONS, $options );
|
56 |
|
57 |
+
// Flush storage directory
|
58 |
+
StorageDirectory::flush( AI1WM_STORAGE_PATH, array( '.gitignore' ) );
|
59 |
+
|
60 |
// Create output file
|
61 |
$output_file = $storage->makeFile();
|
62 |
|
167 |
$clauses[ $wpdb->usermeta ] = ' WHERE user_id = 1 ';
|
168 |
}
|
169 |
|
170 |
+
// Make connection
|
171 |
+
try {
|
172 |
+
$db = MysqlDumpFactory::makeMysqlDump(
|
173 |
+
DB_HOST,
|
174 |
+
DB_USER,
|
175 |
+
DB_PASSWORD,
|
176 |
+
DB_NAME,
|
177 |
+
(
|
178 |
+
class_exists(
|
179 |
+
'PDO'
|
180 |
+
) && in_array( 'mysql', PDO::getAvailableDrivers() )
|
181 |
+
)
|
182 |
+
);
|
183 |
+
$db->getConnection();
|
184 |
+
} catch ( Exception $e ) {
|
185 |
+
// Use "old" mysql adapter
|
186 |
+
$db = MysqlDumpFactory::makeMysqlDump( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, false );
|
187 |
+
}
|
188 |
+
|
189 |
// Set dump options
|
190 |
+
$db->setFileName( $output_file->getAs( 'string' ) )
|
191 |
+
->setIncludeTables( $includeTables )
|
192 |
+
->setExcludeTables( $excludeTables )
|
193 |
+
->setNoTableData( $noTableData )
|
194 |
+
->setOldTablePrefix( $wpdb->prefix )
|
195 |
+
->setNewTablePrefix( AI1WM_TABLE_PREFIX )
|
196 |
+
->setQueryClauses( $clauses );
|
|
|
197 |
|
198 |
// Make dump
|
199 |
+
$db->dump();
|
200 |
|
201 |
// Replace Old/New Values
|
202 |
if ( isset( $options['replace'] ) && ( $replace = $options['replace'] ) ) {
|
322 |
|
323 |
$plugins = array();
|
324 |
foreach ( get_plugins() as $key => $plugin ) {
|
325 |
+
$directory = dirname( $key );
|
326 |
+
if ( $directory !== '.' && ! in_array( $directory, $exclude ) ) {
|
327 |
$plugins[] = $directory;
|
328 |
}
|
329 |
}
|
lib/model/class-ai1wm-file.php
CHANGED
@@ -41,11 +41,11 @@ class Ai1wm_File
|
|
41 |
$current_file = $file->getAs( 'resource' );
|
42 |
|
43 |
while ( ! feof( $current_file ) ) {
|
44 |
-
$line = stream_get_line( $current_file, 1000000,
|
45 |
|
46 |
-
//
|
47 |
if ( strlen( $line ) < 1000000 && ! feof( $current_file ) ) {
|
48 |
-
$line .=
|
49 |
}
|
50 |
|
51 |
if ( false === fwrite( $new_file->getAs( 'resource' ), str_replace( $pattern, $replacement, $line ) ) ) {
|
@@ -76,10 +76,11 @@ class Ai1wm_File
|
|
76 |
rewind( $current_file );
|
77 |
|
78 |
while ( ! feof( $current_file ) ) {
|
79 |
-
$line = stream_get_line( $current_file, 1000000,
|
|
|
80 |
// Append new line at the end of the line
|
81 |
if ( strlen( $line ) < 1000000 && ! feof( $current_file ) ) {
|
82 |
-
$line .=
|
83 |
}
|
84 |
|
85 |
$replaced = $this->_preg_replace( $line, $pattern );
|
@@ -90,6 +91,7 @@ class Ai1wm_File
|
|
90 |
);
|
91 |
}
|
92 |
}
|
|
|
93 |
return $new_file;
|
94 |
}
|
95 |
|
41 |
$current_file = $file->getAs( 'resource' );
|
42 |
|
43 |
while ( ! feof( $current_file ) ) {
|
44 |
+
$line = stream_get_line( $current_file, 1000000, "\n" );
|
45 |
|
46 |
+
// Append new line at the end of the line
|
47 |
if ( strlen( $line ) < 1000000 && ! feof( $current_file ) ) {
|
48 |
+
$line .= "\n";
|
49 |
}
|
50 |
|
51 |
if ( false === fwrite( $new_file->getAs( 'resource' ), str_replace( $pattern, $replacement, $line ) ) ) {
|
76 |
rewind( $current_file );
|
77 |
|
78 |
while ( ! feof( $current_file ) ) {
|
79 |
+
$line = stream_get_line( $current_file, 1000000, "\n" );
|
80 |
+
|
81 |
// Append new line at the end of the line
|
82 |
if ( strlen( $line ) < 1000000 && ! feof( $current_file ) ) {
|
83 |
+
$line .= "\n";
|
84 |
}
|
85 |
|
86 |
$replaced = $this->_preg_replace( $line, $pattern );
|
91 |
);
|
92 |
}
|
93 |
}
|
94 |
+
|
95 |
return $new_file;
|
96 |
}
|
97 |
|
lib/model/class-ai1wm-import.php
CHANGED
@@ -30,20 +30,6 @@ class Ai1wm_Import
|
|
30 |
const MAX_CHUNK_RETRIES = 10;
|
31 |
const MAINTENANCE_MODE = 'ai1wm_maintenance_mode';
|
32 |
|
33 |
-
public function __construct() {
|
34 |
-
$this->connection = MysqlDumpFactory::makeMysqlDump(
|
35 |
-
DB_HOST,
|
36 |
-
DB_USER,
|
37 |
-
DB_PASSWORD,
|
38 |
-
DB_NAME,
|
39 |
-
(
|
40 |
-
class_exists(
|
41 |
-
'PDO'
|
42 |
-
) && in_array( 'mysql', PDO::getAvailableDrivers() )
|
43 |
-
)
|
44 |
-
);
|
45 |
-
}
|
46 |
-
|
47 |
/**
|
48 |
* Import archive file (database, media, package.json)
|
49 |
*
|
@@ -59,6 +45,11 @@ class Ai1wm_Import
|
|
59 |
try {
|
60 |
$storage = new StorageArea;
|
61 |
|
|
|
|
|
|
|
|
|
|
|
62 |
// Partial file path
|
63 |
$upload_file = $storage->makeFile( $options['name'] )->getAs( 'string' );
|
64 |
|
@@ -146,13 +137,31 @@ class Ai1wm_Import
|
|
146 |
$model = new Ai1wm_Export;
|
147 |
$database_file = $model->prepare_database( $storage );
|
148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
// Truncate database
|
150 |
-
$
|
151 |
|
152 |
// Import database
|
153 |
-
$
|
154 |
-
|
155 |
-
|
156 |
}
|
157 |
|
158 |
// Media import
|
@@ -160,13 +169,13 @@ class Ai1wm_Import
|
|
160 |
// Backup media files
|
161 |
$backup_media_to = $storage->makeDirectory()->getAs( 'string' );
|
162 |
|
163 |
-
|
164 |
|
165 |
-
//
|
166 |
-
|
167 |
|
168 |
// Import media files
|
169 |
-
|
170 |
}
|
171 |
|
172 |
// Themes import
|
@@ -174,13 +183,13 @@ class Ai1wm_Import
|
|
174 |
// Backup themes files
|
175 |
$backup_themes_to = $storage->makeDirectory()->getAs( 'string' );
|
176 |
|
177 |
-
|
178 |
|
179 |
-
//
|
180 |
-
|
181 |
|
182 |
// Import themes files
|
183 |
-
|
184 |
}
|
185 |
|
186 |
// Plugins import
|
@@ -188,55 +197,13 @@ class Ai1wm_Import
|
|
188 |
// Backup plugin files
|
189 |
$backup_plugins_to = $storage->makeDirectory()->getAs( 'string' );
|
190 |
|
191 |
-
|
192 |
|
193 |
-
//
|
194 |
-
|
195 |
|
196 |
// Import plugin files
|
197 |
-
|
198 |
-
}
|
199 |
-
|
200 |
-
// Test website
|
201 |
-
if ( ! $this->test_website( get_option( 'siteurl' ) ) ) {
|
202 |
-
|
203 |
-
// Database import
|
204 |
-
if ( file_exists( $extract_to . Ai1wm_Export::EXPORT_DATABASE_NAME ) ) {
|
205 |
-
// Truncate database
|
206 |
-
$this->connection->truncateDatabase();
|
207 |
-
|
208 |
-
// Import "OLD" database
|
209 |
-
$this->connection->setOldTablePrefix( AI1WM_TABLE_PREFIX )
|
210 |
-
->setNewTablePrefix( $wpdb->prefix )
|
211 |
-
->import( $database_file->getAs( 'string' ) );
|
212 |
-
}
|
213 |
-
|
214 |
-
// Media import
|
215 |
-
if ( is_dir( $extract_to . Ai1wm_Export::EXPORT_MEDIA_NAME ) ) {
|
216 |
-
// Truncate media files
|
217 |
-
$this->truncate_dir( $upload_basedir );
|
218 |
-
|
219 |
-
// Import "OLD" media files
|
220 |
-
$this->copy_dir( $backup_media_to, $upload_basedir );
|
221 |
-
}
|
222 |
-
|
223 |
-
// Themes import
|
224 |
-
if ( is_dir( $extract_to . Ai1wm_Export::EXPORT_THEMES_NAME ) ) {
|
225 |
-
// Truncate themes files
|
226 |
-
$this->truncate_dir( $themes_basedir );
|
227 |
-
|
228 |
-
// Import "OLD" themes files
|
229 |
-
$this->copy_dir( $backup_themes_to, $themes_basedir );
|
230 |
-
}
|
231 |
-
|
232 |
-
// Plugins import
|
233 |
-
if ( is_dir( $extract_to . Ai1wm_Export::EXPORT_PLUGINS_NAME ) ) {
|
234 |
-
// Truncate plugin files
|
235 |
-
$this->truncate_dir( WP_PLUGIN_DIR, array( AI1WM_PLUGIN_NAME ) );
|
236 |
-
|
237 |
-
// Import "OLD" plugin files
|
238 |
-
$this->copy_dir( $backup_plugins_to, WP_PLUGIN_DIR, array( AI1WM_PLUGIN_NAME ) );
|
239 |
-
}
|
240 |
}
|
241 |
|
242 |
// Disable maintenance mode
|
@@ -267,119 +234,6 @@ class Ai1wm_Import
|
|
267 |
return update_option( self::MAINTENANCE_MODE, $enabled );
|
268 |
}
|
269 |
|
270 |
-
/**
|
271 |
-
* Copy files from directory to directory
|
272 |
-
*
|
273 |
-
* @param string $from Copy files and directories FROM
|
274 |
-
* @param string $to Copy files and directories TO
|
275 |
-
* @param array $exclude List of directories to exclude
|
276 |
-
* @return void
|
277 |
-
*/
|
278 |
-
public function copy_dir( $from, $to, $exclude = array() ) {
|
279 |
-
$from = trailingslashit( $from );
|
280 |
-
$to = trailingslashit( $to );
|
281 |
-
|
282 |
-
$iterator = new RecursiveIteratorIterator(
|
283 |
-
new RecursiveDirectoryIterator( $from ),
|
284 |
-
RecursiveIteratorIterator::SELF_FIRST
|
285 |
-
);
|
286 |
-
|
287 |
-
// Prepare filter pattern
|
288 |
-
$filter_pattern = null;
|
289 |
-
if ( is_array( $exclude ) ) {
|
290 |
-
$filters = array();
|
291 |
-
foreach ( $exclude as $filter ) {
|
292 |
-
$filters[] = sprintf(
|
293 |
-
'(%s(%s.*)?)',
|
294 |
-
preg_quote( $filter, '/' ),
|
295 |
-
preg_quote( DIRECTORY_SEPARATOR, '/' )
|
296 |
-
);
|
297 |
-
}
|
298 |
-
|
299 |
-
$filter_pattern = implode( '|', $filters );
|
300 |
-
}
|
301 |
-
|
302 |
-
foreach ( $iterator as $item ) {
|
303 |
-
// Skip dots
|
304 |
-
if ( $iterator->isDot() ) {
|
305 |
-
continue;
|
306 |
-
}
|
307 |
-
|
308 |
-
// Validate filter pattern
|
309 |
-
if ( $filter_pattern ) {
|
310 |
-
if ( preg_match( '/^' . $filter_pattern . '$/', $iterator->getSubPathName() ) ) {
|
311 |
-
continue;
|
312 |
-
}
|
313 |
-
}
|
314 |
-
|
315 |
-
if ( $item->isDir() ) {
|
316 |
-
mkdir( $to . $iterator->getSubPathName() );
|
317 |
-
} else {
|
318 |
-
copy( $item, $to . $iterator->getSubPathName() );
|
319 |
-
}
|
320 |
-
}
|
321 |
-
}
|
322 |
-
|
323 |
-
/**
|
324 |
-
* Truncate all files from specific directory
|
325 |
-
*
|
326 |
-
* @param string $dir Path to directory
|
327 |
-
* @param array $exclude List of directories to exclude
|
328 |
-
* @return void
|
329 |
-
*/
|
330 |
-
public function truncate_dir( $dir, $exclude = array() ) {
|
331 |
-
$dir = trailingslashit( $dir );
|
332 |
-
$iterator = new RecursiveIteratorIterator(
|
333 |
-
new RecursiveDirectoryIterator( $dir ),
|
334 |
-
RecursiveIteratorIterator::CHILD_FIRST
|
335 |
-
);
|
336 |
-
|
337 |
-
// Prepare filter pattern
|
338 |
-
$filter_pattern = null;
|
339 |
-
if ( is_array( $exclude ) ) {
|
340 |
-
$filters = array();
|
341 |
-
foreach ( $exclude as $filter ) {
|
342 |
-
$filters[] = sprintf(
|
343 |
-
'(%s(%s.*)?)',
|
344 |
-
preg_quote( $filter, '/' ),
|
345 |
-
preg_quote( DIRECTORY_SEPARATOR, '/' )
|
346 |
-
);
|
347 |
-
}
|
348 |
-
|
349 |
-
$filter_pattern = implode( '|', $filters );
|
350 |
-
}
|
351 |
-
|
352 |
-
foreach ( $iterator as $item ) {
|
353 |
-
// Skip dots
|
354 |
-
if ( $iterator->isDot() ) {
|
355 |
-
continue;
|
356 |
-
}
|
357 |
-
|
358 |
-
// Validate filter pattern
|
359 |
-
if ( $filter_pattern ) {
|
360 |
-
if ( preg_match( '/^' . $filter_pattern . '$/', $iterator->getSubPathName() ) ) {
|
361 |
-
continue;
|
362 |
-
}
|
363 |
-
}
|
364 |
-
|
365 |
-
if ( $item->isDir() ) {
|
366 |
-
rmdir( $dir . $iterator->getSubPathName() );
|
367 |
-
} else {
|
368 |
-
unlink( $dir . $iterator->getSubPathName() );
|
369 |
-
}
|
370 |
-
}
|
371 |
-
}
|
372 |
-
|
373 |
-
/**
|
374 |
-
* Test webside whether everything is installed properly (Not implemented yet)
|
375 |
-
*
|
376 |
-
* @param string $url Current URL address
|
377 |
-
* @return boolean Pass or not pass website tests
|
378 |
-
*/
|
379 |
-
public function test_website( $url ) {
|
380 |
-
return true;
|
381 |
-
}
|
382 |
-
|
383 |
/**
|
384 |
* Verify whether directory contains necessary archive files
|
385 |
*
|
30 |
const MAX_CHUNK_RETRIES = 10;
|
31 |
const MAINTENANCE_MODE = 'ai1wm_maintenance_mode';
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
/**
|
34 |
* Import archive file (database, media, package.json)
|
35 |
*
|
45 |
try {
|
46 |
$storage = new StorageArea;
|
47 |
|
48 |
+
// Flush storage directory
|
49 |
+
if ( $options['chunk'] === 0 ) {
|
50 |
+
StorageDirectory::flush( AI1WM_STORAGE_PATH, array( '.gitignore' ) );
|
51 |
+
}
|
52 |
+
|
53 |
// Partial file path
|
54 |
$upload_file = $storage->makeFile( $options['name'] )->getAs( 'string' );
|
55 |
|
137 |
$model = new Ai1wm_Export;
|
138 |
$database_file = $model->prepare_database( $storage );
|
139 |
|
140 |
+
try {
|
141 |
+
$db = MysqlDumpFactory::makeMysqlDump(
|
142 |
+
DB_HOST,
|
143 |
+
DB_USER,
|
144 |
+
DB_PASSWORD,
|
145 |
+
DB_NAME,
|
146 |
+
(
|
147 |
+
class_exists(
|
148 |
+
'PDO'
|
149 |
+
) && in_array( 'mysql', PDO::getAvailableDrivers() )
|
150 |
+
)
|
151 |
+
);
|
152 |
+
$db->getConnection();
|
153 |
+
} catch (Exception $e) {
|
154 |
+
// Use "old" mysql adapter
|
155 |
+
$db = MysqlDumpFactory::makeMysqlDump( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, false );
|
156 |
+
}
|
157 |
+
|
158 |
// Truncate database
|
159 |
+
$db->truncateDatabase();
|
160 |
|
161 |
// Import database
|
162 |
+
$db->setOldTablePrefix( AI1WM_TABLE_PREFIX )
|
163 |
+
->setNewTablePrefix( $wpdb->prefix )
|
164 |
+
->import( $extract_to . Ai1wm_Export::EXPORT_DATABASE_NAME );
|
165 |
}
|
166 |
|
167 |
// Media import
|
169 |
// Backup media files
|
170 |
$backup_media_to = $storage->makeDirectory()->getAs( 'string' );
|
171 |
|
172 |
+
StorageDirectory::copy( $upload_basedir, $backup_media_to );
|
173 |
|
174 |
+
// Flush media files
|
175 |
+
StorageDirectory::flush( $upload_basedir );
|
176 |
|
177 |
// Import media files
|
178 |
+
StorageDirectory::copy( $extract_to . Ai1wm_Export::EXPORT_MEDIA_NAME, $upload_basedir );
|
179 |
}
|
180 |
|
181 |
// Themes import
|
183 |
// Backup themes files
|
184 |
$backup_themes_to = $storage->makeDirectory()->getAs( 'string' );
|
185 |
|
186 |
+
StorageDirectory::copy( $themes_basedir, $backup_themes_to );
|
187 |
|
188 |
+
// Flush themes files
|
189 |
+
StorageDirectory::flush( $themes_basedir );
|
190 |
|
191 |
// Import themes files
|
192 |
+
StorageDirectory::copy( $extract_to . Ai1wm_Export::EXPORT_THEMES_NAME, $themes_basedir );
|
193 |
}
|
194 |
|
195 |
// Plugins import
|
197 |
// Backup plugin files
|
198 |
$backup_plugins_to = $storage->makeDirectory()->getAs( 'string' );
|
199 |
|
200 |
+
StorageDirectory::copy( WP_PLUGIN_DIR, $backup_plugins_to, array( AI1WM_PLUGIN_NAME ) );
|
201 |
|
202 |
+
// Flush plugin files
|
203 |
+
StorageDirectory::flush( WP_PLUGIN_DIR, array( AI1WM_PLUGIN_NAME ) );
|
204 |
|
205 |
// Import plugin files
|
206 |
+
StorageDirectory::copy( $extract_to . Ai1wm_Export::EXPORT_PLUGINS_NAME, WP_PLUGIN_DIR );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
208 |
|
209 |
// Disable maintenance mode
|
234 |
return update_option( self::MAINTENANCE_MODE, $enabled );
|
235 |
}
|
236 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
/**
|
238 |
* Verify whether directory contains necessary archive files
|
239 |
*
|
lib/vendor/mysqldump-factory/mysqldump-factory/README.md
CHANGED
@@ -12,7 +12,7 @@ PHP v5.2 and up. Tested on PHP v5.2.17, v5.3, v5.4, v5.5
|
|
12 |
### Usage
|
13 |
```php
|
14 |
require_once 'lib/MysqlDumpFactory.php';
|
15 |
-
$mc = MysqlDumpFactory::makeMysqlDump('dbhost', 'dbuser', 'dbpass', 'dbname',class_exists('PDO'));
|
16 |
```
|
17 |
|
18 |
### Tests
|
12 |
### Usage
|
13 |
```php
|
14 |
require_once 'lib/MysqlDumpFactory.php';
|
15 |
+
$mc = MysqlDumpFactory::makeMysqlDump('dbhost', 'dbuser', 'dbpass', 'dbname', class_exists('PDO'));
|
16 |
```
|
17 |
|
18 |
### Tests
|
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.1.0
|
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.1.0
|
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.1.0
|
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.1.0
|
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,13 +46,17 @@ 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
|
53 |
{
|
54 |
protected $hostname = null;
|
55 |
|
|
|
|
|
|
|
|
|
56 |
protected $username = null;
|
57 |
|
58 |
protected $password = null;
|
@@ -94,8 +98,12 @@ class MysqlDumpPDO implements MysqlDumpInterface
|
|
94 |
*/
|
95 |
public function __construct($hostname = 'localhost', $username = '', $password = '', $database = '')
|
96 |
{
|
|
|
|
|
97 |
// Set MySQL credentials
|
98 |
-
$this->hostname = $
|
|
|
|
|
99 |
$this->username = $username;
|
100 |
$this->password = $password;
|
101 |
$this->database = $database;
|
@@ -454,9 +462,18 @@ class MysqlDumpPDO implements MysqlDumpInterface
|
|
454 |
// Use Socket or TCP
|
455 |
$hostname = ($useSocket ? $this->hostname : gethostbyname($this->hostname));
|
456 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
457 |
// Make connection
|
458 |
$connection = new PDO(
|
459 |
-
|
460 |
$this->username,
|
461 |
$this->password,
|
462 |
array(
|
@@ -609,4 +626,36 @@ class MysqlDumpPDO implements MysqlDumpInterface
|
|
609 |
return preg_replace('/' . $pattern . '/i', $this->getNewTablePrefix(), $tableName);
|
610 |
}
|
611 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
612 |
}
|
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.1.0
|
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.1.0
|
50 |
* @link https://github.com/yani-/mysqldump-factory/
|
51 |
*/
|
52 |
class MysqlDumpPDO implements MysqlDumpInterface
|
53 |
{
|
54 |
protected $hostname = null;
|
55 |
|
56 |
+
protected $port = null;
|
57 |
+
|
58 |
+
protected $socket = null;
|
59 |
+
|
60 |
protected $username = null;
|
61 |
|
62 |
protected $password = null;
|
98 |
*/
|
99 |
public function __construct($hostname = 'localhost', $username = '', $password = '', $database = '')
|
100 |
{
|
101 |
+
$dsn = $this->parseDSN($hostname);
|
102 |
+
|
103 |
// Set MySQL credentials
|
104 |
+
$this->hostname = $dsn['host'];
|
105 |
+
$this->port = $dsn['port'];
|
106 |
+
$this->socket = $dsn['socket'];
|
107 |
$this->username = $username;
|
108 |
$this->password = $password;
|
109 |
$this->database = $database;
|
462 |
// Use Socket or TCP
|
463 |
$hostname = ($useSocket ? $this->hostname : gethostbyname($this->hostname));
|
464 |
|
465 |
+
// Use default or custom port
|
466 |
+
if ($this->port === 3306 || empty($this->port)) {
|
467 |
+
$dsn = sprintf('mysql:host=%s;dbname=%s', $hostname, $this->database);
|
468 |
+
} else if (!empty($this->socket)) {
|
469 |
+
$dsn = sprintf('mysql:host=%s;unix_socket=%s;dbname=%s', $hostname, $this->socket, $this->database);
|
470 |
+
} else {
|
471 |
+
$dsn = sprintf('mysql:host=%s;port=%s;dbname=%s', $hostname, $this->port, $this->database);
|
472 |
+
}
|
473 |
+
|
474 |
// Make connection
|
475 |
$connection = new PDO(
|
476 |
+
$dsn,
|
477 |
$this->username,
|
478 |
$this->password,
|
479 |
array(
|
626 |
return preg_replace('/' . $pattern . '/i', $this->getNewTablePrefix(), $tableName);
|
627 |
}
|
628 |
}
|
629 |
+
|
630 |
+
/**
|
631 |
+
* Parse data source name
|
632 |
+
*
|
633 |
+
* @param string $input Data source name
|
634 |
+
* @return array List of host, port and socket
|
635 |
+
*/
|
636 |
+
protected function parseDSN($input) {
|
637 |
+
$data = explode(':', $input);
|
638 |
+
|
639 |
+
// Set hostname
|
640 |
+
$host = 'localhost';
|
641 |
+
if (!empty($data[0])) {
|
642 |
+
$host = $data[0];
|
643 |
+
}
|
644 |
+
|
645 |
+
// Set port and socket
|
646 |
+
$port = $socket = null;
|
647 |
+
if (!empty($data[1])) {
|
648 |
+
if (is_numeric($data[1])) {
|
649 |
+
$port = $data[1];
|
650 |
+
} else {
|
651 |
+
$socket = $data[1];
|
652 |
+
}
|
653 |
+
}
|
654 |
+
|
655 |
+
return array(
|
656 |
+
'host' => $host,
|
657 |
+
'port' => $port,
|
658 |
+
'socket' => $socket,
|
659 |
+
);
|
660 |
+
}
|
661 |
}
|
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
|
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.1.0
|
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.1.0
|
50 |
* @link https://github.com/yani-/mysqldump-factory/
|
51 |
*/
|
52 |
class MysqlDumpSQL implements MysqlDumpInterface
|
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.1.0
|
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.1.0
|
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.1.0
|
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.1.0
|
46 |
* @link https://github.com/yani-/mysqldump-factory/
|
47 |
*/
|
48 |
class MysqlQueryAdapter
|
lib/vendor/storage-factory/storage-factory/.editorconfig
DELETED
@@ -1,26 +0,0 @@
|
|
1 |
-
# top-most EditorConfig file
|
2 |
-
root = true
|
3 |
-
|
4 |
-
# Unix-style newlines with a newline ending every file
|
5 |
-
[*]
|
6 |
-
end_of_line = lf
|
7 |
-
charset = utf-8
|
8 |
-
trim_trailing_whitespace = true
|
9 |
-
insert_final_newline = true
|
10 |
-
indent_style = space
|
11 |
-
|
12 |
-
# PHP
|
13 |
-
[*.php]
|
14 |
-
indent_style = space
|
15 |
-
indent_size = 4
|
16 |
-
max_line_length = 120
|
17 |
-
|
18 |
-
# YAML
|
19 |
-
[*.yml]
|
20 |
-
indent_style = space
|
21 |
-
indent_size = 4
|
22 |
-
|
23 |
-
# XML
|
24 |
-
[*.xml]
|
25 |
-
indent_style = space
|
26 |
-
indent_size = 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/vendor/storage-factory/storage-factory/.travil.yml
DELETED
@@ -1,10 +0,0 @@
|
|
1 |
-
language: php
|
2 |
-
|
3 |
-
php:
|
4 |
-
- 5.5
|
5 |
-
- 5.4
|
6 |
-
- 5.3
|
7 |
-
- 5.2
|
8 |
-
|
9 |
-
script: phpunit
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/vendor/storage-factory/storage-factory/composer.json
DELETED
@@ -1,25 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"name": "storage-factory/storage-factory",
|
3 |
-
"type": "library",
|
4 |
-
"description": "Factory class that creates either File Storage or Directory Storage PHP 5.2.17 and up",
|
5 |
-
"keywords": ["file storage", "directory storage"],
|
6 |
-
"homepage": "http://github.com/borislav-angelov/storage-factory",
|
7 |
-
"license": "MIT",
|
8 |
-
"authors": [
|
9 |
-
{
|
10 |
-
"name": "Bobby Angelov",
|
11 |
-
"email": "borislav.angelov@gmail.com",
|
12 |
-
"homepage": "https://servmask.com",
|
13 |
-
"role": "developer"
|
14 |
-
},
|
15 |
-
{
|
16 |
-
"name": "Yani Iliev",
|
17 |
-
"email": "yani@iliev.me",
|
18 |
-
"homepage": "https://yani.iliev.me",
|
19 |
-
"role": "developer"
|
20 |
-
}
|
21 |
-
],
|
22 |
-
"require": {
|
23 |
-
"php": ">=5.2.0"
|
24 |
-
}
|
25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/vendor/storage-factory/storage-factory/lib/StorageAbstract.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/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
-
* @version GIT: 1.
|
33 |
* @link https://github.com/borislav-angelov/storage-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/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
45 |
-
* @version GIT: 1.
|
46 |
* @link https://github.com/borislav-angelov/storage-factory/
|
47 |
*/
|
48 |
abstract class StorageAbstract
|
@@ -69,7 +69,7 @@ abstract class StorageAbstract
|
|
69 |
*/
|
70 |
public function getRootPath() {
|
71 |
if (defined('AI1WM_STORAGE_PATH') && self::isAccessible(AI1WM_STORAGE_PATH)) {
|
72 |
-
return AI1WM_STORAGE_PATH;
|
73 |
} else if (self::isAccessible(sys_get_temp_dir())) {
|
74 |
return sys_get_temp_dir();
|
75 |
} else {
|
29 |
* @author Bobby Angelov <bobby@servmask.com>
|
30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
31 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
+
* @version GIT: 1.9.0
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
42 |
* @author Bobby Angelov <bobby@servmask.com>
|
43 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
44 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
45 |
+
* @version GIT: 1.9.0
|
46 |
* @link https://github.com/borislav-angelov/storage-factory/
|
47 |
*/
|
48 |
abstract class StorageAbstract
|
69 |
*/
|
70 |
public function getRootPath() {
|
71 |
if (defined('AI1WM_STORAGE_PATH') && self::isAccessible(AI1WM_STORAGE_PATH)) {
|
72 |
+
return realpath(AI1WM_STORAGE_PATH);
|
73 |
} else if (self::isAccessible(sys_get_temp_dir())) {
|
74 |
return sys_get_temp_dir();
|
75 |
} else {
|
lib/vendor/storage-factory/storage-factory/lib/StorageArea.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/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
-
* @version GIT: 1.
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
@@ -45,7 +45,7 @@ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'StorageDirectory.php';
|
|
45 |
* @author Bobby Angelov <bobby@servmask.com>
|
46 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
47 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
48 |
-
* @version GIT: 1.
|
49 |
* @link https://github.com/borislav-angelov/storage-factory/
|
50 |
*/
|
51 |
class StorageArea
|
@@ -79,6 +79,7 @@ class StorageArea
|
|
79 |
/**
|
80 |
* Remove all files and directories in the current storage
|
81 |
*
|
|
|
82 |
* @return void
|
83 |
*/
|
84 |
public function flush() {
|
29 |
* @author Bobby Angelov <bobby@servmask.com>
|
30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
31 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
+
* @version GIT: 1.9.0
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
45 |
* @author Bobby Angelov <bobby@servmask.com>
|
46 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
47 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
48 |
+
* @version GIT: 1.9.0
|
49 |
* @link https://github.com/borislav-angelov/storage-factory/
|
50 |
*/
|
51 |
class StorageArea
|
79 |
/**
|
80 |
* Remove all files and directories in the current storage
|
81 |
*
|
82 |
+
* @param string $path Remove all files and directories from given path
|
83 |
* @return void
|
84 |
*/
|
85 |
public function flush() {
|
lib/vendor/storage-factory/storage-factory/lib/StorageDirectory.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/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
-
* @version GIT: 1.
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
@@ -44,7 +44,7 @@ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'StorageAbstract.php';
|
|
44 |
* @author Bobby Angelov <bobby@servmask.com>
|
45 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
46 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
47 |
-
* @version GIT: 1.
|
48 |
* @link https://github.com/borislav-angelov/storage-factory/
|
49 |
*/
|
50 |
class StorageDirectory extends StorageAbstract
|
@@ -81,29 +81,119 @@ class StorageDirectory extends StorageAbstract
|
|
81 |
}
|
82 |
}
|
83 |
|
|
|
84 |
/**
|
85 |
-
*
|
86 |
*
|
|
|
|
|
|
|
87 |
* @return void
|
88 |
*/
|
89 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
$iterator = new RecursiveIteratorIterator(
|
91 |
-
new RecursiveDirectoryIterator(
|
92 |
RecursiveIteratorIterator::CHILD_FIRST
|
93 |
);
|
94 |
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
// Skip dots
|
97 |
-
if (
|
|
|
|
|
98 |
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
} else {
|
102 |
-
unlink(
|
103 |
}
|
104 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
-
|
|
|
107 |
}
|
108 |
|
109 |
}
|
29 |
* @author Bobby Angelov <bobby@servmask.com>
|
30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
31 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
+
* @version GIT: 1.9.0
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
44 |
* @author Bobby Angelov <bobby@servmask.com>
|
45 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
46 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
47 |
+
* @version GIT: 1.9.0
|
48 |
* @link https://github.com/borislav-angelov/storage-factory/
|
49 |
*/
|
50 |
class StorageDirectory extends StorageAbstract
|
81 |
}
|
82 |
}
|
83 |
|
84 |
+
|
85 |
/**
|
86 |
+
* Copy a file or directory from source to destination path
|
87 |
*
|
88 |
+
* @param string $from Copy files and directories FROM
|
89 |
+
* @param string $to Copy files and directories TO
|
90 |
+
* @param array $exclude List of directories to exclude
|
91 |
* @return void
|
92 |
*/
|
93 |
+
public static function copy($from, $to, $exclude = array()) {
|
94 |
+
// Use Recursive functions
|
95 |
+
$iterator = new RecursiveIteratorIterator(
|
96 |
+
new RecursiveDirectoryIterator($from),
|
97 |
+
RecursiveIteratorIterator::SELF_FIRST
|
98 |
+
);
|
99 |
+
|
100 |
+
// Prepare filter pattern
|
101 |
+
$filter_pattern = null;
|
102 |
+
if (is_array($exclude)) {
|
103 |
+
$filters = array();
|
104 |
+
foreach ($exclude as $filter) {
|
105 |
+
$filters[] = sprintf(
|
106 |
+
'(%s(%s.*)?)',
|
107 |
+
preg_quote($filter, '/'),
|
108 |
+
preg_quote(DIRECTORY_SEPARATOR, '/')
|
109 |
+
);
|
110 |
+
}
|
111 |
+
|
112 |
+
$filter_pattern = implode('|', $filters);
|
113 |
+
}
|
114 |
+
|
115 |
+
foreach ($iterator as $item) {
|
116 |
+
// Skip dots
|
117 |
+
if ($iterator->isDot()) {
|
118 |
+
continue;
|
119 |
+
}
|
120 |
+
|
121 |
+
// Validate filter pattern
|
122 |
+
if ($filter_pattern) {
|
123 |
+
if (preg_match('/^' . $filter_pattern . '$/', $iterator->getSubPathName())) {
|
124 |
+
continue;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
if ($item->isDir()) {
|
129 |
+
mkdir($to . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
|
130 |
+
} else {
|
131 |
+
copy($item, $to . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Delete a file or directory from a given path
|
138 |
+
*
|
139 |
+
* @param string $path Absolute path
|
140 |
+
* @param array $exclude Exclude files and directories
|
141 |
+
* @return boolean
|
142 |
+
*/
|
143 |
+
public static function flush($path, $exclude = array()) {
|
144 |
+
// Use Recursive functions
|
145 |
$iterator = new RecursiveIteratorIterator(
|
146 |
+
new RecursiveDirectoryIterator($path),
|
147 |
RecursiveIteratorIterator::CHILD_FIRST
|
148 |
);
|
149 |
|
150 |
+
// Prepare filter pattern
|
151 |
+
$filter_pattern = null;
|
152 |
+
if (is_array($exclude)) {
|
153 |
+
$filters = array();
|
154 |
+
foreach ($exclude as $filter) {
|
155 |
+
$filters[] = sprintf(
|
156 |
+
'(%s(%s.*)?)',
|
157 |
+
preg_quote($filter, '/'),
|
158 |
+
preg_quote(DIRECTORY_SEPARATOR, '/')
|
159 |
+
);
|
160 |
+
}
|
161 |
+
|
162 |
+
$filter_pattern = implode('|', $filters);
|
163 |
+
}
|
164 |
+
|
165 |
+
foreach ($iterator as $item) {
|
166 |
// Skip dots
|
167 |
+
if ($iterator->isDot()) {
|
168 |
+
continue;
|
169 |
+
}
|
170 |
|
171 |
+
// Validate filter pattern
|
172 |
+
if ($filter_pattern) {
|
173 |
+
if (preg_match('/^' . $filter_pattern . '$/', $iterator->getSubPathName())) {
|
174 |
+
continue;
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
if ($item->isDir()) {
|
179 |
+
rmdir($path . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
|
180 |
} else {
|
181 |
+
unlink($path . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
|
182 |
}
|
183 |
}
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* Delete a file or directory
|
188 |
+
*
|
189 |
+
* @return void
|
190 |
+
*/
|
191 |
+
public function delete() {
|
192 |
+
// Remove child files and directories
|
193 |
+
self::flush($this->directory);
|
194 |
|
195 |
+
// Remove parent directory
|
196 |
+
rmdir($this->directory);
|
197 |
}
|
198 |
|
199 |
}
|
lib/vendor/storage-factory/storage-factory/lib/StorageFile.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/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
-
* @version GIT: 1.
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
@@ -44,7 +44,7 @@ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'StorageAbstract.php';
|
|
44 |
* @author Bobby Angelov <bobby@servmask.com>
|
45 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
46 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
47 |
-
* @version GIT: 1.
|
48 |
* @link https://github.com/borislav-angelov/storage-factory/
|
49 |
*/
|
50 |
class StorageFile extends StorageAbstract
|
29 |
* @author Bobby Angelov <bobby@servmask.com>
|
30 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
31 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
+
* @version GIT: 1.9.0
|
33 |
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
*/
|
35 |
|
44 |
* @author Bobby Angelov <bobby@servmask.com>
|
45 |
* @copyright 2014 Yani Iliev, Bobby Angelov
|
46 |
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
47 |
+
* @version GIT: 1.9.0
|
48 |
* @link https://github.com/borislav-angelov/storage-factory/
|
49 |
*/
|
50 |
class StorageFile extends StorageAbstract
|
lib/vendor/storage-factory/storage-factory/phpunit.xml
DELETED
@@ -1,29 +0,0 @@
|
|
1 |
-
<phpunit
|
2 |
-
bootstrap="test/bootstrap.php"
|
3 |
-
backupGlobals="false"
|
4 |
-
colors="true"
|
5 |
-
convertErrorsToExceptions="true"
|
6 |
-
convertNoticesToExceptions="true"
|
7 |
-
convertWarningsToExceptions="true"
|
8 |
-
>
|
9 |
-
<testsuites>
|
10 |
-
<testsuite>
|
11 |
-
<directory prefix="test-" suffix=".php">./test/</directory>
|
12 |
-
</testsuite>
|
13 |
-
</testsuites>
|
14 |
-
<filter>
|
15 |
-
<whitelist processUncoveredFilesFromWhitelist="true">
|
16 |
-
<directory suffix=".php">lib/</directory>
|
17 |
-
</whitelist>
|
18 |
-
</filter>
|
19 |
-
<logging>
|
20 |
-
<log
|
21 |
-
type="coverage-html"
|
22 |
-
target="coverage"
|
23 |
-
charset="UTF-8"
|
24 |
-
highlight="false"
|
25 |
-
lowUpperBound="35"
|
26 |
-
highLowerBound="70"
|
27 |
-
/>
|
28 |
-
</logging>
|
29 |
-
</phpunit>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/vendor/storage-factory/storage-factory/test/bootstrap.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
3 |
-
|
4 |
-
/**
|
5 |
-
* Bootstrap file for unit tests used in Storage Factory
|
6 |
-
*
|
7 |
-
* PHP version 5
|
8 |
-
*
|
9 |
-
* LICENSE: Permission is hereby granted, free of charge, to any person obtaining
|
10 |
-
* a copy of this software and associated documentation files (the "Software"), to
|
11 |
-
* deal in the Software without restriction, including without limitation the rights
|
12 |
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
13 |
-
* of the Software, and to permit persons to whom the Software is furnished to do so,
|
14 |
-
* subject to the following conditions:
|
15 |
-
*
|
16 |
-
* The above copyright notice and this permission notice shall be included in all
|
17 |
-
* copies or substantial portions of the Software.
|
18 |
-
*
|
19 |
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
20 |
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
21 |
-
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
22 |
-
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
23 |
-
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
24 |
-
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25 |
-
*
|
26 |
-
* @category FileSystem
|
27 |
-
* @package StorageFactory
|
28 |
-
* @author Yani Iliev <yani@iliev.me>
|
29 |
-
* @author Bobby Angelov <bobby@servmask.com>
|
30 |
-
* @copyright 2014 Yani Iliev, Bobby Angelov
|
31 |
-
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
-
* @version GIT: 1.0.0
|
33 |
-
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
-
*/
|
35 |
-
|
36 |
-
require_once
|
37 |
-
dirname(__FILE__) .
|
38 |
-
DIRECTORY_SEPARATOR . '..' .
|
39 |
-
DIRECTORY_SEPARATOR . 'lib' .
|
40 |
-
DIRECTORY_SEPARATOR . 'StorageFactory.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/vendor/storage-factory/storage-factory/test/test-storage-factory.php
DELETED
@@ -1,67 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
3 |
-
|
4 |
-
/**
|
5 |
-
* Bootstrap file for unit tests used in Storage Factory
|
6 |
-
*
|
7 |
-
* PHP version 5
|
8 |
-
*
|
9 |
-
* LICENSE: Permission is hereby granted, free of charge, to any person obtaining
|
10 |
-
* a copy of this software and associated documentation files (the "Software"), to
|
11 |
-
* deal in the Software without restriction, including without limitation the rights
|
12 |
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
13 |
-
* of the Software, and to permit persons to whom the Software is furnished to do so,
|
14 |
-
* subject to the following conditions:
|
15 |
-
*
|
16 |
-
* The above copyright notice and this permission notice shall be included in all
|
17 |
-
* copies or substantial portions of the Software.
|
18 |
-
*
|
19 |
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
20 |
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
21 |
-
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
22 |
-
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
23 |
-
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
24 |
-
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25 |
-
*
|
26 |
-
* @category FileSystem
|
27 |
-
* @package StorageFactory
|
28 |
-
* @author Yani Iliev <yani@iliev.me>
|
29 |
-
* @author Bobby Angelov <bobby@servmask.com>
|
30 |
-
* @copyright 2014 Yani Iliev, Bobby Angelov
|
31 |
-
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
32 |
-
* @version GIT: 1.0.0
|
33 |
-
* @link https://github.com/borislav-angelov/storage-factory/
|
34 |
-
*/
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Unit test class
|
38 |
-
*
|
39 |
-
* @category Tests
|
40 |
-
* @package ZipFactory
|
41 |
-
* @author Yani Iliev <yani@iliev.me>
|
42 |
-
* @author Bobby Angelov <bobby@servmask.com>
|
43 |
-
* @copyright 2014 Yani Iliev, Bobby Angelov
|
44 |
-
* @license https://raw.github.com/borislav-angelov/storage-factory/master/LICENSE The MIT License (MIT)
|
45 |
-
* @version GIT: 1.0.0
|
46 |
-
* @link https://github.com/borislav-angelov/storage-factory/
|
47 |
-
*/
|
48 |
-
class StorageFactoryTest extends PHPUnit_Framework_TestCase
|
49 |
-
{
|
50 |
-
/**
|
51 |
-
* @return [type] [description]
|
52 |
-
*/
|
53 |
-
public function testMakeFileStorage()
|
54 |
-
{
|
55 |
-
$fileStorage = StorageFactory::make();
|
56 |
-
$this->assertTrue($fileStorage instanceof StorageFile);
|
57 |
-
}
|
58 |
-
|
59 |
-
/**
|
60 |
-
* @return [type] [description]
|
61 |
-
*/
|
62 |
-
public function testMakeDirectoryStorage()
|
63 |
-
{
|
64 |
-
$fileStorage = StorageFactory::make(true);
|
65 |
-
$this->assertTrue($fileStorage instanceof StorageDirectory);
|
66 |
-
}
|
67 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/view/assets/css/import.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.ai1wm-divider{margin:1rem 0rem;border-top:1px solid rgba(0,0,0,0.1);border-bottom:1px solid rgba(255,255,255,0.8);line-height:1;height:0em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;border:none;height:0em;margin:0em;background-color:transparent;font-size:0.875rem;font-weight:bold;text-align:center;text-transform:uppercase;color:rgba(0,0,0,0.8)}.ai1wm-divider{position:relative;top:0%;left:0%;margin:1rem 2.5rem;height:auto;padding:0em;line-height:1}.ai1wm-divider:before,.ai1wm-divider:after{position:absolute;top:50%;content:" ";z-index:3;width:50%;top:50%;height:0%;border-top:1px solid rgba(0,0,0,0.1);border-bottom:1px solid rgba(255,255,255,0.8)}.ai1wm-divider:before{left:0%;margin-left:-2.5rem}.ai1wm-divider:after{left:auto;right:0%;margin-right:-2.5rem}@font-face{font-family:'servmask';src:url("../font/servmask.eot");src:url("../font/servmask.eot?#iefix") format("embedded-opentype"),url("../font/servmask.woff") format("woff"),url("../font/servmask.ttf") format("truetype"),url("../font/servmask.svg#servmask") format("svg");font-weight:normal;font-style:normal}[class^="ai1wm-icon-"],[class*=" ai1wm-icon-"]{font-family:'servmask';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ai1wm-icon-plus:before{content:"\e600"}.ai1wm-icon-plus2:before{content:"\e601"}.ai1wm-icon-plus3:before{content:"\e602"}.ai1wm-icon-history:before{content:"\e603"}.ai1wm-icon-arrow-down:before{content:"\e604"}.ai1wm-icon-arrow-right:before{content:"\e605"}.ai1wm-icon-arrow-down2:before{content:"\e606"}.ai1wm-icon-plus:before{content:"\e607"}.ai1wm-icon-paperplane:before{content:"\e608"}.ai1wm-icon-help:before{content:"\e609"}.ai1wm-icon-file:before{content:"\e60a"}.ai1wm-icon-twitter:before{content:"\e60b"}.ai1wm-icon-facebook:before{content:"\e60c"}.ai1wm-icon-exclamation:before{content:"\e619"}@media (min-width: 855px){.ai1wm-row{margin-right:399px}.ai1wm-row:before,.ai1wm-row:after{content:" ";display:table}.ai1wm-row:after{clear:both}.ai1wm-left{float:left;width:100%}.ai1wm-right{float:right;width:377px;margin-right:-399px}.ai1wm-right .ai1wm-sidebar{width:100%}.ai1wm-right .ai1wm-segment{width:333px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 white;color:#333333;background-color:#f9f9f9;padding:22px;text-decoration:none;text-shadow:0 1px 0 white;background-clip:padding-box}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:normal;font-size:0.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:0.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:0.7rem;line-height:1rem;margin:4px 0 8px 0}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-holder{position:relative;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 white;padding:22px;background:#f9f9f9}.ai1wm-holder h1{margin-top:0 !important}.ai1wm-segment>.ai1wm-divider:first-child{margin-top:0 !important}@media (max-width: 854px){.ai1wm-container{margin-left:10px !important}.ai1wm-row{margin-right:0px !important}.ai1wm-right{float:left !important;width:100% !important;margin-top:18px;margin-right:0 !important}.ai1wm-right .ai1wm-sidebar{width:auto !important;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 white;padding:22px;background:#f9f9f9}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:normal;font-size:0.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:0.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:0.7rem;line-height:1rem;margin:4px 0 8px 0;border-radius:3px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-container{margin:20px 20px 0px 2px}.ai1wm-container:before,.ai1wm-container:after{content:" ";display:table}.ai1wm-container:after{clear:both}.ai1wm-replace-row{width:100%;box-shadow:outset 0 1px 0 0 white;border-radius:3px;color:#333333;font-size:11px;font-weight:bold;background-color:#f9f9f9;text-decoration:none;text-shadow:0 1px 0 white;background-clip:padding-box;margin-bottom:10px}.ai1wm-replace-row .ai1wm-field-inline{float:left;width:100%}.ai1wm-replace-row .ai1wm-field-inline input{width:100%;font-weight:normal;font-size:0.8rem;padding:0 10px;height:2.3rem;line-height:2.3rem;margin-bottom:4px}.ai1wm-field{margin-bottom:4px}.ai1wm-field input[type="text"],.ai1wm-field textarea{width:100%;font-weight:normal}.ai1wm-message{-moz-box-sizing:border-box;background-color:#EFEFEF;border-radius:4px;color:rgba(0,0,0,0.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative;transition:opacity 0.1s ease 0s, color 0.1s ease 0s, background 0.1s ease 0s, box-shadow 0.1s ease 0s}.ai1wm-message.ai1wm-green-message{background-color:#F2F8F0;color:#119000}.ai1wm-message.ai1wm-blue-message{background-color:#E6F4F9;color:#4D8796}.ai1wm-message.ai1wm-red-message{background-color:#F1D7D7;color:#A95252}.ai1wm-message p{margin:4px 0}.ai1wm-button-gray{border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;color:#333;display:inline-block;font-size:11px;font-weight:bold;background-color:#fafafa;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fafafa),color-stop(100%, #dedede));background-image:-webkit-linear-gradient(#fafafa,#dedede);background-image:linear-gradient(#fafafa,#dedede);padding:7px 18px;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box}.ai1wm-button-gray:hover:not(:disabled){box-shadow:inset 0 1px 0 0 #fff;cursor:pointer;background-color:#ededed;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ededed),color-stop(100%, #d6d6d6));background-image:-webkit-linear-gradient(#ededed,#d6d6d6);background-image:linear-gradient(#ededed,#d6d6d6)}.ai1wm-button-gray:active:not(:disabled){border:1px solid #d6d6d6;box-shadow:inset 0 0 8px 4px #cfcfcf,inset 0 0 8px 4px #cfcfcf,0 1px 1px 0 #eee}.ai1wm-button-gray:disabled{opacity:0.5;cursor:not-allowed}.ai1wm-button-green{border:1px solid #4d8b2c;border-radius:3px;box-shadow:inset 0 1px 0 0 #9cc587;color:#fff;display:inline-block;font-size:11px;font-weight:bold;background-color:#6eb649;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #6eb649),color-stop(100%, #539730));background-image:-webkit-linear-gradient(#6eb649,#539730);background-image:linear-gradient(#6eb649,#539730);padding:7px 18px;text-decoration:none;text-shadow:0 1px 0 #428122;background-clip:padding-box}.ai1wm-button-green:hover:not(:disabled){box-shadow:inset 0 1px 0 0 #7fb563;cursor:pointer;background-color:#649f46;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #649f46),color-stop(100%, #4d8a2d));background-image:-webkit-linear-gradient(#649f46,#4d8a2d);background-image:linear-gradient(#649f46,#4d8a2d)}.ai1wm-button-green:active:not(:disabled){border:1px solid #4d8b2c;box-shadow:inset 0 0 8px 4px #477e2a,inset 0 0 8px 4px #477e2a,0 1px 1px 0 #eee}.ai1wm-button-green:disabled{opacity:0.5;cursor:not-allowed}.ai1wm-button-blue{border:1px solid #007ba9;border-radius:3px;box-shadow:inset 0 1px 0 0 #45c7f7;color:#fff;display:inline-block;font-size:11px;font-weight:bold;background-color:#00aff0;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #00aff0),color-stop(100%, #0086b8));background-image:-webkit-linear-gradient(#00aff0,#0086b8);background-image:linear-gradient(#00aff0,#0086b8);padding:7px 18px;text-decoration:none;text-shadow:0 1px 0 #006c94;background-clip:padding-box}.ai1wm-button-blue:hover:not(:disabled){box-shadow:inset 0 1px 0 0 #13b9f6;cursor:pointer;background-color:#049ad2;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049ad2),color-stop(100%, #007ba9));background-image:-webkit-linear-gradient(#049ad2,#007ba9);background-image:linear-gradient(#049ad2,#007ba9)}.ai1wm-button-blue:active:not(:disabled){border:1px solid #007ba9;box-shadow:inset 0 0 8px 4px #007099,inset 0 0 8px 4px #007099,0 1px 1px 0 #eee}.ai1wm-button-blue:disabled{opacity:0.5;cursor:not-allowed}.ai1wm-button-gray i,.ai1wm-button-green i,.ai1wm-button-blue i{margin-left:-0.5em;margin-right:0.2em}.ai1wm-button-gray i.ai1wm-alone,.ai1wm-button-green i.ai1wm-alone,.ai1wm-button-blue i.ai1wm-alone{margin-right:-0.5em !important}.ai1wm-button-gray i.ai1wm-icon-plus,.ai1wm-button-green i.ai1wm-icon-plus,.ai1wm-button-blue i.ai1wm-icon-plus{margin-right:0.4em;font-size:12px}.ai1wm-clear{*zoom:1}.ai1wm-clear:before,.ai1wm-clear:after{content:" ";display:table}.ai1wm-clear:after{clear:both}.ai1wm-field-inline input{border-radius:5px}.ai1wm-toggle-checkbox label{color:#333333;display:inline-block;font-size:11px;font-weight:bold;text-decoration:none;text-shadow:0 1px 0 white}.ai1wm-share-button-container{text-align:center}.ai1wm-share-button-container .ai1wm-share-button{text-decoration:none;margin:10px;font-size:30px}.ai1wm-report-problem{position:absolute;top:22px;right:22px;font-size:0.7rem}.ai1wm-report-problem-button:link,.ai1wm-report-problem-button:visited,.ai1wm-report-problem-button:active{text-decoration:none;outline:0}.ai1wm-report-problem-button:link .ai1wm-icon-exclamation,.ai1wm-report-problem-button:visited .ai1wm-icon-exclamation,.ai1wm-report-problem-button:active .ai1wm-icon-exclamation{position:relative;top:1px;left:-1px;font-size:0.875rem}.ai1wm-report-problem-dialog{position:absolute;z-index:999;width:280px;right:-1px;border:1px solid blue;background-color:#fff;margin:6px 0 0 0;padding:10px 10px 6px 10px;border:1px solid #D6D6D6;border-radius:3px;box-shadow:0 1px 0 0 #FFFFFF inset;display:none}.ai1wm-report-email{width:100%;font-weight:normal;font-size:0.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-report-message{width:100%;border-radius:3px;font-size:0.8rem;padding:6px 10px;resize:none}.ai1wm-report-cancel:link,.ai1wm-report-cancel:visited,.ai1wm-report-cancel:active{float:right;line-height:34px;outline:0;text-decoration:none}.ai1wm-report-active{display:block}.ai1wm-report-terms-segment{font-size:0.7rem;line-height:1rem;margin:4px 0 8px 0}.ai1wm-report-terms-segment>.ai1wm-report-terms{border-radius:3px}.ai1wm-drag-drop-area{border:4px dashed #DDDDDD;height:200px;margin:20px 0 16px 0;background:#fff}.ai1wm-drag-drop-area.dragover{background:rgba(255,255,255,0.4);border-color:green}.ai1wm-drag-drop-area .ai1wm-drag-drop-inside{margin:70px auto 0;width:250px}.ai1wm-drag-drop-inside p{display:block;text-align:center;color:#AAAAAA;font-size:14px;margin:5px 0}.ai1wm-drag-drop-inside p.ai1wm-drag-drop-info{font-size:20px}.ai1wm-drag-drop-inside p.ai1wm-upload-progress{margin:-15px 0 15px 0;display:none;color:#000;font-size:20px}.ai1wm-drag-over #ai1wm-drag-drop-area{border-color:#83b4d8}.ai1wm-upload-file-message{display:none}
|
1 |
+
.ai1wm-divider{margin:1rem 0rem;border-top:1px solid rgba(0,0,0,0.1);border-bottom:1px solid rgba(255,255,255,0.8);line-height:1;height:0em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;border:none;height:0em;margin:0em;background-color:transparent;font-size:0.875rem;font-weight:bold;text-align:center;text-transform:uppercase;color:rgba(0,0,0,0.8)}.ai1wm-divider{position:relative;top:0%;left:0%;margin:1rem 2.5rem;height:auto;padding:0em;line-height:1}.ai1wm-divider:before,.ai1wm-divider:after{position:absolute;top:50%;content:" ";z-index:3;width:50%;top:50%;height:0%;border-top:1px solid rgba(0,0,0,0.1);border-bottom:1px solid rgba(255,255,255,0.8)}.ai1wm-divider:before{left:0%;margin-left:-2.5rem}.ai1wm-divider:after{left:auto;right:0%;margin-right:-2.5rem}@font-face{font-family:'servmask';src:url("../font/servmask.eot");src:url("../font/servmask.eot?#iefix") format("embedded-opentype"),url("../font/servmask.woff") format("woff"),url("../font/servmask.ttf") format("truetype"),url("../font/servmask.svg#servmask") format("svg");font-weight:normal;font-style:normal}[class^="ai1wm-icon-"],[class*=" ai1wm-icon-"]{font-family:'servmask';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ai1wm-icon-plus:before{content:"\e600"}.ai1wm-icon-plus2:before{content:"\e601"}.ai1wm-icon-plus3:before{content:"\e602"}.ai1wm-icon-history:before{content:"\e603"}.ai1wm-icon-arrow-down:before{content:"\e604"}.ai1wm-icon-arrow-right:before{content:"\e605"}.ai1wm-icon-arrow-down2:before{content:"\e606"}.ai1wm-icon-plus:before{content:"\e607"}.ai1wm-icon-paperplane:before{content:"\e608"}.ai1wm-icon-help:before{content:"\e609"}.ai1wm-icon-file:before{content:"\e60a"}.ai1wm-icon-twitter:before{content:"\e60b"}.ai1wm-icon-facebook:before{content:"\e60c"}.ai1wm-icon-exclamation:before{content:"\e619"}@media (min-width: 855px){.ai1wm-row{margin-right:399px}.ai1wm-row:before,.ai1wm-row:after{content:" ";display:table}.ai1wm-row:after{clear:both}.ai1wm-left{float:left;width:100%}.ai1wm-right{float:right;width:377px;margin-right:-399px}.ai1wm-right .ai1wm-sidebar{width:100%}.ai1wm-right .ai1wm-segment{width:333px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 white;color:#333333;background-color:#f9f9f9;padding:22px;text-decoration:none;text-shadow:0 1px 0 white;background-clip:padding-box}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:normal;font-size:0.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:0.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:0.7rem;line-height:1rem;margin:4px 0 8px 0}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-holder{position:relative;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 white;padding:22px;background:#f9f9f9}.ai1wm-holder h1{margin-top:0 !important}.ai1wm-segment>.ai1wm-divider:first-child{margin-top:0 !important}@media (max-width: 854px){.ai1wm-container{margin-left:10px !important}.ai1wm-row{margin-right:0px !important}.ai1wm-right{float:left !important;width:100% !important;margin-top:18px;margin-right:0 !important}.ai1wm-right .ai1wm-sidebar{width:auto !important;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 white;padding:22px;background:#f9f9f9}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:normal;font-size:0.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:0.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:0.7rem;line-height:1rem;margin:4px 0 8px 0;border-radius:3px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-container{margin:20px 20px 0px 2px}.ai1wm-container:before,.ai1wm-container:after{content:" ";display:table}.ai1wm-container:after{clear:both}.ai1wm-replace-row{width:100%;box-shadow:outset 0 1px 0 0 white;border-radius:3px;color:#333333;font-size:11px;font-weight:bold;background-color:#f9f9f9;text-decoration:none;text-shadow:0 1px 0 white;background-clip:padding-box;margin-bottom:10px}.ai1wm-replace-row .ai1wm-field-inline{float:left;width:100%}.ai1wm-replace-row .ai1wm-field-inline input{width:100%;font-weight:normal;font-size:0.8rem;padding:0 10px;height:2.3rem;line-height:2.3rem;margin-bottom:4px}.ai1wm-field{margin-bottom:4px}.ai1wm-field input[type="text"],.ai1wm-field textarea{width:100%;font-weight:normal}.ai1wm-message{-moz-box-sizing:border-box;background-color:#EFEFEF;border-radius:4px;color:rgba(0,0,0,0.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative;transition:opacity 0.1s ease 0s, color 0.1s ease 0s, background 0.1s ease 0s, box-shadow 0.1s ease 0s}.ai1wm-message.ai1wm-green-message{background-color:#F2F8F0;color:#119000}.ai1wm-message.ai1wm-blue-message{background-color:#E6F4F9;color:#4D8796}.ai1wm-message.ai1wm-red-message{background-color:#F1D7D7;color:#A95252}.ai1wm-message p{margin:4px 0}.ai1wm-button-gray{border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;color:#333;display:inline-block;font-size:11px;font-weight:bold;background-color:#fafafa;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fafafa),color-stop(100%, #dedede));background-image:-webkit-linear-gradient(#fafafa,#dedede);background-image:linear-gradient(#fafafa,#dedede);padding:7px 18px;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box}.ai1wm-button-gray:hover:not(:disabled){box-shadow:inset 0 1px 0 0 #fff;cursor:pointer;background-color:#ededed;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ededed),color-stop(100%, #d6d6d6));background-image:-webkit-linear-gradient(#ededed,#d6d6d6);background-image:linear-gradient(#ededed,#d6d6d6)}.ai1wm-button-gray:active:not(:disabled){border:1px solid #d6d6d6;box-shadow:inset 0 0 8px 4px #cfcfcf,inset 0 0 8px 4px #cfcfcf,0 1px 1px 0 #eee}.ai1wm-button-gray:disabled{opacity:0.5;cursor:not-allowed}.ai1wm-button-green{border:1px solid #4d8b2c;border-radius:3px;box-shadow:inset 0 1px 0 0 #9cc587;color:#fff;display:inline-block;font-size:11px;font-weight:bold;background-color:#6eb649;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #6eb649),color-stop(100%, #539730));background-image:-webkit-linear-gradient(#6eb649,#539730);background-image:linear-gradient(#6eb649,#539730);padding:7px 18px;text-decoration:none;text-shadow:0 1px 0 #428122;background-clip:padding-box}.ai1wm-button-green:hover:not(:disabled){box-shadow:inset 0 1px 0 0 #7fb563;cursor:pointer;background-color:#649f46;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #649f46),color-stop(100%, #4d8a2d));background-image:-webkit-linear-gradient(#649f46,#4d8a2d);background-image:linear-gradient(#649f46,#4d8a2d)}.ai1wm-button-green:active:not(:disabled){border:1px solid #4d8b2c;box-shadow:inset 0 0 8px 4px #477e2a,inset 0 0 8px 4px #477e2a,0 1px 1px 0 #eee}.ai1wm-button-green:disabled{opacity:0.5;cursor:not-allowed}.ai1wm-button-blue{border:1px solid #007ba9;border-radius:3px;box-shadow:inset 0 1px 0 0 #45c7f7;color:#fff;display:inline-block;font-size:11px;font-weight:bold;background-color:#00aff0;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #00aff0),color-stop(100%, #0086b8));background-image:-webkit-linear-gradient(#00aff0,#0086b8);background-image:linear-gradient(#00aff0,#0086b8);padding:7px 18px;text-decoration:none;text-shadow:0 1px 0 #006c94;background-clip:padding-box}.ai1wm-button-blue:hover:not(:disabled){box-shadow:inset 0 1px 0 0 #13b9f6;cursor:pointer;background-color:#049ad2;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049ad2),color-stop(100%, #007ba9));background-image:-webkit-linear-gradient(#049ad2,#007ba9);background-image:linear-gradient(#049ad2,#007ba9)}.ai1wm-button-blue:active:not(:disabled){border:1px solid #007ba9;box-shadow:inset 0 0 8px 4px #007099,inset 0 0 8px 4px #007099,0 1px 1px 0 #eee}.ai1wm-button-blue:disabled{opacity:0.5;cursor:not-allowed}.ai1wm-button-gray i,.ai1wm-button-green i,.ai1wm-button-blue i{margin-left:-0.5em;margin-right:0.2em}.ai1wm-button-gray i.ai1wm-alone,.ai1wm-button-green i.ai1wm-alone,.ai1wm-button-blue i.ai1wm-alone{margin-right:-0.5em !important}.ai1wm-button-gray i.ai1wm-icon-plus,.ai1wm-button-green i.ai1wm-icon-plus,.ai1wm-button-blue i.ai1wm-icon-plus{margin-right:0.4em;font-size:12px}.ai1wm-clear{*zoom:1}.ai1wm-clear:before,.ai1wm-clear:after{content:" ";display:table}.ai1wm-clear:after{clear:both}.ai1wm-field-inline input{border-radius:5px}.ai1wm-toggle-checkbox label{color:#333333;display:inline-block;font-size:11px;font-weight:bold;text-decoration:none;text-shadow:0 1px 0 white}.ai1wm-share-button-container{text-align:center}.ai1wm-share-button-container .ai1wm-share-button{text-decoration:none;margin:10px;font-size:30px}.ai1wm-report-problem{position:absolute;top:22px;right:22px;font-size:0.7rem}.ai1wm-report-problem-button:link,.ai1wm-report-problem-button:visited,.ai1wm-report-problem-button:active{text-decoration:none;outline:0}.ai1wm-report-problem-button:link .ai1wm-icon-exclamation,.ai1wm-report-problem-button:visited .ai1wm-icon-exclamation,.ai1wm-report-problem-button:active .ai1wm-icon-exclamation{position:relative;top:1px;left:-1px;font-size:0.875rem}.ai1wm-report-problem-dialog{position:absolute;z-index:999;width:280px;right:-1px;border:1px solid blue;background-color:#fff;margin:6px 0 0 0;padding:10px 10px 6px 10px;border:1px solid #D6D6D6;border-radius:3px;box-shadow:0 1px 0 0 #FFFFFF inset;display:none}.ai1wm-report-email{width:100%;font-weight:normal;font-size:0.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-report-message{width:100%;border-radius:3px;font-size:0.8rem;padding:6px 10px;resize:none}.ai1wm-report-cancel:link,.ai1wm-report-cancel:visited,.ai1wm-report-cancel:active{float:right;line-height:34px;outline:0;text-decoration:none}.ai1wm-report-active{display:block}.ai1wm-report-terms-segment{font-size:0.7rem;line-height:1rem;margin:4px 0 8px 0}.ai1wm-report-terms-segment>.ai1wm-report-terms{border-radius:3px}.ai1wm-drag-drop-area{border:4px dashed #DDDDDD;height:200px;margin:20px 0 16px 0;background:#fff}.ai1wm-drag-drop-area.dragover{background:rgba(255,255,255,0.4);border-color:green}.ai1wm-drag-drop-area .ai1wm-drag-drop-inside{margin:70px auto 0;width:250px}.ai1wm-drag-drop-inside p{display:block;text-align:center;color:#AAAAAA;font-size:14px;margin:5px 0}.ai1wm-drag-drop-inside p.ai1wm-drag-drop-info{font-size:20px}.ai1wm-drag-drop-inside p.ai1wm-upload-progress{margin:-35px 0 15px 0;display:none;color:#000;font-size:20px}.ai1wm-drag-over #ai1wm-drag-drop-area{border-color:#83b4d8}.ai1wm-upload-file-message{display:none}
|
lib/view/assets/javascript/import.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function($){"use strict";$("#ai1wm-feedback-submit").click(function(){var url=ai1wm_feedback.ajax.url,email=$(".ai1wm-feedback-email").val(),message=$(".ai1wm-feedback-message").val(),terms=$(".ai1wm-feedback-terms").is(":checked");$.ajax({type:"POST",url:url,data:{email:email,message:message,terms:+terms},success:function(data){var errors=data.errors;if(errors.length>0){$(".ai1wm-feedback .ai1wm-message").remove();var content=$("<div />").addClass("ai1wm-message ai1wm-red-message");$.each(errors,function(key,value){content.append("<p>"+value+"</p>")}),$(".ai1wm-feedback").prepend(content)}else{var content=$("<div />").addClass("ai1wm-message ai1wm-green-message").append("<p>Thanks for submitting your feedback!</p>");$(".ai1wm-feedback").html(content)}},dataType:"json",async:!1})})}),jQuery(document).ready(function($){"use strict";$("#ai1wm-report-problem-button").click(function(e){$(this).next(".ai1wm-report-problem-dialog").toggleClass("ai1wm-report-active"),e.preventDefault()}),$("#ai1wm-report-cancel").click(function(e){$(this).closest(".ai1wm-report-problem-dialog").removeClass("ai1wm-report-active"),e.preventDefault()}),$("#ai1wm-report-submit").click(function(){var url=ai1wm_report.ajax.url,email=$(".ai1wm-report-email").val(),message=$(".ai1wm-report-message").val(),terms=$(".ai1wm-report-terms").is(":checked");$.ajax({type:"POST",url:url,data:{email:email,message:message,terms:+terms},success:function(data){var errors=data.errors;if(errors.length>0){$(".ai1wm-report-problem-dialog .ai1wm-message").remove();var content=$("<div />").addClass("ai1wm-message ai1wm-red-message");$.each(errors,function(key,value){content.append("<p>"+value+"</p>")}),$(".ai1wm-report-problem-dialog").prepend(content)}else{var content=$("<div />").addClass("ai1wm-message ai1wm-green-message").append("<p>Thanks for submitting your request!</p>");$(".ai1wm-report-problem-dialog").html(content),setTimeout(function(){$(".ai1wm-report-problem-dialog").removeClass("ai1wm-report-active")},2e3)}},dataType:"json",async:!1})})}),jQuery(document).ready(function($){"use strict";var display_upload_errors=function(errors){var box=$(".ai1wm-upload-file-message");box.removeClass("ai1wm-green-message").addClass("ai1wm-red-message"),box.find("p").remove(),errors.length>0?($.each(errors,function(index,value){box.append("<p>"+value+"</p>")}),box.show()):box.hide()},display_upload_messages=function(messages){var box=$(".ai1wm-upload-file-message");box.removeClass("ai1wm-red-message").addClass("ai1wm-green-message"),box.find("p").remove(),messages.length>0?($.each(messages,function(index,value){box.append("<p>"+value+"</p>")}),box.show()):box.hide()},upload_progress=function(up,file){var box=$(".ai1wm-upload-progress");box.text(file.percent+"%"),box.show()},upload_error=function(up,error){var message=null;message=-601===error.code?"File extension error! Please ensure that the file is in <strong>ZIP</strong> archive format.":error.message,display_upload_errors([message]),up.refresh()},file_uploaded=function(up,file,result){var json=$.parseJSON(result.response);display_upload_errors(json.errors)},upload_complete=function(){var errors=$(".ai1wm-upload-file-message.ai1wm-red-message p");0==errors.length&&display_upload_messages(["Archive was successfully uploaded and imported into WordPress."])},uploader=new plupload.Uploader(ai1wm_uploader);uploader.bind("Init",function(up){var uploaddiv=$("#ai1wm-plupload-upload-ui");up.features.dragdrop&&!$(document.body).hasClass("mobile")?$("#ai1wm-drag-drop-area").bind("dragover.wp-uploader",function(){uploaddiv.addClass("ai1wm-drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){uploaddiv.removeClass("ai1wm-drag-over")}):$("#ai1wm-drag-drop-area").unbind(".wp-uploader"),"html4"==up.runtime&&$(".upload-flash-bypass").hide()}),uploader.init(),uploader.bind("FilesAdded",function(up){up.refresh(),up.start()}),uploader.bind("BeforeUpload",function(){var box=$(".ai1wm-upload-file-message");box.hide()}),uploader.bind("UploadFile",function(){}),uploader.bind("UploadProgress",upload_progress),uploader.bind("Error",upload_error),uploader.bind("FileUploaded",file_uploaded),uploader.bind("UploadComplete",upload_complete)});
|
1 |
+
jQuery(document).ready(function($){"use strict";$("#ai1wm-feedback-submit").click(function(){var url=ai1wm_feedback.ajax.url,email=$(".ai1wm-feedback-email").val(),message=$(".ai1wm-feedback-message").val(),terms=$(".ai1wm-feedback-terms").is(":checked");$.ajax({type:"POST",url:url,data:{email:email,message:message,terms:+terms},success:function(data){var errors=data.errors;if(errors.length>0){$(".ai1wm-feedback .ai1wm-message").remove();var content=$("<div />").addClass("ai1wm-message ai1wm-red-message");$.each(errors,function(key,value){content.append("<p>"+value+"</p>")}),$(".ai1wm-feedback").prepend(content)}else{var content=$("<div />").addClass("ai1wm-message ai1wm-green-message").append("<p>Thanks for submitting your feedback!</p>");$(".ai1wm-feedback").html(content)}},dataType:"json",async:!1})})}),jQuery(document).ready(function($){"use strict";$("#ai1wm-report-problem-button").click(function(e){$(this).next(".ai1wm-report-problem-dialog").toggleClass("ai1wm-report-active"),e.preventDefault()}),$("#ai1wm-report-cancel").click(function(e){$(this).closest(".ai1wm-report-problem-dialog").removeClass("ai1wm-report-active"),e.preventDefault()}),$("#ai1wm-report-submit").click(function(){var url=ai1wm_report.ajax.url,email=$(".ai1wm-report-email").val(),message=$(".ai1wm-report-message").val(),terms=$(".ai1wm-report-terms").is(":checked");$.ajax({type:"POST",url:url,data:{email:email,message:message,terms:+terms},success:function(data){var errors=data.errors;if(errors.length>0){$(".ai1wm-report-problem-dialog .ai1wm-message").remove();var content=$("<div />").addClass("ai1wm-message ai1wm-red-message");$.each(errors,function(key,value){content.append("<p>"+value+"</p>")}),$(".ai1wm-report-problem-dialog").prepend(content)}else{var content=$("<div />").addClass("ai1wm-message ai1wm-green-message").append("<p>Thanks for submitting your request!</p>");$(".ai1wm-report-problem-dialog").html(content),setTimeout(function(){$(".ai1wm-report-problem-dialog").removeClass("ai1wm-report-active")},2e3)}},dataType:"json",async:!1})})}),jQuery(document).ready(function($){"use strict";var display_upload_errors=function(errors){var box=$(".ai1wm-upload-file-message");box.removeClass("ai1wm-green-message").addClass("ai1wm-red-message"),box.find("p").remove(),errors.length>0?($.each(errors,function(index,value){box.append("<p>"+value+"</p>")}),box.show()):box.hide()},display_upload_messages=function(messages){var box=$(".ai1wm-upload-file-message");box.removeClass("ai1wm-red-message").addClass("ai1wm-green-message"),box.find("p").remove(),messages.length>0?($.each(messages,function(index,value){box.append("<p>"+value+"</p>")}),box.show()):box.hide()},upload_progress=function(up,file){var box=$(".ai1wm-upload-progress");box.text(file.percent-1+"%"),box.show()},upload_error=function(up,error){var message=null;message=-601===error.code?"File extension error! Please ensure that the file is in <strong>ZIP</strong> archive format.":error.message,display_upload_errors([message]),up.refresh()},file_uploaded=function(up,file,result){var json=$.parseJSON(result.response);display_upload_errors(json.errors)},upload_complete=function(){var errors=$(".ai1wm-upload-file-message.ai1wm-red-message p");0==errors.length&&($(".ai1wm-upload-progress").text("100%"),display_upload_messages(["Archive was successfully uploaded and imported into WordPress."]))},uploader=new plupload.Uploader(ai1wm_uploader);uploader.bind("Init",function(up){var uploaddiv=$("#ai1wm-plupload-upload-ui");up.features.dragdrop&&!$(document.body).hasClass("mobile")?$("#ai1wm-drag-drop-area").bind("dragover.wp-uploader",function(){uploaddiv.addClass("ai1wm-drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){uploaddiv.removeClass("ai1wm-drag-over")}):$("#ai1wm-drag-drop-area").unbind(".wp-uploader"),"html4"==up.runtime&&$(".upload-flash-bypass").hide()}),uploader.init(),uploader.bind("FilesAdded",function(up){up.refresh(),up.start()}),uploader.bind("BeforeUpload",function(){var box=$(".ai1wm-upload-file-message");box.hide()}),uploader.bind("UploadFile",function(){}),uploader.bind("UploadProgress",upload_progress),uploader.bind("Error",upload_error),uploader.bind("FileUploaded",file_uploaded),uploader.bind("UploadComplete",upload_complete)});
|
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.9
|
6 |
-
Stable tag: 1.7.
|
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.
|
@@ -70,6 +70,11 @@ All in One WP Plugin is the first plugin to offer true mobile experience on Word
|
|
70 |
3. Plugin Menu
|
71 |
|
72 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
73 |
= 1.7.1 =
|
74 |
* Fixed a bug when exporting WordPress plugins directory
|
75 |
|
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.9
|
6 |
+
Stable tag: 1.7.2
|
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.
|
70 |
3. Plugin Menu
|
71 |
|
72 |
== Changelog ==
|
73 |
+
= 1.7.2 =
|
74 |
+
* Added support for automatically switching database adapters for better performance and optimization
|
75 |
+
* Fixed a bug when using host:port syntax with MySQL PDO
|
76 |
+
* Fixed a bug when using find and replace functionality
|
77 |
+
|
78 |
= 1.7.1 =
|
79 |
* Fixed a bug when exporting WordPress plugins directory
|
80 |
|