Convert calendar and contacts import to use a caching system for storing the import progress percentage. OC_Cache can later be made smarter about storing values.remotes/origin/stable45
parent
dfc90021ca
commit
091b343d5c
@ -1,2 +0,0 @@ |
||||
This folder contains static files with the percentage of the import. |
||||
Requires write permission |
||||
@ -1,2 +0,0 @@ |
||||
This folder contains static files with the percentage of the import. |
||||
Requires write permission |
||||
@ -0,0 +1,40 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
class OC_Cache { |
||||
static protected $cache; |
||||
|
||||
static protected function init() { |
||||
self::$cache = new OC_Cache_File(); |
||||
} |
||||
|
||||
static public function get($key) { |
||||
if (!self::$cache) { |
||||
self::init(); |
||||
} |
||||
return self::$cache->get($key); |
||||
} |
||||
|
||||
static public function set($key, $value, $ttl=0) { |
||||
if (empty($key)) { |
||||
return false; |
||||
} |
||||
if (!self::$cache) { |
||||
self::init(); |
||||
} |
||||
return self::$cache->set($key, $value, $ttl); |
||||
} |
||||
|
||||
static public function remove($key) { |
||||
if (!self::$cache) { |
||||
self::init(); |
||||
} |
||||
return self::$cache->remove($key); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,50 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
|
||||
class OC_Cache_File { |
||||
protected function getStorage() { |
||||
if(OC_User::isLoggedIn()){ |
||||
$subdir = 'cache'; |
||||
$view = new OC_FilesystemView('/'.OC_User::getUser()); |
||||
if(!$view->file_exists($subdir)) { |
||||
$view->mkdir($subdir); |
||||
} |
||||
return new OC_FilesystemView('/'.OC_User::getUser().'/'.$subdir); |
||||
}else{ |
||||
OC_Log::write('core','Can\'t get cache storage, user not logged in', OC_Log::ERROR); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
public function get($key) { |
||||
$storage = $this->getStorage(); |
||||
if ($storage->is_file($key)) { |
||||
$mtime = $storage->filemtime($key); |
||||
if ($mtime < time()) { |
||||
$storage->unlink($key); |
||||
return false; |
||||
} |
||||
return $storage->file_get_contents($key); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public function set($key, $value, $ttl) { |
||||
$storage = $this->getStorage(); |
||||
if ($storage->file_put_contents($key, $value)) { |
||||
return $storage->touch($key, time() + $ttl); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public function remove($key) { |
||||
$storage = $this->getStorage(); |
||||
return $storage->unlink($key); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue