Fix issue with base user upload subdir not existing - refs BT#9901 #TMI

1.10.x
Yannick Warnier 10 years ago
parent c7031b7c63
commit 94897227f2
  1. 15
      main/inc/lib/usermanager.lib.php

@ -1383,6 +1383,9 @@ class UserManager
/**
* Get user path from user ID (returns an array).
* The return format is a complete path to a folder ending with "/"
* In case the first level of subdirectory of users/ does not exist, the
* function will attempt to create it. Probably not the right place to do it
* but at least it avoids headaches in many other places.
* @param integer $id User ID
* @param string $type Type of path to return (can be 'system', 'web', 'rel', 'last')
* @return string User folder path (i.e. /var/www/chamilo/app/upload/users/1/1/)
@ -1397,6 +1400,18 @@ class UserManager
$userPath = "users/$id/";
if (api_get_setting('split_users_upload_directory') === 'true') {
$userPath = 'users/'.substr((string) $id, 0, 1).'/'.$id.'/';
// In exceptional cases, on some portals, the intermediate base user
// directory might not have been created. Make sure it is before
// going further.
$rootPath = api_get_path(SYS_UPLOAD_PATH) . 'users/' . substr((string) $id, 0, 1);
if (!is_dir($rootPath)) {
$perm = api_get_permissions_for_new_directories();
try {
mkdir($rootPath, $perm);
} catch (Exception $e) {
//
}
}
}
switch ($type) {
case 'system': // Base: absolute system path.

Loading…
Cancel
Save