1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-09 10:16:36 +02:00

[ticket/15747] Change parameter depth to boolean

PHPBB3-15747
This commit is contained in:
Rubén Calvo
2018-08-08 19:23:10 +02:00
parent 1c406c70e0
commit c24b801746
6 changed files with 85 additions and 24 deletions

View File

@@ -0,0 +1,45 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @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\v330;
class storage_adapter_local_depth_rename extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v330\storage_adapter_local_depth',
);
}
public function update_data()
{
return array(
array('if', array(
($this->config['storage\\attachment\\provider'] == \phpbb\storage\provider\local::class),
array('config.delete', array('storage\\attachment\\config\\depth')),
array('config.add', array('storage\\attachment\\config\\subfolders', '0')),
)),
array('if', array(
($this->config['storage\\avatar\\provider'] == \phpbb\storage\provider\local::class),
array('config.delete', array('storage\\avatar\\config\\depth')),
array('config.add', array('storage\\avatar\\config\\subfolders', '0')),
)),
array('if', array(
($this->config['storage\\backup\\provider'] == \phpbb\storage\provider\local::class),
array('config.delete', array('storage\\backup\\config\\depth')),
array('config.add', array('storage\\backup\\config\\subfolders', '0')),
)),
);
}
}

View File

@@ -73,10 +73,17 @@ class local implements adapter_interface, stream_interface
* This is for those who have problems storing a large number of files in
* a single directory.
* More info: https://tracker.phpbb.com/browse/PHPBB3-15371
*
*/
/*
* @var bool subfolders
*/
protected $subfolders;
/*
* @var int dir_depth
*/
protected $dir_depth;
protected $dir_depth = 2;
/**
* Constructor
@@ -101,7 +108,7 @@ class local implements adapter_interface, stream_interface
$this->path = $options['path'];
$this->root_path = $this->phpbb_root_path . $options['path'];
$this->dir_depth = (int) $options['depth'];
$this->subfolders = (bool) $options['subfolders'];
}
/**
@@ -270,19 +277,21 @@ class local implements adapter_interface, stream_interface
*/
protected function get_path($path)
{
$dirname = dirname($path);
$hash = md5(basename($path));
$parts = str_split($hash, 2);
$parts = array_slice($parts, 0, $this->dir_depth);
// Create path
$path = $dirname . DIRECTORY_SEPARATOR;
if (!empty($parts))
if ($this->subfolders)
{
$path .= implode(DIRECTORY_SEPARATOR, $parts) . DIRECTORY_SEPARATOR;
$hash = md5(basename($path));
$parts = str_split($hash, 2);
$parts = array_slice($parts, 0, $this->dir_depth);
// Create path
$dirname = dirname($path);
$path = $dirname . DIRECTORY_SEPARATOR;
if (!empty($parts))
{
$path .= implode(DIRECTORY_SEPARATOR, $parts) . DIRECTORY_SEPARATOR;
}
}
return $path;

View File

@@ -37,8 +37,14 @@ class local implements provider_interface
public function get_options()
{
return [
'path' => array('type' => 'text'),
'depth' => array('type' => 'text'),
'path' => ['type' => 'text'],
'subfolders' => [
'type' => 'radio',
'options' => [
'ENABLE' => '1',
'DISABLE' => '0',
],
],
];
}