Browse Source

Add setup check for recommended PHP modules (i.e. Imagick, intl)

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
tags/v16.0.0alpha1
Morris Jobke 5 years ago
parent
commit
f5ad80fc57
No account linked to committer's email address

+ 13
- 0
core/js/setupchecks.js View File

@@ -324,6 +324,19 @@
type: OC.SetupChecks.MESSAGE_TYPE_INFO
})
}
if (data.recommendedPHPModules.length > 0) {
var listOfRecommendedPHPModules = "";
data.recommendedPHPModules.forEach(function(element){
listOfRecommendedPHPModules += "<li>" + element + "</li>";
});
messages.push({
msg: t(
'core',
'This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them.'
) + "<ul><code>" + listOfRecommendedPHPModules + "</code></ul>",
type: OC.SetupChecks.MESSAGE_TYPE_INFO
})
}
if (data.isSqliteUsed) {
messages.push({
msg: t(

+ 25
- 12
core/js/tests/specs/setupchecksSpec.js View File

@@ -210,7 +210,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -259,7 +260,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -309,7 +311,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -357,7 +360,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -403,7 +407,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -451,7 +456,8 @@ describe('OC.SetupChecks tests', function() {
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: [
'/some/path'
]
],
recommendedPHPModules: []
})
);

@@ -497,7 +503,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -543,7 +550,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -589,6 +597,7 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
appDirsWithDifferentOwner: [],
recommendedPHPModules: [],
isMemoryLimitSufficient: false
})
);
@@ -656,7 +665,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -703,7 +713,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -750,7 +761,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);

@@ -797,7 +809,8 @@ describe('OC.SetupChecks tests', function() {
diffInSeconds: 0
},
isMemoryLimitSufficient: true,
appDirsWithDifferentOwner: []
appDirsWithDifferentOwner: [],
recommendedPHPModules: []
})
);


+ 22
- 0
settings/Controller/CheckSetupController.php View File

@@ -582,6 +582,27 @@ Raw output
return $appDirsWithDifferentOwner;
}

/**
* Checks for potential PHP modules that would improve the instance
*
* @return string[] A list of PHP modules that is recommended
*/
protected function hasRecommendedPHPModules(): array {
$recommendedPHPModules = [];

if (!function_exists('grapheme_strlen')) {
$recommendedPHPModules[] = 'intl';
}

if ($this->config->getAppValue('theming', 'enabled', 'no') === 'yes') {
if (!extension_loaded('imagick')) {
$recommendedPHPModules[] = 'imagick';
}
}

return $recommendedPHPModules;
}

/**
* @return DataResponse
*/
@@ -621,6 +642,7 @@ Raw output
'mailSettingsDocumentation' => $this->urlGenerator->getAbsoluteURL('index.php/settings/admin'),
'isMemoryLimitSufficient' => $this->memoryInfo->isMemoryLimitSufficient(),
'appDirsWithDifferentOwner' => $this->getAppDirsWithDifferentOwner(),
'recommendedPHPModules' => $this->hasRecommendedPHPModules(),
]
);
}

+ 7
- 0
tests/Settings/Controller/CheckSetupControllerTest.php View File

@@ -158,6 +158,7 @@ class CheckSetupControllerTest extends TestCase {
'isPhpMailerUsed',
'hasOpcacheLoaded',
'getAppDirsWithDifferentOwner',
'hasRecommendedPHPModules',
])->getMock();
}

@@ -487,6 +488,11 @@ class CheckSetupControllerTest extends TestCase {
->method('getAppDirsWithDifferentOwner')
->willReturn([]);

$this->checkSetupController
->expects($this->once())
->method('hasRecommendedPHPModules')
->willReturn([]);

$expected = new DataResponse(
[
'isGetenvServerWorking' => true,
@@ -529,6 +535,7 @@ class CheckSetupControllerTest extends TestCase {
'mailSettingsDocumentation' => 'https://server/index.php/settings/admin',
'isMemoryLimitSufficient' => true,
'appDirsWithDifferentOwner' => [],
'recommendedPHPModules' => [],
]
);
$this->assertEquals($expected, $this->checkSetupController->check());

Loading…
Cancel
Save