Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / sql / Pg-upgrade2-auth / clients_webdav.pl
index 2476e8a..68650e7 100644 (file)
@@ -2,13 +2,14 @@
 # @description: WebDAV-Migration für Mandanten
 # @depends: clients
 # @ignore: 0
-package SL::DBUpgrade2::clients_webdav;
+package SL::DBUpgrade2::Auth::clients_webdav;
 
 use strict;
 use utf8;
 
 use parent qw(SL::DBUpgrade2::Base);
 
+use File::Find ();
 use File::Path qw(make_path);
 use IO::Dir;
 use List::MoreUtils qw(any all);
@@ -81,11 +82,24 @@ sub _create_symlink {
   symlink '../' . $client->{id}, "webdav/links/${name}";
 }
 
+sub _webdav_folders_used {
+  my ($self, %params) = @_;
+
+  my $contains_files  = 0;
+  my $wanted          = sub {
+    $contains_files   = 1 if -f && !m{/(?:\.gitignore|.dummy|webdav-user)$};
+  };
+
+  File::Find::find({ wanted => $wanted, no_chdir => 1 }, 'webdav');
+
+  return $contains_files;
+}
+
 sub run {
   my ($self) = @_;
 
-  # WebDAV not activated? Remove old folders, and we're done.
-  return $self->_unlink_old_folders if !$::lx_office_conf{features}->{webdav};
+  # WebDAV not used? Remove old folders, and we're done.
+  return $self->_unlink_old_folders if !$self->_webdav_folders_used;
 
   # Ensure at least one client exists.
   $self->_ensure_one_client_exists;