|
<?php |
|
|
|
namespace Kanboard\ServiceProvider; |
|
|
|
use Kanboard\Core\ObjectStorage\FileStorage; |
|
use LogicException; |
|
use Pimple\Container; |
|
use Pimple\ServiceProviderInterface; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ObjectStorageProvider implements ServiceProviderInterface |
|
{ |
|
public function register(Container $container) |
|
{ |
|
$container['objectStorage'] = function () { |
|
if (file_exists(FILES_DIR)) { |
|
if (! is_writable(FILES_DIR)) { |
|
$stat = stat(FILES_DIR); |
|
|
|
throw new LogicException(sprintf( |
|
'The folder to store uploaded files is not writeable by your webserver user (file=%s; mode=%o; uid=%d; gid=%d)', |
|
FILES_DIR, |
|
$stat['mode'], |
|
$stat['uid'], |
|
$stat['gid'] |
|
)); |
|
} |
|
} elseif (! @mkdir(FILES_DIR)) { |
|
$folder = dirname(FILES_DIR); |
|
$stat = stat($folder); |
|
|
|
throw new LogicException(sprintf( |
|
'Unable to create folder to store uploaded files, check the permissions of the parent directory (file=%s; mode=%o; uid=%d; gid=%d)', |
|
$folder, |
|
$stat['mode'], |
|
$stat['uid'], |
|
$stat['gid'] |
|
)); |
|
} |
|
|
|
return new FileStorage(FILES_DIR); |
|
}; |
|
|
|
return $container; |
|
} |
|
} |