diff --git a/public/main/inc/ajax/session.ajax.php b/public/main/inc/ajax/session.ajax.php index ee0fdd9ded..30cfc23cb7 100644 --- a/public/main/inc/ajax/session.ajax.php +++ b/public/main/inc/ajax/session.ajax.php @@ -149,7 +149,6 @@ switch ($action) { $valueList = array_column($values, 'id'); foreach ($allExtraFields as $extra) { if (!in_array($extra['id'], $valueList)) { - //$urlUpload = api_get_path(WEB_UPLOAD_PATH); $values[] = [ 'id' => $extra['id'], 'variable' => $extra['variable'], @@ -159,23 +158,7 @@ switch ($action) { } } } - - $repo = \Chamilo\CoreBundle\Framework\Container::getAssetRepository(); - foreach ($values as &$valueItem) { - if ($valueItem['field_type'] && - in_array($valueItem['field_type'], [ExtraField::FIELD_TYPE_FILE, ExtraField::FIELD_TYPE_FILE_IMAGE]) - ) { - $valueItem['value_url'] = ''; - $asset = $repo->find($valueItem['value']); - if ($asset) { - $url = $repo->getAssetUrl($asset); - $valueItem['value_url'] = $url; - } - } - } - $sessionInfo['extra_fields'] = $values; - if (!empty($sessionInfo)) { echo json_encode($sessionInfo); } diff --git a/public/main/inc/lib/extra_field.lib.php b/public/main/inc/lib/extra_field.lib.php index 6658030707..039e286257 100644 --- a/public/main/inc/lib/extra_field.lib.php +++ b/public/main/inc/lib/extra_field.lib.php @@ -2,6 +2,7 @@ /* For licensing terms, see /license.txt */ +use Chamilo\CoreBundle\Entity\Asset; use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField; use Chamilo\CoreBundle\Entity\ExtraFieldRelTag; use Chamilo\CoreBundle\Entity\Tag; @@ -1014,8 +1015,8 @@ class ExtraField extends Model $valueToFind = $field_details['field_default_value']; } // If a value is found we override the default value - if (isset($extraData['extra_'.$field_details['variable']])) { - $valueToFind = $extraData['extra_'.$field_details['variable']]; + if (isset($extraData['extra_'.$variable])) { + $valueToFind = $extraData['extra_'.$variable]; } foreach ($field_details['options'] as $option) { @@ -1066,27 +1067,27 @@ class ExtraField extends Model case self::FIELD_TYPE_TEXT: $form->addElement( 'text', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'], [ - 'id' => 'extra_'.$field_details['variable'], + 'id' => 'extra_'.$variable, ] ); $form->applyFilter( - 'extra_'.$field_details['variable'], + 'extra_'.$variable, 'stripslashes' ); $form->applyFilter( - 'extra_'.$field_details['variable'], + 'extra_'.$variable, 'trim' ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_TEXTAREA: $form->addHtmlEditor( - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'], false, false, @@ -1094,13 +1095,13 @@ class ExtraField extends Model 'ToolbarSet' => 'Profile', 'Width' => '100%', 'Height' => '130', - 'id' => 'extra_'.$field_details['variable'], + 'id' => 'extra_'.$variable, ] ); - $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); - $form->applyFilter('extra_'.$field_details['variable'], 'trim'); + $form->applyFilter('extra_'.$variable, 'stripslashes'); + $form->applyFilter('extra_'.$variable, 'trim'); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_RADIO: @@ -1112,7 +1113,7 @@ class ExtraField extends Model $options[$option_details['option_value']] = $option_details['display_text']; $group[] = $form->createElement( 'radio', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $option_details['option_value'], $option_details['display_text'].'
', $option_details['option_value'] @@ -1121,11 +1122,11 @@ class ExtraField extends Model } $form->addGroup( $group, - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'] ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_CHECKBOX: @@ -1164,7 +1165,7 @@ class ExtraField extends Model // We assume that is a switch on/off with 1 and 0 as values $group[] = $form->createElement( 'checkbox', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, null, get_lang('Yes'), $checkboxAttributes @@ -1173,11 +1174,11 @@ class ExtraField extends Model $form->addGroup( $group, - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'] ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_SELECT: @@ -1195,36 +1196,36 @@ class ExtraField extends Model } $form->addElement( 'select', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'], $options, [ 'multiple' => 'multiple', - 'id' => 'extra_'.$field_details['variable'], + 'id' => 'extra_'.$variable, ] ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_DATE: - $form->addDatePicker('extra_'.$field_details['variable'], $field_details['display_text']); + $form->addDatePicker('extra_'.$variable, $field_details['display_text']); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_DATETIME: $form->addDateTimePicker( - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'] ); - $defaults['extra_'.$field_details['variable']] = api_get_local_time(); - if (!isset($form->_defaultValues['extra_'.$field_details['variable']])) { + $defaults['extra_'.$variable] = api_get_local_time(); + if (!isset($form->_defaultValues['extra_'.$variable])) { $form->setDefaults($defaults); } if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_DOUBLE_SELECT: @@ -1240,7 +1241,7 @@ class ExtraField extends Model
-

' +

' .$field_details['display_text'].'

@@ -1249,11 +1250,10 @@ class ExtraField extends Model '); break; case self::FIELD_TYPE_TAG: - $variable = $field_details['variable']; $field_id = $field_details['id']; $separateValue = 0; - if (isset($separateExtraMultipleSelect[$field_details['variable']])) { - $separateValue = $separateExtraMultipleSelect[$field_details['variable']]; + if (isset($separateExtraMultipleSelect[$variable])) { + $separateValue = $separateExtraMultipleSelect[$variable]; } $selectedOptions = []; @@ -1270,10 +1270,10 @@ class ExtraField extends Model // ofaj. for ($i = 0; $i < $separateValue; $i++) { $tagsSelect = $form->addSelect( - 'extra_'.$field_details['variable'].'['.$i.']', - $customLabelsExtraMultipleSelect[$field_details['variable']][$i], //$field_details['display_text'], + 'extra_'.$variable.'['.$i.']', + $customLabelsExtraMultipleSelect[$variable][$i], //$field_details['display_text'], null, - ['id' => 'extra_'.$field_details['variable'].'_'.$i] + ['id' => 'extra_'.$variable.'_'.$i] ); if ($addEmptyOptionSelects) { @@ -1298,7 +1298,7 @@ class ExtraField extends Model } } else { $tagsSelect = $form->addSelect( - "extra_{$field_details['variable']}", + "extra_{$variable}", $field_details['display_text'], [], ['style' => 'width: 100%;'] @@ -1310,7 +1310,7 @@ class ExtraField extends Model $tagsSelect->setAttribute( 'id', - "extra_{$field_details['variable']}" + "extra_{$variable}" ); $tagsSelect->setMultiple(true); @@ -1355,7 +1355,6 @@ class ExtraField extends Model foreach ($fieldTags as $fieldTag) { /** @var Tag $tag */ $tag = $em->find(Tag::class, $fieldTag->getTagId()); - if (empty($tag)) { continue; } @@ -1366,8 +1365,8 @@ class ExtraField extends Model $selectedOptions[] = $tag->getTag(); } - if (!empty($extraData) && isset($extraData['extra_'.$field_details['variable']])) { - $data = $extraData['extra_'.$field_details['variable']]; + if (!empty($extraData) && isset($extraData['extra_'.$variable])) { + $data = $extraData['extra_'.$variable]; if (!empty($data)) { foreach ($data as $option) { $tagsSelect->addOption( @@ -1413,7 +1412,7 @@ class ExtraField extends Model $form->setDefaults( [ - 'extra_'.$field_details['variable'] => $selectedOptions, + 'extra_'.$variable => $selectedOptions, ] ); @@ -1441,23 +1440,19 @@ class ExtraField extends Model case self::FIELD_TYPE_TIMEZONE: $form->addElement( 'select', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'], api_get_timezones(), '' ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_SOCIAL_PROFILE: // get the social network's favicon - $extra_data_variable = isset($extraData['extra_'.$field_details['variable']]) - ? $extraData['extra_'.$field_details['variable']] - : null; - $field_default_value = isset($field_details['field_default_value']) - ? $field_details['field_default_value'] - : null; + $extra_data_variable = isset($extraData['extra_'.$variable]) ? $extraData['extra_'.$variable] : null; + $field_default_value = isset($field_details['field_default_value']) ? $field_details['field_default_value'] : null; $icon_path = UserManager::get_favicon_from_url( $extra_data_variable, $field_default_value @@ -1473,7 +1468,7 @@ class ExtraField extends Model // print the input field $form->addElement( 'text', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'], [ //'size' => 60, @@ -1488,49 +1483,65 @@ class ExtraField extends Model ), ] ); - $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); - $form->applyFilter('extra_'.$field_details['variable'], 'trim'); + $form->applyFilter('extra_'.$variable, 'stripslashes'); + $form->applyFilter('extra_'.$variable, 'trim'); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_MOBILE_PHONE_NUMBER: $form->addElement( 'text', - 'extra_'.$field_details['variable'], - $field_details['display_text']." (".get_lang('Include the country dial code').")", + 'extra_'.$variable, + $field_details['display_text'].' ('.get_lang('Include the country dial code').')', ['size' => 40, 'placeholder' => '(xx)xxxxxxxxx'] ); - $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); - $form->applyFilter('extra_'.$field_details['variable'], 'trim'); - $form->applyFilter('extra_'.$field_details['variable'], 'mobile_phone_number_filter'); + $form->applyFilter('extra_'.$variable, 'stripslashes'); + $form->applyFilter('extra_'.$variable, 'trim'); + $form->applyFilter('extra_'.$variable, 'mobile_phone_number_filter'); $form->addRule( - 'extra_'.$field_details['variable'], + 'extra_'.$variable, get_lang('Mobile phone number is incomplete or contains invalid characters'), 'mobile_phone_number' ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_INTEGER: $form->addElement( 'number', - 'extra_'.$field_details['variable'], + 'extra_'.$variable, $field_details['display_text'], ['class' => 'span1', 'step' => 1] ); - $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); - $form->applyFilter('extra_'.$field_details['variable'], 'trim'); - $form->applyFilter('extra_'.$field_details['variable'], 'intval'); + $form->applyFilter('extra_'.$variable, 'stripslashes'); + $form->applyFilter('extra_'.$variable, 'trim'); + $form->applyFilter('extra_'.$variable, 'intval'); + + if ($freezeElement) { + $form->freeze('extra_'.$variable); + } + break; + case self::FIELD_TYPE_FLOAT: + $form->addElement( + 'number', + 'extra_'.$variable, + $field_details['display_text'], + ['class' => 'span1', 'step' => '0.01'] + ); + + $form->applyFilter('extra_'.$variable, 'stripslashes'); + $form->applyFilter('extra_'.$variable, 'trim'); + $form->applyFilter('extra_'.$variable, 'floatval'); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_FILE_IMAGE: - $fieldVariable = "extra_{$field_details['variable']}"; + $fieldVariable = "extra_{$variable}"; $fieldTexts = [ $field_details['display_text'], ]; @@ -1558,39 +1569,23 @@ class ExtraField extends Model ['accept' => 'image/*', 'id' => 'extra_image', 'crop_image' => 'true'] ); - $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); - $form->applyFilter('extra_'.$field_details['variable'], 'trim'); + $form->applyFilter('extra_'.$variable, 'stripslashes'); + $form->applyFilter('extra_'.$variable, 'trim'); $allowedPictureTypes = ['jpg', 'jpeg', 'png', 'gif']; $form->addRule( - 'extra_'.$field_details['variable'], + 'extra_'.$variable, get_lang('Only PNG, JPG or GIF images allowed').' ('.implode(',', $allowedPictureTypes).')', 'filetype', $allowedPictureTypes ); if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); - } - break; - case self::FIELD_TYPE_FLOAT: - $form->addElement( - 'number', - 'extra_'.$field_details['variable'], - $field_details['display_text'], - ['class' => 'span1', 'step' => '0.01'] - ); - - $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); - $form->applyFilter('extra_'.$field_details['variable'], 'trim'); - $form->applyFilter('extra_'.$field_details['variable'], 'floatval'); - - if ($freezeElement) { - $form->freeze('extra_'.$field_details['variable']); + $form->freeze('extra_'.$variable); } break; case self::FIELD_TYPE_FILE: - $fieldVariable = "extra_{$field_details['variable']}"; + $fieldVariable = "extra_{$variable}"; $fieldTexts = [ $field_details['display_text'], ]; @@ -1598,14 +1593,18 @@ class ExtraField extends Model if (is_array($extraData) && array_key_exists($fieldVariable, $extraData) ) { - if (file_exists(api_get_path(SYS_UPLOAD_PATH).$extraData[$fieldVariable])) { + $assetId = $extraData[$fieldVariable]; + $assetRepo = Container::getAssetRepository(); + /** @var Asset $asset */ + $asset = $assetRepo->find($assetId); + if (null !== $asset) { + $fileName = $asset->getTitle(); + $linkUrl = $assetRepo->getAssetUrl($asset); $linkToDelete = ''; - $divItemId = $field_details['variable']; if (api_is_platform_admin()) { $url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?type='.$this->type; $url .= '&a=delete_file&field_id='.$field_details['id'].'&item_id='.$itemId; - - $deleteId = $field_details['variable'].'_delete'; + $deleteId = $variable.'_delete'; $form->addHtml( "