From 9795bc19bfbe7ebaffd1f88c0ccd47df94504b2e Mon Sep 17 00:00:00 2001
From: Felix Moeller <mail@felixmoeller.de>
Date: Sun, 4 Nov 2012 18:42:18 +0100
Subject: [PATCH] Checkstyle: Fix the last two  InvalidEOLChar

---
 apps/files_sharing/public.php        | 446 ++++++++++-----------
 apps/files_versions/lib/versions.php | 554 +++++++++++++--------------
 2 files changed, 500 insertions(+), 500 deletions(-)

diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php
index 105e94f1140..dca87cd6876 100644
--- a/apps/files_sharing/public.php
+++ b/apps/files_sharing/public.php
@@ -1,223 +1,223 @@
-<?php
-// Load other apps for file previews
-OC_App::loadApps();
-
-// Compatibility with shared-by-link items from ownCloud 4.0
-// requires old Sharing table !
-// support will be removed in OC 5.0,a
-if (isset($_GET['token'])) {
-	unset($_GET['file']);
-	$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
-	$filepath = $qry->execute(array($_GET['token']))->fetchOne();
-	if(isset($filepath)) {
-		$info = OC_FileCache_Cached::get($filepath, '');
-		if(strtolower($info['mimetype']) == 'httpd/unix-directory') {
-			$_GET['dir'] = $filepath;
-		} else {
-			$_GET['file'] = $filepath;
-		}
-		\OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN);
-	}
-}
-// Enf of backward compatibility
-
-function getID($path) {
-	// use the share table from the db to find the item source if the file was reshared because shared files 
-	//are not stored in the file cache.
-	if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
-		$path_parts = explode('/', $path, 5);
-		$user = $path_parts[1];
-		$intPath = '/'.$path_parts[4];
-		$query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? ');
-		$result = $query->execute(array($user, $intPath));
-		$row = $result->fetchRow();
-		$fileSource = $row['item_source'];
-	} else {
-		$fileSource = OC_Filecache::getId($path, '');
-	}
-
-	return $fileSource;
-}
-
-if (isset($_GET['file']) || isset($_GET['dir'])) {
-	if (isset($_GET['dir'])) {
-		$type = 'folder';
-		$path = $_GET['dir'];
-		if(strlen($path)>1 and substr($path, -1, 1)==='/') {
-			$path=substr($path, 0, -1);
-		}
-		$baseDir = $path;
-		$dir = $baseDir;
-	} else {
-		$type = 'file';
-		$path = $_GET['file'];
-		if(strlen($path)>1 and substr($path, -1, 1)==='/') {
-			$path=substr($path, 0, -1);
-		}
-	}
-	$uidOwner = substr($path, 1, strpos($path, '/', 1) - 1);
-	if (OCP\User::userExists($uidOwner)) {
-		OC_Util::setupFS($uidOwner);
-		$fileSource = getId($path);
-		if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) {
-			// TODO Fix in the getItems
-			if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) {
-				header('HTTP/1.0 404 Not Found');
-				$tmpl = new OCP\Template('', '404', 'guest');
-				$tmpl->printPage();
-				exit();
-			}
-			if (isset($linkItem['share_with'])) {
-				// Check password
-				if (isset($_GET['file'])) {
-					$url = OCP\Util::linkToPublic('files').'&file='.$_GET['file'];
-				} else {
-					$url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'];
-				}
-				if (isset($_POST['password'])) {
-					$password = $_POST['password'];
-					$storedHash = $linkItem['share_with'];
-					$forcePortable = (CRYPT_BLOWFISH != 1);
-					$hasher = new PasswordHash(8, $forcePortable);
-					if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) {
-						$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
-						$tmpl->assign('URL', $url);
-						$tmpl->assign('error', true);
-						$tmpl->printPage();
-						exit();
-					} else {
-						// Save item id in session for future requests
-						$_SESSION['public_link_authenticated'] = $linkItem['id'];
-					}
-				// Check if item id is set in session
-				} else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
-					// Prompt for password
-					$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
-					$tmpl->assign('URL', $url);
-					$tmpl->printPage();
-					exit();
-				}
-			}
-			$path = $linkItem['path'];
-			if (isset($_GET['path'])) {
-				$path .= $_GET['path'];
-				$dir .= $_GET['path'];
-				if (!OC_Filesystem::file_exists($path)) {
-					header('HTTP/1.0 404 Not Found');
-					$tmpl = new OCP\Template('', '404', 'guest');
-					$tmpl->printPage();
-					exit();
-				}
-			}
-			// Download the file
-			if (isset($_GET['download'])) {
-				if (isset($_GET['dir'])) {
-					if ( isset($_GET['files']) ) { // download selected files
-						OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
-					} else 	if (isset($_GET['path']) &&  $_GET['path'] != '' ) { // download a file from a shared directory
-						OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
-					} else { // download the whole shared directory
-						OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
-					}
-				} else { // download a single shared file
-					OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
-				}
-
-			} else {
-				OCP\Util::addStyle('files_sharing', 'public');
-				OCP\Util::addScript('files_sharing', 'public');
-				OCP\Util::addScript('files', 'fileactions');
-				$tmpl = new OCP\Template('files_sharing', 'public', 'base');
-				$tmpl->assign('owner', $uidOwner);
-				// Show file list
-				if (OC_Filesystem::is_dir($path)) {
-					OCP\Util::addStyle('files', 'files');
-					OCP\Util::addScript('files', 'files');
-					OCP\Util::addScript('files', 'filelist');
-					$files = array();
-					$rootLength = strlen($baseDir) + 1;
-					foreach (OC_Files::getDirectoryContent($path) as $i) {
-						$i['date'] = OCP\Util::formatDate($i['mtime']);
-						if ($i['type'] == 'file') {
-							$fileinfo = pathinfo($i['name']);
-							$i['basename'] = $fileinfo['filename'];
-							$i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
-						}
-						$i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength);
-						if ($i['directory'] == '/') {
-							$i['directory'] = '';
-						}
-						$i['permissions'] = OCP\Share::PERMISSION_READ;
-						$files[] = $i;
-					}
-					// Make breadcrumb
-					$breadcrumb = array();
-					$pathtohere = '';
-					$count = 1;
-					foreach (explode('/', $dir) as $i) {
-						if ($i != '') {
-							if ($i != $baseDir) {
-								$pathtohere .= '/'.$i;
-							}
-							if ( strlen($pathtohere) <  strlen($_GET['dir'])) {
-								continue;
-							}
-							$breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i);
-						}
-					}
-					$list = new OCP\Template('files', 'part.list', '');
-					$list->assign('files', $files, false);
-					$list->assign('publicListView', true);
-					$list->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
-					$list->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path=', false);
-					$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' );
-					$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
-					$breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
-					$folder = new OCP\Template('files', 'index', '');
-					$folder->assign('fileList', $list->fetchPage(), false);
-					$folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
-					$folder->assign('dir', basename($dir));
-					$folder->assign('isCreatable', false);
-					$folder->assign('permissions', 0);
-					$folder->assign('files', $files);
-					$folder->assign('uploadMaxFilesize', 0);
-					$folder->assign('uploadMaxHumanFilesize', 0);
-					$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
-					$tmpl->assign('folder', $folder->fetchPage(), false);
-					$tmpl->assign('uidOwner', $uidOwner);
-					$tmpl->assign('dir', basename($dir));
-					$tmpl->assign('filename', basename($path));
-					$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
-					$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
-					if (isset($_GET['path'])) {
-						$getPath = $_GET['path'];
-					} else {
-						$getPath = '';
-					}
-					$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
-				} else {
-					// Show file preview if viewer is available
-					$tmpl->assign('uidOwner', $uidOwner);
-					$tmpl->assign('dir', dirname($path));
-					$tmpl->assign('filename', basename($path));
-					$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
-					if ($type == 'file') {
-						$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.urlencode($_GET['file']).'&download', false);
-					} else {
-						if (isset($_GET['path'])) {
-							$getPath = $_GET['path'];
-						} else {
-							$getPath = '';
-						}
-						$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
-					}
-				}
-				$tmpl->printPage();
-			}
-			exit();
-		}
-	}
-}
-header('HTTP/1.0 404 Not Found');
-$tmpl = new OCP\Template('', '404', 'guest');
-$tmpl->printPage();
+<?php
+// Load other apps for file previews
+OC_App::loadApps();
+
+// Compatibility with shared-by-link items from ownCloud 4.0
+// requires old Sharing table !
+// support will be removed in OC 5.0,a
+if (isset($_GET['token'])) {
+	unset($_GET['file']);
+	$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
+	$filepath = $qry->execute(array($_GET['token']))->fetchOne();
+	if(isset($filepath)) {
+		$info = OC_FileCache_Cached::get($filepath, '');
+		if(strtolower($info['mimetype']) == 'httpd/unix-directory') {
+			$_GET['dir'] = $filepath;
+		} else {
+			$_GET['file'] = $filepath;
+		}
+		\OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN);
+	}
+}
+// Enf of backward compatibility
+
+function getID($path) {
+	// use the share table from the db to find the item source if the file was reshared because shared files 
+	//are not stored in the file cache.
+	if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
+		$path_parts = explode('/', $path, 5);
+		$user = $path_parts[1];
+		$intPath = '/'.$path_parts[4];
+		$query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? ');
+		$result = $query->execute(array($user, $intPath));
+		$row = $result->fetchRow();
+		$fileSource = $row['item_source'];
+	} else {
+		$fileSource = OC_Filecache::getId($path, '');
+	}
+
+	return $fileSource;
+}
+
+if (isset($_GET['file']) || isset($_GET['dir'])) {
+	if (isset($_GET['dir'])) {
+		$type = 'folder';
+		$path = $_GET['dir'];
+		if(strlen($path)>1 and substr($path, -1, 1)==='/') {
+			$path=substr($path, 0, -1);
+		}
+		$baseDir = $path;
+		$dir = $baseDir;
+	} else {
+		$type = 'file';
+		$path = $_GET['file'];
+		if(strlen($path)>1 and substr($path, -1, 1)==='/') {
+			$path=substr($path, 0, -1);
+		}
+	}
+	$uidOwner = substr($path, 1, strpos($path, '/', 1) - 1);
+	if (OCP\User::userExists($uidOwner)) {
+		OC_Util::setupFS($uidOwner);
+		$fileSource = getId($path);
+		if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) {
+			// TODO Fix in the getItems
+			if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) {
+				header('HTTP/1.0 404 Not Found');
+				$tmpl = new OCP\Template('', '404', 'guest');
+				$tmpl->printPage();
+				exit();
+			}
+			if (isset($linkItem['share_with'])) {
+				// Check password
+				if (isset($_GET['file'])) {
+					$url = OCP\Util::linkToPublic('files').'&file='.$_GET['file'];
+				} else {
+					$url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'];
+				}
+				if (isset($_POST['password'])) {
+					$password = $_POST['password'];
+					$storedHash = $linkItem['share_with'];
+					$forcePortable = (CRYPT_BLOWFISH != 1);
+					$hasher = new PasswordHash(8, $forcePortable);
+					if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) {
+						$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
+						$tmpl->assign('URL', $url);
+						$tmpl->assign('error', true);
+						$tmpl->printPage();
+						exit();
+					} else {
+						// Save item id in session for future requests
+						$_SESSION['public_link_authenticated'] = $linkItem['id'];
+					}
+				// Check if item id is set in session
+				} else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
+					// Prompt for password
+					$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
+					$tmpl->assign('URL', $url);
+					$tmpl->printPage();
+					exit();
+				}
+			}
+			$path = $linkItem['path'];
+			if (isset($_GET['path'])) {
+				$path .= $_GET['path'];
+				$dir .= $_GET['path'];
+				if (!OC_Filesystem::file_exists($path)) {
+					header('HTTP/1.0 404 Not Found');
+					$tmpl = new OCP\Template('', '404', 'guest');
+					$tmpl->printPage();
+					exit();
+				}
+			}
+			// Download the file
+			if (isset($_GET['download'])) {
+				if (isset($_GET['dir'])) {
+					if ( isset($_GET['files']) ) { // download selected files
+						OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+					} else 	if (isset($_GET['path']) &&  $_GET['path'] != '' ) { // download a file from a shared directory
+						OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+					} else { // download the whole shared directory
+						OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+					}
+				} else { // download a single shared file
+					OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+				}
+
+			} else {
+				OCP\Util::addStyle('files_sharing', 'public');
+				OCP\Util::addScript('files_sharing', 'public');
+				OCP\Util::addScript('files', 'fileactions');
+				$tmpl = new OCP\Template('files_sharing', 'public', 'base');
+				$tmpl->assign('owner', $uidOwner);
+				// Show file list
+				if (OC_Filesystem::is_dir($path)) {
+					OCP\Util::addStyle('files', 'files');
+					OCP\Util::addScript('files', 'files');
+					OCP\Util::addScript('files', 'filelist');
+					$files = array();
+					$rootLength = strlen($baseDir) + 1;
+					foreach (OC_Files::getDirectoryContent($path) as $i) {
+						$i['date'] = OCP\Util::formatDate($i['mtime']);
+						if ($i['type'] == 'file') {
+							$fileinfo = pathinfo($i['name']);
+							$i['basename'] = $fileinfo['filename'];
+							$i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
+						}
+						$i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength);
+						if ($i['directory'] == '/') {
+							$i['directory'] = '';
+						}
+						$i['permissions'] = OCP\Share::PERMISSION_READ;
+						$files[] = $i;
+					}
+					// Make breadcrumb
+					$breadcrumb = array();
+					$pathtohere = '';
+					$count = 1;
+					foreach (explode('/', $dir) as $i) {
+						if ($i != '') {
+							if ($i != $baseDir) {
+								$pathtohere .= '/'.$i;
+							}
+							if ( strlen($pathtohere) <  strlen($_GET['dir'])) {
+								continue;
+							}
+							$breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i);
+						}
+					}
+					$list = new OCP\Template('files', 'part.list', '');
+					$list->assign('files', $files, false);
+					$list->assign('publicListView', true);
+					$list->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
+					$list->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path=', false);
+					$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' );
+					$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
+					$breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
+					$folder = new OCP\Template('files', 'index', '');
+					$folder->assign('fileList', $list->fetchPage(), false);
+					$folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
+					$folder->assign('dir', basename($dir));
+					$folder->assign('isCreatable', false);
+					$folder->assign('permissions', 0);
+					$folder->assign('files', $files);
+					$folder->assign('uploadMaxFilesize', 0);
+					$folder->assign('uploadMaxHumanFilesize', 0);
+					$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+					$tmpl->assign('folder', $folder->fetchPage(), false);
+					$tmpl->assign('uidOwner', $uidOwner);
+					$tmpl->assign('dir', basename($dir));
+					$tmpl->assign('filename', basename($path));
+					$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
+					$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+					if (isset($_GET['path'])) {
+						$getPath = $_GET['path'];
+					} else {
+						$getPath = '';
+					}
+					$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
+				} else {
+					// Show file preview if viewer is available
+					$tmpl->assign('uidOwner', $uidOwner);
+					$tmpl->assign('dir', dirname($path));
+					$tmpl->assign('filename', basename($path));
+					$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
+					if ($type == 'file') {
+						$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.urlencode($_GET['file']).'&download', false);
+					} else {
+						if (isset($_GET['path'])) {
+							$getPath = $_GET['path'];
+						} else {
+							$getPath = '';
+						}
+						$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
+					}
+				}
+				$tmpl->printPage();
+			}
+			exit();
+		}
+	}
+}
+header('HTTP/1.0 404 Not Found');
+$tmpl = new OCP\Template('', '404', 'guest');
+$tmpl->printPage();
diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index 8f807187467..dc83ab12af0 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -1,278 +1,278 @@
-<?php
-/**
- * Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-/**
- * Versions
- *
- * A class to handle the versioning of files.
- */
-
-namespace OCA_Versions;
-
-class Storage {
-
-
-	// config.php configuration:
-	//   - files_versions
-	//   - files_versionsfolder
-	//   - files_versionsblacklist
-	//   - files_versionsmaxfilesize
-	//   - files_versionsinterval
-	//   - files_versionmaxversions
-	//
-	// todo:
-	//   - finish porting to OC_FilesystemView to enable network transparency
-	//   - add transparent compression. first test if it´s worth it.
-
-	const DEFAULTENABLED=true;
-	const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
-	const DEFAULTMAXFILESIZE=1048576; // 10MB
-	const DEFAULTMININTERVAL=60; // 1 min
-	const DEFAULTMAXVERSIONS=50;
-
-	private static function getUidAndFilename($filename)
-	{
-		if (\OCP\App::isEnabled('files_sharing')
-		    && substr($filename, 0, 7) == '/Shared'
-		    && $source = \OCP\Share::getItemSharedWith('file',
-					substr($filename, 7),
-					\OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) {
-			$filename = $source['path'];
-			$pos = strpos($filename, '/files', 1);
-			$uid = substr($filename, 1, $pos - 1);
-			$filename = substr($filename, $pos + 6);
-		} else {
-			$uid = \OCP\User::getUser();
-		}
-		return array($uid, $filename);
-	}
-
-	/**
-	 * store a new version of a file.
-	 */
-	public function store($filename) {
-		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-			list($uid, $filename) = self::getUidAndFilename($filename);
-			$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser() .'/files');
-			$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
-
-			//check if source file already exist as version to avoid recursions.
-			// todo does this check work?
-			if ($users_view->file_exists($filename)) {
-				return false;
-			}
-
-			// check if filename is a directory
-			if($files_view->is_dir($filename)) {
-				return false;
-			}
-
-			// check filetype blacklist
-			$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
-			foreach($blacklist as $bl) {
-				$parts=explode('.', $filename);
-				$ext=end($parts);
-				if(strtolower($ext)==$bl) {
-					return false;
-				}
-			}
-			// we should have a source file to work with
-			if (!$files_view->file_exists($filename)) {
-				return false;
-			}
-
-			// check filesize
-			if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
-				return false;
-			}
-
-
-			// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
-			if ($uid == \OCP\User::getUser()) {
-				$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
-				$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
-				$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
-				$matches=glob($versionsName.'.v*');
-				sort($matches);
-				$parts=explode('.v', end($matches));
-				if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
-					return false;
-				}
-			}
-
-
-			// create all parent folders
-			$info=pathinfo($filename);
-			if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
-				mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
-			}
-
-			// store a new version of a file
-			$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
-
-			// expire old revisions if necessary
-			Storage::expire($filename);
-		}
-	}
-
-
-	/**
-	 * rollback to an old version of a file.
-	 */
-	public static function rollback($filename, $revision) {
-
-		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-			list($uid, $filename) = self::getUidAndFilename($filename);
-			$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
-
-			// rollback
-			if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
-
-				return true;
-
-			}else{
-
-				return false;
-
-			}
-
-		}
-
-	}
-
-	/**
-	 * check if old versions of a file exist.
-	 */
-	public static function isversioned($filename) {
-		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-			list($uid, $filename) = self::getUidAndFilename($filename);
-			$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
-
-			$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
-
-			// check for old versions
-			$matches=glob($versionsName.'.v*');
-			if(count($matches)>0) {
-				return true;
-			}else{
-				return false;
-			}
-		}else{
-			return(false);
-		}
-	}
-
-
-
-	/**
-	 * @brief get a list of all available versions of a file in descending chronological order
-	 * @param $filename file to find versions of, relative to the user files dir
-	 * @param $count number of versions to return
-	 * @returns array
-	 */
-	public static function getVersions( $filename, $count = 0 ) {
-		if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
-			list($uid, $filename) = self::getUidAndFilename($filename);
-			$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
-
-			$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
-			$versions = array();
-			// fetch for old versions
-			$matches = glob( $versionsName.'.v*' );
-
-			sort( $matches );
-
-			$i = 0;
-
-			$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
-			$local_file = $files_view->getLocalFile($filename);
-			foreach( $matches as $ma ) {
-
-				$i++;
-				$versions[$i]['cur'] = 0;
-				$parts = explode( '.v', $ma );
-				$versions[$i]['version'] = ( end( $parts ) );
-
-				// if file with modified date exists, flag it in array as currently enabled version
-				( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
-
-			}
-
-			$versions = array_reverse( $versions );
-
-			foreach( $versions as $key => $value ) {
-
-				// flag the first matched file in array (which will have latest modification date) as current version
-				if ( $value['fileMatch'] ) {
-
-					$value['cur'] = 1;
-					break;
-
-				}
-
-			}
-
-			$versions = array_reverse( $versions );
-
-			// only show the newest commits
-			if( $count != 0 and ( count( $versions )>$count ) ) {
-
-				$versions = array_slice( $versions, count( $versions ) - $count );
-
-			}
-
-			return( $versions );
-
-
-		} else {
-
-			// if versioning isn't enabled then return an empty array
-			return( array() );
-
-		}
-
-	}
-
-	/**
-	 * @brief Erase a file's versions which exceed the set quota
-	 */
-	public static function expire($filename) {
-		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-			list($uid, $filename) = self::getUidAndFilename($filename);
-			$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
-
-			$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
-
-			// check for old versions
-			$matches = glob( $versionsName.'.v*' );
-
-			if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
-
-				$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS );
-
-				// delete old versions of a file
-				$deleteItems = array_slice( $matches, 0, $numberToDelete );
-
-				foreach( $deleteItems as $de ) {
-
-					unlink( $versionsName.'.v'.$de );
-
-				}
-			}
-		}
-	}
-
-	/**
-	 * @brief Erase all old versions of all user files
-	 * @return true/false
-	 */
-	public function expireAll() {
-		$view = \OCP\Files::getStorage('files_versions');
-		return $view->deleteAll('', true);
-	}
+<?php
+/**
+ * Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+/**
+ * Versions
+ *
+ * A class to handle the versioning of files.
+ */
+
+namespace OCA_Versions;
+
+class Storage {
+
+
+	// config.php configuration:
+	//   - files_versions
+	//   - files_versionsfolder
+	//   - files_versionsblacklist
+	//   - files_versionsmaxfilesize
+	//   - files_versionsinterval
+	//   - files_versionmaxversions
+	//
+	// todo:
+	//   - finish porting to OC_FilesystemView to enable network transparency
+	//   - add transparent compression. first test if it´s worth it.
+
+	const DEFAULTENABLED=true;
+	const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
+	const DEFAULTMAXFILESIZE=1048576; // 10MB
+	const DEFAULTMININTERVAL=60; // 1 min
+	const DEFAULTMAXVERSIONS=50;
+
+	private static function getUidAndFilename($filename)
+	{
+		if (\OCP\App::isEnabled('files_sharing')
+		    && substr($filename, 0, 7) == '/Shared'
+		    && $source = \OCP\Share::getItemSharedWith('file',
+					substr($filename, 7),
+					\OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) {
+			$filename = $source['path'];
+			$pos = strpos($filename, '/files', 1);
+			$uid = substr($filename, 1, $pos - 1);
+			$filename = substr($filename, $pos + 6);
+		} else {
+			$uid = \OCP\User::getUser();
+		}
+		return array($uid, $filename);
+	}
+
+	/**
+	 * store a new version of a file.
+	 */
+	public function store($filename) {
+		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+			list($uid, $filename) = self::getUidAndFilename($filename);
+			$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser() .'/files');
+			$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
+
+			//check if source file already exist as version to avoid recursions.
+			// todo does this check work?
+			if ($users_view->file_exists($filename)) {
+				return false;
+			}
+
+			// check if filename is a directory
+			if($files_view->is_dir($filename)) {
+				return false;
+			}
+
+			// check filetype blacklist
+			$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
+			foreach($blacklist as $bl) {
+				$parts=explode('.', $filename);
+				$ext=end($parts);
+				if(strtolower($ext)==$bl) {
+					return false;
+				}
+			}
+			// we should have a source file to work with
+			if (!$files_view->file_exists($filename)) {
+				return false;
+			}
+
+			// check filesize
+			if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
+				return false;
+			}
+
+
+			// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
+			if ($uid == \OCP\User::getUser()) {
+				$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
+				$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
+				$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
+				$matches=glob($versionsName.'.v*');
+				sort($matches);
+				$parts=explode('.v', end($matches));
+				if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
+					return false;
+				}
+			}
+
+
+			// create all parent folders
+			$info=pathinfo($filename);
+			if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
+				mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
+			}
+
+			// store a new version of a file
+			$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
+
+			// expire old revisions if necessary
+			Storage::expire($filename);
+		}
+	}
+
+
+	/**
+	 * rollback to an old version of a file.
+	 */
+	public static function rollback($filename, $revision) {
+
+		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+			list($uid, $filename) = self::getUidAndFilename($filename);
+			$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
+
+			// rollback
+			if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
+
+				return true;
+
+			}else{
+
+				return false;
+
+			}
+
+		}
+
+	}
+
+	/**
+	 * check if old versions of a file exist.
+	 */
+	public static function isversioned($filename) {
+		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+			list($uid, $filename) = self::getUidAndFilename($filename);
+			$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
+
+			$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
+
+			// check for old versions
+			$matches=glob($versionsName.'.v*');
+			if(count($matches)>0) {
+				return true;
+			}else{
+				return false;
+			}
+		}else{
+			return(false);
+		}
+	}
+
+
+
+	/**
+	 * @brief get a list of all available versions of a file in descending chronological order
+	 * @param $filename file to find versions of, relative to the user files dir
+	 * @param $count number of versions to return
+	 * @returns array
+	 */
+	public static function getVersions( $filename, $count = 0 ) {
+		if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+			list($uid, $filename) = self::getUidAndFilename($filename);
+			$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
+
+			$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
+			$versions = array();
+			// fetch for old versions
+			$matches = glob( $versionsName.'.v*' );
+
+			sort( $matches );
+
+			$i = 0;
+
+			$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
+			$local_file = $files_view->getLocalFile($filename);
+			foreach( $matches as $ma ) {
+
+				$i++;
+				$versions[$i]['cur'] = 0;
+				$parts = explode( '.v', $ma );
+				$versions[$i]['version'] = ( end( $parts ) );
+
+				// if file with modified date exists, flag it in array as currently enabled version
+				( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
+
+			}
+
+			$versions = array_reverse( $versions );
+
+			foreach( $versions as $key => $value ) {
+
+				// flag the first matched file in array (which will have latest modification date) as current version
+				if ( $value['fileMatch'] ) {
+
+					$value['cur'] = 1;
+					break;
+
+				}
+
+			}
+
+			$versions = array_reverse( $versions );
+
+			// only show the newest commits
+			if( $count != 0 and ( count( $versions )>$count ) ) {
+
+				$versions = array_slice( $versions, count( $versions ) - $count );
+
+			}
+
+			return( $versions );
+
+
+		} else {
+
+			// if versioning isn't enabled then return an empty array
+			return( array() );
+
+		}
+
+	}
+
+	/**
+	 * @brief Erase a file's versions which exceed the set quota
+	 */
+	public static function expire($filename) {
+		if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+			list($uid, $filename) = self::getUidAndFilename($filename);
+			$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
+
+			$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
+
+			// check for old versions
+			$matches = glob( $versionsName.'.v*' );
+
+			if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
+
+				$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS );
+
+				// delete old versions of a file
+				$deleteItems = array_slice( $matches, 0, $numberToDelete );
+
+				foreach( $deleteItems as $de ) {
+
+					unlink( $versionsName.'.v'.$de );
+
+				}
+			}
+		}
+	}
+
+	/**
+	 * @brief Erase all old versions of all user files
+	 * @return true/false
+	 */
+	public function expireAll() {
+		$view = \OCP\Files::getStorage('files_versions');
+		return $view->deleteAll('', true);
+	}
 }
-- 
GitLab