diff --git a/main/inc/lib/search/search_widget.js b/main/inc/lib/search/search_widget.js index 95fd13e039..8b86b7996d 100755 --- a/main/inc/lib/search/search_widget.js +++ b/main/inc/lib/search/search_widget.js @@ -8,12 +8,13 @@ $(document).ready(function() { $('#tags-clean').click(function() { // clear multiple select $('select option:selected').each(function () { - $(this).attr('selected', ''); + $(this).prop('selected', false); }); return false; }); /* ajax suggestions */ - $('#query').autocomplete('search_suggestions.php', { + $('#query').autocomplete({ + source: 'search_suggestions.php', multiple: false, selectFirst: false, mustMatch: false, diff --git a/main/inc/lib/search/search_widget.php b/main/inc/lib/search/search_widget.php index 5d569e0304..d719db8988 100755 --- a/main/inc/lib/search/search_widget.php +++ b/main/inc/lib/search/search_widget.php @@ -20,7 +20,7 @@ require_once api_get_path(LIBRARY_PATH).'specific_fields_manager.lib.php'; */ function search_widget_prepare(&$htmlHeadXtra) { $htmlHeadXtra[] = ' - + '; diff --git a/main/inc/lib/search/tool_processors/quiz_processor.class.php b/main/inc/lib/search/tool_processors/quiz_processor.class.php index ca7d078972..320de4e328 100755 --- a/main/inc/lib/search/tool_processors/quiz_processor.class.php +++ b/main/inc/lib/search/tool_processors/quiz_processor.class.php @@ -32,10 +32,10 @@ class quiz_processor extends search_processor { $item = array( 'courseid' => $courseid, 'question' => $question, - 'score' => $row_val['score'], + 'total_score' => $row_val['score'], 'row_id' => $row_id, ); - $this->exercises[$courseid][$exercise_id][] = $item; + $this->exercises[$courseid][$exercise_id] = $item; $this->exercises[$courseid][$exercise_id]['total_score'] += $row_val['score']; break; case SE_DOCTYPE_EXERCISE_QUESTION: @@ -45,10 +45,10 @@ class quiz_processor extends search_processor { $item = array( 'courseid' => $courseid, 'question' => $question, - 'score' => $row_val['score'], + 'total_score' => $row_val['score'], 'row_id' => $row_id, ); - $this->exercises[$courseid][$exercise_id][] = $item; + $this->exercises[$courseid][$exercise_id] = $item; $this->exercises[$courseid][$exercise_id]['total_score'] += $row_val['score']; } } @@ -74,7 +74,7 @@ class quiz_processor extends search_processor { $url = sprintf($url, $courseid, $exercise_id); $result = array( 'toolid' => TOOL_QUIZ, - 'score' => $exercise['total_score'] / (count($exercise) - 1), // not count total_score array item + 'total_score' => $exercise['total_score'] / (count($exercise) - 1), // not count total_score array item 'url' => $url, 'thumbnail' => $thumbnail, 'image' => $image, @@ -96,7 +96,7 @@ class quiz_processor extends search_processor { // get information to sort foreach ($results as $key => $row) { - $score[$key] = $row['score']; + $score[$key] = $row['total_score']; } // Sort results with score descending array_multisort($score, SORT_DESC, $results); @@ -111,24 +111,35 @@ class quiz_processor extends search_processor { $course_information = api_get_course_info($courseCode); $course_id = $course_information['real_id']; + $em = Database::getManager(); + if (!empty($course_information)) { - $exercise_table = Database::get_course_table(TABLE_QUIZ_TEST); $exercise_id = intval($exercise_id); - $sql = "SELECT * FROM $exercise_table WHERE id = $exercise_id AND c_id = $course_id LIMIT 1"; - $dk_result = Database::query($sql); + $dk_result = $em + ->getRepository('ChamiloCourseBundle:CQuiz') + ->findOneBy([ + 'id' => $exercise_id, + 'cId' => $course_id + ]); $name = ''; - if ($row = Database::fetch_array($dk_result)) { + if ($dk_result) { // Get the image path $thumbnail = Display::returnIconPath('quiz.png'); $image = $thumbnail; //FIXME: use big images - $name = $row['title']; + $name = $dk_result->getTitle(); // get author $author = ''; - $item_result = Database::query($sql); - if ($item_result !== false && $row = Database::fetch_array($item_result)) { - $user_data = api_get_user_info($row['insert_user_id']); - $author = api_get_person_name($user_data['firstName'], $user_data['lastName']); + $item_result = $em + ->getRepository('ChamiloCourseBundle:CItemProperty') + ->findOneBy([ + 'ref' => $exercise_id, + 'tool' => TOOL_QUIZ, + 'course' => $course_id + ]); + + if ($item_result) { + $author = $item_result->getInsertUser()->getCompleteName(); } } return array($thumbnail, $image, $name, $author); diff --git a/main/newscorm/lp_list_search.php b/main/newscorm/lp_list_search.php index 54bca35dac..b62338126f 100755 --- a/main/newscorm/lp_list_search.php +++ b/main/newscorm/lp_list_search.php @@ -147,12 +147,12 @@ if ($count > 0) { if ($mode == 'gallery') { $title = $a_prefix.str_replace('_',' ',$result['title']). $a_sufix; - $blocks[] = array( + $blocks[] = array(1 => $a_prefix .''. $a_sufix .'
'.$title.'
'.$result['author'], ); } else { $title = '
'. $a_prefix . $result['title']. $a_sufix .(!empty($result['author']) ? ' '.$result['author'] : '').'
'; - $blocks[] = array($title); + $blocks[] = array(1 => $title); } } } diff --git a/main/search/search_suggestions.php b/main/search/search_suggestions.php index 79fc1279e4..5f382544b4 100755 --- a/main/search/search_suggestions.php +++ b/main/search/search_suggestions.php @@ -10,8 +10,10 @@ require_once dirname(__FILE__) . '/../inc/global.inc.php'; function get_suggestions_from_search_engine($q) { - if (strlen($q)<2) { return null;} +// if (strlen($q)<2) { return null;} global $charset; + + $json = []; $table_sfv = Database :: get_main_table(TABLE_MAIN_SPECIFIC_FIELD_VALUES); $q = Database::escape_string($q); $cid = api_get_course_id(); @@ -25,7 +27,12 @@ function get_suggestions_from_search_engine($q) $data = array(); $i = 0; while ($row = Database::fetch_array($sql_result)) { - echo api_convert_encoding($row['value'],'UTF-8',$charset)."| value\n"; + $json[] = [ + 'id' => api_convert_encoding($row['value'],'UTF-8',$charset), + 'value' => api_convert_encoding($row['value'],'UTF-8',$charset), + 'label' => api_convert_encoding($row['value'],'UTF-8',$charset) + ]; + if ($i<20) { $data[ $row['course_code'] ] [ $row['tool_id'] ] [ $row['ref_id'] ] = 1; } @@ -90,20 +97,24 @@ function get_suggestions_from_search_engine($q) } foreach ($output as $i=>$out) { if (api_stristr($out,$q) === false) {continue;} - $s = api_convert_encoding(substr($out,0,-3),'UTF-8',$charset) . "| value\n"; + $s = api_convert_encoding(substr($out, 0, -3), 'UTF-8', $charset); if (!in_array($s,$more_sugg)) { $more_sugg[] = $s; + $json[] = [ + 'id' => $s, + 'value' => $s, + 'label' => $s + ]; } } } } } - foreach ($more_sugg as $sugg) { - echo $sugg; - } + + echo json_encode($json); } -$q = strtolower($_GET["q"]); +$q = strtolower($_GET["term"]); if (!$q) return; //echo $q . "| value\n"; get_suggestions_from_search_engine($q);