Allow `{lang}` as a placeholder in the skeleton directory

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2017-11-29 09:50:40 +01:00
parent a0ce2c1204
commit 8e684f76e5
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
2 changed files with 17 additions and 1 deletions

View File

@ -242,6 +242,9 @@ $CONFIG = array(
* The directory where the skeleton files are located. These files will be
* copied to the data directory of new users. Leave empty to not copy any
* skeleton files.
* ``{lang}`` can be used as a placeholder for the language of the user.
* If the directory does not exist, it falls back to non dialect (from ``de_DE``
* to ``de``). If that does not exist either, it falls back to ``en``
*
* Defaults to ``core/skeleton`` in the Nextcloud directory.
*/

View File

@ -379,7 +379,20 @@ class OC_Util {
*/
public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
$skeletonDirectory = \OC::$server->getConfig()->getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
$plainSkeletonDirectory = \OC::$server->getConfig()->getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
$userLang = \OC::$server->getL10NFactory()->findLanguage();
$skeletonDirectory = str_replace('{lang}', $userLang, $plainSkeletonDirectory);
if (!file_exists($skeletonDirectory)) {
$dialectStart = strpos($userLang, '_');
if ($dialectStart !== false) {
$skeletonDirectory = str_replace('{lang}', substr($userLang, 0, $dialectStart), $plainSkeletonDirectory);
}
if ($dialectStart === false || !file_exists($skeletonDirectory)) {
$skeletonDirectory = str_replace('{lang}', 'en', $plainSkeletonDirectory);
}
}
$instanceId = \OC::$server->getConfig()->getSystemValue('instanceid', '');
if ($instanceId === null) {