Merge pull request #12837 from nextcloud/backport/12821/stable15
[stable15] Add setup check for recommended PHP modules (i.e. Imagick, intl)
This commit is contained in:
commit
328f93f66d
|
@ -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(
|
||||
|
@ -340,7 +353,7 @@
|
|||
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
|
||||
})
|
||||
}
|
||||
if (data.isPhpMailerUsed) {
|
||||
if (data.isPHPMailerUsed) {
|
||||
messages.push({
|
||||
msg: t(
|
||||
'core',
|
||||
|
|
|
@ -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: []
|
||||
})
|
||||
);
|
||||
|
||||
|
|
|
@ -527,7 +527,7 @@ Raw output
|
|||
return [];
|
||||
}
|
||||
|
||||
protected function isPhpMailerUsed(): bool {
|
||||
protected function isPHPMailerUsed(): bool {
|
||||
return $this->config->getSystemValue('mail_smtpmode', 'smtp') === 'php';
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -617,10 +638,11 @@ Raw output
|
|||
'missingIndexes' => $this->hasMissingIndexes(),
|
||||
'isSqliteUsed' => $this->isSqliteUsed(),
|
||||
'databaseConversionDocumentation' => $this->urlGenerator->linkToDocs('admin-db-conversion'),
|
||||
'isPhpMailerUsed' => $this->isPhpMailerUsed(),
|
||||
'isPHPMailerUsed' => $this->isPHPMailerUsed(),
|
||||
'mailSettingsDocumentation' => $this->urlGenerator->getAbsoluteURL('index.php/settings/admin'),
|
||||
'isMemoryLimitSufficient' => $this->memoryInfo->isMemoryLimitSufficient(),
|
||||
'appDirsWithDifferentOwner' => $this->getAppDirsWithDifferentOwner(),
|
||||
'recommendedPHPModules' => $this->hasRecommendedPHPModules(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -155,9 +155,10 @@ class CheckSetupControllerTest extends TestCase {
|
|||
'hasFreeTypeSupport',
|
||||
'hasMissingIndexes',
|
||||
'isSqliteUsed',
|
||||
'isPhpMailerUsed',
|
||||
'isPHPMailerUsed',
|
||||
'hasOpcacheLoaded',
|
||||
'getAppDirsWithDifferentOwner',
|
||||
'hasRecommendedPHPModules',
|
||||
])->getMock();
|
||||
}
|
||||
|
||||
|
@ -472,7 +473,7 @@ class CheckSetupControllerTest extends TestCase {
|
|||
]);
|
||||
$this->checkSetupController
|
||||
->expects($this->once())
|
||||
->method('isPhpMailerUsed')
|
||||
->method('isPHPMailerUsed')
|
||||
->willReturn(false);
|
||||
$this->checker
|
||||
->expects($this->once())
|
||||
|
@ -487,6 +488,11 @@ class CheckSetupControllerTest extends TestCase {
|
|||
->method('getAppDirsWithDifferentOwner')
|
||||
->willReturn([]);
|
||||
|
||||
$this->checkSetupController
|
||||
->expects($this->once())
|
||||
->method('hasRecommendedPHPModules')
|
||||
->willReturn([]);
|
||||
|
||||
$expected = new DataResponse(
|
||||
[
|
||||
'isGetenvServerWorking' => true,
|
||||
|
@ -525,16 +531,17 @@ class CheckSetupControllerTest extends TestCase {
|
|||
'isSqliteUsed' => false,
|
||||
'databaseConversionDocumentation' => 'http://docs.example.org/server/go.php?to=admin-db-conversion',
|
||||
'missingIndexes' => [],
|
||||
'isPhpMailerUsed' => false,
|
||||
'isPHPMailerUsed' => false,
|
||||
'mailSettingsDocumentation' => 'https://server/index.php/settings/admin',
|
||||
'isMemoryLimitSufficient' => true,
|
||||
'appDirsWithDifferentOwner' => [],
|
||||
'recommendedPHPModules' => [],
|
||||
]
|
||||
);
|
||||
$this->assertEquals($expected, $this->checkSetupController->check());
|
||||
}
|
||||
|
||||
public function testIsPhpMailerUsed() {
|
||||
public function testIsPHPMailerUsed() {
|
||||
$checkSetupController = $this->getMockBuilder('\OC\Settings\Controller\CheckSetupController')
|
||||
->setConstructorArgs([
|
||||
'settings',
|
||||
|
@ -564,8 +571,8 @@ class CheckSetupControllerTest extends TestCase {
|
|||
->with('mail_smtpmode', 'smtp')
|
||||
->will($this->returnValue('not-php'));
|
||||
|
||||
$this->assertTrue($this->invokePrivate($checkSetupController, 'isPhpMailerUsed'));
|
||||
$this->assertFalse($this->invokePrivate($checkSetupController, 'isPhpMailerUsed'));
|
||||
$this->assertTrue($this->invokePrivate($checkSetupController, 'isPHPMailerUsed'));
|
||||
$this->assertFalse($this->invokePrivate($checkSetupController, 'isPHPMailerUsed'));
|
||||
}
|
||||
|
||||
public function testGetCurlVersion() {
|
||||
|
|
Loading…
Reference in New Issue