37
37
use OCP \Files \Folder ;
38
38
use OCP \Files \IRootFolder ;
39
39
use OCP \Files \NotFoundException ;
40
+ use Psr \Log \LoggerInterface ;
40
41
41
42
class UploadCleanup extends TimedJob {
42
43
private IRootFolder $ rootFolder ;
43
44
private IJobList $ jobList ;
45
+ private ILoggerInterface $ logger ;
44
46
45
- public function __construct (ITimeFactory $ time , IRootFolder $ rootFolder , IJobList $ jobList ) {
47
+ public function __construct (ITimeFactory $ time , IRootFolder $ rootFolder , IJobList $ jobList, ILoggerInterface $ logger ) {
46
48
parent ::__construct ($ time );
47
49
$ this ->rootFolder = $ rootFolder ;
48
50
$ this ->jobList = $ jobList ;
51
+ $ this ->logger = $ logger ;
49
52
50
53
// Run once a day
51
54
$ this ->setInterval (60 * 60 * 24 );
@@ -61,19 +64,27 @@ protected function run($argument) {
61
64
$ userRoot = $ userFolder ->getParent ();
62
65
/** @var Folder $uploads */
63
66
$ uploads = $ userRoot ->get ('uploads ' );
64
- /** @var Folder $uploadFolder */
65
67
$ uploadFolder = $ uploads ->get ($ folder );
66
68
} catch (NotFoundException | NoUserException $ e ) {
67
69
$ this ->jobList ->remove (self ::class, $ argument );
68
70
return ;
69
71
}
70
72
71
- /** @var File[] $files */
72
- $ files = $ uploadFolder ->getDirectoryListing ();
73
-
74
73
// Remove if all files have an mtime of more than a day
75
74
$ time = $ this ->time ->getTime () - 60 * 60 * 24 ;
76
75
76
+ if (!($ uploadFolder instanceof Folder)) {
77
+ $ this ->logger ->error ("Foud a file inside the uploads folder. Uid: " . $ uid . ' folder: ' . $ folder , )
78
+ if ($ uploadFolder ->getMTime () < $ time ) {
79
+ $ uploadFolder ->delete ();
80
+ }
81
+ $ this ->jobList ->remove (self ::class, $ argument );
82
+ return ;
83
+ }
84
+
85
+ /** @var File[] $files */
86
+ $ files = $ uploadFolder ->getDirectoryListing ();
87
+
77
88
// The folder has to be more than a day old
78
89
$ initial = $ uploadFolder ->getMTime () < $ time ;
79
90
0 commit comments