Passed
Push — master ( c72b44...ede5f4 )
by Morris
11:38 queued 11s
created
apps/files_versions/lib/Storage.php 1 patch
Spacing   +64 added lines, -64 removed lines patch added patch discarded remove patch
@@ -55,8 +55,8 @@  discard block
 block discarded – undo
55 55
 
56 56
 class Storage {
57 57
 
58
-	const DEFAULTENABLED=true;
59
-	const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota
58
+	const DEFAULTENABLED = true;
59
+	const DEFAULTMAXSIZE = 50; // unit: percentage; 50% of available disk space/quota
60 60
 	const VERSIONS_ROOT = 'files_versions/';
61 61
 
62 62
 	const DELETE_TRIGGER_MASTER_REMOVED = 0;
@@ -70,17 +70,17 @@  discard block
 block discarded – undo
70 70
 
71 71
 	private static $max_versions_per_interval = array(
72 72
 		//first 10sec, one version every 2sec
73
-		1 => array('intervalEndsAfter' => 10,      'step' => 2),
73
+		1 => array('intervalEndsAfter' => 10, 'step' => 2),
74 74
 		//next minute, one version every 10sec
75
-		2 => array('intervalEndsAfter' => 60,      'step' => 10),
75
+		2 => array('intervalEndsAfter' => 60, 'step' => 10),
76 76
 		//next hour, one version every minute
77
-		3 => array('intervalEndsAfter' => 3600,    'step' => 60),
77
+		3 => array('intervalEndsAfter' => 3600, 'step' => 60),
78 78
 		//next 24h, one version every hour
79
-		4 => array('intervalEndsAfter' => 86400,   'step' => 3600),
79
+		4 => array('intervalEndsAfter' => 86400, 'step' => 3600),
80 80
 		//next 30days, one version per day
81 81
 		5 => array('intervalEndsAfter' => 2592000, 'step' => 86400),
82 82
 		//until the end one version per week
83
-		6 => array('intervalEndsAfter' => -1,      'step' => 604800),
83
+		6 => array('intervalEndsAfter' => -1, 'step' => 604800),
84 84
 	);
85 85
 
86 86
 	/** @var \OCA\Files_Versions\AppInfo\Application */
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
 			$uid = User::getUser();
105 105
 		}
106 106
 		Filesystem::initMountPoints($uid);
107
-		if ( $uid !== User::getUser() ) {
107
+		if ($uid !== User::getUser()) {
108 108
 			$info = Filesystem::getFileInfo($filename);
109 109
 			$ownerView = new View('/'.$uid.'/files');
110 110
 			try {
@@ -154,7 +154,7 @@  discard block
 block discarded – undo
154 154
 	 * @return int versions size
155 155
 	 */
156 156
 	private static function getVersionsSize($user) {
157
-		$view = new View('/' . $user);
157
+		$view = new View('/'.$user);
158 158
 		$fileInfo = $view->getFileInfo('/files_versions');
159 159
 		return isset($fileInfo['size']) ? $fileInfo['size'] : 0;
160 160
 	}
@@ -172,13 +172,13 @@  discard block
 block discarded – undo
172 172
 		}
173 173
 
174 174
 		// we only handle existing files
175
-		if (! Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) {
175
+		if (!Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) {
176 176
 			return false;
177 177
 		}
178 178
 
179 179
 		list($uid, $filename) = self::getUidAndFilename($filename);
180 180
 
181
-		$files_view = new View('/'.$uid .'/files');
181
+		$files_view = new View('/'.$uid.'/files');
182 182
 
183 183
 		$eventDispatcher = \OC::$server->getEventDispatcher();
184 184
 		$fileInfo = $files_view->getFileInfo($filename);
@@ -245,14 +245,14 @@  discard block
 block discarded – undo
245 245
 
246 246
 		if (!Filesystem::file_exists($path)) {
247 247
 
248
-			$view = new View('/' . $uid . '/files_versions');
248
+			$view = new View('/'.$uid.'/files_versions');
249 249
 
250 250
 			$versions = self::getVersions($uid, $filename);
251 251
 			if (!empty($versions)) {
252 252
 				foreach ($versions as $v) {
253
-					\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path . $v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED));
254
-					self::deleteVersion($view, $filename . '.v' . $v['version']);
255
-					\OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path . $v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED));
253
+					\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path.$v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED));
254
+					self::deleteVersion($view, $filename.'.v'.$v['version']);
255
+					\OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path.$v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED));
256 256
 				}
257 257
 			}
258 258
 		}
@@ -286,33 +286,33 @@  discard block
 block discarded – undo
286 286
 		$rootView = new View('');
287 287
 
288 288
 		// did we move a directory ?
289
-		if ($rootView->is_dir('/' . $targetOwner . '/files/' . $targetPath)) {
289
+		if ($rootView->is_dir('/'.$targetOwner.'/files/'.$targetPath)) {
290 290
 			// does the directory exists for versions too ?
291
-			if ($rootView->is_dir('/' . $sourceOwner . '/files_versions/' . $sourcePath)) {
291
+			if ($rootView->is_dir('/'.$sourceOwner.'/files_versions/'.$sourcePath)) {
292 292
 				// create missing dirs if necessary
293
-				self::createMissingDirectories($targetPath, new View('/'. $targetOwner));
293
+				self::createMissingDirectories($targetPath, new View('/'.$targetOwner));
294 294
 
295 295
 				// move the directory containing the versions
296 296
 				$rootView->$operation(
297
-					'/' . $sourceOwner . '/files_versions/' . $sourcePath,
298
-					'/' . $targetOwner . '/files_versions/' . $targetPath
297
+					'/'.$sourceOwner.'/files_versions/'.$sourcePath,
298
+					'/'.$targetOwner.'/files_versions/'.$targetPath
299 299
 				);
300 300
 			}
301
-		} else if ($versions = Storage::getVersions($sourceOwner, '/' . $sourcePath)) {
301
+		} else if ($versions = Storage::getVersions($sourceOwner, '/'.$sourcePath)) {
302 302
 			// create missing dirs if necessary
303
-			self::createMissingDirectories($targetPath, new View('/'. $targetOwner));
303
+			self::createMissingDirectories($targetPath, new View('/'.$targetOwner));
304 304
 
305 305
 			foreach ($versions as $v) {
306 306
 				// move each version one by one to the target directory
307 307
 				$rootView->$operation(
308
-					'/' . $sourceOwner . '/files_versions/' . $sourcePath.'.v' . $v['version'],
309
-					'/' . $targetOwner . '/files_versions/' . $targetPath.'.v'.$v['version']
308
+					'/'.$sourceOwner.'/files_versions/'.$sourcePath.'.v'.$v['version'],
309
+					'/'.$targetOwner.'/files_versions/'.$targetPath.'.v'.$v['version']
310 310
 				);
311 311
 			}
312 312
 		}
313 313
 
314 314
 		// if we moved versions directly for a file, schedule expiration check for that file
315
-		if (!$rootView->is_dir('/' . $targetOwner . '/files/' . $targetPath)) {
315
+		if (!$rootView->is_dir('/'.$targetOwner.'/files/'.$targetPath)) {
316 316
 			self::scheduleExpire($targetOwner, $targetPath);
317 317
 		}
318 318
 
@@ -328,7 +328,7 @@  discard block
 block discarded – undo
328 328
 	public static function rollback($file, $revision) {
329 329
 
330 330
 		// add expected leading slash
331
-		$file = '/' . ltrim($file, '/');
331
+		$file = '/'.ltrim($file, '/');
332 332
 		list($uid, $filename) = self::getUidAndFilename($file);
333 333
 		if ($uid === null || trim($filename, '/') === '') {
334 334
 			return false;
@@ -338,7 +338,7 @@  discard block
 block discarded – undo
338 338
 		$userFolder = \OC::$server->getUserFolder($uid);
339 339
 
340 340
 		$users_view = new View('/'.$uid);
341
-		$files_view = new View('/'. User::getUser().'/files');
341
+		$files_view = new View('/'.User::getUser().'/files');
342 342
 
343 343
 		$versionCreated = false;
344 344
 
@@ -356,7 +356,7 @@  discard block
 block discarded – undo
356 356
 			$versionCreated = true;
357 357
 		}
358 358
 
359
-		$fileToRestore =  'files_versions' . $filename . '.v' . $revision;
359
+		$fileToRestore = 'files_versions'.$filename.'.v'.$revision;
360 360
 
361 361
 		// Restore encrypted version of the old file for the newly restored file
362 362
 		// This has to happen manually here since the file is manually copied below
@@ -372,7 +372,7 @@  discard block
 block discarded – undo
372 372
 		);
373 373
 
374 374
 		// rollback
375
-		if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) {
375
+		if (self::copyFileContents($users_view, $fileToRestore, 'files'.$filename)) {
376 376
 			$files_view->touch($file, $revision);
377 377
 			Storage::scheduleExpire($uid, $file);
378 378
 
@@ -445,12 +445,12 @@  discard block
 block discarded – undo
445 445
 			return $versions;
446 446
 		}
447 447
 		// fetch for old versions
448
-		$view = new View('/' . $uid . '/');
448
+		$view = new View('/'.$uid.'/');
449 449
 
450 450
 		$pathinfo = pathinfo($filename);
451 451
 		$versionedFile = $pathinfo['basename'];
452 452
 
453
-		$dir = Filesystem::normalizePath(self::VERSIONS_ROOT . '/' . $pathinfo['dirname']);
453
+		$dir = Filesystem::normalizePath(self::VERSIONS_ROOT.'/'.$pathinfo['dirname']);
454 454
 
455 455
 		$dirContent = false;
456 456
 		if ($view->is_dir($dir)) {
@@ -470,7 +470,7 @@  discard block
 block discarded – undo
470 470
 						$pathparts = pathinfo($entryName);
471 471
 						$timestamp = substr($pathparts['extension'], 1);
472 472
 						$filename = $pathparts['filename'];
473
-						$key = $timestamp . '#' . $filename;
473
+						$key = $timestamp.'#'.$filename;
474 474
 						$versions[$key]['version'] = $timestamp;
475 475
 						$versions[$key]['humanReadableTimestamp'] = self::getHumanReadableTimestamp($timestamp);
476 476
 						if (empty($userFullPath)) {
@@ -478,9 +478,9 @@  discard block
 block discarded – undo
478 478
 						} else {
479 479
 							$versions[$key]['preview'] = \OC::$server->getURLGenerator('files_version.Preview.getPreview', ['file' => $userFullPath, 'version' => $timestamp]);
480 480
 						}
481
-						$versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'] . '/' . $filename);
481
+						$versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'].'/'.$filename);
482 482
 						$versions[$key]['name'] = $versionedFile;
483
-						$versions[$key]['size'] = $view->filesize($dir . '/' . $entryName);
483
+						$versions[$key]['size'] = $view->filesize($dir.'/'.$entryName);
484 484
 						$versions[$key]['mimetype'] = \OC::$server->getMimeTypeDetector()->detectPath($versionedFile);
485 485
 					}
486 486
 				}
@@ -498,7 +498,7 @@  discard block
 block discarded – undo
498 498
 	 * Expire versions that older than max version retention time
499 499
 	 * @param string $uid
500 500
 	 */
501
-	public static function expireOlderThanMaxForUser($uid){
501
+	public static function expireOlderThanMaxForUser($uid) {
502 502
 		$expiration = self::getExpiration();
503 503
 		$threshold = $expiration->getMaxAgeAsTimestamp();
504 504
 		$versions = self::getAllVersions($uid);
@@ -508,7 +508,7 @@  discard block
 block discarded – undo
508 508
 
509 509
 		$toDelete = [];
510 510
 		foreach (array_reverse($versions['all']) as $key => $version) {
511
-			if ((int)$version['version'] <$threshold) {
511
+			if ((int) $version['version'] < $threshold) {
512 512
 				$toDelete[$key] = $version;
513 513
 			} else {
514 514
 				//Versions are sorted by time - nothing mo to iterate.
@@ -516,11 +516,11 @@  discard block
 block discarded – undo
516 516
 			}
517 517
 		}
518 518
 
519
-		$view = new View('/' . $uid . '/files_versions');
519
+		$view = new View('/'.$uid.'/files_versions');
520 520
 		if (!empty($toDelete)) {
521 521
 			foreach ($toDelete as $version) {
522 522
 				\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $version['path'].'.v'.$version['version'], 'trigger' => self::DELETE_TRIGGER_RETENTION_CONSTRAINT));
523
-				self::deleteVersion($view, $version['path'] . '.v' . $version['version']);
523
+				self::deleteVersion($view, $version['path'].'.v'.$version['version']);
524 524
 				\OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $version['path'].'.v'.$version['version'], 'trigger' => self::DELETE_TRIGGER_RETENTION_CONSTRAINT));
525 525
 			}
526 526
 		}
@@ -536,19 +536,19 @@  discard block
 block discarded – undo
536 536
 		$diff = time() - $timestamp;
537 537
 
538 538
 		if ($diff < 60) { // first minute
539
-			return  $diff . " seconds ago";
539
+			return  $diff." seconds ago";
540 540
 		} elseif ($diff < 3600) { //first hour
541
-			return round($diff / 60) . " minutes ago";
541
+			return round($diff / 60)." minutes ago";
542 542
 		} elseif ($diff < 86400) { // first day
543
-			return round($diff / 3600) . " hours ago";
543
+			return round($diff / 3600)." hours ago";
544 544
 		} elseif ($diff < 604800) { //first week
545
-			return round($diff / 86400) . " days ago";
545
+			return round($diff / 86400)." days ago";
546 546
 		} elseif ($diff < 2419200) { //first month
547
-			return round($diff / 604800) . " weeks ago";
547
+			return round($diff / 604800)." weeks ago";
548 548
 		} elseif ($diff < 29030400) { // first year
549
-			return round($diff / 2419200) . " months ago";
549
+			return round($diff / 2419200)." months ago";
550 550
 		} else {
551
-			return round($diff / 29030400) . " years ago";
551
+			return round($diff / 29030400)." years ago";
552 552
 		}
553 553
 
554 554
 	}
@@ -559,7 +559,7 @@  discard block
 block discarded – undo
559 559
 	 * @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename
560 560
 	 */
561 561
 	private static function getAllVersions($uid) {
562
-		$view = new View('/' . $uid . '/');
562
+		$view = new View('/'.$uid.'/');
563 563
 		$dirs = array(self::VERSIONS_ROOT);
564 564
 		$versions = array();
565 565
 
@@ -569,7 +569,7 @@  discard block
 block discarded – undo
569 569
 
570 570
 			foreach ($files as $file) {
571 571
 				$fileData = $file->getData();
572
-				$filePath = $dir . '/' . $fileData['name'];
572
+				$filePath = $dir.'/'.$fileData['name'];
573 573
 				if ($file['type'] === 'dir') {
574 574
 					$dirs[] = $filePath;
575 575
 				} else {
@@ -577,7 +577,7 @@  discard block
 block discarded – undo
577 577
 					$relPathStart = strlen(self::VERSIONS_ROOT);
578 578
 					$version = substr($filePath, $versionsBegin + 2);
579 579
 					$relpath = substr($filePath, $relPathStart, $versionsBegin - $relPathStart);
580
-					$key = $version . '#' . $relpath;
580
+					$key = $version.'#'.$relpath;
581 581
 					$versions[$key] = array('path' => $relpath, 'timestamp' => $version);
582 582
 				}
583 583
 			}
@@ -618,13 +618,13 @@  discard block
 block discarded – undo
618 618
 			list($toDelete, $size) = self::getAutoExpireList($time, $versions);
619 619
 		} else {
620 620
 			$size = 0;
621
-			$toDelete = [];  // versions we want to delete
621
+			$toDelete = []; // versions we want to delete
622 622
 		}
623 623
 
624 624
 		foreach ($versions as $key => $version) {
625 625
 			if ($expiration->isExpired($version['version'], $quotaExceeded) && !isset($toDelete[$key])) {
626 626
 				$size += $version['size'];
627
-				$toDelete[$key] = $version['path'] . '.v' . $version['version'];
627
+				$toDelete[$key] = $version['path'].'.v'.$version['version'];
628 628
 			}
629 629
 		}
630 630
 
@@ -639,7 +639,7 @@  discard block
 block discarded – undo
639 639
 	 */
640 640
 	protected static function getAutoExpireList($time, $versions) {
641 641
 		$size = 0;
642
-		$toDelete = array();  // versions we want to delete
642
+		$toDelete = array(); // versions we want to delete
643 643
 
644 644
 		$interval = 1;
645 645
 		$step = Storage::$max_versions_per_interval[$interval]['step'];
@@ -661,9 +661,9 @@  discard block
 block discarded – undo
661 661
 				if ($nextInterval === -1 || $prevTimestamp > $nextInterval) {
662 662
 					if ($version['version'] > $nextVersion) {
663 663
 						//distance between two version too small, mark to delete
664
-						$toDelete[$key] = $version['path'] . '.v' . $version['version'];
664
+						$toDelete[$key] = $version['path'].'.v'.$version['version'];
665 665
 						$size += $version['size'];
666
-						\OC::$server->getLogger()->info('Mark to expire '. $version['path'] .' next version should be ' . $nextVersion . " or smaller. (prevTimestamp: " . $prevTimestamp . "; step: " . $step, ['app' => 'files_versions']);
666
+						\OC::$server->getLogger()->info('Mark to expire '.$version['path'].' next version should be '.$nextVersion." or smaller. (prevTimestamp: ".$prevTimestamp."; step: ".$step, ['app' => 'files_versions']);
667 667
 					} else {
668 668
 						$nextVersion = $version['version'] - $step;
669 669
 						$prevTimestamp = $version['version'];
@@ -718,8 +718,8 @@  discard block
 block discarded – undo
718 718
 			// get available disk space for user
719 719
 			$user = \OC::$server->getUserManager()->get($uid);
720 720
 			if (is_null($user)) {
721
-				\OC::$server->getLogger()->error('Backends provided no user object for ' . $uid, ['app' => 'files_versions']);
722
-				throw new \OC\User\NoUserException('Backends provided no user object for ' . $uid);
721
+				\OC::$server->getLogger()->error('Backends provided no user object for '.$uid, ['app' => 'files_versions']);
722
+				throw new \OC\User\NoUserException('Backends provided no user object for '.$uid);
723 723
 			}
724 724
 
725 725
 			\OC_Util::setupFS($uid);
@@ -736,7 +736,7 @@  discard block
 block discarded – undo
736 736
 
737 737
 			$softQuota = true;
738 738
 			$quota = $user->getQuota();
739
-			if ( $quota === null || $quota === 'none' ) {
739
+			if ($quota === null || $quota === 'none') {
740 740
 				$quota = Filesystem::free_space('/');
741 741
 				$softQuota = false;
742 742
 			} else {
@@ -751,7 +751,7 @@  discard block
 block discarded – undo
751 751
 			if ($quota >= 0) {
752 752
 				if ($softQuota) {
753 753
 					$userFolder = \OC::$server->getUserFolder($uid);
754
-					if(is_null($userFolder)) {
754
+					if (is_null($userFolder)) {
755 755
 						$availableSpace = 0;
756 756
 					} else {
757 757
 						$free = $quota - $userFolder->getSize(false); // remaining free space for user
@@ -791,18 +791,18 @@  discard block
 block discarded – undo
791 791
 			}
792 792
 
793 793
 			$logger = \OC::$server->getLogger();
794
-			foreach($toDelete as $key => $path) {
794
+			foreach ($toDelete as $key => $path) {
795 795
 				\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path, 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED));
796 796
 				self::deleteVersion($versionsFileview, $path);
797 797
 				\OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path, 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED));
798 798
 				unset($allVersions[$key]); // update array with the versions we keep
799
-				$logger->info('Expire: ' . $path, ['app' => 'files_versions']);
799
+				$logger->info('Expire: '.$path, ['app' => 'files_versions']);
800 800
 			}
801 801
 
802 802
 			// Check if enough space is available after versions are rearranged.
803 803
 			// If not we delete the oldest versions until we meet the size limit for versions,
804 804
 			// but always keep the two latest versions
805
-			$numOfVersions = count($allVersions) -2 ;
805
+			$numOfVersions = count($allVersions) - 2;
806 806
 			$i = 0;
807 807
 			// sort oldest first and make sure that we start at the first element
808 808
 			ksort($allVersions);
@@ -810,9 +810,9 @@  discard block
 block discarded – undo
810 810
 			while ($availableSpace < 0 && $i < $numOfVersions) {
811 811
 				$version = current($allVersions);
812 812
 				\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $version['path'].'.v'.$version['version'], 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED));
813
-				self::deleteVersion($versionsFileview, $version['path'] . '.v' . $version['version']);
813
+				self::deleteVersion($versionsFileview, $version['path'].'.v'.$version['version']);
814 814
 				\OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $version['path'].'.v'.$version['version'], 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED));
815
-				\OC::$server->getLogger()->info('running out of space! Delete oldest version: ' . $version['path'].'.v'.$version['version'], ['app' => 'files_versions']);
815
+				\OC::$server->getLogger()->info('running out of space! Delete oldest version: '.$version['path'].'.v'.$version['version'], ['app' => 'files_versions']);
816 816
 				$versionsSize -= $version['size'];
817 817
 				$availableSpace += $version['size'];
818 818
 				next($allVersions);
@@ -838,7 +838,7 @@  discard block
 block discarded – undo
838 838
 		$dirParts = explode('/', $dirname);
839 839
 		$dir = "/files_versions";
840 840
 		foreach ($dirParts as $part) {
841
-			$dir = $dir . '/' . $part;
841
+			$dir = $dir.'/'.$part;
842 842
 			if (!$view->file_exists($dir)) {
843 843
 				$view->mkdir($dir);
844 844
 			}
@@ -849,7 +849,7 @@  discard block
 block discarded – undo
849 849
 	 * Static workaround
850 850
 	 * @return Expiration
851 851
 	 */
852
-	protected static function getExpiration(){
852
+	protected static function getExpiration() {
853 853
 		if (is_null(self::$application)) {
854 854
 			self::$application = new Application();
855 855
 		}
Please login to merge, or discard this patch.