|
@@ -37,15 +37,19 @@
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
+namespace OC;
|
|
|
+
|
|
|
use OC\App\CodeChecker\CodeChecker;
|
|
|
use OC\App\CodeChecker\EmptyCheck;
|
|
|
use OC\App\CodeChecker\PrivateCheck;
|
|
|
-use OC\OCSClient;
|
|
|
+use OC_App;
|
|
|
+use OC_DB;
|
|
|
+use OC_Helper;
|
|
|
|
|
|
/**
|
|
|
* This class provides the functionality needed to install, update and remove plugins/apps
|
|
|
*/
|
|
|
-class OC_Installer {
|
|
|
+class Installer {
|
|
|
|
|
|
/**
|
|
|
*
|
|
@@ -138,15 +142,15 @@ class OC_Installer {
|
|
|
OC_App::executeRepairSteps($appId, $appData['repair-steps']['install']);
|
|
|
|
|
|
//set the installed version
|
|
|
- \OC::$server->getAppConfig()->setValue($info['id'], 'installed_version', OC_App::getAppVersion($info['id']));
|
|
|
- \OC::$server->getAppConfig()->setValue($info['id'], 'enabled', 'no');
|
|
|
+ \OC::$server->getConfig()->setAppValue($info['id'], 'installed_version', OC_App::getAppVersion($info['id']));
|
|
|
+ \OC::$server->getConfig()->setAppValue($info['id'], 'enabled', 'no');
|
|
|
|
|
|
- //set remote/public handelers
|
|
|
+ //set remote/public handlers
|
|
|
foreach($info['remote'] as $name=>$path) {
|
|
|
- OCP\Config::setAppValue('core', 'remote_'.$name, $info['id'].'/'.$path);
|
|
|
+ \OC::$server->getConfig()->setAppValue('core', 'remote_'.$name, $info['id'].'/'.$path);
|
|
|
}
|
|
|
foreach($info['public'] as $name=>$path) {
|
|
|
- OCP\Config::setAppValue('core', 'public_'.$name, $info['id'].'/'.$path);
|
|
|
+ \OC::$server->getConfig()->setAppValue('core', 'public_'.$name, $info['id'].'/'.$path);
|
|
|
}
|
|
|
|
|
|
OC_App::setAppTypes($info['id']);
|
|
@@ -161,15 +165,15 @@ class OC_Installer {
|
|
|
*
|
|
|
* Checks whether or not an app is installed, i.e. registered in apps table.
|
|
|
*/
|
|
|
- public static function isInstalled( $app ) {
|
|
|
- return (\OC::$server->getAppConfig()->getValue($app, "installed_version") !== null);
|
|
|
+ public static function isInstalled( $app ) {
|
|
|
+ return (\OC::$server->getConfig()->getAppValue($app, "installed_version", null) !== null);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Update an application
|
|
|
* @param array $info
|
|
|
* @param bool $isShipped
|
|
|
- * @throws Exception
|
|
|
+ * @throws \Exception
|
|
|
* @return bool
|
|
|
*
|
|
|
* This function could work like described below, but currently it disables and then
|
|
@@ -232,7 +236,7 @@ class OC_Installer {
|
|
|
*
|
|
|
* @param integer $ocsId
|
|
|
* @return bool
|
|
|
- * @throws Exception
|
|
|
+ * @throws \Exception
|
|
|
*/
|
|
|
public static function updateAppByOCSId($ocsId) {
|
|
|
$ocsClient = new OCSClient(
|
|
@@ -260,7 +264,7 @@ class OC_Installer {
|
|
|
/**
|
|
|
* @param array $data
|
|
|
* @return array
|
|
|
- * @throws Exception
|
|
|
+ * @throws \Exception
|
|
|
*/
|
|
|
public static function downloadApp($data = array()) {
|
|
|
$l = \OC::$server->getL10N('lib');
|
|
@@ -296,7 +300,7 @@ class OC_Installer {
|
|
|
$extractDir = \OC::$server->getTempManager()->getTemporaryFolder();
|
|
|
OC_Helper::rmdirr($extractDir);
|
|
|
mkdir($extractDir);
|
|
|
- if($archive=OC_Archive::open($path)) {
|
|
|
+ if($archive=\OC_Archive::open($path)) {
|
|
|
$archive->extract($extractDir);
|
|
|
} else {
|
|
|
OC_Helper::rmdirr($extractDir);
|
|
@@ -378,7 +382,7 @@ class OC_Installer {
|
|
|
}
|
|
|
|
|
|
// check the code for not allowed calls
|
|
|
- if(!$isShipped && !OC_Installer::checkCode($extractDir)) {
|
|
|
+ if(!$isShipped && !Installer::checkCode($extractDir)) {
|
|
|
OC_Helper::rmdirr($extractDir);
|
|
|
throw new \Exception($l->t("App can't be installed because of not allowed code in the App"));
|
|
|
}
|
|
@@ -460,7 +464,7 @@ class OC_Installer {
|
|
|
* The function will check if the app is already downloaded in the apps repository
|
|
|
*/
|
|
|
public static function isDownloaded( $name ) {
|
|
|
- foreach(OC::$APPSROOTS as $dir) {
|
|
|
+ foreach(\OC::$APPSROOTS as $dir) {
|
|
|
$dirToTest = $dir['path'];
|
|
|
$dirToTest .= '/';
|
|
|
$dirToTest .= $name;
|
|
@@ -494,7 +498,7 @@ class OC_Installer {
|
|
|
OC_App::executeRepairSteps($appId, $appData['repair-steps']['uninstall']);
|
|
|
}
|
|
|
|
|
|
- if(OC_Installer::isDownloaded( $appId )) {
|
|
|
+ if(Installer::isDownloaded( $appId )) {
|
|
|
$appDir=OC_App::getInstallPath() . '/' . $appId;
|
|
|
OC_Helper::rmdirr($appDir);
|
|
|
|
|
@@ -517,25 +521,25 @@ class OC_Installer {
|
|
|
*/
|
|
|
public static function installShippedApps($softErrors = false) {
|
|
|
$errors = [];
|
|
|
- foreach(OC::$APPSROOTS as $app_dir) {
|
|
|
+ foreach(\OC::$APPSROOTS as $app_dir) {
|
|
|
if($dir = opendir( $app_dir['path'] )) {
|
|
|
while( false !== ( $filename = readdir( $dir ))) {
|
|
|
if( substr( $filename, 0, 1 ) != '.' and is_dir($app_dir['path']."/$filename") ) {
|
|
|
if( file_exists( $app_dir['path']."/$filename/appinfo/info.xml" )) {
|
|
|
- if(!OC_Installer::isInstalled($filename)) {
|
|
|
+ if(!Installer::isInstalled($filename)) {
|
|
|
$info=OC_App::getAppInfo($filename);
|
|
|
$enabled = isset($info['default_enable']);
|
|
|
if (($enabled || in_array($filename, \OC::$server->getAppManager()->getAlwaysEnabledApps()))
|
|
|
&& \OC::$server->getConfig()->getAppValue($filename, 'enabled') !== 'no') {
|
|
|
if ($softErrors) {
|
|
|
try {
|
|
|
- OC_Installer::installShippedApp($filename);
|
|
|
+ Installer::installShippedApp($filename);
|
|
|
} catch (\Doctrine\DBAL\Exception\TableExistsException $e) {
|
|
|
$errors[$filename] = $e;
|
|
|
continue;
|
|
|
}
|
|
|
} else {
|
|
|
- OC_Installer::installShippedApp($filename);
|
|
|
+ Installer::installShippedApp($filename);
|
|
|
}
|
|
|
\OC::$server->getConfig()->setAppValue($filename, 'enabled', 'yes');
|
|
|
}
|