|
|
|
|
@ -531,8 +531,12 @@ class OC_Installer{
|
|
|
|
|
* Installs shipped apps
|
|
|
|
|
*
|
|
|
|
|
* This function installs all apps found in the 'apps' directory that should be enabled by default;
|
|
|
|
|
* @param bool $softErrors When updating we ignore errors and simply log them, better to have a
|
|
|
|
|
* working ownCloud at the end instead of an aborted update.
|
|
|
|
|
* @return array Array of error messages (appid => Exception)
|
|
|
|
|
*/
|
|
|
|
|
public static function installShippedApps() {
|
|
|
|
|
public static function installShippedApps($softErrors = false) {
|
|
|
|
|
$errors = [];
|
|
|
|
|
foreach(OC::$APPSROOTS as $app_dir) {
|
|
|
|
|
if($dir = opendir( $app_dir['path'] )) {
|
|
|
|
|
while( false !== ( $filename = readdir( $dir ))) {
|
|
|
|
|
@ -543,7 +547,16 @@ class OC_Installer{
|
|
|
|
|
$enabled = isset($info['default_enable']);
|
|
|
|
|
if (($enabled || in_array($filename, \OC::$server->getAppManager()->getAlwaysEnabledApps()))
|
|
|
|
|
&& \OC::$server->getConfig()->getAppValue($filename, 'enabled') !== 'no') {
|
|
|
|
|
OC_Installer::installShippedApp($filename);
|
|
|
|
|
if ($softErrors) {
|
|
|
|
|
try {
|
|
|
|
|
OC_Installer::installShippedApp($filename);
|
|
|
|
|
} catch (\Doctrine\DBAL\Exception\TableExistsException $e) {
|
|
|
|
|
$errors[$filename] = $e;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
OC_Installer::installShippedApp($filename);
|
|
|
|
|
}
|
|
|
|
|
\OC::$server->getConfig()->setAppValue($filename, 'enabled', 'yes');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -553,6 +566,8 @@ class OC_Installer{
|
|
|
|
|
closedir( $dir );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $errors;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|