Fix extra field save BT#16789

pull/4101/head
Julio Montoya 6 years ago
parent 542c65a1da
commit d27cdc2d03
  1. 101
      load_search.php
  2. 9
      main/inc/lib/extra_field_value.lib.php
  3. 25
      search.php

@ -1,4 +1,5 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch; use Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch;
@ -11,43 +12,43 @@ require_once 'main/inc/global.inc.php';
$htmlHeadXtra[] = '<link href="'.api_get_path(WEB_PATH).'web/assets/cropper/dist/cropper.min.css" rel="stylesheet">'; $htmlHeadXtra[] = '<link href="'.api_get_path(WEB_PATH).'web/assets/cropper/dist/cropper.min.css" rel="stylesheet">';
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_PATH).'web/assets/cropper/dist/cropper.min.js"></script>'; $htmlHeadXtra[] = '<script src="'.api_get_path(WEB_PATH).'web/assets/cropper/dist/cropper.min.js"></script>';
$htmlHeadXtra[] = '<script> $htmlHeadXtra[] = '<script>
$(document).ready(function() { $(function() {
$("#filiere").on("click", function() { $("#filiere").on("click", function() {
$("#filiere_panel").toggle(); $("#filiere_panel").toggle();
return false; return false;
}); });
$("#dispo").on("click", function() { $("#dispo").on("click", function() {
$("#dispo_panel").toggle(); $("#dispo_panel").toggle();
return false; return false;
}); });
$("#dispo_pendant").on("click", function() { $("#dispo_pendant").on("click", function() {
$("#dispo_pendant_panel").toggle(); $("#dispo_pendant_panel").toggle();
return false; return false;
}); });
$("#niveau").on("click", function() { $("#niveau").on("click", function() {
$("#niveau_panel").toggle(); $("#niveau_panel").toggle();
return false; return false;
}); });
$("#methode").on("click", function() { $("#methode").on("click", function() {
$("#methode_panel").toggle(); $("#methode_panel").toggle();
return false; return false;
}); });
$("#themes").on("click", function() { $("#themes").on("click", function() {
$("#themes_panel").toggle(); $("#themes_panel").toggle();
return false; return false;
}); });
$("#objectifs").on("click", function() { $("#objectifs").on("click", function() {
$("#objectifs_panel").toggle(); $("#objectifs_panel").toggle();
return false; return false;
}); });
}); });
</script>'; </script>';
api_block_anonymous_users(); api_block_anonymous_users();
@ -693,7 +694,9 @@ if ($form->validate()) {
$userDataToSave, $userDataToSave,
true, true,
false, false,
['heures_disponibilite_par_semaine' , 'langue_cible'] ['heures_disponibilite_par_semaine', 'langue_cible'],
[],
true
); );
// Save session search // Save session search
@ -836,13 +839,13 @@ if (!empty($filterToSend)) {
// Special OFAJ date logic // Special OFAJ date logic
if ($userEndDate == '') { if ($userEndDate == '') {
$sql = " AND ( $sql = " AND (
(s.access_start_date >= '$userStartDateMinus') OR (s.access_start_date >= '$userStartDateMinus') OR
((s.access_start_date = '' OR s.access_start_date IS NULL) AND (s.access_end_date = '' OR s.access_end_date IS NULL)) ((s.access_start_date = '' OR s.access_start_date IS NULL) AND (s.access_end_date = '' OR s.access_end_date IS NULL))
)"; )";
} else { } else {
$sql = " AND ( $sql = " AND (
(s.access_start_date >= '$userStartDateMinus' AND s.access_end_date < '$userEndDatePlus') OR (s.access_start_date >= '$userStartDateMinus' AND s.access_end_date < '$userEndDatePlus') OR
(s.access_start_date >= '$userStartDateMinus' AND (s.access_end_date = '' OR s.access_end_date IS NULL)) OR (s.access_start_date >= '$userStartDateMinus' AND (s.access_end_date = '' OR s.access_end_date IS NULL)) OR
((s.access_start_date = '' OR s.access_start_date IS NULL) AND (s.access_end_date = '' OR s.access_end_date IS NULL)) ((s.access_start_date = '' OR s.access_start_date IS NULL) AND (s.access_end_date = '' OR s.access_end_date IS NULL))
)"; )";
} }
@ -1007,8 +1010,8 @@ if (!empty($sessionByUserList)) {
} }
} }
$action_links = 'function action_formatter(cellvalue, options, rowObject) { $action_links = 'function action_formatter(cellvalue, options, rowObject) {
var sessionList = '.json_encode($sessionUserList).'; var sessionList = '.json_encode($sessionUserList).';
var id = options.rowId.toString(); var id = options.rowId.toString();
if (sessionList.indexOf(id) == -1) { if (sessionList.indexOf(id) == -1) {
return \'<a href="'.api_get_self().'?action=subscribe_user&user_id='.$userToLoad.'&session_id=\'+id+\'">'.Display::return_icon('add.png', addslashes(get_lang('Subscribe')), '', ICON_SIZE_SMALL).'</a>'.'\'; return \'<a href="'.api_get_self().'?action=subscribe_user&user_id='.$userToLoad.'&session_id=\'+id+\'">'.Display::return_icon('add.png', addslashes(get_lang('Subscribe')), '', ICON_SIZE_SMALL).'</a>'.'\';
} else { } else {
@ -1039,8 +1042,8 @@ $htmlHeadXtra[] = '<style>
} }
</style>'; </style>';
$htmlHeadXtra[] = '<script> $htmlHeadXtra[] = '<script>
$(document).ready(function() { $(function() {
var blocks = [ var blocks = [
"#collapseOne", "#collapseOne",
"#collapseTwo", "#collapseTwo",
@ -1049,13 +1052,13 @@ $(document).ready(function() {
"#collapseFive", "#collapseFive",
"#collapseSix", "#collapseSix",
"#collapseSeven", "#collapseSeven",
"#collapseEight" "#collapseEight"
]; ];
$.each(blocks, function( index, value ) { $.each(blocks, function( index, value ) {
$(value).collapse("hide"); $(value).collapse("hide");
}); });
}); });
</script>'; </script>';
$tpl = new Template(get_lang('Diagnosis')); $tpl = new Template(get_lang('Diagnosis'));

@ -89,10 +89,11 @@ class ExtraFieldValue extends Model
*/ */
public function saveFieldValues( public function saveFieldValues(
$params, $params,
$forceSave = false, $onlySubmittedFields = false,
$showQuery = false, $showQuery = false,
$saveOnlyThisFields = [], $saveOnlyThisFields = [],
$avoidFields = [] $avoidFields = [],
$forceSave = false
) { ) {
foreach ($params as $key => $value) { foreach ($params as $key => $value) {
$found = strpos($key, '__persist__'); $found = strpos($key, '__persist__');
@ -128,6 +129,10 @@ class ExtraFieldValue extends Model
$field_variable = $fieldDetails['variable']; $field_variable = $fieldDetails['variable'];
if ($onlySubmittedFields && !isset($params['extra_'.$field_variable])) {
continue;
}
if (!empty($avoidFields)) { if (!empty($avoidFields)) {
if (in_array($field_variable, $avoidFields)) { if (in_array($field_variable, $avoidFields)) {
continue; continue;

@ -22,8 +22,8 @@ $form->addHeader(get_lang('Diagnosis'));
/** @var ExtraFieldSavedSearch $saved */ /** @var ExtraFieldSavedSearch $saved */
$search = ['user' => $userId]; $search = ['user' => $userId];
$extraFieldSavedSearchRepo = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch');
$items = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findBy($search); $items = $extraFieldSavedSearchRepo->findBy($search);
$extraFieldSession = new ExtraField('session'); $extraFieldSession = new ExtraField('session');
$extraFieldValueSession = new ExtraFieldValue('session'); $extraFieldValueSession = new ExtraFieldValue('session');
@ -698,7 +698,7 @@ $userForm->addHtml('</div>');
$userForm->addHtml('</div>'); $userForm->addHtml('</div>');
$htmlHeadXtra[] = '<script> $htmlHeadXtra[] = '<script>
$(document).ready(function(){ $(function () {
'.$jqueryExtra.' '.$jqueryExtra.'
}); });
</script>'; </script>';
@ -718,8 +718,8 @@ $domainList = array_merge(
); );
$themeList = []; $themeList = [];
$extraField = new ExtraField('session');
$resultOptions = $extraField->searchOptionsFromTags( $resultOptions = $extraFieldSession->searchOptionsFromTags(
'extra_domaine', 'extra_domaine',
'extra_'.$theme, 'extra_'.$theme,
$domainList $domainList
@ -755,10 +755,11 @@ if ($userForm->validate()) {
$extraFieldValue->saveFieldValues( $extraFieldValue->saveFieldValues(
$userData, $userData,
$adminPermissions, true,
false, false,
[], [],
['legal_accept'] ['legal_accept'],
true
); );
// Saving to extra_field_saved_search // Saving to extra_field_saved_search
@ -809,6 +810,8 @@ if ($userForm->validate()) {
} }
// save in ExtraFieldSavedSearch. // save in ExtraFieldSavedSearch.
$extraFieldRepo = $em->getRepository('ChamiloCoreBundle:ExtraField');
foreach ($userData as $key => $value) { foreach ($userData as $key => $value) {
if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') { if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') {
continue; continue;
@ -828,18 +831,14 @@ if ($userForm->validate()) {
continue; continue;
} }
$extraFieldObj = $em $extraFieldObj = $extraFieldRepo->find($extraFieldInfo['id']);
->getRepository('ChamiloCoreBundle:ExtraField')
->find($extraFieldInfo['id'])
;
$search = [ $search = [
'field' => $extraFieldObj, 'field' => $extraFieldObj,
'user' => $user, 'user' => $user,
]; ];
/** @var ExtraFieldSavedSearch $saved */ /** @var ExtraFieldSavedSearch $saved */
$saved = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search); $saved = $extraFieldSavedSearchRepo->findOneBy($search);
if ($saved) { if ($saved) {
$saved $saved

Loading…
Cancel
Save