diff --git a/main/inc/lib/api.lib.php b/main/inc/lib/api.lib.php index 85d8bd598b..bc3e9d6c93 100644 --- a/main/inc/lib/api.lib.php +++ b/main/inc/lib/api.lib.php @@ -282,6 +282,7 @@ define('WEB_COURSE_PATH', 'WEB_COURSE_PATH'); define('SYS_COURSE_PATH', 'SYS_COURSE_PATH'); define('REL_COURSE_PATH', 'REL_COURSE_PATH'); define('REL_CODE_PATH', 'REL_CODE_PATH'); +define('REL_UPLOAD_PATH', 'REL_UPLOAD_PATH'); define('WEB_CODE_PATH', 'WEB_CODE_PATH'); define('SYS_CODE_PATH', 'SYS_CODE_PATH'); define('SYS_LANG_PATH', 'SYS_LANG_PATH'); @@ -572,6 +573,7 @@ require_once __DIR__.'/internationalization.lib.php'; * api_get_path(REL_PATH) /chamilo/ * api_get_path(REL_COURSE_PATH) /chamilo/courses/ * api_get_path(REL_CODE_PATH) /chamilo/main/ + * api_get_path(REL_UPLOAD_PATH) /chamilo/app/upload/ * api_get_path(SYS_SERVER_ROOT_PATH) /var/www/ - This is the physical folder where the system Chamilo has been placed. It is not always equal to $_SERVER['DOCUMENT_ROOT']. * api_get_path(SYS_PATH) /var/www/chamilo/ * api_get_path(SYS_APP_PATH) /var/www/chamilo/app/ @@ -642,6 +644,7 @@ function api_get_path($path_type, $path = null) WEB_ARCHIVE_PATH => 'app/cache/', SYS_APP_PATH => 'app/', SYS_UPLOAD_PATH => 'app/upload/', + REL_UPLOAD_PATH => 'app/upload/', INCLUDE_PATH => 'inc/', LIBRARY_PATH => 'inc/lib/', CONFIGURATION_PATH => 'app/config/', @@ -753,6 +756,7 @@ function api_get_path($path_type, $path = null) $paths[REL_CODE_PATH] = $root_rel.$code_folder; $paths[WEB_CODE_PATH] = $root_web.$code_folder; $paths[SYS_CODE_PATH] = $root_sys.$code_folder; + $paths[REL_UPLOAD_PATH] = $root_rel.$paths[SYS_UPLOAD_PATH]; $paths[WEB_DEFAULT_COURSE_DOCUMENT_PATH] = $paths[WEB_CODE_PATH].'default_course_document/'; $paths[REL_DEFAULT_COURSE_DOCUMENT_PATH] = $paths[REL_PATH].'main/default_course_document/'; diff --git a/main/inc/lib/extra_field.lib.php b/main/inc/lib/extra_field.lib.php index 5b977897a6..b3f21c79ed 100755 --- a/main/inc/lib/extra_field.lib.php +++ b/main/inc/lib/extra_field.lib.php @@ -2042,16 +2042,16 @@ EOF; break; case ExtraField::FIELD_TYPE_FILE_IMAGE: if ($valueData !== false && !empty($valueData['value'])) { - if (file_exists(api_get_path(SYS_CODE_PATH) . $valueData['value'])) { + if (file_exists(api_get_path(SYS_UPLOAD_PATH) . $valueData['value'])) { $image = Display::img( - api_get_path(WEB_CODE_PATH) . $valueData['value'], + api_get_path(WEB_UPLOAD_PATH) . $valueData['value'], $field['display_text'], array('width' => '300') ); $displayedValue = Display::url( $image, - api_get_path(WEB_CODE_PATH) . $valueData['value'], + api_get_path(WEB_UPLOAD_PATH) . $valueData['value'], array('target' => '_blank') ); } @@ -2059,10 +2059,10 @@ EOF; break; case ExtraField::FIELD_TYPE_FILE: if ($valueData !== false && !empty($valueData['value'])) { - if (file_exists(api_get_path(SYS_CODE_PATH) . $valueData['value'])) { + if (file_exists(api_get_path(SYS_UPLOAD_PATH) . $valueData['value'])) { $displayedValue = Display::url( get_lang('Download'), - api_get_path(WEB_CODE_PATH) . $valueData['value'], + api_get_path(WEB_UPLOAD_PATH) . $valueData['value'], array( 'title' => $field['display_text'], 'target' => '_blank' diff --git a/main/inc/lib/extra_field_value.lib.php b/main/inc/lib/extra_field_value.lib.php index b316f7b1cb..8b7098ae37 100755 --- a/main/inc/lib/extra_field_value.lib.php +++ b/main/inc/lib/extra_field_value.lib.php @@ -165,12 +165,15 @@ class ExtraFieldValue extends Model switch ($this->type) { case 'course': $fileDir = api_get_path(SYS_UPLOAD_PATH)."courses/"; + $fileDirStored = "courses/"; break; case 'session': $fileDir = api_get_path(SYS_UPLOAD_PATH)."sessions/"; + $fileDirStored = "sessions/"; break; case 'user': $fileDir = UserManager::getUserPathById($params['item_id'], 'system'); + $fileDirStored = UserManager::getUserPathById($params['item_id'], 'last'); break; } @@ -183,11 +186,10 @@ class ExtraFieldValue extends Model if ($value['error'] == 0) { $imageExtraField = new Image($value['tmp_name']); $imageExtraField->send_image($fileDir . $fileName, -1, 'png'); - $newParams = array( 'item_id' => $params['item_id'], 'field_id' => $extraFieldInfo['id'], - 'value' => $fileDir . $fileName, + 'value' => $fileDirStored . $fileName, 'comment' => $comment ); @@ -200,18 +202,20 @@ class ExtraFieldValue extends Model switch ($this->type) { case 'course': $fileDir = api_get_path(SYS_UPLOAD_PATH)."courses/"; + $fileDirStored = "courses/"; break; case 'session': $fileDir = api_get_path(SYS_UPLOAD_PATH)."sessions/"; + $fileDirStored = "sessions/"; break; case 'user': $fileDir = UserManager::getUserPathById($params['item_id'], 'system'); + $fileDirStored = UserManager::getUserPathById($params['item_id'], 'last'); break; } $cleanedName = api_replace_dangerous_char($value['name']); $fileName = ExtraField::FIELD_TYPE_FILE . "_{$params['item_id']}_$cleanedName"; - if (!file_exists($fileDir)) { mkdir($fileDir, $dirPermissions, true); } @@ -222,7 +226,7 @@ class ExtraFieldValue extends Model $new_params = array( 'item_id' => $params['item_id'], 'field_id' => $extraFieldInfo['id'], - 'value' => $fileDir . $fileName + 'value' => $fileDirStored . $fileName ); if ($this->type !== 'session' && $this->type !== 'course') { diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 5eb4b2405a..8fa4562e60 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -1379,7 +1379,7 @@ class UserManager * Get user path from user ID (returns an array). * The return format is a complete path to a folder ending with "/" * @param integer $id User ID - * @param string $type Type of path to return (can be 'system', 'web') + * @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/) */ public static function getUserPathById($id, $type) @@ -1400,6 +1400,12 @@ class UserManager case 'web': // Base: absolute web path. $userPath = api_get_path(WEB_UPLOAD_PATH).$userPath; break; + case 'rel': // Relative to the document root (e.g. app/upload/users/1/13/) + $userPath = api_get_path(REL_UPLOAD_PATH).$userPath; + break; + case 'last': // Only the last part starting with users/ + $userPath = $userPath; + break; } return $userPath; diff --git a/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php b/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php index d3c6c99bb5..0f5109a07a 100644 --- a/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php +++ b/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php @@ -960,10 +960,10 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface $sessionArray['description'] = SessionManager::getDescriptionFromSessionId($sessionId); if (isset($sessionArray['brochure'])) { - $sessionArray['brochure'] = api_get_path(WEB_CODE_PATH) . $sessionArray['brochure']; + $sessionArray['brochure'] = api_get_path(WEB_UPLOAD_PATH) . $sessionArray['brochure']; } if (isset($sessionArray['banner'])) { - $sessionArray['banner'] = api_get_path(WEB_CODE_PATH) . $sessionArray['banner']; + $sessionArray['banner'] = api_get_path(WEB_UPLOAD_PATH) . $sessionArray['banner']; } return $sessionArray;