|
|
@@ -477,16 +477,17 @@ class OC_App { |
|
|
|
* search for an app in all app-directories |
|
|
|
* |
|
|
|
* @param string $appId |
|
|
|
* @param bool $ignoreCache ignore cache and rebuild it |
|
|
|
* @return false|string |
|
|
|
*/ |
|
|
|
public static function findAppInDirectories(string $appId) { |
|
|
|
public static function findAppInDirectories(string $appId, bool $ignoreCache = false) { |
|
|
|
$sanitizedAppId = self::cleanAppId($appId); |
|
|
|
if ($sanitizedAppId !== $appId) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
static $app_dir = []; |
|
|
|
|
|
|
|
if (isset($app_dir[$appId])) { |
|
|
|
if (isset($app_dir[$appId]) && !$ignoreCache) { |
|
|
|
return $app_dir[$appId]; |
|
|
|
} |
|
|
|
|
|
|
@@ -527,15 +528,16 @@ class OC_App { |
|
|
|
* @psalm-taint-specialize |
|
|
|
* |
|
|
|
* @param string $appId |
|
|
|
* @param bool $refreshAppPath should be set to true only during install/upgrade |
|
|
|
* @return string|false |
|
|
|
* @deprecated 11.0.0 use \OC::$server->getAppManager()->getAppPath() |
|
|
|
*/ |
|
|
|
public static function getAppPath(string $appId) { |
|
|
|
public static function getAppPath(string $appId, bool $refreshAppPath = false) { |
|
|
|
if ($appId === null || trim($appId) === '') { |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
if (($dir = self::findAppInDirectories($appId)) != false) { |
|
|
|
if (($dir = self::findAppInDirectories($appId, $refreshAppPath)) != false) { |
|
|
|
return $dir['path'] . '/' . $appId; |
|
|
|
} |
|
|
|
return false; |
|
|
@@ -973,7 +975,9 @@ class OC_App { |
|
|
|
* @return bool |
|
|
|
*/ |
|
|
|
public static function updateApp(string $appId): bool { |
|
|
|
$appPath = self::getAppPath($appId); |
|
|
|
// for apps distributed with core, we refresh app path in case the downloaded version |
|
|
|
// have been installed in custom apps and not in the default path |
|
|
|
$appPath = self::getAppPath($appId, true); |
|
|
|
if ($appPath === false) { |
|
|
|
return false; |
|
|
|
} |