summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2018-01-31 16:23:11 +0100
committerGitHub <noreply@github.com>2018-01-31 16:23:11 +0100
commit367b5a794df0b7be76a60c5c2f3329859941897a (patch)
treeb1373533c33b697e4df61404a65725219dd4223d /lib
parentc95f6a1dc99f7384a7f3cced0f749959edbc8164 (diff)
parent3fa92a03e587a7c899da56b5b464e6c482ddf093 (diff)
downloadnextcloud-server-367b5a794df0b7be76a60c5c2f3329859941897a.tar.gz
nextcloud-server-367b5a794df0b7be76a60c5c2f3329859941897a.zip
Merge pull request #8097 from nextcloud/deprecate-static-app
Deprecate static methods from \OCP\App
Diffstat (limited to 'lib')
-rw-r--r--lib/private/App/AppManager.php50
-rw-r--r--lib/private/App/CodeChecker/DeprecationCheck.php8
-rw-r--r--lib/private/Installer.php3
-rw-r--r--lib/private/legacy/app.php120
-rw-r--r--lib/public/App.php50
-rw-r--r--lib/public/App/IAppManager.php20
6 files changed, 86 insertions, 165 deletions
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index f2b396b29d0..0e921ba1b7f 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -80,6 +80,12 @@ class AppManager implements IAppManager {
/** @var string[] */
private $alwaysEnabled;
+ /** @var array */
+ private $appInfos = [];
+
+ /** @var array */
+ private $appVersions = [];
+
/**
* @param IUserSession $userSession
* @param AppConfig $appConfig
@@ -341,17 +347,45 @@ class AppManager implements IAppManager {
*
* @param string $appId app id
*
+ * @param bool $path
+ * @param null $lang
* @return array app info
- *
- * @internal
*/
- public function getAppInfo($appId) {
- $appInfo = \OC_App::getAppInfo($appId);
- if (!isset($appInfo['version'])) {
- // read version from separate file
- $appInfo['version'] = \OC_App::getAppVersion($appId);
+ public function getAppInfo(string $appId, bool $path = false, $lang = null) {
+ if ($path) {
+ $file = $appId;
+ } else {
+ if ($lang === null && isset($this->appInfos[$appId])) {
+ return $this->appInfos[$appId];
+ }
+ try {
+ $appPath = $this->getAppPath($appId);
+ } catch (AppPathNotFoundException $e) {
+ return null;
+ }
+ $file = $appPath . '/appinfo/info.xml';
+ }
+
+ $parser = new InfoParser($this->memCacheFactory->createLocal('core.appinfo'));
+ $data = $parser->parse($file);
+
+ if (is_array($data)) {
+ $data = \OC_App::parseAppInfo($data, $lang);
+ }
+
+ if ($lang === null) {
+ $this->appInfos[$appId] = $data;
+ }
+
+ return $data;
+ }
+
+ public function getAppVersion(string $appId, bool $useCache = true) {
+ if(!$useCache || !isset($this->appVersions[$appId])) {
+ $appInfo = \OC::$server->getAppManager()->getAppInfo($appId);
+ $this->appVersions[$appId] = ($appInfo !== null) ? $appInfo['version'] : '0';
}
- return $appInfo;
+ return $this->appVersions[$appId];
}
/**
diff --git a/lib/private/App/CodeChecker/DeprecationCheck.php b/lib/private/App/CodeChecker/DeprecationCheck.php
index a7cba692cf8..c337e71f27e 100644
--- a/lib/private/App/CodeChecker/DeprecationCheck.php
+++ b/lib/private/App/CodeChecker/DeprecationCheck.php
@@ -46,6 +46,7 @@ class DeprecationCheck extends AbstractCheck {
'OCP\AppFramework\IApi' => '8.0.0',
'OCP\User' => '13.0.0',
'OCP\BackgroundJob' => '14.0.0',
+ 'OCP\App' => '14.0.0',
];
}
@@ -102,6 +103,13 @@ class DeprecationCheck extends AbstractCheck {
'OCP\App::addNavigationEntry' => '8.1.0',
'OCP\App::getActiveNavigationEntry' => '8.2.0',
'OCP\App::setActiveNavigationEntry' => '8.1.0',
+ 'OCP\App::registerPersonal' => '14.0.0',
+ 'OCP\App::registerAdmin' => '14.0.0',
+ 'OC_App::getAppInfo' => '14.0.0',
+ 'OCP\App::getAppInfo' => '14.0.0',
+ 'OC_App::getAppVersion' => '14.0.0',
+ 'OCP\App::getAppVersion' => '14.0.0',
+ 'OCP\App::registerPersonal' => '14.0.0',
'OCP\AppFramework\Controller::params' => '7.0.0',
'OCP\AppFramework\Controller::getParams' => '7.0.0',
diff --git a/lib/private/Installer.php b/lib/private/Installer.php
index 6a78ea329cc..ad2dcb60f20 100644
--- a/lib/private/Installer.php
+++ b/lib/private/Installer.php
@@ -471,6 +471,9 @@ class Installer {
*/
public function removeApp($appId) {
if($this->isDownloaded( $appId )) {
+ if (\OC::$server->getAppManager()->isShipped($appId)) {
+ return false;
+ }
$appDir = OC_App::getInstallPath() . '/' . $appId;
OC_Helper::rmdirr($appDir);
return true;
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index f8f49d22115..b19d63f560e 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -50,7 +50,6 @@
*
*/
use OC\App\DependencyAnalyzer;
-use OC\App\InfoParser;
use OC\App\Platform;
use OC\DB\MigrationService;
use OC\Installer;
@@ -63,10 +62,8 @@ use OCP\App\ManagerEvent;
* upgrading and removing apps.
*/
class OC_App {
- static private $appVersion = [];
static private $adminForms = array();
static private $personalForms = array();
- static private $appInfo = array();
static private $appTypes = array();
static private $loadedApps = array();
static private $altLogin = array();
@@ -423,19 +420,6 @@ class OC_App {
}
/**
- * @param string $app
- * @return bool
- */
- public static function removeApp($app) {
- if (\OC::$server->getAppManager()->isShipped($app)) {
- return false;
- }
-
- $installer = \OC::$server->query(Installer::class);
- return $installer->removeApp($app);
- }
-
- /**
* This function set an app as disabled in appconfig.
*
* @param string $app app
@@ -590,15 +574,10 @@ class OC_App {
* @param string $appId
* @param bool $useCache
* @return string
+ * @deprecated 14.0.0 use \OC::$server->getAppManager()->getAppVersion()
*/
public static function getAppVersion($appId, $useCache = true) {
- if($useCache && isset(self::$appVersion[$appId])) {
- return self::$appVersion[$appId];
- }
-
- $file = self::getAppPath($appId);
- self::$appVersion[$appId] = ($file !== false) ? self::getAppVersionByPath($file) : '0';
- return self::$appVersion[$appId];
+ return \OC::$server->getAppManager()->getAppVersion($appId, $useCache);
}
/**
@@ -609,7 +588,7 @@ class OC_App {
*/
public static function getAppVersionByPath($path) {
$infoFile = $path . '/appinfo/info.xml';
- $appData = self::getAppInfo($infoFile, true);
+ $appData = \OC::$server->getAppManager()->getAppInfo($infoFile, true);
return isset($appData['version']) ? $appData['version'] : '';
}
@@ -622,39 +601,10 @@ class OC_App {
* @param string $lang
* @return array|null
* @note all data is read from info.xml, not just pre-defined fields
+ * @deprecated 14.0.0 use \OC::$server->getAppManager()->getAppInfo()
*/
public static function getAppInfo($appId, $path = false, $lang = null) {
- if ($path) {
- $file = $appId;
- } else {
- if ($lang === null && isset(self::$appInfo[$appId])) {
- return self::$appInfo[$appId];
- }
- $appPath = self::getAppPath($appId);
- if($appPath === false) {
- return null;
- }
- $file = $appPath . '/appinfo/info.xml';
- }
-
- $parser = new InfoParser(\OC::$server->getMemCacheFactory()->createLocal('core.appinfo'));
- $data = $parser->parse($file);
-
- if (is_array($data)) {
- $data = OC_App::parseAppInfo($data, $lang);
- }
- if(isset($data['ocsid'])) {
- $storedId = \OC::$server->getConfig()->getAppValue($appId, 'ocsid');
- if($storedId !== '' && $storedId !== $data['ocsid']) {
- $data['ocsid'] = $storedId;
- }
- }
-
- if ($lang === null) {
- self::$appInfo[$appId] = $data;
- }
-
- return $data;
+ return \OC::$server->getAppManager()->getAppInfo($appId, $path, $lang);
}
/**
@@ -987,63 +937,6 @@ class OC_App {
}
/**
- * @param string $app
- * @param \OCP\IConfig $config
- * @param \OCP\IL10N $l
- * @return bool
- *
- * @throws Exception if app is not compatible with this version of ownCloud
- * @throws Exception if no app-name was specified
- */
- public function installApp($app,
- \OCP\IConfig $config,
- \OCP\IL10N $l) {
- if ($app !== false) {
- // check if the app is compatible with this version of ownCloud
- $info = self::getAppInfo($app);
- if(!is_array($info)) {
- throw new \Exception(
- $l->t('App "%s" cannot be installed because appinfo file cannot be read.',
- [$info['name']]
- )
- );
- }
-
- $version = \OCP\Util::getVersion();
- if (!self::isAppCompatible($version, $info)) {
- throw new \Exception(
- $l->t('App "%s" cannot be installed because it is not compatible with this version of the server.',
- array($info['name'])
- )
- );
- }
-
- // check for required dependencies
- self::checkAppDependencies($config, $l, $info);
-
- $config->setAppValue($app, 'enabled', 'yes');
- if (isset($appData['id'])) {
- $config->setAppValue($app, 'ocsid', $appData['id']);
- }
-
- if(isset($info['settings']) && is_array($info['settings'])) {
- $appPath = self::getAppPath($app);
- self::registerAutoloading($app, $appPath);
- }
-
- \OC_Hook::emit('OC_App', 'post_enable', array('app' => $app));
- } else {
- if(empty($appName) ) {
- throw new \Exception($l->t("No app name specified"));
- } else {
- throw new \Exception($l->t("App '%s' could not be installed!", $appName));
- }
- }
-
- return $app;
- }
-
- /**
* update the database for the app and call the update script
*
* @param string $appId
@@ -1068,7 +961,8 @@ class OC_App {
self::executeRepairSteps($appId, $appData['repair-steps']['post-migration']);
self::setupLiveMigrations($appId, $appData['repair-steps']['live-migration']);
- unset(self::$appVersion[$appId]);
+ // update appversion in app manager
+ \OC::$server->getAppManager()->getAppVersion($appId, false);
// run upgrade code
if (file_exists($appPath . '/appinfo/update.php')) {
diff --git a/lib/public/App.php b/lib/public/App.php
index 3afd36f2c96..29805df6ace 100644
--- a/lib/public/App.php
+++ b/lib/public/App.php
@@ -40,52 +40,10 @@ namespace OCP;
/**
* This class provides functions to manage apps in ownCloud
* @since 4.0.0
+ * @deprecated 14.0.0
*/
class App {
- /**
- * Adds an entry to the navigation
- *
- * This function adds a new entry to the navigation visible to users. $data
- * is an associative array.
- * The following keys are required:
- * - id: unique id for this entry ('addressbook_index')
- * - href: link to the page
- * - name: Human readable name ('Addressbook')
- *
- * The following keys are optional:
- * - icon: path to the icon of the app
- * - order: integer, that influences the position of your application in
- * the navigation. Lower values come first.
- *
- * @param array $data containing the data
- * @return boolean
- *
- * @deprecated 8.1.0 Use \OC::$server->getNavigationManager()->add() instead to
- * register a closure, this helps to speed up all requests against ownCloud
- * @since 4.0.0
- */
- public static function addNavigationEntry($data) {
- \OC::$server->getNavigationManager()->add($data);
- return true;
- }
-
- /**
- * Marks a navigation entry as active
- * @param string $id id of the entry
- * @return boolean
- *
- * This function sets a navigation entry as active and removes the 'active'
- * property from all other entries. The templates can use this for
- * highlighting the current position of the user.
- *
- * @deprecated 8.1.0 Use \OC::$server->getNavigationManager()->setActiveEntry() instead
- * @since 4.0.0
- */
- public static function setActiveNavigationEntry( $id ) {
- \OC::$server->getNavigationManager()->setActiveEntry($id);
- return true;
- }
/**
* Register a Configuration Screen that should appear in the personal settings section.
@@ -93,6 +51,7 @@ class App {
* @param string $page page to be included
* @return void
* @since 4.0.0
+ * @deprecated 14.0.0 Use settings section in appinfo.xml to register personal admin sections
*/
public static function registerPersonal( $app, $page ) {
\OC_App::registerPersonal( $app, $page );
@@ -104,6 +63,7 @@ class App {
* @param string $page string page to be included
* @return void
* @since 4.0.0
+ * @deprecated 14.0.0 Use settings section in appinfo.xml to register admin sections
*/
public static function registerAdmin( $app, $page ) {
\OC_App::registerAdmin( $app, $page );
@@ -114,6 +74,7 @@ class App {
* @param string $app id of the app or the path of the info.xml file
* @param boolean $path (optional)
* @return array|null
+ * @deprecated 14.0.0 ise \OC::$server->getAppManager()->getAppInfo($appId)
* @since 4.0.0
*/
public static function getAppInfo( $app, $path=false ) {
@@ -148,8 +109,9 @@ class App {
* @param string $app
* @return string
* @since 4.0.0
+ * @deprecated 14.0.0 use \OC::$server->getAppManager()->getAppVersion($appId)
*/
public static function getAppVersion( $app ) {
- return \OC_App::getAppVersion( $app );
+ return \OC::$server->getAppManager()->getAppVersion($app);
}
}
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index f602a6de81e..0c087b61515 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -36,6 +36,26 @@ use OCP\IUser;
* @since 8.0.0
*/
interface IAppManager {
+
+ /**
+ * Returns the app information from "appinfo/info.xml".
+ *
+ * @param string $appId
+ * @return mixed
+ * @since 14.0.0
+ */
+ public function getAppInfo(string $appId, bool $path = false, $lang = null);
+
+ /**
+ * Returns the app information from "appinfo/info.xml".
+ *
+ * @param string $appId
+ * @param bool $useCache
+ * @return mixed
+ * @since 14.0.0
+ */
+ public function getAppVersion(string $appId, bool $useCache = true);
+
/**
* Check if an app is enabled for user
*