Update from ofajdev

pull/2858/head
Julio Montoya 7 years ago
parent 6a758d8a52
commit 1a0b26a488
  1. 103
      main/inc/lib/extra_field.lib.php
  2. 52
      main/inc/lib/extra_field_value.lib.php

@ -1299,7 +1299,55 @@ class ExtraField extends Model
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']];
}
$selectedOptions = [];
if ($separateValue > 0) {
$em = Database::getManager();
$fieldTags = $em
->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
->findBy(
[
'fieldId' => $field_id,
'itemId' => $itemId,
]
);
// ofaj
for ($i = 0; $i < $separateValue; $i++) {
$tagsSelect = $form->addElement(
'select',
'extra_'.$field_details['variable'].'['.$i.']',
$customLabelsExtraMultipleSelect[$field_details['variable']][$i], //$field_details['display_text'],
null,
['id' => 'extra_'.$field_details['variable'].'_'.$i]
);
if ($addEmptyOptionSelects) {
$tagsSelect->addOption(
'',
''
);
}
foreach ($fieldTags as $fieldTag) {
$tag = $em->find('ChamiloCoreBundle:Tag', $fieldTag->getTagId());
if (empty($tag)) {
continue;
}
$tagsSelect->addOption(
$tag->getTag(),
$tag->getTag()
);
}
}
} else {
$tagsSelect = $form->addSelect(
"extra_{$field_details['variable']}",
$field_details['display_text'],
@ -1307,17 +1355,23 @@ class ExtraField extends Model
['style' => 'width: 100%;']
);
if ($useTagAsSelect == false) {
if ($useTagAsSelect === false) {
$tagsSelect->setAttribute('class', null);
}
$tagsSelect->setAttribute('id', "extra_{$field_details['variable']}");
$tagsSelect->setAttribute(
'id',
"extra_{$field_details['variable']}"
);
$tagsSelect->setMultiple(true);
$selectedOptions = [];
if ($this->type === 'user') {
// The magic should be here
$user_tags = UserManager::get_user_tags($itemId, $field_details['id']);
$user_tags = UserManager::get_user_tags(
$itemId,
$field_details['id']
);
if (is_array($user_tags) && count($user_tags) > 0) {
foreach ($user_tags as $tag) {
@ -1326,7 +1380,11 @@ class ExtraField extends Model
}
$tagsSelect->addOption(
$tag['tag'],
$tag['tag']
$tag['tag'],
[
'selected' => 'selected',
'class' => 'selected',
]
);
$selectedOptions[] = $tag['tag'];
}
@ -1334,14 +1392,16 @@ class ExtraField extends Model
$url = api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php';
} else {
$em = Database::getManager();
$fieldTags = $em
->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
$fieldTags = $em->getRepository(
'ChamiloCoreBundle:ExtraFieldRelTag'
)
->findBy(
[
'fieldId' => $field_id,
'itemId' => $itemId,
]
);
/** @var ExtraFieldRelTag $fieldTag */
foreach ($fieldTags as $fieldTag) {
/** @var Tag $tag */
@ -1357,12 +1417,25 @@ class ExtraField extends Model
$selectedOptions[] = $tag->getTag();
}
if (!empty($extraData) && isset($extraData['extra_'.$field_details['variable']])) {
$data = $extraData['extra_'.$field_details['variable']];
if (!empty($data)) {
foreach ($data as $option) {
$tagsSelect->addOption(
$option,
$option
);
}
}
}
if ($useTagAsSelect) {
$fieldTags = $em
->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
->findBy([
$fieldTags = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
->findBy(
[
'fieldId' => $field_id,
]);
]
);
$tagsAdded = [];
foreach ($fieldTags as $fieldTag) {
$tag = $em->find('ChamiloCoreBundle:Tag', $fieldTag->getTagId());
@ -1413,6 +1486,8 @@ class ExtraField extends Model
});
";
}
}
break;
case self::FIELD_TYPE_TIMEZONE:
$form->addElement(
@ -1793,9 +1868,11 @@ class ExtraField extends Model
if (status == google.maps.GeocoderStatus.OK) {
if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
map_{$field_details['variable']}.setCenter(results[0].geometry.location);
if (!address) {
//if (!address) {
$('#extra_{$field_details['variable']}').val(results[0].formatted_address);
}
$('#extra_{$field_details['variable']}_coordinates').val(
results[0].geometry.location.lat()+','+results[0].geometry.location.lng());
//}
var infowindow = new google.maps.InfoWindow({
content: '<b>' + $('#extra_{$field_details['variable']}').val() + '</b>',
size: new google.maps.Size(150, 50)
@ -1833,7 +1910,7 @@ class ExtraField extends Model
id="geolocalization_extra_'.$field_details['variable'].'"
name="geolocalization_extra_'.$field_details['variable'].'"
type="submit">
<em class="fa fa-map-marker"></em> '.get_lang('Geolocalization').'
<em class="fa fa-map-marker"></em> '.get_lang('SearchGeolocalization').'
</button>
<button class="null btn btn-default" id="myLocation_extra_'.$field_details['variable'].'"
name="myLocation_extra_'.$field_details['variable'].'"

@ -302,6 +302,8 @@ class ExtraFieldValue extends Model
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);
}
@ -908,12 +910,56 @@ class ExtraFieldValue extends Model
ORDER BY s.value";
$result = Database::query($sql);
$idList = [];
if (Database::num_rows($result)) {
return Database::store_result($result, 'ASSOC');
$result = Database::store_result($result, 'ASSOC');
$finalResult = [];
foreach ($result as $item) {
$finalResult[$item['id']] = $item;
}
$idList = array_column($result, 'id');
}
return false;
$em = Database::getManager();
$extraField = new ExtraField($this->type);
$allData = $extraField->get_all(['filter = ?' => 1]);
$allResults = [];
foreach ($allData as $field) {
if (in_array($field['id'], $idList)) {
$allResults[] = $finalResult[$field['id']];
} else {
if ($field['field_type'] == ExtraField::FIELD_TYPE_TAG) {
$tagResult = [];
$tags = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
->findBy(
[
'fieldId' => $field['id'],
'itemId' => $itemId,
]
);
if ($tags) {
/** @var ExtraFieldRelTag $extraFieldTag */
foreach ($tags as $extraFieldTag) {
/** @var \Chamilo\CoreBundle\Entity\Tag $tag */
$tag = $em->find('ChamiloCoreBundle:Tag', $extraFieldTag->getTagId());
$tagResult[] = [
'id' => $extraFieldTag->getTagId(),
'value' => $tag->getTag(),
];
}
}
$allResults[] = [
'value' => $tagResult,
'variable' => $field['variable'],
'field_type' => $field['field_type'],
'id' => $field['id'],
];
}
}
}
return $allResults;
}
/**

Loading…
Cancel
Save