From 510a40a350388e41789f354308f2f25956bfcd59 Mon Sep 17 00:00:00 2001 From: Brasdrive Date: Sun, 9 Nov 2025 21:33:24 -0400 Subject: [PATCH] 3.0.0 --- src/Filesystem/Adapters/WebdavAdapter.php | 38 +++++++++++++++-------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/Filesystem/Adapters/WebdavAdapter.php b/src/Filesystem/Adapters/WebdavAdapter.php index b15ea4d..945a870 100644 --- a/src/Filesystem/Adapters/WebdavAdapter.php +++ b/src/Filesystem/Adapters/WebdavAdapter.php @@ -4,9 +4,10 @@ declare(strict_types=1); namespace FlysystemOffload\Filesystem\Adapters; -use FlysystemOffload\Filesystem\AdapterInterface; // ← CORRECTO (sin Adapters) +use FlysystemOffload\Filesystem\AdapterInterface; use League\Flysystem\FilesystemAdapter; use League\Flysystem\WebDAV\WebDAVAdapter as LeagueWebDAVAdapter; +use League\Flysystem\UnixVisibility\PortableVisibilityConverter; use Sabre\DAV\Client; use InvalidArgumentException; @@ -43,25 +44,36 @@ class WebdavAdapter implements AdapterInterface // Crear cliente $client = new Client($clientConfig); - // Configurar permisos - $permissions = [ + // Configurar permisos usando PortableVisibilityConverter + $filePublic = $this->normalizePermission($config['file_public'] ?? '0644'); + $filePrivate = $this->normalizePermission($config['file_private'] ?? '0600'); + $dirPublic = $this->normalizePermission($config['dir_public'] ?? '0755'); + $dirPrivate = $this->normalizePermission($config['dir_private'] ?? '0700'); + + $visibilityConverter = PortableVisibilityConverter::fromArray([ 'file' => [ - 'public' => $this->normalizePermission($config['file_public'] ?? '0644'), - 'private' => $this->normalizePermission($config['file_private'] ?? '0600'), + 'public' => $filePublic, + 'private' => $filePrivate, ], 'dir' => [ - 'public' => $this->normalizePermission($config['dir_public'] ?? '0755'), - 'private' => $this->normalizePermission($config['dir_private'] ?? '0700'), + 'public' => $dirPublic, + 'private' => $dirPrivate, ], - ]; + ]); - error_log('[WebDAV Adapter] Creating adapter with permissions: ' . print_r($permissions, true)); + error_log(sprintf( + '[WebDAV Adapter] Creating adapter with permissions - File: public=%o private=%o, Dir: public=%o private=%o', + $filePublic, + $filePrivate, + $dirPublic, + $dirPrivate + )); - // Crear adaptador + // Crear adaptador con PortableVisibilityConverter $adapter = new LeagueWebDAVAdapter( $client, $config['prefix'] ?? '', - $permissions + $visibilityConverter ); error_log('[WebDAV Adapter] Adapter created successfully'); @@ -127,12 +139,12 @@ class WebdavAdapter implements AdapterInterface if (is_string($permission)) { $permission = trim($permission); - + // Si es octal string (ej: "0644") if (preg_match('/^0[0-7]{3}$/', $permission)) { return intval($permission, 8); } - + // Si es decimal string sin el 0 (ej: "644") if (preg_match('/^[0-7]{3}$/', $permission)) { return intval('0' . $permission, 8);