Fix issue with new extra_field paths for files and images - refs BT#9413

1.10.x
Yannick Warnier 10 years ago
parent 5845aa0a0a
commit 52c8eba427
  1. 4
      main/inc/lib/api.lib.php
  2. 10
      main/inc/lib/extra_field.lib.php
  3. 12
      main/inc/lib/extra_field_value.lib.php
  4. 8
      main/inc/lib/usermanager.lib.php
  5. 4
      plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.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/';

@ -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'

@ -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') {

@ -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;

@ -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;

Loading…
Cancel
Save