diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php index 2b95ff3ad5..7743ce5dbc 100644 --- a/phpBB/includes/acp/acp_database.php +++ b/phpBB/includes/acp/acp_database.php @@ -162,12 +162,7 @@ class acp_database throw new \phpbb\exception\runtime_exception('CANNOT_OPEN_FILE'); } - $storage->write_stream($file, $fp); - - if (is_resource($fp)) - { - fclose($fp); - } + $storage->write($file, $fp); // Remove file from tmp @unlink($temp_dir . '/' . $file); diff --git a/phpBB/phpbb/db/migration/data/v400/storage_attachment.php b/phpBB/phpbb/db/migration/data/v400/storage_attachment.php index d9f60ccdac..9e1919f3f3 100644 --- a/phpBB/phpbb/db/migration/data/v400/storage_attachment.php +++ b/phpBB/phpbb/db/migration/data/v400/storage_attachment.php @@ -38,4 +38,13 @@ class storage_attachment extends migration ['config.remove', ['upload_path']], ]; } + + public function revert_data() + { + return [ + ['config.remove', ['storage\\attachment\\provider']], + ['config.remove', ['storage\\attachment\\config\\path']], + ['config.add', ['upload_path', 'files']], + ]; + } } diff --git a/phpBB/phpbb/db/migration/data/v400/storage_avatar.php b/phpBB/phpbb/db/migration/data/v400/storage_avatar.php index 5afed251d7..f9de7cd8a5 100644 --- a/phpBB/phpbb/db/migration/data/v400/storage_avatar.php +++ b/phpBB/phpbb/db/migration/data/v400/storage_avatar.php @@ -38,4 +38,13 @@ class storage_avatar extends migration ['config.remove', ['avatar_path']], ]; } + + public function revert_data() + { + return [ + ['config.remove', ['storage\\avatar\\provider']], + ['config.remove', ['storage\\avatar\\config\\path']], + ['config.add', ['avatar_path', 'images/avatars/upload']], + ]; + } } diff --git a/phpBB/phpbb/db/migration/data/v400/storage_backup.php b/phpBB/phpbb/db/migration/data/v400/storage_backup.php index f764f5636e..d9f19c42f0 100644 --- a/phpBB/phpbb/db/migration/data/v400/storage_backup.php +++ b/phpBB/phpbb/db/migration/data/v400/storage_backup.php @@ -45,6 +45,15 @@ class storage_backup extends migration ]; } + public function revert_schema() + { + return [ + 'drop_tables' => [ + $this->table_prefix . 'backups', + ], + ]; + } + public function update_data() { return [ @@ -52,4 +61,12 @@ class storage_backup extends migration ['config.add', ['storage\\backup\\config\\path', 'store']], ]; } + + public function revert_data() + { + return [ + ['config.remove', ['storage\\backup\\provider']], + ['config.remove', ['storage\\backup\\config\\path']], + ]; + } } diff --git a/phpBB/phpbb/db/migration/data/v400/storage_backup_data.php b/phpBB/phpbb/db/migration/data/v400/storage_backup_data.php new file mode 100644 index 0000000000..507d4a09d9 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v400/storage_backup_data.php @@ -0,0 +1,65 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v400; + +use phpbb\db\migration\migration; + +class storage_backup_data extends migration +{ + public static function depends_on() + { + return [ + '\phpbb\db\migration\data\v400\storage_backup', + ]; + } + + public function update_data() + { + return [ + ['custom', [[$this, 'update_backup_data']]], + ]; + } + + public function update_backup_data() + { + $methods = ['sql', 'sql.gz', 'sql.bz2']; + + $dir = $this->phpbb_root_path . 'store/'; + $dh = @opendir($dir); + + if ($dh) + { + while (($file = readdir($dh)) !== false) + { + echo "FILE $file\n"; + if (preg_match('#^backup_(\d{10,})_(?:[a-z\d]{16}|[a-z\d]{32})\.(sql(?:\.(?:gz|bz2))?)$#i', $file, $matches)) + { + if (in_array($matches[2], $methods)) + { + $insert_ary = [ + 'filename' => $file, + ]; + + $sql = 'INSERT INTO ' . $this->table_prefix . 'backups ' . $this->db->sql_build_array('INSERT', $insert_ary); + + $this->db->sql_query($sql); + } + } + + } + + closedir($dh); + } + } +} diff --git a/phpBB/phpbb/db/migration/data/v400/storage_track.php b/phpBB/phpbb/db/migration/data/v400/storage_track.php index d9890fd80f..ebda4c8678 100644 --- a/phpBB/phpbb/db/migration/data/v400/storage_track.php +++ b/phpBB/phpbb/db/migration/data/v400/storage_track.php @@ -30,6 +30,7 @@ class storage_track extends container_aware_migration '\phpbb\db\migration\data\v400\storage_attachment', '\phpbb\db\migration\data\v400\storage_avatar', '\phpbb\db\migration\data\v400\storage_backup', + '\phpbb\db\migration\data\v400\storage_backup_data', ]; } diff --git a/phpBB/phpbb/storage/adapter_factory.php b/phpBB/phpbb/storage/adapter_factory.php index 3d55fc7a41..1cf4ae12cd 100644 --- a/phpBB/phpbb/storage/adapter_factory.php +++ b/phpBB/phpbb/storage/adapter_factory.php @@ -89,7 +89,7 @@ class adapter_factory } $adapter = $this->adapters->get_by_class($provider->get_adapter_class()); - $options['storage'] = $storage_name; + $options['storage'] = $storage_name; // Inject storage name into options so it can be used by extensiosn $adapter->configure($options); return $adapter;