Cache folder is now configurable
When using an external cache folder, it is automatically mounted in FileSystem::initFileSystem so that any app can use it transparently by creating a view on the "/$user/cache" directory.
This commit is contained in:
parent
abdc823bb6
commit
10c9b8eb99
|
@ -273,6 +273,15 @@ $CONFIG = array(
|
|||
/* all css and js files will be served by the web server statically in one js file and ons css file*/
|
||||
'asset-pipeline.enabled' => false,
|
||||
|
||||
/* where mount.json file should be stored, defaults to data/mount.json */
|
||||
'mount_file' => '',
|
||||
/* where mount.json file should be stored, defaults to data/mount.json */
|
||||
'mount_file' => '',
|
||||
|
||||
/*
|
||||
* Location of the cache folder, defaults to "data/$user/cache" where "$user" is the current user.
|
||||
*
|
||||
* When specified, the format will change to "$cache_path/$user" where "$cache_path" is the configured
|
||||
* cache directory and "$user" is the user.
|
||||
*
|
||||
*/
|
||||
'cache_path' => ''
|
||||
);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
|
||||
* Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
|
@ -10,22 +11,22 @@ namespace OC\Cache;
|
|||
|
||||
class File {
|
||||
protected $storage;
|
||||
|
||||
/**
|
||||
* Returns the cache storage for the logged in user
|
||||
* @return cache storage
|
||||
*/
|
||||
protected function getStorage() {
|
||||
if (isset($this->storage)) {
|
||||
return $this->storage;
|
||||
}
|
||||
if(\OC_User::isLoggedIn()) {
|
||||
\OC\Files\Filesystem::initMountPoints(\OC_User::getUser());
|
||||
$subdir = 'cache';
|
||||
$view = new \OC\Files\View('/' . \OC_User::getUser());
|
||||
if(!$view->file_exists($subdir)) {
|
||||
$view->mkdir($subdir);
|
||||
}
|
||||
$this->storage = new \OC\Files\View('/' . \OC_User::getUser().'/'.$subdir);
|
||||
$this->storage = new \OC\Files\View('/' . \OC_User::getUser() . '/cache');
|
||||
return $this->storage;
|
||||
}else{
|
||||
\OC_Log::write('core', 'Can\'t get cache storage, user not logged in', \OC_Log::ERROR);
|
||||
return false;
|
||||
throw new \OC\ForbiddenException('Can\t get cache storage, user not logged in');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -321,10 +321,46 @@ class Filesystem {
|
|||
self::mount('\OC\Files\Storage\Local', array('datadir' => $root), $user);
|
||||
}
|
||||
|
||||
self::mountCacheDir($user);
|
||||
|
||||
// Chance to mount for other storages
|
||||
\OC_Hook::emit('OC_Filesystem', 'post_initMountPoints', array('user' => $user, 'user_dir' => $root));
|
||||
}
|
||||
|
||||
/**
|
||||
* Mounts the cache directory
|
||||
* @param string $user user name
|
||||
*/
|
||||
private static function mountCacheDir($user) {
|
||||
$cacheBaseDir = \OC_Config::getValue('cache_path', '');
|
||||
if ($cacheBaseDir === '') {
|
||||
// use local cache dir relative to the user's home
|
||||
$subdir = 'cache';
|
||||
$view = new \OC\Files\View('/' . $user);
|
||||
if(!$view->file_exists($subdir)) {
|
||||
$view->mkdir($subdir);
|
||||
}
|
||||
} else {
|
||||
$cacheDir = rtrim($cacheBaseDir, '/') . '/' . $user;
|
||||
if (!file_exists($cacheDir)) {
|
||||
mkdir($cacheDir, 0770, true);
|
||||
}
|
||||
// mount external cache dir to "/$user/cache" mount point
|
||||
self::mount('\OC\Files\Storage\Local', array('datadir' => $cacheDir), '/' . $user . '/cache');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* fill in the correct values for $user
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $input
|
||||
* @return string
|
||||
*/
|
||||
private static function setUserVars($user, $input) {
|
||||
return str_replace('$user', $user, $input);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the default filesystem view
|
||||
*
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
namespace OC;
|
||||
|
||||
/**
|
||||
* Exception thrown whenever access to a resource has
|
||||
* been forbidden or whenever a user isn't authenticated.
|
||||
*/
|
||||
class ForbiddenException extends \Exception {
|
||||
}
|
Loading…
Reference in New Issue