From ff09a1f37baa5ad5bd63c57ec5384e3ffbc38ad0 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Sun, 10 Feb 2013 14:17:18 +0100 Subject: don't use OC_FilesystemView() --- apps/files_versions/lib/hooks.php | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index dc02c605c44..6c87eba423d 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -20,13 +20,10 @@ class Hooks { public static function write_hook( $params ) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - - $versions = new Storage( new \OC\Files\View('') ); - $path = $params[\OC\Files\Filesystem::signal_param_path]; - - if($path<>'') $versions->store( $path ); - + if($path<>'') { + Storage::store($path); + } } } @@ -40,12 +37,10 @@ class Hooks { */ public static function remove_hook($params) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - - $versions = new Storage( new \OC_FilesystemView('') ); - $path = $params[\OC\Files\Filesystem::signal_param_path]; - - if($path<>'') $versions->delete( $path ); + if($path<>'') { + Storage::delete($path); + } } } @@ -59,13 +54,11 @@ class Hooks { */ public static function rename_hook($params) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - - $versions = new Storage( new \OC_FilesystemView('') ); - $oldpath = $params['oldpath']; $newpath = $params['newpath']; - - if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath ); + if($oldpath<>'' && $newpath<>'') { + Storage::rename( $oldpath, $newpath ); + } } } -- cgit v1.2.3 From 87b98dab25bec98c9018364a827427e2e9ac7782 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Thu, 14 Feb 2013 11:56:41 +0100 Subject: use new filesystem to mount users home --- apps/files_versions/lib/versions.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index b54bc4a4422..9f021bc4f88 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -57,9 +57,19 @@ class Storage { */ public function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - list($uid, $filename) = self::getUidAndFilename($filename); - $files_view = new \OC\Files\View('/'.\OCP\User::getUser() .'/files'); - $users_view = new \OC\Files\View('/'.\OCP\User::getUser()); + $owner = \OC\Files\Filesystem::getOwner($filename); + if ( $owner != \OCP\User::getUser() ) { + $datadir = \OC_Config::getValue( "datadirectory", \OC::$SERVERROOT."/data" ); + \OC\Files\Filesystem::mount( '\OC\Files\Storage\Local', array('datadir'=>$datadir), '/'.$owner ); + $info = \OC\Files\Filesystem::getFileInfo($filename); + $id = $info['fileid']; + error_log("id: $id"); + $path = \OC\Files\Filesystem::getPath($id); + error_log("new path: $path"); + } + + $files_view = new \OC\Files\View('/'.$uid .'/files'); + $users_view = new \OC\Files\View('/'.$uid); //check if source file already exist as version to avoid recursions. // todo does this check work? -- cgit v1.2.3 From b05f05ec4a254ca5c2418fee473b648e52bb7e1d Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Thu, 14 Feb 2013 14:26:49 +0100 Subject: make store function static --- apps/files_versions/lib/versions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 9f021bc4f88..c537fcf3519 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -55,7 +55,7 @@ class Storage { /** * store a new version of a file. */ - public function store($filename) { + public static function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { $owner = \OC\Files\Filesystem::getOwner($filename); if ( $owner != \OCP\User::getUser() ) { -- cgit v1.2.3 From efa024cc62a7a587ddb493287f0d8554c2342338 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 18 Feb 2013 11:19:40 +0100 Subject: fix getUidAndFilename() function --- apps/files_versions/appinfo/app.php | 2 +- apps/files_versions/lib/versions.php | 67 ++++++++++++------------------------ 2 files changed, 23 insertions(+), 46 deletions(-) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php index f7c6989ce2d..1fa63ced5e8 100644 --- a/apps/files_versions/appinfo/app.php +++ b/apps/files_versions/appinfo/app.php @@ -12,5 +12,5 @@ OCP\Util::addscript('files_versions', 'versions'); // Listen to write signals OCP\Util::connectHook('OC_Filesystem', 'write', "OCA\Files_Versions\Hooks", "write_hook"); // Listen to delete and rename signals -OCP\Util::connectHook('OC_Filesystem', 'post-delete', "OCA\Files_Versions\Hooks", "remove_hook"); +OCP\Util::connectHook('OC_Filesystem', 'post_delete', "OCA\Files_Versions\Hooks", "remove_hook"); OCP\Util::connectHook('OC_Filesystem', 'rename', "OCA\Files_Versions\Hooks", "rename_hook"); diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index c537fcf3519..1e9dc0a92af 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -35,48 +35,26 @@ class Storage { 'step' => 604800), ); - 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(); + private static function getUidAndFilename($filename) { + $uid = \OC\Files\Filesystem::getOwner($filename); + if ( $uid != \OCP\User::getUser() ) { + $info = \OC\Files\Filesystem::getFileInfo($filename); + $ownerView = new \OC\Files\View('/'.$uid.'/files'); + $filename = $ownerView->getPath($info['fileid']); } return array($uid, $filename); } - + /** * store a new version of a file. */ public static function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - $owner = \OC\Files\Filesystem::getOwner($filename); - if ( $owner != \OCP\User::getUser() ) { - $datadir = \OC_Config::getValue( "datadirectory", \OC::$SERVERROOT."/data" ); - \OC\Files\Filesystem::mount( '\OC\Files\Storage\Local', array('datadir'=>$datadir), '/'.$owner ); - $info = \OC\Files\Filesystem::getFileInfo($filename); - $id = $info['fileid']; - error_log("id: $id"); - $path = \OC\Files\Filesystem::getPath($id); - error_log("new path: $path"); - } + list($uid, $filename) = self::getUidAndFilename($filename); $files_view = new \OC\Files\View('/'.$uid .'/files'); $users_view = new \OC\Files\View('/'.$uid); - //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; @@ -116,10 +94,10 @@ class Storage { */ public static function delete($filename) { list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions'); + $versions_fileview = new \OC\Files\View('/'.$uid .'/files_versions'); $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v'; - if( ($versions = self::getVersions($filename)) ) { + if( ($versions = self::getVersions($uid, $filename)) ) { if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { $versionsSize = self::calculateSize($uid); } @@ -137,16 +115,15 @@ class Storage { public static function rename($oldpath, $newpath) { list($uid, $oldpath) = self::getUidAndFilename($oldpath); list($uidn, $newpath) = self::getUidAndFilename($newpath); - $versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions'); - $files_view = new \OC_FilesystemView('/'.$uid .'/files'); + $versions_view = new \OC\Files\View('/'.$uid .'/files_versions'); + $files_view = new \OC\Files\View('/'.$uid .'/files'); $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath; if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) { $versions_view->rename($oldpath, $newpath); - } else if ( ($versions = Storage::getVersions($oldpath)) ) { + } else if ( ($versions = Storage::getVersions($uid, $oldpath)) ) { $info=pathinfo($abs_newpath); if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true); - $versions = Storage::getVersions($oldpath); foreach ($versions as $v) { $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']); } @@ -187,14 +164,14 @@ class Storage { /** * @brief get a list of all available versions of a file in descending chronological order + * @param $uid user id from the owner of the file * @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 ) { + public static function getVersions($uid, $filename, $count = 0 ) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { - list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_versions'); + $versions_fileview = new \OC\Files\View('/' . $uid . '/files_versions'); $versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versions = array(); @@ -203,7 +180,7 @@ class Storage { sort( $matches ); - $files_view = new \OC_FilesystemView('/'.$uid.'/files'); + $files_view = new \OC\Files\View('/'.$uid.'/files'); $local_file = $files_view->getLocalFile($filename); $local_file_md5 = \md5_file( $local_file ); @@ -254,7 +231,7 @@ class Storage { */ private static function calculateSize($uid) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); + $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); @@ -279,7 +256,7 @@ class Storage { */ private static function getAllVersions($uid) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); + $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); @@ -325,7 +302,7 @@ class Storage { private static function expire($filename, $versionsSize = null) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); + $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); // get available disk space for user $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota')); @@ -344,7 +321,7 @@ class Storage { } // calculate available space for version history - $files_view = new \OC_FilesystemView('/'.$uid.'/files'); + $files_view = new \OC\Files\View('/'.$uid.'/files'); $rootInfo = $files_view->getFileInfo('/'); $free = $quota-$rootInfo['size']; // remaining free space for user if ( $free > 0 ) { @@ -360,7 +337,7 @@ class Storage { $versions_by_file = $result['by_file']; $all_versions = $result['all']; } else { - $all_versions = Storage::getVersions($filename); + $all_versions = Storage::getVersions($uid, $filename); $versions_by_file[$filename] = $all_versions; } -- cgit v1.2.3 From db8dbb9847da1a6f1146153414f8bd3bac4ca980 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 14 Feb 2013 22:53:30 +0100 Subject: Style cleanup files_versions --- apps/files_versions/lib/versions.php | 35 +++++++++++++++++------------- apps/files_versions/templates/history.php | 3 ++- apps/files_versions/templates/settings.php | 5 ++++- 3 files changed, 26 insertions(+), 17 deletions(-) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index ba9f8ba41cb..39c00001b4d 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -20,19 +20,18 @@ class Storage { const DEFAULTENABLED=true; const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota - private static $max_versions_per_interval = array( - 1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec - 'step' => 2), - 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec - 'step' => 10), - 3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute - 'step' => 60), - 4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour - 'step' => 3600), - 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day - 'step' => 86400), - 6 => array('intervalEndsAfter' => -1, //until the end one version per week - 'step' => 604800), + private static $max_versions_per_interval = array( //first 10sec, one version every 2sec + 1 => array('intervalEndsAfter' => 10, 'step' => 2), + //next minute, one version every 10sec + 2 => array('intervalEndsAfter' => 60, 'step' => 10), + //next hour, one version every minute + 3 => array('intervalEndsAfter' => 3600, 'step' => 60), + //next 24h, one version every hour + 4 => array('intervalEndsAfter' => 86400, 'step' => 3600), + //next 30days, one version per day + 5 => array('intervalEndsAfter' => 2592000, 'step' => 86400), + //until the end one version per week + 6 => array('intervalEndsAfter' => -1, 'step' => 604800), ); private static function getUidAndFilename($filename) { @@ -238,7 +237,10 @@ class Storage { $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); - $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($versionsRoot), + \RecursiveIteratorIterator::CHILD_FIRST + ); $size = 0; @@ -263,7 +265,10 @@ class Storage { $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); - $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($versionsRoot), + \RecursiveIteratorIterator::CHILD_FIRST + ); $versions = array(); diff --git a/apps/files_versions/templates/history.php b/apps/files_versions/templates/history.php index 850ece89c98..c450af66ad5 100644 --- a/apps/files_versions/templates/history.php +++ b/apps/files_versions/templates/history.php @@ -22,7 +22,8 @@ if( isset( $_['message'] ) ) { foreach ( $_['versions'] as $v ) { echo ' '; echo OCP\Util::formatDate( doubleval($v['version']) ); - echo ' Revert

'; + echo ' Revert

'; if ( $v['cur'] ) { echo ' (Current)'; } diff --git a/apps/files_versions/templates/settings.php b/apps/files_versions/templates/settings.php index bfca8366f5d..3b8e4baf119 100644 --- a/apps/files_versions/templates/settings.php +++ b/apps/files_versions/templates/settings.php @@ -1,6 +1,9 @@
t('Files Versioning');?> - />
+ />
-- cgit v1.2.3 From 59582e0f3fb395378b88aec2a6d0689bb2ac039e Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Fri, 22 Feb 2013 00:21:06 +0100 Subject: Fix review issues --- apps/files_versions/lib/versions.php | 27 ++++++++++++++------------- core/templates/layout.user.php | 8 ++++---- 2 files changed, 18 insertions(+), 17 deletions(-) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 39c00001b4d..503d996c62a 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -20,19 +20,20 @@ class Storage { const DEFAULTENABLED=true; const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota - private static $max_versions_per_interval = array( //first 10sec, one version every 2sec - 1 => array('intervalEndsAfter' => 10, 'step' => 2), - //next minute, one version every 10sec - 2 => array('intervalEndsAfter' => 60, 'step' => 10), - //next hour, one version every minute - 3 => array('intervalEndsAfter' => 3600, 'step' => 60), - //next 24h, one version every hour - 4 => array('intervalEndsAfter' => 86400, 'step' => 3600), - //next 30days, one version per day - 5 => array('intervalEndsAfter' => 2592000, 'step' => 86400), - //until the end one version per week - 6 => array('intervalEndsAfter' => -1, 'step' => 604800), - ); + private static $max_versions_per_interval = array( + //first 10sec, one version every 2sec + 1 => array('intervalEndsAfter' => 10, 'step' => 2), + //next minute, one version every 10sec + 2 => array('intervalEndsAfter' => 60, 'step' => 10), + //next hour, one version every minute + 3 => array('intervalEndsAfter' => 3600, 'step' => 60), + //next 24h, one version every hour + 4 => array('intervalEndsAfter' => 86400, 'step' => 3600), + //next 30days, one version per day + 5 => array('intervalEndsAfter' => 2592000, 'step' => 86400), + //until the end one version per week + 6 => array('intervalEndsAfter' => -1, 'step' => 604800), + ); private static function getUidAndFilename($filename) { $uid = \OC\Files\Filesystem::getOwner($filename); diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 17664c4ef03..d0869cb8404 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -1,8 +1,8 @@ - <?php echo !empty($_['application'])?$_['application'].' | ':'' - ?>ownCloud <?php echo !empty($_['user_displayname'])?' ('.$_['user_displayname'].') ':'' ?> + <?php echo !empty($_['application'])?$_['application'].' | ':'' ?>ownCloud + <?php echo !empty($_['user_displayname'])?' ('.$_['user_displayname'].') ':'' ?> @@ -49,8 +49,8 @@
  • - t('Log out');?> + + t('Log out');?>
  • -- cgit v1.2.3 From 9edec542c51899dd157cc2503b81916105f3c005 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Fri, 22 Feb 2013 13:15:47 +0100 Subject: mount users home before write/read file to it, necessary to deal with external homes --- apps/files_versions/lib/versions.php | 1 + 1 file changed, 1 insertion(+) (limited to 'apps/files_versions/lib') diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index ba9f8ba41cb..95c7991bad6 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -37,6 +37,7 @@ class Storage { private static function getUidAndFilename($filename) { $uid = \OC\Files\Filesystem::getOwner($filename); + \OC\Files\Filesystem::initMountPoints($uid); if ( $uid != \OCP\User::getUser() ) { $info = \OC\Files\Filesystem::getFileInfo($filename); $ownerView = new \OC\Files\View('/'.$uid.'/files'); -- cgit v1.2.3