123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637 |
- <?php
- /* For licensing terms, see /license.txt */
- use Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch;
- $cidReset = true;
- require_once 'main/inc/global.inc.php';
- api_block_anonymous_users();
- $userId = api_get_user_id();
- $userInfo = api_get_user_info();
- $em = Database::getManager();
- $form = new FormValidator('search', 'post', api_get_self());
- $form->addHeader(get_lang('Diagnosis'));
- /** @var ExtraFieldSavedSearch $saved */
- $search = [
- 'user' => $userId
- ];
- $items = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findBy($search);
- $extraFieldSession = new ExtraField('session');
- $extraFieldValueSession = new ExtraFieldValue('session');
- $filter = false;
- $extraFieldValue = new ExtraFieldValue('user');
- $wantStage = $extraFieldValue->get_values_by_handler_and_field_variable(api_get_user_id(), 'filiere_want_stage');
- $hide = true;
- if ($wantStage !== false) {
- $hide = $wantStage['value'] === 'yes';
- }
- $defaultValueStatus = 'extraFiliere.hide()';
- if ($hide === false) {
- $defaultValueStatus = '';
- }
- $url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=order&user_id='.$userId;
- // Theme fix
- $lang = api_get_interface_language();
- $theme = 'theme_fr';
- switch ($lang) {
- case 'french2':
- case 'french':
- $theme = 'theme_fr';
- break;
- case 'german2':
- case 'german':
- $theme = 'theme_de';
- break;
- }
- $htmlHeadXtra[] ='<script>
- $(document).ready(function() {
-
- var themeDefault = "extra_'.$theme.'";
- var extraFiliere = $("input[name=\'extra_filiere[extra_filiere]\']").parent().parent().parent().parent();
-
- '.$defaultValueStatus.'
-
- $("input[name=\'extra_filiere_want_stage[extra_filiere_want_stage]\']").change(function() {
- if ($(this).val() == "no") {
- extraFiliere.show();
- } else {
- extraFiliere.hide();
- }
- });
-
- $("#extra_domaine").parent().append(
- $("<a>", {
- "class": "btn ajax btn-default",
- "href": "'.$url.'&field_variable=extra_domaine",
- "text": "'.get_lang('Order').'"
- })
- );
-
- $("#extra_theme").parent().append(
- $("<a>", {
- "class": "btn ajax btn-default",
- "href": "'.$url.'&field_variable=extra_theme",
- "text": "'.get_lang('Order').'"
- })
- );
-
- $("#extra_theme_fr").parent().append(
- $("<a>", {
- "class": "btn ajax btn-default",
- "href": "'.$url.'&field_variable=extra_theme_fr",
- "text": "'.get_lang('Order').'"
- })
- );
-
- $("#extra_theme_de").parent().append(
- $("<a>", {
- "class": "btn ajax btn-default",
- "href": "'.$url.'&field_variable=extra_theme_de",
- "text": "'.get_lang('Order').'"
- })
- );
-
-
- $("#extra_domaine").on("change", function() {
- var domainList = [];
- $( "#extra_domaine option:selected" ).each(function() {
- domainList.push($(this).val());
- });
-
- var domainListToString = JSON.stringify(domainList);
- $.ajax({
- contentType: "application/x-www-form-urlencoded",
- type: "GET",
- url: "'.api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=search_options_from_tags&type=session&from=extra_domaine&search="+themeDefault+"&options="+domainListToString,
- success: function(data) {
- $("#"+themeDefault).find("option").remove().end();
- $("#"+themeDefault).empty();
- var selectToString = "";
- jQuery.each(JSON.parse(data), function(i, item) {
- selectToString += "<optgroup label=\'"+item.text+"\'>";
- jQuery.each(item.children, function(j, data) {
- console.log(data);
- if (data.text != "") {
- selectToString += "<option value=\'"+data.text+"\'> " +data.text+"</option>"
- }
- });
- selectToString += "</optgroup>";
- });
-
- $("#"+themeDefault).html(selectToString);
- $("#"+themeDefault).selectpicker("refresh");
- }
-
- });
- });
- });
- </script>';
- $form->addButtonSave(get_lang('Save'), 'save');
- $result = SessionManager::getGridColumns('simple');
- $columns = $result['columns'];
- $column_model = $result['column_model'];
- $defaults = [];
- $tagsData = [];
- if (!empty($items)) {
- /** @var ExtraFieldSavedSearch $item */
- foreach ($items as $item) {
- $variable = 'extra_'.$item->getField()->getVariable();
- if ($item->getField()->getFieldType() == Extrafield::FIELD_TYPE_TAG) {
- $tagsData[$variable] = $item->getValue();
- }
- $defaults[$variable] = $item->getValue();
- }
- }
- $form->setDefaults($defaults);
- //$view = $form->returnForm();
- $filterToSend = '';
- if ($form->validate()) {
- $params = $form->getSubmitValues();
- /** @var \Chamilo\UserBundle\Entity\User $user */
- $user = $em->getRepository('ChamiloUserBundle:User')->find($userId);
- if (isset($params['save'])) {
- MessageManager::send_message_simple(
- $userId,
- get_lang('DiagnosisFilledSubject'),
- get_lang('DiagnosisFilledDescription')
- );
- $drhList = UserManager::getDrhListFromUser($userId);
- if ($drhList) {
- foreach ($drhList as $drhId) {
- $subject = sprintf(get_lang('UserXHasFilledTheDiagnosis'), $userInfo['complete_name']);
- $content = sprintf(get_lang('UserXHasFilledTheDiagnosisDescription'), $userInfo['complete_name']);
- MessageManager::send_message_simple($drhId, $subject, $content);
- }
- }
- Display::addFlash(Display::return_message(get_lang('Saved')));
- header("Location: ".api_get_self());
- exit;
- } else {
- // Search
- $filters = [];
- // Parse params.
- foreach ($params as $key => $value) {
- if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') {
- continue;
- }
- if (!empty($value)) {
- $filters[$key] = $value;
- }
- }
- $filterToSend = [];
- if (!empty($filters)) {
- $filterToSend = ['groupOp' => 'AND'];
- if ($filters) {
- $count = 1;
- $countExtraField = 1;
- foreach ($result['column_model'] as $column) {
- if ($count > 5) {
- if (isset($filters[$column['name']])) {
- $defaultValues['jqg'.$countExtraField] = $filters[$column['name']];
- $filterToSend['rules'][] = ['field' => $column['name'], 'op' => 'cn', 'data' => $filters[$column['name']]];
- }
- $countExtraField++;
- }
- $count++;
- }
- }
- }
- }
- }
- $extraField = new ExtraField('user');
- $userForm = new FormValidator('user_form', 'post', api_get_self());
- $jqueryExtra = '';
- $htmlHeadXtra[] ='<script>
- $(document).ready(function() {
- $("#filiere_panel").hide();
- $("#dispo_panel").hide();
- $("#dispo_pendant_panel").hide();
- $("#niveau_panel").hide();
- $("#methode_panel").hide();
- $("#themes_panel").hide();
- $("#objectifs_panel").hide();
- $("#filiere").on("click", function() {
- $("#filiere_panel").toggle();
- return false;
- });
-
- $("#dispo").on("click", function() {
- $("#dispo_panel").toggle();
- return false;
- });
-
- $("#dispo_pendant").on("click", function() {
- $("#dispo_pendant_panel").toggle();
- return false;
- });
-
- $("#niveau").on("click", function() {
- $("#niveau_panel").toggle();
- return false;
- });
-
- $("#methode").on("click", function() {
- $("#methode_panel").toggle();
- return false;
- });
-
- $("#themes").on("click", function() {
- $("#themes_panel").toggle();
- return false;
- });
-
- $("#objectifs").on("click", function() {
- $("#objectifs_panel").toggle();
- return false;
- });
- });
- </script>';
- $panel = Display::panel(get_lang('FiliereExplanation'), '', '', '', '', 'filiere_panel');
- $userForm->addHeader(Display::url(get_lang('Filiere'), '#', ['id'=> 'filiere']).''.$panel);
- $fieldsToShow = [
- 'statusocial',
- 'filiere_user',
- 'filiereprecision',
- 'filiere_want_stage',
- ];
- $extra = $extraField->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $fieldsToShow = [
- 'filiere'
- ];
- $extra = $extraFieldSession->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $panel = Display::panel(get_lang('DisponibiliteAvantExplanation'), '', '', '', '', 'dispo_panel');
- $userForm->addHeader(Display::url(get_lang('DisponibiliteAvant'), '#', ['id'=> 'dispo']).''.$panel);
- $extra = $extraFieldSession->addElements(
- $userForm,
- '',
- [],
- $filter,
- true,
- array('access_start_date', 'access_end_date'),
- [],
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $elements = $userForm->getElements();
- $variables = ['access_start_date', 'access_end_date'];
- foreach ($elements as $element) {
- $element->setAttribute('extra_label_class', 'red_underline');
- }
- $fieldsToShow = [
- 'heures_disponibilite_par_semaine',
- ];
- $extra = $extraField->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $panel = Display::panel(get_lang('DisponibilitePendantMonStageExplanation'), '', '', '', '', 'dispo_pendant_panel');
- $userForm->addHeader(Display::url(get_lang('DisponibilitePendantMonStage'), '#', ['id'=> 'dispo_pendant']).''.$panel);
- $fieldsToShow = [
- 'datedebutstage',
- 'datefinstage',
- 'poursuiteapprentissagestage',
- 'heures_disponibilite_par_semaine_stage'
- ];
- $extra = $extraField->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $panel = Display::panel(get_lang('ThemesObjectifsExplanation'), '', '', '', '', 'themes_panel');
- $userForm->addHeader(Display::url(get_lang('ThemesObjectifs'), '#', ['id'=> 'themes']).''.$panel);
- $fieldsToShow = [
- 'domaine',
- $theme
- ];
- $specialUrlList = [
- $theme => api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=search_tags_from_diagnosis'
- ];
- $extra = $extraFieldSession->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- $defaults,
- $specialUrlList,
- true,
- true // $forceShowFields
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $panel = Display::panel(get_lang('NiveauLangueExplanation'), '', '', '', '', 'niveau_panel');
- $userForm->addHeader(Display::url(get_lang('NiveauLangue'), '#', ['id'=> 'niveau']).''.$panel);
- $fieldsToShow = [
- //'competenceniveau'
- 'ecouter',
- 'lire',
- 'participer_a_une_conversation',
- 's_exprimer_oralement_en_continu',
- 'ecrire'
- ];
- $extra = $extraFieldSession->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- $defaults,
- [],
- false, //$orderDependingDefaults = false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $panel = Display::panel(get_lang('ObjectifsApprentissageExplanation'), '', '', '', '', 'objectifs_panel');
- $userForm->addHeader(Display::url(get_lang('ObjectifsApprentissage'), '#', ['id'=> 'objectifs']).''.$panel);
- $fieldsToShow = [
- 'objectif_apprentissage'
- ];
- $extra = $extraField->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- false,
- $fieldsToShow,
- $fieldsToShow,
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $panel = Display::panel(get_lang('MethodeTravailExplanation'), '', '', '', '', 'methode_panel');
- $userForm->addHeader(Display::url(get_lang('MethodeTravail'), '#', ['id'=> 'methode']).''.$panel);
- $fieldsToShow = [
- 'methode_de_travaille',
- 'accompagnement'
- ];
- $extra = $extraField->addElements(
- $userForm,
- api_get_user_id(),
- [],
- $filter,
- true,
- $fieldsToShow,
- $fieldsToShow,
- [],
- [],
- false,
- true //$forceShowFields = false
- );
- $jqueryExtra .= $extra['jquery_ready_content'];
- $htmlHeadXtra[] ='<script>
- $(document).ready(function(){
- '.$jqueryExtra.'
- });
- </script>';
- $userForm->addButtonSave(get_lang('Save'));
- $userForm->setDefaults($defaults);
- $userFormToString = $userForm->returnForm();
- if ($userForm->validate()) {
- // Saving to user extra fields
- $extraFieldValue = new ExtraFieldValue('user');
- $userData = $userForm->getSubmitValues();
- $extraFieldValue->saveFieldValues($userData);
- // Saving to extra_field_saved_search
- /** @var \Chamilo\UserBundle\Entity\User $user */
- $user = $em->getRepository('ChamiloUserBundle:User')->find($userId);
- $sessionFields = [
- 'extra_access_start_date',
- 'extra_access_end_date',
- 'extra_filiere',
- 'extra_domaine',
- 'extra_temps-de-travail',
- //'extra_competenceniveau',
- 'extra_'.$theme,
- 'extra_ecouter',
- 'extra_lire',
- 'extra_participer_a_une_conversation',
- 'extra_s_exprimer_oralement_en_continu',
- 'extra_ecrire'
- ];
- foreach ($userData as $key => $value) {
- $found = strpos($key, '__persist__');
- if ($found === false) {
- continue;
- }
- $tempKey = str_replace('__persist__', '', $key);
- if (!isset($params[$tempKey])) {
- $params[$tempKey] = array();
- }
- }
- if (isset($userData['extra_filiere_want_stage']) &&
- isset($userData['extra_filiere_want_stage']['extra_filiere_want_stage'])
- ) {
- $wantStage = $userData['extra_filiere_want_stage']['extra_filiere_want_stage'];
- if ($wantStage === 'yes') {
- if (isset($userData['extra_filiere_user'])) {
- $userData['extra_filiere'] = [];
- $userData['extra_filiere']['extra_filiere'] = $userData['extra_filiere_user']['extra_filiere_user'];
- }
- }
- }
- // save in ExtraFieldSavedSearch.
- foreach ($userData as $key => $value) {
- if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') {
- continue;
- }
- if (!in_array($key, $sessionFields)) {
- continue;
- }
- $field_variable = substr($key, 6);
- $extraFieldInfo = $extraFieldValueSession
- ->getExtraField()
- ->get_handler_field_info_by_field_variable($field_variable);
- if (!$extraFieldInfo) {
- continue;
- }
- $extraFieldObj = $em->getRepository('ChamiloCoreBundle:ExtraField')->find($extraFieldInfo['id']);
- $search = [
- 'field' => $extraFieldObj,
- 'user' => $user
- ];
- /** @var ExtraFieldSavedSearch $saved */
- $saved = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search);
- if ($saved) {
- $saved
- ->setField($extraFieldObj)
- ->setUser($user)
- ->setValue($value)
- ;
- $em->merge($saved);
- } else {
- $saved = new ExtraFieldSavedSearch();
- $saved
- ->setField($extraFieldObj)
- ->setUser($user)
- ->setValue($value)
- ;
- $em->persist($saved);
- }
- $em->flush();
- }
- $superiorUserList = UserManager::getStudentBossList($userInfo['user_id']);
- if ($superiorUserList) {
- $url = api_get_path(WEB_PATH).'load_search.php?user_id='.$userInfo['user_id'];
- $subject = sprintf(get_lang('DiagnosisFromUserX'), $userInfo['complete_name']);
- $message = sprintf(get_lang('DiagnosisFromUserXWithLinkX'), $userInfo['complete_name'], $url);
- foreach ($superiorUserList as $bossData) {
- $bossId = $bossData['boss_id'];
- MessageManager::send_message_simple(
- $bossId,
- $subject,
- $message
- );
- }
- }
- Display::addFlash(Display::return_message(get_lang('SessionSearchSavedExplanation')));
- Display::addFlash(Display::url(get_lang('ReturnToDiagnosis'), api_get_self(), ['class' => 'btn btn-primary']));
- header('Location:'.api_get_self().'?result=1');
- exit;
- }
- $result = isset($_GET['result']) ? true : false;
- $tpl = new Template(get_lang('Diagnosis'));
- if ($result === false) {
- $tpl->assign('form', $userFormToString);
- }
- $content = $tpl->fetch('default/user_portal/search_extra_field.tpl');
- $tpl->assign('content', $content);
- $tpl->display_one_col_template();
|