Remove WEB_UPLOAD_PATH calls

pull/3768/head
Julio Montoya 5 years ago
parent 25f29bec34
commit ccbe5eae9b
  1. 17
      public/main/inc/ajax/session.ajax.php
  2. 245
      public/main/inc/lib/extra_field.lib.php
  3. 30
      public/main/inc/lib/extra_field_value.lib.php
  4. 37
      public/main/inc/lib/sessionmanager.lib.php
  5. 5
      public/main/session/session_add.php

@ -149,7 +149,6 @@ switch ($action) {
$valueList = array_column($values, 'id'); $valueList = array_column($values, 'id');
foreach ($allExtraFields as $extra) { foreach ($allExtraFields as $extra) {
if (!in_array($extra['id'], $valueList)) { if (!in_array($extra['id'], $valueList)) {
//$urlUpload = api_get_path(WEB_UPLOAD_PATH);
$values[] = [ $values[] = [
'id' => $extra['id'], 'id' => $extra['id'],
'variable' => $extra['variable'], '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; $sessionInfo['extra_fields'] = $values;
if (!empty($sessionInfo)) { if (!empty($sessionInfo)) {
echo json_encode($sessionInfo); echo json_encode($sessionInfo);
} }

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\Asset;
use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField; use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField;
use Chamilo\CoreBundle\Entity\ExtraFieldRelTag; use Chamilo\CoreBundle\Entity\ExtraFieldRelTag;
use Chamilo\CoreBundle\Entity\Tag; use Chamilo\CoreBundle\Entity\Tag;
@ -1014,8 +1015,8 @@ class ExtraField extends Model
$valueToFind = $field_details['field_default_value']; $valueToFind = $field_details['field_default_value'];
} }
// If a value is found we override the default value // If a value is found we override the default value
if (isset($extraData['extra_'.$field_details['variable']])) { if (isset($extraData['extra_'.$variable])) {
$valueToFind = $extraData['extra_'.$field_details['variable']]; $valueToFind = $extraData['extra_'.$variable];
} }
foreach ($field_details['options'] as $option) { foreach ($field_details['options'] as $option) {
@ -1066,27 +1067,27 @@ class ExtraField extends Model
case self::FIELD_TYPE_TEXT: case self::FIELD_TYPE_TEXT:
$form->addElement( $form->addElement(
'text', 'text',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
[ [
'id' => 'extra_'.$field_details['variable'], 'id' => 'extra_'.$variable,
] ]
); );
$form->applyFilter( $form->applyFilter(
'extra_'.$field_details['variable'], 'extra_'.$variable,
'stripslashes' 'stripslashes'
); );
$form->applyFilter( $form->applyFilter(
'extra_'.$field_details['variable'], 'extra_'.$variable,
'trim' 'trim'
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_TEXTAREA: case self::FIELD_TYPE_TEXTAREA:
$form->addHtmlEditor( $form->addHtmlEditor(
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
false, false,
false, false,
@ -1094,13 +1095,13 @@ class ExtraField extends Model
'ToolbarSet' => 'Profile', 'ToolbarSet' => 'Profile',
'Width' => '100%', 'Width' => '100%',
'Height' => '130', 'Height' => '130',
'id' => 'extra_'.$field_details['variable'], 'id' => 'extra_'.$variable,
] ]
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim'); $form->applyFilter('extra_'.$variable, 'trim');
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_RADIO: case self::FIELD_TYPE_RADIO:
@ -1112,7 +1113,7 @@ class ExtraField extends Model
$options[$option_details['option_value']] = $option_details['display_text']; $options[$option_details['option_value']] = $option_details['display_text'];
$group[] = $form->createElement( $group[] = $form->createElement(
'radio', 'radio',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$option_details['option_value'], $option_details['option_value'],
$option_details['display_text'].'<br />', $option_details['display_text'].'<br />',
$option_details['option_value'] $option_details['option_value']
@ -1121,11 +1122,11 @@ class ExtraField extends Model
} }
$form->addGroup( $form->addGroup(
$group, $group,
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'] $field_details['display_text']
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_CHECKBOX: 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 // We assume that is a switch on/off with 1 and 0 as values
$group[] = $form->createElement( $group[] = $form->createElement(
'checkbox', 'checkbox',
'extra_'.$field_details['variable'], 'extra_'.$variable,
null, null,
get_lang('Yes'), get_lang('Yes'),
$checkboxAttributes $checkboxAttributes
@ -1173,11 +1174,11 @@ class ExtraField extends Model
$form->addGroup( $form->addGroup(
$group, $group,
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'] $field_details['display_text']
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_SELECT: case self::FIELD_TYPE_SELECT:
@ -1195,36 +1196,36 @@ class ExtraField extends Model
} }
$form->addElement( $form->addElement(
'select', 'select',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
$options, $options,
[ [
'multiple' => 'multiple', 'multiple' => 'multiple',
'id' => 'extra_'.$field_details['variable'], 'id' => 'extra_'.$variable,
] ]
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_DATE: 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) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_DATETIME: case self::FIELD_TYPE_DATETIME:
$form->addDateTimePicker( $form->addDateTimePicker(
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'] $field_details['display_text']
); );
$defaults['extra_'.$field_details['variable']] = api_get_local_time(); $defaults['extra_'.$variable] = api_get_local_time();
if (!isset($form->_defaultValues['extra_'.$field_details['variable']])) { if (!isset($form->_defaultValues['extra_'.$variable])) {
$form->setDefaults($defaults); $form->setDefaults($defaults);
} }
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_DOUBLE_SELECT: case self::FIELD_TYPE_DOUBLE_SELECT:
@ -1240,7 +1241,7 @@ class ExtraField extends Model
<div class="form-group "> <div class="form-group ">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="panel-separator"> <div class="panel-separator">
<h4 id="'.$field_details['variable'].'" class="form-separator">' <h4 id="'.$variable.'" class="form-separator">'
.$field_details['display_text'].' .$field_details['display_text'].'
</h4> </h4>
</div> </div>
@ -1249,11 +1250,10 @@ class ExtraField extends Model
'); ');
break; break;
case self::FIELD_TYPE_TAG: case self::FIELD_TYPE_TAG:
$variable = $field_details['variable'];
$field_id = $field_details['id']; $field_id = $field_details['id'];
$separateValue = 0; $separateValue = 0;
if (isset($separateExtraMultipleSelect[$field_details['variable']])) { if (isset($separateExtraMultipleSelect[$variable])) {
$separateValue = $separateExtraMultipleSelect[$field_details['variable']]; $separateValue = $separateExtraMultipleSelect[$variable];
} }
$selectedOptions = []; $selectedOptions = [];
@ -1270,10 +1270,10 @@ class ExtraField extends Model
// ofaj. // ofaj.
for ($i = 0; $i < $separateValue; $i++) { for ($i = 0; $i < $separateValue; $i++) {
$tagsSelect = $form->addSelect( $tagsSelect = $form->addSelect(
'extra_'.$field_details['variable'].'['.$i.']', 'extra_'.$variable.'['.$i.']',
$customLabelsExtraMultipleSelect[$field_details['variable']][$i], //$field_details['display_text'], $customLabelsExtraMultipleSelect[$variable][$i], //$field_details['display_text'],
null, null,
['id' => 'extra_'.$field_details['variable'].'_'.$i] ['id' => 'extra_'.$variable.'_'.$i]
); );
if ($addEmptyOptionSelects) { if ($addEmptyOptionSelects) {
@ -1298,7 +1298,7 @@ class ExtraField extends Model
} }
} else { } else {
$tagsSelect = $form->addSelect( $tagsSelect = $form->addSelect(
"extra_{$field_details['variable']}", "extra_{$variable}",
$field_details['display_text'], $field_details['display_text'],
[], [],
['style' => 'width: 100%;'] ['style' => 'width: 100%;']
@ -1310,7 +1310,7 @@ class ExtraField extends Model
$tagsSelect->setAttribute( $tagsSelect->setAttribute(
'id', 'id',
"extra_{$field_details['variable']}" "extra_{$variable}"
); );
$tagsSelect->setMultiple(true); $tagsSelect->setMultiple(true);
@ -1355,7 +1355,6 @@ class ExtraField extends Model
foreach ($fieldTags as $fieldTag) { foreach ($fieldTags as $fieldTag) {
/** @var Tag $tag */ /** @var Tag $tag */
$tag = $em->find(Tag::class, $fieldTag->getTagId()); $tag = $em->find(Tag::class, $fieldTag->getTagId());
if (empty($tag)) { if (empty($tag)) {
continue; continue;
} }
@ -1366,8 +1365,8 @@ class ExtraField extends Model
$selectedOptions[] = $tag->getTag(); $selectedOptions[] = $tag->getTag();
} }
if (!empty($extraData) && isset($extraData['extra_'.$field_details['variable']])) { if (!empty($extraData) && isset($extraData['extra_'.$variable])) {
$data = $extraData['extra_'.$field_details['variable']]; $data = $extraData['extra_'.$variable];
if (!empty($data)) { if (!empty($data)) {
foreach ($data as $option) { foreach ($data as $option) {
$tagsSelect->addOption( $tagsSelect->addOption(
@ -1413,7 +1412,7 @@ class ExtraField extends Model
$form->setDefaults( $form->setDefaults(
[ [
'extra_'.$field_details['variable'] => $selectedOptions, 'extra_'.$variable => $selectedOptions,
] ]
); );
@ -1441,23 +1440,19 @@ class ExtraField extends Model
case self::FIELD_TYPE_TIMEZONE: case self::FIELD_TYPE_TIMEZONE:
$form->addElement( $form->addElement(
'select', 'select',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
api_get_timezones(), api_get_timezones(),
'' ''
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_SOCIAL_PROFILE: case self::FIELD_TYPE_SOCIAL_PROFILE:
// get the social network's favicon // get the social network's favicon
$extra_data_variable = isset($extraData['extra_'.$field_details['variable']]) $extra_data_variable = isset($extraData['extra_'.$variable]) ? $extraData['extra_'.$variable] : null;
? $extraData['extra_'.$field_details['variable']] $field_default_value = isset($field_details['field_default_value']) ? $field_details['field_default_value'] : null;
: null;
$field_default_value = isset($field_details['field_default_value'])
? $field_details['field_default_value']
: null;
$icon_path = UserManager::get_favicon_from_url( $icon_path = UserManager::get_favicon_from_url(
$extra_data_variable, $extra_data_variable,
$field_default_value $field_default_value
@ -1473,7 +1468,7 @@ class ExtraField extends Model
// print the input field // print the input field
$form->addElement( $form->addElement(
'text', 'text',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
[ [
//'size' => 60, //'size' => 60,
@ -1488,49 +1483,65 @@ class ExtraField extends Model
), ),
] ]
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim'); $form->applyFilter('extra_'.$variable, 'trim');
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_MOBILE_PHONE_NUMBER: case self::FIELD_TYPE_MOBILE_PHONE_NUMBER:
$form->addElement( $form->addElement(
'text', 'text',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text']." (".get_lang('Include the country dial code').")", $field_details['display_text'].' ('.get_lang('Include the country dial code').')',
['size' => 40, 'placeholder' => '(xx)xxxxxxxxx'] ['size' => 40, 'placeholder' => '(xx)xxxxxxxxx']
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim'); $form->applyFilter('extra_'.$variable, 'trim');
$form->applyFilter('extra_'.$field_details['variable'], 'mobile_phone_number_filter'); $form->applyFilter('extra_'.$variable, 'mobile_phone_number_filter');
$form->addRule( $form->addRule(
'extra_'.$field_details['variable'], 'extra_'.$variable,
get_lang('Mobile phone number is incomplete or contains invalid characters'), get_lang('Mobile phone number is incomplete or contains invalid characters'),
'mobile_phone_number' 'mobile_phone_number'
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_INTEGER: case self::FIELD_TYPE_INTEGER:
$form->addElement( $form->addElement(
'number', 'number',
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
['class' => 'span1', 'step' => 1] ['class' => 'span1', 'step' => 1]
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim'); $form->applyFilter('extra_'.$variable, 'trim');
$form->applyFilter('extra_'.$field_details['variable'], 'intval'); $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) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_FILE_IMAGE: case self::FIELD_TYPE_FILE_IMAGE:
$fieldVariable = "extra_{$field_details['variable']}"; $fieldVariable = "extra_{$variable}";
$fieldTexts = [ $fieldTexts = [
$field_details['display_text'], $field_details['display_text'],
]; ];
@ -1558,39 +1569,23 @@ class ExtraField extends Model
['accept' => 'image/*', 'id' => 'extra_image', 'crop_image' => 'true'] ['accept' => 'image/*', 'id' => 'extra_image', 'crop_image' => 'true']
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim'); $form->applyFilter('extra_'.$variable, 'trim');
$allowedPictureTypes = ['jpg', 'jpeg', 'png', 'gif']; $allowedPictureTypes = ['jpg', 'jpeg', 'png', 'gif'];
$form->addRule( $form->addRule(
'extra_'.$field_details['variable'], 'extra_'.$variable,
get_lang('Only PNG, JPG or GIF images allowed').' ('.implode(',', $allowedPictureTypes).')', get_lang('Only PNG, JPG or GIF images allowed').' ('.implode(',', $allowedPictureTypes).')',
'filetype', 'filetype',
$allowedPictureTypes $allowedPictureTypes
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$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']);
} }
break; break;
case self::FIELD_TYPE_FILE: case self::FIELD_TYPE_FILE:
$fieldVariable = "extra_{$field_details['variable']}"; $fieldVariable = "extra_{$variable}";
$fieldTexts = [ $fieldTexts = [
$field_details['display_text'], $field_details['display_text'],
]; ];
@ -1598,14 +1593,18 @@ class ExtraField extends Model
if (is_array($extraData) && if (is_array($extraData) &&
array_key_exists($fieldVariable, $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 = ''; $linkToDelete = '';
$divItemId = $field_details['variable'];
if (api_is_platform_admin()) { if (api_is_platform_admin()) {
$url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?type='.$this->type; $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; $url .= '&a=delete_file&field_id='.$field_details['id'].'&item_id='.$itemId;
$deleteId = $variable.'_delete';
$deleteId = $field_details['variable'].'_delete';
$form->addHtml( $form->addHtml(
" "
<script> <script>
@ -1616,7 +1615,7 @@ class ExtraField extends Model
url: '".$url."', url: '".$url."',
success: function(result) { success: function(result) {
if (result == 1) { if (result == 1) {
$('#".$divItemId."').html('".get_lang('Deleted')."'); $('#".$variable."').html('".get_lang('Deleted')."');
} }
} }
}); });
@ -1632,14 +1631,15 @@ class ExtraField extends Model
['id' => $deleteId] ['id' => $deleteId]
); );
} }
$fieldTexts[] = '<div id="'.$divItemId.'">'.Display::url( $anchor = Display::url(
basename($extraData[$fieldVariable]), $fileName,
api_get_path(WEB_UPLOAD_PATH).$extraData[$fieldVariable], $linkUrl,
[ [
'title' => $field_details['display_text'], 'title' => $field_details['display_text'],
'target' => '_blank', 'target' => '_blank',
] ]
).$linkToDelete.'</div>'; );
$fieldTexts[] = '<div id="'.$variable.'">'.$anchor.$linkToDelete.'</div>';
} }
} }
@ -1650,87 +1650,84 @@ class ExtraField extends Model
[] []
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim'); $form->applyFilter('extra_'.$variable, 'trim');
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_VIDEO_URL: case self::FIELD_TYPE_VIDEO_URL:
$form->addUrl( $form->addUrl(
"extra_{$field_details['variable']}", "extra_{$variable}",
$field_details['display_text'], $field_details['display_text'],
false, false,
['placeholder' => 'https://'] ['placeholder' => 'https://']
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_LETTERS_ONLY: case self::FIELD_TYPE_LETTERS_ONLY:
$form->addTextLettersOnly( $form->addTextLettersOnly(
"extra_{$field_details['variable']}", "extra_{$variable}",
$field_details['display_text'] $field_details['display_text']
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_ALPHANUMERIC: case self::FIELD_TYPE_ALPHANUMERIC:
$form->addTextAlphanumeric( $form->addTextAlphanumeric(
"extra_{$field_details['variable']}", "extra_{$variable}",
$field_details['display_text'] $field_details['display_text']
); );
$form->applyFilter( $form->applyFilter(
'extra_'.$field_details['variable'], 'extra_'.$variable,
'stripslashes' 'stripslashes'
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_LETTERS_SPACE: case self::FIELD_TYPE_LETTERS_SPACE:
$form->addTextLettersAndSpaces( $form->addTextLettersAndSpaces(
"extra_{$field_details['variable']}", "extra_{$variable}",
$field_details['display_text'] $field_details['display_text']
); );
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); $form->applyFilter('extra_'.$variable, 'stripslashes');
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_ALPHANUMERIC_SPACE: case self::FIELD_TYPE_ALPHANUMERIC_SPACE:
$form->addTextAlphanumericAndSpaces( $form->addTextAlphanumericAndSpaces(
"extra_{$field_details['variable']}", "extra_{$variable}",
$field_details['display_text'] $field_details['display_text']
); );
$form->applyFilter( $form->applyFilter(
'extra_'.$field_details['variable'], 'extra_'.$variable,
'stripslashes' 'stripslashes'
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_GEOLOCALIZATION_COORDINATES: case self::FIELD_TYPE_GEOLOCALIZATION_COORDINATES:
case self::FIELD_TYPE_GEOLOCALIZATION: case self::FIELD_TYPE_GEOLOCALIZATION:
$dataValue = isset($extraData['extra_'.$field_details['variable']]) $dataValue = isset($extraData['extra_'.$variable]) ? $extraData['extra_'.$variable] : '';
? $extraData['extra_'.$field_details['variable']]
: '';
$form->addGeoLocationMapField( $form->addGeoLocationMapField(
'extra_'.$field_details['variable'], 'extra_'.$variable,
$field_details['display_text'], $field_details['display_text'],
$dataValue, $dataValue,
$hideGeoLocalizationDetails $hideGeoLocalizationDetails
); );
if ($freezeElement) { if ($freezeElement) {
$form->freeze('extra_'.$field_details['variable']); $form->freeze('extra_'.$variable);
} }
break; break;
case self::FIELD_TYPE_SELECT_WITH_TEXT_FIELD: case self::FIELD_TYPE_SELECT_WITH_TEXT_FIELD:
@ -2934,7 +2931,7 @@ JAVASCRIPT;
); );
$fieldType = (int) $field['field_type']; $fieldType = (int) $field['field_type'];
if (ExtraField::FIELD_TYPE_TAG === (int) $fieldType) { if (self::FIELD_TYPE_TAG === $fieldType) {
$tags = $repoTag->findBy(['fieldId' => $field['id'], 'itemId' => $itemId]); $tags = $repoTag->findBy(['fieldId' => $field['id'], 'itemId' => $itemId]);
if ($tags) { if ($tags) {
/** @var ExtraFieldRelTag $tag */ /** @var ExtraFieldRelTag $tag */
@ -2953,7 +2950,6 @@ JAVASCRIPT;
continue; continue;
} }
$displayedValue = get_lang('None'); $displayedValue = get_lang('None');
switch ($fieldType) { switch ($fieldType) {
case self::FIELD_TYPE_CHECKBOX: case self::FIELD_TYPE_CHECKBOX:
if (false !== $valueData && '1' == $valueData['value']) { if (false !== $valueData && '1' == $valueData['value']) {
@ -2985,8 +2981,8 @@ JAVASCRIPT;
break; break;
} }
if ($fieldType === self::FIELD_TYPE_FILE_IMAGE) { $url = $assetRepo->getAssetUrl($asset);
$url = $assetRepo->getAssetUrl($asset); if (self::FIELD_TYPE_FILE_IMAGE === $fieldType) {
$image = Display::img( $image = Display::img(
$url, $url,
$field['display_text'], $field['display_text'],
@ -3124,6 +3120,11 @@ JAVASCRIPT;
return $result; return $result;
} }
public static function getExtraFieldTypesWithFiles() : array
{
return [self::FIELD_TYPE_FILE_IMAGE, self::FIELD_TYPE_FILE];
}
/** /**
* @param \FormValidator $form * @param \FormValidator $form
* @param int $defaultValueId * @param int $defaultValueId

@ -722,6 +722,8 @@ class ExtraFieldValue extends Model
} }
$sql .= ' ORDER BY id'; $sql .= ' ORDER BY id';
$repo = Container::getAssetRepository();
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
$result = Database::fetch_array($result, 'ASSOC'); $result = Database::fetch_array($result, 'ASSOC');
@ -741,10 +743,8 @@ class ExtraFieldValue extends Model
if (ExtraField::FIELD_TYPE_SELECT_WITH_TEXT_FIELD == $result['field_type']) { if (ExtraField::FIELD_TYPE_SELECT_WITH_TEXT_FIELD == $result['field_type']) {
if (!empty($result['value'])) { if (!empty($result['value'])) {
$options = explode('::', $result['value']); $options = explode('::', $result['value']);
$field_option = new ExtraFieldOption($this->type); $field_option = new ExtraFieldOption($this->type);
$result = $field_option->get($options[0]); $result = $field_option->get($options[0]);
if (!empty($result)) { if (!empty($result)) {
$result['value'] = $result['display_text'] $result['value'] = $result['display_text']
.'&rarr;' .'&rarr;'
@ -756,7 +756,6 @@ class ExtraFieldValue extends Model
if (!empty($result['value'])) { if (!empty($result['value'])) {
$optionIds = explode(';', $result['value']); $optionIds = explode(';', $result['value']);
$optionValues = []; $optionValues = [];
foreach ($optionIds as $optionId) { foreach ($optionIds as $optionId) {
$objEfOption = new ExtraFieldOption('user'); $objEfOption = new ExtraFieldOption('user');
$optionInfo = $objEfOption->get($optionId); $optionInfo = $objEfOption->get($optionId);
@ -767,6 +766,17 @@ class ExtraFieldValue extends Model
$result['value'] = implode(' / ', $optionValues); $result['value'] = implode(' / ', $optionValues);
} }
} }
if (in_array($result['field_type'], ExtraField::getExtraFieldTypesWithFiles())) {
$result['url'] = '';
if (!empty($result['value'])) {
$asset = $repo->find($result['value']);
if ($asset) {
$url = $repo->getAssetUrl($asset);
$result['url'] = $url;
}
}
}
} }
return $result; return $result;
@ -916,7 +926,18 @@ class ExtraFieldValue extends Model
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
$result = Database::store_result($result, 'ASSOC'); $result = Database::store_result($result, 'ASSOC');
$finalResult = []; $finalResult = [];
$repo = Container::getAssetRepository();
foreach ($result as $item) { foreach ($result as $item) {
$fieldType = (int) $item['field_type'];
$item['url'] = '';
if (in_array($fieldType, ExtraField::getExtraFieldTypesWithFiles(), true)) {
$asset = $repo->find($item['value']);
if ($asset) {
$url = $repo->getAssetUrl($asset);
$item['url'] = $url;
}
}
$finalResult[$item['id']] = $item; $finalResult[$item['id']] = $item;
} }
$idList = array_column($result, 'id'); $idList = array_column($result, 'id');
@ -928,10 +949,11 @@ class ExtraFieldValue extends Model
$allData = $extraField->get_all(['filter = ?' => 1]); $allData = $extraField->get_all(['filter = ?' => 1]);
$allResults = []; $allResults = [];
foreach ($allData as $field) { foreach ($allData as $field) {
$fieldType = (int) $field['field_type'];
if (in_array($field['id'], $idList)) { if (in_array($field['id'], $idList)) {
$allResults[] = $finalResult[$field['id']]; $allResults[] = $finalResult[$field['id']];
} else { } else {
if (ExtraField::FIELD_TYPE_TAG == $field['field_type']) { if (ExtraField::FIELD_TYPE_TAG === $fieldType) {
$tagResult = []; $tagResult = [];
$tags = $em->getRepository(ExtraFieldRelTag::class) $tags = $em->getRepository(ExtraFieldRelTag::class)
->findBy( ->findBy(

@ -3921,7 +3921,6 @@ class SessionManager
if (!empty($keyword)) { if (!empty($keyword)) {
$keyword = Database::escape_string($keyword); $keyword = Database::escape_string($keyword);
$keywordCondition = " AND (s.name LIKE '%$keyword%' ) "; $keywordCondition = " AND (s.name LIKE '%$keyword%' ) ";
if (!empty($description)) { if (!empty($description)) {
$description = Database::escape_string($description); $description = Database::escape_string($description);
$keywordCondition = " AND (s.name LIKE '%$keyword%' OR s.description LIKE '%$description%' ) "; $keywordCondition = " AND (s.name LIKE '%$keyword%' OR s.description LIKE '%$description%' ) ";
@ -3965,8 +3964,6 @@ class SessionManager
$sessions = []; $sessions = [];
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
$sysUploadPath = api_get_path(SYS_UPLOAD_PATH).'sessions/';
$webUploadPath = api_get_path(WEB_UPLOAD_PATH).'sessions/';
$imgPath = Display::return_icon( $imgPath = Display::return_icon(
'session_default_small.png', 'session_default_small.png',
null, null,
@ -3976,38 +3973,43 @@ class SessionManager
true true
); );
$extraFieldValue = new ExtraFieldValue('session');
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {
if ($getOnlySessionId) { if ($getOnlySessionId) {
$sessions[$row['id']] = $row; $sessions[$row['id']] = $row;
continue; continue;
} }
$imageFilename = ExtraFieldModel::FIELD_TYPE_FILE_IMAGE.'_'.$row['id'].'.png';
$row['image'] = is_file($sysUploadPath.$imageFilename) ? $webUploadPath.$imageFilename : $imgPath;
if ('0000-00-00 00:00:00' == $row['display_start_date'] || '0000-00-00' == $row['display_start_date']) { $extraFieldImage = $extraFieldValue->get_values_by_handler_and_field_variable($row['id'], 'image');
$image = $imgPath;
if (!empty($extraFieldImage) && isset($extraFieldImage['url'])) {
$image = $extraFieldImage['url'];
}
$row['image'] = $image;
if ('0000-00-00 00:00:00' === $row['display_start_date'] || '0000-00-00' === $row['display_start_date']) {
$row['display_start_date'] = null; $row['display_start_date'] = null;
} }
if ('0000-00-00 00:00:00' == $row['display_end_date'] || '0000-00-00' == $row['display_end_date']) { if ('0000-00-00 00:00:00' === $row['display_end_date'] || '0000-00-00' === $row['display_end_date']) {
$row['display_end_date'] = null; $row['display_end_date'] = null;
} }
if ('0000-00-00 00:00:00' == $row['access_start_date'] || '0000-00-00' == $row['access_start_date']) { if ('0000-00-00 00:00:00' === $row['access_start_date'] || '0000-00-00' === $row['access_start_date']) {
$row['access_start_date'] = null; $row['access_start_date'] = null;
} }
if ('0000-00-00 00:00:00' == $row['access_end_date'] || '0000-00-00' == $row['access_end_date']) { if ('0000-00-00 00:00:00' === $row['access_end_date'] || '0000-00-00' === $row['access_end_date']) {
$row['access_end_date'] = null; $row['access_end_date'] = null;
} }
if ('0000-00-00 00:00:00' == $row['coach_access_start_date'] || if ('0000-00-00 00:00:00' === $row['coach_access_start_date'] ||
'0000-00-00' == $row['coach_access_start_date'] '0000-00-00' === $row['coach_access_start_date']
) { ) {
$row['coach_access_start_date'] = null; $row['coach_access_start_date'] = null;
} }
if ('0000-00-00 00:00:00' == $row['coach_access_end_date'] || if ('0000-00-00 00:00:00' === $row['coach_access_end_date'] ||
'0000-00-00' == $row['coach_access_end_date'] '0000-00-00' === $row['coach_access_end_date']
) { ) {
$row['coach_access_end_date'] = null; $row['coach_access_end_date'] = null;
} }
@ -4570,17 +4572,20 @@ class SessionManager
$extraFieldsValuesToCopy = []; $extraFieldsValuesToCopy = [];
if (!empty($extraFieldsValues)) { if (!empty($extraFieldsValues)) {
foreach ($extraFieldsValues as $extraFieldValue) { foreach ($extraFieldsValues as $extraFieldValue) {
//$extraFieldsValuesToCopy['extra_'.$extraFieldValue['variable']] = $extraFieldValue['value']; $extraFieldsValuesToCopy['extra_'.$extraFieldValue['variable']] = $extraFieldValue['value'];
$extraFieldsValuesToCopy['extra_'.$extraFieldValue['variable']]['extra_'.$extraFieldValue['variable']] = $extraFieldValue['value']; $extraFieldsValuesToCopy['extra_'.$extraFieldValue['variable']]['extra_'.$extraFieldValue['variable']] = $extraFieldValue['value'];
} }
} }
if (isset($extraFieldsValuesToCopy['extra_image']) && isset($extraFieldsValuesToCopy['extra_image']['extra_image'])) { // @todo fix session image url copy.
/*if (isset($extraFieldsValuesToCopy['extra_image']) &&
isset($extraFieldsValuesToCopy['extra_image']['extra_image'])
) {
$extraFieldsValuesToCopy['extra_image'] = [ $extraFieldsValuesToCopy['extra_image'] = [
'tmp_name' => api_get_path(SYS_UPLOAD_PATH).$extraFieldsValuesToCopy['extra_image']['extra_image'], 'tmp_name' => api_get_path(SYS_UPLOAD_PATH).$extraFieldsValuesToCopy['extra_image']['extra_image'],
'error' => 0, 'error' => 0,
]; ];
} }*/
// Now try to create the session // Now try to create the session
$sid = self::create_session( $sid = self::create_session(

@ -319,9 +319,8 @@ $(function() {
} }
break; break;
case '16': case '16':
if (item.value_url) { if (item.url) {
var url = item.value_url; var url = item.url;
var divFormGroup = fieldName + '-form-group'; var divFormGroup = fieldName + '-form-group';
var divWrapper = fieldName + '_crop_image'; var divWrapper = fieldName + '_crop_image';
var divPreview = fieldName + '_preview_image'; var divPreview = fieldName + '_preview_image';

Loading…
Cancel
Save