diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2015-01-23 15:37:15 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2015-02-13 11:36:34 +0100 |
commit | c02de748e56b559b7429f232d5d07606e90d4b44 (patch) | |
tree | a0f11323bfcab27e6981e3b8fc1c129b01a92a9c /lib/private/activitymanager.php | |
parent | 6b1ed4d688eae09452c1c52a31c5887444ea81ca (diff) | |
download | nextcloud-server-c02de748e56b559b7429f232d5d07606e90d4b44.tar.gz nextcloud-server-c02de748e56b559b7429f232d5d07606e90d4b44.zip |
Cache some values from the extensions
Diffstat (limited to 'lib/private/activitymanager.php')
-rw-r--r-- | lib/private/activitymanager.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/private/activitymanager.php b/lib/private/activitymanager.php index 70bd227b417..b7999d0216a 100644 --- a/lib/private/activitymanager.php +++ b/lib/private/activitymanager.php @@ -25,6 +25,15 @@ class ActivityManager implements IManager { */ private $extensions = array(); + /** @var array list of filters "name" => "is valid" */ + protected $validFilters = array(); + + /** @var array list of type icons "type" => "css class" */ + protected $typeIcons = array(); + + /** @var array list of special parameters "app" => ["text" => ["parameter" => "type"]] */ + protected $specialParameters = array(); + /** * @param $app * @param $subject @@ -173,16 +182,26 @@ class ActivityManager implements IManager { * @return array|false */ function getSpecialParameterList($app, $text) { + if (isset($this->specialParameters[$app][$text])) { + return $this->specialParameters[$app][$text]; + } + + if (!isset($this->specialParameters[$app])) { + $this->specialParameters[$app] = array(); + } + foreach($this->extensions as $extension) { $c = $extension(); if ($c instanceof IExtension) { $specialParameter = $c->getSpecialParameterList($app, $text); if (is_array($specialParameter)) { + $this->specialParameters[$app][$text] = $specialParameter; return $specialParameter; } } } + $this->specialParameters[$app][$text] = false; return false; } @@ -191,16 +210,22 @@ class ActivityManager implements IManager { * @return string */ function getTypeIcon($type) { + if (isset($this->typeIcons[$type])) { + return $this->typeIcons[$type]; + } + foreach($this->extensions as $extension) { $c = $extension(); if ($c instanceof IExtension) { $icon = $c->getTypeIcon($type); if (is_string($icon)) { + $this->typeIcons[$type] = $icon; return $icon; } } } + $this->typeIcons[$type] = ''; return ''; } @@ -249,15 +274,21 @@ class ActivityManager implements IManager { * @return boolean */ function isFilterValid($filterValue) { + if (isset($this->validFilters[$filterValue])) { + return $this->validFilters[$filterValue]; + } + foreach($this->extensions as $extension) { $c = $extension(); if ($c instanceof IExtension) { if ($c->isFilterValid($filterValue) === true) { + $this->validFilters[$filterValue] = true; return true; } } } + $this->validFilters[$filterValue] = false; return false; } |